<?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>142562</bug_id>
          
          <creation_ts>2015-03-10 20:34:23 -0700</creation_ts>
          <short_desc>optional sequence values not handled correctly by binding generator</short_desc>
          <delta_ts>2016-12-03 14:57:15 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Bindings</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Boris Zbarsky">bzbarsky</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>alecflett</cc>
    
    <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>jsbell</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1076201</commentid>
    <comment_count>0</comment_count>
    <who name="Boris Zbarsky">bzbarsky</who>
    <bug_when>2015-03-10 20:34:23 -0700</bug_when>
    <thetext>STEPS TO REPRODUCE: Load this testcase:

    try {
      postMessage(5, &quot;*&quot;, null);
      alert(&quot;FAIL: null is not a valid value for optional sequence&quot;);
    } catch (e) {
      alert(&quot;PASS: &quot; + e);
    }

EXPECTED RESULT: An alert saying &quot;PASS&quot; followed by an exception that indicates that the null argument is not a valid third argument for postMessage on Window.

ACTUAL RESULT: An alert saying &quot;FAIL&quot;.

ADDITIONAL INFORMATION: The IDL in the spec for Window is:

  void postMessage(any message, DOMString targetOrigin, 
                   optional sequence&lt;Transferable&gt; transfer);

Per http://heycam.github.io/webidl/#es-sequence only objects can represent a sequence.  The optional annotation means that undefined is also allowed.  But null is not undefined and not an object, so can&apos;t be converted to an argument of type &quot;optional sequence&lt;Transferable&gt;&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1253705</commentid>
    <comment_count>1</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-11-26 15:06:48 -0800</bug_when>
    <thetext>Probably fixed now?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1254442</commentid>
    <comment_count>2</comment_count>
      <attachid>295633</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-11-29 13:38:50 -0800</bug_when>
    <thetext>Created attachment 295633
Test Case</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1254445</commentid>
    <comment_count>3</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-11-29 13:40:56 -0800</bug_when>
    <thetext>(In reply to comment #1)
&gt; Probably fixed now?

Nope.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1255806</commentid>
    <comment_count>4</comment_count>
      <attachid>295975</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-12-02 12:23:32 -0800</bug_when>
    <thetext>Created attachment 295975
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1255811</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-12-02 12:25:07 -0800</bug_when>
    <thetext>Attachment 295975 did not pass style-queue:


ERROR: Source/WebCore/page/DOMWindow.h:42:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/ChangeLog:15:  You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
Total errors found: 2 in 36 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1255822</commentid>
    <comment_count>6</comment_count>
      <attachid>295981</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-12-02 12:36:39 -0800</bug_when>
    <thetext>Created attachment 295981
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1255854</commentid>
    <comment_count>7</comment_count>
      <attachid>295989</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-12-02 13:49:28 -0800</bug_when>
    <thetext>Created attachment 295989
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1255857</commentid>
    <comment_count>8</comment_count>
      <attachid>295991</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-12-02 13:51:47 -0800</bug_when>
    <thetext>Created attachment 295991
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1255903</commentid>
    <comment_count>9</comment_count>
      <attachid>296002</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-12-02 14:36:28 -0800</bug_when>
    <thetext>Created attachment 296002
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1255931</commentid>
    <comment_count>10</comment_count>
      <attachid>296009</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-12-02 15:23:13 -0800</bug_when>
    <thetext>Created attachment 296009
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1256044</commentid>
    <comment_count>11</comment_count>
      <attachid>296046</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-12-03 07:41:23 -0800</bug_when>
    <thetext>Created attachment 296046
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1256066</commentid>
    <comment_count>12</comment_count>
      <attachid>296046</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-12-03 09:59:04 -0800</bug_when>
    <thetext>Comment on attachment 296046
Patch

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

&gt; Source/WebCore/bindings/generic/IDLTypes.h:38
&gt; +template &lt;typename T&gt; class Strong;

I would omit the space before the &quot;&lt;&quot; and also omit the identifier &quot;T&quot;, which is not needed.

&gt; Source/WebCore/bindings/js/SerializedScriptValue.cpp:2692
&gt; +    Vector&lt;RefPtr&lt;MessagePort&gt;&gt; dummyMessagePorts;
&gt; +    Vector&lt;RefPtr&lt;JSC::ArrayBuffer&gt;&gt; dummyArrayBuffers;

Too bad we can’t just use { } for these arguments. Or maybe we can?

&gt; Source/WebCore/bindings/js/SerializedScriptValue.cpp:2693
&gt; +    auto code = CloneSerializer::serialize(&amp;exec, value, dummyMessagePorts, dummyArrayBuffers, blobURLs, buffer);

Really seems like this thing should be changed to have a more complex return type in the future instead of it having a return code plus two out arguments.

&gt; Source/WebCore/bindings/js/SerializedScriptValue.cpp:2710
&gt; +        return Exception { StackOverflowError };

I think we can omit the identifier Exception from all these return statements.

&gt; Source/WebCore/bindings/js/SerializedScriptValue.cpp:2721
&gt; +    default:
&gt; +        ASSERT_NOT_REACHED();
&gt; +        return Exception { TypeError };

I suggest we do that thing where we leave out default, and include all the cases in the switch so we get a warning if we add a serialization return code but don’t add anything to this function.

&gt; Source/WebCore/bindings/js/SerializedScriptValue.cpp:2729
&gt; +        if (RefPtr&lt;ArrayBuffer&gt; arrayBuffer = toPossiblySharedArrayBuffer(transferable.get())) {

auto?

&gt; Source/WebCore/bindings/js/SerializedScriptValue.cpp:2735
&gt; +        if (RefPtr&lt;MessagePort&gt; port = JSMessagePort::toWrapped(transferable.get())) {

auto?

&gt; Source/WebCore/bindings/js/SerializedScriptValue.cpp:2863
&gt; +    return (code == SerializationReturnCode::SuccessfullyCompleted);

I would remove these parentheses.

&gt; Source/WebCore/bindings/js/SerializedScriptValue.h:101
&gt; -    typedef Vector&lt;JSC::ArrayBufferContents&gt; ArrayBufferContentsArray;
&gt;      static void maybeThrowExceptionIfSerializationFailed(JSC::ExecState*, SerializationReturnCode);
&gt;      static bool serializationDidCompleteSuccessfully(SerializationReturnCode);
&gt; -    static std::unique_ptr&lt;ArrayBufferContentsArray&gt; transferArrayBuffers(JSC::ExecState*, Vector&lt;RefPtr&lt;JSC::ArrayBuffer&gt;&gt;&amp;, SerializationReturnCode&amp;);
&gt; +    static Exception exceptionForSerializationFailure(SerializationReturnCode);
&gt; +
&gt; +    static ExceptionOr&lt;std::unique_ptr&lt;ArrayBufferContentsArray&gt;&gt; transferArrayBuffers(const Vector&lt;RefPtr&lt;JSC::ArrayBuffer&gt;&gt;&amp;);

Seems like these could be non-member functions and not be declared in the header.

&gt; Source/WebCore/dom/ExceptionCode.h:79
&gt; +    // Used to indicate to the bindings that a JS exception was thrown below and it should be propogated.
&gt; +    ExistingExceptionError,

Seems a bit inelegant. I went out of my way to disallow 0 in Exception, and now we have something that is a similar semantic to ExceptionCode 0. Is there no way to sidestep the need for this? I would have expected that the function would act like there was no exception, and then the caller would notice that an exception was set in the ExecState.

&gt; Source/WebCore/dom/MessagePort.idl:38
&gt; +    // event handlers

I don’t think this comment adds much. What do you think?

&gt; Source/WebCore/page/DOMWindow.h:52
&gt; +template &lt;typename T&gt; class Strong;

Same comment as above. No need for the space before &quot;&lt;&quot; or for the &quot;T&quot;.

&gt; LayoutTests/fast/events/message-port-multi-expected.txt:9
&gt; +PASS channel.port1.postMessage(&quot;notAPort&quot;, [channel3.port1, {}, channel3.port2]) threw exception DataCloneError (DOM Exception 25): The object can not be cloned..

Strange use of &quot;can not&quot; in the DataCloneError string; not introduced by this patch but the first time I noticed it. I think the word is &quot;cannot&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1256082</commentid>
    <comment_count>13</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-12-03 11:10:42 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; Comment on attachment 296046 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=296046&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/bindings/generic/IDLTypes.h:38
&gt; &gt; +template &lt;typename T&gt; class Strong;
&gt; 
&gt; I would omit the space before the &quot;&lt;&quot; and also omit the identifier &quot;T&quot;,
&gt; which is not needed.

Done.

&gt; 
&gt; &gt; Source/WebCore/bindings/js/SerializedScriptValue.cpp:2692
&gt; &gt; +    Vector&lt;RefPtr&lt;MessagePort&gt;&gt; dummyMessagePorts;
&gt; &gt; +    Vector&lt;RefPtr&lt;JSC::ArrayBuffer&gt;&gt; dummyArrayBuffers;
&gt; 
&gt; Too bad we can’t just use { } for these arguments. Or maybe we can?

We can&apos;t.  I will be modernizing SerializedScriptValue to avoid these parameters. 

&gt; 
&gt; &gt; Source/WebCore/bindings/js/SerializedScriptValue.cpp:2693
&gt; &gt; +    auto code = CloneSerializer::serialize(&amp;exec, value, dummyMessagePorts, dummyArrayBuffers, blobURLs, buffer);
&gt; 
&gt; Really seems like this thing should be changed to have a more complex return
&gt; type in the future instead of it having a return code plus two out arguments.
&gt; 

Yes.

&gt; &gt; Source/WebCore/bindings/js/SerializedScriptValue.cpp:2710
&gt; &gt; +        return Exception { StackOverflowError };
&gt; 
&gt; I think we can omit the identifier Exception from all these return
&gt; statements.

The Exception constructor is explicit, so they are required.

&gt; 
&gt; &gt; Source/WebCore/bindings/js/SerializedScriptValue.cpp:2721
&gt; &gt; +    default:
&gt; &gt; +        ASSERT_NOT_REACHED();
&gt; &gt; +        return Exception { TypeError };
&gt; 
&gt; I suggest we do that thing where we leave out default, and include all the
&gt; cases in the switch so we get a warning if we add a serialization return
&gt; code but don’t add anything to this function.
&gt; 

Done.

&gt; &gt; Source/WebCore/bindings/js/SerializedScriptValue.cpp:2729
&gt; &gt; +        if (RefPtr&lt;ArrayBuffer&gt; arrayBuffer = toPossiblySharedArrayBuffer(transferable.get())) {
&gt; 
&gt; auto?

Done.

&gt; 
&gt; &gt; Source/WebCore/bindings/js/SerializedScriptValue.cpp:2735
&gt; &gt; +        if (RefPtr&lt;MessagePort&gt; port = JSMessagePort::toWrapped(transferable.get())) {
&gt; 
&gt; auto?

Done.

&gt; 
&gt; &gt; Source/WebCore/bindings/js/SerializedScriptValue.cpp:2863
&gt; &gt; +    return (code == SerializationReturnCode::SuccessfullyCompleted);
&gt; 
&gt; I would remove these parentheses.

I got rid of the function.

&gt; 
&gt; &gt; Source/WebCore/bindings/js/SerializedScriptValue.h:101
&gt; &gt; -    typedef Vector&lt;JSC::ArrayBufferContents&gt; ArrayBufferContentsArray;
&gt; &gt;      static void maybeThrowExceptionIfSerializationFailed(JSC::ExecState*, SerializationReturnCode);
&gt; &gt;      static bool serializationDidCompleteSuccessfully(SerializationReturnCode);
&gt; &gt; -    static std::unique_ptr&lt;ArrayBufferContentsArray&gt; transferArrayBuffers(JSC::ExecState*, Vector&lt;RefPtr&lt;JSC::ArrayBuffer&gt;&gt;&amp;, SerializationReturnCode&amp;);
&gt; &gt; +    static Exception exceptionForSerializationFailure(SerializationReturnCode);
&gt; &gt; +
&gt; &gt; +    static ExceptionOr&lt;std::unique_ptr&lt;ArrayBufferContentsArray&gt;&gt; transferArrayBuffers(const Vector&lt;RefPtr&lt;JSC::ArrayBuffer&gt;&gt;&amp;);
&gt; 
&gt; Seems like these could be non-member functions and not be declared in the
&gt; header.

Yup. Done.

&gt; 
&gt; &gt; Source/WebCore/dom/ExceptionCode.h:79
&gt; &gt; +    // Used to indicate to the bindings that a JS exception was thrown below and it should be propogated.
&gt; &gt; +    ExistingExceptionError,
&gt; 
&gt; Seems a bit inelegant. I went out of my way to disallow 0 in Exception, and
&gt; now we have something that is a similar semantic to ExceptionCode 0. Is
&gt; there no way to sidestep the need for this? I would have expected that the
&gt; function would act like there was no exception, and then the caller would
&gt; notice that an exception was set in the ExecState.

Agreed. Unfortunately, propagateException doesn&apos;t currently do this, and I didn&apos;t want to make fundamental change like that at the same time, and this seemed like a good short term solution.  I&apos;ll continue to think about this.

&gt; 
&gt; &gt; Source/WebCore/dom/MessagePort.idl:38
&gt; &gt; +    // event handlers
&gt; 
&gt; I don’t think this comment adds much. What do you think?

No, it&apos;s worthless. Just an artifact of copying from the spec. Removed.

&gt; 
&gt; &gt; Source/WebCore/page/DOMWindow.h:52
&gt; &gt; +template &lt;typename T&gt; class Strong;
&gt; 
&gt; Same comment as above. No need for the space before &quot;&lt;&quot; or for the &quot;T&quot;.

Done.

&gt; 
&gt; &gt; LayoutTests/fast/events/message-port-multi-expected.txt:9
&gt; &gt; +PASS channel.port1.postMessage(&quot;notAPort&quot;, [channel3.port1, {}, channel3.port2]) threw exception DataCloneError (DOM Exception 25): The object can not be cloned..
&gt; 
&gt; Strange use of &quot;can not&quot; in the DataCloneError string; not introduced by
&gt; this patch but the first time I noticed it. I think the word is &quot;cannot&quot;.

Yeah.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1256087</commentid>
    <comment_count>14</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-12-03 12:23:06 -0800</bug_when>
    <thetext>Committed r209303: &lt;http://trac.webkit.org/changeset/209303&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1256144</commentid>
    <comment_count>15</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-12-03 14:57:15 -0800</bug_when>
    <thetext>Windows build is failing now:

c:\cygwin\home\buildbot\slave\win-release\build\source\webcore\bindings\js\serializedscriptvalue.cpp(2735): warning C4715: &apos;WebCore::exceptionForSerializationFailure&apos;: not all control paths return a value [C:\cygwin\home\buildbot\slave\win-release\build\WebKitBuild\Release\Source\WebCore\WebCore.vcxproj]

EFL build is also failing:

../../Source/WebCore/bindings/js/SerializedScriptValue.cpp:2735:1: error: control reaches end of non-void function [-Werror=return-type]</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>295633</attachid>
            <date>2016-11-29 13:38:50 -0800</date>
            <delta_ts>2016-11-29 13:38:50 -0800</delta_ts>
            <desc>Test Case</desc>
            <filename>test.html</filename>
            <type>text/html</type>
            <size>296</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">PHNjcmlwdD4KdHJ5IHsKICBwb3N0TWVzc2FnZSg1LCAiKiIsIG51bGwpOwogIGFsZXJ0KCJGQUlM
OiBudWxsIGlzIG5vdCBhIHZhbGlkIHZhbHVlIGZvciBvcHRpb25hbCBzZXF1ZW5jZSIpOwp9IGNh
dGNoIChlKSB7CiAgYWxlcnQoIlBBU1M6ICIgKyBlKTsKfQo8L3NjcmlwdD4KCjxib2R5PgogICAg
VGVzdCBmb3IgPGEgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE0MjU2MiI+aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MjU2Mjwv
YT4KPC9ib2R5Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>295975</attachid>
            <date>2016-12-02 12:23:32 -0800</date>
            <delta_ts>2016-12-02 12:36:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-142562-20161202122301.patch</filename>
            <type>text/plain</type>
            <size>86854</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwOTIzOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDkxIEBACisyMDE2LTEyLTAyICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgb3B0aW9uYWwgc2VxdWVuY2UgdmFsdWVz
IG5vdCBoYW5kbGVkIGNvcnJlY3RseSBieSBiaW5kaW5nIGdlbmVyYXRvcgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQyNTYyCisKKyAgICAgICAgQWxz
byBmaXhlczoKKyAgICAgICAgICAgIFJlbW92ZSBub24tc3RhbmRhcmQgcG9zdE1lc3NhZ2Ugb3Zl
cmxvYWQKKyAgICAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjE5MTEKKyAgICAgICAgYW5kCisgICAgICAgICAgICBXcm9uZyBhcmd1bWVudCBvcmRlciBp
biB3aW5kb3cucG9zdE1lc3NhZ2UKKyAgICAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD02MzE0MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICBSZW1vdmUgbm8gbG9uZ2VyIG5l
ZWRlZCBmaWxlcy4KKworICAgICAgICAqIGJpbmRpbmdzL2dlbmVyaWMvSURMVHlwZXMuaDoKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnZlcnRlcjxJRExPYmplY3Q+Ojpjb252ZXJ0KToKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHRo
ZSBXZWJJREwgb2JqZWN0IHR5cGUuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUJpbmRp
bmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRE9NRXhjZXB0aW9uKToKKyAgICAgICAg
QWRkIHN1cHBvcnQgZm9yIHRocm93aW5nIHN0YWNrIG92ZXJmbG93IGVycm9ycy4KKworICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmhhbmRsZVBvc3RNZXNzYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2lu
ZG93Ojpwb3N0TWVzc2FnZSk6IERlbGV0ZWQuCisgICAgICAgICogYmluZGluZ3MvanMvSlNEZWRp
Y2F0ZWRXb3JrZXJHbG9iYWxTY29wZUN1c3RvbS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU01l
c3NhZ2VQb3J0Ojpwb3N0TWVzc2FnZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpleHRy
YWN0VHJhbnNmZXJhYmxlcyk6IERlbGV0ZWQuCisgICAgICAgICogYmluZGluZ3MvanMvSlNNZXNz
YWdlUG9ydEN1c3RvbS5oOiBSZW1vdmVkLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV29ya2Vy
Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTV29ya2VyOjpwb3N0TWVzc2FnZSk6IERl
bGV0ZWQuCisgICAgICAgIFJlbW92ZSBjdXN0b20gYmluZGluZ3MgZm9yIHBvc3RNZXNzYWdlLgor
CisgICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmg6CisgICAgICAg
IFN3aXRjaCB0byB1c2luZyBlbnVtIGNsYXNzLgorCisgICAgICAgICogYmluZGluZ3MvanMvU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTo6dHJhbnNmZXJBcnJheUJ1ZmZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFs
aXplZFNjcmlwdFZhbHVlOjpjcmVhdGUpOgorICAgICAgICBBZGQgbmV3IGNyZWF0ZSBmdW5jdGlv
biB0aGF0IHRha2VzIHRoZSB0cmFuc2ZlciBsaXN0LCBwcm9jZXNzZXMgaXQsIGFuZCByZXR1cm5z
CisgICAgICAgIE1lc3NhZ2VQb3J0cyBhbmQgU2VyaWFsaXplZFNjcmlwdFZhbHVlIC8gZXhjZXB0
aW9uLgorCisgICAgICAgIChXZWJDb3JlOjpDbG9uZUJhc2U6OnRocm93U3RhY2tPdmVyZmxvdyk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDbG9uZURlc2VyaWFsaXplcjo6dGhyb3dWYWxp
ZGF0aW9uRXJyb3IpOiBEZWxldGVkLgorICAgICAgICBSZW1vdmUgdW5jYWxsZWQgZnVuY3Rpb25z
LgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtOgorICAgICAg
ICAoSXNSZWZQdHJUeXBlKToKKyAgICAgICAgKElzQnVpbHRpblR5cGUpOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoQWRkVG9JbmNsdWRl
c0ZvcklETFR5cGUpOgorICAgICAgICAoR2V0QmFzZUlETFR5cGUpOgorICAgICAgICBBZGQgc3Vw
cG9ydCBmb3IgdGhlIFdlYklETCAnb2JqZWN0JyB0eXBlLgorCisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Rlc3RPYmouaWRsOgorICAgICAgICBBZGQgdGVzdHMgZm9yICdvYmplY3QnLgorCisg
ICAgICAgICogZG9tL0V4Y2VwdGlvbkNvZGUuaDoKKyAgICAgICAgQWRkIHR3byBuZXcgRXhjZXB0
aW9uQ29kZXM6CisgICAgICAgICAgLSBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yLCB0byBpbmRpY2F0
ZSB0aGF0IGltcGxlbWVudGF0aW9uIGNvZGUgdGhyZXcgYSBKUyBleGNlcHRpb24uCisgICAgICAg
ICAgLSBTdGFja092ZXJmbG93RXJyb3IsIHRvIGluZGljYXRlIHRoYXQgYSBzdGFjayBvdmVyZmxv
dyBleGNlcHRpb24gc2hvdWxkIGJlIHRocm93bi4KKworICAgICAgICAqIGRvbS9NZXNzYWdlUG9y
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlUG9ydDo6cG9zdE1lc3NhZ2UpOgorICAg
ICAgICAqIGRvbS9NZXNzYWdlUG9ydC5oOgorICAgICAgICAqIGRvbS9NZXNzYWdlUG9ydC5pZGw6
CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2lu
ZG93Ojpwb3N0TWVzc2FnZSk6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuaDoKKyAgICAgICAg
KiBwYWdlL0RPTVdpbmRvdy5pZGw6CisgICAgICAgICogd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJH
bG9iYWxTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEZWRpY2F0ZWRXb3JrZXJHbG9iYWxT
Y29wZTo6cG9zdE1lc3NhZ2UpOgorICAgICAgICAqIHdvcmtlcnMvRGVkaWNhdGVkV29ya2VyR2xv
YmFsU2NvcGUuaDoKKyAgICAgICAgKiB3b3JrZXJzL0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3Bl
LmlkbDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
b3JrZXI6OnBvc3RNZXNzYWdlKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlci5oOgorICAgICAg
ICAqIHdvcmtlcnMvV29ya2VyLmlkbDoKKyAgICAgICAgVXBkYXRlIHRvIGNhbGwgbmV3IFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZSBjcmVhdGUgZnVuY3Rpb24uCisKIDIwMTYtMTItMDIgIERhdmUgSHlh
dHQgIDxoeWF0dEBhcHBsZS5jb20+CiAKICAgICAgICAgW0NTUyBQYXJzZXJdIE1ha2Ugc3VyZSBt
YXJnaW4gYW5kIGZvbnQgc2V0IHRoZSBpbXBsaWNpdCBmbGFnIHByb3Blcmx5CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZp
c2lvbiAyMDkxODQpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE1ODUsNyArMTU4NSw2IEBACiAJCTQxNjE0QTc5
MURBNjQyNDEwMDRBRDA2RiAvKiBIVFRQSGVhZGVyVmFsdWVzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTYxNEE3NzFEQTY0MjM2MDA0QUQwNkYgLyog
SFRUUEhlYWRlclZhbHVlcy5oICovOyB9OwogCQk0MTYyQTQ1MDEwMTE0NUFFMDBERkYzRUQgLyog
RGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2MkE0NEQxMDExNDVBRTAwREZGM0VEIC8qIERlZGljYXRl
ZFdvcmtlckdsb2JhbFNjb3BlLmNwcCAqLzsgfTsKIAkJNDE2MkE0NTExMDExNDVBRTAwREZGM0VE
IC8qIERlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTYyQTQ0RTEwMTE0NUFFMDBERkYzRUQgLyogRGVkaWNh
dGVkV29ya2VyR2xvYmFsU2NvcGUuaCAqLzsgfTsKLQkJNDE2MkE0NTQxMDExNDVFMzAwREZGM0VE
IC8qIEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2MkE0NTMxMDExNDVFMzAwREZGM0VE
IC8qIEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDdXN0b20uY3BwICovOyB9OwogCQk0MTYy
QTQ1NzEwMTE0NjQ3MDBERkYzRUQgLyogSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTYyQTQ1NTEw
MTE0NjQ3MDBERkYzRUQgLyogSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAgKi87IH07
CiAJCTQxNjJBNDU4MTAxMTQ2NDcwMERGRjNFRCAvKiBKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNj
b3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTYy
QTQ1NjEwMTE0NjQ3MDBERkYzRUQgLyogSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5oICov
OyB9OwogCQk0MTZFMjlBNjEwMkZBOTYyMDA3RkMxNEUgLyogV29ya2VyUmVwb3J0aW5nUHJveHku
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNkUyOUE1
MTAyRkE5NjIwMDdGQzE0RSAvKiBXb3JrZXJSZXBvcnRpbmdQcm94eS5oICovOyB9OwpAQCAtMTY0
Miw3ICsxNjQxLDYgQEAKIAkJNDFGNTRGOEIxQzUwQzUwMzAwMzM4NDg4IC8qIEZldGNoQm9keS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUY1NEY3
RDFDNTBDNEY2MDAzMzg0ODggLyogRmV0Y2hCb2R5LmNwcCAqLzsgfTsKIAkJNDFGNTRGOEQxQzUw
QzUwODAwMzM4NDg4IC8qIEZldGNoSGVhZGVycy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUY1NEY4MjFDNTBDNEY2MDAzMzg0ODggLyogRmV0Y2hI
ZWFkZXJzLmNwcCAqLzsgfTsKIAkJNDFGNTRGOEUxQzUwQzUwQzAwMzM4NDg4IC8qIEZldGNoUmVx
dWVzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MUY1NEY4NzFDNTBDNEY2MDAzMzg0ODggLyogRmV0Y2hSZXF1ZXN0LmNwcCAqLzsgfTsKLQkJNDFG
NTg0QzcxMDQ2NTJDQjAwOUNBQTY0IC8qIEpTTWVzc2FnZVBvcnRDdXN0b20uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRjU4NEM2MTA0NjUyQ0IwMDlD
QUE2NCAvKiBKU01lc3NhZ2VQb3J0Q3VzdG9tLmggKi87IH07CiAJCTQxRkEzMDNFMTMxNkMyOUMw
MEMwQkZDNSAvKiBSZW5kZXJNZWRpYUNvbnRyb2xzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRkEzMDNDMTMxNkMyOUMwMEMwQkZDNSAvKiBSZW5k
ZXJNZWRpYUNvbnRyb2xzLmNwcCAqLzsgfTsKIAkJNDFGQTMwM0YxMzE2QzI5QzAwQzBCRkM1IC8q
IFJlbmRlck1lZGlhQ29udHJvbHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQxRkEzMDNEMTMxNkMyOUMwMEMwQkZDNSAvKiBSZW5kZXJNZWRpYUNvbnRy
b2xzLmggKi87IH07CiAJCTQzMDZFNEU2MTQ5NTU1NDMwMDdGMTdBQyAvKiBLaWxsUmluZ05vbmUu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDMwNkU0
RTUxNDk1NTU0MzAwN0YxN0FDIC8qIEtpbGxSaW5nTm9uZS5jcHAgKi87IH07CkBAIC04NzM3LDcg
Kzg3MzUsNiBAQAogCQk0MTYyQTQ0RDEwMTE0NUFFMDBERkYzRUQgLyogRGVkaWNhdGVkV29ya2Vy
R2xvYmFsU2NvcGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGVk
aWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0MTYyQTQ0RTEwMTE0NUFFMDBERkYzRUQgLyogRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGVkaWNhdGVkV29ya2VyR2xvYmFs
U2NvcGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE2MkE0NEYxMDExNDVBRTAw
REZGM0VEIC8qIERlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmlkbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTQxNjJBNDUzMTAxMTQ1RTMwMERGRjNFRCAvKiBKU0RlZGljYXRlZFdvcmtl
ckdsb2JhbFNjb3BlQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0MTYyQTQ1NTEwMTE0NjQ3MDBERkYzRUQgLyogSlNEZWRpY2F0ZWRX
b3JrZXJHbG9iYWxTY29wZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDE2MkE0NTYxMDExNDY0NzAwREZGM0VEIC8qIEpTRGVkaWNhdGVkV29ya2VyR2xv
YmFsU2NvcGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNEZWRpY2F0ZWRX
b3JrZXJHbG9iYWxTY29wZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTZFMjlB
NTEwMkZBOTYyMDA3RkMxNEUgLyogV29ya2VyUmVwb3J0aW5nUHJveHkuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV29ya2VyUmVwb3J0aW5nUHJveHkuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTg4MTEsNyArODgwOCw2IEBACiAJCTQxRjU0Rjg3MUM1MEM0RjYw
MDMzODQ4OCAvKiBGZXRjaFJlcXVlc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gRmV0Y2hSZXF1ZXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDFGNTRGODgxQzUwQzRGNjAwMzM4NDg4IC8qIEZldGNoUmVxdWVzdC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBGZXRjaFJlcXVlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDFGNTRGODkxQzUwQzRGNjAwMzM4NDg4IC8qIEZldGNoUmVxdWVzdC5pZGwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gRmV0Y2hSZXF1ZXN0LmlkbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJNDFGNTg0QzYxMDQ2NTJDQjAwOUNBQTY0IC8qIEpTTWVzc2FnZVBvcnRDdXN0
b20uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNZXNzYWdlUG9ydEN1c3Rv
bS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUZBMzAzQzEzMTZDMjlDMDBDMEJG
QzUgLyogUmVuZGVyTWVkaWFDb250cm9scy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBSZW5kZXJNZWRpYUNvbnRyb2xzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDFGQTMwM0QxMzE2QzI5QzAwQzBCRkM1IC8qIFJlbmRlck1lZGlhQ29udHJvbHMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyTWVkaWFDb250cm9scy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MzA2RTRFNTE0OTU1NTQzMDA3RjE3QUMg
LyogS2lsbFJpbmdOb25lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEtpbGxSaW5nTm9uZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMjA0NCw3
ICsyMjA0MCw2IEBACiAJCQkJREVDMjk3NUQxQjRERUIyQTAwNUY1OTQ1IC8qIEpTQ3VzdG9tRXZl
bnRDdXN0b20uY3BwICovLAogCQkJCTA3RkJERTJCMThGRUQxNzgwMDFBN0NGRiAvKiBKU0RhdGFD
dWVDdXN0b20uY3BwICovLAogCQkJCUJDQTgzRTUxMEQ3Q0UyMDUwMDM0MjFBOCAvKiBKU0RhdGFU
cmFuc2ZlckN1c3RvbS5jcHAgKi8sCi0JCQkJNDE2MkE0NTMxMDExNDVFMzAwREZGM0VEIC8qIEpT
RGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDdXN0b20uY3BwICovLAogCQkJCTMxRkIxQTZCMTIw
QTVENjkwMERDMDJBMCAvKiBKU0RldmljZU1vdGlvbkV2ZW50Q3VzdG9tLmNwcCAqLywKIAkJCQk1
OTBFMUI0QTExRTRFRjcwMDA2OUY3ODQgLyogSlNEZXZpY2VPcmllbnRhdGlvbkV2ZW50Q3VzdG9t
LmNwcCAqLywKIAkJCQk0OUM3QkE4QzEwNDJGNUIxMDAwOUQ0NDcgLyogSlNEb2N1bWVudEN1c3Rv
bS5jcHAgKi8sCkBAIC0yMjEwMCw3ICsyMjA5NSw2IEBACiAJCQkJRTFBNUY5OUEwRTdFQUEyNTAw
QUY4NUVBIC8qIEpTTWVzc2FnZUNoYW5uZWxDdXN0b20uY3BwICovLAogCQkJCTQxMEI3RTcxMTA0
NUZBQjAwMEQ4MjI0RiAvKiBKU01lc3NhZ2VFdmVudEN1c3RvbS5jcHAgKi8sCiAJCQkJRTFBREVE
NDYwRTc2QjhERDAwNEExQTVFIC8qIEpTTWVzc2FnZVBvcnRDdXN0b20uY3BwICovLAotCQkJCTQx
RjU4NEM2MTA0NjUyQ0IwMDlDQUE2NCAvKiBKU01lc3NhZ2VQb3J0Q3VzdG9tLmggKi8sCiAJCQkJ
QTFFNUIzMUQxQUFEMURBNDAwNkVCRUZCIC8qIEpTTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0N1
c3RvbS5jcHAgKi8sCiAJCQkJQzZGMDkxN0UxNDNBMkJCOTAwNjg1ODQ5IC8qIEpTTXV0YXRpb25P
YnNlcnZlckN1c3RvbS5jcHAgKi8sCiAJCQkJQkNEOUMyNUYwQzE3QUE2NzAwNUM5MEEyIC8qIEpT
TmFtZWROb2RlTWFwQ3VzdG9tLmNwcCAqLywKQEAgLTI2MzE3LDcgKzI2MzExLDYgQEAKIAkJCQlF
MTA3NDAwRTBFNzdCREMwMDAzM0FGMjQgLyogSlNNZXNzYWdlQ2hhbm5lbC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNzU3OTNFQzkwRDBDRTcyRDAwN0ZDMEFDIC8qIEpTTWVzc2FnZUV2ZW50LmggaW4g
SGVhZGVycyAqLywKIAkJCQlFMUFERUREQTBFNzZCRDkzMDA0QTFBNUUgLyogSlNNZXNzYWdlUG9y
dC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDFGNTg0QzcxMDQ2NTJDQjAwOUNBQTY0IC8qIEpTTWVz
c2FnZVBvcnRDdXN0b20uaCBpbiBIZWFkZXJzICovLAogCQkJCTJENkYzRTk1MUMxRjg1NTUwMDYx
REJENCAvKiBKU01vY2tQYWdlT3ZlcmxheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTg2NjI5RDEw
OURBMkI0ODAwOTYzM0E1IC8qIEpTTW91c2VFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODMw
QTM2QkQxREFDNUZBRDAwNkQ3RDA5IC8qIEpTTW91c2VFdmVudEluaXQuaCBpbiBIZWFkZXJzICov
LApAQCAtMjk4MzQsNyArMjk4MjcsNiBAQAogCQkJCUJDQTgzRTRGMEQ3Q0UxRTkwMDM0MjFBOCAv
KiBKU0RhdGFUcmFuc2Zlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0E4M0U1MjBEN0NFMjA1
MDAzNDIxQTggLyogSlNEYXRhVHJhbnNmZXJDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NDE2MkE0NTcxMDExNDY0NzAwREZGM0VEIC8qIEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUu
Y3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNDE2MkE0NTQxMDExNDVFMzAwREZGM0VEIC8qIEpTRGVk
aWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkRB
MTVFRDExMkIwM0Y5NDAwM0E1ODNBIC8qIEpTRGVsYXlOb2RlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTMxRkIxQTY1MTIwQTVEM0YwMERDMDJBMCAvKiBKU0RldmljZU1vdGlvbkV2ZW50LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTMxRkIxQTZDMTIwQTVENjkwMERDMDJBMCAvKiBKU0RldmljZU1v
dGlvbkV2ZW50Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvZ2VuZXJpYy9JRExUeXBlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2dlbmVyaWMvSURMVHlwZXMuaAkocmV2aXNpb24gMjA5MTgzKQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9JRExUeXBlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
NCw2ICszNCw4IEBAIG5hbWVzcGFjZSBKU0MgewogY2xhc3MgQXJyYXlCdWZmZXI7CiBjbGFzcyBB
cnJheUJ1ZmZlclZpZXc7CiBjbGFzcyBKU1ZhbHVlOworY2xhc3MgSlNPYmplY3Q7Cit0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4gY2xhc3MgU3Ryb25nOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC05NCw3ICs5Niw3IEBAIHN0cnVjdCBJRExET01TdHJpbmcgOiBJRExTdHJpbmcgeyB9Owogc3Ry
dWN0IElETEJ5dGVTdHJpbmcgOiBJRExTdHJpbmcgeyB9Owogc3RydWN0IElETFVTVlN0cmluZyA6
IElETFN0cmluZyB7IH07CiAKLXN0cnVjdCBJRExPYmplY3QgOiBJRExVbnN1cHBvcnRlZFR5cGUg
eyB9Oworc3RydWN0IElETE9iamVjdCA6IElETFR5cGU8SlNDOjpTdHJvbmc8SlNDOjpKU09iamVj
dD4+IHsgfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IElETFdyYXBwZXIgOiBJRExU
eXBlPFJlZlB0cjxUPj4gewogICAgIHVzaW5nIFJhd1R5cGUgPSBUOwpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCShyZXZpc2lvbiAyMDkxODMpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yODYsNiArMjg2LDkgQEAgc3RhdGljIEpTVmFsdWUgY3JlYXRlRE9NRXhjZXB0aW9u
KEV4ZWNTdAogICAgICAgICByZXR1cm4gY3JlYXRlUmFuZ2VFcnJvcihleGVjLCAqbWVzc2FnZSk7
CiAgICAgfQogCisgICAgaWYgKGVjID09IFN0YWNrT3ZlcmZsb3dFcnJvcikKKyAgICAgICAgcmV0
dXJuIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihleGVjKTsKKwogICAgIC8vIEZJWE1FOiBBbGwg
Y2FsbGVycyB0byBzZXRET01FeGNlcHRpb24gbmVlZCB0byBwYXNzIGluIHRoZSByaWdodCBnbG9i
YWwgb2JqZWN0CiAgICAgLy8gZm9yIG5vdywgd2UncmUgZ29pbmcgdG8gYXNzdW1lIHRoZSBsZXhp
Y2FsR2xvYmFsT2JqZWN0LiBXaGljaCBpcyB3cm9uZyBpbiBjYXNlcyBsaWtlIHRoaXM6CiAgICAg
Ly8gZnJhbWVzWzBdLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQobnVsbCwgbnVsbCk7IC8vIHRocm93
cyBhbiBleGNlcHRpb24gd2hpY2ggc2hvdWxkIGhhdmUgdGhlIHN1YmZyYW1lcyBwcm90b3R5cGVz
LgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0LmgJKHJldmlz
aW9uIDIwOTE4MykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydC5o
CSh3b3JraW5nIGNvcHkpCkBAIC04MTMsNiArODEzLDI1IEBAIHRlbXBsYXRlPD4gc3RydWN0IEpT
Q29udmVydGVyPElETFVTVlN0cmkKIH07CiAKIC8vIE1BUks6IC0KKy8vIE1BUks6IE9iamVjdCB0
eXBlCisKK3RlbXBsYXRlPD4gc3RydWN0IENvbnZlcnRlcjxJRExPYmplY3Q+IDogRGVmYXVsdENv
bnZlcnRlcjxJRExPYmplY3Q+IHsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFeGNlcHRpb25UaHJv
d2VyID0gRGVmYXVsdEV4Y2VwdGlvblRocm93ZXI+CisgICAgc3RhdGljIEpTQzo6U3Ryb25nPEpT
Qzo6SlNPYmplY3Q+IGNvbnZlcnQoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUg
dmFsdWUsIEV4Y2VwdGlvblRocm93ZXImJiBleGNlcHRpb25UaHJvd2VyID0gRXhjZXB0aW9uVGhy
b3dlcigpKQorICAgIHsKKyAgICAgICAgSlNDOjpWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgICAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICAgICAgaWYgKCF2
YWx1ZS5pc09iamVjdCgpKSB7CisgICAgICAgICAgICBleGNlcHRpb25UaHJvd2VyKHN0YXRlLCBz
Y29wZSk7CisgICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICB9CisgICAgICAgIAorICAg
ICAgICByZXR1cm4geyB2bSwgSlNDOjphc09iamVjdCh2YWx1ZSkgfTsKKyAgICB9Cit9OworCisv
LyBNQVJLOiAtCiAvLyBNQVJLOiBBcnJheS1saWtlIHR5cGVzCiAKIG5hbWVzcGFjZSBEZXRhaWwg
ewpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3Vz
dG9tLmNwcAkocmV2aXNpb24gMjA5MTgzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01XaW5kb3dDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw2IEBACiAj
aW5jbHVkZSAiSlNIVE1MT3B0aW9uRWxlbWVudC5oIgogI2luY2x1ZGUgIkpTSURCRmFjdG9yeS5o
IgogI2luY2x1ZGUgIkpTSW1hZ2VDb25zdHJ1Y3Rvci5oIgotI2luY2x1ZGUgIkpTTWVzc2FnZVBv
cnRDdXN0b20uaCIKICNpbmNsdWRlICJKU1dvcmtlci5oIgogI2luY2x1ZGUgIkxvY2F0aW9uLmgi
CiAjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgpAQCAtNDg5LDUwICs0ODgsNiBA
QCBKU1ZhbHVlIEpTRE9NV2luZG93OjpzaG93TW9kYWxEaWFsb2coRXhlCiAgICAgcmV0dXJuIGhh
bmRsZXIucmV0dXJuVmFsdWUoKTsKIH0KIAotc3RhdGljIEpTVmFsdWUgaGFuZGxlUG9zdE1lc3Nh
Z2UoRE9NV2luZG93JiBpbXBsLCBFeGVjU3RhdGUmIHN0YXRlKQotewotICAgIFZNJiB2bSA9IHN0
YXRlLnZtKCk7Ci0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotCi0g
ICAgaWYgKFVOTElLRUxZKHN0YXRlLmFyZ3VtZW50Q291bnQoKSA8IDIpKQotICAgICAgICByZXR1
cm4gdGhyb3dFeGNlcHRpb24oJnN0YXRlLCBzY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRz
RXJyb3IoJnN0YXRlKSk7Ci0KLSAgICBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4gbWVzc2Fn
ZVBvcnRzOwotICAgIFZlY3RvcjxSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4+IGFycmF5QnVmZmVy
czsKLQotICAgIC8vIFRoaXMgZnVuY3Rpb24gaGFzIHZhcmlhYmxlIGFyZ3VtZW50cyBhbmQgY2Fu
IGJlOgotICAgIC8vIFBlciBjdXJyZW50IHNwZWM6Ci0gICAgLy8gICBwb3N0TWVzc2FnZShtZXNz
YWdlLCB0YXJnZXRPcmlnaW4pCi0gICAgLy8gICBwb3N0TWVzc2FnZShtZXNzYWdlLCB0YXJnZXRP
cmlnaW4sIHtzZXF1ZW5jZSBvZiB0cmFuc2ZlcnJhYmxlc30pCi0gICAgLy8gTGVnYWN5IG5vbi1z
dGFuZGFyZCBpbXBsZW1lbnRhdGlvbnMgaW4gd2Via2l0IGFsbG93ZWQ6Ci0gICAgLy8gICBwb3N0
TWVzc2FnZShtZXNzYWdlLCB7c2VxdWVuY2Ugb2YgdHJhbnNmZXJyYWJsZXN9LCB0YXJnZXRPcmln
aW4pOwotICAgIGludCB0YXJnZXRPcmlnaW5BcmdJbmRleCA9IDE7Ci0gICAgaWYgKHN0YXRlLmFy
Z3VtZW50Q291bnQoKSA+IDIpIHsKLSAgICAgICAgaW50IHRyYW5zZmVyYWJsZXNBcmdJbmRleCA9
IDI7Ci0gICAgICAgIGlmIChzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgyKS5pc1N0cmluZygpKSB7
Ci0gICAgICAgICAgICB0YXJnZXRPcmlnaW5BcmdJbmRleCA9IDI7Ci0gICAgICAgICAgICB0cmFu
c2ZlcmFibGVzQXJnSW5kZXggPSAxOwotICAgICAgICB9Ci0gICAgICAgIGV4dHJhY3RUcmFuc2Zl
cmFibGVzKHN0YXRlLCBzdGF0ZS5hcmd1bWVudCh0cmFuc2ZlcmFibGVzQXJnSW5kZXgpLCBtZXNz
YWdlUG9ydHMsIGFycmF5QnVmZmVycyk7Ci0gICAgfQotICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIEpTVmFsdWUoKSk7Ci0KLSAgICBhdXRvIG1lc3NhZ2UgPSBTZXJpYWxpemVkU2NyaXB0
VmFsdWU6OmNyZWF0ZShzdGF0ZSwgc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMCksIG1lc3NhZ2VQ
b3J0cywgV1RGTW92ZShhcnJheUJ1ZmZlcnMpKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBKU1ZhbHVlKCkpOwotCi0gICAgU3RyaW5nIHRhcmdldE9yaWdpbiA9IGNvbnZlcnQ8SURM
TnVsbGFibGU8SURMVVNWU3RyaW5nPj4oc3RhdGUsIHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KHRh
cmdldE9yaWdpbkFyZ0luZGV4KSk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNW
YWx1ZSgpKTsKLQotICAgIHByb3BhZ2F0ZUV4Y2VwdGlvbihzdGF0ZSwgc2NvcGUsIGltcGwucG9z
dE1lc3NhZ2UobWVzc2FnZS5yZWxlYXNlTm9uTnVsbCgpLCBXVEZNb3ZlKG1lc3NhZ2VQb3J0cyks
IHRhcmdldE9yaWdpbiwgY2FsbGVyRE9NV2luZG93KCZzdGF0ZSkpKTsKLQotICAgIHJldHVybiBq
c1VuZGVmaW5lZCgpOwotfQotCi1KU1ZhbHVlIEpTRE9NV2luZG93Ojpwb3N0TWVzc2FnZShFeGVj
U3RhdGUmIHN0YXRlKQotewotICAgIHJldHVybiBoYW5kbGVQb3N0TWVzc2FnZSh3cmFwcGVkKCks
IHN0YXRlKTsKLX0KLQogSlNWYWx1ZSBKU0RPTVdpbmRvdzo6c2V0VGltZW91dChFeGVjU3RhdGUm
IHN0YXRlKQogewogICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ3VzdG9tLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RlZGljYXRlZFdvcmtlckds
b2JhbFNjb3BlQ3VzdG9tLmNwcAkocmV2aXNpb24gMjA5MTgzKQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUN1c3RvbS5jcHAJKG5vbmV4
aXN0ZW50KQpAQCAtMSw0NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxl
LCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTEg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5oIgotCi0jaW5jbHVkZSAiSlNET01CaW5k
aW5nLmgiCi0jaW5jbHVkZSAiSlNNZXNzYWdlUG9ydEN1c3RvbS5oIgotCi11c2luZyBuYW1lc3Bh
Y2UgSlNDOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUpTQzo6SlNWYWx1ZSBKU0RlZGljYXRl
ZFdvcmtlckdsb2JhbFNjb3BlOjpwb3N0TWVzc2FnZShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUpCi17
Ci0gICAgcmV0dXJuIGhhbmRsZVBvc3RNZXNzYWdlKHN0YXRlLCB3cmFwcGVkKCkpOwotfQotCi19
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ3VzdG9tLmNwcApfX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fCkRlbGV0ZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTEgKzAsMCAjIwotbmF0aXZlClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTTWVzc2FnZVBvcnRDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRDdXN0b20uY3BwCShyZXZpc2lvbiAyMDkxODMpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VQb3J0Q3VzdG9tLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjcsMjAgKzI3LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJKU01lc3NhZ2VQb3J0LmgiCiAKLSNpbmNsdWRlICJFdmVudC5oIgotI2luY2x1ZGUgIkV4
Y2VwdGlvbkNvZGUuaCIKLSNpbmNsdWRlICJGcmFtZS5oIgotI2luY2x1ZGUgIkpTRE9NQmluZGlu
Zy5oIgotI2luY2x1ZGUgIkpTRE9NR2xvYmFsT2JqZWN0LmgiCi0jaW5jbHVkZSAiSlNFdmVudC5o
IgotI2luY2x1ZGUgIkpTRXZlbnRMaXN0ZW5lci5oIgotI2luY2x1ZGUgIkpTTWVzc2FnZVBvcnRD
dXN0b20uaCIKLSNpbmNsdWRlICJNZXNzYWdlUG9ydC5oIgotI2luY2x1ZGUgPGhlYXAvU2xvdFZp
c2l0b3JJbmxpbmVzLmg+Ci0jaW5jbHVkZSA8cnVudGltZS9FcnJvci5oPgotI2luY2x1ZGUgPHJ1
bnRpbWUvSlNBcnJheUJ1ZmZlci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5o
PgotCiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01Miw1
MyArMzgsNCBAQCB2b2lkIEpTTWVzc2FnZVBvcnQ6OnZpc2l0QWRkaXRpb25hbENoaWxkCiAgICAg
ICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChwb3J0KTsKIH0KIAotSlNDOjpKU1ZhbHVlIEpTTWVz
c2FnZVBvcnQ6OnBvc3RNZXNzYWdlKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSkKLXsKLSAgICByZXR1
cm4gaGFuZGxlUG9zdE1lc3NhZ2Uoc3RhdGUsIHdyYXBwZWQoKSk7Ci19Ci0KLXZvaWQgZXh0cmFj
dFRyYW5zZmVyYWJsZXMoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUgdmFsdWUs
IFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYgcG9ydEFycmF5LCBWZWN0b3I8UmVmUHRyPEpT
Qzo6QXJyYXlCdWZmZXI+PiYgYXJyYXlCdWZmZXJzKQotewotICAgIFZNJiB2bSA9IHN0YXRlLnZt
KCk7Ci0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotCi0gICAgaWYg
KHZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKLSAgICAgICAgcG9ydEFycmF5LnJlc2l6ZSgw
KTsKLSAgICAgICAgYXJyYXlCdWZmZXJzLnJlc2l6ZSgwKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIC8vIFZhbGlkYXRpb24gb2Ygc2VxdWVuY2UgdHlwZXMsIHBlciBXZWJJREwgc3Bl
YyA0LjEuMTMuCi0gICAgdW5zaWduZWQgbGVuZ3RoID0gMDsKLSAgICBKU09iamVjdCogb2JqZWN0
ID0gdG9KU1NlcXVlbmNlKHN0YXRlLCB2YWx1ZSwgbGVuZ3RoKTsKLSAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB2b2lkKCkpOwotCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMCA7IGkgPCBs
ZW5ndGg7ICsraSkgewotICAgICAgICBKU1ZhbHVlIHZhbHVlID0gb2JqZWN0LT5nZXQoJnN0YXRl
LCBpKTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKLQotICAg
ICAgICBpZiAodmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkgewotICAgICAgICAgICAgc2V0RE9N
RXhjZXB0aW9uKCZzdGF0ZSwgSU5WQUxJRF9TVEFURV9FUlIpOwotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gVmFsaWRhdGlvbiBvZiBPYmplY3RzIGltcGxlbWVu
dGluZyBhbiBpbnRlcmZhY2UsIHBlciBXZWJJREwgc3BlYyA0LjEuMTUuCi0gICAgICAgIGlmIChS
ZWZQdHI8TWVzc2FnZVBvcnQ+IHBvcnQgPSBKU01lc3NhZ2VQb3J0Ojp0b1dyYXBwZWQodmFsdWUp
KSB7Ci0gICAgICAgICAgICAvLyBDaGVjayBmb3IgZHVwbGljYXRlIHBvcnRzLgotICAgICAgICAg
ICAgaWYgKHBvcnRBcnJheS5jb250YWlucyhwb3J0KSkgewotICAgICAgICAgICAgICAgIHNldERP
TUV4Y2VwdGlvbigmc3RhdGUsIElOVkFMSURfU1RBVEVfRVJSKTsKLSAgICAgICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBwb3J0QXJyYXkuYXBwZW5kKFdURk1v
dmUocG9ydCkpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaWYgKFJlZlB0cjxBcnJh
eUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSB0b1Bvc3NpYmx5U2hhcmVkQXJyYXlCdWZmZXIodmFsdWUp
KQotICAgICAgICAgICAgICAgIGFycmF5QnVmZmVycy5hcHBlbmQoV1RGTW92ZShhcnJheUJ1ZmZl
cikpOwotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3Io
JnN0YXRlLCBzY29wZSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQot
ICAgICAgICB9Ci0gICAgfQotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VQb3J0Q3VzdG9tLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5oCShyZXZp
c2lvbiAyMDkxODMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VQb3J0
Q3VzdG9tLmgJKG5vbmV4aXN0ZW50KQpAQCAtMSw2NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0g
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAot
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5j
bHVkZSAiTWVzc2FnZVBvcnQuaCIKLSNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+Ci0jaW5jbHVk
ZSA8cnVudGltZS9KU0NJbmxpbmVzLmg+Ci0jaW5jbHVkZSA8cnVudGltZS9KU0NKU1ZhbHVlLmg+
Ci0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi12b2lk
IGV4dHJhY3RUcmFuc2ZlcmFibGVzKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlLCBWZWN0
b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4mLCBWZWN0b3I8UmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+
PiYpOwotCi0vLyBIZWxwZXIgZnVuY3Rpb24gdG8gY29udmVydCBmcm9tIEpTIHBvc3RNZXNzYWdl
IGFyZ3VtZW50cyB0byBXZWJDb3JlIHBvc3RNZXNzYWdlIGFyZ3VtZW50cy4KLXRlbXBsYXRlPHR5
cGVuYW1lIFQ+IGlubGluZSBKU0M6OkpTVmFsdWUgaGFuZGxlUG9zdE1lc3NhZ2UoSlNDOjpFeGVj
U3RhdGUmIHN0YXRlLCBUJiBvYmplY3QpCi17Ci0gICAgSlNDOjpWTSYgdm0gPSBzdGF0ZS52bSgp
OwotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLQotICAgIGlmIChV
TkxJS0VMWShzdGF0ZS5hcmd1bWVudENvdW50KCkgPCAxKSkKLSAgICAgICAgcmV0dXJuIHRocm93
RXhjZXB0aW9uKCZzdGF0ZSwgc2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZz
dGF0ZSkpOwotCi0gICAgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+IG1lc3NhZ2VQb3J0QXJy
YXk7Ci0gICAgVmVjdG9yPFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPj4gYXJyYXlCdWZmZXJBcnJh
eTsKLSAgICBleHRyYWN0VHJhbnNmZXJhYmxlcyhzdGF0ZSwgc3RhdGUuYXJndW1lbnQoMSksIG1l
c3NhZ2VQb3J0QXJyYXksIGFycmF5QnVmZmVyQXJyYXkpOwotCi0gICAgYXV0byBtZXNzYWdlID0g
U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoc3RhdGUsIHN0YXRlLnVuY2hlY2tlZEFyZ3Vt
ZW50KDApLCBtZXNzYWdlUG9ydEFycmF5LCBXVEZNb3ZlKGFycmF5QnVmZmVyQXJyYXkpKTsKLSAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU0M6OkpTVmFsdWUoKSk7Ci0KLSAgICBwcm9w
YWdhdGVFeGNlcHRpb24oc3RhdGUsIHNjb3BlLCBvYmplY3QucG9zdE1lc3NhZ2UoV1RGTW92ZSht
ZXNzYWdlKSwgV1RGTW92ZShtZXNzYWdlUG9ydEFycmF5KSkpOwotICAgIHJldHVybiBKU0M6Ompz
VW5kZWZpbmVkKCk7Ci19Ci0KLX0KClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRDdXN0b20uaApfX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2
bjplb2wtc3R5bGUKIyMgLTEgKzAsMCAjIwotbmF0aXZlClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
cHJvcGVydHkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ3VzdG9t
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckN1
c3RvbS5jcHAJKHJldmlzaW9uIDIwOTE4MykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTV29ya2VyQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNiBAQAogI2lu
Y2x1ZGUgIkpTRE9NQmluZGluZy5oIgogI2luY2x1ZGUgIkpTRE9NR2xvYmFsT2JqZWN0LmgiCiAj
aW5jbHVkZSAiSlNET01XaW5kb3dDdXN0b20uaCIKLSNpbmNsdWRlICJKU01lc3NhZ2VQb3J0Q3Vz
dG9tLmgiCiAjaW5jbHVkZSAiV29ya2VyLmgiCiAjaW5jbHVkZSA8cnVudGltZS9FcnJvci5oPgog
CkBAIC0zOSwxMSArMzgsNiBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLUpTQzo6SlNWYWx1ZSBKU1dvcmtlcjo6cG9zdE1lc3NhZ2UoSlNDOjpFeGVjU3Rh
dGUmIHN0YXRlKQotewotICAgIHJldHVybiBoYW5kbGVQb3N0TWVzc2FnZShzdGF0ZSwgd3JhcHBl
ZCgpKTsKLX0KLQogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU1dvcmtl
cihFeGVjU3RhdGUmIHN0YXRlKQogewogICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS5jcHAJKHJldmlzaW9uIDIwOTE4MykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkyLDYgKzkyLDE2IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIGNvbnN0IHVuc2lnbmVkIG1heGltdW1GaWx0
ZXJSZWN1cnNpb24gPSA0MDAwMDsKIAorZW51bSBjbGFzcyBTZXJpYWxpemF0aW9uUmV0dXJuQ29k
ZSB7CisgICAgU3VjY2Vzc2Z1bGx5Q29tcGxldGVkLAorICAgIFN0YWNrT3ZlcmZsb3dFcnJvciwK
KyAgICBJbnRlcnJ1cHRlZEV4ZWN1dGlvbkVycm9yLAorICAgIFZhbGlkYXRpb25FcnJvciwKKyAg
ICBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yLAorICAgIERhdGFDbG9uZUVycm9yLAorICAgIFVuc3Bl
Y2lmaWVkRXJyb3IKK307CisKIGVudW0gV2Fsa2VyU3RhdGUgeyBTdGF0ZVVua25vd24sIEFycmF5
U3RhcnRTdGF0ZSwgQXJyYXlTdGFydFZpc2l0TWVtYmVyLCBBcnJheUVuZFZpc2l0TWVtYmVyLAog
ICAgIE9iamVjdFN0YXJ0U3RhdGUsIE9iamVjdFN0YXJ0VmlzaXRNZW1iZXIsIE9iamVjdEVuZFZp
c2l0TWVtYmVyLAogICAgIE1hcERhdGFTdGFydFZpc2l0RW50cnksIE1hcERhdGFFbmRWaXNpdEtl
eSwgTWFwRGF0YUVuZFZpc2l0VmFsdWUsCkBAIC0zNzQsNyArMzg0LDcgQEAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIFN0cmluZ0RhdGFJczhCaXRGbAogICogICAgPGZhY3RvclNpemU6dWludDMyX3Q+
IDxmYWN0b3I6Ynl0ZXtmYWN0b3JTaXplfT4gPGNydEV4cG9uZW50U2l6ZTp1aW50MzJfdD4gPGNy
dEV4cG9uZW50OmJ5dGV7Y3J0RXhwb25lbnRTaXplfT4gPGNydENvZWZmaWNpZW50U2l6ZTp1aW50
MzJfdD4gPGNydENvZWZmaWNpZW50OmJ5dGV7Y3J0Q29lZmZpY2llbnRTaXplfT4KICAqLwogCi10
eXBlZGVmIHN0ZDo6cGFpcjxKU0M6OkpTVmFsdWUsIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlPiBE
ZXNlcmlhbGl6YXRpb25SZXN1bHQ7Cit1c2luZyBEZXNlcmlhbGl6YXRpb25SZXN1bHQgPSBzdGQ6
OnBhaXI8SlNDOjpKU1ZhbHVlLCBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZT47CiAKIGNsYXNzIENs
b25lQmFzZSB7CiBwcm90ZWN0ZWQ6CkBAIC0zOTEsMTMgKzQwMSw2IEBAIHByb3RlY3RlZDoKICAg
ICAgICAgcmV0dXJuIHNjb3BlLmV4Y2VwdGlvbigpOwogICAgIH0KIAotICAgIHZvaWQgdGhyb3dT
dGFja092ZXJmbG93KCkKLSAgICB7Ci0gICAgICAgIFZNJiB2bSA9IG1fZXhlYy0+dm0oKTsKLSAg
ICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgICAgICB0aHJv
d0V4Y2VwdGlvbihtX2V4ZWMsIHNjb3BlLCBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IobV9leGVj
KSk7Ci0gICAgfQotCiAgICAgdm9pZCBmYWlsKCkKICAgICB7CiAgICAgICAgIG1fZmFpbGVkID0g
dHJ1ZTsKQEAgLTczMSw3ICs3MzQsNyBAQCBwcml2YXRlOgogICAgICAgICB3cml0ZShzdGF0aWNf
Y2FzdDx1aW50MzJfdD4oYXJyYXlCdWZmZXJWaWV3LT5ieXRlTGVuZ3RoKCkpKTsKICAgICAgICAg
UmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlciA9IGFycmF5QnVmZmVyVmlldy0+cG9zc2li
bHlTaGFyZWRCdWZmZXIoKTsKICAgICAgICAgaWYgKCFhcnJheUJ1ZmZlcikgewotICAgICAgICAg
ICAgY29kZSA9IFZhbGlkYXRpb25FcnJvcjsKKyAgICAgICAgICAgIGNvZGUgPSBTZXJpYWxpemF0
aW9uUmV0dXJuQ29kZTo6VmFsaWRhdGlvbkVycm9yOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgICAgIH0KICAgICAgICAgSlNWYWx1ZSBidWZmZXJPYmogPSB0b0pTKG1fZXhlYywganND
YXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4obV9leGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLCBh
cnJheUJ1ZmZlci5nZXQoKSk7CkBAIC04NDEsMTIgKzg0NCwxMiBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgLy8gTWVzc2FnZVBvcnQgb2JqZWN0IGNvdWxkIG5vdCBiZSBmb3VuZCBpbiB0cmFuc2Zl
cnJlZCBtZXNzYWdlIHBvcnRzCi0gICAgICAgICAgICAgICAgY29kZSA9IFZhbGlkYXRpb25FcnJv
cjsKKyAgICAgICAgICAgICAgICBjb2RlID0gU2VyaWFsaXphdGlvblJldHVybkNvZGU6OlZhbGlk
YXRpb25FcnJvcjsKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIGlmIChBcnJheUJ1ZmZlciogYXJyYXlCdWZmZXIgPSB0b1Bvc3NpYmx5U2hh
cmVkQXJyYXlCdWZmZXIob2JqKSkgewogICAgICAgICAgICAgICAgIGlmIChhcnJheUJ1ZmZlci0+
aXNOZXV0ZXJlZCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNvZGUgPSBWYWxpZGF0aW9uRXJy
b3I7CisgICAgICAgICAgICAgICAgICAgIGNvZGUgPSBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZTo6
VmFsaWRhdGlvbkVycm9yOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgT2JqZWN0UG9vbDo6aXRlcmF0b3IgaW5kZXgg
PSBtX3RyYW5zZmVycmVkQXJyYXlCdWZmZXJzLmZpbmQob2JqKTsKQEAgLTEyMzQsNyArMTIzNyw3
IEBAIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlIENsb25lU2VyaWFsaXplcjoKICAgICAgICAgICAg
IGNhc2UgQXJyYXlTdGFydFN0YXRlOiB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGlzQXJyYXko
aW5WYWx1ZSkpOwogICAgICAgICAgICAgICAgIGlmIChpbnB1dE9iamVjdFN0YWNrLnNpemUoKSA+
IG1heGltdW1GaWx0ZXJSZWN1cnNpb24pCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBTdGFj
a092ZXJmbG93RXJyb3I7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBTZXJpYWxpemF0aW9u
UmV0dXJuQ29kZTo6U3RhY2tPdmVyZmxvd0Vycm9yOwogCiAgICAgICAgICAgICAgICAgSlNBcnJh
eSogaW5BcnJheSA9IGFzQXJyYXkoaW5WYWx1ZSk7CiAgICAgICAgICAgICAgICAgdW5zaWduZWQg
bGVuZ3RoID0gaW5BcnJheS0+bGVuZ3RoKCk7CkBAIC0xMjczLDkgKzEyNzYsOSBAQCBTZXJpYWxp
emF0aW9uUmV0dXJuQ29kZSBDbG9uZVNlcmlhbGl6ZXI6CiAgICAgICAgICAgICAgICAgfQogCiAg
ICAgICAgICAgICAgICAgd3JpdGUoaW5kZXgpOwotICAgICAgICAgICAgICAgIFNlcmlhbGl6YXRp
b25SZXR1cm5Db2RlIHRlcm1pbmFsQ29kZSA9IFN1Y2Nlc3NmdWxseUNvbXBsZXRlZDsKKyAgICAg
ICAgICAgICAgICBhdXRvIHRlcm1pbmFsQ29kZSA9IFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlOjpT
dWNjZXNzZnVsbHlDb21wbGV0ZWQ7CiAgICAgICAgICAgICAgICAgaWYgKGR1bXBJZlRlcm1pbmFs
KGluVmFsdWUsIHRlcm1pbmFsQ29kZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHRlcm1p
bmFsQ29kZSAhPSBTdWNjZXNzZnVsbHlDb21wbGV0ZWQpCisgICAgICAgICAgICAgICAgICAgIGlm
ICh0ZXJtaW5hbENvZGUgIT0gU2VyaWFsaXphdGlvblJldHVybkNvZGU6OlN1Y2Nlc3NmdWxseUNv
bXBsZXRlZCkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0ZXJtaW5hbENvZGU7CiAg
ICAgICAgICAgICAgICAgICAgIGluZGV4U3RhY2subGFzdCgpKys7CiAgICAgICAgICAgICAgICAg
ICAgIGdvdG8gYXJyYXlTdGFydFZpc2l0TWVtYmVyOwpAQCAtMTI5MSw3ICsxMjk0LDcgQEAgU2Vy
aWFsaXphdGlvblJldHVybkNvZGUgQ2xvbmVTZXJpYWxpemVyOgogICAgICAgICAgICAgY2FzZSBP
YmplY3RTdGFydFN0YXRlOiB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGluVmFsdWUuaXNPYmpl
Y3QoKSk7CiAgICAgICAgICAgICAgICAgaWYgKGlucHV0T2JqZWN0U3RhY2suc2l6ZSgpID4gbWF4
aW11bUZpbHRlclJlY3Vyc2lvbikKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFN0YWNrT3Zl
cmZsb3dFcnJvcjsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFNlcmlhbGl6YXRpb25SZXR1
cm5Db2RlOjpTdGFja092ZXJmbG93RXJyb3I7CiAgICAgICAgICAgICAgICAgSlNPYmplY3QqIGlu
T2JqZWN0ID0gYXNPYmplY3QoaW5WYWx1ZSk7CiAgICAgICAgICAgICAgICAgaWYgKCFzdGFydE9i
amVjdChpbk9iamVjdCkpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTMwMCw3ICsx
MzAzLDcgQEAgU2VyaWFsaXphdGlvblJldHVybkNvZGUgQ2xvbmVTZXJpYWxpemVyOgogICAgICAg
ICAgICAgICAgIC8vIHRoZSBpbnB1dCBpcyBub3QgYW4gT2JqZWN0IG9iamVjdCB0aGVuIHdlIHNo
b3VsZCB0aHJvdwogICAgICAgICAgICAgICAgIC8vIGEgRGF0YUNsb25lRXJyb3IuCiAgICAgICAg
ICAgICAgICAgaWYgKGluT2JqZWN0LT5jbGFzc0luZm8oKSAhPSBKU0ZpbmFsT2JqZWN0OjppbmZv
KCkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBEYXRhQ2xvbmVFcnJvcjsKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlOjpEYXRhQ2xvbmVFcnJv
cjsKICAgICAgICAgICAgICAgICBpbnB1dE9iamVjdFN0YWNrLmFwcGVuZChpbk9iamVjdCk7CiAg
ICAgICAgICAgICAgICAgaW5kZXhTdGFjay5hcHBlbmQoMCk7CiAgICAgICAgICAgICAgICAgcHJv
cGVydHlTdGFjay5hcHBlbmQoUHJvcGVydHlOYW1lQXJyYXkobV9leGVjLCBQcm9wZXJ0eU5hbWVN
b2RlOjpTdHJpbmdzKSk7CkBAIC0xMzIxLDcgKzEzMjQsNyBAQCBTZXJpYWxpemF0aW9uUmV0dXJu
Q29kZSBDbG9uZVNlcmlhbGl6ZXI6CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
IGluVmFsdWUgPSBnZXRQcm9wZXJ0eShvYmplY3QsIHByb3BlcnRpZXNbaW5kZXhdKTsKICAgICAg
ICAgICAgICAgICBpZiAoc2hvdWxkVGVybWluYXRlKCkpCi0gICAgICAgICAgICAgICAgICAgIHJl
dHVybiBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yOworICAgICAgICAgICAgICAgICAgICByZXR1cm4g
U2VyaWFsaXphdGlvblJldHVybkNvZGU6OkV4aXN0aW5nRXhjZXB0aW9uRXJyb3I7CiAKICAgICAg
ICAgICAgICAgICBpZiAoIWluVmFsdWUpIHsKICAgICAgICAgICAgICAgICAgICAgLy8gUHJvcGVy
dHkgd2FzIHJlbW92ZWQgZHVyaW5nIHNlcmlhbGlzYXRpb24KQEAgLTEzMzEsMjAgKzEzMzQsMjAg
QEAgU2VyaWFsaXphdGlvblJldHVybkNvZGUgQ2xvbmVTZXJpYWxpemVyOgogICAgICAgICAgICAg
ICAgIHdyaXRlKHByb3BlcnRpZXNbaW5kZXhdKTsKIAogICAgICAgICAgICAgICAgIGlmIChzaG91
bGRUZXJtaW5hdGUoKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEV4aXN0aW5nRXhjZXB0
aW9uRXJyb3I7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBTZXJpYWxpemF0aW9uUmV0dXJu
Q29kZTo6RXhpc3RpbmdFeGNlcHRpb25FcnJvcjsKIAotICAgICAgICAgICAgICAgIFNlcmlhbGl6
YXRpb25SZXR1cm5Db2RlIHRlcm1pbmFsQ29kZSA9IFN1Y2Nlc3NmdWxseUNvbXBsZXRlZDsKKyAg
ICAgICAgICAgICAgICBhdXRvIHRlcm1pbmFsQ29kZSA9IFNlcmlhbGl6YXRpb25SZXR1cm5Db2Rl
OjpTdWNjZXNzZnVsbHlDb21wbGV0ZWQ7CiAgICAgICAgICAgICAgICAgaWYgKCFkdW1wSWZUZXJt
aW5hbChpblZhbHVlLCB0ZXJtaW5hbENvZGUpKSB7CiAgICAgICAgICAgICAgICAgICAgIHN0YXRl
U3RhY2suYXBwZW5kKE9iamVjdEVuZFZpc2l0TWVtYmVyKTsKICAgICAgICAgICAgICAgICAgICAg
Z290byBzdGF0ZVVua25vd247CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlm
ICh0ZXJtaW5hbENvZGUgIT0gU3VjY2Vzc2Z1bGx5Q29tcGxldGVkKQorICAgICAgICAgICAgICAg
IGlmICh0ZXJtaW5hbENvZGUgIT0gU2VyaWFsaXphdGlvblJldHVybkNvZGU6OlN1Y2Nlc3NmdWxs
eUNvbXBsZXRlZCkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRlcm1pbmFsQ29kZTsKICAg
ICAgICAgICAgICAgICBGQUxMVEhST1VHSDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNh
c2UgT2JqZWN0RW5kVmlzaXRNZW1iZXI6IHsKICAgICAgICAgICAgICAgICBpZiAoc2hvdWxkVGVy
bWluYXRlKCkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBFeGlzdGluZ0V4Y2VwdGlvbkVy
cm9yOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gU2VyaWFsaXphdGlvblJldHVybkNvZGU6
OkV4aXN0aW5nRXhjZXB0aW9uRXJyb3I7CiAKICAgICAgICAgICAgICAgICBpbmRleFN0YWNrLmxh
c3QoKSsrOwogICAgICAgICAgICAgICAgIGdvdG8gb2JqZWN0U3RhcnRWaXNpdE1lbWJlcjsKQEAg
LTEzNTIsNyArMTM1NSw3IEBAIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlIENsb25lU2VyaWFsaXpl
cjoKICAgICAgICAgICAgIG1hcFN0YXJ0U3RhdGU6IHsKICAgICAgICAgICAgICAgICBBU1NFUlQo
aW5WYWx1ZS5pc09iamVjdCgpKTsKICAgICAgICAgICAgICAgICBpZiAoaW5wdXRPYmplY3RTdGFj
ay5zaXplKCkgPiBtYXhpbXVtRmlsdGVyUmVjdXJzaW9uKQotICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gU3RhY2tPdmVyZmxvd0Vycm9yOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gU2Vy
aWFsaXphdGlvblJldHVybkNvZGU6OlN0YWNrT3ZlcmZsb3dFcnJvcjsKICAgICAgICAgICAgICAg
ICBKU01hcCogaW5NYXAgPSBqc0Nhc3Q8SlNNYXAqPihpblZhbHVlKTsKICAgICAgICAgICAgICAg
ICBpZiAoIXN0YXJ0TWFwKGluTWFwKSkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0x
Mzk2LDcgKzEzOTksNyBAQCBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZSBDbG9uZVNlcmlhbGl6ZXI6
CiAgICAgICAgICAgICBzZXRTdGFydFN0YXRlOiB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGlu
VmFsdWUuaXNPYmplY3QoKSk7CiAgICAgICAgICAgICAgICAgaWYgKGlucHV0T2JqZWN0U3RhY2su
c2l6ZSgpID4gbWF4aW11bUZpbHRlclJlY3Vyc2lvbikKLSAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIFN0YWNrT3ZlcmZsb3dFcnJvcjsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFNlcmlh
bGl6YXRpb25SZXR1cm5Db2RlOjpTdGFja092ZXJmbG93RXJyb3I7CiAgICAgICAgICAgICAgICAg
SlNTZXQqIGluU2V0ID0ganNDYXN0PEpTU2V0Kj4oaW5WYWx1ZSk7CiAgICAgICAgICAgICAgICAg
aWYgKCFzdGFydFNldChpblNldCkpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTQz
MSw5ICsxNDM0LDkgQEAgU2VyaWFsaXphdGlvblJldHVybkNvZGUgQ2xvbmVTZXJpYWxpemVyOgog
CiAgICAgICAgICAgICBzdGF0ZVVua25vd246CiAgICAgICAgICAgICBjYXNlIFN0YXRlVW5rbm93
bjogewotICAgICAgICAgICAgICAgIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlIHRlcm1pbmFsQ29k
ZSA9IFN1Y2Nlc3NmdWxseUNvbXBsZXRlZDsKKyAgICAgICAgICAgICAgICBhdXRvIHRlcm1pbmFs
Q29kZSA9IFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlOjpTdWNjZXNzZnVsbHlDb21wbGV0ZWQ7CiAg
ICAgICAgICAgICAgICAgaWYgKGR1bXBJZlRlcm1pbmFsKGluVmFsdWUsIHRlcm1pbmFsQ29kZSkp
IHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHRlcm1pbmFsQ29kZSAhPSBTdWNjZXNzZnVsbHlD
b21wbGV0ZWQpCisgICAgICAgICAgICAgICAgICAgIGlmICh0ZXJtaW5hbENvZGUgIT0gU2VyaWFs
aXphdGlvblJldHVybkNvZGU6OlN1Y2Nlc3NmdWxseUNvbXBsZXRlZCkKICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiB0ZXJtaW5hbENvZGU7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgICAgIH0KQEAgLTE0NTQsMTMgKzE0NTcsMTEgQEAgU2VyaWFsaXphdGlv
blJldHVybkNvZGUgQ2xvbmVTZXJpYWxpemVyOgogICAgICAgICBzdGF0ZVN0YWNrLnJlbW92ZUxh
c3QoKTsKICAgICB9CiAgICAgaWYgKG1fZmFpbGVkKQotICAgICAgICByZXR1cm4gVW5zcGVjaWZp
ZWRFcnJvcjsKKyAgICAgICAgcmV0dXJuIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlOjpVbnNwZWNp
ZmllZEVycm9yOwogCi0gICAgcmV0dXJuIFN1Y2Nlc3NmdWxseUNvbXBsZXRlZDsKKyAgICByZXR1
cm4gU2VyaWFsaXphdGlvblJldHVybkNvZGU6OlN1Y2Nlc3NmdWxseUNvbXBsZXRlZDsKIH0KIAot
dHlwZWRlZiBWZWN0b3I8SlNDOjpBcnJheUJ1ZmZlckNvbnRlbnRzPiBBcnJheUJ1ZmZlckNvbnRl
bnRzQXJyYXk7Ci0KIGNsYXNzIENsb25lRGVzZXJpYWxpemVyIDogQ2xvbmVCYXNlIHsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgU3RyaW5nIGRlc2VyaWFsaXplU3RyaW5nKGNvbnN0IFZlY3Rvcjx1aW50
OF90PiYgYnVmZmVyKQpAQCAtMTQ4OSwxMCArMTQ5MCwxMCBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IERlc2VyaWFsaXphdGlvblJlc3VsdCBkZXNlcmlhbGl6ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYgbWVz
c2FnZVBvcnRzLCBBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkqIGFycmF5QnVmZmVyQ29udGVudHNB
cnJheSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBidWZmZXIsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBibG9iVVJMcywgY29uc3QgVmVjdG9yPFN0cmluZz4gYmxvYkZpbGVQYXRocykKICAgICB7CiAg
ICAgICAgIGlmICghYnVmZmVyLnNpemUoKSkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
cGFpcihqc051bGwoKSwgVW5zcGVjaWZpZWRFcnJvcik7CisgICAgICAgICAgICByZXR1cm4gc3Rk
OjptYWtlX3BhaXIoanNOdWxsKCksIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlOjpVbnNwZWNpZmll
ZEVycm9yKTsKICAgICAgICAgQ2xvbmVEZXNlcmlhbGl6ZXIgZGVzZXJpYWxpemVyKGV4ZWMsIGds
b2JhbE9iamVjdCwgbWVzc2FnZVBvcnRzLCBhcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXksIGJ1ZmZl
ciwgYmxvYlVSTHMsIGJsb2JGaWxlUGF0aHMpOwogICAgICAgICBpZiAoIWRlc2VyaWFsaXplci5p
c1ZhbGlkKCkpCi0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIoSlNWYWx1ZSgpLCBW
YWxpZGF0aW9uRXJyb3IpOworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKEpTVmFs
dWUoKSwgU2VyaWFsaXphdGlvblJldHVybkNvZGU6OlZhbGlkYXRpb25FcnJvcik7CiAgICAgICAg
IHJldHVybiBkZXNlcmlhbGl6ZXIuZGVzZXJpYWxpemUoKTsKICAgICB9CiAKQEAgLTE1NjksMTMg
KzE1NzAsNiBAQCBwcml2YXRlOgogCiAgICAgRGVzZXJpYWxpemF0aW9uUmVzdWx0IGRlc2VyaWFs
aXplKCk7CiAKLSAgICB2b2lkIHRocm93VmFsaWRhdGlvbkVycm9yKCkKLSAgICB7Ci0gICAgICAg
IFZNJiB2bSA9IG1fZXhlYy0+dm0oKTsKLSAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwotICAgICAgICB0aHJvd1R5cGVFcnJvcihtX2V4ZWMsIHNjb3BlLCBBU0NJ
SUxpdGVyYWwoIlVuYWJsZSB0byBkZXNlcmlhbGl6ZSBkYXRhLiIpKTsKLSAgICB9Ci0KICAgICBi
b29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBtX3ZlcnNpb24gPD0gQ3VycmVudFZlcnNpb247
IH0KIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBib29sIHJlYWRMaXR0bGVFbmRpYW4oVCYg
dmFsdWUpCkBAIC0yNTI4LDcgKzI1MjIsNyBAQCBEZXNlcmlhbGl6YXRpb25SZXN1bHQgQ2xvbmVE
ZXNlcmlhbGl6ZXI6CiAgICAgICAgIG9iamVjdFN0YXJ0U3RhdGU6CiAgICAgICAgIGNhc2UgT2Jq
ZWN0U3RhcnRTdGF0ZTogewogICAgICAgICAgICAgaWYgKG91dHB1dE9iamVjdFN0YWNrLnNpemUo
KSA+IG1heGltdW1GaWx0ZXJSZWN1cnNpb24pCi0gICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bWFrZV9wYWlyKEpTVmFsdWUoKSwgU3RhY2tPdmVyZmxvd0Vycm9yKTsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3BhaXIoSlNWYWx1ZSgpLCBTZXJpYWxpemF0aW9uUmV0dXJuQ29k
ZTo6U3RhY2tPdmVyZmxvd0Vycm9yKTsKICAgICAgICAgICAgIEpTT2JqZWN0KiBvdXRPYmplY3Qg
PSBjb25zdHJ1Y3RFbXB0eU9iamVjdChtX2V4ZWMsIG1fZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90
b3R5cGUoKSk7CiAgICAgICAgICAgICBtX2djQnVmZmVyLmFwcGVuZChvdXRPYmplY3QpOwogICAg
ICAgICAgICAgb3V0cHV0T2JqZWN0U3RhY2suYXBwZW5kKG91dE9iamVjdCk7CkBAIC0yNTYzLDcg
KzI1NTcsNyBAQCBEZXNlcmlhbGl6YXRpb25SZXN1bHQgQ2xvbmVEZXNlcmlhbGl6ZXI6CiAgICAg
ICAgIH0KICAgICAgICAgbWFwT2JqZWN0U3RhcnRTdGF0ZTogewogICAgICAgICAgICAgaWYgKG91
dHB1dE9iamVjdFN0YWNrLnNpemUoKSA+IG1heGltdW1GaWx0ZXJSZWN1cnNpb24pCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKEpTVmFsdWUoKSwgU3RhY2tPdmVyZmxvd0Vy
cm9yKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIoSlNWYWx1ZSgpLCBT
ZXJpYWxpemF0aW9uUmV0dXJuQ29kZTo6U3RhY2tPdmVyZmxvd0Vycm9yKTsKICAgICAgICAgICAg
IEpTTWFwKiBtYXAgPSBKU01hcDo6Y3JlYXRlKG1fZXhlYywgbV9leGVjLT52bSgpLCBtX2dsb2Jh
bE9iamVjdC0+bWFwU3RydWN0dXJlKCkpOwogICAgICAgICAgICAgaWYgKFVOTElLRUxZKHNjb3Bl
LmV4Y2VwdGlvbigpKSkKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwpAQCAtMjU5NCw3ICsy
NTg4LDcgQEAgRGVzZXJpYWxpemF0aW9uUmVzdWx0IENsb25lRGVzZXJpYWxpemVyOgogCiAgICAg
ICAgIHNldE9iamVjdFN0YXJ0U3RhdGU6IHsKICAgICAgICAgICAgIGlmIChvdXRwdXRPYmplY3RT
dGFjay5zaXplKCkgPiBtYXhpbXVtRmlsdGVyUmVjdXJzaW9uKQotICAgICAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om1ha2VfcGFpcihKU1ZhbHVlKCksIFN0YWNrT3ZlcmZsb3dFcnJvcik7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKEpTVmFsdWUoKSwgU2VyaWFsaXphdGlv
blJldHVybkNvZGU6OlN0YWNrT3ZlcmZsb3dFcnJvcik7CiAgICAgICAgICAgICBKU1NldCogc2V0
ID0gSlNTZXQ6OmNyZWF0ZShtX2V4ZWMsIG1fZXhlYy0+dm0oKSwgbV9nbG9iYWxPYmplY3QtPnNl
dFN0cnVjdHVyZSgpKTsKICAgICAgICAgICAgIGlmIChVTkxJS0VMWShzY29wZS5leGNlcHRpb24o
KSkpCiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKQEAgLTI2NDMsMTAgKzI2MzcsMTAgQEAg
RGVzZXJpYWxpemF0aW9uUmVzdWx0IENsb25lRGVzZXJpYWxpemVyOgogICAgIH0KICAgICBBU1NF
UlQob3V0VmFsdWUpOwogICAgIEFTU0VSVCghbV9mYWlsZWQpOwotICAgIHJldHVybiBzdGQ6Om1h
a2VfcGFpcihvdXRWYWx1ZSwgU3VjY2Vzc2Z1bGx5Q29tcGxldGVkKTsKKyAgICByZXR1cm4gc3Rk
OjptYWtlX3BhaXIob3V0VmFsdWUsIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlOjpTdWNjZXNzZnVs
bHlDb21wbGV0ZWQpOwogZXJyb3I6CiAgICAgZmFpbCgpOwotICAgIHJldHVybiBzdGQ6Om1ha2Vf
cGFpcihKU1ZhbHVlKCksIFZhbGlkYXRpb25FcnJvcik7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV9w
YWlyKEpTVmFsdWUoKSwgU2VyaWFsaXphdGlvblJldHVybkNvZGU6OlZhbGlkYXRpb25FcnJvcik7
CiB9CiAKIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6flNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSgpCkBA
IC0yNjY5LDE5ICsyNjYzLDEyIEBAIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6U2VyaWFsaXplZFNj
cmlwdFYKICAgICAgICAgbV9ibG9iVVJMcy5hcHBlbmQodXJsLmlzb2xhdGVkQ29weSgpKTsKIH0K
IAotc3RkOjp1bmlxdWVfcHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6QXJyYXlCdWZmZXJDb250
ZW50c0FycmF5PiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OnRyYW5zZmVyQXJyYXlCdWZmZXJzKAot
ICAgIEV4ZWNTdGF0ZSogZXhlYywgVmVjdG9yPFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPj4mIGFy
cmF5QnVmZmVycywgU2VyaWFsaXphdGlvblJldHVybkNvZGUmIGNvZGUpCitFeGNlcHRpb25Pcjxz
dGQ6OnVuaXF1ZV9wdHI8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5Pj4gU2VyaWFsaXplZFNjcmlw
dFZhbHVlOjp0cmFuc2ZlckFycmF5QnVmZmVycyhjb25zdCBWZWN0b3I8UmVmUHRyPEpTQzo6QXJy
YXlCdWZmZXI+PiYgYXJyYXlCdWZmZXJzKQogewotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
YXJyYXlCdWZmZXJzLnNpemUoKTsgaSsrKSB7Ci0gICAgICAgIGlmIChhcnJheUJ1ZmZlcnNbaV0t
PmlzTmV1dGVyZWQoKSkgewotICAgICAgICAgICAgY29kZSA9IFZhbGlkYXRpb25FcnJvcjsKLSAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICB9Ci0gICAgfQorICAgIGlmIChhcnJh
eUJ1ZmZlcnMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGF1dG8g
Y29udGVudHMgPSBzdGQ6Om1ha2VfdW5pcXVlPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4oYXJy
YXlCdWZmZXJzLnNpemUoKSk7Ci0gICAgVmVjdG9yPFJlZjxET01XcmFwcGVyV29ybGQ+PiB3b3Js
ZHM7Ci0gICAgc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPihleGVjLT52bSgpLmNsaWVudERh
dGEpLT5nZXRBbGxXb3JsZHMod29ybGRzKTsKIAogICAgIEhhc2hTZXQ8SlNDOjpBcnJheUJ1ZmZl
cio+IHZpc2l0ZWQ7CiAgICAgZm9yIChzaXplX3QgYXJyYXlCdWZmZXJJbmRleCA9IDA7IGFycmF5
QnVmZmVySW5kZXggPCBhcnJheUJ1ZmZlcnMuc2l6ZSgpOyBhcnJheUJ1ZmZlckluZGV4KyspIHsK
QEAgLTI2OTAsMjkgKzI2NzcsMjAgQEAgc3RkOjp1bmlxdWVfcHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZTo6QQogICAgICAgICB2aXNpdGVkLmFkZChhcnJheUJ1ZmZlcnNbYXJyYXlCdWZmZXJJbmRl
eF0uZ2V0KCkpOwogCiAgICAgICAgIGJvb2wgcmVzdWx0ID0gYXJyYXlCdWZmZXJzW2FycmF5QnVm
ZmVySW5kZXhdLT50cmFuc2ZlclRvKGNvbnRlbnRzLT5hdChhcnJheUJ1ZmZlckluZGV4KSk7Ci0g
ICAgICAgIGlmICghcmVzdWx0KSB7Ci0gICAgICAgICAgICBjb2RlID0gVmFsaWRhdGlvbkVycm9y
OwotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKCFy
ZXN1bHQpCisgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yIH07CiAgICAg
fQotICAgIHJldHVybiBjb250ZW50czsKLX0KIAotUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoRXhlY1N0YXRlJiBleGVjLCBKU1ZhbHVl
IHZhbHVlLCBTZXJpYWxpemF0aW9uRXJyb3JNb2RlIHRocm93RXhjZXB0aW9ucykKLXsKLSAgICBW
ZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4gbWVzc2FnZVBvcnRzOwotICAgIHJldHVybiBTZXJp
YWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShleGVjLCB2YWx1ZSwgbWVzc2FnZVBvcnRzLCB7IH0s
IHRocm93RXhjZXB0aW9ucyk7CisgICAgcmV0dXJuIFdURk1vdmUoY29udGVudHMpOwogfQogCi1S
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0
ZShFeGVjU3RhdGUmIGV4ZWMsIEpTVmFsdWUgdmFsdWUsIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBv
cnQ+PiYgbWVzc2FnZVBvcnRzLCBWZWN0b3I8UmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+PiYmIGFy
cmF5QnVmZmVycywgU2VyaWFsaXphdGlvbkVycm9yTW9kZSB0aHJvd0V4Y2VwdGlvbnMpCitSZWZQ
dHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShF
eGVjU3RhdGUmIGV4ZWMsIEpTVmFsdWUgdmFsdWUsIFNlcmlhbGl6YXRpb25FcnJvck1vZGUgdGhy
b3dFeGNlcHRpb25zKQogewogICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXI7CiAgICAgVmVjdG9y
PFN0cmluZz4gYmxvYlVSTHM7Ci0gICAgU2VyaWFsaXphdGlvblJldHVybkNvZGUgY29kZSA9IENs
b25lU2VyaWFsaXplcjo6c2VyaWFsaXplKCZleGVjLCB2YWx1ZSwgbWVzc2FnZVBvcnRzLCBhcnJh
eUJ1ZmZlcnMsIGJsb2JVUkxzLCBidWZmZXIpOwotCi0gICAgc3RkOjp1bmlxdWVfcHRyPEFycmF5
QnVmZmVyQ29udGVudHNBcnJheT4gYXJyYXlCdWZmZXJDb250ZW50c0FycmF5OwotICAgIGlmICgh
YXJyYXlCdWZmZXJzLmlzRW1wdHkoKSAmJiBzZXJpYWxpemF0aW9uRGlkQ29tcGxldGVTdWNjZXNz
ZnVsbHkoY29kZSkpCi0gICAgICAgIGFycmF5QnVmZmVyQ29udGVudHNBcnJheSA9IHRyYW5zZmVy
QXJyYXlCdWZmZXJzKCZleGVjLCBhcnJheUJ1ZmZlcnMsIGNvZGUpOworICAgIFZlY3RvcjxSZWZQ
dHI8TWVzc2FnZVBvcnQ+PiBkdW1teU1lc3NhZ2VQb3J0czsKKyAgICBWZWN0b3I8UmVmUHRyPEpT
Qzo6QXJyYXlCdWZmZXI+PiBkdW1teUFycmF5QnVmZmVyczsKKyAgICBhdXRvIGNvZGUgPSBDbG9u
ZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZSgmZXhlYywgdmFsdWUsIGR1bW15TWVzc2FnZVBvcnRzLCBk
dW1teUFycmF5QnVmZmVycywgYmxvYlVSTHMsIGJ1ZmZlcik7CiAKICAgICBpZiAodGhyb3dFeGNl
cHRpb25zID09IFRocm93aW5nKQogICAgICAgICBtYXliZVRocm93RXhjZXB0aW9uSWZTZXJpYWxp
emF0aW9uRmFpbGVkKCZleGVjLCBjb2RlKTsKQEAgLTI3MjAsNyArMjY5OCw2MCBAQCBSZWZQdHI8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBTZXJpYWxpemVkCiAgICAgaWYgKCFzZXJpYWxpemF0aW9u
RGlkQ29tcGxldGVTdWNjZXNzZnVsbHkoY29kZSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2VyaWFsaXplZFNjcmlwdFZhbHVlKFdURk1vdmUo
YnVmZmVyKSwgYmxvYlVSTHMsIFdURk1vdmUoYXJyYXlCdWZmZXJDb250ZW50c0FycmF5KSkpOwor
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShXVEZNb3ZlKGJ1
ZmZlciksIGJsb2JVUkxzLCBudWxscHRyKSk7Cit9CisKK0V4Y2VwdGlvbiBTZXJpYWxpemVkU2Ny
aXB0VmFsdWU6OmV4Y2VwdGlvbkZvclNlcmlhbGl6YXRpb25GYWlsdXJlKFNlcmlhbGl6YXRpb25S
ZXR1cm5Db2RlIGNvZGUpCit7CisgICAgQVNTRVJUKGNvZGUgIT0gU2VyaWFsaXphdGlvblJldHVy
bkNvZGU6OlN1Y2Nlc3NmdWxseUNvbXBsZXRlZCk7CisgICAgCisgICAgc3dpdGNoIChjb2RlKSB7
CisgICAgY2FzZSBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZTo6U3RhY2tPdmVyZmxvd0Vycm9yOgor
ICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU3RhY2tPdmVyZmxvd0Vycm9yIH07CisgICAgY2Fz
ZSBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZTo6VmFsaWRhdGlvbkVycm9yOgorICAgICAgICByZXR1
cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yIH07CisgICAgY2FzZSBTZXJpYWxpemF0aW9uUmV0dXJu
Q29kZTo6RGF0YUNsb25lRXJyb3I6CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBEQVRBX0NM
T05FX0VSUiB9OworICAgIGNhc2UgU2VyaWFsaXphdGlvblJldHVybkNvZGU6OkV4aXN0aW5nRXhj
ZXB0aW9uRXJyb3I6CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBFeGlzdGluZ0V4Y2VwdGlv
bkVycm9yIH07CisgICAgY2FzZSBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZTo6VW5zcGVjaWZpZWRF
cnJvcjoKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciB9OworICAgIGRlZmF1
bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KK30KKworRXhjZXB0aW9u
T3I8UmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3Jl
YXRlKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUsIFZlY3RvcjxKU0M6OlN0cm9uZzxK
U0M6OkpTT2JqZWN0Pj4mJiB0cmFuc2Zlckxpc3QsIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+
PiYgbWVzc2FnZVBvcnRzKQoreworICAgIFZlY3RvcjxSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4+
IGFycmF5QnVmZmVyczsKKyAgICBmb3IgKGF1dG8mIHRyYW5zZmVyYWJsZSA6IHRyYW5zZmVyTGlz
dCkgeworICAgICAgICBpZiAoUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlciA9IHRvUG9z
c2libHlTaGFyZWRBcnJheUJ1ZmZlcih0cmFuc2ZlcmFibGUuZ2V0KCkpKSB7CisgICAgICAgICAg
ICBpZiAoYXJyYXlCdWZmZXItPmlzTmV1dGVyZWQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgREFUQV9DTE9ORV9FUlIgfTsKKyAgICAgICAgICAgIGFycmF5QnVmZmVycy5h
cHBlbmQoV1RGTW92ZShhcnJheUJ1ZmZlcikpOworICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgIH0KKyAgICAgICAgaWYgKFJlZlB0cjxNZXNzYWdlUG9ydD4gcG9ydCA9IEpTTWVzc2FnZVBv
cnQ6OnRvV3JhcHBlZCh0cmFuc2ZlcmFibGUuZ2V0KCkpKSB7CisgICAgICAgICAgICAvLyBGSVhN
RTogVGhpcyBzaG91bGQgY2hlY2sgaWYgdGhlIHBvcnQgaXMgZGV0YWNoZWQgYXMgcGVyIGh0dHBz
Oi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2luZnJhc3RydWN0dXJlLmh0bWwjaXN0
cmFuc2ZlcmFibGUuCisgICAgICAgICAgICBtZXNzYWdlUG9ydHMuYXBwZW5kKFdURk1vdmUocG9y
dCkpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgREFUQV9DTE9ORV9FUlIgfTsKKyAgICB9CisKKyAgICBWZWN0b3I8dWludDhf
dD4gYnVmZmVyOworICAgIFZlY3RvcjxTdHJpbmc+IGJsb2JVUkxzOworICAgIGF1dG8gY29kZSA9
IENsb25lU2VyaWFsaXplcjo6c2VyaWFsaXplKCZzdGF0ZSwgdmFsdWUsIG1lc3NhZ2VQb3J0cywg
YXJyYXlCdWZmZXJzLCBibG9iVVJMcywgYnVmZmVyKTsKKworICAgIGlmIChjb2RlICE9IFNlcmlh
bGl6YXRpb25SZXR1cm5Db2RlOjpTdWNjZXNzZnVsbHlDb21wbGV0ZWQpCisgICAgICAgIHJldHVy
biBleGNlcHRpb25Gb3JTZXJpYWxpemF0aW9uRmFpbHVyZShjb2RlKTsKKworICAgIGF1dG8gYXJy
YXlCdWZmZXJDb250ZW50c0FycmF5ID0gdHJhbnNmZXJBcnJheUJ1ZmZlcnMoYXJyYXlCdWZmZXJz
KTsKKyAgICBpZiAoYXJyYXlCdWZmZXJDb250ZW50c0FycmF5Lmhhc0V4Y2VwdGlvbigpKQorICAg
ICAgICByZXR1cm4gYXJyYXlCdWZmZXJDb250ZW50c0FycmF5LnJlbGVhc2VFeGNlcHRpb24oKTsK
KworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShXVEZNb3Zl
KGJ1ZmZlciksIGJsb2JVUkxzLCBhcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkucmVsZWFzZVJldHVy
blZhbHVlKCkpKTsKIH0KIAogUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlOjpjcmVhdGUoU3RyaW5nVmlldyBzdHJpbmcpCkBAIC0yODA0LDIyICsyODM1
LDIyIEBAIHZvaWQgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjptYXliZVRocm93RXgKICAgICBWTSYg
dm0gPSBleGVjLT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKIAotICAgIGlmIChjb2RlID09IFN1Y2Nlc3NmdWxseUNvbXBsZXRlZCkKKyAgICBpZiAoY29k
ZSA9PSBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZTo6U3VjY2Vzc2Z1bGx5Q29tcGxldGVkKQogICAg
ICAgICByZXR1cm47CiAgICAgCiAgICAgc3dpdGNoIChjb2RlKSB7Ci0gICAgY2FzZSBTdGFja092
ZXJmbG93RXJyb3I6CisgICAgY2FzZSBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZTo6U3RhY2tPdmVy
Zmxvd0Vycm9yOgogICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlU3Rh
Y2tPdmVyZmxvd0Vycm9yKGV4ZWMpKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBWYWxpZGF0
aW9uRXJyb3I6CisgICAgY2FzZSBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZTo6VmFsaWRhdGlvbkVy
cm9yOgogICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJV
bmFibGUgdG8gZGVzZXJpYWxpemUgZGF0YS4iKSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
RGF0YUNsb25lRXJyb3I6CisgICAgY2FzZSBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZTo6RGF0YUNs
b25lRXJyb3I6CiAgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBEQVRBX0NMT05FX0VSUik7
CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXhpc3RpbmdFeGNlcHRpb25FcnJvcjoKKyAgICBj
YXNlIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlOjpFeGlzdGluZ0V4Y2VwdGlvbkVycm9yOgogICAg
ICAgICBicmVhazsKLSAgICBjYXNlIFVuc3BlY2lmaWVkRXJyb3I6CisgICAgY2FzZSBTZXJpYWxp
emF0aW9uUmV0dXJuQ29kZTo6VW5zcGVjaWZpZWRFcnJvcjoKICAgICAgICAgYnJlYWs7CiAgICAg
ZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0yODI4LDcgKzI4NTks
NyBAQCB2b2lkIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6bWF5YmVUaHJvd0V4CiAKIGJvb2wgU2Vy
aWFsaXplZFNjcmlwdFZhbHVlOjpzZXJpYWxpemF0aW9uRGlkQ29tcGxldGVTdWNjZXNzZnVsbHko
U2VyaWFsaXphdGlvblJldHVybkNvZGUgY29kZSkKIHsKLSAgICByZXR1cm4gKGNvZGUgPT0gU3Vj
Y2Vzc2Z1bGx5Q29tcGxldGVkKTsKKyAgICByZXR1cm4gKGNvZGUgPT0gU2VyaWFsaXphdGlvblJl
dHVybkNvZGU6OlN1Y2Nlc3NmdWxseUNvbXBsZXRlZCk7CiB9CiAKIHVpbnQzMl90IFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZTo6d2lyZUZvcm1hdFZlcnNpb24oKQpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgJKHJldmlzaW9uIDIw
OTE4MykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAKICNwcmFnbWEgb25jZQogCisj
aW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKICNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5o
PgogI2luY2x1ZGUgPGhlYXAvU3Ryb25nLmg+CiAjaW5jbHVkZSA8cnVudGltZS9BcnJheUJ1ZmZl
ci5oPgpAQCAtNDIsMjUgKzQzLDE4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSURC
VmFsdWU7CiBjbGFzcyBNZXNzYWdlUG9ydDsKLSAKLWVudW0gU2VyaWFsaXphdGlvblJldHVybkNv
ZGUgewotICAgIFN1Y2Nlc3NmdWxseUNvbXBsZXRlZCwKLSAgICBTdGFja092ZXJmbG93RXJyb3Is
Ci0gICAgSW50ZXJydXB0ZWRFeGVjdXRpb25FcnJvciwKLSAgICBWYWxpZGF0aW9uRXJyb3IsCi0g
ICAgRXhpc3RpbmdFeGNlcHRpb25FcnJvciwKLSAgICBEYXRhQ2xvbmVFcnJvciwKLSAgICBVbnNw
ZWNpZmllZEVycm9yCi19OwotICAgIAorY2xhc3MgU2hhcmVkQnVmZmVyOworZW51bSBjbGFzcyBT
ZXJpYWxpemF0aW9uUmV0dXJuQ29kZTsKKwogZW51bSBTZXJpYWxpemF0aW9uRXJyb3JNb2RlIHsg
Tm9uVGhyb3dpbmcsIFRocm93aW5nIH07CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK3VzaW5nIEFy
cmF5QnVmZmVyQ29udGVudHNBcnJheSA9IFZlY3RvcjxKU0M6OkFycmF5QnVmZmVyQ29udGVudHM+
OwogCiBjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWUgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNv
dW50ZWQ8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB7CiBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGNyZWF0ZShKU0M6OkV4ZWNT
dGF0ZSYsIEpTQzo6SlNWYWx1ZSwgU2VyaWFsaXphdGlvbkVycm9yTW9kZSA9IFRocm93aW5nKTsK
LSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4g
Y3JlYXRlKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlLCBWZWN0b3I8UmVmUHRyPE1lc3Nh
Z2VQb3J0Pj4mLCBWZWN0b3I8UmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+PiYmLCBTZXJpYWxpemF0
aW9uRXJyb3JNb2RlID0gVGhyb3dpbmcpOworCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEV4
Y2VwdGlvbk9yPFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+PiBjcmVhdGUoSlNDOjpFeGVjU3Rh
dGUmLCBKU0M6OkpTVmFsdWUsIFZlY3RvcjxKU0M6OlN0cm9uZzxKU0M6OkpTT2JqZWN0Pj4mJiwg
VmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+Jik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gY3JlYXRlKFN0cmluZ1ZpZXcpOwogICAg
IHN0YXRpYyBSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBhZG9wdChWZWN0b3I8dWludDhfdD4m
JiBidWZmZXIpCkBAIC0xMDAsMTAgKzk0LDExIEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9S
VCB+U2VyaWFsaXplZFNjcmlwdFZhbHVlKCk7CiAKIHByaXZhdGU6Ci0gICAgdHlwZWRlZiBWZWN0
b3I8SlNDOjpBcnJheUJ1ZmZlckNvbnRlbnRzPiBBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk7CiAg
ICAgc3RhdGljIHZvaWQgbWF5YmVUaHJvd0V4Y2VwdGlvbklmU2VyaWFsaXphdGlvbkZhaWxlZChK
U0M6OkV4ZWNTdGF0ZSosIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlKTsKICAgICBzdGF0aWMgYm9v
bCBzZXJpYWxpemF0aW9uRGlkQ29tcGxldGVTdWNjZXNzZnVsbHkoU2VyaWFsaXphdGlvblJldHVy
bkNvZGUpOwotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QXJyYXlCdWZmZXJDb250ZW50c0Fy
cmF5PiB0cmFuc2ZlckFycmF5QnVmZmVycyhKU0M6OkV4ZWNTdGF0ZSosIFZlY3RvcjxSZWZQdHI8
SlNDOjpBcnJheUJ1ZmZlcj4+JiwgU2VyaWFsaXphdGlvblJldHVybkNvZGUmKTsKKyAgICBzdGF0
aWMgRXhjZXB0aW9uIGV4Y2VwdGlvbkZvclNlcmlhbGl6YXRpb25GYWlsdXJlKFNlcmlhbGl6YXRp
b25SZXR1cm5Db2RlKTsKKworICAgIHN0YXRpYyBFeGNlcHRpb25PcjxzdGQ6OnVuaXF1ZV9wdHI8
QXJyYXlCdWZmZXJDb250ZW50c0FycmF5Pj4gdHJhbnNmZXJBcnJheUJ1ZmZlcnMoY29uc3QgVmVj
dG9yPFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPj4mKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZShWZWN0b3I8dW5zaWduZWQgY2hhcj4mJik7CiAgICAgU2VyaWFs
aXplZFNjcmlwdFZhbHVlKFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYmLCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgYmxvYlVSTHMsIHN0ZDo6dW5pcXVlX3B0cjxBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+
JiYpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
LnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvci5wbQkocmV2aXNpb24gMjA5MTgzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtCSh3b3JraW5nIGNvcHkpCkBAIC01OTcsNiArNTk3LDcg
QEAgc3ViIElzUmVmUHRyVHlwZQogICAgIHJldHVybiAwIGlmICRvYmplY3QtPklzU3RyaW5nVHlw
ZSgkdHlwZSk7CiAgICAgcmV0dXJuIDAgaWYgJHR5cGUtPmlzVW5pb247CiAgICAgcmV0dXJuIDAg
aWYgJHR5cGUtPm5hbWUgZXEgImFueSI7CisgICAgcmV0dXJuIDAgaWYgJHR5cGUtPm5hbWUgZXEg
Im9iamVjdCI7CiAKICAgICByZXR1cm4gMTsKIH0KQEAgLTg2Miw2ICs4NjMsNyBAQCBzdWIgSXNC
dWlsdGluVHlwZQogICAgIHJldHVybiAxIGlmICRvYmplY3QtPklzVHlwZWRBcnJheVR5cGUoJHR5
cGUpOwogICAgIHJldHVybiAxIGlmICR0eXBlLT5pc1VuaW9uOwogICAgIHJldHVybiAxIGlmICR0
eXBlLT5uYW1lIGVxICJhbnkiOworICAgIHJldHVybiAxIGlmICR0eXBlLT5uYW1lIGVxICJvYmpl
Y3QiOwogICAgIHJldHVybiAxIGlmICR0eXBlLT5uYW1lIGVxICJCdWZmZXJTb3VyY2UiOwogICAg
IHJldHVybiAxIGlmICR0eXBlLT5uYW1lIGVxICJQcm9taXNlIjsKICAgICByZXR1cm4gMSBpZiAk
dHlwZS0+bmFtZSBlcSAiWFBhdGhOU1Jlc29sdmVyIjsgICAgCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkocmV2aXNpb24g
MjA5MTg0KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
SlMucG0JKHdvcmtpbmcgY29weSkKQEAgLTI3OSw2ICsyNzksNyBAQCBzdWIgQWRkVG9JbmNsdWRl
c0ZvcklETFR5cGUKICAgICByZXR1cm4gaWYgJGNvZGVHZW5lcmF0b3ItPklzU3RyaW5nVHlwZSgk
dHlwZSk7CiAgICAgcmV0dXJuIGlmICRjb2RlR2VuZXJhdG9yLT5Jc1R5cGVkQXJyYXlUeXBlKCR0
eXBlKTsKICAgICByZXR1cm4gaWYgJHR5cGUtPm5hbWUgZXEgImFueSI7CisgICAgcmV0dXJuIGlm
ICR0eXBlLT5uYW1lIGVxICJvYmplY3QiOwogCiAgICAgaWYgKCR0eXBlLT5pc1VuaW9uKSB7CiAg
ICAgICAgIEFkZFRvSW5jbHVkZXMoIjx3dGYvVmFyaWFudC5oPiIsICRpbmNsdWRlc1JlZiwgJGNv
bmRpdGlvbmFsKTsKQEAgLTUwMzYsNiArNTAzNyw3IEBAIG15ICVuYXRpdmVUeXBlID0gKAogICAg
ICJTZXJpYWxpemVkU2NyaXB0VmFsdWUiID0+ICJSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVl
PiIsCiAgICAgIlhQYXRoTlNSZXNvbHZlciIgPT4gIlJlZlB0cjxYUGF0aE5TUmVzb2x2ZXI+IiwK
ICAgICAiYW55IiA9PiAiSlNDOjpKU1ZhbHVlIiwKKyAgICAib2JqZWN0IiA9PiAiSlNDOjpTdHJv
bmc8SlNDOjpKU09iamVjdD4iLAogICAgICJib29sZWFuIiA9PiAiYm9vbCIsCiAgICAgImJ5dGUi
ID0+ICJpbnQ4X3QiLAogICAgICJkb3VibGUiID0+ICJkb3VibGUiLApAQCAtNTEyNCw2ICs1MTI2
LDcgQEAgc3ViIEdldEJhc2VJRExUeXBlCiAgICAgICAgICJET01TdHJpbmciID0+ICJJRExET01T
dHJpbmciLAogICAgICAgICAiQnl0ZVN0cmluZyIgPT4gIklETEJ5dGVTdHJpbmciLAogICAgICAg
ICAiVVNWU3RyaW5nIiA9PiAiSURMVVNWU3RyaW5nIiwKKyAgICAgICAgIm9iamVjdCIgPT4gIklE
TE9iamVjdCIsCiAgICAgICAgIAogICAgICAgICAjIE5vbi1XZWJJREwgZXh0ZW5zaW9ucwogICAg
ICAgICAiRGF0ZSIgPT4gIklETERhdGUiLApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbAkocmV2aXNpb24gMjA5MTgzKQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCSh3b3JraW5nIGNv
cHkpCkBAIC0yMzMsNiArMjMzLDcgQEAgZW51bSBUZXN0Q29uZmlkZW5jZSB7ICJoaWdoIiwgImtp
bmRhLWxvdwogICAgIHZvaWQgICAgbWV0aG9kV2l0aE9wdGlvbmFsQm9vbGVhbihvcHRpb25hbCBi
b29sZWFuIGIpOwogICAgIHZvaWQgICAgbWV0aG9kV2l0aE9wdGlvbmFsQm9vbGVhbklzRmFsc2Uo
b3B0aW9uYWwgYm9vbGVhbiBiID0gZmFsc2UpOwogICAgIHZvaWQgICAgbWV0aG9kV2l0aE9wdGlv
bmFsQW55KG9wdGlvbmFsIGFueSBhKTsKKyAgICB2b2lkICAgIG1ldGhvZFdpdGhPcHRpb25hbE9i
amVjdChvcHRpb25hbCBvYmplY3QgYSk7CiAgICAgdm9pZCAgICBtZXRob2RXaXRoT3B0aW9uYWxO
dWxsYWJsZVdyYXBwZXIob3B0aW9uYWwgVGVzdE9iaj8gb2JqKTsKICAgICB2b2lkICAgIG1ldGhv
ZFdpdGhPcHRpb25hbE51bGxhYmxlV3JhcHBlcklzTnVsbChvcHRpb25hbCBUZXN0T2JqPyBvYmog
PSBudWxsKTsKICAgICB2b2lkICAgIG1ldGhvZFdpdGhPcHRpb25hbFhQYXRoTlNSZXNvbHZlcihv
cHRpb25hbCBYUGF0aE5TUmVzb2x2ZXI/IHJlc29sdmVyKTsKQEAgLTI3Miw2ICsyNzMsNyBAQCBl
bnVtIFRlc3RDb25maWRlbmNlIHsgImhpZ2giLCAia2luZGEtbG93CiAgICAgW0NhY2hlZEF0dHJp
YnV0ZV0gcmVhZG9ubHkgYXR0cmlidXRlIGFueSBjYWNoZWRBdHRyaWJ1dGUyOwogICAgIAogICAg
IGF0dHJpYnV0ZSBhbnkgYW55QXR0cmlidXRlOworICAgIGF0dHJpYnV0ZSBvYmplY3Qgb2JqZWN0
QXR0cmlidXRlOwogCiAgICAgLy8gT3ZlcmxvYWRzCiAgICAgdm9pZCAgICBvdmVybG9hZGVkTWV0
aG9kKFRlc3RPYmo/IG9iakFyZywgRE9NU3RyaW5nIHN0ckFyZyk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAko
cmV2aXNpb24gMjA5MTg0KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE9iai5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMTUsNiArMTAxNSw3IEBAIEpT
Qzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3QKIEpTQzo6RW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRp
b25hbEJvb2xlYW4oSlNDOjpFeGVjU3RhdGUqKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEJvb2xl
YW5Jc0ZhbHNlKEpTQzo6RXhlY1N0YXRlKik7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBbnkoSlND
OjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbE9iamVjdChKU0M6OkV4ZWNTdGF0
ZSopOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsTnVsbGFibGVXcmFwcGVyKEpTQzo6RXhlY1N0YXRl
Kik7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxOdWxsYWJsZVdyYXBwZXJJc051bGwoSlNDOjpFeGVj
U3RhdGUqKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFhQYXRoTlNSZXNvbHZlcihKU0M6OkV4ZWNT
dGF0ZSopOwpAQCAtMTI0MCw2ICsxMjQxLDggQEAgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpDYWNoZWRBdHRyaQogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDYWNoZWRBdHRyaWJ1
dGUyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5h
bWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpBbnlBdHRyaWJ1dGUoSlNDOjpFeGVj
U3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiBib29sIHNl
dEpTVGVzdE9iakFueUF0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFs
dWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpP
YmplY3RBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6
OlByb3BlcnR5TmFtZSk7Citib29sIHNldEpTVGVzdE9iak9iamVjdEF0dHJpYnV0ZShKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb250ZW50RG9jdW1lbnQoSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9iak11dGFibGVQb2ludChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIGJvb2wgc2V0SlNUZXN0T2JqTXV0YWJsZVBv
aW50KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSk7CkBAIC0xNTQwLDYgKzE1NDMsNyBAQCBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUg
SlNUZXN0T2JqUHJvCiAgICAgeyAiY2FjaGVkQXR0cmlidXRlMSIsIFJlYWRPbmx5IHwgQ3VzdG9t
QWNjZXNzb3IsIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNs
b3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqQ2FjaGVkQXR0cmlidXRlMSksIChpbnRwdHJfdCkg
c3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKICAgICB7
ICJjYWNoZWRBdHRyaWJ1dGUyIiwgUmVhZE9ubHkgfCBDdXN0b21BY2Nlc3NvciwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihq
c1Rlc3RPYmpDYWNoZWRBdHRyaWJ1dGUyKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9w
ZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAogICAgIHsgImFueUF0dHJpYnV0ZSIsIEN1
c3RvbUFjY2Vzc29yLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9iakFueUF0dHJpYnV0ZSksIChpbnRwdHJfdCkg
c3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdE9iakFu
eUF0dHJpYnV0ZSkgfSB9LAorICAgIHsgIm9iamVjdEF0dHJpYnV0ZSIsIEN1c3RvbUFjY2Vzc29y
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRW
YWx1ZUZ1bmM+KGpzVGVzdE9iak9iamVjdEF0dHJpYnV0ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdE9iak9iamVjdEF0dHJp
YnV0ZSkgfSB9LAogICAgIHsgImNvbnRlbnREb2N1bWVudCIsIFJlYWRPbmx5IHwgQ3VzdG9tQWNj
ZXNzb3IsIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6
OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqQ29udGVudERvY3VtZW50KSwgKGludHB0cl90KSBzdGF0
aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAogICAgIHsgIm11
dGFibGVQb2ludCIsIEN1c3RvbUFjY2Vzc29yLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9iak11dGFibGVQb2lu
dCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+
KHNldEpTVGVzdE9iak11dGFibGVQb2ludCkgfSB9LAogICAgIHsgImltbXV0YWJsZVBvaW50Iiwg
Q3VzdG9tQWNjZXNzb3IsIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqSW1tdXRhYmxlUG9pbnQpLCAoaW50cHRy
X3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RP
YmpJbW11dGFibGVQb2ludCkgfSB9LApAQCAtMTY1Miw2ICsxNjU2LDcgQEAgc3RhdGljIGNvbnN0
IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE9ialBybwogICAgIHsgIm1ldGhvZFdpdGhPcHRpb25hbEJv
b2xlYW4iLCBKU0M6OkZ1bmN0aW9uLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9w
dGlvbmFsQm9vbGVhbiksIChpbnRwdHJfdCkgKDApIH0gfSwKICAgICB7ICJtZXRob2RXaXRoT3B0
aW9uYWxCb29sZWFuSXNGYWxzZSIsIEpTQzo6RnVuY3Rpb24sIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RXaXRoT3B0aW9uYWxCb29sZWFuSXNGYWxzZSksIChpbnRwdHJfdCkgKDApIH0gfSwK
ICAgICB7ICJtZXRob2RXaXRoT3B0aW9uYWxBbnkiLCBKU0M6OkZ1bmN0aW9uLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQW55KSwgKGludHB0cl90KSAoMCkgfSB9LAor
ICAgIHsgIm1ldGhvZFdpdGhPcHRpb25hbE9iamVjdCIsIEpTQzo6RnVuY3Rpb24sIE5vSW50cmlu
c2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxPYmplY3QpLCAoaW50cHRyX3QpICgwKSB9
IH0sCiAgICAgeyAibWV0aG9kV2l0aE9wdGlvbmFsTnVsbGFibGVXcmFwcGVyIiwgSlNDOjpGdW5j
dGlvbiwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9u
Pihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbE51bGxhYmxlV3Jh
cHBlciksIChpbnRwdHJfdCkgKDApIH0gfSwKICAgICB7ICJtZXRob2RXaXRoT3B0aW9uYWxOdWxs
YWJsZVdyYXBwZXJJc051bGwiLCBKU0M6OkZ1bmN0aW9uLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aE9wdGlvbmFsTnVsbGFibGVXcmFwcGVySXNOdWxsKSwgKGludHB0cl90KSAoMCkg
fSB9LAogICAgIHsgIm1ldGhvZFdpdGhPcHRpb25hbFhQYXRoTlNSZXNvbHZlciIsIEpTQzo6RnVu
Y3Rpb24sIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlv
bj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxYUGF0aE5TUmVz
b2x2ZXIpLCAoaW50cHRyX3QpICgwKSB9IH0sCkBAIC0zMDI1LDYgKzMwMzAsMjIgQEAgc3RhdGlj
IGlubGluZSBKU1ZhbHVlIGpzVGVzdE9iakFueUF0dHJpYgogICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKK3N0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RPYmpPYmplY3RBdHRyaWJ1dGVHZXR0ZXIo
RXhlY1N0YXRlJiwgSlNUZXN0T2JqJiwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSk7CisKK0VuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9iak9iamVjdEF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKK3sKKyAgICByZXR1cm4gQmluZGlu
Z0NhbGxlcjxKU1Rlc3RPYmo+OjphdHRyaWJ1dGU8anNUZXN0T2JqT2JqZWN0QXR0cmlidXRlR2V0
dGVyPihzdGF0ZSwgdGhpc1ZhbHVlLCAib2JqZWN0QXR0cmlidXRlIik7Cit9CisKK3N0YXRpYyBp
bmxpbmUgSlNWYWx1ZSBqc1Rlc3RPYmpPYmplY3RBdHRyaWJ1dGVHZXR0ZXIoRXhlY1N0YXRlJiBz
dGF0ZSwgSlNUZXN0T2JqJiB0aGlzT2JqZWN0LCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQorewor
ICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKKyAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwor
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKKyAgICBKU1ZhbHVlIHJlc3Vs
dCA9IHRvSlM8SURMT2JqZWN0PihpbXBsLm9iamVjdEF0dHJpYnV0ZSgpKTsKKyAgICByZXR1cm4g
cmVzdWx0OworfQorCiBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0T2JqQ29udGVudERvY3Vt
ZW50R2V0dGVyKEV4ZWNTdGF0ZSYsIEpTVGVzdE9iaiYsIFRocm93U2NvcGUmIHRocm93U2NvcGUp
OwogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb250ZW50RG9jdW1lbnQoRXhlY1N0YXRlKiBz
dGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCkBAIC00NjIzLDYg
KzQ2NDQsMjUgQEAgc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdE9iakFueUF0dHJpYgogfQog
CiAKK3N0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RPYmpPYmplY3RBdHRyaWJ1dGVGdW5jdGlv
bihFeGVjU3RhdGUmLCBKU1Rlc3RPYmomLCBKU1ZhbHVlLCBUaHJvd1Njb3BlJik7CisKK2Jvb2wg
c2V0SlNUZXN0T2JqT2JqZWN0QXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQoreworICAgIHJldHVy
biBCaW5kaW5nQ2FsbGVyPEpTVGVzdE9iaj46OnNldEF0dHJpYnV0ZTxzZXRKU1Rlc3RPYmpPYmpl
Y3RBdHRyaWJ1dGVGdW5jdGlvbj4oc3RhdGUsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAib2Jq
ZWN0QXR0cmlidXRlIik7Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RPYmpPYmpl
Y3RBdHRyaWJ1dGVGdW5jdGlvbihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RPYmomIHRoaXNPYmpl
Y3QsIEpTVmFsdWUgdmFsdWUsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCit7CisgICAgVU5VU0VE
X1BBUkFNKHN0YXRlKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CisgICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOworICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252
ZXJ0PElETE9iamVjdD4oc3RhdGUsIHZhbHVlKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIGZhbHNlKTsKKyAgICBpbXBsLnNldE9iamVjdEF0dHJpYnV0ZShXVEZNb3ZlKG5h
dGl2ZVZhbHVlKSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKKwogc3RhdGljIGlubGluZSBib29s
IHNldEpTVGVzdE9iak11dGFibGVQb2ludEZ1bmN0aW9uKEV4ZWNTdGF0ZSYsIEpTVGVzdE9iaiYs
IEpTVmFsdWUsIFRocm93U2NvcGUmKTsKIAogYm9vbCBzZXRKU1Rlc3RPYmpNdXRhYmxlUG9pbnQo
RXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUpCkBAIC02NDMzLDYgKzY0NzMsMjQgQEAgc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CiB9CiAKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbE9iamVjdENhbGxlcihKU0M6OkV4
ZWNTdGF0ZSosIEpTVGVzdE9iaiosIEpTQzo6VGhyb3dTY29wZSYpOworCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlv
bmFsT2JqZWN0KEV4ZWNTdGF0ZSogc3RhdGUpCit7CisgICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8
SlNUZXN0T2JqPjo6Y2FsbE9wZXJhdGlvbjxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhv
ZFdpdGhPcHRpb25hbE9iamVjdENhbGxlcj4oc3RhdGUsICJtZXRob2RXaXRoT3B0aW9uYWxPYmpl
Y3QiKTsKK30KKworc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsT2JqZWN0Q2FsbGVyKEpTQzo6RXhlY1N0
YXRlKiBzdGF0ZSwgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93
U2NvcGUpCit7CisgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBVTlVTRURfUEFSQU0odGhy
b3dTY29wZSk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKKyAgICBh
dXRvIGEgPSBzdGF0ZS0+YXJndW1lbnQoMCkuaXNVbmRlZmluZWQoKSA/IHN0ZDo6b3B0aW9uYWw8
SlNDOjpKU09iamVjdCo+KCkgOiBjb252ZXJ0PElETE9iamVjdD4oKnN0YXRlLCBzdGF0ZS0+dW5j
aGVja2VkQXJndW1lbnQoMCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7CisgICAgaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxPYmplY3QoV1RG
TW92ZShhKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKK30K
Kwogc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsTnVsbGFibGVXcmFwcGVyQ2FsbGVyKEpTQzo6RXhlY1N0
YXRlKiwgSlNUZXN0T2JqKiwgSlNDOjpUaHJvd1Njb3BlJik7CiAKIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxO
dWxsYWJsZVdyYXBwZXIoRXhlY1N0YXRlKiBzdGF0ZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Rv
bS9FeGNlcHRpb25Db2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0V4Y2Vw
dGlvbkNvZGUuaAkocmV2aXNpb24gMjA5MTgzKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0V4Y2Vw
dGlvbkNvZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksOSBAQCB1c2luZyBFeGNlcHRp
b25Db2RlID0gaW50OwogLy8gU29tZSBvZiB0aGVzZSBhcmUgY29uc2lkZXJlZCBoaXN0b3JpY2Fs
IHNpbmNlIHRoZXkgaGF2ZSBiZWVuCiAvLyBjaGFuZ2VkIG9yIHJlbW92ZWQgZnJvbSB0aGUgc3Bl
Y2lmaWNhdGlvbnMuCiBlbnVtIHsKKyAgICAvLyBVc2VkIHRvIGluZGljYXRlIHRvIHRoZSBiaW5k
aW5ncyB0aGF0IGEgSlMgZXhjZXB0aW9uIHdhcyB0aHJvd24gYmVsb3cgYW5kIGl0IHNob3VsZCBi
ZSBwcm9wb2dhdGVkLgorICAgIEV4aXN0aW5nRXhjZXB0aW9uRXJyb3IgPSAwLCAKKwogICAgIElO
REVYX1NJWkVfRVJSID0gMSwKICAgICBISUVSQVJDSFlfUkVRVUVTVF9FUlIgPSAzLAogICAgIFdS
T05HX0RPQ1VNRU5UX0VSUiA9IDQsCkBAIC03Miw2ICs3NSw5IEBAIGVudW0gewogICAgIE9wZXJh
dGlvbkVycm9yLAogICAgIE5vdEFsbG93ZWRFcnJvciwKIAorICAgIC8vIE5vbi1zdGFuZGFyZCBl
cnJvcnMKKyAgICBTdGFja092ZXJmbG93RXJyb3IsCisKICAgICAvLyBXZWJJREwgZXhjZXB0aW9u
IHR5cGVzLCBoYW5kbGVkIGJ5IHRoZSBiaW5kaW5nIGxheWVyLgogICAgIC8vIEZJWE1FOiBBZGQg
R2VuZXJhbEVycm9yLCBFdmFsRXJyb3IsIGV0Yy4gd2hlbiBpbXBsZW1lbnRlZCBpbiB0aGUgYmlu
ZGluZ3MuCiAgICAgVHlwZUVycm9yID0gMTA1LApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL01l
c3NhZ2VQb3J0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBv
cnQuY3BwCShyZXZpc2lvbiAyMDkxODMpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBv
cnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MSw4ICs1MSwxMyBAQCBNZXNzYWdlUG9ydDo6fk1l
c3NhZ2VQb3J0KCkKICAgICAgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5kZXN0cm95ZWRN
ZXNzYWdlUG9ydCgqdGhpcyk7CiB9CiAKLUV4Y2VwdGlvbk9yPHZvaWQ+IE1lc3NhZ2VQb3J0Ojpw
b3N0TWVzc2FnZShSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmIG1lc3NhZ2UsIFZlY3Rv
cjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYmIHBvcnRzKQorRXhjZXB0aW9uT3I8dm9pZD4gTWVzc2Fn
ZVBvcnQ6OnBvc3RNZXNzYWdlKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIG1l
c3NhZ2VWYWx1ZSwgVmVjdG9yPEpTQzo6U3Ryb25nPEpTQzo6SlNPYmplY3Q+PiYmIHRyYW5zZmVy
KQogeworICAgIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiBwb3J0czsKKyAgICBhdXRvIG1l
c3NhZ2UgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShzdGF0ZSwgbWVzc2FnZVZhbHVl
LCBXVEZNb3ZlKHRyYW5zZmVyKSwgcG9ydHMpOworICAgIGlmIChtZXNzYWdlLmhhc0V4Y2VwdGlv
bigpKQorICAgICAgICByZXR1cm4gbWVzc2FnZS5yZWxlYXNlRXhjZXB0aW9uKCk7CisKICAgICBp
ZiAoIWlzRW50YW5nbGVkKCkpCiAgICAgICAgIHJldHVybiB7IH07CiAgICAgQVNTRVJUKG1fc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCk7CkBAIC02OSw3ICs3NCw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+
IE1lc3NhZ2VQb3J0Ojpwb3N0TWVzc2EKICAgICAgICAgICAgIHJldHVybiBkaXNlbnRhbmdsZVJl
c3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7CiAgICAgICAgIGNoYW5uZWxzID0gZGlzZW50YW5nbGVS
ZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCk7CiAgICAgfQotICAgIG1fZW50YW5nbGVkQ2hhbm5l
bC0+cG9zdE1lc3NhZ2VUb1JlbW90ZShXVEZNb3ZlKG1lc3NhZ2UpLCBXVEZNb3ZlKGNoYW5uZWxz
KSk7CisgICAgbV9lbnRhbmdsZWRDaGFubmVsLT5wb3N0TWVzc2FnZVRvUmVtb3RlKG1lc3NhZ2Uu
cmVsZWFzZVJldHVyblZhbHVlKCksIFdURk1vdmUoY2hhbm5lbHMpKTsKICAgICByZXR1cm4geyB9
OwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuaAkocmV2aXNpb24gMjA5MTgzKQor
KysgU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmgJKHdvcmtpbmcgY29weSkKQEAgLTMw
LDYgKzMwLDEyIEBACiAjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKICNpbmNsdWRlICJNZXNzYWdl
UG9ydENoYW5uZWwuaCIKIAorbmFtZXNwYWNlIEpTQyB7CitjbGFzcyBFeGVjU3RhdGU7CitjbGFz
cyBKU09iamVjdDsKK2NsYXNzIEpTVmFsdWU7Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgRnJhbWU7CkBAIC0zOSw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPE1l
c3NhZ2VQb3J0PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZXNzYWdlUG9ydChzY3JpcHRFeGVjdXRp
b25Db250ZXh0KSk7IH0KICAgICB2aXJ0dWFsIH5NZXNzYWdlUG9ydCgpOwogCi0gICAgRXhjZXB0
aW9uT3I8dm9pZD4gcG9zdE1lc3NhZ2UoUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiBt
ZXNzYWdlLCBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4mJik7CisgICAgRXhjZXB0aW9uT3I8
dm9pZD4gcG9zdE1lc3NhZ2UoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUgbWVzc2FnZSwg
VmVjdG9yPEpTQzo6U3Ryb25nPEpTQzo6SlNPYmplY3Q+PiYmKTsKIAogICAgIHZvaWQgc3RhcnQo
KTsKICAgICB2b2lkIGNsb3NlKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBv
cnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5pZGwJ
KHJldmlzaW9uIDIwOTE4MykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5pZGwJ
KHdvcmtpbmcgY29weSkKQEAgLTMxLDEwICszMSwxMCBAQAogICAgIEdlbmVyYXRlSXNSZWFjaGFi
bGU9SW1wbCwKICAgICBKU0N1c3RvbU1hcmtGdW5jdGlvbiwKIF0gaW50ZXJmYWNlIE1lc3NhZ2VQ
b3J0IDogRXZlbnRUYXJnZXQgewotICAgIFtDdXN0b20sIE1heVRocm93RXhjZXB0aW9uXSB2b2lk
IHBvc3RNZXNzYWdlKGFueSBtZXNzYWdlLCBvcHRpb25hbCBBcnJheSBtZXNzYWdlUG9ydHMpOwot
CisgICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlLCBNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBwb3N0
TWVzc2FnZShhbnkgbWVzc2FnZSwgb3B0aW9uYWwgc2VxdWVuY2U8b2JqZWN0PiB0cmFuc2ZlciA9
IFtdKTsKICAgICB2b2lkIHN0YXJ0KCk7CiAgICAgdm9pZCBjbG9zZSgpOwogCisgICAgLy8gZXZl
bnQgaGFuZGxlcnMKICAgICBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9ubWVzc2FnZTsKIH07Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCShyZXZpc2lvbiAyMDkxODMpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNiw2ICsx
MTYsNyBAQAogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVy
RGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgorI2luY2x1ZGUgPHd0Zi9WYXJpYW50
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKICNpZiBFTkFCTEUoVVNFUl9N
RVNTQUdFX0hBTkRMRVJTKQpAQCAtOTE5LDEyICs5MjAsMTIgQEAgRXhjZXB0aW9uT3I8U3RvcmFn
ZSo+IERPTVdpbmRvdzo6bG9jYWxTdAogICAgIHJldHVybiBtX2xvY2FsU3RvcmFnZS5nZXQoKTsK
IH0KIAotRXhjZXB0aW9uT3I8dm9pZD4gRE9NV2luZG93Ojpwb3N0TWVzc2FnZShSZWY8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiYmIG1lc3NhZ2UsIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYm
IHBvcnRzLCBjb25zdCBTdHJpbmcmIHRhcmdldE9yaWdpbiwgRE9NV2luZG93JiBzb3VyY2UpCitF
eGNlcHRpb25Pcjx2b2lkPiBET01XaW5kb3c6OnBvc3RNZXNzYWdlKEpTQzo6RXhlY1N0YXRlJiBz
dGF0ZSwgRE9NV2luZG93JiBjYWxsZXJXaW5kb3csIEpTQzo6SlNWYWx1ZSBtZXNzYWdlVmFsdWUs
IGNvbnN0IFN0cmluZyYgdGFyZ2V0T3JpZ2luLCBWZWN0b3I8SlNDOjpTdHJvbmc8SlNDOjpKU09i
amVjdD4+JiYgdHJhbnNmZXIpCiB7CiAgICAgaWYgKCFpc0N1cnJlbnRseURpc3BsYXllZEluRnJh
bWUoKSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIERvY3VtZW50KiBzb3VyY2VEb2N1bWVu
dCA9IHNvdXJjZS5kb2N1bWVudCgpOworICAgIERvY3VtZW50KiBzb3VyY2VEb2N1bWVudCA9IGNh
bGxlcldpbmRvdy5kb2N1bWVudCgpOwogCiAgICAgLy8gQ29tcHV0ZSB0aGUgdGFyZ2V0IG9yaWdp
bi4gIFdlIG5lZWQgdG8gZG8gdGhpcyBzeW5jaHJvbm91c2x5IGluIG9yZGVyCiAgICAgLy8gdG8g
Z2VuZXJhdGUgdGhlIFNZTlRBWF9FUlIgZXhjZXB0aW9uIGNvcnJlY3RseS4KQEAgLTk0MSw2ICs5
NDIsMTEgQEAgRXhjZXB0aW9uT3I8dm9pZD4gRE9NV2luZG93Ojpwb3N0TWVzc2FnZQogICAgICAg
ICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNZTlRBWF9FUlIgfTsKICAgICB9CiAKKyAgICBWZWN0
b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4gcG9ydHM7CisgICAgYXV0byBtZXNzYWdlID0gU2VyaWFs
aXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoc3RhdGUsIG1lc3NhZ2VWYWx1ZSwgV1RGTW92ZSh0cmFu
c2ZlciksIHBvcnRzKTsKKyAgICBpZiAobWVzc2FnZS5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAg
cmV0dXJuIG1lc3NhZ2UucmVsZWFzZUV4Y2VwdGlvbigpOworCiAgICAgYXV0byBjaGFubmVscyA9
IE1lc3NhZ2VQb3J0OjpkaXNlbnRhbmdsZVBvcnRzKFdURk1vdmUocG9ydHMpKTsKICAgICBpZiAo
Y2hhbm5lbHMuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBjaGFubmVscy5yZWxlYXNl
RXhjZXB0aW9uKCk7CkBAIC05NTcsNyArOTYzLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gRE9NV2lu
ZG93Ojpwb3N0TWVzc2FnZQogICAgICAgICBzdGFja1RyYWNlID0gY3JlYXRlU2NyaXB0Q2FsbFN0
YWNrKEpTTWFpblRocmVhZEV4ZWNTdGF0ZTo6Y3VycmVudFN0YXRlKCksIFNjcmlwdENhbGxTdGFj
azo6bWF4Q2FsbFN0YWNrU2l6ZVRvQ2FwdHVyZSk7CiAKICAgICAvLyBTY2hlZHVsZSB0aGUgbWVz
c2FnZS4KLSAgICBhdXRvKiB0aW1lciA9IG5ldyBQb3N0TWVzc2FnZVRpbWVyKCp0aGlzLCBXVEZN
b3ZlKG1lc3NhZ2UpLCBzb3VyY2VPcmlnaW4sIHNvdXJjZSwgY2hhbm5lbHMucmVsZWFzZVJldHVy
blZhbHVlKCksIFdURk1vdmUodGFyZ2V0KSwgV1RGTW92ZShzdGFja1RyYWNlKSk7CisgICAgYXV0
byogdGltZXIgPSBuZXcgUG9zdE1lc3NhZ2VUaW1lcigqdGhpcywgbWVzc2FnZS5yZWxlYXNlUmV0
dXJuVmFsdWUoKSwgc291cmNlT3JpZ2luLCBjYWxsZXJXaW5kb3csIGNoYW5uZWxzLnJlbGVhc2VS
ZXR1cm5WYWx1ZSgpLCBXVEZNb3ZlKHRhcmdldCksIFdURk1vdmUoc3RhY2tUcmFjZSkpOwogICAg
IHRpbWVyLT5zdGFydE9uZVNob3QoMCk7CiAKICAgICByZXR1cm4geyB9OwpJbmRleDogU291cmNl
L1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
YWdlL0RPTVdpbmRvdy5oCShyZXZpc2lvbiAyMDkxODMpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdl
L0RPTVdpbmRvdy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwxMSArMzksMTkgQEAKICNpbmNsdWRl
IDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogI2luY2x1ZGUgPHd0
Zi9XZWFrUHRyLmg+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAogbmFtZXNwYWNlIEluc3Bl
Y3RvciB7CiBjbGFzcyBTY3JpcHRDYWxsU3RhY2s7CiB9CiAKK25hbWVzcGFjZSBKU0MgeworY2xh
c3MgRXhlY1N0YXRlOworY2xhc3MgSlNPYmplY3Q7CitjbGFzcyBKU1ZhbHVlOwordGVtcGxhdGUg
PHR5cGVuYW1lIFQ+IGNsYXNzIFN0cm9uZzsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBCYXJQcm9wOwpAQCAtMjM1LDcgKzI0Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHByaW50
RXJyb3JNZXNzYWdlKGNvbnN0IFN0cmluZyYpOwogICAgIFN0cmluZyBjcm9zc0RvbWFpbkFjY2Vz
c0Vycm9yTWVzc2FnZShjb25zdCBET01XaW5kb3cmIGFjdGl2ZVdpbmRvdyk7CiAKLSAgICBFeGNl
cHRpb25Pcjx2b2lkPiBwb3N0TWVzc2FnZShSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmIG1l
c3NhZ2UsIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYmLCBjb25zdCBTdHJpbmcmIHRhcmdl
dE9yaWdpbiwgRE9NV2luZG93JiBzb3VyY2UpOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHBvc3RN
ZXNzYWdlKEpTQzo6RXhlY1N0YXRlJiwgRE9NV2luZG93JiBjYWxsZXJXaW5kb3csIEpTQzo6SlNW
YWx1ZSBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHRhcmdldE9yaWdpbiwgVmVjdG9yPEpTQzo6U3Ry
b25nPEpTQzo6SlNPYmplY3Q+PiYmKTsKICAgICB2b2lkIHBvc3RNZXNzYWdlVGltZXJGaXJlZChQ
b3N0TWVzc2FnZVRpbWVyJik7CiAgICAgdm9pZCBkaXNwYXRjaE1lc3NhZ2VFdmVudFdpdGhPcmln
aW5DaGVjayhTZWN1cml0eU9yaWdpbiogaW50ZW5kZWRUYXJnZXRPcmlnaW4sIEV2ZW50JiwgUGFz
c1JlZlB0cjxJbnNwZWN0b3I6OlNjcmlwdENhbGxTdGFjaz4pOwogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFn
ZS9ET01XaW5kb3cuaWRsCShyZXZpc2lvbiAyMDkxODMpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdl
L0RPTVdpbmRvdy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTE1Miw3ICsxNTIsNyBAQAogICAgIC8v
IDAgd2hlbiBzdHJhaWdodCB1cDsgLTkwIHdoZW4gcm90YXRlZCA5MCBkZWdyZWVzIGNsb2Nrd2lz
ZTsgOTAgY291bnRlciBjbG9ja3dpc2UuCiAgICAgW0NvbmRpdGlvbmFsPU9SSUVOVEFUSU9OX0VW
RU5UU10gcmVhZG9ubHkgYXR0cmlidXRlIGxvbmcgb3JpZW50YXRpb247CiAKLSAgICBbRG9Ob3RD
aGVja1NlY3VyaXR5LCBDdXN0b20sIE1heVRocm93RXhjZXB0aW9uLCBGb3J3YXJkRGVjbGFyZUlu
SGVhZGVyXSB2b2lkIHBvc3RNZXNzYWdlKFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSBtZXNzYWdlLCBV
U1ZTdHJpbmcgdGFyZ2V0T3JpZ2luLCBvcHRpb25hbCBBcnJheSBtZXNzYWdlUG9ydHMpOworICAg
IFtDYWxsV2l0aD1TY3JpcHRTdGF0ZSZDYWxsZXJXaW5kb3csIERvTm90Q2hlY2tTZWN1cml0eSwg
Rm9yd2FyZERlY2xhcmVJbkhlYWRlciwgTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgcG9zdE1lc3Nh
Z2UoYW55IG1lc3NhZ2UsIFVTVlN0cmluZyB0YXJnZXRPcmlnaW4sIG9wdGlvbmFsIHNlcXVlbmNl
PG9iamVjdD4gdHJhbnNmZXIgPSBbXSk7CiAKICAgICBbQ29uZGl0aW9uYWw9V0VCX1RJTUlORywg
UmVwbGFjZWFibGVdIHJlYWRvbmx5IGF0dHJpYnV0ZSBQZXJmb3JtYW5jZSBwZXJmb3JtYW5jZTsK
IApJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29w
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3Jr
ZXJHbG9iYWxTY29wZS5jcHAJKHJldmlzaW9uIDIwOTE4MykKKysrIFNvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02
MywxMyArNjMsMTggQEAgRXZlbnRUYXJnZXRJbnRlcmZhY2UgRGVkaWNhdGVkV29ya2VyR2xvYgog
ICAgIHJldHVybiBEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUV2ZW50VGFyZ2V0SW50ZXJmYWNl
VHlwZTsKIH0KIAotRXhjZXB0aW9uT3I8dm9pZD4gRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGU6
OnBvc3RNZXNzYWdlKFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYgbWVzc2FnZSwgVmVj
dG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+JiYgcG9ydHMpCitFeGNlcHRpb25Pcjx2b2lkPiBEZWRp
Y2F0ZWRXb3JrZXJHbG9iYWxTY29wZTo6cG9zdE1lc3NhZ2UoSlNDOjpFeGVjU3RhdGUmIHN0YXRl
LCBKU0M6OkpTVmFsdWUgbWVzc2FnZVZhbHVlLCBWZWN0b3I8SlNDOjpTdHJvbmc8SlNDOjpKU09i
amVjdD4+JiYgdHJhbnNmZXIpCiB7CisgICAgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+IHBv
cnRzOworICAgIGF1dG8gbWVzc2FnZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKHN0
YXRlLCBtZXNzYWdlVmFsdWUsIFdURk1vdmUodHJhbnNmZXIpLCBwb3J0cyk7CisgICAgaWYgKG1l
c3NhZ2UuaGFzRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBtZXNzYWdlLnJlbGVhc2VFeGNl
cHRpb24oKTsKKwogICAgIC8vIERpc2VudGFuZ2xlIHRoZSBwb3J0IGluIHByZXBhcmF0aW9uIGZv
ciBzZW5kaW5nIGl0IHRvIHRoZSByZW1vdGUgY29udGV4dC4KICAgICBhdXRvIGNoYW5uZWxzID0g
TWVzc2FnZVBvcnQ6OmRpc2VudGFuZ2xlUG9ydHMoV1RGTW92ZShwb3J0cykpOwogICAgIGlmIChj
aGFubmVscy5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGNoYW5uZWxzLnJlbGVhc2VF
eGNlcHRpb24oKTsKLSAgICB0aHJlYWQoKS53b3JrZXJPYmplY3RQcm94eSgpLnBvc3RNZXNzYWdl
VG9Xb3JrZXJPYmplY3QoV1RGTW92ZShtZXNzYWdlKSwgY2hhbm5lbHMucmVsZWFzZVJldHVyblZh
bHVlKCkpOworICAgIHRocmVhZCgpLndvcmtlck9iamVjdFByb3h5KCkucG9zdE1lc3NhZ2VUb1dv
cmtlck9iamVjdChtZXNzYWdlLnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBjaGFubmVscy5yZWxlYXNl
UmV0dXJuVmFsdWUoKSk7CiAgICAgcmV0dXJuIHsgfTsKIH0KIApJbmRleDogU291cmNlL1dlYkNv
cmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaAkocmV2aXNp
b24gMjA5MTgzKQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJHbG9i
YWxTY29wZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMywxMiBAQAogCiAjaW5jbHVkZSAi
V29ya2VyR2xvYmFsU2NvcGUuaCIKIAorbmFtZXNwYWNlIEpTQyB7CitjbGFzcyBFeGVjU3RhdGU7
CitjbGFzcyBKU09iamVjdDsKK2NsYXNzIEpTVmFsdWU7Cit9CisKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzOwpAQCAtNDUs
NyArNTEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxEZWRpY2F0ZWRXb3JrZXJHbG9iYWxT
Y29wZT4gY3JlYXRlKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3Qg
U3RyaW5nJiB1c2VyQWdlbnQsIERlZGljYXRlZFdvcmtlclRocmVhZCYsIGNvbnN0IENvbnRlbnRT
ZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyYsIGJvb2wgc2hvdWxkQnlwYXNzTWFpbldvcmxk
Q29udGVudFNlY3VyaXR5UG9saWN5LCBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+JiYgdG9wT3JpZ2lu
LCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSosIFNvY2tldFByb3ZpZGVyKik7CiAgICAg
dmlydHVhbCB+RGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUoKTsKIAotICAgIEV4Y2VwdGlvbk9y
PHZvaWQ+IHBvc3RNZXNzYWdlKFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYsIFZlY3Rv
cjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYmKTsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBwb3N0TWVz
c2FnZShKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSBtZXNzYWdlLCBWZWN0b3I8SlNDOjpT
dHJvbmc8SlNDOjpKU09iamVjdD4+JiYpOwogCiAgICAgRGVkaWNhdGVkV29ya2VyVGhyZWFkJiB0
aHJlYWQoKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJH
bG9iYWxTY29wZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRp
Y2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5pZGwJKHJldmlzaW9uIDIwOTE4MykKKysrIFNvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaWRsCSh3b3JraW5nIGNv
cHkpCkBAIC0zNCw3ICszNCw3IEBACiAgICAgR2xvYmFsPShXb3JrZXIsRGVkaWNhdGVkV29ya2Vy
KSwKICAgICBKU0dlbmVyYXRlVG9OYXRpdmVPYmplY3QsCiBdIGludGVyZmFjZSBEZWRpY2F0ZWRX
b3JrZXJHbG9iYWxTY29wZSA6IFdvcmtlckdsb2JhbFNjb3BlIHsKLSAgICBbQ3VzdG9tLCBNYXlU
aHJvd0V4Y2VwdGlvbl0gdm9pZCBwb3N0TWVzc2FnZShhbnkgbWVzc2FnZSwgb3B0aW9uYWwgQXJy
YXkgbWVzc2FnZVBvcnRzKTsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGUsIE1heVRocm93RXhj
ZXB0aW9uXSB2b2lkIHBvc3RNZXNzYWdlKGFueSBtZXNzYWdlLCBvcHRpb25hbCBzZXF1ZW5jZTxv
YmplY3Q+IHRyYW5zZmVyID0gW10pOwogCiAgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbm1l
c3NhZ2U7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmNwcAkocmV2aXNpb24gMjA5
MTgzKQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMDEsMTMgKzEwMSwxOCBAQCBXb3JrZXI6On5Xb3JrZXIoKQogICAgIG1fY29udGV4dFBy
b3h5LT53b3JrZXJPYmplY3REZXN0cm95ZWQoKTsKIH0KIAotRXhjZXB0aW9uT3I8dm9pZD4gV29y
a2VyOjpwb3N0TWVzc2FnZShSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmIG1lc3NhZ2Us
IFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYmIHBvcnRzKQorRXhjZXB0aW9uT3I8dm9pZD4g
V29ya2VyOjpwb3N0TWVzc2FnZShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6SlNWYWx1ZSBt
ZXNzYWdlVmFsdWUsIFZlY3RvcjxKU0M6OlN0cm9uZzxKU0M6OkpTT2JqZWN0Pj4mJiB0cmFuc2Zl
cikKIHsKKyAgICBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4gcG9ydHM7CisgICAgYXV0byBt
ZXNzYWdlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoc3RhdGUsIG1lc3NhZ2VWYWx1
ZSwgV1RGTW92ZSh0cmFuc2ZlciksIHBvcnRzKTsKKyAgICBpZiAobWVzc2FnZS5oYXNFeGNlcHRp
b24oKSkKKyAgICAgICAgcmV0dXJuIG1lc3NhZ2UucmVsZWFzZUV4Y2VwdGlvbigpOworCiAgICAg
Ly8gRGlzZW50YW5nbGUgdGhlIHBvcnQgaW4gcHJlcGFyYXRpb24gZm9yIHNlbmRpbmcgaXQgdG8g
dGhlIHJlbW90ZSBjb250ZXh0LgogICAgIGF1dG8gY2hhbm5lbHMgPSBNZXNzYWdlUG9ydDo6ZGlz
ZW50YW5nbGVQb3J0cyhXVEZNb3ZlKHBvcnRzKSk7CiAgICAgaWYgKGNoYW5uZWxzLmhhc0V4Y2Vw
dGlvbigpKQogICAgICAgICByZXR1cm4gY2hhbm5lbHMucmVsZWFzZUV4Y2VwdGlvbigpOwotICAg
IG1fY29udGV4dFByb3h5LT5wb3N0TWVzc2FnZVRvV29ya2VyR2xvYmFsU2NvcGUoV1RGTW92ZSht
ZXNzYWdlKSwgY2hhbm5lbHMucmVsZWFzZVJldHVyblZhbHVlKCkpOworICAgIG1fY29udGV4dFBy
b3h5LT5wb3N0TWVzc2FnZVRvV29ya2VyR2xvYmFsU2NvcGUobWVzc2FnZS5yZWxlYXNlUmV0dXJu
VmFsdWUoKSwgY2hhbm5lbHMucmVsZWFzZVJldHVyblZhbHVlKCkpOwogICAgIHJldHVybiB7IH07
CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuaAkocmV2aXNpb24gMjA5MTgzKQorKysg
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiAr
MzUsMTIgQEAKICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9B
dG9taWNTdHJpbmdIYXNoLmg+CiAKK25hbWVzcGFjZSBKU0MgeworY2xhc3MgRXhlY1N0YXRlOwor
Y2xhc3MgSlNPYmplY3Q7CitjbGFzcyBKU1ZhbHVlOworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CkBAIC00Niw3ICs1Miw3IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPFdvcmtlcj4+IGNyZWF0ZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiwgY29uc3QgU3RyaW5nJiB1cmwsIEpTQzo6UnVudGltZUZsYWdzKTsKICAg
ICB2aXJ0dWFsIH5Xb3JrZXIoKTsKIAotICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHBvc3RNZXNzYWdl
KFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYgbWVzc2FnZSwgVmVjdG9yPFJlZlB0cjxN
ZXNzYWdlUG9ydD4+JiYpOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHBvc3RNZXNzYWdlKEpTQzo6
RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlIG1lc3NhZ2UsIFZlY3RvcjxKU0M6OlN0cm9uZzxKU0M6
OkpTT2JqZWN0Pj4mJik7CiAKICAgICB2b2lkIHRlcm1pbmF0ZSgpOwogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlci5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXIuaWRsCShyZXZpc2lvbiAyMDkxODMpCisrKyBTb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlci5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI4LDExICsyOCwxMCBAQAogICAg
IEFjdGl2ZURPTU9iamVjdCwKICAgICBDdXN0b21Db25zdHJ1Y3RvcihVU1ZTdHJpbmcgc2NyaXB0
VXJsKSwKIF0gaW50ZXJmYWNlIFdvcmtlciA6IEV2ZW50VGFyZ2V0IHsKLSAgICBhdHRyaWJ1dGUg
RXZlbnRIYW5kbGVyIG9ubWVzc2FnZTsKLQotICAgIFtDdXN0b20sIE1heVRocm93RXhjZXB0aW9u
XSB2b2lkIHBvc3RNZXNzYWdlKFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSBtZXNzYWdlLCBvcHRpb25h
bCBBcnJheSBtZXNzYWdlUG9ydHMpOwotCiAgICAgdm9pZCB0ZXJtaW5hdGUoKTsKKworICAgIFtD
YWxsV2l0aD1TY3JpcHRTdGF0ZSwgTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgcG9zdE1lc3NhZ2Uo
YW55IG1lc3NhZ2UsIG9wdGlvbmFsIHNlcXVlbmNlPG9iamVjdD4gdHJhbnNmZXIgPSBbXSk7Cisg
ICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbm1lc3NhZ2U7CiB9OwogCiBXb3JrZXIgaW1wbGVt
ZW50cyBBYnN0cmFjdFdvcmtlcjsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwOTE4NCkKKysrIExheW91
dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDE2LTEy
LTAyICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgb3B0aW9uYWwgc2Vx
dWVuY2UgdmFsdWVzIG5vdCBoYW5kbGVkIGNvcnJlY3RseSBieSBiaW5kaW5nIGdlbmVyYXRvcgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQyNTYyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2Nh
bnZhcy93ZWJnbC9yZXNvdXJjZXMvdHlwZWQtYXJyYXktd29ya2VyLmpzOgorICAgICAgICAqIGZh
c3QvZG9tL1dpbmRvdy93aW5kb3ctcG9zdG1lc3NhZ2UtYXJncy1leHBlY3RlZC50eHQ6CisgICAg
ICAgICogZmFzdC9kb20vV2luZG93L3dpbmRvdy1wb3N0bWVzc2FnZS1hcmdzLmh0bWw6CisgICAg
ICAgICogZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0LWRlbGV0ZWQtZG9jdW1lbnQuaHRtbDoKKyAg
ICAgICAgKiBmYXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQtZGVsZXRlZC1mcmFtZS5odG1sOgorICAg
ICAgICAqIGZhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1pbmFjdGl2ZS1kb2N1bWVudC5odG1sOgor
ICAgICAgICAqIGZhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1tdWx0aS1leHBlY3RlZC50eHQ6Cisg
ICAgICAgICogZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0Lmh0bWw6CisgICAgICAgICogZmFzdC93
b3JrZXJzL3dvcmtlci1jb250ZXh0LW11bHRpLXBvcnQtZXhwZWN0ZWQudHh0OgorICAgICAgICAq
IGZhc3Qvd29ya2Vycy93b3JrZXItbXVsdGktcG9ydC1leHBlY3RlZC50eHQ6CisgICAgICAgICog
d2ViZ2wvMS4wLjIvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdHlwZWRh
cnJheXMvcmVzb3VyY2VzL3R5cGVkLWFycmF5LXdvcmtlci5qczoKKyAgICAgICAgKiB3ZWJnbC8x
LjAuMy9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90eXBlZGFycmF5cy9y
ZXNvdXJjZXMvdHlwZWQtYXJyYXktd29ya2VyLmpzOgorICAgICAgICBVcGRhdGUgZm9yIG5ldyBl
eGNlcHRpb25zIGFuZCBzdHJpY3RlciBlbmZvcmNlbWVudCBvZiB0aGUgcG9zdE1lc3NhZ2Ugc2ln
bmF0dXJlLiAKKwogMjAxNi0xMS0zMCAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAg
ICAgICAgIFtXZWJJRExdIFJlbW92ZSBjdXN0b20gYmluZGluZ3MgZm9yIEZpbGUgYW5kIEJsb2Ig
Y29uc3RydWN0b3JzCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9yZXNvdXJj
ZXMvdHlwZWQtYXJyYXktd29ya2VyLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
Y2FudmFzL3dlYmdsL3Jlc291cmNlcy90eXBlZC1hcnJheS13b3JrZXIuanMJKHJldmlzaW9uIDIw
OTE4MykKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3Jlc291cmNlcy90eXBlZC1h
cnJheS13b3JrZXIuanMJKHdvcmtpbmcgY29weSkKQEAgLTc0LDcgKzc0LDcgQEAgb25tZXNzYWdl
ID0gZnVuY3Rpb24oZXZlbnQpIHsKICAgICB9IGVsc2UgewogICAgICAgdmFsdWVUb1NlbmQgPSB2
aWV3LmJ1ZmZlcjsKICAgICB9Ci0gICAgdmFyIHRyYW5zZmVyYWJsZXNUb1NlbmQgPSBudWxsOwor
ICAgIHZhciB0cmFuc2ZlcmFibGVzVG9TZW5kID0gW107CiAgICAgaWYgKG1lc3NhZ2UuY29tbWFu
ZCA9PSAndHJhbnNmZXInIHx8CiAgICAgICAgIG1lc3NhZ2UuY29tbWFuZCA9PSAndHJhbnNmZXJC
dWZmZXInKSB7CiAgICAgICB0cmFuc2ZlcmFibGVzVG9TZW5kID0gWyB2aWV3LmJ1ZmZlciBdOwpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wb3N0bWVzc2FnZS1hcmdz
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cv
d2luZG93LXBvc3RtZXNzYWdlLWFyZ3MtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyMDkxODMpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXBvc3RtZXNzYWdlLWFyZ3MtZXhw
ZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yLDEzICsyLDEzIEBAIFRlc3QgdGhhdCB0aGUg
c2Vjb25kIGFyZ3VtZW50IG9mIHdpbmRvdy4KIAogUEFTUzogUG9zdGluZyBtZXNzYWdlICgnMScs
IDEpOiB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBWYWx1ZSBpcyBub3QgYSBzZXF1ZW5jZQog
UEFTUzogUG9zdGluZyBtZXNzYWdlICgnMicsIGMpOiB0aHJldyBleGNlcHRpb24gVHlwZUVycm9y
OiBWYWx1ZSBpcyBub3QgYSBzZXF1ZW5jZQotUEFTUzogUG9zdGluZyBtZXNzYWdlICgnMycsIFtv
YmplY3QgT2JqZWN0XSk6IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFZhbHVlIGlzIG5vdCBh
IHNlcXVlbmNlCi1QQVNTOiBQb3N0aW5nIG1lc3NhZ2UgKCc0JywgW29iamVjdCBXaW5kb3ddKSBk
aWQgbm90IHRocm93IGFuIGV4Y2VwdGlvbgotUEFTUzogUG9zdGluZyBtZXNzYWdlICgnNGEnLCAq
KSBkaWQgbm90IHRocm93IGFuIGV4Y2VwdGlvbgorUEFTUzogUG9zdGluZyBtZXNzYWdlICgnMycs
IFtvYmplY3QgT2JqZWN0XSk6IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IK
K1BBU1M6IFBvc3RpbmcgbWVzc2FnZSAoJzQnLCBbb2JqZWN0IFdpbmRvd10pOiB0aHJldyBleGNl
cHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yCitQQVNTOiBQb3N0aW5nIG1lc3NhZ2UgKCc0YScs
ICopOiB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBWYWx1ZSBpcyBub3QgYSBzZXF1ZW5jZQog
UEFTUzogUG9zdGluZyBtZXNzYWdlICgnNScsIG51bGwpIGRpZCBub3QgdGhyb3cgYW4gZXhjZXB0
aW9uCiBQQVNTOiBQb3N0aW5nIG1lc3NhZ2UgKCc2JywgdW5kZWZpbmVkKSBkaWQgbm90IHRocm93
IGFuIGV4Y2VwdGlvbgogUEFTUzogUG9zdGluZyBtZXNzYWdlICgnNycsIFtvYmplY3QgTWVzc2Fn
ZVBvcnRdLFtvYmplY3QgTWVzc2FnZVBvcnRdKSBkaWQgbm90IHRocm93IGFuIGV4Y2VwdGlvbgot
UEFTUzogUG9zdGluZyBtZXNzYWdlICgnN2EnLCAqKSBkaWQgbm90IHRocm93IGFuIGV4Y2VwdGlv
bgorUEFTUzogUG9zdGluZyBtZXNzYWdlICgnN2EnLCAqKTogdGhyZXcgZXhjZXB0aW9uIFR5cGVF
cnJvcjogVmFsdWUgaXMgbm90IGEgc2VxdWVuY2UKIFBBU1M6IFBvc3RpbmcgbWVzc2FnZSAoJzcn
LCBbb2JqZWN0IE1lc3NhZ2VQb3J0XSxbb2JqZWN0IE1lc3NhZ2VQb3J0XSkgZGlkIG5vdCB0aHJv
dyBhbiBleGNlcHRpb24KIFBBU1M6IFBvc3RpbmcgbWVzc2FnZSAoJzIxNDc0ODM2NDgnLCBudWxs
KSBkaWQgbm90IHRocm93IGFuIGV4Y2VwdGlvbgogUEFTUzogUG9zdGluZyBtZXNzYWdlICgnW29i
amVjdCBNZXNzYWdlUG9ydF0nLCBbb2JqZWN0IE1lc3NhZ2VQb3J0XSxbb2JqZWN0IE1lc3NhZ2VQ
b3J0XSkgZGlkIG5vdCB0aHJvdyBhbiBleGNlcHRpb24KQEAgLTE4LDEyICsxOCw5IEBAIFBBU1M6
IFBvc3RpbmcgbWVzc2FnZSAoJ1tvYmplY3QgQXJyYXlCdWYKIFBBU1M6IGFycmF5QnVmZmVyIG5l
dXRlcmVkCiBQQVNTOiB2aWV3IG5ldXRlcmVkCiBQQVNTOiBQb3N0aW5nIG1lc3NhZ2UgKCdkb25l
JywgdW5kZWZpbmVkKSBkaWQgbm90IHRocm93IGFuIGV4Y2VwdGlvbgotUmVjZWl2ZWQgbWVzc2Fn
ZSAnNCcgd2l0aCAwIHBvcnRzLgotUmVjZWl2ZWQgbWVzc2FnZSAnNGEnIHdpdGggMCBwb3J0cy4K
IFJlY2VpdmVkIG1lc3NhZ2UgJzUnIHdpdGggMCBwb3J0cy4KIFJlY2VpdmVkIG1lc3NhZ2UgJzYn
IHdpdGggMCBwb3J0cy4KIFJlY2VpdmVkIG1lc3NhZ2UgJzcnIHdpdGggMiBwb3J0cy4KLVJlY2Vp
dmVkIG1lc3NhZ2UgJzdhJyB3aXRoIDIgcG9ydHMuCiBSZWNlaXZlZCBtZXNzYWdlICc3JyB3aXRo
IDIgcG9ydHMuCiBSZWNlaXZlZCBtZXNzYWdlICcyMTQ3NDgzNjQ4JyB3aXRoIDAgcG9ydHMuCiBS
ZWNlaXZlZCBtZXNzYWdlICdbb2JqZWN0IE1lc3NhZ2VQb3J0XScgd2l0aCAyIHBvcnRzLgpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wb3N0bWVzc2FnZS1hcmdzLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wb3N0
bWVzc2FnZS1hcmdzLmh0bWwJKHJldmlzaW9uIDIwOTE4MykKKysrIExheW91dFRlc3RzL2Zhc3Qv
ZG9tL1dpbmRvdy93aW5kb3ctcG9zdG1lc3NhZ2UtYXJncy5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC00NCwxNCArNDQsMTQgQEAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRlc2NyaXB0aW9uIiku
aQogdHJ5UG9zdE1lc3NhZ2UoJzEnLCAnKicsIDEsIHRydWUpOwogdHJ5UG9zdE1lc3NhZ2UoJzIn
LCAnKicsICdjJywgdHJ1ZSk7CiB0cnlQb3N0TWVzc2FnZSgnMycsICcqJywgeyB4OiAxIH0sIHRy
dWUpOwotdHJ5UG9zdE1lc3NhZ2UoJzQnLCAnKicsIHdpbmRvdyk7ICAvLyBQYXNzZXMgYmVjYXVz
ZSB3aW5kb3cgaGFzIGEgImxlbmd0aCIgYXR0cmlidXRlIG9mIHZhbHVlICcwJywgc28gaXQgbG9v
a3MgbGlrZSBhbiBhcnJheQotdHJ5UG9zdE1lc3NhZ2UoJzRhJywgd2luZG93LCAnKicpOyAvLyBM
ZWdhY3kgYXJndW1lbnQgb3JkZXIuCit0cnlQb3N0TWVzc2FnZSgnNCcsICcqJywgd2luZG93LCB0
cnVlKTsKK3RyeVBvc3RNZXNzYWdlKCc0YScsIHdpbmRvdywgJyonLCB0cnVlKTsgLy8gTGVnYWN5
IGFyZ3VtZW50IG9yZGVyLgogdHJ5UG9zdE1lc3NhZ2UoJzUnLCAnKicsIG51bGwpOwogdHJ5UG9z
dE1lc3NhZ2UoJzYnLCAnKicsIHZvaWQgMCk7CiB2YXIgY2hhbm5lbDEgPSBuZXcgTWVzc2FnZUNo
YW5uZWw7CiB0cnlQb3N0TWVzc2FnZUZ1bmN0aW9uKHdpbmRvdy5wb3N0TWVzc2FnZSwgJzcnLCAn
KicsIFtjaGFubmVsMS5wb3J0MSwgY2hhbm5lbDEucG9ydDJdKTsKIHZhciBjaGFubmVsMWEgPSBu
ZXcgTWVzc2FnZUNoYW5uZWw7Ci10cnlQb3N0TWVzc2FnZUZ1bmN0aW9uKHdpbmRvdy5wb3N0TWVz
c2FnZSwgJzdhJywgW2NoYW5uZWwxYS5wb3J0MSwgY2hhbm5lbDFhLnBvcnQyXSwgJyonKTsKK3Ry
eVBvc3RNZXNzYWdlRnVuY3Rpb24od2luZG93LnBvc3RNZXNzYWdlLCAnN2EnLCBbY2hhbm5lbDFh
LnBvcnQxLCBjaGFubmVsMWEucG9ydDJdLCAnKicsIHRydWUpOwogdmFyIGNoYW5uZWwyID0gbmV3
IE1lc3NhZ2VDaGFubmVsOwogdHJ5UG9zdE1lc3NhZ2VGdW5jdGlvbih3aW5kb3cucG9zdE1lc3Nh
Z2UsICc3JywgJyonLCBbY2hhbm5lbDIucG9ydDEsIGNoYW5uZWwyLnBvcnQyXSk7CiB2YXIgY2hh
bm5lbDMgPSBuZXcgTWVzc2FnZUNoYW5uZWw7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50
cy9tZXNzYWdlLXBvcnQtZGVsZXRlZC1kb2N1bWVudC5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1kZWxldGVkLWRvY3VtZW50Lmh0bWwJKHJl
dmlzaW9uIDIwOTE4MykKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1k
ZWxldGVkLWRvY3VtZW50Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDcgQEAgdmFy
IG1haW5Qb3J0OwogZnVuY3Rpb24gdGVzdCgpCiB7CiAgICAgdmFyIGNoYW5uZWwgPSBuZXcgTWVz
c2FnZUNoYW5uZWw7Ci0gICAgd2luZG93LmZyYW1lc1swXS5wb3N0TWVzc2FnZSgibXNnIiwgW2No
YW5uZWwucG9ydDJdLCAiKiIpOworICAgIHdpbmRvdy5mcmFtZXNbMF0ucG9zdE1lc3NhZ2UoIm1z
ZyIsICIqIiwgW2NoYW5uZWwucG9ydDJdKTsKICAgICBtYWluUG9ydCA9IGNoYW5uZWwucG9ydDE7
CiAgICAgbWFpblBvcnQuc3RhcnQoKTsKIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMv
bWVzc2FnZS1wb3J0LWRlbGV0ZWQtZnJhbWUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQtZGVsZXRlZC1mcmFtZS5odG1sCShyZXZpc2lvbiAy
MDkxODMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQtZGVsZXRlZC1m
cmFtZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw3IEBAIGZ1bmN0aW9uIHRlc3Qo
KQogewogICAgIGZyYW1lRG9jID0gd2luZG93LmZyYW1lc1swXS5kb2N1bWVudDsKICAgICB2YXIg
Y2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbDsKLSAgICB3aW5kb3cuZnJhbWVzWzBdLnBvc3RN
ZXNzYWdlKCJtc2ciLCBbY2hhbm5lbC5wb3J0Ml0sICIqIik7CisgICAgd2luZG93LmZyYW1lc1sw
XS5wb3N0TWVzc2FnZSgibXNnIiwgIioiLCBbY2hhbm5lbC5wb3J0Ml0pOwogICAgIG1haW5Qb3J0
ID0gY2hhbm5lbC5wb3J0MTsKICAgICBtYWluUG9ydC5zdGFydCgpOwogCkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQtaW5hY3RpdmUtZG9jdW1lbnQuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQtaW5hY3RpdmUt
ZG9jdW1lbnQuaHRtbAkocmV2aXNpb24gMjA5MTgzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVu
dHMvbWVzc2FnZS1wb3J0LWluYWN0aXZlLWRvY3VtZW50Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTI5LDcgKzI5LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiB7CiAgICAgb3RoZXJEb2N1bWVudCA9IHdp
bmRvdy5mcmFtZXNbMF0uZG9jdW1lbnQ7CiAgICAgdmFyIGNoYW5uZWwgPSBuZXcgTWVzc2FnZUNo
YW5uZWw7Ci0gICAgd2luZG93LmZyYW1lc1swXS5wb3N0TWVzc2FnZSgibXNnIiwgW2NoYW5uZWwu
cG9ydDJdLCAiKiIpOworICAgIHdpbmRvdy5mcmFtZXNbMF0ucG9zdE1lc3NhZ2UoIm1zZyIsICIq
IiwgW2NoYW5uZWwucG9ydDJdKTsKICAgICBtYWluUG9ydCA9IGNoYW5uZWwucG9ydDE7CiAgICAg
bWFpblBvcnQuc3RhcnQoKTsKIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2Fn
ZS1wb3J0LW11bHRpLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2V2ZW50cy9tZXNzYWdlLXBvcnQtbXVsdGktZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyMDkxODMp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQtbXVsdGktZXhwZWN0ZWQu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC01LDEyICs1LDEyIEBAIE9uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEEKIAogUEFTUyBjaGFubmVsLnBvcnQxLnBvc3RNZXNzYWdlKCJz
YW1lIHBvcnQiLCBbY2hhbm5lbC5wb3J0MV0pIHRocmV3IGV4Y2VwdGlvbiBEYXRhQ2xvbmVFcnJv
ciAoRE9NIEV4Y2VwdGlvbiAyNSk6IFRoZSBvYmplY3QgY2FuIG5vdCBiZSBjbG9uZWQuLgogUEFT
UyBjaGFubmVsLnBvcnQxLnBvc3RNZXNzYWdlKCJlbnRhbmdsZWQgcG9ydCIsIFtjaGFubmVsLnBv
cnQyXSkgdGhyZXcgZXhjZXB0aW9uIERhdGFDbG9uZUVycm9yIChET00gRXhjZXB0aW9uIDI1KTog
VGhlIG9iamVjdCBjYW4gbm90IGJlIGNsb25lZC4uCi1QQVNTIGNoYW5uZWwucG9ydDEucG9zdE1l
c3NhZ2UoIm51bGwgcG9ydCIsIFtjaGFubmVsMy5wb3J0MSwgbnVsbCwgY2hhbm5lbDMucG9ydDJd
KSB0aHJldyBleGNlcHRpb24gSW52YWxpZFN0YXRlRXJyb3IgKERPTSBFeGNlcHRpb24gMTEpOiBU
aGUgb2JqZWN0IGlzIGluIGFuIGludmFsaWQgc3RhdGUuLgotUEFTUyBjaGFubmVsLnBvcnQxLnBv
c3RNZXNzYWdlKCJub3RBUG9ydCIsIFtjaGFubmVsMy5wb3J0MSwge30sIGNoYW5uZWwzLnBvcnQy
XSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KLVBBU1MgY2hhbm5lbC5w
b3J0MS5wb3N0TWVzc2FnZSgiZHVwbGljYXRlIHBvcnQiLCBbY2hhbm5lbDMucG9ydDEsIGNoYW5u
ZWwzLnBvcnQxXSkgdGhyZXcgZXhjZXB0aW9uIEludmFsaWRTdGF0ZUVycm9yIChET00gRXhjZXB0
aW9uIDExKTogVGhlIG9iamVjdCBpcyBpbiBhbiBpbnZhbGlkIHN0YXRlLi4KLVBBU1MgY2hhbm5l
bC5wb3J0MS5wb3N0TWVzc2FnZSgibm90QW5BcnJheSIsIGNoYW5uZWwzLnBvcnQxKSB0aHJldyBl
eGNlcHRpb24gVHlwZUVycm9yOiBWYWx1ZSBpcyBub3QgYSBzZXF1ZW5jZS4KLVBBU1MgY2hhbm5l
bC5wb3J0MS5wb3N0TWVzc2FnZSgibm90QVNlcXVlbmNlIiwgW3tsZW5ndGg6IDN9XSkgdGhyZXcg
ZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KLVBBU1MgY2hhbm5lbC5wb3J0MS5wb3N0
TWVzc2FnZSgibGFyZ2VTZXF1ZW5jZSIsIGxhcmdlUG9ydEFycmF5KSB0aHJldyBleGNlcHRpb24g
SW52YWxpZFN0YXRlRXJyb3IgKERPTSBFeGNlcHRpb24gMTEpOiBUaGUgb2JqZWN0IGlzIGluIGFu
IGludmFsaWQgc3RhdGUuLgorUEFTUyBjaGFubmVsLnBvcnQxLnBvc3RNZXNzYWdlKCJudWxsIHBv
cnQiLCBbY2hhbm5lbDMucG9ydDEsIG51bGwsIGNoYW5uZWwzLnBvcnQyXSkgdGhyZXcgZXhjZXB0
aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KK1BBU1MgY2hhbm5lbC5wb3J0MS5wb3N0TWVzc2Fn
ZSgibm90QVBvcnQiLCBbY2hhbm5lbDMucG9ydDEsIHt9LCBjaGFubmVsMy5wb3J0Ml0pIHRocmV3
IGV4Y2VwdGlvbiBEYXRhQ2xvbmVFcnJvciAoRE9NIEV4Y2VwdGlvbiAyNSk6IFRoZSBvYmplY3Qg
Y2FuIG5vdCBiZSBjbG9uZWQuLgorUEFTUyBjaGFubmVsLnBvcnQxLnBvc3RNZXNzYWdlKCJkdXBs
aWNhdGUgcG9ydCIsIFtjaGFubmVsMy5wb3J0MSwgY2hhbm5lbDMucG9ydDFdKSB0aHJldyBleGNl
cHRpb24gRGF0YUNsb25lRXJyb3IgKERPTSBFeGNlcHRpb24gMjUpOiBUaGUgb2JqZWN0IGNhbiBu
b3QgYmUgY2xvbmVkLi4KK1BBU1MgY2hhbm5lbC5wb3J0MS5wb3N0TWVzc2FnZSgibm90QW5BcnJh
eSIsIGNoYW5uZWwzLnBvcnQxKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9y
LgorUEFTUyBjaGFubmVsLnBvcnQxLnBvc3RNZXNzYWdlKCJub3RBU2VxdWVuY2UiLCBbe2xlbmd0
aDogM31dKSB0aHJldyBleGNlcHRpb24gRGF0YUNsb25lRXJyb3IgKERPTSBFeGNlcHRpb24gMjUp
OiBUaGUgb2JqZWN0IGNhbiBub3QgYmUgY2xvbmVkLi4KK1BBU1MgY2hhbm5lbC5wb3J0MS5wb3N0
TWVzc2FnZSgibGFyZ2VTZXF1ZW5jZSIsIGxhcmdlUG9ydEFycmF5KSB0aHJldyBleGNlcHRpb24g
VHlwZUVycm9yOiBUeXBlIGVycm9yLgogUEFTUyBldmVudC5wb3J0cyBpcyBub24tbnVsbCBhbmQg
emVybyBsZW5ndGggd2hlbiBubyBwb3J0IHNlbnQKIFBBU1MgZXZlbnQucG9ydHMgaXMgbm9uLW51
bGwgYW5kIHplcm8gbGVuZ3RoIHdoZW4gZW1wdHkgYXJyYXkgc2VudAogUEFTUyBldmVudC5wb3J0
cyBjb250YWlucyB0d28gcG9ydHMgd2hlbiB0d28gcG9ydHMgc2VudApJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0Lmh0bWwJKHJldmlzaW9uIDIwOTE4MykKKysrIExh
eW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC0zOCw3ICszOCw3IEBAIGZ1bmN0aW9uIHRlc3QocG9zdE1lc3NhZ2VGdW4pCiB7CiAgICAgdmFy
IGNoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWw7CiAKLSAgICB3aW5kb3cuZnJhbWVzWzBdW3Bv
c3RNZXNzYWdlRnVuXSgibXNnIiwgW2NoYW5uZWwucG9ydDJdLCAiKiIpOworICAgIHdpbmRvdy5m
cmFtZXNbMF1bcG9zdE1lc3NhZ2VGdW5dKCJtc2ciLCAiKiIsIFtjaGFubmVsLnBvcnQyXSk7CiAg
ICAgbWFpblBvcnQgPSBjaGFubmVsLnBvcnQxOwogICAgIG1haW5Qb3J0W3Bvc3RNZXNzYWdlRnVu
XSgicGluZyIpOwogICAgIG1haW5Qb3J0Lm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2dCkgewpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3dvcmtlci1jb250ZXh0LW11bHRpLXBvcnQtZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy93b3JrZXIt
Y29udGV4dC1tdWx0aS1wb3J0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjA5MTgzKQorKysgTGF5
b3V0VGVzdHMvZmFzdC93b3JrZXJzL3dvcmtlci1jb250ZXh0LW11bHRpLXBvcnQtZXhwZWN0ZWQu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC02LDExICs2LDExIEBAIE9uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEEKIFBBU1MgZXZlbnQucG9ydHMgaXMgbm9uLW51bGwgYW5kIHpl
cm8gbGVuZ3RoIHdoZW4gbm8gcG9ydCBzZW50CiBQQVNTIGV2ZW50LnBvcnRzIGlzIG5vbi1udWxs
IGFuZCB6ZXJvIGxlbmd0aCB3aGVuIGVtcHR5IGFycmF5IHNlbnQKIFBBU1MgZXZlbnQucG9ydHMg
Y29udGFpbnMgdHdvIHBvcnRzIHdoZW4gdHdvIHBvcnRzIHNlbnQKLVBBU1MgcG9zdGluZyBhIG51
bGwgcG9ydCBkaWQgdGhyb3c6IEludmFsaWRTdGF0ZUVycm9yIChET00gRXhjZXB0aW9uIDExKTog
VGhlIG9iamVjdCBpcyBpbiBhbiBpbnZhbGlkIHN0YXRlLgotUEFTUyBwb3N0aW5nIGEgbm9uLXBv
cnQgZGlkIHRocm93OiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IKK1BBU1MgcG9zdGluZyBhIG51bGwg
cG9ydCBkaWQgdGhyb3c6IFR5cGVFcnJvcjogVHlwZSBlcnJvcgorUEFTUyBwb3N0aW5nIGEgbm9u
LXBvcnQgZGlkIHRocm93OiBEYXRhQ2xvbmVFcnJvciAoRE9NIEV4Y2VwdGlvbiAyNSk6IFRoZSBv
YmplY3QgY2FuIG5vdCBiZSBjbG9uZWQuCiBQQVNTIGV2ZW50LnBvcnRzIGNvbnRhaW5zIHR3byBw
b3J0cyB3aGVuIHR3byBwb3J0cyByZS1zZW50IGFmdGVyIGVycm9yCi1QQVNTIHBvc3RpbmcgYSBu
b24tYXJyYXkgZGlkIHRocm93OiBUeXBlRXJyb3I6IFZhbHVlIGlzIG5vdCBhIHNlcXVlbmNlCi1Q
QVNTIHBvc3RpbmcgYSBub24tc2VxdWVuY2UgZGlkIHRocm93OiBUeXBlRXJyb3I6IFR5cGUgZXJy
b3IKK1BBU1MgcG9zdGluZyBhIG5vbi1hcnJheSBkaWQgdGhyb3c6IFR5cGVFcnJvcjogVHlwZSBl
cnJvcgorUEFTUyBwb3N0aW5nIGEgbm9uLXNlcXVlbmNlIGRpZCB0aHJvdzogRGF0YUNsb25lRXJy
b3IgKERPTSBFeGNlcHRpb24gMjUpOiBUaGUgb2JqZWN0IGNhbiBub3QgYmUgY2xvbmVkLgogCiBU
RVNUIENPTVBMRVRFCiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy93b3JrZXItbXVs
dGktcG9ydC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC93b3Jr
ZXJzL3dvcmtlci1tdWx0aS1wb3J0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjA5MTgzKQorKysg
TGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3dvcmtlci1tdWx0aS1wb3J0LWV4cGVjdGVkLnR4dAko
d29ya2luZyBjb3B5KQpAQCAtMywxMCArMywxMCBAQCBUaGlzIHRlc3QgY2hlY2tzIHRoZSB2YXJp
b3VzIHVzZSBjYXNlcyBhCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAKIAotUEFTUyB3b3Jr
ZXIucG9zdE1lc3NhZ2UoIm51bGwgcG9ydCIsIFtjaGFubmVsMy5wb3J0MSwgbnVsbCwgY2hhbm5l
bDMucG9ydDJdKSB0aHJldyBleGNlcHRpb24gSW52YWxpZFN0YXRlRXJyb3IgKERPTSBFeGNlcHRp
b24gMTEpOiBUaGUgb2JqZWN0IGlzIGluIGFuIGludmFsaWQgc3RhdGUuLgotUEFTUyB3b3JrZXIu
cG9zdE1lc3NhZ2UoIm5vdEFQb3J0IiwgW2NoYW5uZWwzLnBvcnQxLCB7fSwgY2hhbm5lbDMucG9y
dDJdKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgotUEFTUyB3b3JrZXIu
cG9zdE1lc3NhZ2UoIm5vdEFuQXJyYXkiLCBjaGFubmVsMy5wb3J0MSkgdGhyZXcgZXhjZXB0aW9u
IFR5cGVFcnJvcjogVmFsdWUgaXMgbm90IGEgc2VxdWVuY2UuCi1QQVNTIHdvcmtlci5wb3N0TWVz
c2FnZSgibm90QVNlcXVlbmNlIiwgW3tsZW5ndGg6IDN9XSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVF
cnJvcjogVHlwZSBlcnJvci4KK1BBU1Mgd29ya2VyLnBvc3RNZXNzYWdlKCJudWxsIHBvcnQiLCBb
Y2hhbm5lbDMucG9ydDEsIG51bGwsIGNoYW5uZWwzLnBvcnQyXSkgdGhyZXcgZXhjZXB0aW9uIFR5
cGVFcnJvcjogVHlwZSBlcnJvci4KK1BBU1Mgd29ya2VyLnBvc3RNZXNzYWdlKCJub3RBUG9ydCIs
IFtjaGFubmVsMy5wb3J0MSwge30sIGNoYW5uZWwzLnBvcnQyXSkgdGhyZXcgZXhjZXB0aW9uIERh
dGFDbG9uZUVycm9yIChET00gRXhjZXB0aW9uIDI1KTogVGhlIG9iamVjdCBjYW4gbm90IGJlIGNs
b25lZC4uCitQQVNTIHdvcmtlci5wb3N0TWVzc2FnZSgibm90QW5BcnJheSIsIGNoYW5uZWwzLnBv
cnQxKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgorUEFTUyB3b3JrZXIu
cG9zdE1lc3NhZ2UoIm5vdEFTZXF1ZW5jZSIsIFt7bGVuZ3RoOiAzfV0pIHRocmV3IGV4Y2VwdGlv
biBEYXRhQ2xvbmVFcnJvciAoRE9NIEV4Y2VwdGlvbiAyNSk6IFRoZSBvYmplY3QgY2FuIG5vdCBi
ZSBjbG9uZWQuLgogUEFTUyBldmVudC5wb3J0cyBpcyBub24tbnVsbCBhbmQgemVybyBsZW5ndGgg
d2hlbiBubyBwb3J0IHNlbnQKIFBBU1MgZXZlbnQucG9ydHMgaXMgbm9uLW51bGwgYW5kIHplcm8g
bGVuZ3RoIHdoZW4gZW1wdHkgYXJyYXkgc2VudAogUEFTUyBldmVudC5wb3J0cyBjb250YWlucyB0
d28gcG9ydHMgd2hlbiB0d28gcG9ydHMgc2VudApJbmRleDogTGF5b3V0VGVzdHMvd2ViZ2wvMS4w
LjIvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdHlwZWRhcnJheXMvcmVz
b3VyY2VzL3R5cGVkLWFycmF5LXdvcmtlci5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy93
ZWJnbC8xLjAuMi9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90eXBlZGFy
cmF5cy9yZXNvdXJjZXMvdHlwZWQtYXJyYXktd29ya2VyLmpzCShyZXZpc2lvbiAyMDkxODMpCisr
KyBMYXlvdXRUZXN0cy93ZWJnbC8xLjAuMi9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZS90eXBlZGFycmF5cy9yZXNvdXJjZXMvdHlwZWQtYXJyYXktd29ya2VyLmpzCSh3b3Jr
aW5nIGNvcHkpCkBAIC03NCw3ICs3NCw3IEBAIG9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2ZW50KSB7
CiAgICAgfSBlbHNlIHsKICAgICAgIHZhbHVlVG9TZW5kID0gdmlldy5idWZmZXI7CiAgICAgfQot
ICAgIHZhciB0cmFuc2ZlcmFibGVzVG9TZW5kID0gbnVsbDsKKyAgICB2YXIgdHJhbnNmZXJhYmxl
c1RvU2VuZCA9IFtdOwogICAgIGlmIChtZXNzYWdlLmNvbW1hbmQgPT0gJ3RyYW5zZmVyJyB8fAog
ICAgICAgICBtZXNzYWdlLmNvbW1hbmQgPT0gJ3RyYW5zZmVyQnVmZmVyJykgewogICAgICAgdHJh
bnNmZXJhYmxlc1RvU2VuZCA9IFsgdmlldy5idWZmZXIgXTsKSW5kZXg6IExheW91dFRlc3RzL3dl
YmdsLzEuMC4zL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3R5cGVkYXJy
YXlzL3Jlc291cmNlcy90eXBlZC1hcnJheS13b3JrZXIuanMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvd2ViZ2wvMS4wLjMvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
dHlwZWRhcnJheXMvcmVzb3VyY2VzL3R5cGVkLWFycmF5LXdvcmtlci5qcwkocmV2aXNpb24gMjA5
MTgzKQorKysgTGF5b3V0VGVzdHMvd2ViZ2wvMS4wLjMvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UvdHlwZWRhcnJheXMvcmVzb3VyY2VzL3R5cGVkLWFycmF5LXdvcmtlci5q
cwkod29ya2luZyBjb3B5KQpAQCAtNzQsNyArNzQsNyBAQCBvbm1lc3NhZ2UgPSBmdW5jdGlvbihl
dmVudCkgewogICAgIH0gZWxzZSB7CiAgICAgICB2YWx1ZVRvU2VuZCA9IHZpZXcuYnVmZmVyOwog
ICAgIH0KLSAgICB2YXIgdHJhbnNmZXJhYmxlc1RvU2VuZCA9IG51bGw7CisgICAgdmFyIHRyYW5z
ZmVyYWJsZXNUb1NlbmQgPSBbXTsKICAgICBpZiAobWVzc2FnZS5jb21tYW5kID09ICd0cmFuc2Zl
cicgfHwKICAgICAgICAgbWVzc2FnZS5jb21tYW5kID09ICd0cmFuc2ZlckJ1ZmZlcicpIHsKICAg
ICAgIHRyYW5zZmVyYWJsZXNUb1NlbmQgPSBbIHZpZXcuYnVmZmVyIF07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>295981</attachid>
            <date>2016-12-02 12:36:39 -0800</date>
            <delta_ts>2016-12-02 13:49:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-142562-20161202123608.patch</filename>
            <type>text/plain</type>
            <size>88059</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwOTI1NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg5IEBACisyMDE2LTEyLTAyICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgb3B0aW9uYWwgc2VxdWVuY2UgdmFsdWVz
IG5vdCBoYW5kbGVkIGNvcnJlY3RseSBieSBiaW5kaW5nIGdlbmVyYXRvcgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQyNTYyCisKKyAgICAgICAgQWxz
byBmaXhlczoKKyAgICAgICAgICAgIFJlbW92ZSBub24tc3RhbmRhcmQgcG9zdE1lc3NhZ2Ugb3Zl
cmxvYWQKKyAgICAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjE5MTEKKyAgICAgICAgYW5kCisgICAgICAgICAgICBXcm9uZyBhcmd1bWVudCBvcmRlciBp
biB3aW5kb3cucG9zdE1lc3NhZ2UKKyAgICAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD02MzE0MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICBSZW1vdmUgbm8gbG9uZ2VyIG5lZWRlZCBmaWxlcy4KKworICAgICAgICAqIGJpbmRpbmdz
L2dlbmVyaWMvSURMVHlwZXMuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnQu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnZlcnRlcjxJRExPYmplY3Q+Ojpjb252ZXJ0KToKKyAg
ICAgICAgQWRkIHN1cHBvcnQgZm9yIHRoZSBXZWJJREwgb2JqZWN0IHR5cGUuCisKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
RE9NRXhjZXB0aW9uKToKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHRocm93aW5nIHN0YWNrIG92
ZXJmbG93IGVycm9ycy4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9t
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmhhbmRsZVBvc3RNZXNzYWdlKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93Ojpwb3N0TWVzc2FnZSk6IERlbGV0ZWQuCisgICAg
ICAgICogYmluZGluZ3MvanMvSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUN1c3RvbS5jcHA6
IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpKU01lc3NhZ2VQb3J0Ojpwb3N0TWVzc2FnZSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0VHJhbnNmZXJhYmxlcyk6IERlbGV0ZWQuCisgICAg
ICAgICogYmluZGluZ3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5oOiBSZW1vdmVkLgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTV29ya2VyQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpT
V29ya2VyOjpwb3N0TWVzc2FnZSk6IERlbGV0ZWQuCisgICAgICAgIFJlbW92ZSBjdXN0b20gYmlu
ZGluZ3MgZm9yIHBvc3RNZXNzYWdlLgorCisgICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmg6CisgICAgICAgIFN3aXRjaCB0byB1c2luZyBlbnVtIGNsYXNzLgorCisg
ICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6dHJhbnNmZXJBcnJheUJ1ZmZlcnMpOgor
ICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUpOgorICAgICAg
ICBBZGQgbmV3IGNyZWF0ZSBmdW5jdGlvbiB0aGF0IHRha2VzIHRoZSB0cmFuc2ZlciBsaXN0LCBw
cm9jZXNzZXMgaXQsIGFuZCByZXR1cm5zCisgICAgICAgIE1lc3NhZ2VQb3J0cyBhbmQgU2VyaWFs
aXplZFNjcmlwdFZhbHVlIC8gZXhjZXB0aW9uLgorCisgICAgICAgIChXZWJDb3JlOjpDbG9uZUJh
c2U6OnRocm93U3RhY2tPdmVyZmxvdyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDbG9u
ZURlc2VyaWFsaXplcjo6dGhyb3dWYWxpZGF0aW9uRXJyb3IpOiBEZWxldGVkLgorICAgICAgICBS
ZW1vdmUgdW5jYWxsZWQgZnVuY3Rpb25zLgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9yLnBtOgorICAgICAgICAoSXNSZWZQdHJUeXBlKToKKyAgICAgICAgKElzQnVp
bHRpblR5cGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBt
OgorICAgICAgICAoQWRkVG9JbmNsdWRlc0ZvcklETFR5cGUpOgorICAgICAgICAoR2V0QmFzZUlE
TFR5cGUpOgorICAgICAgICBBZGQgc3VwcG9ydCBmb3IgdGhlIFdlYklETCAnb2JqZWN0JyB0eXBl
LgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHA6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsOgorICAgICAgICBBZGQg
dGVzdHMgZm9yICdvYmplY3QnLgorCisgICAgICAgICogZG9tL0V4Y2VwdGlvbkNvZGUuaDoKKyAg
ICAgICAgQWRkIHR3byBuZXcgRXhjZXB0aW9uQ29kZXM6CisgICAgICAgICAgLSBFeGlzdGluZ0V4
Y2VwdGlvbkVycm9yLCB0byBpbmRpY2F0ZSB0aGF0IGltcGxlbWVudGF0aW9uIGNvZGUgdGhyZXcg
YSBKUyBleGNlcHRpb24uCisgICAgICAgICAgLSBTdGFja092ZXJmbG93RXJyb3IsIHRvIGluZGlj
YXRlIHRoYXQgYSBzdGFjayBvdmVyZmxvdyBleGNlcHRpb24gc2hvdWxkIGJlIHRocm93bi4KKwor
ICAgICAgICAqIGRvbS9NZXNzYWdlUG9ydC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdl
UG9ydDo6cG9zdE1lc3NhZ2UpOgorICAgICAgICAqIGRvbS9NZXNzYWdlUG9ydC5oOgorICAgICAg
ICAqIGRvbS9NZXNzYWdlUG9ydC5pZGw6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93Ojpwb3N0TWVzc2FnZSk6CisgICAgICAgICogcGFn
ZS9ET01XaW5kb3cuaDoKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5pZGw6CisgICAgICAgICog
d29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZTo6cG9zdE1lc3NhZ2UpOgorICAgICAgICAqIHdv
cmtlcnMvRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaDoKKyAgICAgICAgKiB3b3JrZXJzL0Rl
ZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmlkbDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXI6OnBvc3RNZXNzYWdlKToKKyAgICAgICAgKiB3
b3JrZXJzL1dvcmtlci5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyLmlkbDoKKyAgICAgICAg
VXBkYXRlIHRvIGNhbGwgbmV3IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSBjcmVhdGUgZnVuY3Rpb24u
CisKIDIwMTYtMTItMDIgIERhdmUgSHlhdHQgIDxoeWF0dEBhcHBsZS5jb20+CiAKICAgICAgICAg
W0NTUyBQYXJzZXJdIEZpeCA6YW55Lzpob3N0IHRvIGFsbG93IHBzZXVkby1lbGVtZW50cy4gU3Vw
cG9ydCAtd2Via2l0LWJvcmRlci1yYWRpdXMuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkocmV2
aXNpb24gMjA5MjU1KQorKysgU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcg
Y29weSkKQEAgLTExMjksNyArMTEyOSw2IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBiaW5k
aW5ncy9qcy9KU0RPTVdyYXBwZXIuY3BwCiAgICAgYmluZGluZ3MvanMvSlNEYXRhQ3VlQ3VzdG9t
LmNwcAogICAgIGJpbmRpbmdzL2pzL0pTRGF0YVRyYW5zZmVyQ3VzdG9tLmNwcAotICAgIGJpbmRp
bmdzL2pzL0pTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDdXN0b20uY3BwCiAgICAgYmluZGlu
Z3MvanMvSlNEZXZpY2VNb3Rpb25FdmVudEN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU0Rl
dmljZU9yaWVudGF0aW9uRXZlbnRDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNEaWN0aW9u
YXJ5LmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkocmV2aXNpb24gMjA5MjU1KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xNTg0LDcgKzE1
ODQsNiBAQAogCQk0MTYxNEE3OTFEQTY0MjQxMDA0QUQwNkYgLyogSFRUUEhlYWRlclZhbHVlcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2MTRBNzcx
REE2NDIzNjAwNEFEMDZGIC8qIEhUVFBIZWFkZXJWYWx1ZXMuaCAqLzsgfTsKIAkJNDE2MkE0NTAx
MDExNDVBRTAwREZGM0VEIC8qIERlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNjJBNDREMTAxMTQ1QUUw
MERGRjNFRCAvKiBEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAgKi87IH07CiAJCTQxNjJB
NDUxMTAxMTQ1QUUwMERGRjNFRCAvKiBEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2MkE0NEUxMDExNDVB
RTAwREZGM0VEIC8qIERlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmggKi87IH07Ci0JCTQxNjJB
NDU0MTAxMTQ1RTMwMERGRjNFRCAvKiBKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ3VzdG9t
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNjJB
NDUzMTAxMTQ1RTMwMERGRjNFRCAvKiBKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ3VzdG9t
LmNwcCAqLzsgfTsKIAkJNDE2MkE0NTcxMDExNDY0NzAwREZGM0VEIC8qIEpTRGVkaWNhdGVkV29y
a2VyR2xvYmFsU2NvcGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDE2MkE0NTUxMDExNDY0NzAwREZGM0VEIC8qIEpTRGVkaWNhdGVkV29ya2VyR2xv
YmFsU2NvcGUuY3BwICovOyB9OwogCQk0MTYyQTQ1ODEwMTE0NjQ3MDBERkYzRUQgLyogSlNEZWRp
Y2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDE2MkE0NTYxMDExNDY0NzAwREZGM0VEIC8qIEpTRGVkaWNhdGVkV29y
a2VyR2xvYmFsU2NvcGUuaCAqLzsgfTsKIAkJNDE2RTI5QTYxMDJGQTk2MjAwN0ZDMTRFIC8qIFdv
cmtlclJlcG9ydGluZ1Byb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MTZFMjlBNTEwMkZBOTYyMDA3RkMxNEUgLyogV29ya2VyUmVwb3J0aW5nUHJv
eHkuaCAqLzsgfTsKQEAgLTE2NDEsNyArMTY0MCw2IEBACiAJCTQxRjU0RjhCMUM1MEM1MDMwMDMz
ODQ4OCAvKiBGZXRjaEJvZHkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDFGNTRGN0QxQzUwQzRGNjAwMzM4NDg4IC8qIEZldGNoQm9keS5jcHAgKi87
IH07CiAJCTQxRjU0RjhEMUM1MEM1MDgwMDMzODQ4OCAvKiBGZXRjaEhlYWRlcnMuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGNTRGODIxQzUwQzRG
NjAwMzM4NDg4IC8qIEZldGNoSGVhZGVycy5jcHAgKi87IH07CiAJCTQxRjU0RjhFMUM1MEM1MEMw
MDMzODQ4OCAvKiBGZXRjaFJlcXVlc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDFGNTRGODcxQzUwQzRGNjAwMzM4NDg4IC8qIEZldGNoUmVxdWVz
dC5jcHAgKi87IH07Ci0JCTQxRjU4NEM3MTA0NjUyQ0IwMDlDQUE2NCAvKiBKU01lc3NhZ2VQb3J0
Q3VzdG9tLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MUY1ODRDNjEwNDY1MkNCMDA5Q0FBNjQgLyogSlNNZXNzYWdlUG9ydEN1c3RvbS5oICovOyB9Owog
CQk0MUZBMzAzRTEzMTZDMjlDMDBDMEJGQzUgLyogUmVuZGVyTWVkaWFDb250cm9scy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUZBMzAzQzEzMTZD
MjlDMDBDMEJGQzUgLyogUmVuZGVyTWVkaWFDb250cm9scy5jcHAgKi87IH07CiAJCTQxRkEzMDNG
MTMxNkMyOUMwMEMwQkZDNSAvKiBSZW5kZXJNZWRpYUNvbnRyb2xzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUZBMzAzRDEzMTZDMjlDMDBDMEJGQzUg
LyogUmVuZGVyTWVkaWFDb250cm9scy5oICovOyB9OwogCQk0MzA2RTRFNjE0OTU1NTQzMDA3RjE3
QUMgLyogS2lsbFJpbmdOb25lLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQzMDZFNEU1MTQ5NTU1NDMwMDdGMTdBQyAvKiBLaWxsUmluZ05vbmUuY3Bw
ICovOyB9OwpAQCAtODczNyw3ICs4NzM1LDYgQEAKIAkJNDE2MkE0NEQxMDExNDVBRTAwREZGM0VE
IC8qIERlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IERlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE2MkE0NEUxMDExNDVBRTAwREZGM0VEIC8qIERlZGljYXRl
ZFdvcmtlckdsb2JhbFNjb3BlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERl
ZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQxNjJBNDRGMTAxMTQ1QUUwMERGRjNFRCAvKiBEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5p
ZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaWRs
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0MTYyQTQ1MzEwMTE0NUUzMDBERkYzRUQg
LyogSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ3VzdG9t
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE2MkE0NTUxMDExNDY0NzAwREZG
M0VEIC8qIEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNjJBNDU2MTAxMTQ2NDcwMERGRjNFRCAvKiBK
U0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDE2RTI5QTUxMDJGQTk2MjAwN0ZDMTRFIC8qIFdvcmtlclJlcG9ydGluZ1By
b3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdvcmtlclJlcG9ydGluZ1By
b3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04ODExLDcgKzg4MDgsNiBAQAog
CQk0MUY1NEY4NzFDNTBDNEY2MDAzMzg0ODggLyogRmV0Y2hSZXF1ZXN0LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZldGNoUmVxdWVzdC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQxRjU0Rjg4MUM1MEM0RjYwMDMzODQ4OCAvKiBGZXRjaFJlcXVl
c3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmV0Y2hSZXF1ZXN0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRjU0Rjg5MUM1MEM0RjYwMDMzODQ4OCAvKiBG
ZXRjaFJlcXVlc3QuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEZldGNoUmVxdWVzdC5pZGw7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQxRjU4NEM2MTA0NjUyQ0IwMDlDQUE2NCAv
KiBKU01lc3NhZ2VQb3J0Q3VzdG9tLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpTTWVzc2FnZVBvcnRDdXN0b20uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFG
QTMwM0MxMzE2QzI5QzAwQzBCRkM1IC8qIFJlbmRlck1lZGlhQ29udHJvbHMuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyTWVkaWFDb250cm9scy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRkEzMDNEMTMxNkMyOUMwMEMwQkZDNSAvKiBS
ZW5kZXJNZWRpYUNvbnRyb2xzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJl
bmRlck1lZGlhQ29udHJvbHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDMwNkU0
RTUxNDk1NTU0MzAwN0YxN0FDIC8qIEtpbGxSaW5nTm9uZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBLaWxsUmluZ05vbmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMjIwNTcsNyArMjIwNTMsNiBAQAogCQkJCURFQzI5NzVEMUI0REVCMkEwMDVG
NTk0NSAvKiBKU0N1c3RvbUV2ZW50Q3VzdG9tLmNwcCAqLywKIAkJCQkwN0ZCREUyQjE4RkVEMTc4
MDAxQTdDRkYgLyogSlNEYXRhQ3VlQ3VzdG9tLmNwcCAqLywKIAkJCQlCQ0E4M0U1MTBEN0NFMjA1
MDAzNDIxQTggLyogSlNEYXRhVHJhbnNmZXJDdXN0b20uY3BwICovLAotCQkJCTQxNjJBNDUzMTAx
MTQ1RTMwMERGRjNFRCAvKiBKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ3VzdG9tLmNwcCAq
LywKIAkJCQkzMUZCMUE2QjEyMEE1RDY5MDBEQzAyQTAgLyogSlNEZXZpY2VNb3Rpb25FdmVudEN1
c3RvbS5jcHAgKi8sCiAJCQkJNTkwRTFCNEExMUU0RUY3MDAwNjlGNzg0IC8qIEpTRGV2aWNlT3Jp
ZW50YXRpb25FdmVudEN1c3RvbS5jcHAgKi8sCiAJCQkJNDlDN0JBOEMxMDQyRjVCMTAwMDlENDQ3
IC8qIEpTRG9jdW1lbnRDdXN0b20uY3BwICovLApAQCAtMjIxMTMsNyArMjIxMDgsNiBAQAogCQkJ
CUUxQTVGOTlBMEU3RUFBMjUwMEFGODVFQSAvKiBKU01lc3NhZ2VDaGFubmVsQ3VzdG9tLmNwcCAq
LywKIAkJCQk0MTBCN0U3MTEwNDVGQUIwMDBEODIyNEYgLyogSlNNZXNzYWdlRXZlbnRDdXN0b20u
Y3BwICovLAogCQkJCUUxQURFRDQ2MEU3NkI4REQwMDRBMUE1RSAvKiBKU01lc3NhZ2VQb3J0Q3Vz
dG9tLmNwcCAqLywKLQkJCQk0MUY1ODRDNjEwNDY1MkNCMDA5Q0FBNjQgLyogSlNNZXNzYWdlUG9y
dEN1c3RvbS5oICovLAogCQkJCUExRTVCMzFEMUFBRDFEQTQwMDZFQkVGQiAvKiBKU01vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3NDdXN0b20uY3BwICovLAogCQkJCUM2RjA5MTdFMTQzQTJCQjkwMDY4
NTg0OSAvKiBKU011dGF0aW9uT2JzZXJ2ZXJDdXN0b20uY3BwICovLAogCQkJCUJDRDlDMjVGMEMx
N0FBNjcwMDVDOTBBMiAvKiBKU05hbWVkTm9kZU1hcEN1c3RvbS5jcHAgKi8sCkBAIC0yNjMzMSw3
ICsyNjMyNSw2IEBACiAJCQkJRTEwNzQwMEUwRTc3QkRDMDAwMzNBRjI0IC8qIEpTTWVzc2FnZUNo
YW5uZWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTc1NzkzRUM5MEQwQ0U3MkQwMDdGQzBBQyAvKiBK
U01lc3NhZ2VFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFBREVEREEwRTc2QkQ5MzAwNEEx
QTVFIC8qIEpTTWVzc2FnZVBvcnQuaCBpbiBIZWFkZXJzICovLAotCQkJCTQxRjU4NEM3MTA0NjUy
Q0IwMDlDQUE2NCAvKiBKU01lc3NhZ2VQb3J0Q3VzdG9tLmggaW4gSGVhZGVycyAqLywKIAkJCQky
RDZGM0U5NTFDMUY4NTU1MDA2MURCRDQgLyogSlNNb2NrUGFnZU92ZXJsYXkuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE4NjYyOUQxMDlEQTJCNDgwMDk2MzNBNSAvKiBKU01vdXNlRXZlbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTgzMEEzNkJEMURBQzVGQUQwMDZEN0QwOSAvKiBKU01vdXNlRXZlbnRJ
bml0LmggaW4gSGVhZGVycyAqLywKQEAgLTI5ODQ5LDcgKzI5ODQyLDYgQEAKIAkJCQlCQ0E4M0U0
RjBEN0NFMUU5MDAzNDIxQTggLyogSlNEYXRhVHJhbnNmZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQkNBODNFNTIwRDdDRTIwNTAwMzQyMUE4IC8qIEpTRGF0YVRyYW5zZmVyQ3VzdG9tLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTQxNjJBNDU3MTAxMTQ2NDcwMERGRjNFRCAvKiBKU0RlZGljYXRl
ZFdvcmtlckdsb2JhbFNjb3BlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTQxNjJBNDU0MTAxMTQ1
RTMwMERGRjNFRCAvKiBKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ3VzdG9tLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUZEQTE1RUQxMTJCMDNGOTQwMDNBNTgzQSAvKiBKU0RlbGF5Tm9kZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkzMUZCMUE2NTEyMEE1RDNGMDBEQzAyQTAgLyogSlNEZXZp
Y2VNb3Rpb25FdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMUZCMUE2QzEyMEE1RDY5MDBE
QzAyQTAgLyogSlNEZXZpY2VNb3Rpb25FdmVudEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvSURMVHlwZXMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL0lETFR5cGVzLmgJKHJldmlzaW9u
IDIwOTI1NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvSURMVHlwZXMuaAko
d29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIEFy
cmF5QnVmZmVyOwogY2xhc3MgQXJyYXlCdWZmZXJWaWV3OwogY2xhc3MgSlNWYWx1ZTsKK2NsYXNz
IEpTT2JqZWN0OwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIFN0cm9uZzsKIH0KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpAQCAtOTQsNyArOTYsNyBAQCBzdHJ1Y3QgSURMRE9NU3RyaW5nIDog
SURMU3RyaW5nIHsgfTsKIHN0cnVjdCBJRExCeXRlU3RyaW5nIDogSURMU3RyaW5nIHsgfTsKIHN0
cnVjdCBJRExVU1ZTdHJpbmcgOiBJRExTdHJpbmcgeyB9OwogCi1zdHJ1Y3QgSURMT2JqZWN0IDog
SURMVW5zdXBwb3J0ZWRUeXBlIHsgfTsKK3N0cnVjdCBJRExPYmplY3QgOiBJRExUeXBlPEpTQzo6
U3Ryb25nPEpTQzo6SlNPYmplY3Q+PiB7IH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVj
dCBJRExXcmFwcGVyIDogSURMVHlwZTxSZWZQdHI8VD4+IHsKICAgICB1c2luZyBSYXdUeXBlID0g
VDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0Fs
bEluT25lLmNwcAkocmV2aXNpb24gMjA5MjU1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNCaW5kaW5nc0FsbEluT25lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjQsNyArNjQsNiBA
QAogI2luY2x1ZGUgIkpTRE9NV3JhcHBlci5jcHAiCiAjaW5jbHVkZSAiSlNEYXRhQ3VlQ3VzdG9t
LmNwcCIKICNpbmNsdWRlICJKU0RhdGFUcmFuc2ZlckN1c3RvbS5jcHAiCi0jaW5jbHVkZSAiSlNE
ZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNEZXZpY2VP
cmllbnRhdGlvbkV2ZW50Q3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU0RpY3Rpb25hcnkuY3BwIgog
I2luY2x1ZGUgIkpTRG9jdW1lbnRDdXN0b20uY3BwIgpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCShyZXZpc2lvbiAyMDkyNTUpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
ODYsNiArMjg2LDkgQEAgc3RhdGljIEpTVmFsdWUgY3JlYXRlRE9NRXhjZXB0aW9uKEV4ZWNTdAog
ICAgICAgICByZXR1cm4gY3JlYXRlUmFuZ2VFcnJvcihleGVjLCAqbWVzc2FnZSk7CiAgICAgfQog
CisgICAgaWYgKGVjID09IFN0YWNrT3ZlcmZsb3dFcnJvcikKKyAgICAgICAgcmV0dXJuIGNyZWF0
ZVN0YWNrT3ZlcmZsb3dFcnJvcihleGVjKTsKKwogICAgIC8vIEZJWE1FOiBBbGwgY2FsbGVycyB0
byBzZXRET01FeGNlcHRpb24gbmVlZCB0byBwYXNzIGluIHRoZSByaWdodCBnbG9iYWwgb2JqZWN0
CiAgICAgLy8gZm9yIG5vdywgd2UncmUgZ29pbmcgdG8gYXNzdW1lIHRoZSBsZXhpY2FsR2xvYmFs
T2JqZWN0LiBXaGljaCBpcyB3cm9uZyBpbiBjYXNlcyBsaWtlIHRoaXM6CiAgICAgLy8gZnJhbWVz
WzBdLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQobnVsbCwgbnVsbCk7IC8vIHRocm93cyBhbiBleGNl
cHRpb24gd2hpY2ggc2hvdWxkIGhhdmUgdGhlIHN1YmZyYW1lcyBwcm90b3R5cGVzLgpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0LmgJKHJldmlzaW9uIDIwOTI1
NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydC5oCSh3b3JraW5n
IGNvcHkpCkBAIC04MTMsNiArODEzLDI1IEBAIHRlbXBsYXRlPD4gc3RydWN0IEpTQ29udmVydGVy
PElETFVTVlN0cmkKIH07CiAKIC8vIE1BUks6IC0KKy8vIE1BUks6IE9iamVjdCB0eXBlCisKK3Rl
bXBsYXRlPD4gc3RydWN0IENvbnZlcnRlcjxJRExPYmplY3Q+IDogRGVmYXVsdENvbnZlcnRlcjxJ
RExPYmplY3Q+IHsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFeGNlcHRpb25UaHJvd2VyID0gRGVm
YXVsdEV4Y2VwdGlvblRocm93ZXI+CisgICAgc3RhdGljIEpTQzo6U3Ryb25nPEpTQzo6SlNPYmpl
Y3Q+IGNvbnZlcnQoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUgdmFsdWUsIEV4
Y2VwdGlvblRocm93ZXImJiBleGNlcHRpb25UaHJvd2VyID0gRXhjZXB0aW9uVGhyb3dlcigpKQor
ICAgIHsKKyAgICAgICAgSlNDOjpWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgICAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICAgICAgaWYgKCF2YWx1ZS5pc09i
amVjdCgpKSB7CisgICAgICAgICAgICBleGNlcHRpb25UaHJvd2VyKHN0YXRlLCBzY29wZSk7Cisg
ICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICB9CisgICAgICAgIAorICAgICAgICByZXR1
cm4geyB2bSwgSlNDOjphc09iamVjdCh2YWx1ZSkgfTsKKyAgICB9Cit9OworCisvLyBNQVJLOiAt
CiAvLyBNQVJLOiBBcnJheS1saWtlIHR5cGVzCiAKIG5hbWVzcGFjZSBEZXRhaWwgewpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAko
cmV2aXNpb24gMjA5MjU1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5k
b3dDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw2IEBACiAjaW5jbHVkZSAi
SlNIVE1MT3B0aW9uRWxlbWVudC5oIgogI2luY2x1ZGUgIkpTSURCRmFjdG9yeS5oIgogI2luY2x1
ZGUgIkpTSW1hZ2VDb25zdHJ1Y3Rvci5oIgotI2luY2x1ZGUgIkpTTWVzc2FnZVBvcnRDdXN0b20u
aCIKICNpbmNsdWRlICJKU1dvcmtlci5oIgogI2luY2x1ZGUgIkxvY2F0aW9uLmgiCiAjaW5jbHVk
ZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgpAQCAtNDg5LDUwICs0ODgsNiBAQCBKU1ZhbHVl
IEpTRE9NV2luZG93OjpzaG93TW9kYWxEaWFsb2coRXhlCiAgICAgcmV0dXJuIGhhbmRsZXIucmV0
dXJuVmFsdWUoKTsKIH0KIAotc3RhdGljIEpTVmFsdWUgaGFuZGxlUG9zdE1lc3NhZ2UoRE9NV2lu
ZG93JiBpbXBsLCBFeGVjU3RhdGUmIHN0YXRlKQotewotICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7
Ci0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotCi0gICAgaWYgKFVO
TElLRUxZKHN0YXRlLmFyZ3VtZW50Q291bnQoKSA8IDIpKQotICAgICAgICByZXR1cm4gdGhyb3dF
eGNlcHRpb24oJnN0YXRlLCBzY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0
YXRlKSk7Ci0KLSAgICBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4gbWVzc2FnZVBvcnRzOwot
ICAgIFZlY3RvcjxSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4+IGFycmF5QnVmZmVyczsKLQotICAg
IC8vIFRoaXMgZnVuY3Rpb24gaGFzIHZhcmlhYmxlIGFyZ3VtZW50cyBhbmQgY2FuIGJlOgotICAg
IC8vIFBlciBjdXJyZW50IHNwZWM6Ci0gICAgLy8gICBwb3N0TWVzc2FnZShtZXNzYWdlLCB0YXJn
ZXRPcmlnaW4pCi0gICAgLy8gICBwb3N0TWVzc2FnZShtZXNzYWdlLCB0YXJnZXRPcmlnaW4sIHtz
ZXF1ZW5jZSBvZiB0cmFuc2ZlcnJhYmxlc30pCi0gICAgLy8gTGVnYWN5IG5vbi1zdGFuZGFyZCBp
bXBsZW1lbnRhdGlvbnMgaW4gd2Via2l0IGFsbG93ZWQ6Ci0gICAgLy8gICBwb3N0TWVzc2FnZSht
ZXNzYWdlLCB7c2VxdWVuY2Ugb2YgdHJhbnNmZXJyYWJsZXN9LCB0YXJnZXRPcmlnaW4pOwotICAg
IGludCB0YXJnZXRPcmlnaW5BcmdJbmRleCA9IDE7Ci0gICAgaWYgKHN0YXRlLmFyZ3VtZW50Q291
bnQoKSA+IDIpIHsKLSAgICAgICAgaW50IHRyYW5zZmVyYWJsZXNBcmdJbmRleCA9IDI7Ci0gICAg
ICAgIGlmIChzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgyKS5pc1N0cmluZygpKSB7Ci0gICAgICAg
ICAgICB0YXJnZXRPcmlnaW5BcmdJbmRleCA9IDI7Ci0gICAgICAgICAgICB0cmFuc2ZlcmFibGVz
QXJnSW5kZXggPSAxOwotICAgICAgICB9Ci0gICAgICAgIGV4dHJhY3RUcmFuc2ZlcmFibGVzKHN0
YXRlLCBzdGF0ZS5hcmd1bWVudCh0cmFuc2ZlcmFibGVzQXJnSW5kZXgpLCBtZXNzYWdlUG9ydHMs
IGFycmF5QnVmZmVycyk7Ci0gICAgfQotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpT
VmFsdWUoKSk7Ci0KLSAgICBhdXRvIG1lc3NhZ2UgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNy
ZWF0ZShzdGF0ZSwgc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMCksIG1lc3NhZ2VQb3J0cywgV1RG
TW92ZShhcnJheUJ1ZmZlcnMpKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1Zh
bHVlKCkpOwotCi0gICAgU3RyaW5nIHRhcmdldE9yaWdpbiA9IGNvbnZlcnQ8SURMTnVsbGFibGU8
SURMVVNWU3RyaW5nPj4oc3RhdGUsIHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KHRhcmdldE9yaWdp
bkFyZ0luZGV4KSk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZSgpKTsK
LQotICAgIHByb3BhZ2F0ZUV4Y2VwdGlvbihzdGF0ZSwgc2NvcGUsIGltcGwucG9zdE1lc3NhZ2Uo
bWVzc2FnZS5yZWxlYXNlTm9uTnVsbCgpLCBXVEZNb3ZlKG1lc3NhZ2VQb3J0cyksIHRhcmdldE9y
aWdpbiwgY2FsbGVyRE9NV2luZG93KCZzdGF0ZSkpKTsKLQotICAgIHJldHVybiBqc1VuZGVmaW5l
ZCgpOwotfQotCi1KU1ZhbHVlIEpTRE9NV2luZG93Ojpwb3N0TWVzc2FnZShFeGVjU3RhdGUmIHN0
YXRlKQotewotICAgIHJldHVybiBoYW5kbGVQb3N0TWVzc2FnZSh3cmFwcGVkKCksIHN0YXRlKTsK
LX0KLQogSlNWYWx1ZSBKU0RPTVdpbmRvdzo6c2V0VGltZW91dChFeGVjU3RhdGUmIHN0YXRlKQog
ewogICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ3VzdG9tLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3Bl
Q3VzdG9tLmNwcAkocmV2aXNpb24gMjA5MjU1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUN1c3RvbS5jcHAJKG5vbmV4aXN0ZW50KQpA
QCAtMSw0NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlLCBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTEgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgot
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSlNEZWRp
Y2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5oIgotCi0jaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCi0j
aW5jbHVkZSAiSlNNZXNzYWdlUG9ydEN1c3RvbS5oIgotCi11c2luZyBuYW1lc3BhY2UgSlNDOwot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUpTQzo6SlNWYWx1ZSBKU0RlZGljYXRlZFdvcmtlckds
b2JhbFNjb3BlOjpwb3N0TWVzc2FnZShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUpCi17Ci0gICAgcmV0
dXJuIGhhbmRsZVBvc3RNZXNzYWdlKHN0YXRlLCB3cmFwcGVkKCkpOwotfQotCi19IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ3VzdG9tLmNwcApfX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRl
bGV0ZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTEgKzAsMCAjIwotbmF0aXZlClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVz
c2FnZVBvcnRDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTTWVzc2FnZVBvcnRDdXN0b20uY3BwCShyZXZpc2lvbiAyMDkyNTUpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VQb3J0Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjcsMjAgKzI3LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJKU01l
c3NhZ2VQb3J0LmgiCiAKLSNpbmNsdWRlICJFdmVudC5oIgotI2luY2x1ZGUgIkV4Y2VwdGlvbkNv
ZGUuaCIKLSNpbmNsdWRlICJGcmFtZS5oIgotI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgotI2lu
Y2x1ZGUgIkpTRE9NR2xvYmFsT2JqZWN0LmgiCi0jaW5jbHVkZSAiSlNFdmVudC5oIgotI2luY2x1
ZGUgIkpTRXZlbnRMaXN0ZW5lci5oIgotI2luY2x1ZGUgIkpTTWVzc2FnZVBvcnRDdXN0b20uaCIK
LSNpbmNsdWRlICJNZXNzYWdlUG9ydC5oIgotI2luY2x1ZGUgPGhlYXAvU2xvdFZpc2l0b3JJbmxp
bmVzLmg+Ci0jaW5jbHVkZSA8cnVudGltZS9FcnJvci5oPgotI2luY2x1ZGUgPHJ1bnRpbWUvSlNB
cnJheUJ1ZmZlci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgotCiB1c2lu
ZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01Miw1MyArMzgsNCBA
QCB2b2lkIEpTTWVzc2FnZVBvcnQ6OnZpc2l0QWRkaXRpb25hbENoaWxkCiAgICAgICAgIHZpc2l0
b3IuYWRkT3BhcXVlUm9vdChwb3J0KTsKIH0KIAotSlNDOjpKU1ZhbHVlIEpTTWVzc2FnZVBvcnQ6
OnBvc3RNZXNzYWdlKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSkKLXsKLSAgICByZXR1cm4gaGFuZGxl
UG9zdE1lc3NhZ2Uoc3RhdGUsIHdyYXBwZWQoKSk7Ci19Ci0KLXZvaWQgZXh0cmFjdFRyYW5zZmVy
YWJsZXMoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUgdmFsdWUsIFZlY3RvcjxS
ZWZQdHI8TWVzc2FnZVBvcnQ+PiYgcG9ydEFycmF5LCBWZWN0b3I8UmVmUHRyPEpTQzo6QXJyYXlC
dWZmZXI+PiYgYXJyYXlCdWZmZXJzKQotewotICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7Ci0gICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotCi0gICAgaWYgKHZhbHVlLmlz
VW5kZWZpbmVkT3JOdWxsKCkpIHsKLSAgICAgICAgcG9ydEFycmF5LnJlc2l6ZSgwKTsKLSAgICAg
ICAgYXJyYXlCdWZmZXJzLnJlc2l6ZSgwKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IC8vIFZhbGlkYXRpb24gb2Ygc2VxdWVuY2UgdHlwZXMsIHBlciBXZWJJREwgc3BlYyA0LjEuMTMu
Ci0gICAgdW5zaWduZWQgbGVuZ3RoID0gMDsKLSAgICBKU09iamVjdCogb2JqZWN0ID0gdG9KU1Nl
cXVlbmNlKHN0YXRlLCB2YWx1ZSwgbGVuZ3RoKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB2b2lkKCkpOwotCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMCA7IGkgPCBsZW5ndGg7ICsr
aSkgewotICAgICAgICBKU1ZhbHVlIHZhbHVlID0gb2JqZWN0LT5nZXQoJnN0YXRlLCBpKTsKLSAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKLQotICAgICAgICBpZiAo
dmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkgewotICAgICAgICAgICAgc2V0RE9NRXhjZXB0aW9u
KCZzdGF0ZSwgSU5WQUxJRF9TVEFURV9FUlIpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICB9Ci0KLSAgICAgICAgLy8gVmFsaWRhdGlvbiBvZiBPYmplY3RzIGltcGxlbWVudGluZyBhbiBp
bnRlcmZhY2UsIHBlciBXZWJJREwgc3BlYyA0LjEuMTUuCi0gICAgICAgIGlmIChSZWZQdHI8TWVz
c2FnZVBvcnQ+IHBvcnQgPSBKU01lc3NhZ2VQb3J0Ojp0b1dyYXBwZWQodmFsdWUpKSB7Ci0gICAg
ICAgICAgICAvLyBDaGVjayBmb3IgZHVwbGljYXRlIHBvcnRzLgotICAgICAgICAgICAgaWYgKHBv
cnRBcnJheS5jb250YWlucyhwb3J0KSkgewotICAgICAgICAgICAgICAgIHNldERPTUV4Y2VwdGlv
bigmc3RhdGUsIElOVkFMSURfU1RBVEVfRVJSKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICBwb3J0QXJyYXkuYXBwZW5kKFdURk1vdmUocG9ydCkp
OwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaWYgKFJlZlB0cjxBcnJheUJ1ZmZlcj4g
YXJyYXlCdWZmZXIgPSB0b1Bvc3NpYmx5U2hhcmVkQXJyYXlCdWZmZXIodmFsdWUpKQotICAgICAg
ICAgICAgICAgIGFycmF5QnVmZmVycy5hcHBlbmQoV1RGTW92ZShhcnJheUJ1ZmZlcikpOwotICAg
ICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBz
Y29wZSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICB9
Ci0gICAgfQotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VQb3J0Q3VzdG9tLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5oCShyZXZpc2lvbiAyMDky
NTUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VQb3J0Q3VzdG9tLmgJ
KG5vbmV4aXN0ZW50KQpAQCAtMSw2NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
Ci0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiTWVz
c2FnZVBvcnQuaCIKLSNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+Ci0jaW5jbHVkZSA8cnVudGlt
ZS9KU0NJbmxpbmVzLmg+Ci0jaW5jbHVkZSA8cnVudGltZS9KU0NKU1ZhbHVlLmg+Ci0jaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi12b2lkIGV4dHJhY3RU
cmFuc2ZlcmFibGVzKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlLCBWZWN0b3I8UmVmUHRy
PE1lc3NhZ2VQb3J0Pj4mLCBWZWN0b3I8UmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+PiYpOwotCi0v
LyBIZWxwZXIgZnVuY3Rpb24gdG8gY29udmVydCBmcm9tIEpTIHBvc3RNZXNzYWdlIGFyZ3VtZW50
cyB0byBXZWJDb3JlIHBvc3RNZXNzYWdlIGFyZ3VtZW50cy4KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+
IGlubGluZSBKU0M6OkpTVmFsdWUgaGFuZGxlUG9zdE1lc3NhZ2UoSlNDOjpFeGVjU3RhdGUmIHN0
YXRlLCBUJiBvYmplY3QpCi17Ci0gICAgSlNDOjpWTSYgdm0gPSBzdGF0ZS52bSgpOwotICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLQotICAgIGlmIChVTkxJS0VMWShz
dGF0ZS5hcmd1bWVudENvdW50KCkgPCAxKSkKLSAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9u
KCZzdGF0ZSwgc2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOwot
Ci0gICAgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+IG1lc3NhZ2VQb3J0QXJyYXk7Ci0gICAg
VmVjdG9yPFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPj4gYXJyYXlCdWZmZXJBcnJheTsKLSAgICBl
eHRyYWN0VHJhbnNmZXJhYmxlcyhzdGF0ZSwgc3RhdGUuYXJndW1lbnQoMSksIG1lc3NhZ2VQb3J0
QXJyYXksIGFycmF5QnVmZmVyQXJyYXkpOwotCi0gICAgYXV0byBtZXNzYWdlID0gU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlOjpjcmVhdGUoc3RhdGUsIHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApLCBt
ZXNzYWdlUG9ydEFycmF5LCBXVEZNb3ZlKGFycmF5QnVmZmVyQXJyYXkpKTsKLSAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBKU0M6OkpTVmFsdWUoKSk7Ci0KLSAgICBwcm9wYWdhdGVFeGNl
cHRpb24oc3RhdGUsIHNjb3BlLCBvYmplY3QucG9zdE1lc3NhZ2UoV1RGTW92ZShtZXNzYWdlKSwg
V1RGTW92ZShtZXNzYWdlUG9ydEFycmF5KSkpOwotICAgIHJldHVybiBKU0M6OmpzVW5kZWZpbmVk
KCk7Ci19Ci0KLX0KClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTTWVzc2FnZVBvcnRDdXN0b20uaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjplb2wtc3R5
bGUKIyMgLTEgKzAsMCAjIwotbmF0aXZlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ3VzdG9tLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckN1c3RvbS5jcHAJ
KHJldmlzaW9uIDIwOTI1NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2Vy
Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNiBAQAogI2luY2x1ZGUgIkpT
RE9NQmluZGluZy5oIgogI2luY2x1ZGUgIkpTRE9NR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAi
SlNET01XaW5kb3dDdXN0b20uaCIKLSNpbmNsdWRlICJKU01lc3NhZ2VQb3J0Q3VzdG9tLmgiCiAj
aW5jbHVkZSAiV29ya2VyLmgiCiAjaW5jbHVkZSA8cnVudGltZS9FcnJvci5oPgogCkBAIC0zOSwx
MSArMzgsNiBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LUpTQzo6SlNWYWx1ZSBKU1dvcmtlcjo6cG9zdE1lc3NhZ2UoSlNDOjpFeGVjU3RhdGUmIHN0YXRl
KQotewotICAgIHJldHVybiBoYW5kbGVQb3N0TWVzc2FnZShzdGF0ZSwgd3JhcHBlZCgpKTsKLX0K
LQogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU1dvcmtlcihFeGVjU3Rh
dGUmIHN0YXRlKQogewogICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAJKHJl
dmlzaW9uIDIwOTI1NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkyLDYgKzkyLDE2IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogc3RhdGljIGNvbnN0IHVuc2lnbmVkIG1heGltdW1GaWx0ZXJSZWN1cnNp
b24gPSA0MDAwMDsKIAorZW51bSBjbGFzcyBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZSB7CisgICAg
U3VjY2Vzc2Z1bGx5Q29tcGxldGVkLAorICAgIFN0YWNrT3ZlcmZsb3dFcnJvciwKKyAgICBJbnRl
cnJ1cHRlZEV4ZWN1dGlvbkVycm9yLAorICAgIFZhbGlkYXRpb25FcnJvciwKKyAgICBFeGlzdGlu
Z0V4Y2VwdGlvbkVycm9yLAorICAgIERhdGFDbG9uZUVycm9yLAorICAgIFVuc3BlY2lmaWVkRXJy
b3IKK307CisKIGVudW0gV2Fsa2VyU3RhdGUgeyBTdGF0ZVVua25vd24sIEFycmF5U3RhcnRTdGF0
ZSwgQXJyYXlTdGFydFZpc2l0TWVtYmVyLCBBcnJheUVuZFZpc2l0TWVtYmVyLAogICAgIE9iamVj
dFN0YXJ0U3RhdGUsIE9iamVjdFN0YXJ0VmlzaXRNZW1iZXIsIE9iamVjdEVuZFZpc2l0TWVtYmVy
LAogICAgIE1hcERhdGFTdGFydFZpc2l0RW50cnksIE1hcERhdGFFbmRWaXNpdEtleSwgTWFwRGF0
YUVuZFZpc2l0VmFsdWUsCkBAIC0zNzQsNyArMzg0LDcgQEAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IFN0cmluZ0RhdGFJczhCaXRGbAogICogICAgPGZhY3RvclNpemU6dWludDMyX3Q+IDxmYWN0b3I6
Ynl0ZXtmYWN0b3JTaXplfT4gPGNydEV4cG9uZW50U2l6ZTp1aW50MzJfdD4gPGNydEV4cG9uZW50
OmJ5dGV7Y3J0RXhwb25lbnRTaXplfT4gPGNydENvZWZmaWNpZW50U2l6ZTp1aW50MzJfdD4gPGNy
dENvZWZmaWNpZW50OmJ5dGV7Y3J0Q29lZmZpY2llbnRTaXplfT4KICAqLwogCi10eXBlZGVmIHN0
ZDo6cGFpcjxKU0M6OkpTVmFsdWUsIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlPiBEZXNlcmlhbGl6
YXRpb25SZXN1bHQ7Cit1c2luZyBEZXNlcmlhbGl6YXRpb25SZXN1bHQgPSBzdGQ6OnBhaXI8SlND
OjpKU1ZhbHVlLCBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZT47CiAKIGNsYXNzIENsb25lQmFzZSB7
CiBwcm90ZWN0ZWQ6CkBAIC0zOTEsMTMgKzQwMSw2IEBAIHByb3RlY3RlZDoKICAgICAgICAgcmV0
dXJuIHNjb3BlLmV4Y2VwdGlvbigpOwogICAgIH0KIAotICAgIHZvaWQgdGhyb3dTdGFja092ZXJm
bG93KCkKLSAgICB7Ci0gICAgICAgIFZNJiB2bSA9IG1fZXhlYy0+dm0oKTsKLSAgICAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgICAgICB0aHJvd0V4Y2VwdGlv
bihtX2V4ZWMsIHNjb3BlLCBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IobV9leGVjKSk7Ci0gICAg
fQotCiAgICAgdm9pZCBmYWlsKCkKICAgICB7CiAgICAgICAgIG1fZmFpbGVkID0gdHJ1ZTsKQEAg
LTczMSw3ICs3MzQsNyBAQCBwcml2YXRlOgogICAgICAgICB3cml0ZShzdGF0aWNfY2FzdDx1aW50
MzJfdD4oYXJyYXlCdWZmZXJWaWV3LT5ieXRlTGVuZ3RoKCkpKTsKICAgICAgICAgUmVmUHRyPEFy
cmF5QnVmZmVyPiBhcnJheUJ1ZmZlciA9IGFycmF5QnVmZmVyVmlldy0+cG9zc2libHlTaGFyZWRC
dWZmZXIoKTsKICAgICAgICAgaWYgKCFhcnJheUJ1ZmZlcikgewotICAgICAgICAgICAgY29kZSA9
IFZhbGlkYXRpb25FcnJvcjsKKyAgICAgICAgICAgIGNvZGUgPSBTZXJpYWxpemF0aW9uUmV0dXJu
Q29kZTo6VmFsaWRhdGlvbkVycm9yOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAg
IH0KICAgICAgICAgSlNWYWx1ZSBidWZmZXJPYmogPSB0b0pTKG1fZXhlYywganNDYXN0PEpTRE9N
R2xvYmFsT2JqZWN0Kj4obV9leGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLCBhcnJheUJ1ZmZl
ci5nZXQoKSk7CkBAIC04NDEsMTIgKzg0NCwxMiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgLy8g
TWVzc2FnZVBvcnQgb2JqZWN0IGNvdWxkIG5vdCBiZSBmb3VuZCBpbiB0cmFuc2ZlcnJlZCBtZXNz
YWdlIHBvcnRzCi0gICAgICAgICAgICAgICAgY29kZSA9IFZhbGlkYXRpb25FcnJvcjsKKyAgICAg
ICAgICAgICAgICBjb2RlID0gU2VyaWFsaXphdGlvblJldHVybkNvZGU6OlZhbGlkYXRpb25FcnJv
cjsKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIGlmIChBcnJheUJ1ZmZlciogYXJyYXlCdWZmZXIgPSB0b1Bvc3NpYmx5U2hhcmVkQXJyYXlC
dWZmZXIob2JqKSkgewogICAgICAgICAgICAgICAgIGlmIChhcnJheUJ1ZmZlci0+aXNOZXV0ZXJl
ZCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNvZGUgPSBWYWxpZGF0aW9uRXJyb3I7CisgICAg
ICAgICAgICAgICAgICAgIGNvZGUgPSBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZTo6VmFsaWRhdGlv
bkVycm9yOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgT2JqZWN0UG9vbDo6aXRlcmF0b3IgaW5kZXggPSBtX3RyYW5z
ZmVycmVkQXJyYXlCdWZmZXJzLmZpbmQob2JqKTsKQEAgLTEyMzQsNyArMTIzNyw3IEBAIFNlcmlh
bGl6YXRpb25SZXR1cm5Db2RlIENsb25lU2VyaWFsaXplcjoKICAgICAgICAgICAgIGNhc2UgQXJy
YXlTdGFydFN0YXRlOiB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGlzQXJyYXkoaW5WYWx1ZSkp
OwogICAgICAgICAgICAgICAgIGlmIChpbnB1dE9iamVjdFN0YWNrLnNpemUoKSA+IG1heGltdW1G
aWx0ZXJSZWN1cnNpb24pCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBTdGFja092ZXJmbG93
RXJyb3I7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBTZXJpYWxpemF0aW9uUmV0dXJuQ29k
ZTo6U3RhY2tPdmVyZmxvd0Vycm9yOwogCiAgICAgICAgICAgICAgICAgSlNBcnJheSogaW5BcnJh
eSA9IGFzQXJyYXkoaW5WYWx1ZSk7CiAgICAgICAgICAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0g
aW5BcnJheS0+bGVuZ3RoKCk7CkBAIC0xMjczLDkgKzEyNzYsOSBAQCBTZXJpYWxpemF0aW9uUmV0
dXJuQ29kZSBDbG9uZVNlcmlhbGl6ZXI6CiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAg
ICAgICAgd3JpdGUoaW5kZXgpOwotICAgICAgICAgICAgICAgIFNlcmlhbGl6YXRpb25SZXR1cm5D
b2RlIHRlcm1pbmFsQ29kZSA9IFN1Y2Nlc3NmdWxseUNvbXBsZXRlZDsKKyAgICAgICAgICAgICAg
ICBhdXRvIHRlcm1pbmFsQ29kZSA9IFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlOjpTdWNjZXNzZnVs
bHlDb21wbGV0ZWQ7CiAgICAgICAgICAgICAgICAgaWYgKGR1bXBJZlRlcm1pbmFsKGluVmFsdWUs
IHRlcm1pbmFsQ29kZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHRlcm1pbmFsQ29kZSAh
PSBTdWNjZXNzZnVsbHlDb21wbGV0ZWQpCisgICAgICAgICAgICAgICAgICAgIGlmICh0ZXJtaW5h
bENvZGUgIT0gU2VyaWFsaXphdGlvblJldHVybkNvZGU6OlN1Y2Nlc3NmdWxseUNvbXBsZXRlZCkK
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0ZXJtaW5hbENvZGU7CiAgICAgICAgICAg
ICAgICAgICAgIGluZGV4U3RhY2subGFzdCgpKys7CiAgICAgICAgICAgICAgICAgICAgIGdvdG8g
YXJyYXlTdGFydFZpc2l0TWVtYmVyOwpAQCAtMTI5MSw3ICsxMjk0LDcgQEAgU2VyaWFsaXphdGlv
blJldHVybkNvZGUgQ2xvbmVTZXJpYWxpemVyOgogICAgICAgICAgICAgY2FzZSBPYmplY3RTdGFy
dFN0YXRlOiB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGluVmFsdWUuaXNPYmplY3QoKSk7CiAg
ICAgICAgICAgICAgICAgaWYgKGlucHV0T2JqZWN0U3RhY2suc2l6ZSgpID4gbWF4aW11bUZpbHRl
clJlY3Vyc2lvbikKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFN0YWNrT3ZlcmZsb3dFcnJv
cjsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlOjpT
dGFja092ZXJmbG93RXJyb3I7CiAgICAgICAgICAgICAgICAgSlNPYmplY3QqIGluT2JqZWN0ID0g
YXNPYmplY3QoaW5WYWx1ZSk7CiAgICAgICAgICAgICAgICAgaWYgKCFzdGFydE9iamVjdChpbk9i
amVjdCkpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTMwMCw3ICsxMzAzLDcgQEAg
U2VyaWFsaXphdGlvblJldHVybkNvZGUgQ2xvbmVTZXJpYWxpemVyOgogICAgICAgICAgICAgICAg
IC8vIHRoZSBpbnB1dCBpcyBub3QgYW4gT2JqZWN0IG9iamVjdCB0aGVuIHdlIHNob3VsZCB0aHJv
dwogICAgICAgICAgICAgICAgIC8vIGEgRGF0YUNsb25lRXJyb3IuCiAgICAgICAgICAgICAgICAg
aWYgKGluT2JqZWN0LT5jbGFzc0luZm8oKSAhPSBKU0ZpbmFsT2JqZWN0OjppbmZvKCkpCi0gICAg
ICAgICAgICAgICAgICAgIHJldHVybiBEYXRhQ2xvbmVFcnJvcjsKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlOjpEYXRhQ2xvbmVFcnJvcjsKICAgICAg
ICAgICAgICAgICBpbnB1dE9iamVjdFN0YWNrLmFwcGVuZChpbk9iamVjdCk7CiAgICAgICAgICAg
ICAgICAgaW5kZXhTdGFjay5hcHBlbmQoMCk7CiAgICAgICAgICAgICAgICAgcHJvcGVydHlTdGFj
ay5hcHBlbmQoUHJvcGVydHlOYW1lQXJyYXkobV9leGVjLCBQcm9wZXJ0eU5hbWVNb2RlOjpTdHJp
bmdzKSk7CkBAIC0xMzIxLDcgKzEzMjQsNyBAQCBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZSBDbG9u
ZVNlcmlhbGl6ZXI6CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGluVmFsdWUg
PSBnZXRQcm9wZXJ0eShvYmplY3QsIHByb3BlcnRpZXNbaW5kZXhdKTsKICAgICAgICAgICAgICAg
ICBpZiAoc2hvdWxkVGVybWluYXRlKCkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBFeGlz
dGluZ0V4Y2VwdGlvbkVycm9yOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gU2VyaWFsaXph
dGlvblJldHVybkNvZGU6OkV4aXN0aW5nRXhjZXB0aW9uRXJyb3I7CiAKICAgICAgICAgICAgICAg
ICBpZiAoIWluVmFsdWUpIHsKICAgICAgICAgICAgICAgICAgICAgLy8gUHJvcGVydHkgd2FzIHJl
bW92ZWQgZHVyaW5nIHNlcmlhbGlzYXRpb24KQEAgLTEzMzEsMjAgKzEzMzQsMjAgQEAgU2VyaWFs
aXphdGlvblJldHVybkNvZGUgQ2xvbmVTZXJpYWxpemVyOgogICAgICAgICAgICAgICAgIHdyaXRl
KHByb3BlcnRpZXNbaW5kZXhdKTsKIAogICAgICAgICAgICAgICAgIGlmIChzaG91bGRUZXJtaW5h
dGUoKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEV4aXN0aW5nRXhjZXB0aW9uRXJyb3I7
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZTo6RXhp
c3RpbmdFeGNlcHRpb25FcnJvcjsKIAotICAgICAgICAgICAgICAgIFNlcmlhbGl6YXRpb25SZXR1
cm5Db2RlIHRlcm1pbmFsQ29kZSA9IFN1Y2Nlc3NmdWxseUNvbXBsZXRlZDsKKyAgICAgICAgICAg
ICAgICBhdXRvIHRlcm1pbmFsQ29kZSA9IFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlOjpTdWNjZXNz
ZnVsbHlDb21wbGV0ZWQ7CiAgICAgICAgICAgICAgICAgaWYgKCFkdW1wSWZUZXJtaW5hbChpblZh
bHVlLCB0ZXJtaW5hbENvZGUpKSB7CiAgICAgICAgICAgICAgICAgICAgIHN0YXRlU3RhY2suYXBw
ZW5kKE9iamVjdEVuZFZpc2l0TWVtYmVyKTsKICAgICAgICAgICAgICAgICAgICAgZ290byBzdGF0
ZVVua25vd247CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmICh0ZXJtaW5h
bENvZGUgIT0gU3VjY2Vzc2Z1bGx5Q29tcGxldGVkKQorICAgICAgICAgICAgICAgIGlmICh0ZXJt
aW5hbENvZGUgIT0gU2VyaWFsaXphdGlvblJldHVybkNvZGU6OlN1Y2Nlc3NmdWxseUNvbXBsZXRl
ZCkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRlcm1pbmFsQ29kZTsKICAgICAgICAgICAg
ICAgICBGQUxMVEhST1VHSDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNhc2UgT2JqZWN0
RW5kVmlzaXRNZW1iZXI6IHsKICAgICAgICAgICAgICAgICBpZiAoc2hvdWxkVGVybWluYXRlKCkp
Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yOworICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gU2VyaWFsaXphdGlvblJldHVybkNvZGU6OkV4aXN0aW5n
RXhjZXB0aW9uRXJyb3I7CiAKICAgICAgICAgICAgICAgICBpbmRleFN0YWNrLmxhc3QoKSsrOwog
ICAgICAgICAgICAgICAgIGdvdG8gb2JqZWN0U3RhcnRWaXNpdE1lbWJlcjsKQEAgLTEzNTIsNyAr
MTM1NSw3IEBAIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlIENsb25lU2VyaWFsaXplcjoKICAgICAg
ICAgICAgIG1hcFN0YXJ0U3RhdGU6IHsKICAgICAgICAgICAgICAgICBBU1NFUlQoaW5WYWx1ZS5p
c09iamVjdCgpKTsKICAgICAgICAgICAgICAgICBpZiAoaW5wdXRPYmplY3RTdGFjay5zaXplKCkg
PiBtYXhpbXVtRmlsdGVyUmVjdXJzaW9uKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gU3Rh
Y2tPdmVyZmxvd0Vycm9yOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gU2VyaWFsaXphdGlv
blJldHVybkNvZGU6OlN0YWNrT3ZlcmZsb3dFcnJvcjsKICAgICAgICAgICAgICAgICBKU01hcCog
aW5NYXAgPSBqc0Nhc3Q8SlNNYXAqPihpblZhbHVlKTsKICAgICAgICAgICAgICAgICBpZiAoIXN0
YXJ0TWFwKGluTWFwKSkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xMzk2LDcgKzEz
OTksNyBAQCBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZSBDbG9uZVNlcmlhbGl6ZXI6CiAgICAgICAg
ICAgICBzZXRTdGFydFN0YXRlOiB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGluVmFsdWUuaXNP
YmplY3QoKSk7CiAgICAgICAgICAgICAgICAgaWYgKGlucHV0T2JqZWN0U3RhY2suc2l6ZSgpID4g
bWF4aW11bUZpbHRlclJlY3Vyc2lvbikKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFN0YWNr
T3ZlcmZsb3dFcnJvcjsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFNlcmlhbGl6YXRpb25S
ZXR1cm5Db2RlOjpTdGFja092ZXJmbG93RXJyb3I7CiAgICAgICAgICAgICAgICAgSlNTZXQqIGlu
U2V0ID0ganNDYXN0PEpTU2V0Kj4oaW5WYWx1ZSk7CiAgICAgICAgICAgICAgICAgaWYgKCFzdGFy
dFNldChpblNldCkpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTQzMSw5ICsxNDM0
LDkgQEAgU2VyaWFsaXphdGlvblJldHVybkNvZGUgQ2xvbmVTZXJpYWxpemVyOgogCiAgICAgICAg
ICAgICBzdGF0ZVVua25vd246CiAgICAgICAgICAgICBjYXNlIFN0YXRlVW5rbm93bjogewotICAg
ICAgICAgICAgICAgIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlIHRlcm1pbmFsQ29kZSA9IFN1Y2Nl
c3NmdWxseUNvbXBsZXRlZDsKKyAgICAgICAgICAgICAgICBhdXRvIHRlcm1pbmFsQ29kZSA9IFNl
cmlhbGl6YXRpb25SZXR1cm5Db2RlOjpTdWNjZXNzZnVsbHlDb21wbGV0ZWQ7CiAgICAgICAgICAg
ICAgICAgaWYgKGR1bXBJZlRlcm1pbmFsKGluVmFsdWUsIHRlcm1pbmFsQ29kZSkpIHsKLSAgICAg
ICAgICAgICAgICAgICAgaWYgKHRlcm1pbmFsQ29kZSAhPSBTdWNjZXNzZnVsbHlDb21wbGV0ZWQp
CisgICAgICAgICAgICAgICAgICAgIGlmICh0ZXJtaW5hbENvZGUgIT0gU2VyaWFsaXphdGlvblJl
dHVybkNvZGU6OlN1Y2Nlc3NmdWxseUNvbXBsZXRlZCkKICAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiB0ZXJtaW5hbENvZGU7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgICAgIH0KQEAgLTE0NTQsMTMgKzE0NTcsMTEgQEAgU2VyaWFsaXphdGlvblJldHVybkNv
ZGUgQ2xvbmVTZXJpYWxpemVyOgogICAgICAgICBzdGF0ZVN0YWNrLnJlbW92ZUxhc3QoKTsKICAg
ICB9CiAgICAgaWYgKG1fZmFpbGVkKQotICAgICAgICByZXR1cm4gVW5zcGVjaWZpZWRFcnJvcjsK
KyAgICAgICAgcmV0dXJuIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlOjpVbnNwZWNpZmllZEVycm9y
OwogCi0gICAgcmV0dXJuIFN1Y2Nlc3NmdWxseUNvbXBsZXRlZDsKKyAgICByZXR1cm4gU2VyaWFs
aXphdGlvblJldHVybkNvZGU6OlN1Y2Nlc3NmdWxseUNvbXBsZXRlZDsKIH0KIAotdHlwZWRlZiBW
ZWN0b3I8SlNDOjpBcnJheUJ1ZmZlckNvbnRlbnRzPiBBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk7
Ci0KIGNsYXNzIENsb25lRGVzZXJpYWxpemVyIDogQ2xvbmVCYXNlIHsKIHB1YmxpYzoKICAgICBz
dGF0aWMgU3RyaW5nIGRlc2VyaWFsaXplU3RyaW5nKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYnVm
ZmVyKQpAQCAtMTQ4OSwxMCArMTQ5MCwxMCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIERlc2VyaWFs
aXphdGlvblJlc3VsdCBkZXNlcmlhbGl6ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYgbWVzc2FnZVBvcnRz
LCBBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkqIGFycmF5QnVmZmVyQ29udGVudHNBcnJheSwgY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiBidWZmZXIsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJM
cywgY29uc3QgVmVjdG9yPFN0cmluZz4gYmxvYkZpbGVQYXRocykKICAgICB7CiAgICAgICAgIGlm
ICghYnVmZmVyLnNpemUoKSkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihqc051
bGwoKSwgVW5zcGVjaWZpZWRFcnJvcik7CisgICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3Bh
aXIoanNOdWxsKCksIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlOjpVbnNwZWNpZmllZEVycm9yKTsK
ICAgICAgICAgQ2xvbmVEZXNlcmlhbGl6ZXIgZGVzZXJpYWxpemVyKGV4ZWMsIGdsb2JhbE9iamVj
dCwgbWVzc2FnZVBvcnRzLCBhcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXksIGJ1ZmZlciwgYmxvYlVS
THMsIGJsb2JGaWxlUGF0aHMpOwogICAgICAgICBpZiAoIWRlc2VyaWFsaXplci5pc1ZhbGlkKCkp
Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIoSlNWYWx1ZSgpLCBWYWxpZGF0aW9u
RXJyb3IpOworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKEpTVmFsdWUoKSwgU2Vy
aWFsaXphdGlvblJldHVybkNvZGU6OlZhbGlkYXRpb25FcnJvcik7CiAgICAgICAgIHJldHVybiBk
ZXNlcmlhbGl6ZXIuZGVzZXJpYWxpemUoKTsKICAgICB9CiAKQEAgLTE1NjksMTMgKzE1NzAsNiBA
QCBwcml2YXRlOgogCiAgICAgRGVzZXJpYWxpemF0aW9uUmVzdWx0IGRlc2VyaWFsaXplKCk7CiAK
LSAgICB2b2lkIHRocm93VmFsaWRhdGlvbkVycm9yKCkKLSAgICB7Ci0gICAgICAgIFZNJiB2bSA9
IG1fZXhlYy0+dm0oKTsKLSAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwotICAgICAgICB0aHJvd1R5cGVFcnJvcihtX2V4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwo
IlVuYWJsZSB0byBkZXNlcmlhbGl6ZSBkYXRhLiIpKTsKLSAgICB9Ci0KICAgICBib29sIGlzVmFs
aWQoKSBjb25zdCB7IHJldHVybiBtX3ZlcnNpb24gPD0gQ3VycmVudFZlcnNpb247IH0KIAogICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBib29sIHJlYWRMaXR0bGVFbmRpYW4oVCYgdmFsdWUpCkBA
IC0yNTI4LDcgKzI1MjIsNyBAQCBEZXNlcmlhbGl6YXRpb25SZXN1bHQgQ2xvbmVEZXNlcmlhbGl6
ZXI6CiAgICAgICAgIG9iamVjdFN0YXJ0U3RhdGU6CiAgICAgICAgIGNhc2UgT2JqZWN0U3RhcnRT
dGF0ZTogewogICAgICAgICAgICAgaWYgKG91dHB1dE9iamVjdFN0YWNrLnNpemUoKSA+IG1heGlt
dW1GaWx0ZXJSZWN1cnNpb24pCi0gICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWly
KEpTVmFsdWUoKSwgU3RhY2tPdmVyZmxvd0Vycm9yKTsKKyAgICAgICAgICAgICAgICByZXR1cm4g
c3RkOjptYWtlX3BhaXIoSlNWYWx1ZSgpLCBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZTo6U3RhY2tP
dmVyZmxvd0Vycm9yKTsKICAgICAgICAgICAgIEpTT2JqZWN0KiBvdXRPYmplY3QgPSBjb25zdHJ1
Y3RFbXB0eU9iamVjdChtX2V4ZWMsIG1fZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSk7
CiAgICAgICAgICAgICBtX2djQnVmZmVyLmFwcGVuZChvdXRPYmplY3QpOwogICAgICAgICAgICAg
b3V0cHV0T2JqZWN0U3RhY2suYXBwZW5kKG91dE9iamVjdCk7CkBAIC0yNTYzLDcgKzI1NTcsNyBA
QCBEZXNlcmlhbGl6YXRpb25SZXN1bHQgQ2xvbmVEZXNlcmlhbGl6ZXI6CiAgICAgICAgIH0KICAg
ICAgICAgbWFwT2JqZWN0U3RhcnRTdGF0ZTogewogICAgICAgICAgICAgaWYgKG91dHB1dE9iamVj
dFN0YWNrLnNpemUoKSA+IG1heGltdW1GaWx0ZXJSZWN1cnNpb24pCi0gICAgICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV9wYWlyKEpTVmFsdWUoKSwgU3RhY2tPdmVyZmxvd0Vycm9yKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIoSlNWYWx1ZSgpLCBTZXJpYWxpemF0
aW9uUmV0dXJuQ29kZTo6U3RhY2tPdmVyZmxvd0Vycm9yKTsKICAgICAgICAgICAgIEpTTWFwKiBt
YXAgPSBKU01hcDo6Y3JlYXRlKG1fZXhlYywgbV9leGVjLT52bSgpLCBtX2dsb2JhbE9iamVjdC0+
bWFwU3RydWN0dXJlKCkpOwogICAgICAgICAgICAgaWYgKFVOTElLRUxZKHNjb3BlLmV4Y2VwdGlv
bigpKSkKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwpAQCAtMjU5NCw3ICsyNTg4LDcgQEAg
RGVzZXJpYWxpemF0aW9uUmVzdWx0IENsb25lRGVzZXJpYWxpemVyOgogCiAgICAgICAgIHNldE9i
amVjdFN0YXJ0U3RhdGU6IHsKICAgICAgICAgICAgIGlmIChvdXRwdXRPYmplY3RTdGFjay5zaXpl
KCkgPiBtYXhpbXVtRmlsdGVyUmVjdXJzaW9uKQotICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6
Om1ha2VfcGFpcihKU1ZhbHVlKCksIFN0YWNrT3ZlcmZsb3dFcnJvcik7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKEpTVmFsdWUoKSwgU2VyaWFsaXphdGlvblJldHVybkNv
ZGU6OlN0YWNrT3ZlcmZsb3dFcnJvcik7CiAgICAgICAgICAgICBKU1NldCogc2V0ID0gSlNTZXQ6
OmNyZWF0ZShtX2V4ZWMsIG1fZXhlYy0+dm0oKSwgbV9nbG9iYWxPYmplY3QtPnNldFN0cnVjdHVy
ZSgpKTsKICAgICAgICAgICAgIGlmIChVTkxJS0VMWShzY29wZS5leGNlcHRpb24oKSkpCiAgICAg
ICAgICAgICAgICAgZ290byBlcnJvcjsKQEAgLTI2NDMsMTAgKzI2MzcsMTAgQEAgRGVzZXJpYWxp
emF0aW9uUmVzdWx0IENsb25lRGVzZXJpYWxpemVyOgogICAgIH0KICAgICBBU1NFUlQob3V0VmFs
dWUpOwogICAgIEFTU0VSVCghbV9mYWlsZWQpOwotICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihv
dXRWYWx1ZSwgU3VjY2Vzc2Z1bGx5Q29tcGxldGVkKTsKKyAgICByZXR1cm4gc3RkOjptYWtlX3Bh
aXIob3V0VmFsdWUsIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlOjpTdWNjZXNzZnVsbHlDb21wbGV0
ZWQpOwogZXJyb3I6CiAgICAgZmFpbCgpOwotICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihKU1Zh
bHVlKCksIFZhbGlkYXRpb25FcnJvcik7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKEpTVmFs
dWUoKSwgU2VyaWFsaXphdGlvblJldHVybkNvZGU6OlZhbGlkYXRpb25FcnJvcik7CiB9CiAKIFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZTo6flNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSgpCkBAIC0yNjY5LDE5
ICsyNjYzLDEyIEBAIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6U2VyaWFsaXplZFNjcmlwdFYKICAg
ICAgICAgbV9ibG9iVVJMcy5hcHBlbmQodXJsLmlzb2xhdGVkQ29weSgpKTsKIH0KIAotc3RkOjp1
bmlxdWVfcHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6QXJyYXlCdWZmZXJDb250ZW50c0FycmF5
PiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OnRyYW5zZmVyQXJyYXlCdWZmZXJzKAotICAgIEV4ZWNT
dGF0ZSogZXhlYywgVmVjdG9yPFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPj4mIGFycmF5QnVmZmVy
cywgU2VyaWFsaXphdGlvblJldHVybkNvZGUmIGNvZGUpCitFeGNlcHRpb25PcjxzdGQ6OnVuaXF1
ZV9wdHI8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5Pj4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjp0
cmFuc2ZlckFycmF5QnVmZmVycyhjb25zdCBWZWN0b3I8UmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+
PiYgYXJyYXlCdWZmZXJzKQogewotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJyYXlCdWZm
ZXJzLnNpemUoKTsgaSsrKSB7Ci0gICAgICAgIGlmIChhcnJheUJ1ZmZlcnNbaV0tPmlzTmV1dGVy
ZWQoKSkgewotICAgICAgICAgICAgY29kZSA9IFZhbGlkYXRpb25FcnJvcjsKLSAgICAgICAgICAg
IHJldHVybiBudWxscHRyOwotICAgICAgICB9Ci0gICAgfQorICAgIGlmIChhcnJheUJ1ZmZlcnMu
aXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGF1dG8gY29udGVudHMg
PSBzdGQ6Om1ha2VfdW5pcXVlPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4oYXJyYXlCdWZmZXJz
LnNpemUoKSk7Ci0gICAgVmVjdG9yPFJlZjxET01XcmFwcGVyV29ybGQ+PiB3b3JsZHM7Ci0gICAg
c3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPihleGVjLT52bSgpLmNsaWVudERhdGEpLT5nZXRB
bGxXb3JsZHMod29ybGRzKTsKIAogICAgIEhhc2hTZXQ8SlNDOjpBcnJheUJ1ZmZlcio+IHZpc2l0
ZWQ7CiAgICAgZm9yIChzaXplX3QgYXJyYXlCdWZmZXJJbmRleCA9IDA7IGFycmF5QnVmZmVySW5k
ZXggPCBhcnJheUJ1ZmZlcnMuc2l6ZSgpOyBhcnJheUJ1ZmZlckluZGV4KyspIHsKQEAgLTI2OTAs
MjkgKzI2NzcsMjAgQEAgc3RkOjp1bmlxdWVfcHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6QQog
ICAgICAgICB2aXNpdGVkLmFkZChhcnJheUJ1ZmZlcnNbYXJyYXlCdWZmZXJJbmRleF0uZ2V0KCkp
OwogCiAgICAgICAgIGJvb2wgcmVzdWx0ID0gYXJyYXlCdWZmZXJzW2FycmF5QnVmZmVySW5kZXhd
LT50cmFuc2ZlclRvKGNvbnRlbnRzLT5hdChhcnJheUJ1ZmZlckluZGV4KSk7Ci0gICAgICAgIGlm
ICghcmVzdWx0KSB7Ci0gICAgICAgICAgICBjb2RlID0gVmFsaWRhdGlvbkVycm9yOwotICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKCFyZXN1bHQpCisg
ICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yIH07CiAgICAgfQotICAgIHJl
dHVybiBjb250ZW50czsKLX0KIAotUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gU2VyaWFs
aXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoRXhlY1N0YXRlJiBleGVjLCBKU1ZhbHVlIHZhbHVlLCBT
ZXJpYWxpemF0aW9uRXJyb3JNb2RlIHRocm93RXhjZXB0aW9ucykKLXsKLSAgICBWZWN0b3I8UmVm
UHRyPE1lc3NhZ2VQb3J0Pj4gbWVzc2FnZVBvcnRzOwotICAgIHJldHVybiBTZXJpYWxpemVkU2Ny
aXB0VmFsdWU6OmNyZWF0ZShleGVjLCB2YWx1ZSwgbWVzc2FnZVBvcnRzLCB7IH0sIHRocm93RXhj
ZXB0aW9ucyk7CisgICAgcmV0dXJuIFdURk1vdmUoY29udGVudHMpOwogfQogCi1SZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShFeGVjU3Rh
dGUmIGV4ZWMsIEpTVmFsdWUgdmFsdWUsIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYgbWVz
c2FnZVBvcnRzLCBWZWN0b3I8UmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+PiYmIGFycmF5QnVmZmVy
cywgU2VyaWFsaXphdGlvbkVycm9yTW9kZSB0aHJvd0V4Y2VwdGlvbnMpCitSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShFeGVjU3RhdGUm
IGV4ZWMsIEpTVmFsdWUgdmFsdWUsIFNlcmlhbGl6YXRpb25FcnJvck1vZGUgdGhyb3dFeGNlcHRp
b25zKQogewogICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXI7CiAgICAgVmVjdG9yPFN0cmluZz4g
YmxvYlVSTHM7Ci0gICAgU2VyaWFsaXphdGlvblJldHVybkNvZGUgY29kZSA9IENsb25lU2VyaWFs
aXplcjo6c2VyaWFsaXplKCZleGVjLCB2YWx1ZSwgbWVzc2FnZVBvcnRzLCBhcnJheUJ1ZmZlcnMs
IGJsb2JVUkxzLCBidWZmZXIpOwotCi0gICAgc3RkOjp1bmlxdWVfcHRyPEFycmF5QnVmZmVyQ29u
dGVudHNBcnJheT4gYXJyYXlCdWZmZXJDb250ZW50c0FycmF5OwotICAgIGlmICghYXJyYXlCdWZm
ZXJzLmlzRW1wdHkoKSAmJiBzZXJpYWxpemF0aW9uRGlkQ29tcGxldGVTdWNjZXNzZnVsbHkoY29k
ZSkpCi0gICAgICAgIGFycmF5QnVmZmVyQ29udGVudHNBcnJheSA9IHRyYW5zZmVyQXJyYXlCdWZm
ZXJzKCZleGVjLCBhcnJheUJ1ZmZlcnMsIGNvZGUpOworICAgIFZlY3RvcjxSZWZQdHI8TWVzc2Fn
ZVBvcnQ+PiBkdW1teU1lc3NhZ2VQb3J0czsKKyAgICBWZWN0b3I8UmVmUHRyPEpTQzo6QXJyYXlC
dWZmZXI+PiBkdW1teUFycmF5QnVmZmVyczsKKyAgICBhdXRvIGNvZGUgPSBDbG9uZVNlcmlhbGl6
ZXI6OnNlcmlhbGl6ZSgmZXhlYywgdmFsdWUsIGR1bW15TWVzc2FnZVBvcnRzLCBkdW1teUFycmF5
QnVmZmVycywgYmxvYlVSTHMsIGJ1ZmZlcik7CiAKICAgICBpZiAodGhyb3dFeGNlcHRpb25zID09
IFRocm93aW5nKQogICAgICAgICBtYXliZVRocm93RXhjZXB0aW9uSWZTZXJpYWxpemF0aW9uRmFp
bGVkKCZleGVjLCBjb2RlKTsKQEAgLTI3MjAsNyArMjY5OCw2MSBAQCBSZWZQdHI8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPiBTZXJpYWxpemVkCiAgICAgaWYgKCFzZXJpYWxpemF0aW9uRGlkQ29tcGxl
dGVTdWNjZXNzZnVsbHkoY29kZSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgU2VyaWFsaXplZFNjcmlwdFZhbHVlKFdURk1vdmUoYnVmZmVyKSwg
YmxvYlVSTHMsIFdURk1vdmUoYXJyYXlCdWZmZXJDb250ZW50c0FycmF5KSkpOworICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShXVEZNb3ZlKGJ1ZmZlciksIGJs
b2JVUkxzLCBudWxscHRyKSk7Cit9CisKK0V4Y2VwdGlvbiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6
OmV4Y2VwdGlvbkZvclNlcmlhbGl6YXRpb25GYWlsdXJlKFNlcmlhbGl6YXRpb25SZXR1cm5Db2Rl
IGNvZGUpCit7CisgICAgQVNTRVJUKGNvZGUgIT0gU2VyaWFsaXphdGlvblJldHVybkNvZGU6OlN1
Y2Nlc3NmdWxseUNvbXBsZXRlZCk7CisgICAgCisgICAgc3dpdGNoIChjb2RlKSB7CisgICAgY2Fz
ZSBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZTo6U3RhY2tPdmVyZmxvd0Vycm9yOgorICAgICAgICBy
ZXR1cm4gRXhjZXB0aW9uIHsgU3RhY2tPdmVyZmxvd0Vycm9yIH07CisgICAgY2FzZSBTZXJpYWxp
emF0aW9uUmV0dXJuQ29kZTo6VmFsaWRhdGlvbkVycm9yOgorICAgICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgVHlwZUVycm9yIH07CisgICAgY2FzZSBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZTo6RGF0
YUNsb25lRXJyb3I6CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBEQVRBX0NMT05FX0VSUiB9
OworICAgIGNhc2UgU2VyaWFsaXphdGlvblJldHVybkNvZGU6OkV4aXN0aW5nRXhjZXB0aW9uRXJy
b3I6CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yIH07
CisgICAgY2FzZSBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZTo6VW5zcGVjaWZpZWRFcnJvcjoKKyAg
ICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciB9OworICAgIGRlZmF1bHQ6CisgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlw
ZUVycm9yIH07CisgICAgfQorfQorCitFeGNlcHRpb25PcjxSZWY8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPj4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoRXhlY1N0YXRlJiBzdGF0ZSwgSlNW
YWx1ZSB2YWx1ZSwgVmVjdG9yPEpTQzo6U3Ryb25nPEpTQzo6SlNPYmplY3Q+PiYmIHRyYW5zZmVy
TGlzdCwgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+JiBtZXNzYWdlUG9ydHMpCit7CisgICAg
VmVjdG9yPFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPj4gYXJyYXlCdWZmZXJzOworICAgIGZvciAo
YXV0byYgdHJhbnNmZXJhYmxlIDogdHJhbnNmZXJMaXN0KSB7CisgICAgICAgIGlmIChSZWZQdHI8
QXJyYXlCdWZmZXI+IGFycmF5QnVmZmVyID0gdG9Qb3NzaWJseVNoYXJlZEFycmF5QnVmZmVyKHRy
YW5zZmVyYWJsZS5nZXQoKSkpIHsKKyAgICAgICAgICAgIGlmIChhcnJheUJ1ZmZlci0+aXNOZXV0
ZXJlZCgpKQorICAgICAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBEQVRBX0NMT05FX0VS
UiB9OworICAgICAgICAgICAgYXJyYXlCdWZmZXJzLmFwcGVuZChXVEZNb3ZlKGFycmF5QnVmZmVy
KSk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoUmVmUHRy
PE1lc3NhZ2VQb3J0PiBwb3J0ID0gSlNNZXNzYWdlUG9ydDo6dG9XcmFwcGVkKHRyYW5zZmVyYWJs
ZS5nZXQoKSkpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBjaGVjayBpZiB0
aGUgcG9ydCBpcyBkZXRhY2hlZCBhcyBwZXIgaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9t
dWx0aXBhZ2UvaW5mcmFzdHJ1Y3R1cmUuaHRtbCNpc3RyYW5zZmVyYWJsZS4KKyAgICAgICAgICAg
IG1lc3NhZ2VQb3J0cy5hcHBlbmQoV1RGTW92ZShwb3J0KSk7CisgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBEQVRBX0NMT05FX0VS
UiB9OworICAgIH0KKworICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXI7CisgICAgVmVjdG9yPFN0
cmluZz4gYmxvYlVSTHM7CisgICAgYXV0byBjb2RlID0gQ2xvbmVTZXJpYWxpemVyOjpzZXJpYWxp
emUoJnN0YXRlLCB2YWx1ZSwgbWVzc2FnZVBvcnRzLCBhcnJheUJ1ZmZlcnMsIGJsb2JVUkxzLCBi
dWZmZXIpOworCisgICAgaWYgKGNvZGUgIT0gU2VyaWFsaXphdGlvblJldHVybkNvZGU6OlN1Y2Nl
c3NmdWxseUNvbXBsZXRlZCkKKyAgICAgICAgcmV0dXJuIGV4Y2VwdGlvbkZvclNlcmlhbGl6YXRp
b25GYWlsdXJlKGNvZGUpOworCisgICAgYXV0byBhcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkgPSB0
cmFuc2ZlckFycmF5QnVmZmVycyhhcnJheUJ1ZmZlcnMpOworICAgIGlmIChhcnJheUJ1ZmZlckNv
bnRlbnRzQXJyYXkuaGFzRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBhcnJheUJ1ZmZlckNv
bnRlbnRzQXJyYXkucmVsZWFzZUV4Y2VwdGlvbigpOworCisgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgU2VyaWFsaXplZFNjcmlwdFZhbHVlKFdURk1vdmUoYnVmZmVyKSwgYmxvYlVSTHMsIGFycmF5
QnVmZmVyQ29udGVudHNBcnJheS5yZWxlYXNlUmV0dXJuVmFsdWUoKSkpOwogfQogCiBSZWZQdHI8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShTdHJp
bmdWaWV3IHN0cmluZykKQEAgLTI4MDQsMjIgKzI4MzYsMjIgQEAgdm9pZCBTZXJpYWxpemVkU2Ny
aXB0VmFsdWU6Om1heWJlVGhyb3dFeAogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgaWYgKGNvZGUgPT0gU3Vj
Y2Vzc2Z1bGx5Q29tcGxldGVkKQorICAgIGlmIChjb2RlID09IFNlcmlhbGl6YXRpb25SZXR1cm5D
b2RlOjpTdWNjZXNzZnVsbHlDb21wbGV0ZWQpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBz
d2l0Y2ggKGNvZGUpIHsKLSAgICBjYXNlIFN0YWNrT3ZlcmZsb3dFcnJvcjoKKyAgICBjYXNlIFNl
cmlhbGl6YXRpb25SZXR1cm5Db2RlOjpTdGFja092ZXJmbG93RXJyb3I6CiAgICAgICAgIHRocm93
RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoZXhlYykpOwog
ICAgICAgICBicmVhazsKLSAgICBjYXNlIFZhbGlkYXRpb25FcnJvcjoKKyAgICBjYXNlIFNlcmlh
bGl6YXRpb25SZXR1cm5Db2RlOjpWYWxpZGF0aW9uRXJyb3I6CiAgICAgICAgIHRocm93VHlwZUVy
cm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlVuYWJsZSB0byBkZXNlcmlhbGl6ZSBkYXRh
LiIpKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBEYXRhQ2xvbmVFcnJvcjoKKyAgICBjYXNl
IFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlOjpEYXRhQ2xvbmVFcnJvcjoKICAgICAgICAgc2V0RE9N
RXhjZXB0aW9uKGV4ZWMsIERBVEFfQ0xPTkVfRVJSKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yOgorICAgIGNhc2UgU2VyaWFsaXphdGlvblJldHVybkNv
ZGU6OkV4aXN0aW5nRXhjZXB0aW9uRXJyb3I6CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgVW5z
cGVjaWZpZWRFcnJvcjoKKyAgICBjYXNlIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlOjpVbnNwZWNp
ZmllZEVycm9yOgogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKQEAgLTI4MjgsNyArMjg2MCw3IEBAIHZvaWQgU2VyaWFsaXplZFNjcmlw
dFZhbHVlOjptYXliZVRocm93RXgKIAogYm9vbCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OnNlcmlh
bGl6YXRpb25EaWRDb21wbGV0ZVN1Y2Nlc3NmdWxseShTZXJpYWxpemF0aW9uUmV0dXJuQ29kZSBj
b2RlKQogewotICAgIHJldHVybiAoY29kZSA9PSBTdWNjZXNzZnVsbHlDb21wbGV0ZWQpOworICAg
IHJldHVybiAoY29kZSA9PSBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZTo6U3VjY2Vzc2Z1bGx5Q29t
cGxldGVkKTsKIH0KIAogdWludDMyX3QgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjp3aXJlRm9ybWF0
VmVyc2lvbigpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2Ny
aXB0VmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJp
YWxpemVkU2NyaXB0VmFsdWUuaAkocmV2aXNpb24gMjA5MjU1KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2
LDYgKzI2LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgog
I2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8aGVhcC9TdHJvbmcu
aD4KICNpbmNsdWRlIDxydW50aW1lL0FycmF5QnVmZmVyLmg+CkBAIC00MiwyNSArNDMsMTggQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJREJWYWx1ZTsKIGNsYXNzIE1lc3NhZ2VQb3J0
OwotIAotZW51bSBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZSB7Ci0gICAgU3VjY2Vzc2Z1bGx5Q29t
cGxldGVkLAotICAgIFN0YWNrT3ZlcmZsb3dFcnJvciwKLSAgICBJbnRlcnJ1cHRlZEV4ZWN1dGlv
bkVycm9yLAotICAgIFZhbGlkYXRpb25FcnJvciwKLSAgICBFeGlzdGluZ0V4Y2VwdGlvbkVycm9y
LAotICAgIERhdGFDbG9uZUVycm9yLAotICAgIFVuc3BlY2lmaWVkRXJyb3IKLX07Ci0gICAgCitj
bGFzcyBTaGFyZWRCdWZmZXI7CitlbnVtIGNsYXNzIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlOwor
CiBlbnVtIFNlcmlhbGl6YXRpb25FcnJvck1vZGUgeyBOb25UaHJvd2luZywgVGhyb3dpbmcgfTsK
IAotY2xhc3MgU2hhcmVkQnVmZmVyOwordXNpbmcgQXJyYXlCdWZmZXJDb250ZW50c0FycmF5ID0g
VmVjdG9yPEpTQzo6QXJyYXlCdWZmZXJDb250ZW50cz47CiAKIGNsYXNzIFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+IHsKIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4gY3JlYXRlKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlLCBTZXJp
YWxpemF0aW9uRXJyb3JNb2RlID0gVGhyb3dpbmcpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBjcmVhdGUoSlNDOjpFeGVjU3RhdGUmLCBK
U0M6OkpTVmFsdWUsIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYsIFZlY3RvcjxSZWZQdHI8
SlNDOjpBcnJheUJ1ZmZlcj4+JiYsIFNlcmlhbGl6YXRpb25FcnJvck1vZGUgPSBUaHJvd2luZyk7
CisKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4+IGNyZWF0ZShKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSwgVmVjdG9y
PEpTQzo6U3Ryb25nPEpTQzo6SlNPYmplY3Q+PiYmLCBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0
Pj4mKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiBjcmVhdGUoU3RyaW5nVmlldyk7CiAgICAgc3RhdGljIFJlZjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+IGFkb3B0KFZlY3Rvcjx1aW50OF90PiYmIGJ1ZmZlcikKQEAgLTEwMCwxMCArOTQs
MTEgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIH5TZXJpYWxpemVkU2NyaXB0VmFsdWUo
KTsKIAogcHJpdmF0ZToKLSAgICB0eXBlZGVmIFZlY3RvcjxKU0M6OkFycmF5QnVmZmVyQ29udGVu
dHM+IEFycmF5QnVmZmVyQ29udGVudHNBcnJheTsKICAgICBzdGF0aWMgdm9pZCBtYXliZVRocm93
RXhjZXB0aW9uSWZTZXJpYWxpemF0aW9uRmFpbGVkKEpTQzo6RXhlY1N0YXRlKiwgU2VyaWFsaXph
dGlvblJldHVybkNvZGUpOwogICAgIHN0YXRpYyBib29sIHNlcmlhbGl6YXRpb25EaWRDb21wbGV0
ZVN1Y2Nlc3NmdWxseShTZXJpYWxpemF0aW9uUmV0dXJuQ29kZSk7Ci0gICAgc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+IHRyYW5zZmVyQXJyYXlCdWZmZXJz
KEpTQzo6RXhlY1N0YXRlKiwgVmVjdG9yPFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPj4mLCBTZXJp
YWxpemF0aW9uUmV0dXJuQ29kZSYpOworICAgIHN0YXRpYyBFeGNlcHRpb24gZXhjZXB0aW9uRm9y
U2VyaWFsaXphdGlvbkZhaWx1cmUoU2VyaWFsaXphdGlvblJldHVybkNvZGUpOworCisgICAgc3Rh
dGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5pcXVlX3B0cjxBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+
PiB0cmFuc2ZlckFycmF5QnVmZmVycyhjb25zdCBWZWN0b3I8UmVmUHRyPEpTQzo6QXJyYXlCdWZm
ZXI+PiYpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgU2VyaWFsaXplZFNjcmlwdFZhbHVlKFZlY3Rv
cjx1bnNpZ25lZCBjaGFyPiYmKTsKICAgICBTZXJpYWxpemVkU2NyaXB0VmFsdWUoVmVjdG9yPHVu
c2lnbmVkIGNoYXI+JiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgc3RkOjp1bmlx
dWVfcHRyPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4mJik7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtCShyZXZpc2lvbiAyMDky
NTUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0J
KHdvcmtpbmcgY29weSkKQEAgLTU5Nyw2ICs1OTcsNyBAQCBzdWIgSXNSZWZQdHJUeXBlCiAgICAg
cmV0dXJuIDAgaWYgJG9iamVjdC0+SXNTdHJpbmdUeXBlKCR0eXBlKTsKICAgICByZXR1cm4gMCBp
ZiAkdHlwZS0+aXNVbmlvbjsKICAgICByZXR1cm4gMCBpZiAkdHlwZS0+bmFtZSBlcSAiYW55IjsK
KyAgICByZXR1cm4gMCBpZiAkdHlwZS0+bmFtZSBlcSAib2JqZWN0IjsKIAogICAgIHJldHVybiAx
OwogfQpAQCAtODYyLDYgKzg2Myw3IEBAIHN1YiBJc0J1aWx0aW5UeXBlCiAgICAgcmV0dXJuIDEg
aWYgJG9iamVjdC0+SXNUeXBlZEFycmF5VHlwZSgkdHlwZSk7CiAgICAgcmV0dXJuIDEgaWYgJHR5
cGUtPmlzVW5pb247CiAgICAgcmV0dXJuIDEgaWYgJHR5cGUtPm5hbWUgZXEgImFueSI7CisgICAg
cmV0dXJuIDEgaWYgJHR5cGUtPm5hbWUgZXEgIm9iamVjdCI7CiAgICAgcmV0dXJuIDEgaWYgJHR5
cGUtPm5hbWUgZXEgIkJ1ZmZlclNvdXJjZSI7CiAgICAgcmV0dXJuIDEgaWYgJHR5cGUtPm5hbWUg
ZXEgIlByb21pc2UiOwogICAgIHJldHVybiAxIGlmICR0eXBlLT5uYW1lIGVxICJYUGF0aE5TUmVz
b2x2ZXIiOyAgICAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvckpTLnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvckpTLnBtCShyZXZpc2lvbiAyMDkyNTUpCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkod29ya2luZyBjb3B5KQpAQCAt
Mjc5LDYgKzI3OSw3IEBAIHN1YiBBZGRUb0luY2x1ZGVzRm9ySURMVHlwZQogICAgIHJldHVybiBp
ZiAkY29kZUdlbmVyYXRvci0+SXNTdHJpbmdUeXBlKCR0eXBlKTsKICAgICByZXR1cm4gaWYgJGNv
ZGVHZW5lcmF0b3ItPklzVHlwZWRBcnJheVR5cGUoJHR5cGUpOwogICAgIHJldHVybiBpZiAkdHlw
ZS0+bmFtZSBlcSAiYW55IjsKKyAgICByZXR1cm4gaWYgJHR5cGUtPm5hbWUgZXEgIm9iamVjdCI7
CiAKICAgICBpZiAoJHR5cGUtPmlzVW5pb24pIHsKICAgICAgICAgQWRkVG9JbmNsdWRlcygiPHd0
Zi9WYXJpYW50Lmg+IiwgJGluY2x1ZGVzUmVmLCAkY29uZGl0aW9uYWwpOwpAQCAtNDk3MCw2ICs0
OTcxLDcgQEAgbXkgJW5hdGl2ZVR5cGUgPSAoCiAgICAgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSIg
PT4gIlJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IiwKICAgICAiWFBhdGhOU1Jlc29sdmVy
IiA9PiAiUmVmUHRyPFhQYXRoTlNSZXNvbHZlcj4iLAogICAgICJhbnkiID0+ICJKU0M6OkpTVmFs
dWUiLAorICAgICJvYmplY3QiID0+ICJKU0M6OlN0cm9uZzxKU0M6OkpTT2JqZWN0PiIsCiAgICAg
ImJvb2xlYW4iID0+ICJib29sIiwKICAgICAiYnl0ZSIgPT4gImludDhfdCIsCiAgICAgImRvdWJs
ZSIgPT4gImRvdWJsZSIsCkBAIC01MDU4LDYgKzUwNjAsNyBAQCBzdWIgR2V0QmFzZUlETFR5cGUK
ICAgICAgICAgIkRPTVN0cmluZyIgPT4gIklETERPTVN0cmluZyIsCiAgICAgICAgICJCeXRlU3Ry
aW5nIiA9PiAiSURMQnl0ZVN0cmluZyIsCiAgICAgICAgICJVU1ZTdHJpbmciID0+ICJJRExVU1ZT
dHJpbmciLAorICAgICAgICAib2JqZWN0IiA9PiAiSURMT2JqZWN0IiwKICAgICAgICAgCiAgICAg
ICAgICMgTm9uLVdlYklETCBleHRlbnNpb25zCiAgICAgICAgICJEYXRlIiA9PiAiSURMRGF0ZSIs
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RP
YmouaWRsCShyZXZpc2lvbiAyMDkyNTUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVGVzdE9iai5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTIzMyw2ICsyMzMsNyBAQCBl
bnVtIFRlc3RDb25maWRlbmNlIHsgImhpZ2giLCAia2luZGEtbG93CiAgICAgdm9pZCAgICBtZXRo
b2RXaXRoT3B0aW9uYWxCb29sZWFuKG9wdGlvbmFsIGJvb2xlYW4gYik7CiAgICAgdm9pZCAgICBt
ZXRob2RXaXRoT3B0aW9uYWxCb29sZWFuSXNGYWxzZShvcHRpb25hbCBib29sZWFuIGIgPSBmYWxz
ZSk7CiAgICAgdm9pZCAgICBtZXRob2RXaXRoT3B0aW9uYWxBbnkob3B0aW9uYWwgYW55IGEpOwor
ICAgIHZvaWQgICAgbWV0aG9kV2l0aE9wdGlvbmFsT2JqZWN0KG9wdGlvbmFsIG9iamVjdCBhKTsK
ICAgICB2b2lkICAgIG1ldGhvZFdpdGhPcHRpb25hbE51bGxhYmxlV3JhcHBlcihvcHRpb25hbCBU
ZXN0T2JqPyBvYmopOwogICAgIHZvaWQgICAgbWV0aG9kV2l0aE9wdGlvbmFsTnVsbGFibGVXcmFw
cGVySXNOdWxsKG9wdGlvbmFsIFRlc3RPYmo/IG9iaiA9IG51bGwpOwogICAgIHZvaWQgICAgbWV0
aG9kV2l0aE9wdGlvbmFsWFBhdGhOU1Jlc29sdmVyKG9wdGlvbmFsIFhQYXRoTlNSZXNvbHZlcj8g
cmVzb2x2ZXIpOwpAQCAtMjcyLDYgKzI3Myw3IEBAIGVudW0gVGVzdENvbmZpZGVuY2UgeyAiaGln
aCIsICJraW5kYS1sb3cKICAgICBbQ2FjaGVkQXR0cmlidXRlXSByZWFkb25seSBhdHRyaWJ1dGUg
YW55IGNhY2hlZEF0dHJpYnV0ZTI7CiAgICAgCiAgICAgYXR0cmlidXRlIGFueSBhbnlBdHRyaWJ1
dGU7CisgICAgYXR0cmlidXRlIG9iamVjdCBvYmplY3RBdHRyaWJ1dGU7CiAKICAgICAvLyBPdmVy
bG9hZHMKICAgICB2b2lkICAgIG92ZXJsb2FkZWRNZXRob2QoVGVzdE9iaj8gb2JqQXJnLCBET01T
dHJpbmcgc3RyQXJnKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RPYmouY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCShyZXZpc2lvbiAyMDkyNTUpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTAxNSw2ICsxMDE1LDcgQEAgSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdAogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQm9vbGVhbihKU0M6OkV4ZWNTdGF0
ZSopOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQm9vbGVhbklzRmFsc2UoSlNDOjpFeGVjU3RhdGUq
KTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEFueShKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9k
V2l0aE9wdGlvbmFsT2JqZWN0KEpTQzo6RXhlY1N0YXRlKik7CiBKU0M6OkVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9u
YWxOdWxsYWJsZVdyYXBwZXIoSlNDOjpFeGVjU3RhdGUqKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25h
bE51bGxhYmxlV3JhcHBlcklzTnVsbChKU0M6OkV4ZWNTdGF0ZSopOwogSlNDOjpFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9w
dGlvbmFsWFBhdGhOU1Jlc29sdmVyKEpTQzo6RXhlY1N0YXRlKik7CkBAIC0xMjQwLDYgKzEyNDEs
OCBAQCBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNhY2hlZEF0dHJpCiBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9iakNhY2hlZEF0dHJpYnV0ZTIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6
OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdE9iakFueUF0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFs
dWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIGJvb2wgc2V0SlNUZXN0T2JqQW55QXR0cmlidXRlKEpT
Qzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7
CitKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iak9iamVjdEF0dHJpYnV0ZShKU0M6OkV4ZWNT
dGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKK2Jvb2wgc2V0
SlNUZXN0T2JqT2JqZWN0QXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9i
akNvbnRlbnREb2N1bWVudChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpT
Qzo6UHJvcGVydHlOYW1lKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqTXV0YWJsZVBv
aW50KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5h
bWUpOwogYm9vbCBzZXRKU1Rlc3RPYmpNdXRhYmxlUG9pbnQoSlNDOjpFeGVjU3RhdGUqLCBKU0M6
OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKQEAgLTE1NDAsNiArMTU0Myw3
IEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RPYmpQcm8KICAgICB7ICJjYWNo
ZWRBdHRyaWJ1dGUxIiwgUmVhZE9ubHkgfCBDdXN0b21BY2Nlc3NvciwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RP
YmpDYWNoZWRBdHRyaWJ1dGUxKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNs
b3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAogICAgIHsgImNhY2hlZEF0dHJpYnV0ZTIiLCBSZWFk
T25seSB8IEN1c3RvbUFjY2Vzc29yLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9iakNhY2hlZEF0dHJpYnV0ZTIp
LCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigw
KSB9IH0sCiAgICAgeyAiYW55QXR0cmlidXRlIiwgQ3VzdG9tQWNjZXNzb3IsIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNU
ZXN0T2JqQW55QXR0cmlidXRlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNs
b3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0T2JqQW55QXR0cmlidXRlKSB9IH0sCisgICAgeyAi
b2JqZWN0QXR0cmlidXRlIiwgQ3VzdG9tQWNjZXNzb3IsIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqT2JqZWN0
QXR0cmlidXRlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZh
bHVlRnVuYz4oc2V0SlNUZXN0T2JqT2JqZWN0QXR0cmlidXRlKSB9IH0sCiAgICAgeyAiY29udGVu
dERvY3VtZW50IiwgUmVhZE9ubHkgfCBDdXN0b21BY2Nlc3NvciwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpD
b250ZW50RG9jdW1lbnQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6
UHV0VmFsdWVGdW5jPigwKSB9IH0sCiAgICAgeyAibXV0YWJsZVBvaW50IiwgQ3VzdG9tQWNjZXNz
b3IsIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6Okdl
dFZhbHVlRnVuYz4oanNUZXN0T2JqTXV0YWJsZVBvaW50KSwgKGludHB0cl90KSBzdGF0aWNfY2Fz
dDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0T2JqTXV0YWJsZVBvaW50
KSB9IH0sCiAgICAgeyAiaW1tdXRhYmxlUG9pbnQiLCBDdXN0b21BY2Nlc3NvciwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihq
c1Rlc3RPYmpJbW11dGFibGVQb2ludCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdE9iakltbXV0YWJsZVBvaW50KSB9IH0sCkBA
IC0xNjUyLDYgKzE2NTYsNyBAQCBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0T2Jq
UHJvCiAgICAgeyAibWV0aG9kV2l0aE9wdGlvbmFsQm9vbGVhbiIsIEpTQzo6RnVuY3Rpb24sIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxCb29sZWFuKSwgKGludHB0cl90
KSAoMCkgfSB9LAogICAgIHsgIm1ldGhvZFdpdGhPcHRpb25hbEJvb2xlYW5Jc0ZhbHNlIiwgSlND
OjpGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1
bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEJvb2xl
YW5Jc0ZhbHNlKSwgKGludHB0cl90KSAoMCkgfSB9LAogICAgIHsgIm1ldGhvZFdpdGhPcHRpb25h
bEFueSIsIEpTQzo6RnVuY3Rpb24sIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2Fz
dDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0
aW9uYWxBbnkpLCAoaW50cHRyX3QpICgwKSB9IH0sCisgICAgeyAibWV0aG9kV2l0aE9wdGlvbmFs
T2JqZWN0IiwgSlNDOjpGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhP
cHRpb25hbE9iamVjdCksIChpbnRwdHJfdCkgKDApIH0gfSwKICAgICB7ICJtZXRob2RXaXRoT3B0
aW9uYWxOdWxsYWJsZVdyYXBwZXIiLCBKU0M6OkZ1bmN0aW9uLCBOb0ludHJpbnNpYywgeyAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kV2l0aE9wdGlvbmFsTnVsbGFibGVXcmFwcGVyKSwgKGludHB0cl90KSAoMCkgfSB9
LAogICAgIHsgIm1ldGhvZFdpdGhPcHRpb25hbE51bGxhYmxlV3JhcHBlcklzTnVsbCIsIEpTQzo6
RnVuY3Rpb24sIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5j
dGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxOdWxsYWJs
ZVdyYXBwZXJJc051bGwpLCAoaW50cHRyX3QpICgwKSB9IH0sCiAgICAgeyAibWV0aG9kV2l0aE9w
dGlvbmFsWFBhdGhOU1Jlc29sdmVyIiwgSlNDOjpGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk1ldGhvZFdpdGhPcHRpb25hbFhQYXRoTlNSZXNvbHZlciksIChpbnRwdHJfdCkgKDApIH0g
fSwKQEAgLTMwMjUsNiArMzAzMCwyMiBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0T2Jq
QW55QXR0cmliCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorc3RhdGljIGlubGluZSBKU1ZhbHVl
IGpzVGVzdE9iak9iamVjdEF0dHJpYnV0ZUdldHRlcihFeGVjU3RhdGUmLCBKU1Rlc3RPYmomLCBU
aHJvd1Njb3BlJiB0aHJvd1Njb3BlKTsKKworRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqT2JqZWN0
QXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJv
cGVydHlOYW1lKQoreworICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdE9iaj46OmF0dHJp
YnV0ZTxqc1Rlc3RPYmpPYmplY3RBdHRyaWJ1dGVHZXR0ZXI+KHN0YXRlLCB0aGlzVmFsdWUsICJv
YmplY3RBdHRyaWJ1dGUiKTsKK30KKworc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdE9iak9i
amVjdEF0dHJpYnV0ZUdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RPYmomIHRoaXNPYmpl
Y3QsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCit7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2Nv
cGUpOworICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgYXV0byYgaW1wbCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJRExPYmplY3Q+KGltcGwu
b2JqZWN0QXR0cmlidXRlKCkpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKIHN0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc1Rlc3RPYmpDb250ZW50RG9jdW1lbnRHZXR0ZXIoRXhlY1N0YXRlJiwgSlNU
ZXN0T2JqJiwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSk7CiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVz
dE9iakNvbnRlbnREb2N1bWVudChFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkKQEAgLTQ2MjMsNiArNDY0NCwyNSBAQCBzdGF0aWMgaW5saW5l
IGJvb2wgc2V0SlNUZXN0T2JqQW55QXR0cmliCiB9CiAKIAorc3RhdGljIGlubGluZSBib29sIHNl
dEpTVGVzdE9iak9iamVjdEF0dHJpYnV0ZUZ1bmN0aW9uKEV4ZWNTdGF0ZSYsIEpTVGVzdE9iaiYs
IEpTVmFsdWUsIFRocm93U2NvcGUmKTsKKworYm9vbCBzZXRKU1Rlc3RPYmpPYmplY3RBdHRyaWJ1
dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUpCit7CisgICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0T2Jq
Pjo6c2V0QXR0cmlidXRlPHNldEpTVGVzdE9iak9iamVjdEF0dHJpYnV0ZUZ1bmN0aW9uPihzdGF0
ZSwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJvYmplY3RBdHRyaWJ1dGUiKTsKK30KKworc3Rh
dGljIGlubGluZSBib29sIHNldEpTVGVzdE9iak9iamVjdEF0dHJpYnV0ZUZ1bmN0aW9uKEV4ZWNT
dGF0ZSYgc3RhdGUsIEpTVGVzdE9iaiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgVGhyb3dT
Y29wZSYgdGhyb3dTY29wZSkKK3sKKyAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFVOVVNF
RF9QQVJBTSh0aHJvd1Njb3BlKTsKKyAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7CisgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMT2JqZWN0PihzdGF0ZSwgdmFs
dWUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOworICAgIGlt
cGwuc2V0T2JqZWN0QXR0cmlidXRlKFdURk1vdmUobmF0aXZlVmFsdWUpKTsKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKworCiBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0T2JqTXV0YWJsZVBvaW50
RnVuY3Rpb24oRXhlY1N0YXRlJiwgSlNUZXN0T2JqJiwgSlNWYWx1ZSwgVGhyb3dTY29wZSYpOwog
CiBib29sIHNldEpTVGVzdE9iak11dGFibGVQb2ludChFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKQEAgLTY0MzMs
NiArNjQ3MywyNCBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAorc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9k
V2l0aE9wdGlvbmFsT2JqZWN0Q2FsbGVyKEpTQzo6RXhlY1N0YXRlKiwgSlNUZXN0T2JqKiwgSlND
OjpUaHJvd1Njb3BlJik7CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxPYmplY3QoRXhlY1N0YXRlKiBzdGF0
ZSkKK3sKKyAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RPYmo+OjpjYWxsT3BlcmF0aW9u
PGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsT2JqZWN0Q2FsbGVy
PihzdGF0ZSwgIm1ldGhvZFdpdGhPcHRpb25hbE9iamVjdCIpOworfQorCitzdGF0aWMgaW5saW5l
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRo
T3B0aW9uYWxPYmplY3RDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU1Rlc3RPYmoqIGNh
c3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3sKKyAgICBVTlVTRURfUEFS
QU0oc3RhdGUpOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKKyAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOworICAgIGF1dG8gYSA9IHN0YXRlLT5hcmd1bWVudCgw
KS5pc1VuZGVmaW5lZCgpID8gc3RkOjpvcHRpb25hbDxKU0M6OkpTT2JqZWN0Kj4oKSA6IGNvbnZl
cnQ8SURMT2JqZWN0Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CisgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKyAgICBp
bXBsLm1ldGhvZFdpdGhPcHRpb25hbE9iamVjdChXVEZNb3ZlKGEpKTsKKyAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworfQorCiBzdGF0aWMgaW5saW5lIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxO
dWxsYWJsZVdyYXBwZXJDYWxsZXIoSlNDOjpFeGVjU3RhdGUqLCBKU1Rlc3RPYmoqLCBKU0M6OlRo
cm93U2NvcGUmKTsKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbE51bGxhYmxlV3JhcHBlcihFeGVjU3RhdGUq
IHN0YXRlKQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0V4Y2VwdGlvbkNvZGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRXhjZXB0aW9uQ29kZS5oCShyZXZpc2lvbiAyMDky
NTUpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRXhjZXB0aW9uQ29kZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yOSw2ICsyOSw5IEBAIHVzaW5nIEV4Y2VwdGlvbkNvZGUgPSBpbnQ7CiAvLyBTb21lIG9m
IHRoZXNlIGFyZSBjb25zaWRlcmVkIGhpc3RvcmljYWwgc2luY2UgdGhleSBoYXZlIGJlZW4KIC8v
IGNoYW5nZWQgb3IgcmVtb3ZlZCBmcm9tIHRoZSBzcGVjaWZpY2F0aW9ucy4KIGVudW0geworICAg
IC8vIFVzZWQgdG8gaW5kaWNhdGUgdG8gdGhlIGJpbmRpbmdzIHRoYXQgYSBKUyBleGNlcHRpb24g
d2FzIHRocm93biBiZWxvdyBhbmQgaXQgc2hvdWxkIGJlIHByb3BvZ2F0ZWQuCisgICAgRXhpc3Rp
bmdFeGNlcHRpb25FcnJvciA9IDAsIAorCiAgICAgSU5ERVhfU0laRV9FUlIgPSAxLAogICAgIEhJ
RVJBUkNIWV9SRVFVRVNUX0VSUiA9IDMsCiAgICAgV1JPTkdfRE9DVU1FTlRfRVJSID0gNCwKQEAg
LTcyLDYgKzc1LDkgQEAgZW51bSB7CiAgICAgT3BlcmF0aW9uRXJyb3IsCiAgICAgTm90QWxsb3dl
ZEVycm9yLAogCisgICAgLy8gTm9uLXN0YW5kYXJkIGVycm9ycworICAgIFN0YWNrT3ZlcmZsb3dF
cnJvciwKKwogICAgIC8vIFdlYklETCBleGNlcHRpb24gdHlwZXMsIGhhbmRsZWQgYnkgdGhlIGJp
bmRpbmcgbGF5ZXIuCiAgICAgLy8gRklYTUU6IEFkZCBHZW5lcmFsRXJyb3IsIEV2YWxFcnJvciwg
ZXRjLiB3aGVuIGltcGxlbWVudGVkIGluIHRoZSBiaW5kaW5ncy4KICAgICBUeXBlRXJyb3IgPSAx
MDUsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5jcHAJKHJldmlzaW9uIDIwOTI1NSkK
KysrIFNvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTUxLDggKzUxLDEzIEBAIE1lc3NhZ2VQb3J0Ojp+TWVzc2FnZVBvcnQoKQogICAgICAgICBtX3Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQtPmRlc3Ryb3llZE1lc3NhZ2VQb3J0KCp0aGlzKTsKIH0KIAot
RXhjZXB0aW9uT3I8dm9pZD4gTWVzc2FnZVBvcnQ6OnBvc3RNZXNzYWdlKFJlZlB0cjxTZXJpYWxp
emVkU2NyaXB0VmFsdWU+JiYgbWVzc2FnZSwgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+JiYg
cG9ydHMpCitFeGNlcHRpb25Pcjx2b2lkPiBNZXNzYWdlUG9ydDo6cG9zdE1lc3NhZ2UoSlNDOjpF
eGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUgbWVzc2FnZVZhbHVlLCBWZWN0b3I8SlNDOjpT
dHJvbmc8SlNDOjpKU09iamVjdD4+JiYgdHJhbnNmZXIpCiB7CisgICAgVmVjdG9yPFJlZlB0cjxN
ZXNzYWdlUG9ydD4+IHBvcnRzOworICAgIGF1dG8gbWVzc2FnZSA9IFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZTo6Y3JlYXRlKHN0YXRlLCBtZXNzYWdlVmFsdWUsIFdURk1vdmUodHJhbnNmZXIpLCBwb3J0
cyk7CisgICAgaWYgKG1lc3NhZ2UuaGFzRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBtZXNz
YWdlLnJlbGVhc2VFeGNlcHRpb24oKTsKKwogICAgIGlmICghaXNFbnRhbmdsZWQoKSkKICAgICAg
ICAgcmV0dXJuIHsgfTsKICAgICBBU1NFUlQobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKQEAg
LTY5LDcgKzc0LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gTWVzc2FnZVBvcnQ6OnBvc3RNZXNzYQog
ICAgICAgICAgICAgcmV0dXJuIGRpc2VudGFuZ2xlUmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsK
ICAgICAgICAgY2hhbm5lbHMgPSBkaXNlbnRhbmdsZVJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUo
KTsKICAgICB9Ci0gICAgbV9lbnRhbmdsZWRDaGFubmVsLT5wb3N0TWVzc2FnZVRvUmVtb3RlKFdU
Rk1vdmUobWVzc2FnZSksIFdURk1vdmUoY2hhbm5lbHMpKTsKKyAgICBtX2VudGFuZ2xlZENoYW5u
ZWwtPnBvc3RNZXNzYWdlVG9SZW1vdGUobWVzc2FnZS5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgV1RG
TW92ZShjaGFubmVscykpOwogICAgIHJldHVybiB7IH07CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2RvbS9NZXNzYWdlUG9ydC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9N
ZXNzYWdlUG9ydC5oCShyZXZpc2lvbiAyMDkyNTUpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTWVz
c2FnZVBvcnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsMTIgQEAKICNpbmNsdWRlICJF
eGNlcHRpb25Pci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VQb3J0Q2hhbm5lbC5oIgogCituYW1lc3Bh
Y2UgSlNDIHsKK2NsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNzIEpTT2JqZWN0OworY2xhc3MgSlNWYWx1
ZTsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGcmFtZTsKQEAgLTM5LDcgKzQ1
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWY8TWVzc2FnZVBvcnQ+IGNyZWF0ZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KSB7IHJldHVybiBhZG9wdFJl
ZigqbmV3IE1lc3NhZ2VQb3J0KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpKTsgfQogICAgIHZpcnR1
YWwgfk1lc3NhZ2VQb3J0KCk7CiAKLSAgICBFeGNlcHRpb25Pcjx2b2lkPiBwb3N0TWVzc2FnZShS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmIG1lc3NhZ2UsIFZlY3RvcjxSZWZQdHI8TWVz
c2FnZVBvcnQ+PiYmKTsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBwb3N0TWVzc2FnZShKU0M6OkV4
ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSBtZXNzYWdlLCBWZWN0b3I8SlNDOjpTdHJvbmc8SlNDOjpK
U09iamVjdD4+JiYpOwogCiAgICAgdm9pZCBzdGFydCgpOwogICAgIHZvaWQgY2xvc2UoKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5pZGwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmlkbAkocmV2aXNpb24gMjA5MjU1KQorKysgU291
cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzEsMTAg
KzMxLDEwIEBACiAgICAgR2VuZXJhdGVJc1JlYWNoYWJsZT1JbXBsLAogICAgIEpTQ3VzdG9tTWFy
a0Z1bmN0aW9uLAogXSBpbnRlcmZhY2UgTWVzc2FnZVBvcnQgOiBFdmVudFRhcmdldCB7Ci0gICAg
W0N1c3RvbSwgTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgcG9zdE1lc3NhZ2UoYW55IG1lc3NhZ2Us
IG9wdGlvbmFsIEFycmF5IG1lc3NhZ2VQb3J0cyk7Ci0KKyAgICBbQ2FsbFdpdGg9U2NyaXB0U3Rh
dGUsIE1heVRocm93RXhjZXB0aW9uXSB2b2lkIHBvc3RNZXNzYWdlKGFueSBtZXNzYWdlLCBvcHRp
b25hbCBzZXF1ZW5jZTxvYmplY3Q+IHRyYW5zZmVyID0gW10pOwogICAgIHZvaWQgc3RhcnQoKTsK
ICAgICB2b2lkIGNsb3NlKCk7CiAKKyAgICAvLyBldmVudCBoYW5kbGVycwogICAgIGF0dHJpYnV0
ZSBFdmVudEhhbmRsZXIgb25tZXNzYWdlOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
RE9NV2luZG93LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRv
dy5jcHAJKHJldmlzaW9uIDIwOTI1NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE2LDYgKzExNiw3IEBACiAjaW5jbHVkZSA8d3RmL01h
dGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3
dGYvUmVmLmg+CisjaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KIAogI2lmIEVOQUJMRShVU0VSX01FU1NBR0VfSEFORExFUlMpCkBAIC05MTks
MTIgKzkyMCwxMiBAQCBFeGNlcHRpb25PcjxTdG9yYWdlKj4gRE9NV2luZG93Ojpsb2NhbFN0CiAg
ICAgcmV0dXJuIG1fbG9jYWxTdG9yYWdlLmdldCgpOwogfQogCi1FeGNlcHRpb25Pcjx2b2lkPiBE
T01XaW5kb3c6OnBvc3RNZXNzYWdlKFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYgbWVzc2Fn
ZSwgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+JiYgcG9ydHMsIGNvbnN0IFN0cmluZyYgdGFy
Z2V0T3JpZ2luLCBET01XaW5kb3cmIHNvdXJjZSkKK0V4Y2VwdGlvbk9yPHZvaWQ+IERPTVdpbmRv
dzo6cG9zdE1lc3NhZ2UoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBET01XaW5kb3cmIGNhbGxlcldp
bmRvdywgSlNDOjpKU1ZhbHVlIG1lc3NhZ2VWYWx1ZSwgY29uc3QgU3RyaW5nJiB0YXJnZXRPcmln
aW4sIFZlY3RvcjxKU0M6OlN0cm9uZzxKU0M6OkpTT2JqZWN0Pj4mJiB0cmFuc2ZlcikKIHsKICAg
ICBpZiAoIWlzQ3VycmVudGx5RGlzcGxheWVkSW5GcmFtZSgpKQogICAgICAgICByZXR1cm4geyB9
OwogCi0gICAgRG9jdW1lbnQqIHNvdXJjZURvY3VtZW50ID0gc291cmNlLmRvY3VtZW50KCk7Cisg
ICAgRG9jdW1lbnQqIHNvdXJjZURvY3VtZW50ID0gY2FsbGVyV2luZG93LmRvY3VtZW50KCk7CiAK
ICAgICAvLyBDb21wdXRlIHRoZSB0YXJnZXQgb3JpZ2luLiAgV2UgbmVlZCB0byBkbyB0aGlzIHN5
bmNocm9ub3VzbHkgaW4gb3JkZXIKICAgICAvLyB0byBnZW5lcmF0ZSB0aGUgU1lOVEFYX0VSUiBl
eGNlcHRpb24gY29ycmVjdGx5LgpAQCAtOTQxLDYgKzk0MiwxMSBAQCBFeGNlcHRpb25Pcjx2b2lk
PiBET01XaW5kb3c6OnBvc3RNZXNzYWdlCiAgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsg
U1lOVEFYX0VSUiB9OwogICAgIH0KIAorICAgIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiBw
b3J0czsKKyAgICBhdXRvIG1lc3NhZ2UgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShz
dGF0ZSwgbWVzc2FnZVZhbHVlLCBXVEZNb3ZlKHRyYW5zZmVyKSwgcG9ydHMpOworICAgIGlmICht
ZXNzYWdlLmhhc0V4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gbWVzc2FnZS5yZWxlYXNlRXhj
ZXB0aW9uKCk7CisKICAgICBhdXRvIGNoYW5uZWxzID0gTWVzc2FnZVBvcnQ6OmRpc2VudGFuZ2xl
UG9ydHMoV1RGTW92ZShwb3J0cykpOwogICAgIGlmIChjaGFubmVscy5oYXNFeGNlcHRpb24oKSkK
ICAgICAgICAgcmV0dXJuIGNoYW5uZWxzLnJlbGVhc2VFeGNlcHRpb24oKTsKQEAgLTk1Nyw3ICs5
NjMsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBET01XaW5kb3c6OnBvc3RNZXNzYWdlCiAgICAgICAg
IHN0YWNrVHJhY2UgPSBjcmVhdGVTY3JpcHRDYWxsU3RhY2soSlNNYWluVGhyZWFkRXhlY1N0YXRl
OjpjdXJyZW50U3RhdGUoKSwgU2NyaXB0Q2FsbFN0YWNrOjptYXhDYWxsU3RhY2tTaXplVG9DYXB0
dXJlKTsKIAogICAgIC8vIFNjaGVkdWxlIHRoZSBtZXNzYWdlLgotICAgIGF1dG8qIHRpbWVyID0g
bmV3IFBvc3RNZXNzYWdlVGltZXIoKnRoaXMsIFdURk1vdmUobWVzc2FnZSksIHNvdXJjZU9yaWdp
biwgc291cmNlLCBjaGFubmVscy5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgV1RGTW92ZSh0YXJnZXQp
LCBXVEZNb3ZlKHN0YWNrVHJhY2UpKTsKKyAgICBhdXRvKiB0aW1lciA9IG5ldyBQb3N0TWVzc2Fn
ZVRpbWVyKCp0aGlzLCBtZXNzYWdlLnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBzb3VyY2VPcmlnaW4s
IGNhbGxlcldpbmRvdywgY2hhbm5lbHMucmVsZWFzZVJldHVyblZhbHVlKCksIFdURk1vdmUodGFy
Z2V0KSwgV1RGTW92ZShzdGFja1RyYWNlKSk7CiAgICAgdGltZXItPnN0YXJ0T25lU2hvdCgwKTsK
IAogICAgIHJldHVybiB7IH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgJKHJldmlzaW9u
IDIwOTI1NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxmdW5jdGlv
bmFsPgogI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1
ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAjaW5jbHVkZSA8
d3RmL1dlYWtQdHIuaD4KQEAgLTQ0LDYgKzQ1LDEzIEBAIG5hbWVzcGFjZSBJbnNwZWN0b3Igewog
Y2xhc3MgU2NyaXB0Q2FsbFN0YWNrOwogfQogCituYW1lc3BhY2UgSlNDIHsKK2NsYXNzIEV4ZWNT
dGF0ZTsKK2NsYXNzIEpTT2JqZWN0OworY2xhc3MgSlNWYWx1ZTsKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBUPiBjbGFzcyBTdHJvbmc7Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQmFy
UHJvcDsKQEAgLTIzNSw3ICsyNDMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBwcmludEVycm9yTWVz
c2FnZShjb25zdCBTdHJpbmcmKTsKICAgICBTdHJpbmcgY3Jvc3NEb21haW5BY2Nlc3NFcnJvck1l
c3NhZ2UoY29uc3QgRE9NV2luZG93JiBhY3RpdmVXaW5kb3cpOwogCi0gICAgRXhjZXB0aW9uT3I8
dm9pZD4gcG9zdE1lc3NhZ2UoUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiBtZXNzYWdlLCBW
ZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4mJiwgY29uc3QgU3RyaW5nJiB0YXJnZXRPcmlnaW4s
IERPTVdpbmRvdyYgc291cmNlKTsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBwb3N0TWVzc2FnZShK
U0M6OkV4ZWNTdGF0ZSYsIERPTVdpbmRvdyYgY2FsbGVyV2luZG93LCBKU0M6OkpTVmFsdWUgbWVz
c2FnZSwgY29uc3QgU3RyaW5nJiB0YXJnZXRPcmlnaW4sIFZlY3RvcjxKU0M6OlN0cm9uZzxKU0M6
OkpTT2JqZWN0Pj4mJik7CiAgICAgdm9pZCBwb3N0TWVzc2FnZVRpbWVyRmlyZWQoUG9zdE1lc3Nh
Z2VUaW1lciYpOwogICAgIHZvaWQgZGlzcGF0Y2hNZXNzYWdlRXZlbnRXaXRoT3JpZ2luQ2hlY2so
U2VjdXJpdHlPcmlnaW4qIGludGVuZGVkVGFyZ2V0T3JpZ2luLCBFdmVudCYsIFBhc3NSZWZQdHI8
SW5zcGVjdG9yOjpTY3JpcHRDYWxsU3RhY2s+KTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFn
ZS9ET01XaW5kb3cuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2lu
ZG93LmlkbAkocmV2aXNpb24gMjA5MjU1KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5k
b3cuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xNTIsNyArMTUyLDcgQEAKICAgICAvLyAwIHdoZW4g
c3RyYWlnaHQgdXA7IC05MCB3aGVuIHJvdGF0ZWQgOTAgZGVncmVlcyBjbG9ja3dpc2U7IDkwIGNv
dW50ZXIgY2xvY2t3aXNlLgogICAgIFtDb25kaXRpb25hbD1PUklFTlRBVElPTl9FVkVOVFNdIHJl
YWRvbmx5IGF0dHJpYnV0ZSBsb25nIG9yaWVudGF0aW9uOwogCi0gICAgW0RvTm90Q2hlY2tTZWN1
cml0eSwgQ3VzdG9tLCBNYXlUaHJvd0V4Y2VwdGlvbiwgRm9yd2FyZERlY2xhcmVJbkhlYWRlcl0g
dm9pZCBwb3N0TWVzc2FnZShTZXJpYWxpemVkU2NyaXB0VmFsdWUgbWVzc2FnZSwgVVNWU3RyaW5n
IHRhcmdldE9yaWdpbiwgb3B0aW9uYWwgQXJyYXkgbWVzc2FnZVBvcnRzKTsKKyAgICBbQ2FsbFdp
dGg9U2NyaXB0U3RhdGUmQ2FsbGVyV2luZG93LCBEb05vdENoZWNrU2VjdXJpdHksIEZvcndhcmRE
ZWNsYXJlSW5IZWFkZXIsIE1heVRocm93RXhjZXB0aW9uXSB2b2lkIHBvc3RNZXNzYWdlKGFueSBt
ZXNzYWdlLCBVU1ZTdHJpbmcgdGFyZ2V0T3JpZ2luLCBvcHRpb25hbCBzZXF1ZW5jZTxvYmplY3Q+
IHRyYW5zZmVyID0gW10pOwogCiAgICAgW0NvbmRpdGlvbmFsPVdFQl9USU1JTkcsIFJlcGxhY2Vh
YmxlXSByZWFkb25seSBhdHRyaWJ1dGUgUGVyZm9ybWFuY2UgcGVyZm9ybWFuY2U7CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyR2xvYmFs
U2NvcGUuY3BwCShyZXZpc2lvbiAyMDkyNTUpCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL0Rl
ZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjMsMTMgKzYz
LDE4IEBAIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIERlZGljYXRlZFdvcmtlckdsb2IKICAgICByZXR1
cm4gRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVFdmVudFRhcmdldEludGVyZmFjZVR5cGU7CiB9
CiAKLUV4Y2VwdGlvbk9yPHZvaWQ+IERlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlOjpwb3N0TWVz
c2FnZShSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmIG1lc3NhZ2UsIFZlY3RvcjxSZWZQ
dHI8TWVzc2FnZVBvcnQ+PiYmIHBvcnRzKQorRXhjZXB0aW9uT3I8dm9pZD4gRGVkaWNhdGVkV29y
a2VyR2xvYmFsU2NvcGU6OnBvc3RNZXNzYWdlKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpK
U1ZhbHVlIG1lc3NhZ2VWYWx1ZSwgVmVjdG9yPEpTQzo6U3Ryb25nPEpTQzo6SlNPYmplY3Q+PiYm
IHRyYW5zZmVyKQogeworICAgIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiBwb3J0czsKKyAg
ICBhdXRvIG1lc3NhZ2UgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShzdGF0ZSwgbWVz
c2FnZVZhbHVlLCBXVEZNb3ZlKHRyYW5zZmVyKSwgcG9ydHMpOworICAgIGlmIChtZXNzYWdlLmhh
c0V4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gbWVzc2FnZS5yZWxlYXNlRXhjZXB0aW9uKCk7
CisKICAgICAvLyBEaXNlbnRhbmdsZSB0aGUgcG9ydCBpbiBwcmVwYXJhdGlvbiBmb3Igc2VuZGlu
ZyBpdCB0byB0aGUgcmVtb3RlIGNvbnRleHQuCiAgICAgYXV0byBjaGFubmVscyA9IE1lc3NhZ2VQ
b3J0OjpkaXNlbnRhbmdsZVBvcnRzKFdURk1vdmUocG9ydHMpKTsKICAgICBpZiAoY2hhbm5lbHMu
aGFzRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBjaGFubmVscy5yZWxlYXNlRXhjZXB0aW9u
KCk7Ci0gICAgdGhyZWFkKCkud29ya2VyT2JqZWN0UHJveHkoKS5wb3N0TWVzc2FnZVRvV29ya2Vy
T2JqZWN0KFdURk1vdmUobWVzc2FnZSksIGNoYW5uZWxzLnJlbGVhc2VSZXR1cm5WYWx1ZSgpKTsK
KyAgICB0aHJlYWQoKS53b3JrZXJPYmplY3RQcm94eSgpLnBvc3RNZXNzYWdlVG9Xb3JrZXJPYmpl
Y3QobWVzc2FnZS5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgY2hhbm5lbHMucmVsZWFzZVJldHVyblZh
bHVlKCkpOwogICAgIHJldHVybiB7IH07CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmgJKHJldmlzaW9uIDIwOTI1
NSkKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUu
aAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsMTIgQEAKIAogI2luY2x1ZGUgIldvcmtlckds
b2JhbFNjb3BlLmgiCiAKK25hbWVzcGFjZSBKU0MgeworY2xhc3MgRXhlY1N0YXRlOworY2xhc3Mg
SlNPYmplY3Q7CitjbGFzcyBKU1ZhbHVlOworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVyczsKQEAgLTQ1LDcgKzUxLDcg
QEAgcHVibGljOgogICAgIHN0YXRpYyBSZWY8RGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGU+IGNy
ZWF0ZShjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYg
dXNlckFnZW50LCBEZWRpY2F0ZWRXb3JrZXJUaHJlYWQmLCBjb25zdCBDb250ZW50U2VjdXJpdHlQ
b2xpY3lSZXNwb25zZUhlYWRlcnMmLCBib29sIHNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRT
ZWN1cml0eVBvbGljeSwgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiYmIHRvcE9yaWdpbiwgSURCQ2xp
ZW50OjpJREJDb25uZWN0aW9uUHJveHkqLCBTb2NrZXRQcm92aWRlciopOwogICAgIHZpcnR1YWwg
fkRlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlKCk7CiAKLSAgICBFeGNlcHRpb25Pcjx2b2lkPiBw
b3N0TWVzc2FnZShSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmLCBWZWN0b3I8UmVmUHRy
PE1lc3NhZ2VQb3J0Pj4mJik7CisgICAgRXhjZXB0aW9uT3I8dm9pZD4gcG9zdE1lc3NhZ2UoSlND
OjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUgbWVzc2FnZSwgVmVjdG9yPEpTQzo6U3Ryb25nPEpT
Qzo6SlNPYmplY3Q+PiYmKTsKIAogICAgIERlZGljYXRlZFdvcmtlclRocmVhZCYgdGhyZWFkKCk7
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyR2xvYmFsU2Nv
cGUuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29y
a2VyR2xvYmFsU2NvcGUuaWRsCShyZXZpc2lvbiAyMDkyNTUpCisrKyBTb3VyY2UvV2ViQ29yZS93
b3JrZXJzL0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmlkbAkod29ya2luZyBjb3B5KQpAQCAt
MzQsNyArMzQsNyBAQAogICAgIEdsb2JhbD0oV29ya2VyLERlZGljYXRlZFdvcmtlciksCiAgICAg
SlNHZW5lcmF0ZVRvTmF0aXZlT2JqZWN0LAogXSBpbnRlcmZhY2UgRGVkaWNhdGVkV29ya2VyR2xv
YmFsU2NvcGUgOiBXb3JrZXJHbG9iYWxTY29wZSB7Ci0gICAgW0N1c3RvbSwgTWF5VGhyb3dFeGNl
cHRpb25dIHZvaWQgcG9zdE1lc3NhZ2UoYW55IG1lc3NhZ2UsIG9wdGlvbmFsIEFycmF5IG1lc3Nh
Z2VQb3J0cyk7CisgICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlLCBNYXlUaHJvd0V4Y2VwdGlvbl0g
dm9pZCBwb3N0TWVzc2FnZShhbnkgbWVzc2FnZSwgb3B0aW9uYWwgc2VxdWVuY2U8b2JqZWN0PiB0
cmFuc2ZlciA9IFtdKTsKIAogICAgIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb25tZXNzYWdlOwog
fTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5jcHAJKHJldmlzaW9uIDIwOTI1NSkKKysr
IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAx
LDEzICsxMDEsMTggQEAgV29ya2VyOjp+V29ya2VyKCkKICAgICBtX2NvbnRleHRQcm94eS0+d29y
a2VyT2JqZWN0RGVzdHJveWVkKCk7CiB9CiAKLUV4Y2VwdGlvbk9yPHZvaWQ+IFdvcmtlcjo6cG9z
dE1lc3NhZ2UoUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiBtZXNzYWdlLCBWZWN0b3I8
UmVmUHRyPE1lc3NhZ2VQb3J0Pj4mJiBwb3J0cykKK0V4Y2VwdGlvbk9yPHZvaWQ+IFdvcmtlcjo6
cG9zdE1lc3NhZ2UoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUgbWVzc2FnZVZh
bHVlLCBWZWN0b3I8SlNDOjpTdHJvbmc8SlNDOjpKU09iamVjdD4+JiYgdHJhbnNmZXIpCiB7Cisg
ICAgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+IHBvcnRzOworICAgIGF1dG8gbWVzc2FnZSA9
IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKHN0YXRlLCBtZXNzYWdlVmFsdWUsIFdURk1v
dmUodHJhbnNmZXIpLCBwb3J0cyk7CisgICAgaWYgKG1lc3NhZ2UuaGFzRXhjZXB0aW9uKCkpCisg
ICAgICAgIHJldHVybiBtZXNzYWdlLnJlbGVhc2VFeGNlcHRpb24oKTsKKwogICAgIC8vIERpc2Vu
dGFuZ2xlIHRoZSBwb3J0IGluIHByZXBhcmF0aW9uIGZvciBzZW5kaW5nIGl0IHRvIHRoZSByZW1v
dGUgY29udGV4dC4KICAgICBhdXRvIGNoYW5uZWxzID0gTWVzc2FnZVBvcnQ6OmRpc2VudGFuZ2xl
UG9ydHMoV1RGTW92ZShwb3J0cykpOwogICAgIGlmIChjaGFubmVscy5oYXNFeGNlcHRpb24oKSkK
ICAgICAgICAgcmV0dXJuIGNoYW5uZWxzLnJlbGVhc2VFeGNlcHRpb24oKTsKLSAgICBtX2NvbnRl
eHRQcm94eS0+cG9zdE1lc3NhZ2VUb1dvcmtlckdsb2JhbFNjb3BlKFdURk1vdmUobWVzc2FnZSks
IGNoYW5uZWxzLnJlbGVhc2VSZXR1cm5WYWx1ZSgpKTsKKyAgICBtX2NvbnRleHRQcm94eS0+cG9z
dE1lc3NhZ2VUb1dvcmtlckdsb2JhbFNjb3BlKG1lc3NhZ2UucmVsZWFzZVJldHVyblZhbHVlKCks
IGNoYW5uZWxzLnJlbGVhc2VSZXR1cm5WYWx1ZSgpKTsKICAgICByZXR1cm4geyB9OwogfQogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmgJKHJldmlzaW9uIDIwOTI1NSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDEyIEBA
CiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3Ry
aW5nSGFzaC5oPgogCituYW1lc3BhY2UgSlNDIHsKK2NsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNzIEpT
T2JqZWN0OworY2xhc3MgSlNWYWx1ZTsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwpAQCAtNDYsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxXb3JrZXI+PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYsIGNvbnN0IFN0cmluZyYgdXJsLCBKU0M6OlJ1bnRpbWVGbGFncyk7CiAgICAgdmlydHVh
bCB+V29ya2VyKCk7CiAKLSAgICBFeGNlcHRpb25Pcjx2b2lkPiBwb3N0TWVzc2FnZShSZWZQdHI8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmIG1lc3NhZ2UsIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBv
cnQ+PiYmKTsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBwb3N0TWVzc2FnZShKU0M6OkV4ZWNTdGF0
ZSYsIEpTQzo6SlNWYWx1ZSBtZXNzYWdlLCBWZWN0b3I8SlNDOjpTdHJvbmc8SlNDOjpKU09iamVj
dD4+JiYpOwogCiAgICAgdm9pZCB0ZXJtaW5hdGUoKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXIuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyLmlkbAkocmV2aXNpb24gMjA5MjU1KQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXIuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwxMSArMjgsMTAgQEAKICAgICBBY3RpdmVE
T01PYmplY3QsCiAgICAgQ3VzdG9tQ29uc3RydWN0b3IoVVNWU3RyaW5nIHNjcmlwdFVybCksCiBd
IGludGVyZmFjZSBXb3JrZXIgOiBFdmVudFRhcmdldCB7Ci0gICAgYXR0cmlidXRlIEV2ZW50SGFu
ZGxlciBvbm1lc3NhZ2U7Ci0KLSAgICBbQ3VzdG9tLCBNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBw
b3N0TWVzc2FnZShTZXJpYWxpemVkU2NyaXB0VmFsdWUgbWVzc2FnZSwgb3B0aW9uYWwgQXJyYXkg
bWVzc2FnZVBvcnRzKTsKLQogICAgIHZvaWQgdGVybWluYXRlKCk7CisKKyAgICBbQ2FsbFdpdGg9
U2NyaXB0U3RhdGUsIE1heVRocm93RXhjZXB0aW9uXSB2b2lkIHBvc3RNZXNzYWdlKGFueSBtZXNz
YWdlLCBvcHRpb25hbCBzZXF1ZW5jZTxvYmplY3Q+IHRyYW5zZmVyID0gW10pOworICAgIGF0dHJp
YnV0ZSBFdmVudEhhbmRsZXIgb25tZXNzYWdlOwogfTsKIAogV29ya2VyIGltcGxlbWVudHMgQWJz
dHJhY3RXb3JrZXI7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDkyNTUpCisrKyBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNCBAQAorMjAxNi0xMi0wMiAgU2Ft
IFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIG9wdGlvbmFsIHNlcXVlbmNlIHZh
bHVlcyBub3QgaGFuZGxlZCBjb3JyZWN0bHkgYnkgYmluZGluZyBnZW5lcmF0b3IKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MjU2MgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9jYW52YXMvd2Vi
Z2wvcmVzb3VyY2VzL3R5cGVkLWFycmF5LXdvcmtlci5qczoKKyAgICAgICAgKiBmYXN0L2RvbS9X
aW5kb3cvd2luZG93LXBvc3RtZXNzYWdlLWFyZ3MtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZh
c3QvZG9tL1dpbmRvdy93aW5kb3ctcG9zdG1lc3NhZ2UtYXJncy5odG1sOgorICAgICAgICAqIGZh
c3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1kZWxldGVkLWRvY3VtZW50Lmh0bWw6CisgICAgICAgICog
ZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0LWRlbGV0ZWQtZnJhbWUuaHRtbDoKKyAgICAgICAgKiBm
YXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQtaW5hY3RpdmUtZG9jdW1lbnQuaHRtbDoKKyAgICAgICAg
KiBmYXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQtbXVsdGktZXhwZWN0ZWQudHh0OgorICAgICAgICAq
IGZhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC5odG1sOgorICAgICAgICAqIGZhc3Qvd29ya2Vycy93
b3JrZXItY29udGV4dC1tdWx0aS1wb3J0LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L3dv
cmtlcnMvd29ya2VyLW11bHRpLXBvcnQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYmdsLzEu
MC4yL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3R5cGVkYXJyYXlzL3Jl
c291cmNlcy90eXBlZC1hcnJheS13b3JrZXIuanM6CisgICAgICAgICogd2ViZ2wvMS4wLjMvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdHlwZWRhcnJheXMvcmVzb3VyY2Vz
L3R5cGVkLWFycmF5LXdvcmtlci5qczoKKyAgICAgICAgVXBkYXRlIGZvciBuZXcgZXhjZXB0aW9u
cyBhbmQgc3RyaWN0ZXIgZW5mb3JjZW1lbnQgb2YgdGhlIHBvc3RNZXNzYWdlIHNpZ25hdHVyZS4g
CisKIDIwMTYtMTItMDIgIERhdmUgSHlhdHQgIDxoeWF0dEBhcHBsZS5jb20+CiAKICAgICAgICAg
W0NTUyBQYXJzZXJdIE1hcmsgc2V0LXNlbGVjdG9yLXRleHQgdGVzdCwgc2luY2UgaXQgd2lsbCBu
ZWVkIHRvIGJlIHJld3JpdHRlbi4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmds
L3Jlc291cmNlcy90eXBlZC1hcnJheS13b3JrZXIuanMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9jYW52YXMvd2ViZ2wvcmVzb3VyY2VzL3R5cGVkLWFycmF5LXdvcmtlci5qcwkocmV2
aXNpb24gMjA5MjU1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvcmVzb3VyY2Vz
L3R5cGVkLWFycmF5LXdvcmtlci5qcwkod29ya2luZyBjb3B5KQpAQCAtNzQsNyArNzQsNyBAQCBv
bm1lc3NhZ2UgPSBmdW5jdGlvbihldmVudCkgewogICAgIH0gZWxzZSB7CiAgICAgICB2YWx1ZVRv
U2VuZCA9IHZpZXcuYnVmZmVyOwogICAgIH0KLSAgICB2YXIgdHJhbnNmZXJhYmxlc1RvU2VuZCA9
IG51bGw7CisgICAgdmFyIHRyYW5zZmVyYWJsZXNUb1NlbmQgPSBbXTsKICAgICBpZiAobWVzc2Fn
ZS5jb21tYW5kID09ICd0cmFuc2ZlcicgfHwKICAgICAgICAgbWVzc2FnZS5jb21tYW5kID09ICd0
cmFuc2ZlckJ1ZmZlcicpIHsKICAgICAgIHRyYW5zZmVyYWJsZXNUb1NlbmQgPSBbIHZpZXcuYnVm
ZmVyIF07CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXBvc3RtZXNz
YWdlLWFyZ3MtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9t
L1dpbmRvdy93aW5kb3ctcG9zdG1lc3NhZ2UtYXJncy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDIw
OTI1NSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcG9zdG1lc3NhZ2Ut
YXJncy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTIsMTMgKzIsMTMgQEAgVGVzdCB0
aGF0IHRoZSBzZWNvbmQgYXJndW1lbnQgb2Ygd2luZG93LgogCiBQQVNTOiBQb3N0aW5nIG1lc3Nh
Z2UgKCcxJywgMSk6IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFZhbHVlIGlzIG5vdCBhIHNl
cXVlbmNlCiBQQVNTOiBQb3N0aW5nIG1lc3NhZ2UgKCcyJywgYyk6IHRocmV3IGV4Y2VwdGlvbiBU
eXBlRXJyb3I6IFZhbHVlIGlzIG5vdCBhIHNlcXVlbmNlCi1QQVNTOiBQb3N0aW5nIG1lc3NhZ2Ug
KCczJywgW29iamVjdCBPYmplY3RdKTogdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVmFsdWUg
aXMgbm90IGEgc2VxdWVuY2UKLVBBU1M6IFBvc3RpbmcgbWVzc2FnZSAoJzQnLCBbb2JqZWN0IFdp
bmRvd10pIGRpZCBub3QgdGhyb3cgYW4gZXhjZXB0aW9uCi1QQVNTOiBQb3N0aW5nIG1lc3NhZ2Ug
KCc0YScsICopIGRpZCBub3QgdGhyb3cgYW4gZXhjZXB0aW9uCitQQVNTOiBQb3N0aW5nIG1lc3Nh
Z2UgKCczJywgW29iamVjdCBPYmplY3RdKTogdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlw
ZSBlcnJvcgorUEFTUzogUG9zdGluZyBtZXNzYWdlICgnNCcsIFtvYmplY3QgV2luZG93XSk6IHRo
cmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IKK1BBU1M6IFBvc3RpbmcgbWVzc2Fn
ZSAoJzRhJywgKik6IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFZhbHVlIGlzIG5vdCBhIHNl
cXVlbmNlCiBQQVNTOiBQb3N0aW5nIG1lc3NhZ2UgKCc1JywgbnVsbCkgZGlkIG5vdCB0aHJvdyBh
biBleGNlcHRpb24KIFBBU1M6IFBvc3RpbmcgbWVzc2FnZSAoJzYnLCB1bmRlZmluZWQpIGRpZCBu
b3QgdGhyb3cgYW4gZXhjZXB0aW9uCiBQQVNTOiBQb3N0aW5nIG1lc3NhZ2UgKCc3JywgW29iamVj
dCBNZXNzYWdlUG9ydF0sW29iamVjdCBNZXNzYWdlUG9ydF0pIGRpZCBub3QgdGhyb3cgYW4gZXhj
ZXB0aW9uCi1QQVNTOiBQb3N0aW5nIG1lc3NhZ2UgKCc3YScsICopIGRpZCBub3QgdGhyb3cgYW4g
ZXhjZXB0aW9uCitQQVNTOiBQb3N0aW5nIG1lc3NhZ2UgKCc3YScsICopOiB0aHJldyBleGNlcHRp
b24gVHlwZUVycm9yOiBWYWx1ZSBpcyBub3QgYSBzZXF1ZW5jZQogUEFTUzogUG9zdGluZyBtZXNz
YWdlICgnNycsIFtvYmplY3QgTWVzc2FnZVBvcnRdLFtvYmplY3QgTWVzc2FnZVBvcnRdKSBkaWQg
bm90IHRocm93IGFuIGV4Y2VwdGlvbgogUEFTUzogUG9zdGluZyBtZXNzYWdlICgnMjE0NzQ4MzY0
OCcsIG51bGwpIGRpZCBub3QgdGhyb3cgYW4gZXhjZXB0aW9uCiBQQVNTOiBQb3N0aW5nIG1lc3Nh
Z2UgKCdbb2JqZWN0IE1lc3NhZ2VQb3J0XScsIFtvYmplY3QgTWVzc2FnZVBvcnRdLFtvYmplY3Qg
TWVzc2FnZVBvcnRdKSBkaWQgbm90IHRocm93IGFuIGV4Y2VwdGlvbgpAQCAtMTgsMTIgKzE4LDkg
QEAgUEFTUzogUG9zdGluZyBtZXNzYWdlICgnW29iamVjdCBBcnJheUJ1ZgogUEFTUzogYXJyYXlC
dWZmZXIgbmV1dGVyZWQKIFBBU1M6IHZpZXcgbmV1dGVyZWQKIFBBU1M6IFBvc3RpbmcgbWVzc2Fn
ZSAoJ2RvbmUnLCB1bmRlZmluZWQpIGRpZCBub3QgdGhyb3cgYW4gZXhjZXB0aW9uCi1SZWNlaXZl
ZCBtZXNzYWdlICc0JyB3aXRoIDAgcG9ydHMuCi1SZWNlaXZlZCBtZXNzYWdlICc0YScgd2l0aCAw
IHBvcnRzLgogUmVjZWl2ZWQgbWVzc2FnZSAnNScgd2l0aCAwIHBvcnRzLgogUmVjZWl2ZWQgbWVz
c2FnZSAnNicgd2l0aCAwIHBvcnRzLgogUmVjZWl2ZWQgbWVzc2FnZSAnNycgd2l0aCAyIHBvcnRz
LgotUmVjZWl2ZWQgbWVzc2FnZSAnN2EnIHdpdGggMiBwb3J0cy4KIFJlY2VpdmVkIG1lc3NhZ2Ug
JzcnIHdpdGggMiBwb3J0cy4KIFJlY2VpdmVkIG1lc3NhZ2UgJzIxNDc0ODM2NDgnIHdpdGggMCBw
b3J0cy4KIFJlY2VpdmVkIG1lc3NhZ2UgJ1tvYmplY3QgTWVzc2FnZVBvcnRdJyB3aXRoIDIgcG9y
dHMuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXBvc3RtZXNzYWdl
LWFyZ3MuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2lu
ZG93LXBvc3RtZXNzYWdlLWFyZ3MuaHRtbAkocmV2aXNpb24gMjA5MjU1KQorKysgTGF5b3V0VGVz
dHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wb3N0bWVzc2FnZS1hcmdzLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTQ0LDE0ICs0NCwxNCBAQCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGVzY3Jp
cHRpb24iKS5pCiB0cnlQb3N0TWVzc2FnZSgnMScsICcqJywgMSwgdHJ1ZSk7CiB0cnlQb3N0TWVz
c2FnZSgnMicsICcqJywgJ2MnLCB0cnVlKTsKIHRyeVBvc3RNZXNzYWdlKCczJywgJyonLCB7IHg6
IDEgfSwgdHJ1ZSk7Ci10cnlQb3N0TWVzc2FnZSgnNCcsICcqJywgd2luZG93KTsgIC8vIFBhc3Nl
cyBiZWNhdXNlIHdpbmRvdyBoYXMgYSAibGVuZ3RoIiBhdHRyaWJ1dGUgb2YgdmFsdWUgJzAnLCBz
byBpdCBsb29rcyBsaWtlIGFuIGFycmF5Ci10cnlQb3N0TWVzc2FnZSgnNGEnLCB3aW5kb3csICcq
Jyk7IC8vIExlZ2FjeSBhcmd1bWVudCBvcmRlci4KK3RyeVBvc3RNZXNzYWdlKCc0JywgJyonLCB3
aW5kb3csIHRydWUpOwordHJ5UG9zdE1lc3NhZ2UoJzRhJywgd2luZG93LCAnKicsIHRydWUpOyAv
LyBMZWdhY3kgYXJndW1lbnQgb3JkZXIuCiB0cnlQb3N0TWVzc2FnZSgnNScsICcqJywgbnVsbCk7
CiB0cnlQb3N0TWVzc2FnZSgnNicsICcqJywgdm9pZCAwKTsKIHZhciBjaGFubmVsMSA9IG5ldyBN
ZXNzYWdlQ2hhbm5lbDsKIHRyeVBvc3RNZXNzYWdlRnVuY3Rpb24od2luZG93LnBvc3RNZXNzYWdl
LCAnNycsICcqJywgW2NoYW5uZWwxLnBvcnQxLCBjaGFubmVsMS5wb3J0Ml0pOwogdmFyIGNoYW5u
ZWwxYSA9IG5ldyBNZXNzYWdlQ2hhbm5lbDsKLXRyeVBvc3RNZXNzYWdlRnVuY3Rpb24od2luZG93
LnBvc3RNZXNzYWdlLCAnN2EnLCBbY2hhbm5lbDFhLnBvcnQxLCBjaGFubmVsMWEucG9ydDJdLCAn
KicpOwordHJ5UG9zdE1lc3NhZ2VGdW5jdGlvbih3aW5kb3cucG9zdE1lc3NhZ2UsICc3YScsIFtj
aGFubmVsMWEucG9ydDEsIGNoYW5uZWwxYS5wb3J0Ml0sICcqJywgdHJ1ZSk7CiB2YXIgY2hhbm5l
bDIgPSBuZXcgTWVzc2FnZUNoYW5uZWw7CiB0cnlQb3N0TWVzc2FnZUZ1bmN0aW9uKHdpbmRvdy5w
b3N0TWVzc2FnZSwgJzcnLCAnKicsIFtjaGFubmVsMi5wb3J0MSwgY2hhbm5lbDIucG9ydDJdKTsK
IHZhciBjaGFubmVsMyA9IG5ldyBNZXNzYWdlQ2hhbm5lbDsKSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1kZWxldGVkLWRvY3VtZW50Lmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0LWRlbGV0ZWQtZG9jdW1lbnQu
aHRtbAkocmV2aXNpb24gMjA5MjU1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2Fn
ZS1wb3J0LWRlbGV0ZWQtZG9jdW1lbnQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcs
NyBAQCB2YXIgbWFpblBvcnQ7CiBmdW5jdGlvbiB0ZXN0KCkKIHsKICAgICB2YXIgY2hhbm5lbCA9
IG5ldyBNZXNzYWdlQ2hhbm5lbDsKLSAgICB3aW5kb3cuZnJhbWVzWzBdLnBvc3RNZXNzYWdlKCJt
c2ciLCBbY2hhbm5lbC5wb3J0Ml0sICIqIik7CisgICAgd2luZG93LmZyYW1lc1swXS5wb3N0TWVz
c2FnZSgibXNnIiwgIioiLCBbY2hhbm5lbC5wb3J0Ml0pOwogICAgIG1haW5Qb3J0ID0gY2hhbm5l
bC5wb3J0MTsKICAgICBtYWluUG9ydC5zdGFydCgpOwogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2V2ZW50cy9tZXNzYWdlLXBvcnQtZGVsZXRlZC1mcmFtZS5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1kZWxldGVkLWZyYW1lLmh0bWwJKHJl
dmlzaW9uIDIwOTI1NSkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1k
ZWxldGVkLWZyYW1lLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAgZnVuY3Rp
b24gdGVzdCgpCiB7CiAgICAgZnJhbWVEb2MgPSB3aW5kb3cuZnJhbWVzWzBdLmRvY3VtZW50Owog
ICAgIHZhciBjaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFubmVsOwotICAgIHdpbmRvdy5mcmFtZXNb
MF0ucG9zdE1lc3NhZ2UoIm1zZyIsIFtjaGFubmVsLnBvcnQyXSwgIioiKTsKKyAgICB3aW5kb3cu
ZnJhbWVzWzBdLnBvc3RNZXNzYWdlKCJtc2ciLCAiKiIsIFtjaGFubmVsLnBvcnQyXSk7CiAgICAg
bWFpblBvcnQgPSBjaGFubmVsLnBvcnQxOwogICAgIG1haW5Qb3J0LnN0YXJ0KCk7CiAKSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1pbmFjdGl2ZS1kb2N1bWVudC5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1p
bmFjdGl2ZS1kb2N1bWVudC5odG1sCShyZXZpc2lvbiAyMDkyNTUpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQtaW5hY3RpdmUtZG9jdW1lbnQuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMjksNyArMjksNyBAQCBmdW5jdGlvbiB0ZXN0KCkKIHsKICAgICBvdGhlckRvY3Vt
ZW50ID0gd2luZG93LmZyYW1lc1swXS5kb2N1bWVudDsKICAgICB2YXIgY2hhbm5lbCA9IG5ldyBN
ZXNzYWdlQ2hhbm5lbDsKLSAgICB3aW5kb3cuZnJhbWVzWzBdLnBvc3RNZXNzYWdlKCJtc2ciLCBb
Y2hhbm5lbC5wb3J0Ml0sICIqIik7CisgICAgd2luZG93LmZyYW1lc1swXS5wb3N0TWVzc2FnZSgi
bXNnIiwgIioiLCBbY2hhbm5lbC5wb3J0Ml0pOwogICAgIG1haW5Qb3J0ID0gY2hhbm5lbC5wb3J0
MTsKICAgICBtYWluUG9ydC5zdGFydCgpOwogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50
cy9tZXNzYWdlLXBvcnQtbXVsdGktZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1tdWx0aS1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDIwOTI1NSkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1tdWx0aS1l
eHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTUsMTIgKzUsMTIgQEAgT24gc3VjY2Vzcywg
eW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQQogCiBQQVNTIGNoYW5uZWwucG9ydDEucG9zdE1l
c3NhZ2UoInNhbWUgcG9ydCIsIFtjaGFubmVsLnBvcnQxXSkgdGhyZXcgZXhjZXB0aW9uIERhdGFD
bG9uZUVycm9yIChET00gRXhjZXB0aW9uIDI1KTogVGhlIG9iamVjdCBjYW4gbm90IGJlIGNsb25l
ZC4uCiBQQVNTIGNoYW5uZWwucG9ydDEucG9zdE1lc3NhZ2UoImVudGFuZ2xlZCBwb3J0IiwgW2No
YW5uZWwucG9ydDJdKSB0aHJldyBleGNlcHRpb24gRGF0YUNsb25lRXJyb3IgKERPTSBFeGNlcHRp
b24gMjUpOiBUaGUgb2JqZWN0IGNhbiBub3QgYmUgY2xvbmVkLi4KLVBBU1MgY2hhbm5lbC5wb3J0
MS5wb3N0TWVzc2FnZSgibnVsbCBwb3J0IiwgW2NoYW5uZWwzLnBvcnQxLCBudWxsLCBjaGFubmVs
My5wb3J0Ml0pIHRocmV3IGV4Y2VwdGlvbiBJbnZhbGlkU3RhdGVFcnJvciAoRE9NIEV4Y2VwdGlv
biAxMSk6IFRoZSBvYmplY3QgaXMgaW4gYW4gaW52YWxpZCBzdGF0ZS4uCi1QQVNTIGNoYW5uZWwu
cG9ydDEucG9zdE1lc3NhZ2UoIm5vdEFQb3J0IiwgW2NoYW5uZWwzLnBvcnQxLCB7fSwgY2hhbm5l
bDMucG9ydDJdKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgotUEFTUyBj
aGFubmVsLnBvcnQxLnBvc3RNZXNzYWdlKCJkdXBsaWNhdGUgcG9ydCIsIFtjaGFubmVsMy5wb3J0
MSwgY2hhbm5lbDMucG9ydDFdKSB0aHJldyBleGNlcHRpb24gSW52YWxpZFN0YXRlRXJyb3IgKERP
TSBFeGNlcHRpb24gMTEpOiBUaGUgb2JqZWN0IGlzIGluIGFuIGludmFsaWQgc3RhdGUuLgotUEFT
UyBjaGFubmVsLnBvcnQxLnBvc3RNZXNzYWdlKCJub3RBbkFycmF5IiwgY2hhbm5lbDMucG9ydDEp
IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFZhbHVlIGlzIG5vdCBhIHNlcXVlbmNlLgotUEFT
UyBjaGFubmVsLnBvcnQxLnBvc3RNZXNzYWdlKCJub3RBU2VxdWVuY2UiLCBbe2xlbmd0aDogM31d
KSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgotUEFTUyBjaGFubmVsLnBv
cnQxLnBvc3RNZXNzYWdlKCJsYXJnZVNlcXVlbmNlIiwgbGFyZ2VQb3J0QXJyYXkpIHRocmV3IGV4
Y2VwdGlvbiBJbnZhbGlkU3RhdGVFcnJvciAoRE9NIEV4Y2VwdGlvbiAxMSk6IFRoZSBvYmplY3Qg
aXMgaW4gYW4gaW52YWxpZCBzdGF0ZS4uCitQQVNTIGNoYW5uZWwucG9ydDEucG9zdE1lc3NhZ2Uo
Im51bGwgcG9ydCIsIFtjaGFubmVsMy5wb3J0MSwgbnVsbCwgY2hhbm5lbDMucG9ydDJdKSB0aHJl
dyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgorUEFTUyBjaGFubmVsLnBvcnQxLnBv
c3RNZXNzYWdlKCJub3RBUG9ydCIsIFtjaGFubmVsMy5wb3J0MSwge30sIGNoYW5uZWwzLnBvcnQy
XSkgdGhyZXcgZXhjZXB0aW9uIERhdGFDbG9uZUVycm9yIChET00gRXhjZXB0aW9uIDI1KTogVGhl
IG9iamVjdCBjYW4gbm90IGJlIGNsb25lZC4uCitQQVNTIGNoYW5uZWwucG9ydDEucG9zdE1lc3Nh
Z2UoImR1cGxpY2F0ZSBwb3J0IiwgW2NoYW5uZWwzLnBvcnQxLCBjaGFubmVsMy5wb3J0MV0pIHRo
cmV3IGV4Y2VwdGlvbiBEYXRhQ2xvbmVFcnJvciAoRE9NIEV4Y2VwdGlvbiAyNSk6IFRoZSBvYmpl
Y3QgY2FuIG5vdCBiZSBjbG9uZWQuLgorUEFTUyBjaGFubmVsLnBvcnQxLnBvc3RNZXNzYWdlKCJu
b3RBbkFycmF5IiwgY2hhbm5lbDMucG9ydDEpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5
cGUgZXJyb3IuCitQQVNTIGNoYW5uZWwucG9ydDEucG9zdE1lc3NhZ2UoIm5vdEFTZXF1ZW5jZSIs
IFt7bGVuZ3RoOiAzfV0pIHRocmV3IGV4Y2VwdGlvbiBEYXRhQ2xvbmVFcnJvciAoRE9NIEV4Y2Vw
dGlvbiAyNSk6IFRoZSBvYmplY3QgY2FuIG5vdCBiZSBjbG9uZWQuLgorUEFTUyBjaGFubmVsLnBv
cnQxLnBvc3RNZXNzYWdlKCJsYXJnZVNlcXVlbmNlIiwgbGFyZ2VQb3J0QXJyYXkpIHRocmV3IGV4
Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCiBQQVNTIGV2ZW50LnBvcnRzIGlzIG5vbi1u
dWxsIGFuZCB6ZXJvIGxlbmd0aCB3aGVuIG5vIHBvcnQgc2VudAogUEFTUyBldmVudC5wb3J0cyBp
cyBub24tbnVsbCBhbmQgemVybyBsZW5ndGggd2hlbiBlbXB0eSBhcnJheSBzZW50CiBQQVNTIGV2
ZW50LnBvcnRzIGNvbnRhaW5zIHR3byBwb3J0cyB3aGVuIHR3byBwb3J0cyBzZW50CkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQuaHRtbAkocmV2aXNpb24gMjA5MjU1
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0Lmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTM4LDcgKzM4LDcgQEAgZnVuY3Rpb24gdGVzdChwb3N0TWVzc2FnZUZ1bikKIHsK
ICAgICB2YXIgY2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbDsKIAotICAgIHdpbmRvdy5mcmFt
ZXNbMF1bcG9zdE1lc3NhZ2VGdW5dKCJtc2ciLCBbY2hhbm5lbC5wb3J0Ml0sICIqIik7CisgICAg
d2luZG93LmZyYW1lc1swXVtwb3N0TWVzc2FnZUZ1bl0oIm1zZyIsICIqIiwgW2NoYW5uZWwucG9y
dDJdKTsKICAgICBtYWluUG9ydCA9IGNoYW5uZWwucG9ydDE7CiAgICAgbWFpblBvcnRbcG9zdE1l
c3NhZ2VGdW5dKCJwaW5nIik7CiAgICAgbWFpblBvcnQub25tZXNzYWdlID0gZnVuY3Rpb24oZXZ0
KSB7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvd29ya2VyLWNvbnRleHQtbXVsdGkt
cG9ydC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJz
L3dvcmtlci1jb250ZXh0LW11bHRpLXBvcnQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyMDkyNTUp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvd29ya2VyLWNvbnRleHQtbXVsdGktcG9ydC1l
eHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTYsMTEgKzYsMTEgQEAgT24gc3VjY2Vzcywg
eW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQQogUEFTUyBldmVudC5wb3J0cyBpcyBub24tbnVs
bCBhbmQgemVybyBsZW5ndGggd2hlbiBubyBwb3J0IHNlbnQKIFBBU1MgZXZlbnQucG9ydHMgaXMg
bm9uLW51bGwgYW5kIHplcm8gbGVuZ3RoIHdoZW4gZW1wdHkgYXJyYXkgc2VudAogUEFTUyBldmVu
dC5wb3J0cyBjb250YWlucyB0d28gcG9ydHMgd2hlbiB0d28gcG9ydHMgc2VudAotUEFTUyBwb3N0
aW5nIGEgbnVsbCBwb3J0IGRpZCB0aHJvdzogSW52YWxpZFN0YXRlRXJyb3IgKERPTSBFeGNlcHRp
b24gMTEpOiBUaGUgb2JqZWN0IGlzIGluIGFuIGludmFsaWQgc3RhdGUuCi1QQVNTIHBvc3Rpbmcg
YSBub24tcG9ydCBkaWQgdGhyb3c6IFR5cGVFcnJvcjogVHlwZSBlcnJvcgorUEFTUyBwb3N0aW5n
IGEgbnVsbCBwb3J0IGRpZCB0aHJvdzogVHlwZUVycm9yOiBUeXBlIGVycm9yCitQQVNTIHBvc3Rp
bmcgYSBub24tcG9ydCBkaWQgdGhyb3c6IERhdGFDbG9uZUVycm9yIChET00gRXhjZXB0aW9uIDI1
KTogVGhlIG9iamVjdCBjYW4gbm90IGJlIGNsb25lZC4KIFBBU1MgZXZlbnQucG9ydHMgY29udGFp
bnMgdHdvIHBvcnRzIHdoZW4gdHdvIHBvcnRzIHJlLXNlbnQgYWZ0ZXIgZXJyb3IKLVBBU1MgcG9z
dGluZyBhIG5vbi1hcnJheSBkaWQgdGhyb3c6IFR5cGVFcnJvcjogVmFsdWUgaXMgbm90IGEgc2Vx
dWVuY2UKLVBBU1MgcG9zdGluZyBhIG5vbi1zZXF1ZW5jZSBkaWQgdGhyb3c6IFR5cGVFcnJvcjog
VHlwZSBlcnJvcgorUEFTUyBwb3N0aW5nIGEgbm9uLWFycmF5IGRpZCB0aHJvdzogVHlwZUVycm9y
OiBUeXBlIGVycm9yCitQQVNTIHBvc3RpbmcgYSBub24tc2VxdWVuY2UgZGlkIHRocm93OiBEYXRh
Q2xvbmVFcnJvciAoRE9NIEV4Y2VwdGlvbiAyNSk6IFRoZSBvYmplY3QgY2FuIG5vdCBiZSBjbG9u
ZWQuCiAKIFRFU1QgQ09NUExFVEUKIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3dv
cmtlci1tdWx0aS1wb3J0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L3dvcmtlcnMvd29ya2VyLW11bHRpLXBvcnQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyMDky
NTUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvd29ya2VyLW11bHRpLXBvcnQtZXhwZWN0
ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zLDEwICszLDEwIEBAIFRoaXMgdGVzdCBjaGVja3Mg
dGhlIHZhcmlvdXMgdXNlIGNhc2VzIGEKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAogCi1Q
QVNTIHdvcmtlci5wb3N0TWVzc2FnZSgibnVsbCBwb3J0IiwgW2NoYW5uZWwzLnBvcnQxLCBudWxs
LCBjaGFubmVsMy5wb3J0Ml0pIHRocmV3IGV4Y2VwdGlvbiBJbnZhbGlkU3RhdGVFcnJvciAoRE9N
IEV4Y2VwdGlvbiAxMSk6IFRoZSBvYmplY3QgaXMgaW4gYW4gaW52YWxpZCBzdGF0ZS4uCi1QQVNT
IHdvcmtlci5wb3N0TWVzc2FnZSgibm90QVBvcnQiLCBbY2hhbm5lbDMucG9ydDEsIHt9LCBjaGFu
bmVsMy5wb3J0Ml0pIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCi1QQVNT
IHdvcmtlci5wb3N0TWVzc2FnZSgibm90QW5BcnJheSIsIGNoYW5uZWwzLnBvcnQxKSB0aHJldyBl
eGNlcHRpb24gVHlwZUVycm9yOiBWYWx1ZSBpcyBub3QgYSBzZXF1ZW5jZS4KLVBBU1Mgd29ya2Vy
LnBvc3RNZXNzYWdlKCJub3RBU2VxdWVuY2UiLCBbe2xlbmd0aDogM31dKSB0aHJldyBleGNlcHRp
b24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgorUEFTUyB3b3JrZXIucG9zdE1lc3NhZ2UoIm51bGwg
cG9ydCIsIFtjaGFubmVsMy5wb3J0MSwgbnVsbCwgY2hhbm5lbDMucG9ydDJdKSB0aHJldyBleGNl
cHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgorUEFTUyB3b3JrZXIucG9zdE1lc3NhZ2UoIm5v
dEFQb3J0IiwgW2NoYW5uZWwzLnBvcnQxLCB7fSwgY2hhbm5lbDMucG9ydDJdKSB0aHJldyBleGNl
cHRpb24gRGF0YUNsb25lRXJyb3IgKERPTSBFeGNlcHRpb24gMjUpOiBUaGUgb2JqZWN0IGNhbiBu
b3QgYmUgY2xvbmVkLi4KK1BBU1Mgd29ya2VyLnBvc3RNZXNzYWdlKCJub3RBbkFycmF5IiwgY2hh
bm5lbDMucG9ydDEpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCitQQVNT
IHdvcmtlci5wb3N0TWVzc2FnZSgibm90QVNlcXVlbmNlIiwgW3tsZW5ndGg6IDN9XSkgdGhyZXcg
ZXhjZXB0aW9uIERhdGFDbG9uZUVycm9yIChET00gRXhjZXB0aW9uIDI1KTogVGhlIG9iamVjdCBj
YW4gbm90IGJlIGNsb25lZC4uCiBQQVNTIGV2ZW50LnBvcnRzIGlzIG5vbi1udWxsIGFuZCB6ZXJv
IGxlbmd0aCB3aGVuIG5vIHBvcnQgc2VudAogUEFTUyBldmVudC5wb3J0cyBpcyBub24tbnVsbCBh
bmQgemVybyBsZW5ndGggd2hlbiBlbXB0eSBhcnJheSBzZW50CiBQQVNTIGV2ZW50LnBvcnRzIGNv
bnRhaW5zIHR3byBwb3J0cyB3aGVuIHR3byBwb3J0cyBzZW50CkluZGV4OiBMYXlvdXRUZXN0cy93
ZWJnbC8xLjAuMi9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90eXBlZGFy
cmF5cy9yZXNvdXJjZXMvdHlwZWQtYXJyYXktd29ya2VyLmpzCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL3dlYmdsLzEuMC4yL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
L3R5cGVkYXJyYXlzL3Jlc291cmNlcy90eXBlZC1hcnJheS13b3JrZXIuanMJKHJldmlzaW9uIDIw
OTI1NSkKKysrIExheW91dFRlc3RzL3dlYmdsLzEuMC4yL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL3R5cGVkYXJyYXlzL3Jlc291cmNlcy90eXBlZC1hcnJheS13b3JrZXIu
anMJKHdvcmtpbmcgY29weSkKQEAgLTc0LDcgKzc0LDcgQEAgb25tZXNzYWdlID0gZnVuY3Rpb24o
ZXZlbnQpIHsKICAgICB9IGVsc2UgewogICAgICAgdmFsdWVUb1NlbmQgPSB2aWV3LmJ1ZmZlcjsK
ICAgICB9Ci0gICAgdmFyIHRyYW5zZmVyYWJsZXNUb1NlbmQgPSBudWxsOworICAgIHZhciB0cmFu
c2ZlcmFibGVzVG9TZW5kID0gW107CiAgICAgaWYgKG1lc3NhZ2UuY29tbWFuZCA9PSAndHJhbnNm
ZXInIHx8CiAgICAgICAgIG1lc3NhZ2UuY29tbWFuZCA9PSAndHJhbnNmZXJCdWZmZXInKSB7CiAg
ICAgICB0cmFuc2ZlcmFibGVzVG9TZW5kID0gWyB2aWV3LmJ1ZmZlciBdOwpJbmRleDogTGF5b3V0
VGVzdHMvd2ViZ2wvMS4wLjMvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
dHlwZWRhcnJheXMvcmVzb3VyY2VzL3R5cGVkLWFycmF5LXdvcmtlci5qcwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy93ZWJnbC8xLjAuMy9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZS90eXBlZGFycmF5cy9yZXNvdXJjZXMvdHlwZWQtYXJyYXktd29ya2VyLmpzCShyZXZp
c2lvbiAyMDkyNTUpCisrKyBMYXlvdXRUZXN0cy93ZWJnbC8xLjAuMy9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS90eXBlZGFycmF5cy9yZXNvdXJjZXMvdHlwZWQtYXJyYXkt
d29ya2VyLmpzCSh3b3JraW5nIGNvcHkpCkBAIC03NCw3ICs3NCw3IEBAIG9ubWVzc2FnZSA9IGZ1
bmN0aW9uKGV2ZW50KSB7CiAgICAgfSBlbHNlIHsKICAgICAgIHZhbHVlVG9TZW5kID0gdmlldy5i
dWZmZXI7CiAgICAgfQotICAgIHZhciB0cmFuc2ZlcmFibGVzVG9TZW5kID0gbnVsbDsKKyAgICB2
YXIgdHJhbnNmZXJhYmxlc1RvU2VuZCA9IFtdOwogICAgIGlmIChtZXNzYWdlLmNvbW1hbmQgPT0g
J3RyYW5zZmVyJyB8fAogICAgICAgICBtZXNzYWdlLmNvbW1hbmQgPT0gJ3RyYW5zZmVyQnVmZmVy
JykgewogICAgICAgdHJhbnNmZXJhYmxlc1RvU2VuZCA9IFsgdmlldy5idWZmZXIgXTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>295989</attachid>
            <date>2016-12-02 13:49:28 -0800</date>
            <delta_ts>2016-12-02 13:51:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-142562-20161202134858.patch</filename>
            <type>text/plain</type>
            <size>88298</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwOTI2MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg5IEBACisyMDE2LTEyLTAyICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgb3B0aW9uYWwgc2VxdWVuY2UgdmFsdWVz
IG5vdCBoYW5kbGVkIGNvcnJlY3RseSBieSBiaW5kaW5nIGdlbmVyYXRvcgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQyNTYyCisKKyAgICAgICAgQWxz
byBmaXhlczoKKyAgICAgICAgICAgIFJlbW92ZSBub24tc3RhbmRhcmQgcG9zdE1lc3NhZ2Ugb3Zl
cmxvYWQKKyAgICAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjE5MTEKKyAgICAgICAgYW5kCisgICAgICAgICAgICBXcm9uZyBhcmd1bWVudCBvcmRlciBp
biB3aW5kb3cucG9zdE1lc3NhZ2UKKyAgICAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD02MzE0MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICBSZW1vdmUgbm8gbG9uZ2VyIG5lZWRlZCBmaWxlcy4KKworICAgICAgICAqIGJpbmRpbmdz
L2dlbmVyaWMvSURMVHlwZXMuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnQu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnZlcnRlcjxJRExPYmplY3Q+Ojpjb252ZXJ0KToKKyAg
ICAgICAgQWRkIHN1cHBvcnQgZm9yIHRoZSBXZWJJREwgb2JqZWN0IHR5cGUuCisKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
RE9NRXhjZXB0aW9uKToKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHRocm93aW5nIHN0YWNrIG92
ZXJmbG93IGVycm9ycy4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9t
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmhhbmRsZVBvc3RNZXNzYWdlKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93Ojpwb3N0TWVzc2FnZSk6IERlbGV0ZWQuCisgICAg
ICAgICogYmluZGluZ3MvanMvSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUN1c3RvbS5jcHA6
IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpKU01lc3NhZ2VQb3J0Ojpwb3N0TWVzc2FnZSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0VHJhbnNmZXJhYmxlcyk6IERlbGV0ZWQuCisgICAg
ICAgICogYmluZGluZ3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5oOiBSZW1vdmVkLgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTV29ya2VyQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpT
V29ya2VyOjpwb3N0TWVzc2FnZSk6IERlbGV0ZWQuCisgICAgICAgIFJlbW92ZSBjdXN0b20gYmlu
ZGluZ3MgZm9yIHBvc3RNZXNzYWdlLgorCisgICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmg6CisgICAgICAgIFN3aXRjaCB0byB1c2luZyBlbnVtIGNsYXNzLgorCisg
ICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6dHJhbnNmZXJBcnJheUJ1ZmZlcnMpOgor
ICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUpOgorICAgICAg
ICBBZGQgbmV3IGNyZWF0ZSBmdW5jdGlvbiB0aGF0IHRha2VzIHRoZSB0cmFuc2ZlciBsaXN0LCBw
cm9jZXNzZXMgaXQsIGFuZCByZXR1cm5zCisgICAgICAgIE1lc3NhZ2VQb3J0cyBhbmQgU2VyaWFs
aXplZFNjcmlwdFZhbHVlIC8gZXhjZXB0aW9uLgorCisgICAgICAgIChXZWJDb3JlOjpDbG9uZUJh
c2U6OnRocm93U3RhY2tPdmVyZmxvdyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDbG9u
ZURlc2VyaWFsaXplcjo6dGhyb3dWYWxpZGF0aW9uRXJyb3IpOiBEZWxldGVkLgorICAgICAgICBS
ZW1vdmUgdW5jYWxsZWQgZnVuY3Rpb25zLgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9yLnBtOgorICAgICAgICAoSXNSZWZQdHJUeXBlKToKKyAgICAgICAgKElzQnVp
bHRpblR5cGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBt
OgorICAgICAgICAoQWRkVG9JbmNsdWRlc0ZvcklETFR5cGUpOgorICAgICAgICAoR2V0QmFzZUlE
TFR5cGUpOgorICAgICAgICBBZGQgc3VwcG9ydCBmb3IgdGhlIFdlYklETCAnb2JqZWN0JyB0eXBl
LgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHA6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsOgorICAgICAgICBBZGQg
dGVzdHMgZm9yICdvYmplY3QnLgorCisgICAgICAgICogZG9tL0V4Y2VwdGlvbkNvZGUuaDoKKyAg
ICAgICAgQWRkIHR3byBuZXcgRXhjZXB0aW9uQ29kZXM6CisgICAgICAgICAgLSBFeGlzdGluZ0V4
Y2VwdGlvbkVycm9yLCB0byBpbmRpY2F0ZSB0aGF0IGltcGxlbWVudGF0aW9uIGNvZGUgdGhyZXcg
YSBKUyBleGNlcHRpb24uCisgICAgICAgICAgLSBTdGFja092ZXJmbG93RXJyb3IsIHRvIGluZGlj
YXRlIHRoYXQgYSBzdGFjayBvdmVyZmxvdyBleGNlcHRpb24gc2hvdWxkIGJlIHRocm93bi4KKwor
ICAgICAgICAqIGRvbS9NZXNzYWdlUG9ydC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdl
UG9ydDo6cG9zdE1lc3NhZ2UpOgorICAgICAgICAqIGRvbS9NZXNzYWdlUG9ydC5oOgorICAgICAg
ICAqIGRvbS9NZXNzYWdlUG9ydC5pZGw6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93Ojpwb3N0TWVzc2FnZSk6CisgICAgICAgICogcGFn
ZS9ET01XaW5kb3cuaDoKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5pZGw6CisgICAgICAgICog
d29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZTo6cG9zdE1lc3NhZ2UpOgorICAgICAgICAqIHdv
cmtlcnMvRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaDoKKyAgICAgICAgKiB3b3JrZXJzL0Rl
ZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmlkbDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXI6OnBvc3RNZXNzYWdlKToKKyAgICAgICAgKiB3
b3JrZXJzL1dvcmtlci5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyLmlkbDoKKyAgICAgICAg
VXBkYXRlIHRvIGNhbGwgbmV3IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSBjcmVhdGUgZnVuY3Rpb24u
CisKIDIwMTYtMTItMDIgIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CiAKICAg
ICAgICAgUmVxdWlyZSBwcmVmbGlnaHQgZm9yIG5vbi1zdGFuZGFyZCBDT1JTLXNhZmVsaXN0ZWQg
cmVxdWVzdCBoZWFkZXJzIEFjY2VwdCwgQWNjZXB0LUxhbmd1YWdlLCBhbmQgQ29udGVudC1MYW5n
dWFnZQpJbmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDIwOTI2MSkKKysrIFNvdXJj
ZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMTI5LDcgKzExMjks
NiBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgYmluZGluZ3MvanMvSlNET01XcmFwcGVyLmNw
cAogICAgIGJpbmRpbmdzL2pzL0pTRGF0YUN1ZUN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9K
U0RhdGFUcmFuc2ZlckN1c3RvbS5jcHAKLSAgICBiaW5kaW5ncy9qcy9KU0RlZGljYXRlZFdvcmtl
ckdsb2JhbFNjb3BlQ3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTRGV2aWNlTW90aW9uRXZl
bnRDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNEZXZpY2VPcmllbnRhdGlvbkV2ZW50Q3Vz
dG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5jcHAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9u
IDIwOTI2MSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTU4NCw3ICsxNTg0LDYgQEAKIAkJNDE2MTRBNzkxREE2
NDI0MTAwNEFEMDZGIC8qIEhUVFBIZWFkZXJWYWx1ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNjE0QTc3MURBNjQyMzYwMDRBRDA2RiAvKiBIVFRQ
SGVhZGVyVmFsdWVzLmggKi87IH07CiAJCTQxNjJBNDUwMTAxMTQ1QUUwMERGRjNFRCAvKiBEZWRp
Y2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0MTYyQTQ0RDEwMTE0NUFFMDBERkYzRUQgLyogRGVkaWNhdGVkV29y
a2VyR2xvYmFsU2NvcGUuY3BwICovOyB9OwogCQk0MTYyQTQ1MTEwMTE0NUFFMDBERkYzRUQgLyog
RGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQxNjJBNDRFMTAxMTQ1QUUwMERGRjNFRCAvKiBEZWRpY2F0ZWRX
b3JrZXJHbG9iYWxTY29wZS5oICovOyB9OwotCQk0MTYyQTQ1NDEwMTE0NUUzMDBERkYzRUQgLyog
SlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTYyQTQ1MzEwMTE0NUUzMDBERkYzRUQgLyog
SlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUN1c3RvbS5jcHAgKi87IH07CiAJCTQxNjJBNDU3
MTAxMTQ2NDcwMERGRjNFRCAvKiBKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNjJBNDU1MTAxMTQ2
NDcwMERGRjNFRCAvKiBKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmNwcCAqLzsgfTsKIAkJ
NDE2MkE0NTgxMDExNDY0NzAwREZGM0VEIC8qIEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNjJBNDU2
MTAxMTQ2NDcwMERGRjNFRCAvKiBKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmggKi87IH07
CiAJCTQxNkUyOUE2MTAyRkE5NjIwMDdGQzE0RSAvKiBXb3JrZXJSZXBvcnRpbmdQcm94eS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2RTI5QTUxMDJG
QTk2MjAwN0ZDMTRFIC8qIFdvcmtlclJlcG9ydGluZ1Byb3h5LmggKi87IH07CkBAIC0xNjQxLDcg
KzE2NDAsNiBAQAogCQk0MUY1NEY4QjFDNTBDNTAzMDAzMzg0ODggLyogRmV0Y2hCb2R5LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRjU0RjdEMUM1
MEM0RjYwMDMzODQ4OCAvKiBGZXRjaEJvZHkuY3BwICovOyB9OwogCQk0MUY1NEY4RDFDNTBDNTA4
MDAzMzg0ODggLyogRmV0Y2hIZWFkZXJzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQxRjU0RjgyMUM1MEM0RjYwMDMzODQ4OCAvKiBGZXRjaEhlYWRl
cnMuY3BwICovOyB9OwogCQk0MUY1NEY4RTFDNTBDNTBDMDAzMzg0ODggLyogRmV0Y2hSZXF1ZXN0
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRjU0
Rjg3MUM1MEM0RjYwMDMzODQ4OCAvKiBGZXRjaFJlcXVlc3QuY3BwICovOyB9OwotCQk0MUY1ODRD
NzEwNDY1MkNCMDA5Q0FBNjQgLyogSlNNZXNzYWdlUG9ydEN1c3RvbS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGNTg0QzYxMDQ2NTJDQjAwOUNBQTY0
IC8qIEpTTWVzc2FnZVBvcnRDdXN0b20uaCAqLzsgfTsKIAkJNDFGQTMwM0UxMzE2QzI5QzAwQzBC
RkM1IC8qIFJlbmRlck1lZGlhQ29udHJvbHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGQTMwM0MxMzE2QzI5QzAwQzBCRkM1IC8qIFJlbmRlck1l
ZGlhQ29udHJvbHMuY3BwICovOyB9OwogCQk0MUZBMzAzRjEzMTZDMjlDMDBDMEJGQzUgLyogUmVu
ZGVyTWVkaWFDb250cm9scy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDFGQTMwM0QxMzE2QzI5QzAwQzBCRkM1IC8qIFJlbmRlck1lZGlhQ29udHJvbHMu
aCAqLzsgfTsKIAkJNDMwNkU0RTYxNDk1NTU0MzAwN0YxN0FDIC8qIEtpbGxSaW5nTm9uZS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MzA2RTRFNTE0
OTU1NTQzMDA3RjE3QUMgLyogS2lsbFJpbmdOb25lLmNwcCAqLzsgfTsKQEAgLTg3MzcsNyArODcz
NSw2IEBACiAJCTQxNjJBNDREMTAxMTQ1QUUwMERGRjNFRCAvKiBEZWRpY2F0ZWRXb3JrZXJHbG9i
YWxTY29wZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZWRpY2F0
ZWRXb3JrZXJHbG9iYWxTY29wZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQx
NjJBNDRFMTAxMTQ1QUUwMERGRjNFRCAvKiBEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29w
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTYyQTQ0RjEwMTE0NUFFMDBERkYz
RUQgLyogRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IERlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJNDE2MkE0NTMxMDExNDVFMzAwREZGM0VEIC8qIEpTRGVkaWNhdGVkV29ya2VyR2xv
YmFsU2NvcGVDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQxNjJBNDU1MTAxMTQ2NDcwMERGRjNFRCAvKiBKU0RlZGljYXRlZFdvcmtl
ckdsb2JhbFNjb3BlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
RGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0MTYyQTQ1NjEwMTE0NjQ3MDBERkYzRUQgLyogSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxT
Y29wZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RlZGljYXRlZFdvcmtl
ckdsb2JhbFNjb3BlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNkUyOUE1MTAy
RkE5NjIwMDdGQzE0RSAvKiBXb3JrZXJSZXBvcnRpbmdQcm94eS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXb3JrZXJSZXBvcnRpbmdQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtODgxMSw3ICs4ODA4LDYgQEAKIAkJNDFGNTRGODcxQzUwQzRGNjAwMzM4
NDg4IC8qIEZldGNoUmVxdWVzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBGZXRjaFJlcXVlc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUY1
NEY4ODFDNTBDNEY2MDAzMzg0ODggLyogRmV0Y2hSZXF1ZXN0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEZldGNoUmVxdWVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0MUY1NEY4OTFDNTBDNEY2MDAzMzg0ODggLyogRmV0Y2hSZXF1ZXN0LmlkbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBGZXRjaFJlcXVlc3QuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQk0MUY1ODRDNjEwNDY1MkNCMDA5Q0FBNjQgLyogSlNNZXNzYWdlUG9ydEN1c3RvbS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU01lc3NhZ2VQb3J0Q3VzdG9tLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRkEzMDNDMTMxNkMyOUMwMEMwQkZDNSAv
KiBSZW5kZXJNZWRpYUNvbnRyb2xzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFJlbmRlck1lZGlhQ29udHJvbHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0MUZBMzAzRDEzMTZDMjlDMDBDMEJGQzUgLyogUmVuZGVyTWVkaWFDb250cm9scy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJNZWRpYUNvbnRyb2xzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQzMDZFNEU1MTQ5NTU1NDMwMDdGMTdBQyAvKiBL
aWxsUmluZ05vbmUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gS2ls
bFJpbmdOb25lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIyMDU3LDcgKzIy
MDUzLDYgQEAKIAkJCQlERUMyOTc1RDFCNERFQjJBMDA1RjU5NDUgLyogSlNDdXN0b21FdmVudEN1
c3RvbS5jcHAgKi8sCiAJCQkJMDdGQkRFMkIxOEZFRDE3ODAwMUE3Q0ZGIC8qIEpTRGF0YUN1ZUN1
c3RvbS5jcHAgKi8sCiAJCQkJQkNBODNFNTEwRDdDRTIwNTAwMzQyMUE4IC8qIEpTRGF0YVRyYW5z
ZmVyQ3VzdG9tLmNwcCAqLywKLQkJCQk0MTYyQTQ1MzEwMTE0NUUzMDBERkYzRUQgLyogSlNEZWRp
Y2F0ZWRXb3JrZXJHbG9iYWxTY29wZUN1c3RvbS5jcHAgKi8sCiAJCQkJMzFGQjFBNkIxMjBBNUQ2
OTAwREMwMkEwIC8qIEpTRGV2aWNlTW90aW9uRXZlbnRDdXN0b20uY3BwICovLAogCQkJCTU5MEUx
QjRBMTFFNEVGNzAwMDY5Rjc4NCAvKiBKU0RldmljZU9yaWVudGF0aW9uRXZlbnRDdXN0b20uY3Bw
ICovLAogCQkJCTQ5QzdCQThDMTA0MkY1QjEwMDA5RDQ0NyAvKiBKU0RvY3VtZW50Q3VzdG9tLmNw
cCAqLywKQEAgLTIyMTEzLDcgKzIyMTA4LDYgQEAKIAkJCQlFMUE1Rjk5QTBFN0VBQTI1MDBBRjg1
RUEgLyogSlNNZXNzYWdlQ2hhbm5lbEN1c3RvbS5jcHAgKi8sCiAJCQkJNDEwQjdFNzExMDQ1RkFC
MDAwRDgyMjRGIC8qIEpTTWVzc2FnZUV2ZW50Q3VzdG9tLmNwcCAqLywKIAkJCQlFMUFERUQ0NjBF
NzZCOEREMDA0QTFBNUUgLyogSlNNZXNzYWdlUG9ydEN1c3RvbS5jcHAgKi8sCi0JCQkJNDFGNTg0
QzYxMDQ2NTJDQjAwOUNBQTY0IC8qIEpTTWVzc2FnZVBvcnRDdXN0b20uaCAqLywKIAkJCQlBMUU1
QjMxRDFBQUQxREE0MDA2RUJFRkIgLyogSlNNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ3VzdG9t
LmNwcCAqLywKIAkJCQlDNkYwOTE3RTE0M0EyQkI5MDA2ODU4NDkgLyogSlNNdXRhdGlvbk9ic2Vy
dmVyQ3VzdG9tLmNwcCAqLywKIAkJCQlCQ0Q5QzI1RjBDMTdBQTY3MDA1QzkwQTIgLyogSlNOYW1l
ZE5vZGVNYXBDdXN0b20uY3BwICovLApAQCAtMjYzMzEsNyArMjYzMjUsNiBAQAogCQkJCUUxMDc0
MDBFMEU3N0JEQzAwMDMzQUYyNCAvKiBKU01lc3NhZ2VDaGFubmVsLmggaW4gSGVhZGVycyAqLywK
IAkJCQk3NTc5M0VDOTBEMENFNzJEMDA3RkMwQUMgLyogSlNNZXNzYWdlRXZlbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUUxQURFRERBMEU3NkJEOTMwMDRBMUE1RSAvKiBKU01lc3NhZ2VQb3J0Lmgg
aW4gSGVhZGVycyAqLywKLQkJCQk0MUY1ODRDNzEwNDY1MkNCMDA5Q0FBNjQgLyogSlNNZXNzYWdl
UG9ydEN1c3RvbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ2RjNFOTUxQzFGODU1NTAwNjFEQkQ0
IC8qIEpTTW9ja1BhZ2VPdmVybGF5LmggaW4gSGVhZGVycyAqLywKIAkJCQlBODY2MjlEMTA5REEy
QjQ4MDA5NjMzQTUgLyogSlNNb3VzZUV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk4MzBBMzZC
RDFEQUM1RkFEMDA2RDdEMDkgLyogSlNNb3VzZUV2ZW50SW5pdC5oIGluIEhlYWRlcnMgKi8sCkBA
IC0yOTg0OSw3ICsyOTg0Miw2IEBACiAJCQkJQkNBODNFNEYwRDdDRTFFOTAwMzQyMUE4IC8qIEpT
RGF0YVRyYW5zZmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDQTgzRTUyMEQ3Q0UyMDUwMDM0
MjFBOCAvKiBKU0RhdGFUcmFuc2ZlckN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MTYy
QTQ1NzEwMTE0NjQ3MDBERkYzRUQgLyogSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAg
aW4gU291cmNlcyAqLywKLQkJCQk0MTYyQTQ1NDEwMTE0NUUzMDBERkYzRUQgLyogSlNEZWRpY2F0
ZWRXb3JrZXJHbG9iYWxTY29wZUN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGREExNUVE
MTEyQjAzRjk0MDAzQTU4M0EgLyogSlNEZWxheU5vZGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MzFGQjFBNjUxMjBBNUQzRjAwREMwMkEwIC8qIEpTRGV2aWNlTW90aW9uRXZlbnQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMzFGQjFBNkMxMjBBNUQ2OTAwREMwMkEwIC8qIEpTRGV2aWNlTW90aW9u
RXZlbnRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9nZW5lcmljL0lETFR5cGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvZ2VuZXJpYy9JRExUeXBlcy5oCShyZXZpc2lvbiAyMDkyNjEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9nZW5lcmljL0lETFR5cGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYg
KzM0LDggQEAgbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBBcnJheUJ1ZmZlcjsKIGNsYXNzIEFycmF5
QnVmZmVyVmlldzsKIGNsYXNzIEpTVmFsdWU7CitjbGFzcyBKU09iamVjdDsKK3RlbXBsYXRlIDx0
eXBlbmFtZSBUPiBjbGFzcyBTdHJvbmc7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTk0
LDcgKzk2LDcgQEAgc3RydWN0IElETERPTVN0cmluZyA6IElETFN0cmluZyB7IH07CiBzdHJ1Y3Qg
SURMQnl0ZVN0cmluZyA6IElETFN0cmluZyB7IH07CiBzdHJ1Y3QgSURMVVNWU3RyaW5nIDogSURM
U3RyaW5nIHsgfTsKIAotc3RydWN0IElETE9iamVjdCA6IElETFVuc3VwcG9ydGVkVHlwZSB7IH07
CitzdHJ1Y3QgSURMT2JqZWN0IDogSURMVHlwZTxKU0M6OlN0cm9uZzxKU0M6OkpTT2JqZWN0Pj4g
eyB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgSURMV3JhcHBlciA6IElETFR5cGU8
UmVmUHRyPFQ+PiB7CiAgICAgdXNpbmcgUmF3VHlwZSA9IFQ7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAJKHJldmlzaW9uIDIw
OTI2MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTY0LDcgKzY0LDYgQEAKICNpbmNsdWRlICJKU0RPTVdyYXBw
ZXIuY3BwIgogI2luY2x1ZGUgIkpTRGF0YUN1ZUN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNEYXRh
VHJhbnNmZXJDdXN0b20uY3BwIgotI2luY2x1ZGUgIkpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2Nv
cGVDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTRGV2aWNlT3JpZW50YXRpb25FdmVudEN1c3RvbS5j
cHAiCiAjaW5jbHVkZSAiSlNEaWN0aW9uYXJ5LmNwcCIKICNpbmNsdWRlICJKU0RvY3VtZW50Q3Vz
dG9tLmNwcCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5n
LmNwcAkocmV2aXNpb24gMjA5MjYxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01CaW5kaW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjg2LDYgKzI4Niw5IEBAIHN0YXRpYyBK
U1ZhbHVlIGNyZWF0ZURPTUV4Y2VwdGlvbihFeGVjU3QKICAgICAgICAgcmV0dXJuIGNyZWF0ZVJh
bmdlRXJyb3IoZXhlYywgKm1lc3NhZ2UpOwogICAgIH0KIAorICAgIGlmIChlYyA9PSBTdGFja092
ZXJmbG93RXJyb3IpCisgICAgICAgIHJldHVybiBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoZXhl
Yyk7CisKICAgICAvLyBGSVhNRTogQWxsIGNhbGxlcnMgdG8gc2V0RE9NRXhjZXB0aW9uIG5lZWQg
dG8gcGFzcyBpbiB0aGUgcmlnaHQgZ2xvYmFsIG9iamVjdAogICAgIC8vIGZvciBub3csIHdlJ3Jl
IGdvaW5nIHRvIGFzc3VtZSB0aGUgbGV4aWNhbEdsb2JhbE9iamVjdC4gV2hpY2ggaXMgd3Jvbmcg
aW4gY2FzZXMgbGlrZSB0aGlzOgogICAgIC8vIGZyYW1lc1swXS5kb2N1bWVudC5jcmVhdGVFbGVt
ZW50KG51bGwsIG51bGwpOyAvLyB0aHJvd3MgYW4gZXhjZXB0aW9uIHdoaWNoIHNob3VsZCBoYXZl
IHRoZSBzdWJmcmFtZXMgcHJvdG90eXBlcy4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NQ29udmVydC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NQ29udmVydC5oCShyZXZpc2lvbiAyMDkyNjEpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTUNvbnZlcnQuaAkod29ya2luZyBjb3B5KQpAQCAtODEzLDYgKzgxMywy
NSBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBKU0NvbnZlcnRlcjxJRExVU1ZTdHJpCiB9OwogCiAvLyBN
QVJLOiAtCisvLyBNQVJLOiBPYmplY3QgdHlwZQorCit0ZW1wbGF0ZTw+IHN0cnVjdCBDb252ZXJ0
ZXI8SURMT2JqZWN0PiA6IERlZmF1bHRDb252ZXJ0ZXI8SURMT2JqZWN0PiB7CisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgRXhjZXB0aW9uVGhyb3dlciA9IERlZmF1bHRFeGNlcHRpb25UaHJvd2VyPgor
ICAgIHN0YXRpYyBKU0M6OlN0cm9uZzxKU0M6OkpTT2JqZWN0PiBjb252ZXJ0KEpTQzo6RXhlY1N0
YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIHZhbHVlLCBFeGNlcHRpb25UaHJvd2VyJiYgZXhjZXB0
aW9uVGhyb3dlciA9IEV4Y2VwdGlvblRocm93ZXIoKSkKKyAgICB7CisgICAgICAgIEpTQzo6Vk0m
IHZtID0gc3RhdGUudm0oKTsKKyAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCisgICAgICAgIGlmICghdmFsdWUuaXNPYmplY3QoKSkgeworICAgICAgICAgICAg
ZXhjZXB0aW9uVGhyb3dlcihzdGF0ZSwgc2NvcGUpOworICAgICAgICAgICAgcmV0dXJuIHsgfTsK
KyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcmV0dXJuIHsgdm0sIEpTQzo6YXNPYmplY3Qo
dmFsdWUpIH07CisgICAgfQorfTsKKworLy8gTUFSSzogLQogLy8gTUFSSzogQXJyYXktbGlrZSB0
eXBlcwogCiBuYW1lc3BhY2UgRGV0YWlsIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAJKHJldmlzaW9uIDIwOTI2MSkKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzIsMTIgKzMyLDEyIEBACiAjaW5jbHVkZSAiSlNIVE1MT3B0aW9uRWxlbWVudC5o
IgogI2luY2x1ZGUgIkpTSURCRmFjdG9yeS5oIgogI2luY2x1ZGUgIkpTSW1hZ2VDb25zdHJ1Y3Rv
ci5oIgotI2luY2x1ZGUgIkpTTWVzc2FnZVBvcnRDdXN0b20uaCIKICNpbmNsdWRlICJKU1dvcmtl
ci5oIgogI2luY2x1ZGUgIkxvY2F0aW9uLmgiCiAjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0
dXJlcy5oIgogI2luY2x1ZGUgIlNjaGVkdWxlZEFjdGlvbi5oIgogI2luY2x1ZGUgIlNldHRpbmdz
LmgiCisjaW5jbHVkZSA8cnVudGltZS9KU0Z1bmN0aW9uSW5saW5lcy5oPgogCiAjaWYgRU5BQkxF
KFVTRVJfTUVTU0FHRV9IQU5ETEVSUykKICNpbmNsdWRlICJKU1dlYktpdE5hbWVzcGFjZS5oIgpA
QCAtNDg5LDUwICs0ODksNiBAQCBKU1ZhbHVlIEpTRE9NV2luZG93OjpzaG93TW9kYWxEaWFsb2co
RXhlCiAgICAgcmV0dXJuIGhhbmRsZXIucmV0dXJuVmFsdWUoKTsKIH0KIAotc3RhdGljIEpTVmFs
dWUgaGFuZGxlUG9zdE1lc3NhZ2UoRE9NV2luZG93JiBpbXBsLCBFeGVjU3RhdGUmIHN0YXRlKQot
ewotICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7Ci0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwotCi0gICAgaWYgKFVOTElLRUxZKHN0YXRlLmFyZ3VtZW50Q291bnQoKSA8
IDIpKQotICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oJnN0YXRlLCBzY29wZSwgY3JlYXRl
Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7Ci0KLSAgICBWZWN0b3I8UmVmUHRyPE1l
c3NhZ2VQb3J0Pj4gbWVzc2FnZVBvcnRzOwotICAgIFZlY3RvcjxSZWZQdHI8SlNDOjpBcnJheUJ1
ZmZlcj4+IGFycmF5QnVmZmVyczsKLQotICAgIC8vIFRoaXMgZnVuY3Rpb24gaGFzIHZhcmlhYmxl
IGFyZ3VtZW50cyBhbmQgY2FuIGJlOgotICAgIC8vIFBlciBjdXJyZW50IHNwZWM6Ci0gICAgLy8g
ICBwb3N0TWVzc2FnZShtZXNzYWdlLCB0YXJnZXRPcmlnaW4pCi0gICAgLy8gICBwb3N0TWVzc2Fn
ZShtZXNzYWdlLCB0YXJnZXRPcmlnaW4sIHtzZXF1ZW5jZSBvZiB0cmFuc2ZlcnJhYmxlc30pCi0g
ICAgLy8gTGVnYWN5IG5vbi1zdGFuZGFyZCBpbXBsZW1lbnRhdGlvbnMgaW4gd2Via2l0IGFsbG93
ZWQ6Ci0gICAgLy8gICBwb3N0TWVzc2FnZShtZXNzYWdlLCB7c2VxdWVuY2Ugb2YgdHJhbnNmZXJy
YWJsZXN9LCB0YXJnZXRPcmlnaW4pOwotICAgIGludCB0YXJnZXRPcmlnaW5BcmdJbmRleCA9IDE7
Ci0gICAgaWYgKHN0YXRlLmFyZ3VtZW50Q291bnQoKSA+IDIpIHsKLSAgICAgICAgaW50IHRyYW5z
ZmVyYWJsZXNBcmdJbmRleCA9IDI7Ci0gICAgICAgIGlmIChzdGF0ZS51bmNoZWNrZWRBcmd1bWVu
dCgyKS5pc1N0cmluZygpKSB7Ci0gICAgICAgICAgICB0YXJnZXRPcmlnaW5BcmdJbmRleCA9IDI7
Ci0gICAgICAgICAgICB0cmFuc2ZlcmFibGVzQXJnSW5kZXggPSAxOwotICAgICAgICB9Ci0gICAg
ICAgIGV4dHJhY3RUcmFuc2ZlcmFibGVzKHN0YXRlLCBzdGF0ZS5hcmd1bWVudCh0cmFuc2ZlcmFi
bGVzQXJnSW5kZXgpLCBtZXNzYWdlUG9ydHMsIGFycmF5QnVmZmVycyk7Ci0gICAgfQotICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7Ci0KLSAgICBhdXRvIG1lc3NhZ2Ug
PSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShzdGF0ZSwgc3RhdGUudW5jaGVja2VkQXJn
dW1lbnQoMCksIG1lc3NhZ2VQb3J0cywgV1RGTW92ZShhcnJheUJ1ZmZlcnMpKTsKLSAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkpOwotCi0gICAgU3RyaW5nIHRhcmdldE9y
aWdpbiA9IGNvbnZlcnQ8SURMTnVsbGFibGU8SURMVVNWU3RyaW5nPj4oc3RhdGUsIHN0YXRlLnVu
Y2hlY2tlZEFyZ3VtZW50KHRhcmdldE9yaWdpbkFyZ0luZGV4KSk7Ci0gICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgSlNWYWx1ZSgpKTsKLQotICAgIHByb3BhZ2F0ZUV4Y2VwdGlvbihzdGF0
ZSwgc2NvcGUsIGltcGwucG9zdE1lc3NhZ2UobWVzc2FnZS5yZWxlYXNlTm9uTnVsbCgpLCBXVEZN
b3ZlKG1lc3NhZ2VQb3J0cyksIHRhcmdldE9yaWdpbiwgY2FsbGVyRE9NV2luZG93KCZzdGF0ZSkp
KTsKLQotICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotfQotCi1KU1ZhbHVlIEpTRE9NV2luZG93
Ojpwb3N0TWVzc2FnZShFeGVjU3RhdGUmIHN0YXRlKQotewotICAgIHJldHVybiBoYW5kbGVQb3N0
TWVzc2FnZSh3cmFwcGVkKCksIHN0YXRlKTsKLX0KLQogSlNWYWx1ZSBKU0RPTVdpbmRvdzo6c2V0
VGltZW91dChFeGVjU3RhdGUmIHN0YXRlKQogewogICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RlZGljYXRlZFdvcmtlckdsb2JhbFNj
b3BlQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ3VzdG9tLmNwcAkocmV2aXNpb24gMjA5MjYxKQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29w
ZUN1c3RvbS5jcHAJKG5vbmV4aXN0ZW50KQpAQCAtMSw0NyArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDA5IEFwcGxlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDksIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJp
YnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaW5jbHVkZSAiSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5oIgotCi0j
aW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCi0jaW5jbHVkZSAiSlNNZXNzYWdlUG9ydEN1c3RvbS5o
IgotCi11c2luZyBuYW1lc3BhY2UgSlNDOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUpTQzo6
SlNWYWx1ZSBKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlOjpwb3N0TWVzc2FnZShKU0M6OkV4
ZWNTdGF0ZSYgc3RhdGUpCi17Ci0gICAgcmV0dXJuIGhhbmRsZVBvc3RNZXNzYWdlKHN0YXRlLCB3
cmFwcGVkKCkpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCgpQcm9wZXJ0eSBjaGFuZ2Vz
IG9uOiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RlZGljYXRlZFdvcmtlckdsb2JhbFNj
b3BlQ3VzdG9tLmNwcApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTEgKzAs
MCAjIwotbmF0aXZlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRDdXN0b20uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRDdXN0b20uY3BwCShy
ZXZpc2lvbiAyMDkyNjEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VQ
b3J0Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsMjAgKzI3LDYgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJKU01lc3NhZ2VQb3J0LmgiCiAKLSNpbmNsdWRlICJFdmVu
dC5oIgotI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKLSNpbmNsdWRlICJGcmFtZS5oIgotI2lu
Y2x1ZGUgIkpTRE9NQmluZGluZy5oIgotI2luY2x1ZGUgIkpTRE9NR2xvYmFsT2JqZWN0LmgiCi0j
aW5jbHVkZSAiSlNFdmVudC5oIgotI2luY2x1ZGUgIkpTRXZlbnRMaXN0ZW5lci5oIgotI2luY2x1
ZGUgIkpTTWVzc2FnZVBvcnRDdXN0b20uaCIKLSNpbmNsdWRlICJNZXNzYWdlUG9ydC5oIgotI2lu
Y2x1ZGUgPGhlYXAvU2xvdFZpc2l0b3JJbmxpbmVzLmg+Ci0jaW5jbHVkZSA8cnVudGltZS9FcnJv
ci5oPgotI2luY2x1ZGUgPHJ1bnRpbWUvSlNBcnJheUJ1ZmZlci5oPgotI2luY2x1ZGUgPHd0Zi90
ZXh0L0F0b21pY1N0cmluZy5oPgotCiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CkBAIC01Miw1MyArMzgsNCBAQCB2b2lkIEpTTWVzc2FnZVBvcnQ6OnZpc2l0QWRk
aXRpb25hbENoaWxkCiAgICAgICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChwb3J0KTsKIH0KIAot
SlNDOjpKU1ZhbHVlIEpTTWVzc2FnZVBvcnQ6OnBvc3RNZXNzYWdlKEpTQzo6RXhlY1N0YXRlJiBz
dGF0ZSkKLXsKLSAgICByZXR1cm4gaGFuZGxlUG9zdE1lc3NhZ2Uoc3RhdGUsIHdyYXBwZWQoKSk7
Ci19Ci0KLXZvaWQgZXh0cmFjdFRyYW5zZmVyYWJsZXMoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBK
U0M6OkpTVmFsdWUgdmFsdWUsIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYgcG9ydEFycmF5
LCBWZWN0b3I8UmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+PiYgYXJyYXlCdWZmZXJzKQotewotICAg
IFZNJiB2bSA9IHN0YXRlLnZtKCk7Ci0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwotCi0gICAgaWYgKHZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKLSAgICAgICAg
cG9ydEFycmF5LnJlc2l6ZSgwKTsKLSAgICAgICAgYXJyYXlCdWZmZXJzLnJlc2l6ZSgwKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIFZhbGlkYXRpb24gb2Ygc2VxdWVuY2UgdHlw
ZXMsIHBlciBXZWJJREwgc3BlYyA0LjEuMTMuCi0gICAgdW5zaWduZWQgbGVuZ3RoID0gMDsKLSAg
ICBKU09iamVjdCogb2JqZWN0ID0gdG9KU1NlcXVlbmNlKHN0YXRlLCB2YWx1ZSwgbGVuZ3RoKTsK
LSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwotCi0gICAgZm9yICh1bnNp
Z25lZCBpID0gMCA7IGkgPCBsZW5ndGg7ICsraSkgewotICAgICAgICBKU1ZhbHVlIHZhbHVlID0g
b2JqZWN0LT5nZXQoJnN0YXRlLCBpKTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgdm9pZCgpKTsKLQotICAgICAgICBpZiAodmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkgewot
ICAgICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgSU5WQUxJRF9TVEFURV9FUlIpOwot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gVmFsaWRhdGlvbiBv
ZiBPYmplY3RzIGltcGxlbWVudGluZyBhbiBpbnRlcmZhY2UsIHBlciBXZWJJREwgc3BlYyA0LjEu
MTUuCi0gICAgICAgIGlmIChSZWZQdHI8TWVzc2FnZVBvcnQ+IHBvcnQgPSBKU01lc3NhZ2VQb3J0
Ojp0b1dyYXBwZWQodmFsdWUpKSB7Ci0gICAgICAgICAgICAvLyBDaGVjayBmb3IgZHVwbGljYXRl
IHBvcnRzLgotICAgICAgICAgICAgaWYgKHBvcnRBcnJheS5jb250YWlucyhwb3J0KSkgewotICAg
ICAgICAgICAgICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIElOVkFMSURfU1RBVEVfRVJSKTsK
LSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBwb3J0
QXJyYXkuYXBwZW5kKFdURk1vdmUocG9ydCkpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgaWYgKFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSB0b1Bvc3NpYmx5U2hhcmVk
QXJyYXlCdWZmZXIodmFsdWUpKQotICAgICAgICAgICAgICAgIGFycmF5QnVmZmVycy5hcHBlbmQo
V1RGTW92ZShhcnJheUJ1ZmZlcikpOwotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBzY29wZSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotfQotCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VQb3J0Q3Vz
dG9tLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdl
UG9ydEN1c3RvbS5oCShyZXZpc2lvbiAyMDkyNjEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU01lc3NhZ2VQb3J0Q3VzdG9tLmgJKG5vbmV4aXN0ZW50KQpAQCAtMSw2NCArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0g
KiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQot
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNw
cmFnbWEgb25jZQotCi0jaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIKLSNpbmNsdWRlIDxydW50aW1l
L0Vycm9yLmg+Ci0jaW5jbHVkZSA8cnVudGltZS9KU0NJbmxpbmVzLmg+Ci0jaW5jbHVkZSA8cnVu
dGltZS9KU0NKU1ZhbHVlLmg+Ci0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi12b2lkIGV4dHJhY3RUcmFuc2ZlcmFibGVzKEpTQzo6RXhlY1N0YXRlJiwg
SlNDOjpKU1ZhbHVlLCBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4mLCBWZWN0b3I8UmVmUHRy
PEpTQzo6QXJyYXlCdWZmZXI+PiYpOwotCi0vLyBIZWxwZXIgZnVuY3Rpb24gdG8gY29udmVydCBm
cm9tIEpTIHBvc3RNZXNzYWdlIGFyZ3VtZW50cyB0byBXZWJDb3JlIHBvc3RNZXNzYWdlIGFyZ3Vt
ZW50cy4KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBKU0M6OkpTVmFsdWUgaGFuZGxlUG9z
dE1lc3NhZ2UoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBUJiBvYmplY3QpCi17Ci0gICAgSlNDOjpW
TSYgdm0gPSBzdGF0ZS52bSgpOwotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKLQotICAgIGlmIChVTkxJS0VMWShzdGF0ZS5hcmd1bWVudENvdW50KCkgPCAxKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKCZzdGF0ZSwgc2NvcGUsIGNyZWF0ZU5vdEVub3Vn
aEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOwotCi0gICAgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9y
dD4+IG1lc3NhZ2VQb3J0QXJyYXk7Ci0gICAgVmVjdG9yPFJlZlB0cjxKU0M6OkFycmF5QnVmZmVy
Pj4gYXJyYXlCdWZmZXJBcnJheTsKLSAgICBleHRyYWN0VHJhbnNmZXJhYmxlcyhzdGF0ZSwgc3Rh
dGUuYXJndW1lbnQoMSksIG1lc3NhZ2VQb3J0QXJyYXksIGFycmF5QnVmZmVyQXJyYXkpOwotCi0g
ICAgYXV0byBtZXNzYWdlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoc3RhdGUsIHN0
YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApLCBtZXNzYWdlUG9ydEFycmF5LCBXVEZNb3ZlKGFycmF5
QnVmZmVyQXJyYXkpKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU0M6OkpTVmFs
dWUoKSk7Ci0KLSAgICBwcm9wYWdhdGVFeGNlcHRpb24oc3RhdGUsIHNjb3BlLCBvYmplY3QucG9z
dE1lc3NhZ2UoV1RGTW92ZShtZXNzYWdlKSwgV1RGTW92ZShtZXNzYWdlUG9ydEFycmF5KSkpOwot
ICAgIHJldHVybiBKU0M6OmpzVW5kZWZpbmVkKCk7Ci19Ci0KLX0KClByb3BlcnR5IGNoYW5nZXMg
b246IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRDdXN0b20uaApfX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fCkRlbGV0ZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTEgKzAsMCAjIwotbmF0aXZlClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTV29ya2VyQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1dvcmtlckN1c3RvbS5jcHAJKHJldmlzaW9uIDIwOTI2MSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzEsNyArMzEsNiBAQAogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgogI2luY2x1ZGUgIkpTRE9N
R2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNET01XaW5kb3dDdXN0b20uaCIKLSNpbmNsdWRl
ICJKU01lc3NhZ2VQb3J0Q3VzdG9tLmgiCiAjaW5jbHVkZSAiV29ya2VyLmgiCiAjaW5jbHVkZSA8
cnVudGltZS9FcnJvci5oPgogCkBAIC0zOSwxMSArMzgsNiBAQCB1c2luZyBuYW1lc3BhY2UgSlND
OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUpTQzo6SlNWYWx1ZSBKU1dvcmtlcjo6cG9zdE1l
c3NhZ2UoSlNDOjpFeGVjU3RhdGUmIHN0YXRlKQotewotICAgIHJldHVybiBoYW5kbGVQb3N0TWVz
c2FnZShzdGF0ZSwgd3JhcHBlZCgpKTsKLX0KLQogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBjb25zdHJ1Y3RKU1dvcmtlcihFeGVjU3RhdGUmIHN0YXRlKQogewogICAgIFZNJiB2bSA9IHN0
YXRlLnZtKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2Ny
aXB0VmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAJKHJldmlzaW9uIDIwOTI2MSkKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTkyLDYgKzkyLDE2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIGNvbnN0IHVu
c2lnbmVkIG1heGltdW1GaWx0ZXJSZWN1cnNpb24gPSA0MDAwMDsKIAorZW51bSBjbGFzcyBTZXJp
YWxpemF0aW9uUmV0dXJuQ29kZSB7CisgICAgU3VjY2Vzc2Z1bGx5Q29tcGxldGVkLAorICAgIFN0
YWNrT3ZlcmZsb3dFcnJvciwKKyAgICBJbnRlcnJ1cHRlZEV4ZWN1dGlvbkVycm9yLAorICAgIFZh
bGlkYXRpb25FcnJvciwKKyAgICBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yLAorICAgIERhdGFDbG9u
ZUVycm9yLAorICAgIFVuc3BlY2lmaWVkRXJyb3IKK307CisKIGVudW0gV2Fsa2VyU3RhdGUgeyBT
dGF0ZVVua25vd24sIEFycmF5U3RhcnRTdGF0ZSwgQXJyYXlTdGFydFZpc2l0TWVtYmVyLCBBcnJh
eUVuZFZpc2l0TWVtYmVyLAogICAgIE9iamVjdFN0YXJ0U3RhdGUsIE9iamVjdFN0YXJ0VmlzaXRN
ZW1iZXIsIE9iamVjdEVuZFZpc2l0TWVtYmVyLAogICAgIE1hcERhdGFTdGFydFZpc2l0RW50cnks
IE1hcERhdGFFbmRWaXNpdEtleSwgTWFwRGF0YUVuZFZpc2l0VmFsdWUsCkBAIC0zNzQsNyArMzg0
LDcgQEAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cmluZ0RhdGFJczhCaXRGbAogICogICAgPGZh
Y3RvclNpemU6dWludDMyX3Q+IDxmYWN0b3I6Ynl0ZXtmYWN0b3JTaXplfT4gPGNydEV4cG9uZW50
U2l6ZTp1aW50MzJfdD4gPGNydEV4cG9uZW50OmJ5dGV7Y3J0RXhwb25lbnRTaXplfT4gPGNydENv
ZWZmaWNpZW50U2l6ZTp1aW50MzJfdD4gPGNydENvZWZmaWNpZW50OmJ5dGV7Y3J0Q29lZmZpY2ll
bnRTaXplfT4KICAqLwogCi10eXBlZGVmIHN0ZDo6cGFpcjxKU0M6OkpTVmFsdWUsIFNlcmlhbGl6
YXRpb25SZXR1cm5Db2RlPiBEZXNlcmlhbGl6YXRpb25SZXN1bHQ7Cit1c2luZyBEZXNlcmlhbGl6
YXRpb25SZXN1bHQgPSBzdGQ6OnBhaXI8SlNDOjpKU1ZhbHVlLCBTZXJpYWxpemF0aW9uUmV0dXJu
Q29kZT47CiAKIGNsYXNzIENsb25lQmFzZSB7CiBwcm90ZWN0ZWQ6CkBAIC0zOTEsMTMgKzQwMSw2
IEBAIHByb3RlY3RlZDoKICAgICAgICAgcmV0dXJuIHNjb3BlLmV4Y2VwdGlvbigpOwogICAgIH0K
IAotICAgIHZvaWQgdGhyb3dTdGFja092ZXJmbG93KCkKLSAgICB7Ci0gICAgICAgIFZNJiB2bSA9
IG1fZXhlYy0+dm0oKTsKLSAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwotICAgICAgICB0aHJvd0V4Y2VwdGlvbihtX2V4ZWMsIHNjb3BlLCBjcmVhdGVTdGFja092
ZXJmbG93RXJyb3IobV9leGVjKSk7Ci0gICAgfQotCiAgICAgdm9pZCBmYWlsKCkKICAgICB7CiAg
ICAgICAgIG1fZmFpbGVkID0gdHJ1ZTsKQEAgLTczMSw3ICs3MzQsNyBAQCBwcml2YXRlOgogICAg
ICAgICB3cml0ZShzdGF0aWNfY2FzdDx1aW50MzJfdD4oYXJyYXlCdWZmZXJWaWV3LT5ieXRlTGVu
Z3RoKCkpKTsKICAgICAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlciA9IGFycmF5
QnVmZmVyVmlldy0+cG9zc2libHlTaGFyZWRCdWZmZXIoKTsKICAgICAgICAgaWYgKCFhcnJheUJ1
ZmZlcikgewotICAgICAgICAgICAgY29kZSA9IFZhbGlkYXRpb25FcnJvcjsKKyAgICAgICAgICAg
IGNvZGUgPSBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZTo6VmFsaWRhdGlvbkVycm9yOwogICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICAgICAgSlNWYWx1ZSBidWZmZXJPYmog
PSB0b0pTKG1fZXhlYywganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4obV9leGVjLT5sZXhpY2Fs
R2xvYmFsT2JqZWN0KCkpLCBhcnJheUJ1ZmZlci5nZXQoKSk7CkBAIC04NDEsMTIgKzg0NCwxMiBA
QCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgLy8gTWVzc2FnZVBvcnQgb2JqZWN0IGNvdWxkIG5vdCBi
ZSBmb3VuZCBpbiB0cmFuc2ZlcnJlZCBtZXNzYWdlIHBvcnRzCi0gICAgICAgICAgICAgICAgY29k
ZSA9IFZhbGlkYXRpb25FcnJvcjsKKyAgICAgICAgICAgICAgICBjb2RlID0gU2VyaWFsaXphdGlv
blJldHVybkNvZGU6OlZhbGlkYXRpb25FcnJvcjsKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChBcnJheUJ1ZmZlciogYXJyYXlCdWZm
ZXIgPSB0b1Bvc3NpYmx5U2hhcmVkQXJyYXlCdWZmZXIob2JqKSkgewogICAgICAgICAgICAgICAg
IGlmIChhcnJheUJ1ZmZlci0+aXNOZXV0ZXJlZCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNv
ZGUgPSBWYWxpZGF0aW9uRXJyb3I7CisgICAgICAgICAgICAgICAgICAgIGNvZGUgPSBTZXJpYWxp
emF0aW9uUmV0dXJuQ29kZTo6VmFsaWRhdGlvbkVycm9yOwogICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgT2JqZWN0UG9v
bDo6aXRlcmF0b3IgaW5kZXggPSBtX3RyYW5zZmVycmVkQXJyYXlCdWZmZXJzLmZpbmQob2JqKTsK
QEAgLTEyMzQsNyArMTIzNyw3IEBAIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlIENsb25lU2VyaWFs
aXplcjoKICAgICAgICAgICAgIGNhc2UgQXJyYXlTdGFydFN0YXRlOiB7CiAgICAgICAgICAgICAg
ICAgQVNTRVJUKGlzQXJyYXkoaW5WYWx1ZSkpOwogICAgICAgICAgICAgICAgIGlmIChpbnB1dE9i
amVjdFN0YWNrLnNpemUoKSA+IG1heGltdW1GaWx0ZXJSZWN1cnNpb24pCi0gICAgICAgICAgICAg
ICAgICAgIHJldHVybiBTdGFja092ZXJmbG93RXJyb3I7CisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZTo6U3RhY2tPdmVyZmxvd0Vycm9yOwogCiAgICAg
ICAgICAgICAgICAgSlNBcnJheSogaW5BcnJheSA9IGFzQXJyYXkoaW5WYWx1ZSk7CiAgICAgICAg
ICAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gaW5BcnJheS0+bGVuZ3RoKCk7CkBAIC0xMjczLDkg
KzEyNzYsOSBAQCBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZSBDbG9uZVNlcmlhbGl6ZXI6CiAgICAg
ICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgd3JpdGUoaW5kZXgpOwotICAgICAgICAg
ICAgICAgIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlIHRlcm1pbmFsQ29kZSA9IFN1Y2Nlc3NmdWxs
eUNvbXBsZXRlZDsKKyAgICAgICAgICAgICAgICBhdXRvIHRlcm1pbmFsQ29kZSA9IFNlcmlhbGl6
YXRpb25SZXR1cm5Db2RlOjpTdWNjZXNzZnVsbHlDb21wbGV0ZWQ7CiAgICAgICAgICAgICAgICAg
aWYgKGR1bXBJZlRlcm1pbmFsKGluVmFsdWUsIHRlcm1pbmFsQ29kZSkpIHsKLSAgICAgICAgICAg
ICAgICAgICAgaWYgKHRlcm1pbmFsQ29kZSAhPSBTdWNjZXNzZnVsbHlDb21wbGV0ZWQpCisgICAg
ICAgICAgICAgICAgICAgIGlmICh0ZXJtaW5hbENvZGUgIT0gU2VyaWFsaXphdGlvblJldHVybkNv
ZGU6OlN1Y2Nlc3NmdWxseUNvbXBsZXRlZCkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biB0ZXJtaW5hbENvZGU7CiAgICAgICAgICAgICAgICAgICAgIGluZGV4U3RhY2subGFzdCgpKys7
CiAgICAgICAgICAgICAgICAgICAgIGdvdG8gYXJyYXlTdGFydFZpc2l0TWVtYmVyOwpAQCAtMTI5
MSw3ICsxMjk0LDcgQEAgU2VyaWFsaXphdGlvblJldHVybkNvZGUgQ2xvbmVTZXJpYWxpemVyOgog
ICAgICAgICAgICAgY2FzZSBPYmplY3RTdGFydFN0YXRlOiB7CiAgICAgICAgICAgICAgICAgQVNT
RVJUKGluVmFsdWUuaXNPYmplY3QoKSk7CiAgICAgICAgICAgICAgICAgaWYgKGlucHV0T2JqZWN0
U3RhY2suc2l6ZSgpID4gbWF4aW11bUZpbHRlclJlY3Vyc2lvbikKLSAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIFN0YWNrT3ZlcmZsb3dFcnJvcjsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlOjpTdGFja092ZXJmbG93RXJyb3I7CiAgICAgICAgICAg
ICAgICAgSlNPYmplY3QqIGluT2JqZWN0ID0gYXNPYmplY3QoaW5WYWx1ZSk7CiAgICAgICAgICAg
ICAgICAgaWYgKCFzdGFydE9iamVjdChpbk9iamVjdCkpCiAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwpAQCAtMTMwMCw3ICsxMzAzLDcgQEAgU2VyaWFsaXphdGlvblJldHVybkNvZGUgQ2xvbmVT
ZXJpYWxpemVyOgogICAgICAgICAgICAgICAgIC8vIHRoZSBpbnB1dCBpcyBub3QgYW4gT2JqZWN0
IG9iamVjdCB0aGVuIHdlIHNob3VsZCB0aHJvdwogICAgICAgICAgICAgICAgIC8vIGEgRGF0YUNs
b25lRXJyb3IuCiAgICAgICAgICAgICAgICAgaWYgKGluT2JqZWN0LT5jbGFzc0luZm8oKSAhPSBK
U0ZpbmFsT2JqZWN0OjppbmZvKCkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBEYXRhQ2xv
bmVFcnJvcjsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFNlcmlhbGl6YXRpb25SZXR1cm5D
b2RlOjpEYXRhQ2xvbmVFcnJvcjsKICAgICAgICAgICAgICAgICBpbnB1dE9iamVjdFN0YWNrLmFw
cGVuZChpbk9iamVjdCk7CiAgICAgICAgICAgICAgICAgaW5kZXhTdGFjay5hcHBlbmQoMCk7CiAg
ICAgICAgICAgICAgICAgcHJvcGVydHlTdGFjay5hcHBlbmQoUHJvcGVydHlOYW1lQXJyYXkobV9l
eGVjLCBQcm9wZXJ0eU5hbWVNb2RlOjpTdHJpbmdzKSk7CkBAIC0xMzIxLDcgKzEzMjQsNyBAQCBT
ZXJpYWxpemF0aW9uUmV0dXJuQ29kZSBDbG9uZVNlcmlhbGl6ZXI6CiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgIGluVmFsdWUgPSBnZXRQcm9wZXJ0eShvYmplY3QsIHByb3BlcnRp
ZXNbaW5kZXhdKTsKICAgICAgICAgICAgICAgICBpZiAoc2hvdWxkVGVybWluYXRlKCkpCi0gICAg
ICAgICAgICAgICAgICAgIHJldHVybiBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yOworICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gU2VyaWFsaXphdGlvblJldHVybkNvZGU6OkV4aXN0aW5nRXhjZXB0
aW9uRXJyb3I7CiAKICAgICAgICAgICAgICAgICBpZiAoIWluVmFsdWUpIHsKICAgICAgICAgICAg
ICAgICAgICAgLy8gUHJvcGVydHkgd2FzIHJlbW92ZWQgZHVyaW5nIHNlcmlhbGlzYXRpb24KQEAg
LTEzMzEsMjAgKzEzMzQsMjAgQEAgU2VyaWFsaXphdGlvblJldHVybkNvZGUgQ2xvbmVTZXJpYWxp
emVyOgogICAgICAgICAgICAgICAgIHdyaXRlKHByb3BlcnRpZXNbaW5kZXhdKTsKIAogICAgICAg
ICAgICAgICAgIGlmIChzaG91bGRUZXJtaW5hdGUoKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIEV4aXN0aW5nRXhjZXB0aW9uRXJyb3I7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBT
ZXJpYWxpemF0aW9uUmV0dXJuQ29kZTo6RXhpc3RpbmdFeGNlcHRpb25FcnJvcjsKIAotICAgICAg
ICAgICAgICAgIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlIHRlcm1pbmFsQ29kZSA9IFN1Y2Nlc3Nm
dWxseUNvbXBsZXRlZDsKKyAgICAgICAgICAgICAgICBhdXRvIHRlcm1pbmFsQ29kZSA9IFNlcmlh
bGl6YXRpb25SZXR1cm5Db2RlOjpTdWNjZXNzZnVsbHlDb21wbGV0ZWQ7CiAgICAgICAgICAgICAg
ICAgaWYgKCFkdW1wSWZUZXJtaW5hbChpblZhbHVlLCB0ZXJtaW5hbENvZGUpKSB7CiAgICAgICAg
ICAgICAgICAgICAgIHN0YXRlU3RhY2suYXBwZW5kKE9iamVjdEVuZFZpc2l0TWVtYmVyKTsKICAg
ICAgICAgICAgICAgICAgICAgZ290byBzdGF0ZVVua25vd247CiAgICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgIGlmICh0ZXJtaW5hbENvZGUgIT0gU3VjY2Vzc2Z1bGx5Q29tcGxldGVk
KQorICAgICAgICAgICAgICAgIGlmICh0ZXJtaW5hbENvZGUgIT0gU2VyaWFsaXphdGlvblJldHVy
bkNvZGU6OlN1Y2Nlc3NmdWxseUNvbXBsZXRlZCkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHRlcm1pbmFsQ29kZTsKICAgICAgICAgICAgICAgICBGQUxMVEhST1VHSDsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIGNhc2UgT2JqZWN0RW5kVmlzaXRNZW1iZXI6IHsKICAgICAgICAgICAg
ICAgICBpZiAoc2hvdWxkVGVybWluYXRlKCkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBF
eGlzdGluZ0V4Y2VwdGlvbkVycm9yOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gU2VyaWFs
aXphdGlvblJldHVybkNvZGU6OkV4aXN0aW5nRXhjZXB0aW9uRXJyb3I7CiAKICAgICAgICAgICAg
ICAgICBpbmRleFN0YWNrLmxhc3QoKSsrOwogICAgICAgICAgICAgICAgIGdvdG8gb2JqZWN0U3Rh
cnRWaXNpdE1lbWJlcjsKQEAgLTEzNTIsNyArMTM1NSw3IEBAIFNlcmlhbGl6YXRpb25SZXR1cm5D
b2RlIENsb25lU2VyaWFsaXplcjoKICAgICAgICAgICAgIG1hcFN0YXJ0U3RhdGU6IHsKICAgICAg
ICAgICAgICAgICBBU1NFUlQoaW5WYWx1ZS5pc09iamVjdCgpKTsKICAgICAgICAgICAgICAgICBp
ZiAoaW5wdXRPYmplY3RTdGFjay5zaXplKCkgPiBtYXhpbXVtRmlsdGVyUmVjdXJzaW9uKQotICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gU3RhY2tPdmVyZmxvd0Vycm9yOworICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gU2VyaWFsaXphdGlvblJldHVybkNvZGU6OlN0YWNrT3ZlcmZsb3dFcnJv
cjsKICAgICAgICAgICAgICAgICBKU01hcCogaW5NYXAgPSBqc0Nhc3Q8SlNNYXAqPihpblZhbHVl
KTsKICAgICAgICAgICAgICAgICBpZiAoIXN0YXJ0TWFwKGluTWFwKSkKICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CkBAIC0xMzk2LDcgKzEzOTksNyBAQCBTZXJpYWxpemF0aW9uUmV0dXJuQ29k
ZSBDbG9uZVNlcmlhbGl6ZXI6CiAgICAgICAgICAgICBzZXRTdGFydFN0YXRlOiB7CiAgICAgICAg
ICAgICAgICAgQVNTRVJUKGluVmFsdWUuaXNPYmplY3QoKSk7CiAgICAgICAgICAgICAgICAgaWYg
KGlucHV0T2JqZWN0U3RhY2suc2l6ZSgpID4gbWF4aW11bUZpbHRlclJlY3Vyc2lvbikKLSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIFN0YWNrT3ZlcmZsb3dFcnJvcjsKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlOjpTdGFja092ZXJmbG93RXJyb3I7
CiAgICAgICAgICAgICAgICAgSlNTZXQqIGluU2V0ID0ganNDYXN0PEpTU2V0Kj4oaW5WYWx1ZSk7
CiAgICAgICAgICAgICAgICAgaWYgKCFzdGFydFNldChpblNldCkpCiAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwpAQCAtMTQzMSw5ICsxNDM0LDkgQEAgU2VyaWFsaXphdGlvblJldHVybkNvZGUg
Q2xvbmVTZXJpYWxpemVyOgogCiAgICAgICAgICAgICBzdGF0ZVVua25vd246CiAgICAgICAgICAg
ICBjYXNlIFN0YXRlVW5rbm93bjogewotICAgICAgICAgICAgICAgIFNlcmlhbGl6YXRpb25SZXR1
cm5Db2RlIHRlcm1pbmFsQ29kZSA9IFN1Y2Nlc3NmdWxseUNvbXBsZXRlZDsKKyAgICAgICAgICAg
ICAgICBhdXRvIHRlcm1pbmFsQ29kZSA9IFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlOjpTdWNjZXNz
ZnVsbHlDb21wbGV0ZWQ7CiAgICAgICAgICAgICAgICAgaWYgKGR1bXBJZlRlcm1pbmFsKGluVmFs
dWUsIHRlcm1pbmFsQ29kZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHRlcm1pbmFsQ29k
ZSAhPSBTdWNjZXNzZnVsbHlDb21wbGV0ZWQpCisgICAgICAgICAgICAgICAgICAgIGlmICh0ZXJt
aW5hbENvZGUgIT0gU2VyaWFsaXphdGlvblJldHVybkNvZGU6OlN1Y2Nlc3NmdWxseUNvbXBsZXRl
ZCkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0ZXJtaW5hbENvZGU7CiAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KQEAgLTE0NTQsMTMgKzE0NTcs
MTEgQEAgU2VyaWFsaXphdGlvblJldHVybkNvZGUgQ2xvbmVTZXJpYWxpemVyOgogICAgICAgICBz
dGF0ZVN0YWNrLnJlbW92ZUxhc3QoKTsKICAgICB9CiAgICAgaWYgKG1fZmFpbGVkKQotICAgICAg
ICByZXR1cm4gVW5zcGVjaWZpZWRFcnJvcjsKKyAgICAgICAgcmV0dXJuIFNlcmlhbGl6YXRpb25S
ZXR1cm5Db2RlOjpVbnNwZWNpZmllZEVycm9yOwogCi0gICAgcmV0dXJuIFN1Y2Nlc3NmdWxseUNv
bXBsZXRlZDsKKyAgICByZXR1cm4gU2VyaWFsaXphdGlvblJldHVybkNvZGU6OlN1Y2Nlc3NmdWxs
eUNvbXBsZXRlZDsKIH0KIAotdHlwZWRlZiBWZWN0b3I8SlNDOjpBcnJheUJ1ZmZlckNvbnRlbnRz
PiBBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk7Ci0KIGNsYXNzIENsb25lRGVzZXJpYWxpemVyIDog
Q2xvbmVCYXNlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgU3RyaW5nIGRlc2VyaWFsaXplU3RyaW5n
KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYnVmZmVyKQpAQCAtMTQ4OSwxMCArMTQ5MCwxMCBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIERlc2VyaWFsaXphdGlvblJlc3VsdCBkZXNlcmlhbGl6ZShFeGVj
U3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZlY3RvcjxSZWZQdHI8
TWVzc2FnZVBvcnQ+PiYgbWVzc2FnZVBvcnRzLCBBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkqIGFy
cmF5QnVmZmVyQ29udGVudHNBcnJheSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBidWZmZXIsIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgY29uc3QgVmVjdG9yPFN0cmluZz4gYmxvYkZp
bGVQYXRocykKICAgICB7CiAgICAgICAgIGlmICghYnVmZmVyLnNpemUoKSkKLSAgICAgICAgICAg
IHJldHVybiBzdGQ6Om1ha2VfcGFpcihqc051bGwoKSwgVW5zcGVjaWZpZWRFcnJvcik7CisgICAg
ICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIoanNOdWxsKCksIFNlcmlhbGl6YXRpb25SZXR1
cm5Db2RlOjpVbnNwZWNpZmllZEVycm9yKTsKICAgICAgICAgQ2xvbmVEZXNlcmlhbGl6ZXIgZGVz
ZXJpYWxpemVyKGV4ZWMsIGdsb2JhbE9iamVjdCwgbWVzc2FnZVBvcnRzLCBhcnJheUJ1ZmZlckNv
bnRlbnRzQXJyYXksIGJ1ZmZlciwgYmxvYlVSTHMsIGJsb2JGaWxlUGF0aHMpOwogICAgICAgICBp
ZiAoIWRlc2VyaWFsaXplci5pc1ZhbGlkKCkpCi0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtl
X3BhaXIoSlNWYWx1ZSgpLCBWYWxpZGF0aW9uRXJyb3IpOworICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bWFrZV9wYWlyKEpTVmFsdWUoKSwgU2VyaWFsaXphdGlvblJldHVybkNvZGU6OlZhbGlkYXRp
b25FcnJvcik7CiAgICAgICAgIHJldHVybiBkZXNlcmlhbGl6ZXIuZGVzZXJpYWxpemUoKTsKICAg
ICB9CiAKQEAgLTE1NjksMTMgKzE1NzAsNiBAQCBwcml2YXRlOgogCiAgICAgRGVzZXJpYWxpemF0
aW9uUmVzdWx0IGRlc2VyaWFsaXplKCk7CiAKLSAgICB2b2lkIHRocm93VmFsaWRhdGlvbkVycm9y
KCkKLSAgICB7Ci0gICAgICAgIFZNJiB2bSA9IG1fZXhlYy0+dm0oKTsKLSAgICAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgICAgICB0aHJvd1R5cGVFcnJvciht
X2V4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlVuYWJsZSB0byBkZXNlcmlhbGl6ZSBkYXRhLiIp
KTsKLSAgICB9Ci0KICAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBtX3ZlcnNpb24g
PD0gQ3VycmVudFZlcnNpb247IH0KIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBib29sIHJl
YWRMaXR0bGVFbmRpYW4oVCYgdmFsdWUpCkBAIC0yNTI4LDcgKzI1MjIsNyBAQCBEZXNlcmlhbGl6
YXRpb25SZXN1bHQgQ2xvbmVEZXNlcmlhbGl6ZXI6CiAgICAgICAgIG9iamVjdFN0YXJ0U3RhdGU6
CiAgICAgICAgIGNhc2UgT2JqZWN0U3RhcnRTdGF0ZTogewogICAgICAgICAgICAgaWYgKG91dHB1
dE9iamVjdFN0YWNrLnNpemUoKSA+IG1heGltdW1GaWx0ZXJSZWN1cnNpb24pCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKEpTVmFsdWUoKSwgU3RhY2tPdmVyZmxvd0Vycm9y
KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIoSlNWYWx1ZSgpLCBTZXJp
YWxpemF0aW9uUmV0dXJuQ29kZTo6U3RhY2tPdmVyZmxvd0Vycm9yKTsKICAgICAgICAgICAgIEpT
T2JqZWN0KiBvdXRPYmplY3QgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChtX2V4ZWMsIG1fZ2xvYmFs
T2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSk7CiAgICAgICAgICAgICBtX2djQnVmZmVyLmFwcGVu
ZChvdXRPYmplY3QpOwogICAgICAgICAgICAgb3V0cHV0T2JqZWN0U3RhY2suYXBwZW5kKG91dE9i
amVjdCk7CkBAIC0yNTYzLDcgKzI1NTcsNyBAQCBEZXNlcmlhbGl6YXRpb25SZXN1bHQgQ2xvbmVE
ZXNlcmlhbGl6ZXI6CiAgICAgICAgIH0KICAgICAgICAgbWFwT2JqZWN0U3RhcnRTdGF0ZTogewog
ICAgICAgICAgICAgaWYgKG91dHB1dE9iamVjdFN0YWNrLnNpemUoKSA+IG1heGltdW1GaWx0ZXJS
ZWN1cnNpb24pCi0gICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKEpTVmFsdWUo
KSwgU3RhY2tPdmVyZmxvd0Vycm9yKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjptYWtl
X3BhaXIoSlNWYWx1ZSgpLCBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZTo6U3RhY2tPdmVyZmxvd0Vy
cm9yKTsKICAgICAgICAgICAgIEpTTWFwKiBtYXAgPSBKU01hcDo6Y3JlYXRlKG1fZXhlYywgbV9l
eGVjLT52bSgpLCBtX2dsb2JhbE9iamVjdC0+bWFwU3RydWN0dXJlKCkpOwogICAgICAgICAgICAg
aWYgKFVOTElLRUxZKHNjb3BlLmV4Y2VwdGlvbigpKSkKICAgICAgICAgICAgICAgICBnb3RvIGVy
cm9yOwpAQCAtMjU5NCw3ICsyNTg4LDcgQEAgRGVzZXJpYWxpemF0aW9uUmVzdWx0IENsb25lRGVz
ZXJpYWxpemVyOgogCiAgICAgICAgIHNldE9iamVjdFN0YXJ0U3RhdGU6IHsKICAgICAgICAgICAg
IGlmIChvdXRwdXRPYmplY3RTdGFjay5zaXplKCkgPiBtYXhpbXVtRmlsdGVyUmVjdXJzaW9uKQot
ICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihKU1ZhbHVlKCksIFN0YWNrT3Zl
cmZsb3dFcnJvcik7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKEpTVmFs
dWUoKSwgU2VyaWFsaXphdGlvblJldHVybkNvZGU6OlN0YWNrT3ZlcmZsb3dFcnJvcik7CiAgICAg
ICAgICAgICBKU1NldCogc2V0ID0gSlNTZXQ6OmNyZWF0ZShtX2V4ZWMsIG1fZXhlYy0+dm0oKSwg
bV9nbG9iYWxPYmplY3QtPnNldFN0cnVjdHVyZSgpKTsKICAgICAgICAgICAgIGlmIChVTkxJS0VM
WShzY29wZS5leGNlcHRpb24oKSkpCiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKQEAgLTI2
NDMsMTAgKzI2MzcsMTAgQEAgRGVzZXJpYWxpemF0aW9uUmVzdWx0IENsb25lRGVzZXJpYWxpemVy
OgogICAgIH0KICAgICBBU1NFUlQob3V0VmFsdWUpOwogICAgIEFTU0VSVCghbV9mYWlsZWQpOwot
ICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihvdXRWYWx1ZSwgU3VjY2Vzc2Z1bGx5Q29tcGxldGVk
KTsKKyAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIob3V0VmFsdWUsIFNlcmlhbGl6YXRpb25SZXR1
cm5Db2RlOjpTdWNjZXNzZnVsbHlDb21wbGV0ZWQpOwogZXJyb3I6CiAgICAgZmFpbCgpOwotICAg
IHJldHVybiBzdGQ6Om1ha2VfcGFpcihKU1ZhbHVlKCksIFZhbGlkYXRpb25FcnJvcik7CisgICAg
cmV0dXJuIHN0ZDo6bWFrZV9wYWlyKEpTVmFsdWUoKSwgU2VyaWFsaXphdGlvblJldHVybkNvZGU6
OlZhbGlkYXRpb25FcnJvcik7CiB9CiAKIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6flNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSgpCkBAIC0yNjY5LDE5ICsyNjYzLDEyIEBAIFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZTo6U2VyaWFsaXplZFNjcmlwdFYKICAgICAgICAgbV9ibG9iVVJMcy5hcHBlbmQodXJsLmlz
b2xhdGVkQ29weSgpKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTo6QXJyYXlCdWZmZXJDb250ZW50c0FycmF5PiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OnRyYW5z
ZmVyQXJyYXlCdWZmZXJzKAotICAgIEV4ZWNTdGF0ZSogZXhlYywgVmVjdG9yPFJlZlB0cjxKU0M6
OkFycmF5QnVmZmVyPj4mIGFycmF5QnVmZmVycywgU2VyaWFsaXphdGlvblJldHVybkNvZGUmIGNv
ZGUpCitFeGNlcHRpb25PcjxzdGQ6OnVuaXF1ZV9wdHI8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5
Pj4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjp0cmFuc2ZlckFycmF5QnVmZmVycyhjb25zdCBWZWN0
b3I8UmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+PiYgYXJyYXlCdWZmZXJzKQogewotICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgYXJyYXlCdWZmZXJzLnNpemUoKTsgaSsrKSB7Ci0gICAgICAgIGlm
IChhcnJheUJ1ZmZlcnNbaV0tPmlzTmV1dGVyZWQoKSkgewotICAgICAgICAgICAgY29kZSA9IFZh
bGlkYXRpb25FcnJvcjsKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICB9Ci0g
ICAgfQorICAgIGlmIChhcnJheUJ1ZmZlcnMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAogICAgIGF1dG8gY29udGVudHMgPSBzdGQ6Om1ha2VfdW5pcXVlPEFycmF5QnVmZmVy
Q29udGVudHNBcnJheT4oYXJyYXlCdWZmZXJzLnNpemUoKSk7Ci0gICAgVmVjdG9yPFJlZjxET01X
cmFwcGVyV29ybGQ+PiB3b3JsZHM7Ci0gICAgc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPihl
eGVjLT52bSgpLmNsaWVudERhdGEpLT5nZXRBbGxXb3JsZHMod29ybGRzKTsKIAogICAgIEhhc2hT
ZXQ8SlNDOjpBcnJheUJ1ZmZlcio+IHZpc2l0ZWQ7CiAgICAgZm9yIChzaXplX3QgYXJyYXlCdWZm
ZXJJbmRleCA9IDA7IGFycmF5QnVmZmVySW5kZXggPCBhcnJheUJ1ZmZlcnMuc2l6ZSgpOyBhcnJh
eUJ1ZmZlckluZGV4KyspIHsKQEAgLTI2OTAsMjkgKzI2NzcsMjAgQEAgc3RkOjp1bmlxdWVfcHRy
PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6QQogICAgICAgICB2aXNpdGVkLmFkZChhcnJheUJ1ZmZl
cnNbYXJyYXlCdWZmZXJJbmRleF0uZ2V0KCkpOwogCiAgICAgICAgIGJvb2wgcmVzdWx0ID0gYXJy
YXlCdWZmZXJzW2FycmF5QnVmZmVySW5kZXhdLT50cmFuc2ZlclRvKGNvbnRlbnRzLT5hdChhcnJh
eUJ1ZmZlckluZGV4KSk7Ci0gICAgICAgIGlmICghcmVzdWx0KSB7Ci0gICAgICAgICAgICBjb2Rl
ID0gVmFsaWRhdGlvbkVycm9yOwotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAg
IH0KKyAgICAgICAgaWYgKCFyZXN1bHQpCisgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsg
VHlwZUVycm9yIH07CiAgICAgfQotICAgIHJldHVybiBjb250ZW50czsKLX0KIAotUmVmUHRyPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoRXhlY1N0
YXRlJiBleGVjLCBKU1ZhbHVlIHZhbHVlLCBTZXJpYWxpemF0aW9uRXJyb3JNb2RlIHRocm93RXhj
ZXB0aW9ucykKLXsKLSAgICBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4gbWVzc2FnZVBvcnRz
OwotICAgIHJldHVybiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShleGVjLCB2YWx1ZSwg
bWVzc2FnZVBvcnRzLCB7IH0sIHRocm93RXhjZXB0aW9ucyk7CisgICAgcmV0dXJuIFdURk1vdmUo
Y29udGVudHMpOwogfQogCi1SZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBTZXJpYWxpemVk
U2NyaXB0VmFsdWU6OmNyZWF0ZShFeGVjU3RhdGUmIGV4ZWMsIEpTVmFsdWUgdmFsdWUsIFZlY3Rv
cjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYgbWVzc2FnZVBvcnRzLCBWZWN0b3I8UmVmUHRyPEpTQzo6
QXJyYXlCdWZmZXI+PiYmIGFycmF5QnVmZmVycywgU2VyaWFsaXphdGlvbkVycm9yTW9kZSB0aHJv
d0V4Y2VwdGlvbnMpCitSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBTZXJpYWxpemVkU2Ny
aXB0VmFsdWU6OmNyZWF0ZShFeGVjU3RhdGUmIGV4ZWMsIEpTVmFsdWUgdmFsdWUsIFNlcmlhbGl6
YXRpb25FcnJvck1vZGUgdGhyb3dFeGNlcHRpb25zKQogewogICAgIFZlY3Rvcjx1aW50OF90PiBi
dWZmZXI7CiAgICAgVmVjdG9yPFN0cmluZz4gYmxvYlVSTHM7Ci0gICAgU2VyaWFsaXphdGlvblJl
dHVybkNvZGUgY29kZSA9IENsb25lU2VyaWFsaXplcjo6c2VyaWFsaXplKCZleGVjLCB2YWx1ZSwg
bWVzc2FnZVBvcnRzLCBhcnJheUJ1ZmZlcnMsIGJsb2JVUkxzLCBidWZmZXIpOwotCi0gICAgc3Rk
Ojp1bmlxdWVfcHRyPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4gYXJyYXlCdWZmZXJDb250ZW50
c0FycmF5OwotICAgIGlmICghYXJyYXlCdWZmZXJzLmlzRW1wdHkoKSAmJiBzZXJpYWxpemF0aW9u
RGlkQ29tcGxldGVTdWNjZXNzZnVsbHkoY29kZSkpCi0gICAgICAgIGFycmF5QnVmZmVyQ29udGVu
dHNBcnJheSA9IHRyYW5zZmVyQXJyYXlCdWZmZXJzKCZleGVjLCBhcnJheUJ1ZmZlcnMsIGNvZGUp
OworICAgIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiBkdW1teU1lc3NhZ2VQb3J0czsKKyAg
ICBWZWN0b3I8UmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+PiBkdW1teUFycmF5QnVmZmVyczsKKyAg
ICBhdXRvIGNvZGUgPSBDbG9uZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZSgmZXhlYywgdmFsdWUsIGR1
bW15TWVzc2FnZVBvcnRzLCBkdW1teUFycmF5QnVmZmVycywgYmxvYlVSTHMsIGJ1ZmZlcik7CiAK
ICAgICBpZiAodGhyb3dFeGNlcHRpb25zID09IFRocm93aW5nKQogICAgICAgICBtYXliZVRocm93
RXhjZXB0aW9uSWZTZXJpYWxpemF0aW9uRmFpbGVkKCZleGVjLCBjb2RlKTsKQEAgLTI3MjAsNyAr
MjY5OCw2MSBAQCBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBTZXJpYWxpemVkCiAgICAg
aWYgKCFzZXJpYWxpemF0aW9uRGlkQ29tcGxldGVTdWNjZXNzZnVsbHkoY29kZSkpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2VyaWFsaXplZFNj
cmlwdFZhbHVlKFdURk1vdmUoYnVmZmVyKSwgYmxvYlVSTHMsIFdURk1vdmUoYXJyYXlCdWZmZXJD
b250ZW50c0FycmF5KSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZShXVEZNb3ZlKGJ1ZmZlciksIGJsb2JVUkxzLCBudWxscHRyKSk7Cit9CisKK0V4Y2Vw
dGlvbiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmV4Y2VwdGlvbkZvclNlcmlhbGl6YXRpb25GYWls
dXJlKFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlIGNvZGUpCit7CisgICAgQVNTRVJUKGNvZGUgIT0g
U2VyaWFsaXphdGlvblJldHVybkNvZGU6OlN1Y2Nlc3NmdWxseUNvbXBsZXRlZCk7CisgICAgCisg
ICAgc3dpdGNoIChjb2RlKSB7CisgICAgY2FzZSBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZTo6U3Rh
Y2tPdmVyZmxvd0Vycm9yOgorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU3RhY2tPdmVyZmxv
d0Vycm9yIH07CisgICAgY2FzZSBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZTo6VmFsaWRhdGlvbkVy
cm9yOgorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yIH07CisgICAgY2FzZSBT
ZXJpYWxpemF0aW9uUmV0dXJuQ29kZTo6RGF0YUNsb25lRXJyb3I6CisgICAgICAgIHJldHVybiBF
eGNlcHRpb24geyBEQVRBX0NMT05FX0VSUiB9OworICAgIGNhc2UgU2VyaWFsaXphdGlvblJldHVy
bkNvZGU6OkV4aXN0aW5nRXhjZXB0aW9uRXJyb3I6CisgICAgICAgIHJldHVybiBFeGNlcHRpb24g
eyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yIH07CisgICAgY2FzZSBTZXJpYWxpemF0aW9uUmV0dXJu
Q29kZTo6VW5zcGVjaWZpZWRFcnJvcjoKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVF
cnJvciB9OworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yIH07CisgICAgfQorfQorCitFeGNlcHRp
b25PcjxSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPj4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpj
cmVhdGUoRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSwgVmVjdG9yPEpTQzo6U3Ryb25n
PEpTQzo6SlNPYmplY3Q+PiYmIHRyYW5zZmVyTGlzdCwgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9y
dD4+JiBtZXNzYWdlUG9ydHMpCit7CisgICAgVmVjdG9yPFJlZlB0cjxKU0M6OkFycmF5QnVmZmVy
Pj4gYXJyYXlCdWZmZXJzOworICAgIGZvciAoYXV0byYgdHJhbnNmZXJhYmxlIDogdHJhbnNmZXJM
aXN0KSB7CisgICAgICAgIGlmIChSZWZQdHI8QXJyYXlCdWZmZXI+IGFycmF5QnVmZmVyID0gdG9Q
b3NzaWJseVNoYXJlZEFycmF5QnVmZmVyKHRyYW5zZmVyYWJsZS5nZXQoKSkpIHsKKyAgICAgICAg
ICAgIGlmIChhcnJheUJ1ZmZlci0+aXNOZXV0ZXJlZCgpKQorICAgICAgICAgICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBEQVRBX0NMT05FX0VSUiB9OworICAgICAgICAgICAgYXJyYXlCdWZmZXJz
LmFwcGVuZChXVEZNb3ZlKGFycmF5QnVmZmVyKSk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgfQorICAgICAgICBpZiAoUmVmUHRyPE1lc3NhZ2VQb3J0PiBwb3J0ID0gSlNNZXNzYWdl
UG9ydDo6dG9XcmFwcGVkKHRyYW5zZmVyYWJsZS5nZXQoKSkpIHsKKyAgICAgICAgICAgIC8vIEZJ
WE1FOiBUaGlzIHNob3VsZCBjaGVjayBpZiB0aGUgcG9ydCBpcyBkZXRhY2hlZCBhcyBwZXIgaHR0
cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvaW5mcmFzdHJ1Y3R1cmUuaHRtbCNp
c3RyYW5zZmVyYWJsZS4KKyAgICAgICAgICAgIG1lc3NhZ2VQb3J0cy5hcHBlbmQoV1RGTW92ZShw
b3J0KSk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBEQVRBX0NMT05FX0VSUiB9OworICAgIH0KKworICAgIFZlY3Rvcjx1aW50
OF90PiBidWZmZXI7CisgICAgVmVjdG9yPFN0cmluZz4gYmxvYlVSTHM7CisgICAgYXV0byBjb2Rl
ID0gQ2xvbmVTZXJpYWxpemVyOjpzZXJpYWxpemUoJnN0YXRlLCB2YWx1ZSwgbWVzc2FnZVBvcnRz
LCBhcnJheUJ1ZmZlcnMsIGJsb2JVUkxzLCBidWZmZXIpOworCisgICAgaWYgKGNvZGUgIT0gU2Vy
aWFsaXphdGlvblJldHVybkNvZGU6OlN1Y2Nlc3NmdWxseUNvbXBsZXRlZCkKKyAgICAgICAgcmV0
dXJuIGV4Y2VwdGlvbkZvclNlcmlhbGl6YXRpb25GYWlsdXJlKGNvZGUpOworCisgICAgYXV0byBh
cnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkgPSB0cmFuc2ZlckFycmF5QnVmZmVycyhhcnJheUJ1ZmZl
cnMpOworICAgIGlmIChhcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkuaGFzRXhjZXB0aW9uKCkpCisg
ICAgICAgIHJldHVybiBhcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkucmVsZWFzZUV4Y2VwdGlvbigp
OworCisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2VyaWFsaXplZFNjcmlwdFZhbHVlKFdURk1v
dmUoYnVmZmVyKSwgYmxvYlVSTHMsIGFycmF5QnVmZmVyQ29udGVudHNBcnJheS5yZWxlYXNlUmV0
dXJuVmFsdWUoKSkpOwogfQogCiBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBTZXJpYWxp
emVkU2NyaXB0VmFsdWU6OmNyZWF0ZShTdHJpbmdWaWV3IHN0cmluZykKQEAgLTI4MDQsMjIgKzI4
MzYsMjIgQEAgdm9pZCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6Om1heWJlVGhyb3dFeAogICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogCi0gICAgaWYgKGNvZGUgPT0gU3VjY2Vzc2Z1bGx5Q29tcGxldGVkKQorICAgIGlmIChj
b2RlID09IFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlOjpTdWNjZXNzZnVsbHlDb21wbGV0ZWQpCiAg
ICAgICAgIHJldHVybjsKICAgICAKICAgICBzd2l0Y2ggKGNvZGUpIHsKLSAgICBjYXNlIFN0YWNr
T3ZlcmZsb3dFcnJvcjoKKyAgICBjYXNlIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlOjpTdGFja092
ZXJmbG93RXJyb3I6CiAgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVT
dGFja092ZXJmbG93RXJyb3IoZXhlYykpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFZhbGlk
YXRpb25FcnJvcjoKKyAgICBjYXNlIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlOjpWYWxpZGF0aW9u
RXJyb3I6CiAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwo
IlVuYWJsZSB0byBkZXNlcmlhbGl6ZSBkYXRhLiIpKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBEYXRhQ2xvbmVFcnJvcjoKKyAgICBjYXNlIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlOjpEYXRh
Q2xvbmVFcnJvcjoKICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIERBVEFfQ0xPTkVfRVJS
KTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yOgorICAg
IGNhc2UgU2VyaWFsaXphdGlvblJldHVybkNvZGU6OkV4aXN0aW5nRXhjZXB0aW9uRXJyb3I6CiAg
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgVW5zcGVjaWZpZWRFcnJvcjoKKyAgICBjYXNlIFNlcmlh
bGl6YXRpb25SZXR1cm5Db2RlOjpVbnNwZWNpZmllZEVycm9yOgogICAgICAgICBicmVhazsKICAg
ICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTI4MjgsNyArMjg2
MCw3IEBAIHZvaWQgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjptYXliZVRocm93RXgKIAogYm9vbCBT
ZXJpYWxpemVkU2NyaXB0VmFsdWU6OnNlcmlhbGl6YXRpb25EaWRDb21wbGV0ZVN1Y2Nlc3NmdWxs
eShTZXJpYWxpemF0aW9uUmV0dXJuQ29kZSBjb2RlKQogewotICAgIHJldHVybiAoY29kZSA9PSBT
dWNjZXNzZnVsbHlDb21wbGV0ZWQpOworICAgIHJldHVybiAoY29kZSA9PSBTZXJpYWxpemF0aW9u
UmV0dXJuQ29kZTo6U3VjY2Vzc2Z1bGx5Q29tcGxldGVkKTsKIH0KIAogdWludDMyX3QgU2VyaWFs
aXplZFNjcmlwdFZhbHVlOjp3aXJlRm9ybWF0VmVyc2lvbigpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaAkocmV2aXNpb24g
MjA5MjYxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAK
KyNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgogI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVl
Lmg+CiAjaW5jbHVkZSA8aGVhcC9TdHJvbmcuaD4KICNpbmNsdWRlIDxydW50aW1lL0FycmF5QnVm
ZmVyLmg+CkBAIC00MiwyNSArNDMsMTggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJ
REJWYWx1ZTsKIGNsYXNzIE1lc3NhZ2VQb3J0OwotIAotZW51bSBTZXJpYWxpemF0aW9uUmV0dXJu
Q29kZSB7Ci0gICAgU3VjY2Vzc2Z1bGx5Q29tcGxldGVkLAotICAgIFN0YWNrT3ZlcmZsb3dFcnJv
ciwKLSAgICBJbnRlcnJ1cHRlZEV4ZWN1dGlvbkVycm9yLAotICAgIFZhbGlkYXRpb25FcnJvciwK
LSAgICBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yLAotICAgIERhdGFDbG9uZUVycm9yLAotICAgIFVu
c3BlY2lmaWVkRXJyb3IKLX07Ci0gICAgCitjbGFzcyBTaGFyZWRCdWZmZXI7CitlbnVtIGNsYXNz
IFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlOworCiBlbnVtIFNlcmlhbGl6YXRpb25FcnJvck1vZGUg
eyBOb25UaHJvd2luZywgVGhyb3dpbmcgfTsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOwordXNpbmcg
QXJyYXlCdWZmZXJDb250ZW50c0FycmF5ID0gVmVjdG9yPEpTQzo6QXJyYXlCdWZmZXJDb250ZW50
cz47CiAKIGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVm
Q291bnRlZDxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHsKIHB1YmxpYzoKICAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gY3JlYXRlKEpTQzo6RXhl
Y1N0YXRlJiwgSlNDOjpKU1ZhbHVlLCBTZXJpYWxpemF0aW9uRXJyb3JNb2RlID0gVGhyb3dpbmcp
OwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVl
PiBjcmVhdGUoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUsIFZlY3RvcjxSZWZQdHI8TWVz
c2FnZVBvcnQ+PiYsIFZlY3RvcjxSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4+JiYsIFNlcmlhbGl6
YXRpb25FcnJvck1vZGUgPSBUaHJvd2luZyk7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
RXhjZXB0aW9uT3I8UmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4+IGNyZWF0ZShKU0M6OkV4ZWNT
dGF0ZSYsIEpTQzo6SlNWYWx1ZSwgVmVjdG9yPEpTQzo6U3Ryb25nPEpTQzo6SlNPYmplY3Q+PiYm
LCBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4mKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBjcmVhdGUoU3RyaW5nVmlldyk7CiAg
ICAgc3RhdGljIFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGFkb3B0KFZlY3Rvcjx1aW50OF90
PiYmIGJ1ZmZlcikKQEAgLTEwMCwxMCArOTQsMTEgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQ
T1JUIH5TZXJpYWxpemVkU2NyaXB0VmFsdWUoKTsKIAogcHJpdmF0ZToKLSAgICB0eXBlZGVmIFZl
Y3RvcjxKU0M6OkFycmF5QnVmZmVyQ29udGVudHM+IEFycmF5QnVmZmVyQ29udGVudHNBcnJheTsK
ICAgICBzdGF0aWMgdm9pZCBtYXliZVRocm93RXhjZXB0aW9uSWZTZXJpYWxpemF0aW9uRmFpbGVk
KEpTQzo6RXhlY1N0YXRlKiwgU2VyaWFsaXphdGlvblJldHVybkNvZGUpOwogICAgIHN0YXRpYyBi
b29sIHNlcmlhbGl6YXRpb25EaWRDb21wbGV0ZVN1Y2Nlc3NmdWxseShTZXJpYWxpemF0aW9uUmV0
dXJuQ29kZSk7Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBcnJheUJ1ZmZlckNvbnRlbnRz
QXJyYXk+IHRyYW5zZmVyQXJyYXlCdWZmZXJzKEpTQzo6RXhlY1N0YXRlKiwgVmVjdG9yPFJlZlB0
cjxKU0M6OkFycmF5QnVmZmVyPj4mLCBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZSYpOworICAgIHN0
YXRpYyBFeGNlcHRpb24gZXhjZXB0aW9uRm9yU2VyaWFsaXphdGlvbkZhaWx1cmUoU2VyaWFsaXph
dGlvblJldHVybkNvZGUpOworCisgICAgc3RhdGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5pcXVlX3B0
cjxBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+PiB0cmFuc2ZlckFycmF5QnVmZmVycyhjb25zdCBW
ZWN0b3I8UmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+PiYpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQg
U2VyaWFsaXplZFNjcmlwdFZhbHVlKFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYmKTsKICAgICBTZXJp
YWxpemVkU2NyaXB0VmFsdWUoVmVjdG9yPHVuc2lnbmVkIGNoYXI+JiYsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBibG9iVVJMcywgc3RkOjp1bmlxdWVfcHRyPEFycmF5QnVmZmVyQ29udGVudHNBcnJh
eT4mJik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3IucG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9yLnBtCShyZXZpc2lvbiAyMDkyNjEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0JKHdvcmtpbmcgY29weSkKQEAgLTU5Nyw2ICs1OTcs
NyBAQCBzdWIgSXNSZWZQdHJUeXBlCiAgICAgcmV0dXJuIDAgaWYgJG9iamVjdC0+SXNTdHJpbmdU
eXBlKCR0eXBlKTsKICAgICByZXR1cm4gMCBpZiAkdHlwZS0+aXNVbmlvbjsKICAgICByZXR1cm4g
MCBpZiAkdHlwZS0+bmFtZSBlcSAiYW55IjsKKyAgICByZXR1cm4gMCBpZiAkdHlwZS0+bmFtZSBl
cSAib2JqZWN0IjsKIAogICAgIHJldHVybiAxOwogfQpAQCAtODYyLDYgKzg2Myw3IEBAIHN1YiBJ
c0J1aWx0aW5UeXBlCiAgICAgcmV0dXJuIDEgaWYgJG9iamVjdC0+SXNUeXBlZEFycmF5VHlwZSgk
dHlwZSk7CiAgICAgcmV0dXJuIDEgaWYgJHR5cGUtPmlzVW5pb247CiAgICAgcmV0dXJuIDEgaWYg
JHR5cGUtPm5hbWUgZXEgImFueSI7CisgICAgcmV0dXJuIDEgaWYgJHR5cGUtPm5hbWUgZXEgIm9i
amVjdCI7CiAgICAgcmV0dXJuIDEgaWYgJHR5cGUtPm5hbWUgZXEgIkJ1ZmZlclNvdXJjZSI7CiAg
ICAgcmV0dXJuIDEgaWYgJHR5cGUtPm5hbWUgZXEgIlByb21pc2UiOwogICAgIHJldHVybiAxIGlm
ICR0eXBlLT5uYW1lIGVxICJYUGF0aE5TUmVzb2x2ZXIiOyAgICAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCShyZXZpc2lv
biAyMDkyNjEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JKUy5wbQkod29ya2luZyBjb3B5KQpAQCAtMjc5LDYgKzI3OSw3IEBAIHN1YiBBZGRUb0luY2x1
ZGVzRm9ySURMVHlwZQogICAgIHJldHVybiBpZiAkY29kZUdlbmVyYXRvci0+SXNTdHJpbmdUeXBl
KCR0eXBlKTsKICAgICByZXR1cm4gaWYgJGNvZGVHZW5lcmF0b3ItPklzVHlwZWRBcnJheVR5cGUo
JHR5cGUpOwogICAgIHJldHVybiBpZiAkdHlwZS0+bmFtZSBlcSAiYW55IjsKKyAgICByZXR1cm4g
aWYgJHR5cGUtPm5hbWUgZXEgIm9iamVjdCI7CiAKICAgICBpZiAoJHR5cGUtPmlzVW5pb24pIHsK
ICAgICAgICAgQWRkVG9JbmNsdWRlcygiPHd0Zi9WYXJpYW50Lmg+IiwgJGluY2x1ZGVzUmVmLCAk
Y29uZGl0aW9uYWwpOwpAQCAtNDk3MCw2ICs0OTcxLDcgQEAgbXkgJW5hdGl2ZVR5cGUgPSAoCiAg
ICAgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSIgPT4gIlJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+IiwKICAgICAiWFBhdGhOU1Jlc29sdmVyIiA9PiAiUmVmUHRyPFhQYXRoTlNSZXNvbHZlcj4i
LAogICAgICJhbnkiID0+ICJKU0M6OkpTVmFsdWUiLAorICAgICJvYmplY3QiID0+ICJKU0M6OlN0
cm9uZzxKU0M6OkpTT2JqZWN0PiIsCiAgICAgImJvb2xlYW4iID0+ICJib29sIiwKICAgICAiYnl0
ZSIgPT4gImludDhfdCIsCiAgICAgImRvdWJsZSIgPT4gImRvdWJsZSIsCkBAIC01MDU4LDYgKzUw
NjAsNyBAQCBzdWIgR2V0QmFzZUlETFR5cGUKICAgICAgICAgIkRPTVN0cmluZyIgPT4gIklETERP
TVN0cmluZyIsCiAgICAgICAgICJCeXRlU3RyaW5nIiA9PiAiSURMQnl0ZVN0cmluZyIsCiAgICAg
ICAgICJVU1ZTdHJpbmciID0+ICJJRExVU1ZTdHJpbmciLAorICAgICAgICAib2JqZWN0IiA9PiAi
SURMT2JqZWN0IiwKICAgICAgICAgCiAgICAgICAgICMgTm9uLVdlYklETCBleHRlbnNpb25zCiAg
ICAgICAgICJEYXRlIiA9PiAiSURMRGF0ZSIsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCShyZXZpc2lvbiAyMDkyNjEpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwJKHdvcmtpbmcg
Y29weSkKQEAgLTIzMyw2ICsyMzMsNyBAQCBlbnVtIFRlc3RDb25maWRlbmNlIHsgImhpZ2giLCAi
a2luZGEtbG93CiAgICAgdm9pZCAgICBtZXRob2RXaXRoT3B0aW9uYWxCb29sZWFuKG9wdGlvbmFs
IGJvb2xlYW4gYik7CiAgICAgdm9pZCAgICBtZXRob2RXaXRoT3B0aW9uYWxCb29sZWFuSXNGYWxz
ZShvcHRpb25hbCBib29sZWFuIGIgPSBmYWxzZSk7CiAgICAgdm9pZCAgICBtZXRob2RXaXRoT3B0
aW9uYWxBbnkob3B0aW9uYWwgYW55IGEpOworICAgIHZvaWQgICAgbWV0aG9kV2l0aE9wdGlvbmFs
T2JqZWN0KG9wdGlvbmFsIG9iamVjdCBhKTsKICAgICB2b2lkICAgIG1ldGhvZFdpdGhPcHRpb25h
bE51bGxhYmxlV3JhcHBlcihvcHRpb25hbCBUZXN0T2JqPyBvYmopOwogICAgIHZvaWQgICAgbWV0
aG9kV2l0aE9wdGlvbmFsTnVsbGFibGVXcmFwcGVySXNOdWxsKG9wdGlvbmFsIFRlc3RPYmo/IG9i
aiA9IG51bGwpOwogICAgIHZvaWQgICAgbWV0aG9kV2l0aE9wdGlvbmFsWFBhdGhOU1Jlc29sdmVy
KG9wdGlvbmFsIFhQYXRoTlNSZXNvbHZlcj8gcmVzb2x2ZXIpOwpAQCAtMjcyLDYgKzI3Myw3IEBA
IGVudW0gVGVzdENvbmZpZGVuY2UgeyAiaGlnaCIsICJraW5kYS1sb3cKICAgICBbQ2FjaGVkQXR0
cmlidXRlXSByZWFkb25seSBhdHRyaWJ1dGUgYW55IGNhY2hlZEF0dHJpYnV0ZTI7CiAgICAgCiAg
ICAgYXR0cmlidXRlIGFueSBhbnlBdHRyaWJ1dGU7CisgICAgYXR0cmlidXRlIG9iamVjdCBvYmpl
Y3RBdHRyaWJ1dGU7CiAKICAgICAvLyBPdmVybG9hZHMKICAgICB2b2lkICAgIG92ZXJsb2FkZWRN
ZXRob2QoVGVzdE9iaj8gb2JqQXJnLCBET01TdHJpbmcgc3RyQXJnKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3Bw
CShyZXZpc2lvbiAyMDkyNjEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0T2JqLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAxNSw2ICsxMDE1LDcgQEAg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdAogSlNDOjpFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9w
dGlvbmFsQm9vbGVhbihKU0M6OkV4ZWNTdGF0ZSopOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQm9v
bGVhbklzRmFsc2UoSlNDOjpFeGVjU3RhdGUqKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEFueShK
U0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsT2JqZWN0KEpTQzo6RXhlY1N0
YXRlKik7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxOdWxsYWJsZVdyYXBwZXIoSlNDOjpFeGVjU3Rh
dGUqKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbE51bGxhYmxlV3JhcHBlcklzTnVsbChKU0M6OkV4
ZWNTdGF0ZSopOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsWFBhdGhOU1Jlc29sdmVyKEpTQzo6RXhl
Y1N0YXRlKik7CkBAIC0xMjQwLDYgKzEyNDEsOCBAQCBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dE9iakNhY2hlZEF0dHJpCiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNhY2hlZEF0dHJp
YnV0ZTIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5
TmFtZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakFueUF0dHJpYnV0ZShKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIGJvb2wg
c2V0SlNUZXN0T2JqQW55QXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CitKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9i
ak9iamVjdEF0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpT
Qzo6UHJvcGVydHlOYW1lKTsKK2Jvb2wgc2V0SlNUZXN0T2JqT2JqZWN0QXR0cmlidXRlKEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbnRlbnREb2N1bWVudChKU0M6OkV4ZWNTdGF0
ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqTXV0YWJsZVBvaW50KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogYm9vbCBzZXRKU1Rlc3RPYmpNdXRhYmxl
UG9pbnQoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRK
U1ZhbHVlKTsKQEAgLTE1NDAsNiArMTU0Myw3IEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1
ZSBKU1Rlc3RPYmpQcm8KICAgICB7ICJjYWNoZWRBdHRyaWJ1dGUxIiwgUmVhZE9ubHkgfCBDdXN0
b21BY2Nlc3NvciwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpDYWNoZWRBdHRyaWJ1dGUxKSwgKGludHB0cl90
KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAogICAg
IHsgImNhY2hlZEF0dHJpYnV0ZTIiLCBSZWFkT25seSB8IEN1c3RvbUFjY2Vzc29yLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+
KGpzVGVzdE9iakNhY2hlZEF0dHJpYnV0ZTIpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFBy
b3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCiAgICAgeyAiYW55QXR0cmlidXRlIiwg
Q3VzdG9tQWNjZXNzb3IsIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqQW55QXR0cmlidXRlKSwgKGludHB0cl90
KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0T2Jq
QW55QXR0cmlidXRlKSB9IH0sCisgICAgeyAib2JqZWN0QXR0cmlidXRlIiwgQ3VzdG9tQWNjZXNz
b3IsIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6Okdl
dFZhbHVlRnVuYz4oanNUZXN0T2JqT2JqZWN0QXR0cmlidXRlKSwgKGludHB0cl90KSBzdGF0aWNf
Y2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0T2JqT2JqZWN0QXR0
cmlidXRlKSB9IH0sCiAgICAgeyAiY29udGVudERvY3VtZW50IiwgUmVhZE9ubHkgfCBDdXN0b21B
Y2Nlc3NvciwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xv
dDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpDb250ZW50RG9jdW1lbnQpLCAoaW50cHRyX3QpIHN0
YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCiAgICAgeyAi
bXV0YWJsZVBvaW50IiwgQ3VzdG9tQWNjZXNzb3IsIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqTXV0YWJsZVBv
aW50KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVu
Yz4oc2V0SlNUZXN0T2JqTXV0YWJsZVBvaW50KSB9IH0sCiAgICAgeyAiaW1tdXRhYmxlUG9pbnQi
LCBDdXN0b21BY2Nlc3NvciwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFBy
b3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpJbW11dGFibGVQb2ludCksIChpbnRw
dHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVz
dE9iakltbXV0YWJsZVBvaW50KSB9IH0sCkBAIC0xNjUyLDYgKzE2NTYsNyBAQCBzdGF0aWMgY29u
c3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0T2JqUHJvCiAgICAgeyAibWV0aG9kV2l0aE9wdGlvbmFs
Qm9vbGVhbiIsIEpTQzo6RnVuY3Rpb24sIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRo
T3B0aW9uYWxCb29sZWFuKSwgKGludHB0cl90KSAoMCkgfSB9LAogICAgIHsgIm1ldGhvZFdpdGhP
cHRpb25hbEJvb2xlYW5Jc0ZhbHNlIiwgSlNDOjpGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk1ldGhvZFdpdGhPcHRpb25hbEJvb2xlYW5Jc0ZhbHNlKSwgKGludHB0cl90KSAoMCkgfSB9
LAogICAgIHsgIm1ldGhvZFdpdGhPcHRpb25hbEFueSIsIEpTQzo6RnVuY3Rpb24sIE5vSW50cmlu
c2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBbnkpLCAoaW50cHRyX3QpICgwKSB9IH0s
CisgICAgeyAibWV0aG9kV2l0aE9wdGlvbmFsT2JqZWN0IiwgSlNDOjpGdW5jdGlvbiwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbE9iamVjdCksIChpbnRwdHJfdCkgKDAp
IH0gfSwKICAgICB7ICJtZXRob2RXaXRoT3B0aW9uYWxOdWxsYWJsZVdyYXBwZXIiLCBKU0M6OkZ1
bmN0aW9uLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rp
b24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsTnVsbGFibGVX
cmFwcGVyKSwgKGludHB0cl90KSAoMCkgfSB9LAogICAgIHsgIm1ldGhvZFdpdGhPcHRpb25hbE51
bGxhYmxlV3JhcHBlcklzTnVsbCIsIEpTQzo6RnVuY3Rpb24sIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RXaXRoT3B0aW9uYWxOdWxsYWJsZVdyYXBwZXJJc051bGwpLCAoaW50cHRyX3QpICgw
KSB9IH0sCiAgICAgeyAibWV0aG9kV2l0aE9wdGlvbmFsWFBhdGhOU1Jlc29sdmVyIiwgSlNDOjpG
dW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0
aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFhQYXRoTlNS
ZXNvbHZlciksIChpbnRwdHJfdCkgKDApIH0gfSwKQEAgLTMwMjUsNiArMzAzMCwyMiBAQCBzdGF0
aWMgaW5saW5lIEpTVmFsdWUganNUZXN0T2JqQW55QXR0cmliCiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KIAorc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdE9iak9iamVjdEF0dHJpYnV0ZUdldHRl
cihFeGVjU3RhdGUmLCBKU1Rlc3RPYmomLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKTsKKworRW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqT2JqZWN0QXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQoreworICAgIHJldHVybiBCaW5k
aW5nQ2FsbGVyPEpTVGVzdE9iaj46OmF0dHJpYnV0ZTxqc1Rlc3RPYmpPYmplY3RBdHRyaWJ1dGVH
ZXR0ZXI+KHN0YXRlLCB0aGlzVmFsdWUsICJvYmplY3RBdHRyaWJ1dGUiKTsKK30KKworc3RhdGlj
IGlubGluZSBKU1ZhbHVlIGpzVGVzdE9iak9iamVjdEF0dHJpYnV0ZUdldHRlcihFeGVjU3RhdGUm
IHN0YXRlLCBKU1Rlc3RPYmomIHRoaXNPYmplY3QsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCit7
CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOworICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7
CisgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOworICAgIEpTVmFsdWUgcmVz
dWx0ID0gdG9KUzxJRExPYmplY3Q+KGltcGwub2JqZWN0QXR0cmlidXRlKCkpOworICAgIHJldHVy
biByZXN1bHQ7Cit9CisKIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RPYmpDb250ZW50RG9j
dW1lbnRHZXR0ZXIoRXhlY1N0YXRlJiwgSlNUZXN0T2JqJiwgVGhyb3dTY29wZSYgdGhyb3dTY29w
ZSk7CiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbnRlbnREb2N1bWVudChFeGVjU3RhdGUq
IHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKQEAgLTQ2MjMs
NiArNDY0NCwyNSBAQCBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0T2JqQW55QXR0cmliCiB9
CiAKIAorc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdE9iak9iamVjdEF0dHJpYnV0ZUZ1bmN0
aW9uKEV4ZWNTdGF0ZSYsIEpTVGVzdE9iaiYsIEpTVmFsdWUsIFRocm93U2NvcGUmKTsKKworYm9v
bCBzZXRKU1Rlc3RPYmpPYmplY3RBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCit7CisgICAgcmV0
dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0T2JqPjo6c2V0QXR0cmlidXRlPHNldEpTVGVzdE9iak9i
amVjdEF0dHJpYnV0ZUZ1bmN0aW9uPihzdGF0ZSwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJv
YmplY3RBdHRyaWJ1dGUiKTsKK30KKworc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdE9iak9i
amVjdEF0dHJpYnV0ZUZ1bmN0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdE9iaiYgdGhpc09i
amVjdCwgSlNWYWx1ZSB2YWx1ZSwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3sKKyAgICBVTlVT
RURfUEFSQU0oc3RhdGUpOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKKyAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CisgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNv
bnZlcnQ8SURMT2JqZWN0PihzdGF0ZSwgdmFsdWUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgZmFsc2UpOworICAgIGltcGwuc2V0T2JqZWN0QXR0cmlidXRlKFdURk1vdmUo
bmF0aXZlVmFsdWUpKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworCiBzdGF0aWMgaW5saW5lIGJv
b2wgc2V0SlNUZXN0T2JqTXV0YWJsZVBvaW50RnVuY3Rpb24oRXhlY1N0YXRlJiwgSlNUZXN0T2Jq
JiwgSlNWYWx1ZSwgVGhyb3dTY29wZSYpOwogCiBib29sIHNldEpTVGVzdE9iak11dGFibGVQb2lu
dChFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkKQEAgLTY0MzMsNiArNjQ3MywyNCBAQCBzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKIH0KIAorc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsT2JqZWN0Q2FsbGVyKEpTQzo6
RXhlY1N0YXRlKiwgSlNUZXN0T2JqKiwgSlNDOjpUaHJvd1Njb3BlJik7CisKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0
aW9uYWxPYmplY3QoRXhlY1N0YXRlKiBzdGF0ZSkKK3sKKyAgICByZXR1cm4gQmluZGluZ0NhbGxl
cjxKU1Rlc3RPYmo+OjpjYWxsT3BlcmF0aW9uPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aE9wdGlvbmFsT2JqZWN0Q2FsbGVyPihzdGF0ZSwgIm1ldGhvZFdpdGhPcHRpb25hbE9i
amVjdCIpOworfQorCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxPYmplY3RDYWxsZXIoSlNDOjpFeGVj
U3RhdGUqIHN0YXRlLCBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhy
b3dTY29wZSkKK3sKKyAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFVOVVNFRF9QQVJBTSh0
aHJvd1Njb3BlKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOworICAg
IGF1dG8gYSA9IHN0YXRlLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZCgpID8gc3RkOjpvcHRpb25h
bDxKU0M6OkpTT2JqZWN0Kj4oKSA6IGNvbnZlcnQ8SURMT2JqZWN0Pigqc3RhdGUsIHN0YXRlLT51
bmNoZWNrZWRBcmd1bWVudCgwKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBlbmNvZGVkSlNWYWx1ZSgpKTsKKyAgICBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbE9iamVjdChX
VEZNb3ZlKGEpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwor
fQorCiBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxOdWxsYWJsZVdyYXBwZXJDYWxsZXIoSlNDOjpFeGVj
U3RhdGUqLCBKU1Rlc3RPYmoqLCBKU0M6OlRocm93U2NvcGUmKTsKIAogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25h
bE51bGxhYmxlV3JhcHBlcihFeGVjU3RhdGUqIHN0YXRlKQpJbmRleDogU291cmNlL1dlYkNvcmUv
ZG9tL0V4Y2VwdGlvbkNvZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRXhj
ZXB0aW9uQ29kZS5oCShyZXZpc2lvbiAyMDkyNjEpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRXhj
ZXB0aW9uQ29kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw5IEBAIHVzaW5nIEV4Y2Vw
dGlvbkNvZGUgPSBpbnQ7CiAvLyBTb21lIG9mIHRoZXNlIGFyZSBjb25zaWRlcmVkIGhpc3Rvcmlj
YWwgc2luY2UgdGhleSBoYXZlIGJlZW4KIC8vIGNoYW5nZWQgb3IgcmVtb3ZlZCBmcm9tIHRoZSBz
cGVjaWZpY2F0aW9ucy4KIGVudW0geworICAgIC8vIFVzZWQgdG8gaW5kaWNhdGUgdG8gdGhlIGJp
bmRpbmdzIHRoYXQgYSBKUyBleGNlcHRpb24gd2FzIHRocm93biBiZWxvdyBhbmQgaXQgc2hvdWxk
IGJlIHByb3BvZ2F0ZWQuCisgICAgRXhpc3RpbmdFeGNlcHRpb25FcnJvciA9IDAsIAorCiAgICAg
SU5ERVhfU0laRV9FUlIgPSAxLAogICAgIEhJRVJBUkNIWV9SRVFVRVNUX0VSUiA9IDMsCiAgICAg
V1JPTkdfRE9DVU1FTlRfRVJSID0gNCwKQEAgLTcyLDYgKzc1LDkgQEAgZW51bSB7CiAgICAgT3Bl
cmF0aW9uRXJyb3IsCiAgICAgTm90QWxsb3dlZEVycm9yLAogCisgICAgLy8gTm9uLXN0YW5kYXJk
IGVycm9ycworICAgIFN0YWNrT3ZlcmZsb3dFcnJvciwKKwogICAgIC8vIFdlYklETCBleGNlcHRp
b24gdHlwZXMsIGhhbmRsZWQgYnkgdGhlIGJpbmRpbmcgbGF5ZXIuCiAgICAgLy8gRklYTUU6IEFk
ZCBHZW5lcmFsRXJyb3IsIEV2YWxFcnJvciwgZXRjLiB3aGVuIGltcGxlbWVudGVkIGluIHRoZSBi
aW5kaW5ncy4KICAgICBUeXBlRXJyb3IgPSAxMDUsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20v
TWVzc2FnZVBvcnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdl
UG9ydC5jcHAJKHJldmlzaW9uIDIwOTI2MSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdl
UG9ydC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDggKzUxLDEzIEBAIE1lc3NhZ2VQb3J0Ojp+
TWVzc2FnZVBvcnQoKQogICAgICAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmRlc3Ryb3ll
ZE1lc3NhZ2VQb3J0KCp0aGlzKTsKIH0KIAotRXhjZXB0aW9uT3I8dm9pZD4gTWVzc2FnZVBvcnQ6
OnBvc3RNZXNzYWdlKFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYgbWVzc2FnZSwgVmVj
dG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+JiYgcG9ydHMpCitFeGNlcHRpb25Pcjx2b2lkPiBNZXNz
YWdlUG9ydDo6cG9zdE1lc3NhZ2UoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUg
bWVzc2FnZVZhbHVlLCBWZWN0b3I8SlNDOjpTdHJvbmc8SlNDOjpKU09iamVjdD4+JiYgdHJhbnNm
ZXIpCiB7CisgICAgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+IHBvcnRzOworICAgIGF1dG8g
bWVzc2FnZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKHN0YXRlLCBtZXNzYWdlVmFs
dWUsIFdURk1vdmUodHJhbnNmZXIpLCBwb3J0cyk7CisgICAgaWYgKG1lc3NhZ2UuaGFzRXhjZXB0
aW9uKCkpCisgICAgICAgIHJldHVybiBtZXNzYWdlLnJlbGVhc2VFeGNlcHRpb24oKTsKKwogICAg
IGlmICghaXNFbnRhbmdsZWQoKSkKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICBBU1NFUlQobV9z
Y3JpcHRFeGVjdXRpb25Db250ZXh0KTsKQEAgLTY5LDcgKzc0LDcgQEAgRXhjZXB0aW9uT3I8dm9p
ZD4gTWVzc2FnZVBvcnQ6OnBvc3RNZXNzYQogICAgICAgICAgICAgcmV0dXJuIGRpc2VudGFuZ2xl
UmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKICAgICAgICAgY2hhbm5lbHMgPSBkaXNlbnRhbmds
ZVJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKICAgICB9Ci0gICAgbV9lbnRhbmdsZWRDaGFu
bmVsLT5wb3N0TWVzc2FnZVRvUmVtb3RlKFdURk1vdmUobWVzc2FnZSksIFdURk1vdmUoY2hhbm5l
bHMpKTsKKyAgICBtX2VudGFuZ2xlZENoYW5uZWwtPnBvc3RNZXNzYWdlVG9SZW1vdGUobWVzc2Fn
ZS5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgV1RGTW92ZShjaGFubmVscykpOwogICAgIHJldHVybiB7
IH07CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5oCShyZXZpc2lvbiAyMDkyNjEp
CisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuaAkod29ya2luZyBjb3B5KQpAQCAt
MzAsNiArMzAsMTIgQEAKICNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgogI2luY2x1ZGUgIk1lc3Nh
Z2VQb3J0Q2hhbm5lbC5oIgogCituYW1lc3BhY2UgSlNDIHsKK2NsYXNzIEV4ZWNTdGF0ZTsKK2Ns
YXNzIEpTT2JqZWN0OworY2xhc3MgSlNWYWx1ZTsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBGcmFtZTsKQEAgLTM5LDcgKzQ1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWY8
TWVzc2FnZVBvcnQ+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRp
b25Db250ZXh0KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IE1lc3NhZ2VQb3J0KHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQpKTsgfQogICAgIHZpcnR1YWwgfk1lc3NhZ2VQb3J0KCk7CiAKLSAgICBFeGNl
cHRpb25Pcjx2b2lkPiBwb3N0TWVzc2FnZShSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYm
IG1lc3NhZ2UsIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYmKTsKKyAgICBFeGNlcHRpb25P
cjx2b2lkPiBwb3N0TWVzc2FnZShKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSBtZXNzYWdl
LCBWZWN0b3I8SlNDOjpTdHJvbmc8SlNDOjpKU09iamVjdD4+JiYpOwogCiAgICAgdm9pZCBzdGFy
dCgpOwogICAgIHZvaWQgY2xvc2UoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdl
UG9ydC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0Lmlk
bAkocmV2aXNpb24gMjA5MjYxKQorKysgU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0Lmlk
bAkod29ya2luZyBjb3B5KQpAQCAtMzEsMTAgKzMxLDEwIEBACiAgICAgR2VuZXJhdGVJc1JlYWNo
YWJsZT1JbXBsLAogICAgIEpTQ3VzdG9tTWFya0Z1bmN0aW9uLAogXSBpbnRlcmZhY2UgTWVzc2Fn
ZVBvcnQgOiBFdmVudFRhcmdldCB7Ci0gICAgW0N1c3RvbSwgTWF5VGhyb3dFeGNlcHRpb25dIHZv
aWQgcG9zdE1lc3NhZ2UoYW55IG1lc3NhZ2UsIG9wdGlvbmFsIEFycmF5IG1lc3NhZ2VQb3J0cyk7
Ci0KKyAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGUsIE1heVRocm93RXhjZXB0aW9uXSB2b2lkIHBv
c3RNZXNzYWdlKGFueSBtZXNzYWdlLCBvcHRpb25hbCBzZXF1ZW5jZTxvYmplY3Q+IHRyYW5zZmVy
ID0gW10pOwogICAgIHZvaWQgc3RhcnQoKTsKICAgICB2b2lkIGNsb3NlKCk7CiAKKyAgICAvLyBl
dmVudCBoYW5kbGVycwogICAgIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb25tZXNzYWdlOwogfTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAJKHJldmlzaW9uIDIwOTI2MSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE2LDYg
KzExNiw3IEBACiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvTmV2
ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CisjaW5jbHVkZSA8d3RmL1Zhcmlh
bnQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogI2lmIEVOQUJMRShVU0VS
X01FU1NBR0VfSEFORExFUlMpCkBAIC05MTksMTIgKzkyMCwxMiBAQCBFeGNlcHRpb25PcjxTdG9y
YWdlKj4gRE9NV2luZG93Ojpsb2NhbFN0CiAgICAgcmV0dXJuIG1fbG9jYWxTdG9yYWdlLmdldCgp
OwogfQogCi1FeGNlcHRpb25Pcjx2b2lkPiBET01XaW5kb3c6OnBvc3RNZXNzYWdlKFJlZjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+JiYgbWVzc2FnZSwgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+
JiYgcG9ydHMsIGNvbnN0IFN0cmluZyYgdGFyZ2V0T3JpZ2luLCBET01XaW5kb3cmIHNvdXJjZSkK
K0V4Y2VwdGlvbk9yPHZvaWQ+IERPTVdpbmRvdzo6cG9zdE1lc3NhZ2UoSlNDOjpFeGVjU3RhdGUm
IHN0YXRlLCBET01XaW5kb3cmIGNhbGxlcldpbmRvdywgSlNDOjpKU1ZhbHVlIG1lc3NhZ2VWYWx1
ZSwgY29uc3QgU3RyaW5nJiB0YXJnZXRPcmlnaW4sIFZlY3RvcjxKU0M6OlN0cm9uZzxKU0M6OkpT
T2JqZWN0Pj4mJiB0cmFuc2ZlcikKIHsKICAgICBpZiAoIWlzQ3VycmVudGx5RGlzcGxheWVkSW5G
cmFtZSgpKQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgRG9jdW1lbnQqIHNvdXJjZURvY3Vt
ZW50ID0gc291cmNlLmRvY3VtZW50KCk7CisgICAgRG9jdW1lbnQqIHNvdXJjZURvY3VtZW50ID0g
Y2FsbGVyV2luZG93LmRvY3VtZW50KCk7CiAKICAgICAvLyBDb21wdXRlIHRoZSB0YXJnZXQgb3Jp
Z2luLiAgV2UgbmVlZCB0byBkbyB0aGlzIHN5bmNocm9ub3VzbHkgaW4gb3JkZXIKICAgICAvLyB0
byBnZW5lcmF0ZSB0aGUgU1lOVEFYX0VSUiBleGNlcHRpb24gY29ycmVjdGx5LgpAQCAtOTQxLDYg
Kzk0MiwxMSBAQCBFeGNlcHRpb25Pcjx2b2lkPiBET01XaW5kb3c6OnBvc3RNZXNzYWdlCiAgICAg
ICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU1lOVEFYX0VSUiB9OwogICAgIH0KIAorICAgIFZl
Y3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiBwb3J0czsKKyAgICBhdXRvIG1lc3NhZ2UgPSBTZXJp
YWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShzdGF0ZSwgbWVzc2FnZVZhbHVlLCBXVEZNb3ZlKHRy
YW5zZmVyKSwgcG9ydHMpOworICAgIGlmIChtZXNzYWdlLmhhc0V4Y2VwdGlvbigpKQorICAgICAg
ICByZXR1cm4gbWVzc2FnZS5yZWxlYXNlRXhjZXB0aW9uKCk7CisKICAgICBhdXRvIGNoYW5uZWxz
ID0gTWVzc2FnZVBvcnQ6OmRpc2VudGFuZ2xlUG9ydHMoV1RGTW92ZShwb3J0cykpOwogICAgIGlm
IChjaGFubmVscy5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGNoYW5uZWxzLnJlbGVh
c2VFeGNlcHRpb24oKTsKQEAgLTk1Nyw3ICs5NjMsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBET01X
aW5kb3c6OnBvc3RNZXNzYWdlCiAgICAgICAgIHN0YWNrVHJhY2UgPSBjcmVhdGVTY3JpcHRDYWxs
U3RhY2soSlNNYWluVGhyZWFkRXhlY1N0YXRlOjpjdXJyZW50U3RhdGUoKSwgU2NyaXB0Q2FsbFN0
YWNrOjptYXhDYWxsU3RhY2tTaXplVG9DYXB0dXJlKTsKIAogICAgIC8vIFNjaGVkdWxlIHRoZSBt
ZXNzYWdlLgotICAgIGF1dG8qIHRpbWVyID0gbmV3IFBvc3RNZXNzYWdlVGltZXIoKnRoaXMsIFdU
Rk1vdmUobWVzc2FnZSksIHNvdXJjZU9yaWdpbiwgc291cmNlLCBjaGFubmVscy5yZWxlYXNlUmV0
dXJuVmFsdWUoKSwgV1RGTW92ZSh0YXJnZXQpLCBXVEZNb3ZlKHN0YWNrVHJhY2UpKTsKKyAgICBh
dXRvKiB0aW1lciA9IG5ldyBQb3N0TWVzc2FnZVRpbWVyKCp0aGlzLCBtZXNzYWdlLnJlbGVhc2VS
ZXR1cm5WYWx1ZSgpLCBzb3VyY2VPcmlnaW4sIGNhbGxlcldpbmRvdywgY2hhbm5lbHMucmVsZWFz
ZVJldHVyblZhbHVlKCksIFdURk1vdmUodGFyZ2V0KSwgV1RGTW92ZShzdGFja1RyYWNlKSk7CiAg
ICAgdGltZXItPnN0YXJ0T25lU2hvdCgwKTsKIAogICAgIHJldHVybiB7IH07CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvRE9NV2luZG93LmgJKHJldmlzaW9uIDIwOTI2MSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvRE9NV2luZG93LmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRl
ICJVUkwuaCIKICNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8
d3RmL09wdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KQEAgLTQ0LDYgKzQ1LDEz
IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogY2xhc3MgU2NyaXB0Q2FsbFN0YWNrOwogfQogCitu
YW1lc3BhY2UgSlNDIHsKK2NsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNzIEpTT2JqZWN0OworY2xhc3Mg
SlNWYWx1ZTsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBTdHJvbmc7Cit9CisKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQmFyUHJvcDsKQEAgLTIzNSw3ICsyNDMsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBwcmludEVycm9yTWVzc2FnZShjb25zdCBTdHJpbmcmKTsKICAgICBTdHJp
bmcgY3Jvc3NEb21haW5BY2Nlc3NFcnJvck1lc3NhZ2UoY29uc3QgRE9NV2luZG93JiBhY3RpdmVX
aW5kb3cpOwogCi0gICAgRXhjZXB0aW9uT3I8dm9pZD4gcG9zdE1lc3NhZ2UoUmVmPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4mJiBtZXNzYWdlLCBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4mJiwg
Y29uc3QgU3RyaW5nJiB0YXJnZXRPcmlnaW4sIERPTVdpbmRvdyYgc291cmNlKTsKKyAgICBFeGNl
cHRpb25Pcjx2b2lkPiBwb3N0TWVzc2FnZShKU0M6OkV4ZWNTdGF0ZSYsIERPTVdpbmRvdyYgY2Fs
bGVyV2luZG93LCBKU0M6OkpTVmFsdWUgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiB0YXJnZXRPcmln
aW4sIFZlY3RvcjxKU0M6OlN0cm9uZzxKU0M6OkpTT2JqZWN0Pj4mJik7CiAgICAgdm9pZCBwb3N0
TWVzc2FnZVRpbWVyRmlyZWQoUG9zdE1lc3NhZ2VUaW1lciYpOwogICAgIHZvaWQgZGlzcGF0Y2hN
ZXNzYWdlRXZlbnRXaXRoT3JpZ2luQ2hlY2soU2VjdXJpdHlPcmlnaW4qIGludGVuZGVkVGFyZ2V0
T3JpZ2luLCBFdmVudCYsIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpTY3JpcHRDYWxsU3RhY2s+KTsK
IApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAkocmV2aXNpb24gMjA5MjYxKQorKysg
U291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xNTIs
NyArMTUyLDcgQEAKICAgICAvLyAwIHdoZW4gc3RyYWlnaHQgdXA7IC05MCB3aGVuIHJvdGF0ZWQg
OTAgZGVncmVlcyBjbG9ja3dpc2U7IDkwIGNvdW50ZXIgY2xvY2t3aXNlLgogICAgIFtDb25kaXRp
b25hbD1PUklFTlRBVElPTl9FVkVOVFNdIHJlYWRvbmx5IGF0dHJpYnV0ZSBsb25nIG9yaWVudGF0
aW9uOwogCi0gICAgW0RvTm90Q2hlY2tTZWN1cml0eSwgQ3VzdG9tLCBNYXlUaHJvd0V4Y2VwdGlv
biwgRm9yd2FyZERlY2xhcmVJbkhlYWRlcl0gdm9pZCBwb3N0TWVzc2FnZShTZXJpYWxpemVkU2Ny
aXB0VmFsdWUgbWVzc2FnZSwgVVNWU3RyaW5nIHRhcmdldE9yaWdpbiwgb3B0aW9uYWwgQXJyYXkg
bWVzc2FnZVBvcnRzKTsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGUmQ2FsbGVyV2luZG93LCBE
b05vdENoZWNrU2VjdXJpdHksIEZvcndhcmREZWNsYXJlSW5IZWFkZXIsIE1heVRocm93RXhjZXB0
aW9uXSB2b2lkIHBvc3RNZXNzYWdlKGFueSBtZXNzYWdlLCBVU1ZTdHJpbmcgdGFyZ2V0T3JpZ2lu
LCBvcHRpb25hbCBzZXF1ZW5jZTxvYmplY3Q+IHRyYW5zZmVyID0gW10pOwogCiAgICAgW0NvbmRp
dGlvbmFsPVdFQl9USU1JTkcsIFJlcGxhY2VhYmxlXSByZWFkb25seSBhdHRyaWJ1dGUgUGVyZm9y
bWFuY2UgcGVyZm9ybWFuY2U7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNh
dGVkV29ya2VyR2xvYmFsU2NvcGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuY3BwCShyZXZpc2lvbiAyMDkyNjEpCisr
KyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNjMsMTMgKzYzLDE4IEBAIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIERl
ZGljYXRlZFdvcmtlckdsb2IKICAgICByZXR1cm4gRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVF
dmVudFRhcmdldEludGVyZmFjZVR5cGU7CiB9CiAKLUV4Y2VwdGlvbk9yPHZvaWQ+IERlZGljYXRl
ZFdvcmtlckdsb2JhbFNjb3BlOjpwb3N0TWVzc2FnZShSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiYmIG1lc3NhZ2UsIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYmIHBvcnRzKQorRXhj
ZXB0aW9uT3I8dm9pZD4gRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGU6OnBvc3RNZXNzYWdlKEpT
Qzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIG1lc3NhZ2VWYWx1ZSwgVmVjdG9yPEpT
Qzo6U3Ryb25nPEpTQzo6SlNPYmplY3Q+PiYmIHRyYW5zZmVyKQogeworICAgIFZlY3RvcjxSZWZQ
dHI8TWVzc2FnZVBvcnQ+PiBwb3J0czsKKyAgICBhdXRvIG1lc3NhZ2UgPSBTZXJpYWxpemVkU2Ny
aXB0VmFsdWU6OmNyZWF0ZShzdGF0ZSwgbWVzc2FnZVZhbHVlLCBXVEZNb3ZlKHRyYW5zZmVyKSwg
cG9ydHMpOworICAgIGlmIChtZXNzYWdlLmhhc0V4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4g
bWVzc2FnZS5yZWxlYXNlRXhjZXB0aW9uKCk7CisKICAgICAvLyBEaXNlbnRhbmdsZSB0aGUgcG9y
dCBpbiBwcmVwYXJhdGlvbiBmb3Igc2VuZGluZyBpdCB0byB0aGUgcmVtb3RlIGNvbnRleHQuCiAg
ICAgYXV0byBjaGFubmVscyA9IE1lc3NhZ2VQb3J0OjpkaXNlbnRhbmdsZVBvcnRzKFdURk1vdmUo
cG9ydHMpKTsKICAgICBpZiAoY2hhbm5lbHMuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVy
biBjaGFubmVscy5yZWxlYXNlRXhjZXB0aW9uKCk7Ci0gICAgdGhyZWFkKCkud29ya2VyT2JqZWN0
UHJveHkoKS5wb3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0KFdURk1vdmUobWVzc2FnZSksIGNoYW5u
ZWxzLnJlbGVhc2VSZXR1cm5WYWx1ZSgpKTsKKyAgICB0aHJlYWQoKS53b3JrZXJPYmplY3RQcm94
eSgpLnBvc3RNZXNzYWdlVG9Xb3JrZXJPYmplY3QobWVzc2FnZS5yZWxlYXNlUmV0dXJuVmFsdWUo
KSwgY2hhbm5lbHMucmVsZWFzZVJldHVyblZhbHVlKCkpOwogICAgIHJldHVybiB7IH07CiB9CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckds
b2JhbFNjb3BlLmgJKHJldmlzaW9uIDIwOTI2MSkKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
RGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMs
MTIgQEAKIAogI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlLmgiCiAKK25hbWVzcGFjZSBKU0Mg
eworY2xhc3MgRXhlY1N0YXRlOworY2xhc3MgSlNPYmplY3Q7CitjbGFzcyBKU1ZhbHVlOworfQor
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3Bv
bnNlSGVhZGVyczsKQEAgLTQ1LDcgKzUxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWY8RGVk
aWNhdGVkV29ya2VyR2xvYmFsU2NvcGU+IGNyZWF0ZShjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcm
IGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBEZWRpY2F0ZWRXb3JrZXJUaHJl
YWQmLCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmLCBib29sIHNo
b3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSwgUmVmUHRyPFNlY3VyaXR5
T3JpZ2luPiYmIHRvcE9yaWdpbiwgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkqLCBTb2Nr
ZXRQcm92aWRlciopOwogICAgIHZpcnR1YWwgfkRlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlKCk7
CiAKLSAgICBFeGNlcHRpb25Pcjx2b2lkPiBwb3N0TWVzc2FnZShSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiYmLCBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4mJik7CisgICAgRXhjZXB0
aW9uT3I8dm9pZD4gcG9zdE1lc3NhZ2UoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUgbWVz
c2FnZSwgVmVjdG9yPEpTQzo6U3Ryb25nPEpTQzo6SlNPYmplY3Q+PiYmKTsKIAogICAgIERlZGlj
YXRlZFdvcmtlclRocmVhZCYgdGhyZWFkKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaWRsCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaWRsCShyZXZpc2lvbiAy
MDkyNjEpCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckdsb2JhbFNj
b3BlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQAogICAgIEdsb2JhbD0oV29y
a2VyLERlZGljYXRlZFdvcmtlciksCiAgICAgSlNHZW5lcmF0ZVRvTmF0aXZlT2JqZWN0LAogXSBp
bnRlcmZhY2UgRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUgOiBXb3JrZXJHbG9iYWxTY29wZSB7
Ci0gICAgW0N1c3RvbSwgTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgcG9zdE1lc3NhZ2UoYW55IG1l
c3NhZ2UsIG9wdGlvbmFsIEFycmF5IG1lc3NhZ2VQb3J0cyk7CisgICAgW0NhbGxXaXRoPVNjcmlw
dFN0YXRlLCBNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBwb3N0TWVzc2FnZShhbnkgbWVzc2FnZSwg
b3B0aW9uYWwgc2VxdWVuY2U8b2JqZWN0PiB0cmFuc2ZlciA9IFtdKTsKIAogICAgIGF0dHJpYnV0
ZSBFdmVudEhhbmRsZXIgb25tZXNzYWdlOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ci5jcHAJKHJldmlzaW9uIDIwOTI2MSkKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDEzICsxMDEsMTggQEAgV29ya2VyOjp+V29ya2Vy
KCkKICAgICBtX2NvbnRleHRQcm94eS0+d29ya2VyT2JqZWN0RGVzdHJveWVkKCk7CiB9CiAKLUV4
Y2VwdGlvbk9yPHZvaWQ+IFdvcmtlcjo6cG9zdE1lc3NhZ2UoUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4mJiBtZXNzYWdlLCBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4mJiBwb3J0cykK
K0V4Y2VwdGlvbk9yPHZvaWQ+IFdvcmtlcjo6cG9zdE1lc3NhZ2UoSlNDOjpFeGVjU3RhdGUmIHN0
YXRlLCBKU0M6OkpTVmFsdWUgbWVzc2FnZVZhbHVlLCBWZWN0b3I8SlNDOjpTdHJvbmc8SlNDOjpK
U09iamVjdD4+JiYgdHJhbnNmZXIpCiB7CisgICAgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+
IHBvcnRzOworICAgIGF1dG8gbWVzc2FnZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRl
KHN0YXRlLCBtZXNzYWdlVmFsdWUsIFdURk1vdmUodHJhbnNmZXIpLCBwb3J0cyk7CisgICAgaWYg
KG1lc3NhZ2UuaGFzRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBtZXNzYWdlLnJlbGVhc2VF
eGNlcHRpb24oKTsKKwogICAgIC8vIERpc2VudGFuZ2xlIHRoZSBwb3J0IGluIHByZXBhcmF0aW9u
IGZvciBzZW5kaW5nIGl0IHRvIHRoZSByZW1vdGUgY29udGV4dC4KICAgICBhdXRvIGNoYW5uZWxz
ID0gTWVzc2FnZVBvcnQ6OmRpc2VudGFuZ2xlUG9ydHMoV1RGTW92ZShwb3J0cykpOwogICAgIGlm
IChjaGFubmVscy5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGNoYW5uZWxzLnJlbGVh
c2VFeGNlcHRpb24oKTsKLSAgICBtX2NvbnRleHRQcm94eS0+cG9zdE1lc3NhZ2VUb1dvcmtlckds
b2JhbFNjb3BlKFdURk1vdmUobWVzc2FnZSksIGNoYW5uZWxzLnJlbGVhc2VSZXR1cm5WYWx1ZSgp
KTsKKyAgICBtX2NvbnRleHRQcm94eS0+cG9zdE1lc3NhZ2VUb1dvcmtlckdsb2JhbFNjb3BlKG1l
c3NhZ2UucmVsZWFzZVJldHVyblZhbHVlKCksIGNoYW5uZWxzLnJlbGVhc2VSZXR1cm5WYWx1ZSgp
KTsKICAgICByZXR1cm4geyB9OwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmgJKHJl
dmlzaW9uIDIwOTI2MSkKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTM1LDYgKzM1LDEyIEBACiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nSGFzaC5oPgogCituYW1lc3BhY2UgSlNDIHsK
K2NsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNzIEpTT2JqZWN0OworY2xhc3MgSlNWYWx1ZTsKK30KKwog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwpAQCAt
NDYsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxXb3JrZXI+
PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IFN0cmluZyYgdXJsLCBKU0M6
OlJ1bnRpbWVGbGFncyk7CiAgICAgdmlydHVhbCB+V29ya2VyKCk7CiAKLSAgICBFeGNlcHRpb25P
cjx2b2lkPiBwb3N0TWVzc2FnZShSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmIG1lc3Nh
Z2UsIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYmKTsKKyAgICBFeGNlcHRpb25Pcjx2b2lk
PiBwb3N0TWVzc2FnZShKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSBtZXNzYWdlLCBWZWN0
b3I8SlNDOjpTdHJvbmc8SlNDOjpKU09iamVjdD4+JiYpOwogCiAgICAgdm9pZCB0ZXJtaW5hdGUo
KTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuaWRsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmlkbAkocmV2aXNpb24gMjA5MjYxKQor
KysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0y
OCwxMSArMjgsMTAgQEAKICAgICBBY3RpdmVET01PYmplY3QsCiAgICAgQ3VzdG9tQ29uc3RydWN0
b3IoVVNWU3RyaW5nIHNjcmlwdFVybCksCiBdIGludGVyZmFjZSBXb3JrZXIgOiBFdmVudFRhcmdl
dCB7Ci0gICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbm1lc3NhZ2U7Ci0KLSAgICBbQ3VzdG9t
LCBNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBwb3N0TWVzc2FnZShTZXJpYWxpemVkU2NyaXB0VmFs
dWUgbWVzc2FnZSwgb3B0aW9uYWwgQXJyYXkgbWVzc2FnZVBvcnRzKTsKLQogICAgIHZvaWQgdGVy
bWluYXRlKCk7CisKKyAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGUsIE1heVRocm93RXhjZXB0aW9u
XSB2b2lkIHBvc3RNZXNzYWdlKGFueSBtZXNzYWdlLCBvcHRpb25hbCBzZXF1ZW5jZTxvYmplY3Q+
IHRyYW5zZmVyID0gW10pOworICAgIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb25tZXNzYWdlOwog
fTsKIAogV29ya2VyIGltcGxlbWVudHMgQWJzdHJhY3RXb3JrZXI7CkluZGV4OiBMYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lv
biAyMDkyNjEpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwyNCBAQAorMjAxNi0xMi0wMiAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisg
ICAgICAgIG9wdGlvbmFsIHNlcXVlbmNlIHZhbHVlcyBub3QgaGFuZGxlZCBjb3JyZWN0bHkgYnkg
YmluZGluZyBnZW5lcmF0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE0MjU2MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvcmVzb3VyY2VzL3R5cGVkLWFycmF5LXdvcmtl
ci5qczoKKyAgICAgICAgKiBmYXN0L2RvbS9XaW5kb3cvd2luZG93LXBvc3RtZXNzYWdlLWFyZ3Mt
ZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZG9tL1dpbmRvdy93aW5kb3ctcG9zdG1lc3Nh
Z2UtYXJncy5odG1sOgorICAgICAgICAqIGZhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1kZWxldGVk
LWRvY3VtZW50Lmh0bWw6CisgICAgICAgICogZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0LWRlbGV0
ZWQtZnJhbWUuaHRtbDoKKyAgICAgICAgKiBmYXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQtaW5hY3Rp
dmUtZG9jdW1lbnQuaHRtbDoKKyAgICAgICAgKiBmYXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQtbXVs
dGktZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC5odG1s
OgorICAgICAgICAqIGZhc3Qvd29ya2Vycy93b3JrZXItY29udGV4dC1tdWx0aS1wb3J0LWV4cGVj
dGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L3dvcmtlcnMvd29ya2VyLW11bHRpLXBvcnQtZXhwZWN0
ZWQudHh0OgorICAgICAgICAqIHdlYmdsLzEuMC4yL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlL3R5cGVkYXJyYXlzL3Jlc291cmNlcy90eXBlZC1hcnJheS13b3JrZXIuanM6
CisgICAgICAgICogd2ViZ2wvMS4wLjMvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UvdHlwZWRhcnJheXMvcmVzb3VyY2VzL3R5cGVkLWFycmF5LXdvcmtlci5qczoKKyAgICAg
ICAgVXBkYXRlIGZvciBuZXcgZXhjZXB0aW9ucyBhbmQgc3RyaWN0ZXIgZW5mb3JjZW1lbnQgb2Yg
dGhlIHBvc3RNZXNzYWdlIHNpZ25hdHVyZS4gCisKIDIwMTYtMTItMDIgIEpvaG4gV2lsYW5kZXIg
IDx3aWxhbmRlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmVxdWlyZSBwcmVmbGlnaHQgZm9yIG5v
bi1zdGFuZGFyZCBDT1JTLXNhZmVsaXN0ZWQgcmVxdWVzdCBoZWFkZXJzIEFjY2VwdCwgQWNjZXB0
LUxhbmd1YWdlLCBhbmQgQ29udGVudC1MYW5ndWFnZQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9j
YW52YXMvd2ViZ2wvcmVzb3VyY2VzL3R5cGVkLWFycmF5LXdvcmtlci5qcwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9yZXNvdXJjZXMvdHlwZWQtYXJyYXktd29y
a2VyLmpzCShyZXZpc2lvbiAyMDkyNjEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJn
bC9yZXNvdXJjZXMvdHlwZWQtYXJyYXktd29ya2VyLmpzCSh3b3JraW5nIGNvcHkpCkBAIC03NCw3
ICs3NCw3IEBAIG9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2ZW50KSB7CiAgICAgfSBlbHNlIHsKICAg
ICAgIHZhbHVlVG9TZW5kID0gdmlldy5idWZmZXI7CiAgICAgfQotICAgIHZhciB0cmFuc2ZlcmFi
bGVzVG9TZW5kID0gbnVsbDsKKyAgICB2YXIgdHJhbnNmZXJhYmxlc1RvU2VuZCA9IFtdOwogICAg
IGlmIChtZXNzYWdlLmNvbW1hbmQgPT0gJ3RyYW5zZmVyJyB8fAogICAgICAgICBtZXNzYWdlLmNv
bW1hbmQgPT0gJ3RyYW5zZmVyQnVmZmVyJykgewogICAgICAgdHJhbnNmZXJhYmxlc1RvU2VuZCA9
IFsgdmlldy5idWZmZXIgXTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5k
b3ctcG9zdG1lc3NhZ2UtYXJncy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wb3N0bWVzc2FnZS1hcmdzLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMjA5MjYxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1w
b3N0bWVzc2FnZS1hcmdzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMiwxMyArMiwx
MyBAQCBUZXN0IHRoYXQgdGhlIHNlY29uZCBhcmd1bWVudCBvZiB3aW5kb3cuCiAKIFBBU1M6IFBv
c3RpbmcgbWVzc2FnZSAoJzEnLCAxKTogdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVmFsdWUg
aXMgbm90IGEgc2VxdWVuY2UKIFBBU1M6IFBvc3RpbmcgbWVzc2FnZSAoJzInLCBjKTogdGhyZXcg
ZXhjZXB0aW9uIFR5cGVFcnJvcjogVmFsdWUgaXMgbm90IGEgc2VxdWVuY2UKLVBBU1M6IFBvc3Rp
bmcgbWVzc2FnZSAoJzMnLCBbb2JqZWN0IE9iamVjdF0pOiB0aHJldyBleGNlcHRpb24gVHlwZUVy
cm9yOiBWYWx1ZSBpcyBub3QgYSBzZXF1ZW5jZQotUEFTUzogUG9zdGluZyBtZXNzYWdlICgnNCcs
IFtvYmplY3QgV2luZG93XSkgZGlkIG5vdCB0aHJvdyBhbiBleGNlcHRpb24KLVBBU1M6IFBvc3Rp
bmcgbWVzc2FnZSAoJzRhJywgKikgZGlkIG5vdCB0aHJvdyBhbiBleGNlcHRpb24KK1BBU1M6IFBv
c3RpbmcgbWVzc2FnZSAoJzMnLCBbb2JqZWN0IE9iamVjdF0pOiB0aHJldyBleGNlcHRpb24gVHlw
ZUVycm9yOiBUeXBlIGVycm9yCitQQVNTOiBQb3N0aW5nIG1lc3NhZ2UgKCc0JywgW29iamVjdCBX
aW5kb3ddKTogdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvcgorUEFTUzogUG9z
dGluZyBtZXNzYWdlICgnNGEnLCAqKTogdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVmFsdWUg
aXMgbm90IGEgc2VxdWVuY2UKIFBBU1M6IFBvc3RpbmcgbWVzc2FnZSAoJzUnLCBudWxsKSBkaWQg
bm90IHRocm93IGFuIGV4Y2VwdGlvbgogUEFTUzogUG9zdGluZyBtZXNzYWdlICgnNicsIHVuZGVm
aW5lZCkgZGlkIG5vdCB0aHJvdyBhbiBleGNlcHRpb24KIFBBU1M6IFBvc3RpbmcgbWVzc2FnZSAo
JzcnLCBbb2JqZWN0IE1lc3NhZ2VQb3J0XSxbb2JqZWN0IE1lc3NhZ2VQb3J0XSkgZGlkIG5vdCB0
aHJvdyBhbiBleGNlcHRpb24KLVBBU1M6IFBvc3RpbmcgbWVzc2FnZSAoJzdhJywgKikgZGlkIG5v
dCB0aHJvdyBhbiBleGNlcHRpb24KK1BBU1M6IFBvc3RpbmcgbWVzc2FnZSAoJzdhJywgKik6IHRo
cmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFZhbHVlIGlzIG5vdCBhIHNlcXVlbmNlCiBQQVNTOiBQ
b3N0aW5nIG1lc3NhZ2UgKCc3JywgW29iamVjdCBNZXNzYWdlUG9ydF0sW29iamVjdCBNZXNzYWdl
UG9ydF0pIGRpZCBub3QgdGhyb3cgYW4gZXhjZXB0aW9uCiBQQVNTOiBQb3N0aW5nIG1lc3NhZ2Ug
KCcyMTQ3NDgzNjQ4JywgbnVsbCkgZGlkIG5vdCB0aHJvdyBhbiBleGNlcHRpb24KIFBBU1M6IFBv
c3RpbmcgbWVzc2FnZSAoJ1tvYmplY3QgTWVzc2FnZVBvcnRdJywgW29iamVjdCBNZXNzYWdlUG9y
dF0sW29iamVjdCBNZXNzYWdlUG9ydF0pIGRpZCBub3QgdGhyb3cgYW4gZXhjZXB0aW9uCkBAIC0x
OCwxMiArMTgsOSBAQCBQQVNTOiBQb3N0aW5nIG1lc3NhZ2UgKCdbb2JqZWN0IEFycmF5QnVmCiBQ
QVNTOiBhcnJheUJ1ZmZlciBuZXV0ZXJlZAogUEFTUzogdmlldyBuZXV0ZXJlZAogUEFTUzogUG9z
dGluZyBtZXNzYWdlICgnZG9uZScsIHVuZGVmaW5lZCkgZGlkIG5vdCB0aHJvdyBhbiBleGNlcHRp
b24KLVJlY2VpdmVkIG1lc3NhZ2UgJzQnIHdpdGggMCBwb3J0cy4KLVJlY2VpdmVkIG1lc3NhZ2Ug
JzRhJyB3aXRoIDAgcG9ydHMuCiBSZWNlaXZlZCBtZXNzYWdlICc1JyB3aXRoIDAgcG9ydHMuCiBS
ZWNlaXZlZCBtZXNzYWdlICc2JyB3aXRoIDAgcG9ydHMuCiBSZWNlaXZlZCBtZXNzYWdlICc3JyB3
aXRoIDIgcG9ydHMuCi1SZWNlaXZlZCBtZXNzYWdlICc3YScgd2l0aCAyIHBvcnRzLgogUmVjZWl2
ZWQgbWVzc2FnZSAnNycgd2l0aCAyIHBvcnRzLgogUmVjZWl2ZWQgbWVzc2FnZSAnMjE0NzQ4MzY0
OCcgd2l0aCAwIHBvcnRzLgogUmVjZWl2ZWQgbWVzc2FnZSAnW29iamVjdCBNZXNzYWdlUG9ydF0n
IHdpdGggMiBwb3J0cy4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ct
cG9zdG1lc3NhZ2UtYXJncy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9t
L1dpbmRvdy93aW5kb3ctcG9zdG1lc3NhZ2UtYXJncy5odG1sCShyZXZpc2lvbiAyMDkyNjEpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXBvc3RtZXNzYWdlLWFyZ3MuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtNDQsMTQgKzQ0LDE0IEBAIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJkZXNjcmlwdGlvbiIpLmkKIHRyeVBvc3RNZXNzYWdlKCcxJywgJyonLCAxLCB0cnVlKTsK
IHRyeVBvc3RNZXNzYWdlKCcyJywgJyonLCAnYycsIHRydWUpOwogdHJ5UG9zdE1lc3NhZ2UoJzMn
LCAnKicsIHsgeDogMSB9LCB0cnVlKTsKLXRyeVBvc3RNZXNzYWdlKCc0JywgJyonLCB3aW5kb3cp
OyAgLy8gUGFzc2VzIGJlY2F1c2Ugd2luZG93IGhhcyBhICJsZW5ndGgiIGF0dHJpYnV0ZSBvZiB2
YWx1ZSAnMCcsIHNvIGl0IGxvb2tzIGxpa2UgYW4gYXJyYXkKLXRyeVBvc3RNZXNzYWdlKCc0YScs
IHdpbmRvdywgJyonKTsgLy8gTGVnYWN5IGFyZ3VtZW50IG9yZGVyLgordHJ5UG9zdE1lc3NhZ2Uo
JzQnLCAnKicsIHdpbmRvdywgdHJ1ZSk7Cit0cnlQb3N0TWVzc2FnZSgnNGEnLCB3aW5kb3csICcq
JywgdHJ1ZSk7IC8vIExlZ2FjeSBhcmd1bWVudCBvcmRlci4KIHRyeVBvc3RNZXNzYWdlKCc1Jywg
JyonLCBudWxsKTsKIHRyeVBvc3RNZXNzYWdlKCc2JywgJyonLCB2b2lkIDApOwogdmFyIGNoYW5u
ZWwxID0gbmV3IE1lc3NhZ2VDaGFubmVsOwogdHJ5UG9zdE1lc3NhZ2VGdW5jdGlvbih3aW5kb3cu
cG9zdE1lc3NhZ2UsICc3JywgJyonLCBbY2hhbm5lbDEucG9ydDEsIGNoYW5uZWwxLnBvcnQyXSk7
CiB2YXIgY2hhbm5lbDFhID0gbmV3IE1lc3NhZ2VDaGFubmVsOwotdHJ5UG9zdE1lc3NhZ2VGdW5j
dGlvbih3aW5kb3cucG9zdE1lc3NhZ2UsICc3YScsIFtjaGFubmVsMWEucG9ydDEsIGNoYW5uZWwx
YS5wb3J0Ml0sICcqJyk7Cit0cnlQb3N0TWVzc2FnZUZ1bmN0aW9uKHdpbmRvdy5wb3N0TWVzc2Fn
ZSwgJzdhJywgW2NoYW5uZWwxYS5wb3J0MSwgY2hhbm5lbDFhLnBvcnQyXSwgJyonLCB0cnVlKTsK
IHZhciBjaGFubmVsMiA9IG5ldyBNZXNzYWdlQ2hhbm5lbDsKIHRyeVBvc3RNZXNzYWdlRnVuY3Rp
b24od2luZG93LnBvc3RNZXNzYWdlLCAnNycsICcqJywgW2NoYW5uZWwyLnBvcnQxLCBjaGFubmVs
Mi5wb3J0Ml0pOwogdmFyIGNoYW5uZWwzID0gbmV3IE1lc3NhZ2VDaGFubmVsOwpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0LWRlbGV0ZWQtZG9jdW1lbnQuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQtZGVsZXRl
ZC1kb2N1bWVudC5odG1sCShyZXZpc2lvbiAyMDkyNjEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2
ZW50cy9tZXNzYWdlLXBvcnQtZGVsZXRlZC1kb2N1bWVudC5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC0yNyw3ICsyNyw3IEBAIHZhciBtYWluUG9ydDsKIGZ1bmN0aW9uIHRlc3QoKQogewogICAgIHZh
ciBjaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFubmVsOwotICAgIHdpbmRvdy5mcmFtZXNbMF0ucG9z
dE1lc3NhZ2UoIm1zZyIsIFtjaGFubmVsLnBvcnQyXSwgIioiKTsKKyAgICB3aW5kb3cuZnJhbWVz
WzBdLnBvc3RNZXNzYWdlKCJtc2ciLCAiKiIsIFtjaGFubmVsLnBvcnQyXSk7CiAgICAgbWFpblBv
cnQgPSBjaGFubmVsLnBvcnQxOwogICAgIG1haW5Qb3J0LnN0YXJ0KCk7CiAKSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1kZWxldGVkLWZyYW1lLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0LWRlbGV0ZWQtZnJh
bWUuaHRtbAkocmV2aXNpb24gMjA5MjYxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVz
c2FnZS1wb3J0LWRlbGV0ZWQtZnJhbWUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjks
NyBAQCBmdW5jdGlvbiB0ZXN0KCkKIHsKICAgICBmcmFtZURvYyA9IHdpbmRvdy5mcmFtZXNbMF0u
ZG9jdW1lbnQ7CiAgICAgdmFyIGNoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWw7Ci0gICAgd2lu
ZG93LmZyYW1lc1swXS5wb3N0TWVzc2FnZSgibXNnIiwgW2NoYW5uZWwucG9ydDJdLCAiKiIpOwor
ICAgIHdpbmRvdy5mcmFtZXNbMF0ucG9zdE1lc3NhZ2UoIm1zZyIsICIqIiwgW2NoYW5uZWwucG9y
dDJdKTsKICAgICBtYWluUG9ydCA9IGNoYW5uZWwucG9ydDE7CiAgICAgbWFpblBvcnQuc3RhcnQo
KTsKIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0LWluYWN0aXZl
LWRvY3VtZW50Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVz
c2FnZS1wb3J0LWluYWN0aXZlLWRvY3VtZW50Lmh0bWwJKHJldmlzaW9uIDIwOTI2MSkKKysrIExh
eW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1pbmFjdGl2ZS1kb2N1bWVudC5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogewogICAg
IG90aGVyRG9jdW1lbnQgPSB3aW5kb3cuZnJhbWVzWzBdLmRvY3VtZW50OwogICAgIHZhciBjaGFu
bmVsID0gbmV3IE1lc3NhZ2VDaGFubmVsOwotICAgIHdpbmRvdy5mcmFtZXNbMF0ucG9zdE1lc3Nh
Z2UoIm1zZyIsIFtjaGFubmVsLnBvcnQyXSwgIioiKTsKKyAgICB3aW5kb3cuZnJhbWVzWzBdLnBv
c3RNZXNzYWdlKCJtc2ciLCAiKiIsIFtjaGFubmVsLnBvcnQyXSk7CiAgICAgbWFpblBvcnQgPSBj
aGFubmVsLnBvcnQxOwogICAgIG1haW5Qb3J0LnN0YXJ0KCk7CiAKSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1tdWx0aS1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0LW11bHRpLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMjA5MjYxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1w
b3J0LW11bHRpLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNSwxMiArNSwxMiBAQCBP
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBCiAKIFBBU1MgY2hhbm5lbC5w
b3J0MS5wb3N0TWVzc2FnZSgic2FtZSBwb3J0IiwgW2NoYW5uZWwucG9ydDFdKSB0aHJldyBleGNl
cHRpb24gRGF0YUNsb25lRXJyb3IgKERPTSBFeGNlcHRpb24gMjUpOiBUaGUgb2JqZWN0IGNhbiBu
b3QgYmUgY2xvbmVkLi4KIFBBU1MgY2hhbm5lbC5wb3J0MS5wb3N0TWVzc2FnZSgiZW50YW5nbGVk
IHBvcnQiLCBbY2hhbm5lbC5wb3J0Ml0pIHRocmV3IGV4Y2VwdGlvbiBEYXRhQ2xvbmVFcnJvciAo
RE9NIEV4Y2VwdGlvbiAyNSk6IFRoZSBvYmplY3QgY2FuIG5vdCBiZSBjbG9uZWQuLgotUEFTUyBj
aGFubmVsLnBvcnQxLnBvc3RNZXNzYWdlKCJudWxsIHBvcnQiLCBbY2hhbm5lbDMucG9ydDEsIG51
bGwsIGNoYW5uZWwzLnBvcnQyXSkgdGhyZXcgZXhjZXB0aW9uIEludmFsaWRTdGF0ZUVycm9yIChE
T00gRXhjZXB0aW9uIDExKTogVGhlIG9iamVjdCBpcyBpbiBhbiBpbnZhbGlkIHN0YXRlLi4KLVBB
U1MgY2hhbm5lbC5wb3J0MS5wb3N0TWVzc2FnZSgibm90QVBvcnQiLCBbY2hhbm5lbDMucG9ydDEs
IHt9LCBjaGFubmVsMy5wb3J0Ml0pIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJy
b3IuCi1QQVNTIGNoYW5uZWwucG9ydDEucG9zdE1lc3NhZ2UoImR1cGxpY2F0ZSBwb3J0IiwgW2No
YW5uZWwzLnBvcnQxLCBjaGFubmVsMy5wb3J0MV0pIHRocmV3IGV4Y2VwdGlvbiBJbnZhbGlkU3Rh
dGVFcnJvciAoRE9NIEV4Y2VwdGlvbiAxMSk6IFRoZSBvYmplY3QgaXMgaW4gYW4gaW52YWxpZCBz
dGF0ZS4uCi1QQVNTIGNoYW5uZWwucG9ydDEucG9zdE1lc3NhZ2UoIm5vdEFuQXJyYXkiLCBjaGFu
bmVsMy5wb3J0MSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVmFsdWUgaXMgbm90IGEgc2Vx
dWVuY2UuCi1QQVNTIGNoYW5uZWwucG9ydDEucG9zdE1lc3NhZ2UoIm5vdEFTZXF1ZW5jZSIsIFt7
bGVuZ3RoOiAzfV0pIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCi1QQVNT
IGNoYW5uZWwucG9ydDEucG9zdE1lc3NhZ2UoImxhcmdlU2VxdWVuY2UiLCBsYXJnZVBvcnRBcnJh
eSkgdGhyZXcgZXhjZXB0aW9uIEludmFsaWRTdGF0ZUVycm9yIChET00gRXhjZXB0aW9uIDExKTog
VGhlIG9iamVjdCBpcyBpbiBhbiBpbnZhbGlkIHN0YXRlLi4KK1BBU1MgY2hhbm5lbC5wb3J0MS5w
b3N0TWVzc2FnZSgibnVsbCBwb3J0IiwgW2NoYW5uZWwzLnBvcnQxLCBudWxsLCBjaGFubmVsMy5w
b3J0Ml0pIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCitQQVNTIGNoYW5u
ZWwucG9ydDEucG9zdE1lc3NhZ2UoIm5vdEFQb3J0IiwgW2NoYW5uZWwzLnBvcnQxLCB7fSwgY2hh
bm5lbDMucG9ydDJdKSB0aHJldyBleGNlcHRpb24gRGF0YUNsb25lRXJyb3IgKERPTSBFeGNlcHRp
b24gMjUpOiBUaGUgb2JqZWN0IGNhbiBub3QgYmUgY2xvbmVkLi4KK1BBU1MgY2hhbm5lbC5wb3J0
MS5wb3N0TWVzc2FnZSgiZHVwbGljYXRlIHBvcnQiLCBbY2hhbm5lbDMucG9ydDEsIGNoYW5uZWwz
LnBvcnQxXSkgdGhyZXcgZXhjZXB0aW9uIERhdGFDbG9uZUVycm9yIChET00gRXhjZXB0aW9uIDI1
KTogVGhlIG9iamVjdCBjYW4gbm90IGJlIGNsb25lZC4uCitQQVNTIGNoYW5uZWwucG9ydDEucG9z
dE1lc3NhZ2UoIm5vdEFuQXJyYXkiLCBjaGFubmVsMy5wb3J0MSkgdGhyZXcgZXhjZXB0aW9uIFR5
cGVFcnJvcjogVHlwZSBlcnJvci4KK1BBU1MgY2hhbm5lbC5wb3J0MS5wb3N0TWVzc2FnZSgibm90
QVNlcXVlbmNlIiwgW3tsZW5ndGg6IDN9XSkgdGhyZXcgZXhjZXB0aW9uIERhdGFDbG9uZUVycm9y
IChET00gRXhjZXB0aW9uIDI1KTogVGhlIG9iamVjdCBjYW4gbm90IGJlIGNsb25lZC4uCitQQVNT
IGNoYW5uZWwucG9ydDEucG9zdE1lc3NhZ2UoImxhcmdlU2VxdWVuY2UiLCBsYXJnZVBvcnRBcnJh
eSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KIFBBU1MgZXZlbnQucG9y
dHMgaXMgbm9uLW51bGwgYW5kIHplcm8gbGVuZ3RoIHdoZW4gbm8gcG9ydCBzZW50CiBQQVNTIGV2
ZW50LnBvcnRzIGlzIG5vbi1udWxsIGFuZCB6ZXJvIGxlbmd0aCB3aGVuIGVtcHR5IGFycmF5IHNl
bnQKIFBBU1MgZXZlbnQucG9ydHMgY29udGFpbnMgdHdvIHBvcnRzIHdoZW4gdHdvIHBvcnRzIHNl
bnQKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC5odG1sCShyZXZp
c2lvbiAyMDkyNjEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQCBmdW5jdGlvbiB0ZXN0KHBvc3RNZXNz
YWdlRnVuKQogewogICAgIHZhciBjaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFubmVsOwogCi0gICAg
d2luZG93LmZyYW1lc1swXVtwb3N0TWVzc2FnZUZ1bl0oIm1zZyIsIFtjaGFubmVsLnBvcnQyXSwg
IioiKTsKKyAgICB3aW5kb3cuZnJhbWVzWzBdW3Bvc3RNZXNzYWdlRnVuXSgibXNnIiwgIioiLCBb
Y2hhbm5lbC5wb3J0Ml0pOwogICAgIG1haW5Qb3J0ID0gY2hhbm5lbC5wb3J0MTsKICAgICBtYWlu
UG9ydFtwb3N0TWVzc2FnZUZ1bl0oInBpbmciKTsKICAgICBtYWluUG9ydC5vbm1lc3NhZ2UgPSBm
dW5jdGlvbihldnQpIHsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy93b3JrZXItY29u
dGV4dC1tdWx0aS1wb3J0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L3dvcmtlcnMvd29ya2VyLWNvbnRleHQtbXVsdGktcG9ydC1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDIwOTI2MSkKKysrIExheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy93b3JrZXItY29udGV4dC1t
dWx0aS1wb3J0LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNiwxMSArNiwxMSBAQCBP
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBCiBQQVNTIGV2ZW50LnBvcnRz
IGlzIG5vbi1udWxsIGFuZCB6ZXJvIGxlbmd0aCB3aGVuIG5vIHBvcnQgc2VudAogUEFTUyBldmVu
dC5wb3J0cyBpcyBub24tbnVsbCBhbmQgemVybyBsZW5ndGggd2hlbiBlbXB0eSBhcnJheSBzZW50
CiBQQVNTIGV2ZW50LnBvcnRzIGNvbnRhaW5zIHR3byBwb3J0cyB3aGVuIHR3byBwb3J0cyBzZW50
Ci1QQVNTIHBvc3RpbmcgYSBudWxsIHBvcnQgZGlkIHRocm93OiBJbnZhbGlkU3RhdGVFcnJvciAo
RE9NIEV4Y2VwdGlvbiAxMSk6IFRoZSBvYmplY3QgaXMgaW4gYW4gaW52YWxpZCBzdGF0ZS4KLVBB
U1MgcG9zdGluZyBhIG5vbi1wb3J0IGRpZCB0aHJvdzogVHlwZUVycm9yOiBUeXBlIGVycm9yCitQ
QVNTIHBvc3RpbmcgYSBudWxsIHBvcnQgZGlkIHRocm93OiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IK
K1BBU1MgcG9zdGluZyBhIG5vbi1wb3J0IGRpZCB0aHJvdzogRGF0YUNsb25lRXJyb3IgKERPTSBF
eGNlcHRpb24gMjUpOiBUaGUgb2JqZWN0IGNhbiBub3QgYmUgY2xvbmVkLgogUEFTUyBldmVudC5w
b3J0cyBjb250YWlucyB0d28gcG9ydHMgd2hlbiB0d28gcG9ydHMgcmUtc2VudCBhZnRlciBlcnJv
cgotUEFTUyBwb3N0aW5nIGEgbm9uLWFycmF5IGRpZCB0aHJvdzogVHlwZUVycm9yOiBWYWx1ZSBp
cyBub3QgYSBzZXF1ZW5jZQotUEFTUyBwb3N0aW5nIGEgbm9uLXNlcXVlbmNlIGRpZCB0aHJvdzog
VHlwZUVycm9yOiBUeXBlIGVycm9yCitQQVNTIHBvc3RpbmcgYSBub24tYXJyYXkgZGlkIHRocm93
OiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IKK1BBU1MgcG9zdGluZyBhIG5vbi1zZXF1ZW5jZSBkaWQg
dGhyb3c6IERhdGFDbG9uZUVycm9yIChET00gRXhjZXB0aW9uIDI1KTogVGhlIG9iamVjdCBjYW4g
bm90IGJlIGNsb25lZC4KIAogVEVTVCBDT01QTEVURQogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L3dvcmtlcnMvd29ya2VyLW11bHRpLXBvcnQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3Qvd29ya2Vycy93b3JrZXItbXVsdGktcG9ydC1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDIwOTI2MSkKKysrIExheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy93b3JrZXItbXVsdGkt
cG9ydC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTMsMTAgKzMsMTAgQEAgVGhpcyB0
ZXN0IGNoZWNrcyB0aGUgdmFyaW91cyB1c2UgY2FzZXMgYQogT24gc3VjY2VzcywgeW91IHdpbGwg
c2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExF
VEUiLgogCiAKLVBBU1Mgd29ya2VyLnBvc3RNZXNzYWdlKCJudWxsIHBvcnQiLCBbY2hhbm5lbDMu
cG9ydDEsIG51bGwsIGNoYW5uZWwzLnBvcnQyXSkgdGhyZXcgZXhjZXB0aW9uIEludmFsaWRTdGF0
ZUVycm9yIChET00gRXhjZXB0aW9uIDExKTogVGhlIG9iamVjdCBpcyBpbiBhbiBpbnZhbGlkIHN0
YXRlLi4KLVBBU1Mgd29ya2VyLnBvc3RNZXNzYWdlKCJub3RBUG9ydCIsIFtjaGFubmVsMy5wb3J0
MSwge30sIGNoYW5uZWwzLnBvcnQyXSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBl
cnJvci4KLVBBU1Mgd29ya2VyLnBvc3RNZXNzYWdlKCJub3RBbkFycmF5IiwgY2hhbm5lbDMucG9y
dDEpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFZhbHVlIGlzIG5vdCBhIHNlcXVlbmNlLgot
UEFTUyB3b3JrZXIucG9zdE1lc3NhZ2UoIm5vdEFTZXF1ZW5jZSIsIFt7bGVuZ3RoOiAzfV0pIHRo
cmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCitQQVNTIHdvcmtlci5wb3N0TWVz
c2FnZSgibnVsbCBwb3J0IiwgW2NoYW5uZWwzLnBvcnQxLCBudWxsLCBjaGFubmVsMy5wb3J0Ml0p
IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCitQQVNTIHdvcmtlci5wb3N0
TWVzc2FnZSgibm90QVBvcnQiLCBbY2hhbm5lbDMucG9ydDEsIHt9LCBjaGFubmVsMy5wb3J0Ml0p
IHRocmV3IGV4Y2VwdGlvbiBEYXRhQ2xvbmVFcnJvciAoRE9NIEV4Y2VwdGlvbiAyNSk6IFRoZSBv
YmplY3QgY2FuIG5vdCBiZSBjbG9uZWQuLgorUEFTUyB3b3JrZXIucG9zdE1lc3NhZ2UoIm5vdEFu
QXJyYXkiLCBjaGFubmVsMy5wb3J0MSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBl
cnJvci4KK1BBU1Mgd29ya2VyLnBvc3RNZXNzYWdlKCJub3RBU2VxdWVuY2UiLCBbe2xlbmd0aDog
M31dKSB0aHJldyBleGNlcHRpb24gRGF0YUNsb25lRXJyb3IgKERPTSBFeGNlcHRpb24gMjUpOiBU
aGUgb2JqZWN0IGNhbiBub3QgYmUgY2xvbmVkLi4KIFBBU1MgZXZlbnQucG9ydHMgaXMgbm9uLW51
bGwgYW5kIHplcm8gbGVuZ3RoIHdoZW4gbm8gcG9ydCBzZW50CiBQQVNTIGV2ZW50LnBvcnRzIGlz
IG5vbi1udWxsIGFuZCB6ZXJvIGxlbmd0aCB3aGVuIGVtcHR5IGFycmF5IHNlbnQKIFBBU1MgZXZl
bnQucG9ydHMgY29udGFpbnMgdHdvIHBvcnRzIHdoZW4gdHdvIHBvcnRzIHNlbnQKSW5kZXg6IExh
eW91dFRlc3RzL3dlYmdsLzEuMC4yL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL3R5cGVkYXJyYXlzL3Jlc291cmNlcy90eXBlZC1hcnJheS13b3JrZXIuanMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvd2ViZ2wvMS4wLjIvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2UvdHlwZWRhcnJheXMvcmVzb3VyY2VzL3R5cGVkLWFycmF5LXdvcmtlci5qcwko
cmV2aXNpb24gMjA5MjYxKQorKysgTGF5b3V0VGVzdHMvd2ViZ2wvMS4wLjIvcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdHlwZWRhcnJheXMvcmVzb3VyY2VzL3R5cGVkLWFy
cmF5LXdvcmtlci5qcwkod29ya2luZyBjb3B5KQpAQCAtNzQsNyArNzQsNyBAQCBvbm1lc3NhZ2Ug
PSBmdW5jdGlvbihldmVudCkgewogICAgIH0gZWxzZSB7CiAgICAgICB2YWx1ZVRvU2VuZCA9IHZp
ZXcuYnVmZmVyOwogICAgIH0KLSAgICB2YXIgdHJhbnNmZXJhYmxlc1RvU2VuZCA9IG51bGw7Cisg
ICAgdmFyIHRyYW5zZmVyYWJsZXNUb1NlbmQgPSBbXTsKICAgICBpZiAobWVzc2FnZS5jb21tYW5k
ID09ICd0cmFuc2ZlcicgfHwKICAgICAgICAgbWVzc2FnZS5jb21tYW5kID09ICd0cmFuc2ZlckJ1
ZmZlcicpIHsKICAgICAgIHRyYW5zZmVyYWJsZXNUb1NlbmQgPSBbIHZpZXcuYnVmZmVyIF07Cklu
ZGV4OiBMYXlvdXRUZXN0cy93ZWJnbC8xLjAuMy9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS90eXBlZGFycmF5cy9yZXNvdXJjZXMvdHlwZWQtYXJyYXktd29ya2VyLmpzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL3dlYmdsLzEuMC4zL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL3R5cGVkYXJyYXlzL3Jlc291cmNlcy90eXBlZC1hcnJheS13b3Jr
ZXIuanMJKHJldmlzaW9uIDIwOTI2MSkKKysrIExheW91dFRlc3RzL3dlYmdsLzEuMC4zL3Jlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3R5cGVkYXJyYXlzL3Jlc291cmNlcy90
eXBlZC1hcnJheS13b3JrZXIuanMJKHdvcmtpbmcgY29weSkKQEAgLTc0LDcgKzc0LDcgQEAgb25t
ZXNzYWdlID0gZnVuY3Rpb24oZXZlbnQpIHsKICAgICB9IGVsc2UgewogICAgICAgdmFsdWVUb1Nl
bmQgPSB2aWV3LmJ1ZmZlcjsKICAgICB9Ci0gICAgdmFyIHRyYW5zZmVyYWJsZXNUb1NlbmQgPSBu
dWxsOworICAgIHZhciB0cmFuc2ZlcmFibGVzVG9TZW5kID0gW107CiAgICAgaWYgKG1lc3NhZ2Uu
Y29tbWFuZCA9PSAndHJhbnNmZXInIHx8CiAgICAgICAgIG1lc3NhZ2UuY29tbWFuZCA9PSAndHJh
bnNmZXJCdWZmZXInKSB7CiAgICAgICB0cmFuc2ZlcmFibGVzVG9TZW5kID0gWyB2aWV3LmJ1ZmZl
ciBdOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>295991</attachid>
            <date>2016-12-02 13:51:47 -0800</date>
            <delta_ts>2016-12-02 14:36:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-142562-20161202135116.patch</filename>
            <type>text/plain</type>
            <size>88310</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwOTI2MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg5IEBACisyMDE2LTEyLTAyICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgb3B0aW9uYWwgc2VxdWVuY2UgdmFsdWVz
IG5vdCBoYW5kbGVkIGNvcnJlY3RseSBieSBiaW5kaW5nIGdlbmVyYXRvcgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQyNTYyCisKKyAgICAgICAgQWxz
byBmaXhlczoKKyAgICAgICAgICAgIFJlbW92ZSBub24tc3RhbmRhcmQgcG9zdE1lc3NhZ2Ugb3Zl
cmxvYWQKKyAgICAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjE5MTEKKyAgICAgICAgYW5kCisgICAgICAgICAgICBXcm9uZyBhcmd1bWVudCBvcmRlciBp
biB3aW5kb3cucG9zdE1lc3NhZ2UKKyAgICAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD02MzE0MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICBSZW1vdmUgbm8gbG9uZ2VyIG5lZWRlZCBmaWxlcy4KKworICAgICAgICAqIGJpbmRpbmdz
L2dlbmVyaWMvSURMVHlwZXMuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnQu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnZlcnRlcjxJRExPYmplY3Q+Ojpjb252ZXJ0KToKKyAg
ICAgICAgQWRkIHN1cHBvcnQgZm9yIHRoZSBXZWJJREwgb2JqZWN0IHR5cGUuCisKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
RE9NRXhjZXB0aW9uKToKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHRocm93aW5nIHN0YWNrIG92
ZXJmbG93IGVycm9ycy4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9t
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmhhbmRsZVBvc3RNZXNzYWdlKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93Ojpwb3N0TWVzc2FnZSk6IERlbGV0ZWQuCisgICAg
ICAgICogYmluZGluZ3MvanMvSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUN1c3RvbS5jcHA6
IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpKU01lc3NhZ2VQb3J0Ojpwb3N0TWVzc2FnZSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0VHJhbnNmZXJhYmxlcyk6IERlbGV0ZWQuCisgICAg
ICAgICogYmluZGluZ3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5oOiBSZW1vdmVkLgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTV29ya2VyQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpT
V29ya2VyOjpwb3N0TWVzc2FnZSk6IERlbGV0ZWQuCisgICAgICAgIFJlbW92ZSBjdXN0b20gYmlu
ZGluZ3MgZm9yIHBvc3RNZXNzYWdlLgorCisgICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmg6CisgICAgICAgIFN3aXRjaCB0byB1c2luZyBlbnVtIGNsYXNzLgorCisg
ICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6dHJhbnNmZXJBcnJheUJ1ZmZlcnMpOgor
ICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUpOgorICAgICAg
ICBBZGQgbmV3IGNyZWF0ZSBmdW5jdGlvbiB0aGF0IHRha2VzIHRoZSB0cmFuc2ZlciBsaXN0LCBw
cm9jZXNzZXMgaXQsIGFuZCByZXR1cm5zCisgICAgICAgIE1lc3NhZ2VQb3J0cyBhbmQgU2VyaWFs
aXplZFNjcmlwdFZhbHVlIC8gZXhjZXB0aW9uLgorCisgICAgICAgIChXZWJDb3JlOjpDbG9uZUJh
c2U6OnRocm93U3RhY2tPdmVyZmxvdyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDbG9u
ZURlc2VyaWFsaXplcjo6dGhyb3dWYWxpZGF0aW9uRXJyb3IpOiBEZWxldGVkLgorICAgICAgICBS
ZW1vdmUgdW5jYWxsZWQgZnVuY3Rpb25zLgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9yLnBtOgorICAgICAgICAoSXNSZWZQdHJUeXBlKToKKyAgICAgICAgKElzQnVp
bHRpblR5cGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBt
OgorICAgICAgICAoQWRkVG9JbmNsdWRlc0ZvcklETFR5cGUpOgorICAgICAgICAoR2V0QmFzZUlE
TFR5cGUpOgorICAgICAgICBBZGQgc3VwcG9ydCBmb3IgdGhlIFdlYklETCAnb2JqZWN0JyB0eXBl
LgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHA6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsOgorICAgICAgICBBZGQg
dGVzdHMgZm9yICdvYmplY3QnLgorCisgICAgICAgICogZG9tL0V4Y2VwdGlvbkNvZGUuaDoKKyAg
ICAgICAgQWRkIHR3byBuZXcgRXhjZXB0aW9uQ29kZXM6CisgICAgICAgICAgLSBFeGlzdGluZ0V4
Y2VwdGlvbkVycm9yLCB0byBpbmRpY2F0ZSB0aGF0IGltcGxlbWVudGF0aW9uIGNvZGUgdGhyZXcg
YSBKUyBleGNlcHRpb24uCisgICAgICAgICAgLSBTdGFja092ZXJmbG93RXJyb3IsIHRvIGluZGlj
YXRlIHRoYXQgYSBzdGFjayBvdmVyZmxvdyBleGNlcHRpb24gc2hvdWxkIGJlIHRocm93bi4KKwor
ICAgICAgICAqIGRvbS9NZXNzYWdlUG9ydC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdl
UG9ydDo6cG9zdE1lc3NhZ2UpOgorICAgICAgICAqIGRvbS9NZXNzYWdlUG9ydC5oOgorICAgICAg
ICAqIGRvbS9NZXNzYWdlUG9ydC5pZGw6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93Ojpwb3N0TWVzc2FnZSk6CisgICAgICAgICogcGFn
ZS9ET01XaW5kb3cuaDoKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5pZGw6CisgICAgICAgICog
d29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZTo6cG9zdE1lc3NhZ2UpOgorICAgICAgICAqIHdv
cmtlcnMvRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaDoKKyAgICAgICAgKiB3b3JrZXJzL0Rl
ZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmlkbDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXI6OnBvc3RNZXNzYWdlKToKKyAgICAgICAgKiB3
b3JrZXJzL1dvcmtlci5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyLmlkbDoKKyAgICAgICAg
VXBkYXRlIHRvIGNhbGwgbmV3IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSBjcmVhdGUgZnVuY3Rpb24u
CisKIDIwMTYtMTItMDIgIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CiAKICAg
ICAgICAgUmVxdWlyZSBwcmVmbGlnaHQgZm9yIG5vbi1zdGFuZGFyZCBDT1JTLXNhZmVsaXN0ZWQg
cmVxdWVzdCBoZWFkZXJzIEFjY2VwdCwgQWNjZXB0LUxhbmd1YWdlLCBhbmQgQ29udGVudC1MYW5n
dWFnZQpJbmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDIwOTI2MSkKKysrIFNvdXJj
ZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMTI5LDcgKzExMjks
NiBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgYmluZGluZ3MvanMvSlNET01XcmFwcGVyLmNw
cAogICAgIGJpbmRpbmdzL2pzL0pTRGF0YUN1ZUN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9K
U0RhdGFUcmFuc2ZlckN1c3RvbS5jcHAKLSAgICBiaW5kaW5ncy9qcy9KU0RlZGljYXRlZFdvcmtl
ckdsb2JhbFNjb3BlQ3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTRGV2aWNlTW90aW9uRXZl
bnRDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNEZXZpY2VPcmllbnRhdGlvbkV2ZW50Q3Vz
dG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5jcHAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9u
IDIwOTI2MSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTU4NCw3ICsxNTg0LDYgQEAKIAkJNDE2MTRBNzkxREE2
NDI0MTAwNEFEMDZGIC8qIEhUVFBIZWFkZXJWYWx1ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNjE0QTc3MURBNjQyMzYwMDRBRDA2RiAvKiBIVFRQ
SGVhZGVyVmFsdWVzLmggKi87IH07CiAJCTQxNjJBNDUwMTAxMTQ1QUUwMERGRjNFRCAvKiBEZWRp
Y2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0MTYyQTQ0RDEwMTE0NUFFMDBERkYzRUQgLyogRGVkaWNhdGVkV29y
a2VyR2xvYmFsU2NvcGUuY3BwICovOyB9OwogCQk0MTYyQTQ1MTEwMTE0NUFFMDBERkYzRUQgLyog
RGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQxNjJBNDRFMTAxMTQ1QUUwMERGRjNFRCAvKiBEZWRpY2F0ZWRX
b3JrZXJHbG9iYWxTY29wZS5oICovOyB9OwotCQk0MTYyQTQ1NDEwMTE0NUUzMDBERkYzRUQgLyog
SlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTYyQTQ1MzEwMTE0NUUzMDBERkYzRUQgLyog
SlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUN1c3RvbS5jcHAgKi87IH07CiAJCTQxNjJBNDU3
MTAxMTQ2NDcwMERGRjNFRCAvKiBKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNjJBNDU1MTAxMTQ2
NDcwMERGRjNFRCAvKiBKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmNwcCAqLzsgfTsKIAkJ
NDE2MkE0NTgxMDExNDY0NzAwREZGM0VEIC8qIEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNjJBNDU2
MTAxMTQ2NDcwMERGRjNFRCAvKiBKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmggKi87IH07
CiAJCTQxNkUyOUE2MTAyRkE5NjIwMDdGQzE0RSAvKiBXb3JrZXJSZXBvcnRpbmdQcm94eS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2RTI5QTUxMDJG
QTk2MjAwN0ZDMTRFIC8qIFdvcmtlclJlcG9ydGluZ1Byb3h5LmggKi87IH07CkBAIC0xNjQxLDcg
KzE2NDAsNiBAQAogCQk0MUY1NEY4QjFDNTBDNTAzMDAzMzg0ODggLyogRmV0Y2hCb2R5LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRjU0RjdEMUM1
MEM0RjYwMDMzODQ4OCAvKiBGZXRjaEJvZHkuY3BwICovOyB9OwogCQk0MUY1NEY4RDFDNTBDNTA4
MDAzMzg0ODggLyogRmV0Y2hIZWFkZXJzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQxRjU0RjgyMUM1MEM0RjYwMDMzODQ4OCAvKiBGZXRjaEhlYWRl
cnMuY3BwICovOyB9OwogCQk0MUY1NEY4RTFDNTBDNTBDMDAzMzg0ODggLyogRmV0Y2hSZXF1ZXN0
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRjU0
Rjg3MUM1MEM0RjYwMDMzODQ4OCAvKiBGZXRjaFJlcXVlc3QuY3BwICovOyB9OwotCQk0MUY1ODRD
NzEwNDY1MkNCMDA5Q0FBNjQgLyogSlNNZXNzYWdlUG9ydEN1c3RvbS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGNTg0QzYxMDQ2NTJDQjAwOUNBQTY0
IC8qIEpTTWVzc2FnZVBvcnRDdXN0b20uaCAqLzsgfTsKIAkJNDFGQTMwM0UxMzE2QzI5QzAwQzBC
RkM1IC8qIFJlbmRlck1lZGlhQ29udHJvbHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGQTMwM0MxMzE2QzI5QzAwQzBCRkM1IC8qIFJlbmRlck1l
ZGlhQ29udHJvbHMuY3BwICovOyB9OwogCQk0MUZBMzAzRjEzMTZDMjlDMDBDMEJGQzUgLyogUmVu
ZGVyTWVkaWFDb250cm9scy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDFGQTMwM0QxMzE2QzI5QzAwQzBCRkM1IC8qIFJlbmRlck1lZGlhQ29udHJvbHMu
aCAqLzsgfTsKIAkJNDMwNkU0RTYxNDk1NTU0MzAwN0YxN0FDIC8qIEtpbGxSaW5nTm9uZS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MzA2RTRFNTE0
OTU1NTQzMDA3RjE3QUMgLyogS2lsbFJpbmdOb25lLmNwcCAqLzsgfTsKQEAgLTg3MzcsNyArODcz
NSw2IEBACiAJCTQxNjJBNDREMTAxMTQ1QUUwMERGRjNFRCAvKiBEZWRpY2F0ZWRXb3JrZXJHbG9i
YWxTY29wZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZWRpY2F0
ZWRXb3JrZXJHbG9iYWxTY29wZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQx
NjJBNDRFMTAxMTQ1QUUwMERGRjNFRCAvKiBEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29w
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTYyQTQ0RjEwMTE0NUFFMDBERkYz
RUQgLyogRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IERlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJNDE2MkE0NTMxMDExNDVFMzAwREZGM0VEIC8qIEpTRGVkaWNhdGVkV29ya2VyR2xv
YmFsU2NvcGVDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQxNjJBNDU1MTAxMTQ2NDcwMERGRjNFRCAvKiBKU0RlZGljYXRlZFdvcmtl
ckdsb2JhbFNjb3BlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
RGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0MTYyQTQ1NjEwMTE0NjQ3MDBERkYzRUQgLyogSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxT
Y29wZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RlZGljYXRlZFdvcmtl
ckdsb2JhbFNjb3BlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNkUyOUE1MTAy
RkE5NjIwMDdGQzE0RSAvKiBXb3JrZXJSZXBvcnRpbmdQcm94eS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXb3JrZXJSZXBvcnRpbmdQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtODgxMSw3ICs4ODA4LDYgQEAKIAkJNDFGNTRGODcxQzUwQzRGNjAwMzM4
NDg4IC8qIEZldGNoUmVxdWVzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBGZXRjaFJlcXVlc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUY1
NEY4ODFDNTBDNEY2MDAzMzg0ODggLyogRmV0Y2hSZXF1ZXN0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEZldGNoUmVxdWVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0MUY1NEY4OTFDNTBDNEY2MDAzMzg0ODggLyogRmV0Y2hSZXF1ZXN0LmlkbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBGZXRjaFJlcXVlc3QuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQk0MUY1ODRDNjEwNDY1MkNCMDA5Q0FBNjQgLyogSlNNZXNzYWdlUG9ydEN1c3RvbS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU01lc3NhZ2VQb3J0Q3VzdG9tLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRkEzMDNDMTMxNkMyOUMwMEMwQkZDNSAv
KiBSZW5kZXJNZWRpYUNvbnRyb2xzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFJlbmRlck1lZGlhQ29udHJvbHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0MUZBMzAzRDEzMTZDMjlDMDBDMEJGQzUgLyogUmVuZGVyTWVkaWFDb250cm9scy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJNZWRpYUNvbnRyb2xzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQzMDZFNEU1MTQ5NTU1NDMwMDdGMTdBQyAvKiBL
aWxsUmluZ05vbmUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gS2ls
bFJpbmdOb25lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIyMDU3LDcgKzIy
MDUzLDYgQEAKIAkJCQlERUMyOTc1RDFCNERFQjJBMDA1RjU5NDUgLyogSlNDdXN0b21FdmVudEN1
c3RvbS5jcHAgKi8sCiAJCQkJMDdGQkRFMkIxOEZFRDE3ODAwMUE3Q0ZGIC8qIEpTRGF0YUN1ZUN1
c3RvbS5jcHAgKi8sCiAJCQkJQkNBODNFNTEwRDdDRTIwNTAwMzQyMUE4IC8qIEpTRGF0YVRyYW5z
ZmVyQ3VzdG9tLmNwcCAqLywKLQkJCQk0MTYyQTQ1MzEwMTE0NUUzMDBERkYzRUQgLyogSlNEZWRp
Y2F0ZWRXb3JrZXJHbG9iYWxTY29wZUN1c3RvbS5jcHAgKi8sCiAJCQkJMzFGQjFBNkIxMjBBNUQ2
OTAwREMwMkEwIC8qIEpTRGV2aWNlTW90aW9uRXZlbnRDdXN0b20uY3BwICovLAogCQkJCTU5MEUx
QjRBMTFFNEVGNzAwMDY5Rjc4NCAvKiBKU0RldmljZU9yaWVudGF0aW9uRXZlbnRDdXN0b20uY3Bw
ICovLAogCQkJCTQ5QzdCQThDMTA0MkY1QjEwMDA5RDQ0NyAvKiBKU0RvY3VtZW50Q3VzdG9tLmNw
cCAqLywKQEAgLTIyMTEzLDcgKzIyMTA4LDYgQEAKIAkJCQlFMUE1Rjk5QTBFN0VBQTI1MDBBRjg1
RUEgLyogSlNNZXNzYWdlQ2hhbm5lbEN1c3RvbS5jcHAgKi8sCiAJCQkJNDEwQjdFNzExMDQ1RkFC
MDAwRDgyMjRGIC8qIEpTTWVzc2FnZUV2ZW50Q3VzdG9tLmNwcCAqLywKIAkJCQlFMUFERUQ0NjBF
NzZCOEREMDA0QTFBNUUgLyogSlNNZXNzYWdlUG9ydEN1c3RvbS5jcHAgKi8sCi0JCQkJNDFGNTg0
QzYxMDQ2NTJDQjAwOUNBQTY0IC8qIEpTTWVzc2FnZVBvcnRDdXN0b20uaCAqLywKIAkJCQlBMUU1
QjMxRDFBQUQxREE0MDA2RUJFRkIgLyogSlNNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ3VzdG9t
LmNwcCAqLywKIAkJCQlDNkYwOTE3RTE0M0EyQkI5MDA2ODU4NDkgLyogSlNNdXRhdGlvbk9ic2Vy
dmVyQ3VzdG9tLmNwcCAqLywKIAkJCQlCQ0Q5QzI1RjBDMTdBQTY3MDA1QzkwQTIgLyogSlNOYW1l
ZE5vZGVNYXBDdXN0b20uY3BwICovLApAQCAtMjYzMzEsNyArMjYzMjUsNiBAQAogCQkJCUUxMDc0
MDBFMEU3N0JEQzAwMDMzQUYyNCAvKiBKU01lc3NhZ2VDaGFubmVsLmggaW4gSGVhZGVycyAqLywK
IAkJCQk3NTc5M0VDOTBEMENFNzJEMDA3RkMwQUMgLyogSlNNZXNzYWdlRXZlbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUUxQURFRERBMEU3NkJEOTMwMDRBMUE1RSAvKiBKU01lc3NhZ2VQb3J0Lmgg
aW4gSGVhZGVycyAqLywKLQkJCQk0MUY1ODRDNzEwNDY1MkNCMDA5Q0FBNjQgLyogSlNNZXNzYWdl
UG9ydEN1c3RvbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ2RjNFOTUxQzFGODU1NTAwNjFEQkQ0
IC8qIEpTTW9ja1BhZ2VPdmVybGF5LmggaW4gSGVhZGVycyAqLywKIAkJCQlBODY2MjlEMTA5REEy
QjQ4MDA5NjMzQTUgLyogSlNNb3VzZUV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk4MzBBMzZC
RDFEQUM1RkFEMDA2RDdEMDkgLyogSlNNb3VzZUV2ZW50SW5pdC5oIGluIEhlYWRlcnMgKi8sCkBA
IC0yOTg0OSw3ICsyOTg0Miw2IEBACiAJCQkJQkNBODNFNEYwRDdDRTFFOTAwMzQyMUE4IC8qIEpT
RGF0YVRyYW5zZmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDQTgzRTUyMEQ3Q0UyMDUwMDM0
MjFBOCAvKiBKU0RhdGFUcmFuc2ZlckN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MTYy
QTQ1NzEwMTE0NjQ3MDBERkYzRUQgLyogSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAg
aW4gU291cmNlcyAqLywKLQkJCQk0MTYyQTQ1NDEwMTE0NUUzMDBERkYzRUQgLyogSlNEZWRpY2F0
ZWRXb3JrZXJHbG9iYWxTY29wZUN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGREExNUVE
MTEyQjAzRjk0MDAzQTU4M0EgLyogSlNEZWxheU5vZGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MzFGQjFBNjUxMjBBNUQzRjAwREMwMkEwIC8qIEpTRGV2aWNlTW90aW9uRXZlbnQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMzFGQjFBNkMxMjBBNUQ2OTAwREMwMkEwIC8qIEpTRGV2aWNlTW90aW9u
RXZlbnRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9nZW5lcmljL0lETFR5cGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvZ2VuZXJpYy9JRExUeXBlcy5oCShyZXZpc2lvbiAyMDkyNjEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9nZW5lcmljL0lETFR5cGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYg
KzM0LDggQEAgbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBBcnJheUJ1ZmZlcjsKIGNsYXNzIEFycmF5
QnVmZmVyVmlldzsKIGNsYXNzIEpTVmFsdWU7CitjbGFzcyBKU09iamVjdDsKK3RlbXBsYXRlIDx0
eXBlbmFtZSBUPiBjbGFzcyBTdHJvbmc7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTk0
LDcgKzk2LDcgQEAgc3RydWN0IElETERPTVN0cmluZyA6IElETFN0cmluZyB7IH07CiBzdHJ1Y3Qg
SURMQnl0ZVN0cmluZyA6IElETFN0cmluZyB7IH07CiBzdHJ1Y3QgSURMVVNWU3RyaW5nIDogSURM
U3RyaW5nIHsgfTsKIAotc3RydWN0IElETE9iamVjdCA6IElETFVuc3VwcG9ydGVkVHlwZSB7IH07
CitzdHJ1Y3QgSURMT2JqZWN0IDogSURMVHlwZTxKU0M6OlN0cm9uZzxKU0M6OkpTT2JqZWN0Pj4g
eyB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgSURMV3JhcHBlciA6IElETFR5cGU8
UmVmUHRyPFQ+PiB7CiAgICAgdXNpbmcgUmF3VHlwZSA9IFQ7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAJKHJldmlzaW9uIDIw
OTI2MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTY0LDcgKzY0LDYgQEAKICNpbmNsdWRlICJKU0RPTVdyYXBw
ZXIuY3BwIgogI2luY2x1ZGUgIkpTRGF0YUN1ZUN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNEYXRh
VHJhbnNmZXJDdXN0b20uY3BwIgotI2luY2x1ZGUgIkpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2Nv
cGVDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTRGV2aWNlT3JpZW50YXRpb25FdmVudEN1c3RvbS5j
cHAiCiAjaW5jbHVkZSAiSlNEaWN0aW9uYXJ5LmNwcCIKICNpbmNsdWRlICJKU0RvY3VtZW50Q3Vz
dG9tLmNwcCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5n
LmNwcAkocmV2aXNpb24gMjA5MjYxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01CaW5kaW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjg2LDYgKzI4Niw5IEBAIHN0YXRpYyBK
U1ZhbHVlIGNyZWF0ZURPTUV4Y2VwdGlvbihFeGVjU3QKICAgICAgICAgcmV0dXJuIGNyZWF0ZVJh
bmdlRXJyb3IoZXhlYywgKm1lc3NhZ2UpOwogICAgIH0KIAorICAgIGlmIChlYyA9PSBTdGFja092
ZXJmbG93RXJyb3IpCisgICAgICAgIHJldHVybiBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoZXhl
Yyk7CisKICAgICAvLyBGSVhNRTogQWxsIGNhbGxlcnMgdG8gc2V0RE9NRXhjZXB0aW9uIG5lZWQg
dG8gcGFzcyBpbiB0aGUgcmlnaHQgZ2xvYmFsIG9iamVjdAogICAgIC8vIGZvciBub3csIHdlJ3Jl
IGdvaW5nIHRvIGFzc3VtZSB0aGUgbGV4aWNhbEdsb2JhbE9iamVjdC4gV2hpY2ggaXMgd3Jvbmcg
aW4gY2FzZXMgbGlrZSB0aGlzOgogICAgIC8vIGZyYW1lc1swXS5kb2N1bWVudC5jcmVhdGVFbGVt
ZW50KG51bGwsIG51bGwpOyAvLyB0aHJvd3MgYW4gZXhjZXB0aW9uIHdoaWNoIHNob3VsZCBoYXZl
IHRoZSBzdWJmcmFtZXMgcHJvdG90eXBlcy4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NQ29udmVydC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NQ29udmVydC5oCShyZXZpc2lvbiAyMDkyNjEpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTUNvbnZlcnQuaAkod29ya2luZyBjb3B5KQpAQCAtODEzLDYgKzgxMywy
NSBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBKU0NvbnZlcnRlcjxJRExVU1ZTdHJpCiB9OwogCiAvLyBN
QVJLOiAtCisvLyBNQVJLOiBPYmplY3QgdHlwZQorCit0ZW1wbGF0ZTw+IHN0cnVjdCBDb252ZXJ0
ZXI8SURMT2JqZWN0PiA6IERlZmF1bHRDb252ZXJ0ZXI8SURMT2JqZWN0PiB7CisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgRXhjZXB0aW9uVGhyb3dlciA9IERlZmF1bHRFeGNlcHRpb25UaHJvd2VyPgor
ICAgIHN0YXRpYyBKU0M6OlN0cm9uZzxKU0M6OkpTT2JqZWN0PiBjb252ZXJ0KEpTQzo6RXhlY1N0
YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIHZhbHVlLCBFeGNlcHRpb25UaHJvd2VyJiYgZXhjZXB0
aW9uVGhyb3dlciA9IEV4Y2VwdGlvblRocm93ZXIoKSkKKyAgICB7CisgICAgICAgIEpTQzo6Vk0m
IHZtID0gc3RhdGUudm0oKTsKKyAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCisgICAgICAgIGlmICghdmFsdWUuaXNPYmplY3QoKSkgeworICAgICAgICAgICAg
ZXhjZXB0aW9uVGhyb3dlcihzdGF0ZSwgc2NvcGUpOworICAgICAgICAgICAgcmV0dXJuIHsgfTsK
KyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcmV0dXJuIHsgdm0sIEpTQzo6YXNPYmplY3Qo
dmFsdWUpIH07CisgICAgfQorfTsKKworLy8gTUFSSzogLQogLy8gTUFSSzogQXJyYXktbGlrZSB0
eXBlcwogCiBuYW1lc3BhY2UgRGV0YWlsIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAJKHJldmlzaW9uIDIwOTI2MSkKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzIsMTIgKzMyLDEyIEBACiAjaW5jbHVkZSAiSlNIVE1MT3B0aW9uRWxlbWVudC5o
IgogI2luY2x1ZGUgIkpTSURCRmFjdG9yeS5oIgogI2luY2x1ZGUgIkpTSW1hZ2VDb25zdHJ1Y3Rv
ci5oIgotI2luY2x1ZGUgIkpTTWVzc2FnZVBvcnRDdXN0b20uaCIKICNpbmNsdWRlICJKU1dvcmtl
ci5oIgogI2luY2x1ZGUgIkxvY2F0aW9uLmgiCiAjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0
dXJlcy5oIgogI2luY2x1ZGUgIlNjaGVkdWxlZEFjdGlvbi5oIgogI2luY2x1ZGUgIlNldHRpbmdz
LmgiCisjaW5jbHVkZSA8cnVudGltZS9KU0Z1bmN0aW9uSW5saW5lcy5oPgogCiAjaWYgRU5BQkxF
KFVTRVJfTUVTU0FHRV9IQU5ETEVSUykKICNpbmNsdWRlICJKU1dlYktpdE5hbWVzcGFjZS5oIgpA
QCAtNDg5LDUwICs0ODksNiBAQCBKU1ZhbHVlIEpTRE9NV2luZG93OjpzaG93TW9kYWxEaWFsb2co
RXhlCiAgICAgcmV0dXJuIGhhbmRsZXIucmV0dXJuVmFsdWUoKTsKIH0KIAotc3RhdGljIEpTVmFs
dWUgaGFuZGxlUG9zdE1lc3NhZ2UoRE9NV2luZG93JiBpbXBsLCBFeGVjU3RhdGUmIHN0YXRlKQot
ewotICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7Ci0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwotCi0gICAgaWYgKFVOTElLRUxZKHN0YXRlLmFyZ3VtZW50Q291bnQoKSA8
IDIpKQotICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oJnN0YXRlLCBzY29wZSwgY3JlYXRl
Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7Ci0KLSAgICBWZWN0b3I8UmVmUHRyPE1l
c3NhZ2VQb3J0Pj4gbWVzc2FnZVBvcnRzOwotICAgIFZlY3RvcjxSZWZQdHI8SlNDOjpBcnJheUJ1
ZmZlcj4+IGFycmF5QnVmZmVyczsKLQotICAgIC8vIFRoaXMgZnVuY3Rpb24gaGFzIHZhcmlhYmxl
IGFyZ3VtZW50cyBhbmQgY2FuIGJlOgotICAgIC8vIFBlciBjdXJyZW50IHNwZWM6Ci0gICAgLy8g
ICBwb3N0TWVzc2FnZShtZXNzYWdlLCB0YXJnZXRPcmlnaW4pCi0gICAgLy8gICBwb3N0TWVzc2Fn
ZShtZXNzYWdlLCB0YXJnZXRPcmlnaW4sIHtzZXF1ZW5jZSBvZiB0cmFuc2ZlcnJhYmxlc30pCi0g
ICAgLy8gTGVnYWN5IG5vbi1zdGFuZGFyZCBpbXBsZW1lbnRhdGlvbnMgaW4gd2Via2l0IGFsbG93
ZWQ6Ci0gICAgLy8gICBwb3N0TWVzc2FnZShtZXNzYWdlLCB7c2VxdWVuY2Ugb2YgdHJhbnNmZXJy
YWJsZXN9LCB0YXJnZXRPcmlnaW4pOwotICAgIGludCB0YXJnZXRPcmlnaW5BcmdJbmRleCA9IDE7
Ci0gICAgaWYgKHN0YXRlLmFyZ3VtZW50Q291bnQoKSA+IDIpIHsKLSAgICAgICAgaW50IHRyYW5z
ZmVyYWJsZXNBcmdJbmRleCA9IDI7Ci0gICAgICAgIGlmIChzdGF0ZS51bmNoZWNrZWRBcmd1bWVu
dCgyKS5pc1N0cmluZygpKSB7Ci0gICAgICAgICAgICB0YXJnZXRPcmlnaW5BcmdJbmRleCA9IDI7
Ci0gICAgICAgICAgICB0cmFuc2ZlcmFibGVzQXJnSW5kZXggPSAxOwotICAgICAgICB9Ci0gICAg
ICAgIGV4dHJhY3RUcmFuc2ZlcmFibGVzKHN0YXRlLCBzdGF0ZS5hcmd1bWVudCh0cmFuc2ZlcmFi
bGVzQXJnSW5kZXgpLCBtZXNzYWdlUG9ydHMsIGFycmF5QnVmZmVycyk7Ci0gICAgfQotICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7Ci0KLSAgICBhdXRvIG1lc3NhZ2Ug
PSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShzdGF0ZSwgc3RhdGUudW5jaGVja2VkQXJn
dW1lbnQoMCksIG1lc3NhZ2VQb3J0cywgV1RGTW92ZShhcnJheUJ1ZmZlcnMpKTsKLSAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkpOwotCi0gICAgU3RyaW5nIHRhcmdldE9y
aWdpbiA9IGNvbnZlcnQ8SURMTnVsbGFibGU8SURMVVNWU3RyaW5nPj4oc3RhdGUsIHN0YXRlLnVu
Y2hlY2tlZEFyZ3VtZW50KHRhcmdldE9yaWdpbkFyZ0luZGV4KSk7Ci0gICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgSlNWYWx1ZSgpKTsKLQotICAgIHByb3BhZ2F0ZUV4Y2VwdGlvbihzdGF0
ZSwgc2NvcGUsIGltcGwucG9zdE1lc3NhZ2UobWVzc2FnZS5yZWxlYXNlTm9uTnVsbCgpLCBXVEZN
b3ZlKG1lc3NhZ2VQb3J0cyksIHRhcmdldE9yaWdpbiwgY2FsbGVyRE9NV2luZG93KCZzdGF0ZSkp
KTsKLQotICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotfQotCi1KU1ZhbHVlIEpTRE9NV2luZG93
Ojpwb3N0TWVzc2FnZShFeGVjU3RhdGUmIHN0YXRlKQotewotICAgIHJldHVybiBoYW5kbGVQb3N0
TWVzc2FnZSh3cmFwcGVkKCksIHN0YXRlKTsKLX0KLQogSlNWYWx1ZSBKU0RPTVdpbmRvdzo6c2V0
VGltZW91dChFeGVjU3RhdGUmIHN0YXRlKQogewogICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RlZGljYXRlZFdvcmtlckdsb2JhbFNj
b3BlQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ3VzdG9tLmNwcAkocmV2aXNpb24gMjA5MjYxKQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29w
ZUN1c3RvbS5jcHAJKG5vbmV4aXN0ZW50KQpAQCAtMSw0NyArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDA5IEFwcGxlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDksIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJp
YnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaW5jbHVkZSAiSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5oIgotCi0j
aW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCi0jaW5jbHVkZSAiSlNNZXNzYWdlUG9ydEN1c3RvbS5o
IgotCi11c2luZyBuYW1lc3BhY2UgSlNDOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUpTQzo6
SlNWYWx1ZSBKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlOjpwb3N0TWVzc2FnZShKU0M6OkV4
ZWNTdGF0ZSYgc3RhdGUpCi17Ci0gICAgcmV0dXJuIGhhbmRsZVBvc3RNZXNzYWdlKHN0YXRlLCB3
cmFwcGVkKCkpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCgpQcm9wZXJ0eSBjaGFuZ2Vz
IG9uOiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RlZGljYXRlZFdvcmtlckdsb2JhbFNj
b3BlQ3VzdG9tLmNwcApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTEgKzAs
MCAjIwotbmF0aXZlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRDdXN0b20uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRDdXN0b20uY3BwCShy
ZXZpc2lvbiAyMDkyNjEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VQ
b3J0Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsMjAgKzI3LDYgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJKU01lc3NhZ2VQb3J0LmgiCiAKLSNpbmNsdWRlICJFdmVu
dC5oIgotI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKLSNpbmNsdWRlICJGcmFtZS5oIgotI2lu
Y2x1ZGUgIkpTRE9NQmluZGluZy5oIgotI2luY2x1ZGUgIkpTRE9NR2xvYmFsT2JqZWN0LmgiCi0j
aW5jbHVkZSAiSlNFdmVudC5oIgotI2luY2x1ZGUgIkpTRXZlbnRMaXN0ZW5lci5oIgotI2luY2x1
ZGUgIkpTTWVzc2FnZVBvcnRDdXN0b20uaCIKLSNpbmNsdWRlICJNZXNzYWdlUG9ydC5oIgotI2lu
Y2x1ZGUgPGhlYXAvU2xvdFZpc2l0b3JJbmxpbmVzLmg+Ci0jaW5jbHVkZSA8cnVudGltZS9FcnJv
ci5oPgotI2luY2x1ZGUgPHJ1bnRpbWUvSlNBcnJheUJ1ZmZlci5oPgotI2luY2x1ZGUgPHd0Zi90
ZXh0L0F0b21pY1N0cmluZy5oPgotCiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CkBAIC01Miw1MyArMzgsNCBAQCB2b2lkIEpTTWVzc2FnZVBvcnQ6OnZpc2l0QWRk
aXRpb25hbENoaWxkCiAgICAgICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChwb3J0KTsKIH0KIAot
SlNDOjpKU1ZhbHVlIEpTTWVzc2FnZVBvcnQ6OnBvc3RNZXNzYWdlKEpTQzo6RXhlY1N0YXRlJiBz
dGF0ZSkKLXsKLSAgICByZXR1cm4gaGFuZGxlUG9zdE1lc3NhZ2Uoc3RhdGUsIHdyYXBwZWQoKSk7
Ci19Ci0KLXZvaWQgZXh0cmFjdFRyYW5zZmVyYWJsZXMoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBK
U0M6OkpTVmFsdWUgdmFsdWUsIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYgcG9ydEFycmF5
LCBWZWN0b3I8UmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+PiYgYXJyYXlCdWZmZXJzKQotewotICAg
IFZNJiB2bSA9IHN0YXRlLnZtKCk7Ci0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwotCi0gICAgaWYgKHZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKLSAgICAgICAg
cG9ydEFycmF5LnJlc2l6ZSgwKTsKLSAgICAgICAgYXJyYXlCdWZmZXJzLnJlc2l6ZSgwKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIFZhbGlkYXRpb24gb2Ygc2VxdWVuY2UgdHlw
ZXMsIHBlciBXZWJJREwgc3BlYyA0LjEuMTMuCi0gICAgdW5zaWduZWQgbGVuZ3RoID0gMDsKLSAg
ICBKU09iamVjdCogb2JqZWN0ID0gdG9KU1NlcXVlbmNlKHN0YXRlLCB2YWx1ZSwgbGVuZ3RoKTsK
LSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwotCi0gICAgZm9yICh1bnNp
Z25lZCBpID0gMCA7IGkgPCBsZW5ndGg7ICsraSkgewotICAgICAgICBKU1ZhbHVlIHZhbHVlID0g
b2JqZWN0LT5nZXQoJnN0YXRlLCBpKTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgdm9pZCgpKTsKLQotICAgICAgICBpZiAodmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkgewot
ICAgICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgSU5WQUxJRF9TVEFURV9FUlIpOwot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gVmFsaWRhdGlvbiBv
ZiBPYmplY3RzIGltcGxlbWVudGluZyBhbiBpbnRlcmZhY2UsIHBlciBXZWJJREwgc3BlYyA0LjEu
MTUuCi0gICAgICAgIGlmIChSZWZQdHI8TWVzc2FnZVBvcnQ+IHBvcnQgPSBKU01lc3NhZ2VQb3J0
Ojp0b1dyYXBwZWQodmFsdWUpKSB7Ci0gICAgICAgICAgICAvLyBDaGVjayBmb3IgZHVwbGljYXRl
IHBvcnRzLgotICAgICAgICAgICAgaWYgKHBvcnRBcnJheS5jb250YWlucyhwb3J0KSkgewotICAg
ICAgICAgICAgICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIElOVkFMSURfU1RBVEVfRVJSKTsK
LSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBwb3J0
QXJyYXkuYXBwZW5kKFdURk1vdmUocG9ydCkpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgaWYgKFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSB0b1Bvc3NpYmx5U2hhcmVk
QXJyYXlCdWZmZXIodmFsdWUpKQotICAgICAgICAgICAgICAgIGFycmF5QnVmZmVycy5hcHBlbmQo
V1RGTW92ZShhcnJheUJ1ZmZlcikpOwotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBzY29wZSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotfQotCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VQb3J0Q3Vz
dG9tLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdl
UG9ydEN1c3RvbS5oCShyZXZpc2lvbiAyMDkyNjEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU01lc3NhZ2VQb3J0Q3VzdG9tLmgJKG5vbmV4aXN0ZW50KQpAQCAtMSw2NCArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0g
KiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQot
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNw
cmFnbWEgb25jZQotCi0jaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIKLSNpbmNsdWRlIDxydW50aW1l
L0Vycm9yLmg+Ci0jaW5jbHVkZSA8cnVudGltZS9KU0NJbmxpbmVzLmg+Ci0jaW5jbHVkZSA8cnVu
dGltZS9KU0NKU1ZhbHVlLmg+Ci0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi12b2lkIGV4dHJhY3RUcmFuc2ZlcmFibGVzKEpTQzo6RXhlY1N0YXRlJiwg
SlNDOjpKU1ZhbHVlLCBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4mLCBWZWN0b3I8UmVmUHRy
PEpTQzo6QXJyYXlCdWZmZXI+PiYpOwotCi0vLyBIZWxwZXIgZnVuY3Rpb24gdG8gY29udmVydCBm
cm9tIEpTIHBvc3RNZXNzYWdlIGFyZ3VtZW50cyB0byBXZWJDb3JlIHBvc3RNZXNzYWdlIGFyZ3Vt
ZW50cy4KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBKU0M6OkpTVmFsdWUgaGFuZGxlUG9z
dE1lc3NhZ2UoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBUJiBvYmplY3QpCi17Ci0gICAgSlNDOjpW
TSYgdm0gPSBzdGF0ZS52bSgpOwotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKLQotICAgIGlmIChVTkxJS0VMWShzdGF0ZS5hcmd1bWVudENvdW50KCkgPCAxKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKCZzdGF0ZSwgc2NvcGUsIGNyZWF0ZU5vdEVub3Vn
aEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOwotCi0gICAgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9y
dD4+IG1lc3NhZ2VQb3J0QXJyYXk7Ci0gICAgVmVjdG9yPFJlZlB0cjxKU0M6OkFycmF5QnVmZmVy
Pj4gYXJyYXlCdWZmZXJBcnJheTsKLSAgICBleHRyYWN0VHJhbnNmZXJhYmxlcyhzdGF0ZSwgc3Rh
dGUuYXJndW1lbnQoMSksIG1lc3NhZ2VQb3J0QXJyYXksIGFycmF5QnVmZmVyQXJyYXkpOwotCi0g
ICAgYXV0byBtZXNzYWdlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoc3RhdGUsIHN0
YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApLCBtZXNzYWdlUG9ydEFycmF5LCBXVEZNb3ZlKGFycmF5
QnVmZmVyQXJyYXkpKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU0M6OkpTVmFs
dWUoKSk7Ci0KLSAgICBwcm9wYWdhdGVFeGNlcHRpb24oc3RhdGUsIHNjb3BlLCBvYmplY3QucG9z
dE1lc3NhZ2UoV1RGTW92ZShtZXNzYWdlKSwgV1RGTW92ZShtZXNzYWdlUG9ydEFycmF5KSkpOwot
ICAgIHJldHVybiBKU0M6OmpzVW5kZWZpbmVkKCk7Ci19Ci0KLX0KClByb3BlcnR5IGNoYW5nZXMg
b246IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRDdXN0b20uaApfX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fCkRlbGV0ZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTEgKzAsMCAjIwotbmF0aXZlClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTV29ya2VyQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1dvcmtlckN1c3RvbS5jcHAJKHJldmlzaW9uIDIwOTI2MSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzEsNyArMzEsNiBAQAogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgogI2luY2x1ZGUgIkpTRE9N
R2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNET01XaW5kb3dDdXN0b20uaCIKLSNpbmNsdWRl
ICJKU01lc3NhZ2VQb3J0Q3VzdG9tLmgiCiAjaW5jbHVkZSAiV29ya2VyLmgiCiAjaW5jbHVkZSA8
cnVudGltZS9FcnJvci5oPgogCkBAIC0zOSwxMSArMzgsNiBAQCB1c2luZyBuYW1lc3BhY2UgSlND
OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUpTQzo6SlNWYWx1ZSBKU1dvcmtlcjo6cG9zdE1l
c3NhZ2UoSlNDOjpFeGVjU3RhdGUmIHN0YXRlKQotewotICAgIHJldHVybiBoYW5kbGVQb3N0TWVz
c2FnZShzdGF0ZSwgd3JhcHBlZCgpKTsKLX0KLQogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBjb25zdHJ1Y3RKU1dvcmtlcihFeGVjU3RhdGUmIHN0YXRlKQogewogICAgIFZNJiB2bSA9IHN0
YXRlLnZtKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2Ny
aXB0VmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAJKHJldmlzaW9uIDIwOTI2MSkKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTkyLDYgKzkyLDE2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIGNvbnN0IHVu
c2lnbmVkIG1heGltdW1GaWx0ZXJSZWN1cnNpb24gPSA0MDAwMDsKIAorZW51bSBjbGFzcyBTZXJp
YWxpemF0aW9uUmV0dXJuQ29kZSB7CisgICAgU3VjY2Vzc2Z1bGx5Q29tcGxldGVkLAorICAgIFN0
YWNrT3ZlcmZsb3dFcnJvciwKKyAgICBJbnRlcnJ1cHRlZEV4ZWN1dGlvbkVycm9yLAorICAgIFZh
bGlkYXRpb25FcnJvciwKKyAgICBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yLAorICAgIERhdGFDbG9u
ZUVycm9yLAorICAgIFVuc3BlY2lmaWVkRXJyb3IKK307CisKIGVudW0gV2Fsa2VyU3RhdGUgeyBT
dGF0ZVVua25vd24sIEFycmF5U3RhcnRTdGF0ZSwgQXJyYXlTdGFydFZpc2l0TWVtYmVyLCBBcnJh
eUVuZFZpc2l0TWVtYmVyLAogICAgIE9iamVjdFN0YXJ0U3RhdGUsIE9iamVjdFN0YXJ0VmlzaXRN
ZW1iZXIsIE9iamVjdEVuZFZpc2l0TWVtYmVyLAogICAgIE1hcERhdGFTdGFydFZpc2l0RW50cnks
IE1hcERhdGFFbmRWaXNpdEtleSwgTWFwRGF0YUVuZFZpc2l0VmFsdWUsCkBAIC0zNzQsNyArMzg0
LDcgQEAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cmluZ0RhdGFJczhCaXRGbAogICogICAgPGZh
Y3RvclNpemU6dWludDMyX3Q+IDxmYWN0b3I6Ynl0ZXtmYWN0b3JTaXplfT4gPGNydEV4cG9uZW50
U2l6ZTp1aW50MzJfdD4gPGNydEV4cG9uZW50OmJ5dGV7Y3J0RXhwb25lbnRTaXplfT4gPGNydENv
ZWZmaWNpZW50U2l6ZTp1aW50MzJfdD4gPGNydENvZWZmaWNpZW50OmJ5dGV7Y3J0Q29lZmZpY2ll
bnRTaXplfT4KICAqLwogCi10eXBlZGVmIHN0ZDo6cGFpcjxKU0M6OkpTVmFsdWUsIFNlcmlhbGl6
YXRpb25SZXR1cm5Db2RlPiBEZXNlcmlhbGl6YXRpb25SZXN1bHQ7Cit1c2luZyBEZXNlcmlhbGl6
YXRpb25SZXN1bHQgPSBzdGQ6OnBhaXI8SlNDOjpKU1ZhbHVlLCBTZXJpYWxpemF0aW9uUmV0dXJu
Q29kZT47CiAKIGNsYXNzIENsb25lQmFzZSB7CiBwcm90ZWN0ZWQ6CkBAIC0zOTEsMTMgKzQwMSw2
IEBAIHByb3RlY3RlZDoKICAgICAgICAgcmV0dXJuIHNjb3BlLmV4Y2VwdGlvbigpOwogICAgIH0K
IAotICAgIHZvaWQgdGhyb3dTdGFja092ZXJmbG93KCkKLSAgICB7Ci0gICAgICAgIFZNJiB2bSA9
IG1fZXhlYy0+dm0oKTsKLSAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwotICAgICAgICB0aHJvd0V4Y2VwdGlvbihtX2V4ZWMsIHNjb3BlLCBjcmVhdGVTdGFja092
ZXJmbG93RXJyb3IobV9leGVjKSk7Ci0gICAgfQotCiAgICAgdm9pZCBmYWlsKCkKICAgICB7CiAg
ICAgICAgIG1fZmFpbGVkID0gdHJ1ZTsKQEAgLTczMSw3ICs3MzQsNyBAQCBwcml2YXRlOgogICAg
ICAgICB3cml0ZShzdGF0aWNfY2FzdDx1aW50MzJfdD4oYXJyYXlCdWZmZXJWaWV3LT5ieXRlTGVu
Z3RoKCkpKTsKICAgICAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlciA9IGFycmF5
QnVmZmVyVmlldy0+cG9zc2libHlTaGFyZWRCdWZmZXIoKTsKICAgICAgICAgaWYgKCFhcnJheUJ1
ZmZlcikgewotICAgICAgICAgICAgY29kZSA9IFZhbGlkYXRpb25FcnJvcjsKKyAgICAgICAgICAg
IGNvZGUgPSBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZTo6VmFsaWRhdGlvbkVycm9yOwogICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICAgICAgSlNWYWx1ZSBidWZmZXJPYmog
PSB0b0pTKG1fZXhlYywganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4obV9leGVjLT5sZXhpY2Fs
R2xvYmFsT2JqZWN0KCkpLCBhcnJheUJ1ZmZlci5nZXQoKSk7CkBAIC04NDEsMTIgKzg0NCwxMiBA
QCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgLy8gTWVzc2FnZVBvcnQgb2JqZWN0IGNvdWxkIG5vdCBi
ZSBmb3VuZCBpbiB0cmFuc2ZlcnJlZCBtZXNzYWdlIHBvcnRzCi0gICAgICAgICAgICAgICAgY29k
ZSA9IFZhbGlkYXRpb25FcnJvcjsKKyAgICAgICAgICAgICAgICBjb2RlID0gU2VyaWFsaXphdGlv
blJldHVybkNvZGU6OlZhbGlkYXRpb25FcnJvcjsKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChBcnJheUJ1ZmZlciogYXJyYXlCdWZm
ZXIgPSB0b1Bvc3NpYmx5U2hhcmVkQXJyYXlCdWZmZXIob2JqKSkgewogICAgICAgICAgICAgICAg
IGlmIChhcnJheUJ1ZmZlci0+aXNOZXV0ZXJlZCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNv
ZGUgPSBWYWxpZGF0aW9uRXJyb3I7CisgICAgICAgICAgICAgICAgICAgIGNvZGUgPSBTZXJpYWxp
emF0aW9uUmV0dXJuQ29kZTo6VmFsaWRhdGlvbkVycm9yOwogICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgT2JqZWN0UG9v
bDo6aXRlcmF0b3IgaW5kZXggPSBtX3RyYW5zZmVycmVkQXJyYXlCdWZmZXJzLmZpbmQob2JqKTsK
QEAgLTEyMzQsNyArMTIzNyw3IEBAIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlIENsb25lU2VyaWFs
aXplcjoKICAgICAgICAgICAgIGNhc2UgQXJyYXlTdGFydFN0YXRlOiB7CiAgICAgICAgICAgICAg
ICAgQVNTRVJUKGlzQXJyYXkoaW5WYWx1ZSkpOwogICAgICAgICAgICAgICAgIGlmIChpbnB1dE9i
amVjdFN0YWNrLnNpemUoKSA+IG1heGltdW1GaWx0ZXJSZWN1cnNpb24pCi0gICAgICAgICAgICAg
ICAgICAgIHJldHVybiBTdGFja092ZXJmbG93RXJyb3I7CisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZTo6U3RhY2tPdmVyZmxvd0Vycm9yOwogCiAgICAg
ICAgICAgICAgICAgSlNBcnJheSogaW5BcnJheSA9IGFzQXJyYXkoaW5WYWx1ZSk7CiAgICAgICAg
ICAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gaW5BcnJheS0+bGVuZ3RoKCk7CkBAIC0xMjczLDkg
KzEyNzYsOSBAQCBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZSBDbG9uZVNlcmlhbGl6ZXI6CiAgICAg
ICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgd3JpdGUoaW5kZXgpOwotICAgICAgICAg
ICAgICAgIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlIHRlcm1pbmFsQ29kZSA9IFN1Y2Nlc3NmdWxs
eUNvbXBsZXRlZDsKKyAgICAgICAgICAgICAgICBhdXRvIHRlcm1pbmFsQ29kZSA9IFNlcmlhbGl6
YXRpb25SZXR1cm5Db2RlOjpTdWNjZXNzZnVsbHlDb21wbGV0ZWQ7CiAgICAgICAgICAgICAgICAg
aWYgKGR1bXBJZlRlcm1pbmFsKGluVmFsdWUsIHRlcm1pbmFsQ29kZSkpIHsKLSAgICAgICAgICAg
ICAgICAgICAgaWYgKHRlcm1pbmFsQ29kZSAhPSBTdWNjZXNzZnVsbHlDb21wbGV0ZWQpCisgICAg
ICAgICAgICAgICAgICAgIGlmICh0ZXJtaW5hbENvZGUgIT0gU2VyaWFsaXphdGlvblJldHVybkNv
ZGU6OlN1Y2Nlc3NmdWxseUNvbXBsZXRlZCkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biB0ZXJtaW5hbENvZGU7CiAgICAgICAgICAgICAgICAgICAgIGluZGV4U3RhY2subGFzdCgpKys7
CiAgICAgICAgICAgICAgICAgICAgIGdvdG8gYXJyYXlTdGFydFZpc2l0TWVtYmVyOwpAQCAtMTI5
MSw3ICsxMjk0LDcgQEAgU2VyaWFsaXphdGlvblJldHVybkNvZGUgQ2xvbmVTZXJpYWxpemVyOgog
ICAgICAgICAgICAgY2FzZSBPYmplY3RTdGFydFN0YXRlOiB7CiAgICAgICAgICAgICAgICAgQVNT
RVJUKGluVmFsdWUuaXNPYmplY3QoKSk7CiAgICAgICAgICAgICAgICAgaWYgKGlucHV0T2JqZWN0
U3RhY2suc2l6ZSgpID4gbWF4aW11bUZpbHRlclJlY3Vyc2lvbikKLSAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIFN0YWNrT3ZlcmZsb3dFcnJvcjsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlOjpTdGFja092ZXJmbG93RXJyb3I7CiAgICAgICAgICAg
ICAgICAgSlNPYmplY3QqIGluT2JqZWN0ID0gYXNPYmplY3QoaW5WYWx1ZSk7CiAgICAgICAgICAg
ICAgICAgaWYgKCFzdGFydE9iamVjdChpbk9iamVjdCkpCiAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwpAQCAtMTMwMCw3ICsxMzAzLDcgQEAgU2VyaWFsaXphdGlvblJldHVybkNvZGUgQ2xvbmVT
ZXJpYWxpemVyOgogICAgICAgICAgICAgICAgIC8vIHRoZSBpbnB1dCBpcyBub3QgYW4gT2JqZWN0
IG9iamVjdCB0aGVuIHdlIHNob3VsZCB0aHJvdwogICAgICAgICAgICAgICAgIC8vIGEgRGF0YUNs
b25lRXJyb3IuCiAgICAgICAgICAgICAgICAgaWYgKGluT2JqZWN0LT5jbGFzc0luZm8oKSAhPSBK
U0ZpbmFsT2JqZWN0OjppbmZvKCkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBEYXRhQ2xv
bmVFcnJvcjsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFNlcmlhbGl6YXRpb25SZXR1cm5D
b2RlOjpEYXRhQ2xvbmVFcnJvcjsKICAgICAgICAgICAgICAgICBpbnB1dE9iamVjdFN0YWNrLmFw
cGVuZChpbk9iamVjdCk7CiAgICAgICAgICAgICAgICAgaW5kZXhTdGFjay5hcHBlbmQoMCk7CiAg
ICAgICAgICAgICAgICAgcHJvcGVydHlTdGFjay5hcHBlbmQoUHJvcGVydHlOYW1lQXJyYXkobV9l
eGVjLCBQcm9wZXJ0eU5hbWVNb2RlOjpTdHJpbmdzKSk7CkBAIC0xMzIxLDcgKzEzMjQsNyBAQCBT
ZXJpYWxpemF0aW9uUmV0dXJuQ29kZSBDbG9uZVNlcmlhbGl6ZXI6CiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgIGluVmFsdWUgPSBnZXRQcm9wZXJ0eShvYmplY3QsIHByb3BlcnRp
ZXNbaW5kZXhdKTsKICAgICAgICAgICAgICAgICBpZiAoc2hvdWxkVGVybWluYXRlKCkpCi0gICAg
ICAgICAgICAgICAgICAgIHJldHVybiBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yOworICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gU2VyaWFsaXphdGlvblJldHVybkNvZGU6OkV4aXN0aW5nRXhjZXB0
aW9uRXJyb3I7CiAKICAgICAgICAgICAgICAgICBpZiAoIWluVmFsdWUpIHsKICAgICAgICAgICAg
ICAgICAgICAgLy8gUHJvcGVydHkgd2FzIHJlbW92ZWQgZHVyaW5nIHNlcmlhbGlzYXRpb24KQEAg
LTEzMzEsMjAgKzEzMzQsMjAgQEAgU2VyaWFsaXphdGlvblJldHVybkNvZGUgQ2xvbmVTZXJpYWxp
emVyOgogICAgICAgICAgICAgICAgIHdyaXRlKHByb3BlcnRpZXNbaW5kZXhdKTsKIAogICAgICAg
ICAgICAgICAgIGlmIChzaG91bGRUZXJtaW5hdGUoKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIEV4aXN0aW5nRXhjZXB0aW9uRXJyb3I7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBT
ZXJpYWxpemF0aW9uUmV0dXJuQ29kZTo6RXhpc3RpbmdFeGNlcHRpb25FcnJvcjsKIAotICAgICAg
ICAgICAgICAgIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlIHRlcm1pbmFsQ29kZSA9IFN1Y2Nlc3Nm
dWxseUNvbXBsZXRlZDsKKyAgICAgICAgICAgICAgICBhdXRvIHRlcm1pbmFsQ29kZSA9IFNlcmlh
bGl6YXRpb25SZXR1cm5Db2RlOjpTdWNjZXNzZnVsbHlDb21wbGV0ZWQ7CiAgICAgICAgICAgICAg
ICAgaWYgKCFkdW1wSWZUZXJtaW5hbChpblZhbHVlLCB0ZXJtaW5hbENvZGUpKSB7CiAgICAgICAg
ICAgICAgICAgICAgIHN0YXRlU3RhY2suYXBwZW5kKE9iamVjdEVuZFZpc2l0TWVtYmVyKTsKICAg
ICAgICAgICAgICAgICAgICAgZ290byBzdGF0ZVVua25vd247CiAgICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgIGlmICh0ZXJtaW5hbENvZGUgIT0gU3VjY2Vzc2Z1bGx5Q29tcGxldGVk
KQorICAgICAgICAgICAgICAgIGlmICh0ZXJtaW5hbENvZGUgIT0gU2VyaWFsaXphdGlvblJldHVy
bkNvZGU6OlN1Y2Nlc3NmdWxseUNvbXBsZXRlZCkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHRlcm1pbmFsQ29kZTsKICAgICAgICAgICAgICAgICBGQUxMVEhST1VHSDsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIGNhc2UgT2JqZWN0RW5kVmlzaXRNZW1iZXI6IHsKICAgICAgICAgICAg
ICAgICBpZiAoc2hvdWxkVGVybWluYXRlKCkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBF
eGlzdGluZ0V4Y2VwdGlvbkVycm9yOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gU2VyaWFs
aXphdGlvblJldHVybkNvZGU6OkV4aXN0aW5nRXhjZXB0aW9uRXJyb3I7CiAKICAgICAgICAgICAg
ICAgICBpbmRleFN0YWNrLmxhc3QoKSsrOwogICAgICAgICAgICAgICAgIGdvdG8gb2JqZWN0U3Rh
cnRWaXNpdE1lbWJlcjsKQEAgLTEzNTIsNyArMTM1NSw3IEBAIFNlcmlhbGl6YXRpb25SZXR1cm5D
b2RlIENsb25lU2VyaWFsaXplcjoKICAgICAgICAgICAgIG1hcFN0YXJ0U3RhdGU6IHsKICAgICAg
ICAgICAgICAgICBBU1NFUlQoaW5WYWx1ZS5pc09iamVjdCgpKTsKICAgICAgICAgICAgICAgICBp
ZiAoaW5wdXRPYmplY3RTdGFjay5zaXplKCkgPiBtYXhpbXVtRmlsdGVyUmVjdXJzaW9uKQotICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gU3RhY2tPdmVyZmxvd0Vycm9yOworICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gU2VyaWFsaXphdGlvblJldHVybkNvZGU6OlN0YWNrT3ZlcmZsb3dFcnJv
cjsKICAgICAgICAgICAgICAgICBKU01hcCogaW5NYXAgPSBqc0Nhc3Q8SlNNYXAqPihpblZhbHVl
KTsKICAgICAgICAgICAgICAgICBpZiAoIXN0YXJ0TWFwKGluTWFwKSkKICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CkBAIC0xMzk2LDcgKzEzOTksNyBAQCBTZXJpYWxpemF0aW9uUmV0dXJuQ29k
ZSBDbG9uZVNlcmlhbGl6ZXI6CiAgICAgICAgICAgICBzZXRTdGFydFN0YXRlOiB7CiAgICAgICAg
ICAgICAgICAgQVNTRVJUKGluVmFsdWUuaXNPYmplY3QoKSk7CiAgICAgICAgICAgICAgICAgaWYg
KGlucHV0T2JqZWN0U3RhY2suc2l6ZSgpID4gbWF4aW11bUZpbHRlclJlY3Vyc2lvbikKLSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIFN0YWNrT3ZlcmZsb3dFcnJvcjsKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlOjpTdGFja092ZXJmbG93RXJyb3I7
CiAgICAgICAgICAgICAgICAgSlNTZXQqIGluU2V0ID0ganNDYXN0PEpTU2V0Kj4oaW5WYWx1ZSk7
CiAgICAgICAgICAgICAgICAgaWYgKCFzdGFydFNldChpblNldCkpCiAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwpAQCAtMTQzMSw5ICsxNDM0LDkgQEAgU2VyaWFsaXphdGlvblJldHVybkNvZGUg
Q2xvbmVTZXJpYWxpemVyOgogCiAgICAgICAgICAgICBzdGF0ZVVua25vd246CiAgICAgICAgICAg
ICBjYXNlIFN0YXRlVW5rbm93bjogewotICAgICAgICAgICAgICAgIFNlcmlhbGl6YXRpb25SZXR1
cm5Db2RlIHRlcm1pbmFsQ29kZSA9IFN1Y2Nlc3NmdWxseUNvbXBsZXRlZDsKKyAgICAgICAgICAg
ICAgICBhdXRvIHRlcm1pbmFsQ29kZSA9IFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlOjpTdWNjZXNz
ZnVsbHlDb21wbGV0ZWQ7CiAgICAgICAgICAgICAgICAgaWYgKGR1bXBJZlRlcm1pbmFsKGluVmFs
dWUsIHRlcm1pbmFsQ29kZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHRlcm1pbmFsQ29k
ZSAhPSBTdWNjZXNzZnVsbHlDb21wbGV0ZWQpCisgICAgICAgICAgICAgICAgICAgIGlmICh0ZXJt
aW5hbENvZGUgIT0gU2VyaWFsaXphdGlvblJldHVybkNvZGU6OlN1Y2Nlc3NmdWxseUNvbXBsZXRl
ZCkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0ZXJtaW5hbENvZGU7CiAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KQEAgLTE0NTQsMTMgKzE0NTcs
MTEgQEAgU2VyaWFsaXphdGlvblJldHVybkNvZGUgQ2xvbmVTZXJpYWxpemVyOgogICAgICAgICBz
dGF0ZVN0YWNrLnJlbW92ZUxhc3QoKTsKICAgICB9CiAgICAgaWYgKG1fZmFpbGVkKQotICAgICAg
ICByZXR1cm4gVW5zcGVjaWZpZWRFcnJvcjsKKyAgICAgICAgcmV0dXJuIFNlcmlhbGl6YXRpb25S
ZXR1cm5Db2RlOjpVbnNwZWNpZmllZEVycm9yOwogCi0gICAgcmV0dXJuIFN1Y2Nlc3NmdWxseUNv
bXBsZXRlZDsKKyAgICByZXR1cm4gU2VyaWFsaXphdGlvblJldHVybkNvZGU6OlN1Y2Nlc3NmdWxs
eUNvbXBsZXRlZDsKIH0KIAotdHlwZWRlZiBWZWN0b3I8SlNDOjpBcnJheUJ1ZmZlckNvbnRlbnRz
PiBBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk7Ci0KIGNsYXNzIENsb25lRGVzZXJpYWxpemVyIDog
Q2xvbmVCYXNlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgU3RyaW5nIGRlc2VyaWFsaXplU3RyaW5n
KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYnVmZmVyKQpAQCAtMTQ4OSwxMCArMTQ5MCwxMCBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIERlc2VyaWFsaXphdGlvblJlc3VsdCBkZXNlcmlhbGl6ZShFeGVj
U3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZlY3RvcjxSZWZQdHI8
TWVzc2FnZVBvcnQ+PiYgbWVzc2FnZVBvcnRzLCBBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkqIGFy
cmF5QnVmZmVyQ29udGVudHNBcnJheSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBidWZmZXIsIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgY29uc3QgVmVjdG9yPFN0cmluZz4gYmxvYkZp
bGVQYXRocykKICAgICB7CiAgICAgICAgIGlmICghYnVmZmVyLnNpemUoKSkKLSAgICAgICAgICAg
IHJldHVybiBzdGQ6Om1ha2VfcGFpcihqc051bGwoKSwgVW5zcGVjaWZpZWRFcnJvcik7CisgICAg
ICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIoanNOdWxsKCksIFNlcmlhbGl6YXRpb25SZXR1
cm5Db2RlOjpVbnNwZWNpZmllZEVycm9yKTsKICAgICAgICAgQ2xvbmVEZXNlcmlhbGl6ZXIgZGVz
ZXJpYWxpemVyKGV4ZWMsIGdsb2JhbE9iamVjdCwgbWVzc2FnZVBvcnRzLCBhcnJheUJ1ZmZlckNv
bnRlbnRzQXJyYXksIGJ1ZmZlciwgYmxvYlVSTHMsIGJsb2JGaWxlUGF0aHMpOwogICAgICAgICBp
ZiAoIWRlc2VyaWFsaXplci5pc1ZhbGlkKCkpCi0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtl
X3BhaXIoSlNWYWx1ZSgpLCBWYWxpZGF0aW9uRXJyb3IpOworICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bWFrZV9wYWlyKEpTVmFsdWUoKSwgU2VyaWFsaXphdGlvblJldHVybkNvZGU6OlZhbGlkYXRp
b25FcnJvcik7CiAgICAgICAgIHJldHVybiBkZXNlcmlhbGl6ZXIuZGVzZXJpYWxpemUoKTsKICAg
ICB9CiAKQEAgLTE1NjksMTMgKzE1NzAsNiBAQCBwcml2YXRlOgogCiAgICAgRGVzZXJpYWxpemF0
aW9uUmVzdWx0IGRlc2VyaWFsaXplKCk7CiAKLSAgICB2b2lkIHRocm93VmFsaWRhdGlvbkVycm9y
KCkKLSAgICB7Ci0gICAgICAgIFZNJiB2bSA9IG1fZXhlYy0+dm0oKTsKLSAgICAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgICAgICB0aHJvd1R5cGVFcnJvciht
X2V4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlVuYWJsZSB0byBkZXNlcmlhbGl6ZSBkYXRhLiIp
KTsKLSAgICB9Ci0KICAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBtX3ZlcnNpb24g
PD0gQ3VycmVudFZlcnNpb247IH0KIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBib29sIHJl
YWRMaXR0bGVFbmRpYW4oVCYgdmFsdWUpCkBAIC0yNTI4LDcgKzI1MjIsNyBAQCBEZXNlcmlhbGl6
YXRpb25SZXN1bHQgQ2xvbmVEZXNlcmlhbGl6ZXI6CiAgICAgICAgIG9iamVjdFN0YXJ0U3RhdGU6
CiAgICAgICAgIGNhc2UgT2JqZWN0U3RhcnRTdGF0ZTogewogICAgICAgICAgICAgaWYgKG91dHB1
dE9iamVjdFN0YWNrLnNpemUoKSA+IG1heGltdW1GaWx0ZXJSZWN1cnNpb24pCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKEpTVmFsdWUoKSwgU3RhY2tPdmVyZmxvd0Vycm9y
KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIoSlNWYWx1ZSgpLCBTZXJp
YWxpemF0aW9uUmV0dXJuQ29kZTo6U3RhY2tPdmVyZmxvd0Vycm9yKTsKICAgICAgICAgICAgIEpT
T2JqZWN0KiBvdXRPYmplY3QgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChtX2V4ZWMsIG1fZ2xvYmFs
T2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSk7CiAgICAgICAgICAgICBtX2djQnVmZmVyLmFwcGVu
ZChvdXRPYmplY3QpOwogICAgICAgICAgICAgb3V0cHV0T2JqZWN0U3RhY2suYXBwZW5kKG91dE9i
amVjdCk7CkBAIC0yNTYzLDcgKzI1NTcsNyBAQCBEZXNlcmlhbGl6YXRpb25SZXN1bHQgQ2xvbmVE
ZXNlcmlhbGl6ZXI6CiAgICAgICAgIH0KICAgICAgICAgbWFwT2JqZWN0U3RhcnRTdGF0ZTogewog
ICAgICAgICAgICAgaWYgKG91dHB1dE9iamVjdFN0YWNrLnNpemUoKSA+IG1heGltdW1GaWx0ZXJS
ZWN1cnNpb24pCi0gICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKEpTVmFsdWUo
KSwgU3RhY2tPdmVyZmxvd0Vycm9yKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjptYWtl
X3BhaXIoSlNWYWx1ZSgpLCBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZTo6U3RhY2tPdmVyZmxvd0Vy
cm9yKTsKICAgICAgICAgICAgIEpTTWFwKiBtYXAgPSBKU01hcDo6Y3JlYXRlKG1fZXhlYywgbV9l
eGVjLT52bSgpLCBtX2dsb2JhbE9iamVjdC0+bWFwU3RydWN0dXJlKCkpOwogICAgICAgICAgICAg
aWYgKFVOTElLRUxZKHNjb3BlLmV4Y2VwdGlvbigpKSkKICAgICAgICAgICAgICAgICBnb3RvIGVy
cm9yOwpAQCAtMjU5NCw3ICsyNTg4LDcgQEAgRGVzZXJpYWxpemF0aW9uUmVzdWx0IENsb25lRGVz
ZXJpYWxpemVyOgogCiAgICAgICAgIHNldE9iamVjdFN0YXJ0U3RhdGU6IHsKICAgICAgICAgICAg
IGlmIChvdXRwdXRPYmplY3RTdGFjay5zaXplKCkgPiBtYXhpbXVtRmlsdGVyUmVjdXJzaW9uKQot
ICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihKU1ZhbHVlKCksIFN0YWNrT3Zl
cmZsb3dFcnJvcik7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKEpTVmFs
dWUoKSwgU2VyaWFsaXphdGlvblJldHVybkNvZGU6OlN0YWNrT3ZlcmZsb3dFcnJvcik7CiAgICAg
ICAgICAgICBKU1NldCogc2V0ID0gSlNTZXQ6OmNyZWF0ZShtX2V4ZWMsIG1fZXhlYy0+dm0oKSwg
bV9nbG9iYWxPYmplY3QtPnNldFN0cnVjdHVyZSgpKTsKICAgICAgICAgICAgIGlmIChVTkxJS0VM
WShzY29wZS5leGNlcHRpb24oKSkpCiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKQEAgLTI2
NDMsMTAgKzI2MzcsMTAgQEAgRGVzZXJpYWxpemF0aW9uUmVzdWx0IENsb25lRGVzZXJpYWxpemVy
OgogICAgIH0KICAgICBBU1NFUlQob3V0VmFsdWUpOwogICAgIEFTU0VSVCghbV9mYWlsZWQpOwot
ICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihvdXRWYWx1ZSwgU3VjY2Vzc2Z1bGx5Q29tcGxldGVk
KTsKKyAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIob3V0VmFsdWUsIFNlcmlhbGl6YXRpb25SZXR1
cm5Db2RlOjpTdWNjZXNzZnVsbHlDb21wbGV0ZWQpOwogZXJyb3I6CiAgICAgZmFpbCgpOwotICAg
IHJldHVybiBzdGQ6Om1ha2VfcGFpcihKU1ZhbHVlKCksIFZhbGlkYXRpb25FcnJvcik7CisgICAg
cmV0dXJuIHN0ZDo6bWFrZV9wYWlyKEpTVmFsdWUoKSwgU2VyaWFsaXphdGlvblJldHVybkNvZGU6
OlZhbGlkYXRpb25FcnJvcik7CiB9CiAKIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6flNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSgpCkBAIC0yNjY5LDE5ICsyNjYzLDEyIEBAIFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZTo6U2VyaWFsaXplZFNjcmlwdFYKICAgICAgICAgbV9ibG9iVVJMcy5hcHBlbmQodXJsLmlz
b2xhdGVkQ29weSgpKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTo6QXJyYXlCdWZmZXJDb250ZW50c0FycmF5PiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OnRyYW5z
ZmVyQXJyYXlCdWZmZXJzKAotICAgIEV4ZWNTdGF0ZSogZXhlYywgVmVjdG9yPFJlZlB0cjxKU0M6
OkFycmF5QnVmZmVyPj4mIGFycmF5QnVmZmVycywgU2VyaWFsaXphdGlvblJldHVybkNvZGUmIGNv
ZGUpCitFeGNlcHRpb25PcjxzdGQ6OnVuaXF1ZV9wdHI8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5
Pj4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjp0cmFuc2ZlckFycmF5QnVmZmVycyhjb25zdCBWZWN0
b3I8UmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+PiYgYXJyYXlCdWZmZXJzKQogewotICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgYXJyYXlCdWZmZXJzLnNpemUoKTsgaSsrKSB7Ci0gICAgICAgIGlm
IChhcnJheUJ1ZmZlcnNbaV0tPmlzTmV1dGVyZWQoKSkgewotICAgICAgICAgICAgY29kZSA9IFZh
bGlkYXRpb25FcnJvcjsKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICB9Ci0g
ICAgfQorICAgIGlmIChhcnJheUJ1ZmZlcnMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAogICAgIGF1dG8gY29udGVudHMgPSBzdGQ6Om1ha2VfdW5pcXVlPEFycmF5QnVmZmVy
Q29udGVudHNBcnJheT4oYXJyYXlCdWZmZXJzLnNpemUoKSk7Ci0gICAgVmVjdG9yPFJlZjxET01X
cmFwcGVyV29ybGQ+PiB3b3JsZHM7Ci0gICAgc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPihl
eGVjLT52bSgpLmNsaWVudERhdGEpLT5nZXRBbGxXb3JsZHMod29ybGRzKTsKIAogICAgIEhhc2hT
ZXQ8SlNDOjpBcnJheUJ1ZmZlcio+IHZpc2l0ZWQ7CiAgICAgZm9yIChzaXplX3QgYXJyYXlCdWZm
ZXJJbmRleCA9IDA7IGFycmF5QnVmZmVySW5kZXggPCBhcnJheUJ1ZmZlcnMuc2l6ZSgpOyBhcnJh
eUJ1ZmZlckluZGV4KyspIHsKQEAgLTI2OTAsMjkgKzI2NzcsMjAgQEAgc3RkOjp1bmlxdWVfcHRy
PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6QQogICAgICAgICB2aXNpdGVkLmFkZChhcnJheUJ1ZmZl
cnNbYXJyYXlCdWZmZXJJbmRleF0uZ2V0KCkpOwogCiAgICAgICAgIGJvb2wgcmVzdWx0ID0gYXJy
YXlCdWZmZXJzW2FycmF5QnVmZmVySW5kZXhdLT50cmFuc2ZlclRvKGNvbnRlbnRzLT5hdChhcnJh
eUJ1ZmZlckluZGV4KSk7Ci0gICAgICAgIGlmICghcmVzdWx0KSB7Ci0gICAgICAgICAgICBjb2Rl
ID0gVmFsaWRhdGlvbkVycm9yOwotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAg
IH0KKyAgICAgICAgaWYgKCFyZXN1bHQpCisgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsg
VHlwZUVycm9yIH07CiAgICAgfQotICAgIHJldHVybiBjb250ZW50czsKLX0KIAotUmVmUHRyPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoRXhlY1N0
YXRlJiBleGVjLCBKU1ZhbHVlIHZhbHVlLCBTZXJpYWxpemF0aW9uRXJyb3JNb2RlIHRocm93RXhj
ZXB0aW9ucykKLXsKLSAgICBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4gbWVzc2FnZVBvcnRz
OwotICAgIHJldHVybiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShleGVjLCB2YWx1ZSwg
bWVzc2FnZVBvcnRzLCB7IH0sIHRocm93RXhjZXB0aW9ucyk7CisgICAgcmV0dXJuIFdURk1vdmUo
Y29udGVudHMpOwogfQogCi1SZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBTZXJpYWxpemVk
U2NyaXB0VmFsdWU6OmNyZWF0ZShFeGVjU3RhdGUmIGV4ZWMsIEpTVmFsdWUgdmFsdWUsIFZlY3Rv
cjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYgbWVzc2FnZVBvcnRzLCBWZWN0b3I8UmVmUHRyPEpTQzo6
QXJyYXlCdWZmZXI+PiYmIGFycmF5QnVmZmVycywgU2VyaWFsaXphdGlvbkVycm9yTW9kZSB0aHJv
d0V4Y2VwdGlvbnMpCitSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBTZXJpYWxpemVkU2Ny
aXB0VmFsdWU6OmNyZWF0ZShFeGVjU3RhdGUmIGV4ZWMsIEpTVmFsdWUgdmFsdWUsIFNlcmlhbGl6
YXRpb25FcnJvck1vZGUgdGhyb3dFeGNlcHRpb25zKQogewogICAgIFZlY3Rvcjx1aW50OF90PiBi
dWZmZXI7CiAgICAgVmVjdG9yPFN0cmluZz4gYmxvYlVSTHM7Ci0gICAgU2VyaWFsaXphdGlvblJl
dHVybkNvZGUgY29kZSA9IENsb25lU2VyaWFsaXplcjo6c2VyaWFsaXplKCZleGVjLCB2YWx1ZSwg
bWVzc2FnZVBvcnRzLCBhcnJheUJ1ZmZlcnMsIGJsb2JVUkxzLCBidWZmZXIpOwotCi0gICAgc3Rk
Ojp1bmlxdWVfcHRyPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4gYXJyYXlCdWZmZXJDb250ZW50
c0FycmF5OwotICAgIGlmICghYXJyYXlCdWZmZXJzLmlzRW1wdHkoKSAmJiBzZXJpYWxpemF0aW9u
RGlkQ29tcGxldGVTdWNjZXNzZnVsbHkoY29kZSkpCi0gICAgICAgIGFycmF5QnVmZmVyQ29udGVu
dHNBcnJheSA9IHRyYW5zZmVyQXJyYXlCdWZmZXJzKCZleGVjLCBhcnJheUJ1ZmZlcnMsIGNvZGUp
OworICAgIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiBkdW1teU1lc3NhZ2VQb3J0czsKKyAg
ICBWZWN0b3I8UmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+PiBkdW1teUFycmF5QnVmZmVyczsKKyAg
ICBhdXRvIGNvZGUgPSBDbG9uZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZSgmZXhlYywgdmFsdWUsIGR1
bW15TWVzc2FnZVBvcnRzLCBkdW1teUFycmF5QnVmZmVycywgYmxvYlVSTHMsIGJ1ZmZlcik7CiAK
ICAgICBpZiAodGhyb3dFeGNlcHRpb25zID09IFRocm93aW5nKQogICAgICAgICBtYXliZVRocm93
RXhjZXB0aW9uSWZTZXJpYWxpemF0aW9uRmFpbGVkKCZleGVjLCBjb2RlKTsKQEAgLTI3MjAsNyAr
MjY5OCw2MSBAQCBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBTZXJpYWxpemVkCiAgICAg
aWYgKCFzZXJpYWxpemF0aW9uRGlkQ29tcGxldGVTdWNjZXNzZnVsbHkoY29kZSkpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2VyaWFsaXplZFNj
cmlwdFZhbHVlKFdURk1vdmUoYnVmZmVyKSwgYmxvYlVSTHMsIFdURk1vdmUoYXJyYXlCdWZmZXJD
b250ZW50c0FycmF5KSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZShXVEZNb3ZlKGJ1ZmZlciksIGJsb2JVUkxzLCBudWxscHRyKSk7Cit9CisKK0V4Y2Vw
dGlvbiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmV4Y2VwdGlvbkZvclNlcmlhbGl6YXRpb25GYWls
dXJlKFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlIGNvZGUpCit7CisgICAgQVNTRVJUKGNvZGUgIT0g
U2VyaWFsaXphdGlvblJldHVybkNvZGU6OlN1Y2Nlc3NmdWxseUNvbXBsZXRlZCk7CisgICAgCisg
ICAgc3dpdGNoIChjb2RlKSB7CisgICAgY2FzZSBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZTo6U3Rh
Y2tPdmVyZmxvd0Vycm9yOgorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU3RhY2tPdmVyZmxv
d0Vycm9yIH07CisgICAgY2FzZSBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZTo6VmFsaWRhdGlvbkVy
cm9yOgorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yIH07CisgICAgY2FzZSBT
ZXJpYWxpemF0aW9uUmV0dXJuQ29kZTo6RGF0YUNsb25lRXJyb3I6CisgICAgICAgIHJldHVybiBF
eGNlcHRpb24geyBEQVRBX0NMT05FX0VSUiB9OworICAgIGNhc2UgU2VyaWFsaXphdGlvblJldHVy
bkNvZGU6OkV4aXN0aW5nRXhjZXB0aW9uRXJyb3I6CisgICAgICAgIHJldHVybiBFeGNlcHRpb24g
eyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yIH07CisgICAgY2FzZSBTZXJpYWxpemF0aW9uUmV0dXJu
Q29kZTo6VW5zcGVjaWZpZWRFcnJvcjoKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVF
cnJvciB9OworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yIH07CisgICAgfQorfQorCitFeGNlcHRp
b25PcjxSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPj4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpj
cmVhdGUoRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSwgVmVjdG9yPEpTQzo6U3Ryb25n
PEpTQzo6SlNPYmplY3Q+PiYmIHRyYW5zZmVyTGlzdCwgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9y
dD4+JiBtZXNzYWdlUG9ydHMpCit7CisgICAgVmVjdG9yPFJlZlB0cjxKU0M6OkFycmF5QnVmZmVy
Pj4gYXJyYXlCdWZmZXJzOworICAgIGZvciAoYXV0byYgdHJhbnNmZXJhYmxlIDogdHJhbnNmZXJM
aXN0KSB7CisgICAgICAgIGlmIChSZWZQdHI8QXJyYXlCdWZmZXI+IGFycmF5QnVmZmVyID0gdG9Q
b3NzaWJseVNoYXJlZEFycmF5QnVmZmVyKHRyYW5zZmVyYWJsZS5nZXQoKSkpIHsKKyAgICAgICAg
ICAgIGlmIChhcnJheUJ1ZmZlci0+aXNOZXV0ZXJlZCgpKQorICAgICAgICAgICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBEQVRBX0NMT05FX0VSUiB9OworICAgICAgICAgICAgYXJyYXlCdWZmZXJz
LmFwcGVuZChXVEZNb3ZlKGFycmF5QnVmZmVyKSk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgfQorICAgICAgICBpZiAoUmVmUHRyPE1lc3NhZ2VQb3J0PiBwb3J0ID0gSlNNZXNzYWdl
UG9ydDo6dG9XcmFwcGVkKHRyYW5zZmVyYWJsZS5nZXQoKSkpIHsKKyAgICAgICAgICAgIC8vIEZJ
WE1FOiBUaGlzIHNob3VsZCBjaGVjayBpZiB0aGUgcG9ydCBpcyBkZXRhY2hlZCBhcyBwZXIgaHR0
cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvaW5mcmFzdHJ1Y3R1cmUuaHRtbCNp
c3RyYW5zZmVyYWJsZS4KKyAgICAgICAgICAgIG1lc3NhZ2VQb3J0cy5hcHBlbmQoV1RGTW92ZShw
b3J0KSk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBEQVRBX0NMT05FX0VSUiB9OworICAgIH0KKworICAgIFZlY3Rvcjx1aW50
OF90PiBidWZmZXI7CisgICAgVmVjdG9yPFN0cmluZz4gYmxvYlVSTHM7CisgICAgYXV0byBjb2Rl
ID0gQ2xvbmVTZXJpYWxpemVyOjpzZXJpYWxpemUoJnN0YXRlLCB2YWx1ZSwgbWVzc2FnZVBvcnRz
LCBhcnJheUJ1ZmZlcnMsIGJsb2JVUkxzLCBidWZmZXIpOworCisgICAgaWYgKGNvZGUgIT0gU2Vy
aWFsaXphdGlvblJldHVybkNvZGU6OlN1Y2Nlc3NmdWxseUNvbXBsZXRlZCkKKyAgICAgICAgcmV0
dXJuIGV4Y2VwdGlvbkZvclNlcmlhbGl6YXRpb25GYWlsdXJlKGNvZGUpOworCisgICAgYXV0byBh
cnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkgPSB0cmFuc2ZlckFycmF5QnVmZmVycyhhcnJheUJ1ZmZl
cnMpOworICAgIGlmIChhcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkuaGFzRXhjZXB0aW9uKCkpCisg
ICAgICAgIHJldHVybiBhcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkucmVsZWFzZUV4Y2VwdGlvbigp
OworCisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2VyaWFsaXplZFNjcmlwdFZhbHVlKFdURk1v
dmUoYnVmZmVyKSwgYmxvYlVSTHMsIGFycmF5QnVmZmVyQ29udGVudHNBcnJheS5yZWxlYXNlUmV0
dXJuVmFsdWUoKSkpOwogfQogCiBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBTZXJpYWxp
emVkU2NyaXB0VmFsdWU6OmNyZWF0ZShTdHJpbmdWaWV3IHN0cmluZykKQEAgLTI4MDQsMjIgKzI4
MzYsMjIgQEAgdm9pZCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6Om1heWJlVGhyb3dFeAogICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogCi0gICAgaWYgKGNvZGUgPT0gU3VjY2Vzc2Z1bGx5Q29tcGxldGVkKQorICAgIGlmIChj
b2RlID09IFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlOjpTdWNjZXNzZnVsbHlDb21wbGV0ZWQpCiAg
ICAgICAgIHJldHVybjsKICAgICAKICAgICBzd2l0Y2ggKGNvZGUpIHsKLSAgICBjYXNlIFN0YWNr
T3ZlcmZsb3dFcnJvcjoKKyAgICBjYXNlIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlOjpTdGFja092
ZXJmbG93RXJyb3I6CiAgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVT
dGFja092ZXJmbG93RXJyb3IoZXhlYykpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFZhbGlk
YXRpb25FcnJvcjoKKyAgICBjYXNlIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlOjpWYWxpZGF0aW9u
RXJyb3I6CiAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwo
IlVuYWJsZSB0byBkZXNlcmlhbGl6ZSBkYXRhLiIpKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBEYXRhQ2xvbmVFcnJvcjoKKyAgICBjYXNlIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlOjpEYXRh
Q2xvbmVFcnJvcjoKICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIERBVEFfQ0xPTkVfRVJS
KTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yOgorICAg
IGNhc2UgU2VyaWFsaXphdGlvblJldHVybkNvZGU6OkV4aXN0aW5nRXhjZXB0aW9uRXJyb3I6CiAg
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgVW5zcGVjaWZpZWRFcnJvcjoKKyAgICBjYXNlIFNlcmlh
bGl6YXRpb25SZXR1cm5Db2RlOjpVbnNwZWNpZmllZEVycm9yOgogICAgICAgICBicmVhazsKICAg
ICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTI4MjgsNyArMjg2
MCw3IEBAIHZvaWQgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjptYXliZVRocm93RXgKIAogYm9vbCBT
ZXJpYWxpemVkU2NyaXB0VmFsdWU6OnNlcmlhbGl6YXRpb25EaWRDb21wbGV0ZVN1Y2Nlc3NmdWxs
eShTZXJpYWxpemF0aW9uUmV0dXJuQ29kZSBjb2RlKQogewotICAgIHJldHVybiAoY29kZSA9PSBT
dWNjZXNzZnVsbHlDb21wbGV0ZWQpOworICAgIHJldHVybiAoY29kZSA9PSBTZXJpYWxpemF0aW9u
UmV0dXJuQ29kZTo6U3VjY2Vzc2Z1bGx5Q29tcGxldGVkKTsKIH0KIAogdWludDMyX3QgU2VyaWFs
aXplZFNjcmlwdFZhbHVlOjp3aXJlRm9ybWF0VmVyc2lvbigpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaAkocmV2aXNpb24g
MjA5MjYxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAK
KyNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgogI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVl
Lmg+CiAjaW5jbHVkZSA8aGVhcC9TdHJvbmcuaD4KICNpbmNsdWRlIDxydW50aW1lL0FycmF5QnVm
ZmVyLmg+CkBAIC00MiwyNSArNDMsMTggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJ
REJWYWx1ZTsKIGNsYXNzIE1lc3NhZ2VQb3J0OwotIAotZW51bSBTZXJpYWxpemF0aW9uUmV0dXJu
Q29kZSB7Ci0gICAgU3VjY2Vzc2Z1bGx5Q29tcGxldGVkLAotICAgIFN0YWNrT3ZlcmZsb3dFcnJv
ciwKLSAgICBJbnRlcnJ1cHRlZEV4ZWN1dGlvbkVycm9yLAotICAgIFZhbGlkYXRpb25FcnJvciwK
LSAgICBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yLAotICAgIERhdGFDbG9uZUVycm9yLAotICAgIFVu
c3BlY2lmaWVkRXJyb3IKLX07Ci0gICAgCitjbGFzcyBTaGFyZWRCdWZmZXI7CitlbnVtIGNsYXNz
IFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlOworCiBlbnVtIFNlcmlhbGl6YXRpb25FcnJvck1vZGUg
eyBOb25UaHJvd2luZywgVGhyb3dpbmcgfTsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOwordXNpbmcg
QXJyYXlCdWZmZXJDb250ZW50c0FycmF5ID0gVmVjdG9yPEpTQzo6QXJyYXlCdWZmZXJDb250ZW50
cz47CiAKIGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVm
Q291bnRlZDxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHsKIHB1YmxpYzoKICAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gY3JlYXRlKEpTQzo6RXhl
Y1N0YXRlJiwgSlNDOjpKU1ZhbHVlLCBTZXJpYWxpemF0aW9uRXJyb3JNb2RlID0gVGhyb3dpbmcp
OwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVl
PiBjcmVhdGUoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUsIFZlY3RvcjxSZWZQdHI8TWVz
c2FnZVBvcnQ+PiYsIFZlY3RvcjxSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4+JiYsIFNlcmlhbGl6
YXRpb25FcnJvck1vZGUgPSBUaHJvd2luZyk7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
RXhjZXB0aW9uT3I8UmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4+IGNyZWF0ZShKU0M6OkV4ZWNT
dGF0ZSYsIEpTQzo6SlNWYWx1ZSwgVmVjdG9yPEpTQzo6U3Ryb25nPEpTQzo6SlNPYmplY3Q+PiYm
LCBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4mKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBjcmVhdGUoU3RyaW5nVmlldyk7CiAg
ICAgc3RhdGljIFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGFkb3B0KFZlY3Rvcjx1aW50OF90
PiYmIGJ1ZmZlcikKQEAgLTEwMCwxMCArOTQsMTEgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQ
T1JUIH5TZXJpYWxpemVkU2NyaXB0VmFsdWUoKTsKIAogcHJpdmF0ZToKLSAgICB0eXBlZGVmIFZl
Y3RvcjxKU0M6OkFycmF5QnVmZmVyQ29udGVudHM+IEFycmF5QnVmZmVyQ29udGVudHNBcnJheTsK
ICAgICBzdGF0aWMgdm9pZCBtYXliZVRocm93RXhjZXB0aW9uSWZTZXJpYWxpemF0aW9uRmFpbGVk
KEpTQzo6RXhlY1N0YXRlKiwgU2VyaWFsaXphdGlvblJldHVybkNvZGUpOwogICAgIHN0YXRpYyBi
b29sIHNlcmlhbGl6YXRpb25EaWRDb21wbGV0ZVN1Y2Nlc3NmdWxseShTZXJpYWxpemF0aW9uUmV0
dXJuQ29kZSk7Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBcnJheUJ1ZmZlckNvbnRlbnRz
QXJyYXk+IHRyYW5zZmVyQXJyYXlCdWZmZXJzKEpTQzo6RXhlY1N0YXRlKiwgVmVjdG9yPFJlZlB0
cjxKU0M6OkFycmF5QnVmZmVyPj4mLCBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZSYpOworICAgIHN0
YXRpYyBFeGNlcHRpb24gZXhjZXB0aW9uRm9yU2VyaWFsaXphdGlvbkZhaWx1cmUoU2VyaWFsaXph
dGlvblJldHVybkNvZGUpOworCisgICAgc3RhdGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5pcXVlX3B0
cjxBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+PiB0cmFuc2ZlckFycmF5QnVmZmVycyhjb25zdCBW
ZWN0b3I8UmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+PiYpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQg
U2VyaWFsaXplZFNjcmlwdFZhbHVlKFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYmKTsKICAgICBTZXJp
YWxpemVkU2NyaXB0VmFsdWUoVmVjdG9yPHVuc2lnbmVkIGNoYXI+JiYsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBibG9iVVJMcywgc3RkOjp1bmlxdWVfcHRyPEFycmF5QnVmZmVyQ29udGVudHNBcnJh
eT4mJik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3IucG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9yLnBtCShyZXZpc2lvbiAyMDkyNjEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0JKHdvcmtpbmcgY29weSkKQEAgLTU5Nyw2ICs1OTcs
NyBAQCBzdWIgSXNSZWZQdHJUeXBlCiAgICAgcmV0dXJuIDAgaWYgJG9iamVjdC0+SXNTdHJpbmdU
eXBlKCR0eXBlKTsKICAgICByZXR1cm4gMCBpZiAkdHlwZS0+aXNVbmlvbjsKICAgICByZXR1cm4g
MCBpZiAkdHlwZS0+bmFtZSBlcSAiYW55IjsKKyAgICByZXR1cm4gMCBpZiAkdHlwZS0+bmFtZSBl
cSAib2JqZWN0IjsKIAogICAgIHJldHVybiAxOwogfQpAQCAtODYyLDYgKzg2Myw3IEBAIHN1YiBJ
c0J1aWx0aW5UeXBlCiAgICAgcmV0dXJuIDEgaWYgJG9iamVjdC0+SXNUeXBlZEFycmF5VHlwZSgk
dHlwZSk7CiAgICAgcmV0dXJuIDEgaWYgJHR5cGUtPmlzVW5pb247CiAgICAgcmV0dXJuIDEgaWYg
JHR5cGUtPm5hbWUgZXEgImFueSI7CisgICAgcmV0dXJuIDEgaWYgJHR5cGUtPm5hbWUgZXEgIm9i
amVjdCI7CiAgICAgcmV0dXJuIDEgaWYgJHR5cGUtPm5hbWUgZXEgIkJ1ZmZlclNvdXJjZSI7CiAg
ICAgcmV0dXJuIDEgaWYgJHR5cGUtPm5hbWUgZXEgIlByb21pc2UiOwogICAgIHJldHVybiAxIGlm
ICR0eXBlLT5uYW1lIGVxICJYUGF0aE5TUmVzb2x2ZXIiOyAgICAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCShyZXZpc2lv
biAyMDkyNjEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JKUy5wbQkod29ya2luZyBjb3B5KQpAQCAtMjc5LDYgKzI3OSw3IEBAIHN1YiBBZGRUb0luY2x1
ZGVzRm9ySURMVHlwZQogICAgIHJldHVybiBpZiAkY29kZUdlbmVyYXRvci0+SXNTdHJpbmdUeXBl
KCR0eXBlKTsKICAgICByZXR1cm4gaWYgJGNvZGVHZW5lcmF0b3ItPklzVHlwZWRBcnJheVR5cGUo
JHR5cGUpOwogICAgIHJldHVybiBpZiAkdHlwZS0+bmFtZSBlcSAiYW55IjsKKyAgICByZXR1cm4g
aWYgJHR5cGUtPm5hbWUgZXEgIm9iamVjdCI7CiAKICAgICBpZiAoJHR5cGUtPmlzVW5pb24pIHsK
ICAgICAgICAgQWRkVG9JbmNsdWRlcygiPHd0Zi9WYXJpYW50Lmg+IiwgJGluY2x1ZGVzUmVmLCAk
Y29uZGl0aW9uYWwpOwpAQCAtNDk3MCw2ICs0OTcxLDcgQEAgbXkgJW5hdGl2ZVR5cGUgPSAoCiAg
ICAgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSIgPT4gIlJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+IiwKICAgICAiWFBhdGhOU1Jlc29sdmVyIiA9PiAiUmVmUHRyPFhQYXRoTlNSZXNvbHZlcj4i
LAogICAgICJhbnkiID0+ICJKU0M6OkpTVmFsdWUiLAorICAgICJvYmplY3QiID0+ICJKU0M6OlN0
cm9uZzxKU0M6OkpTT2JqZWN0PiIsCiAgICAgImJvb2xlYW4iID0+ICJib29sIiwKICAgICAiYnl0
ZSIgPT4gImludDhfdCIsCiAgICAgImRvdWJsZSIgPT4gImRvdWJsZSIsCkBAIC01MDU4LDYgKzUw
NjAsNyBAQCBzdWIgR2V0QmFzZUlETFR5cGUKICAgICAgICAgIkRPTVN0cmluZyIgPT4gIklETERP
TVN0cmluZyIsCiAgICAgICAgICJCeXRlU3RyaW5nIiA9PiAiSURMQnl0ZVN0cmluZyIsCiAgICAg
ICAgICJVU1ZTdHJpbmciID0+ICJJRExVU1ZTdHJpbmciLAorICAgICAgICAib2JqZWN0IiA9PiAi
SURMT2JqZWN0IiwKICAgICAgICAgCiAgICAgICAgICMgTm9uLVdlYklETCBleHRlbnNpb25zCiAg
ICAgICAgICJEYXRlIiA9PiAiSURMRGF0ZSIsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCShyZXZpc2lvbiAyMDkyNjEpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwJKHdvcmtpbmcg
Y29weSkKQEAgLTIzMyw2ICsyMzMsNyBAQCBlbnVtIFRlc3RDb25maWRlbmNlIHsgImhpZ2giLCAi
a2luZGEtbG93CiAgICAgdm9pZCAgICBtZXRob2RXaXRoT3B0aW9uYWxCb29sZWFuKG9wdGlvbmFs
IGJvb2xlYW4gYik7CiAgICAgdm9pZCAgICBtZXRob2RXaXRoT3B0aW9uYWxCb29sZWFuSXNGYWxz
ZShvcHRpb25hbCBib29sZWFuIGIgPSBmYWxzZSk7CiAgICAgdm9pZCAgICBtZXRob2RXaXRoT3B0
aW9uYWxBbnkob3B0aW9uYWwgYW55IGEpOworICAgIHZvaWQgICAgbWV0aG9kV2l0aE9wdGlvbmFs
T2JqZWN0KG9wdGlvbmFsIG9iamVjdCBhKTsKICAgICB2b2lkICAgIG1ldGhvZFdpdGhPcHRpb25h
bE51bGxhYmxlV3JhcHBlcihvcHRpb25hbCBUZXN0T2JqPyBvYmopOwogICAgIHZvaWQgICAgbWV0
aG9kV2l0aE9wdGlvbmFsTnVsbGFibGVXcmFwcGVySXNOdWxsKG9wdGlvbmFsIFRlc3RPYmo/IG9i
aiA9IG51bGwpOwogICAgIHZvaWQgICAgbWV0aG9kV2l0aE9wdGlvbmFsWFBhdGhOU1Jlc29sdmVy
KG9wdGlvbmFsIFhQYXRoTlNSZXNvbHZlcj8gcmVzb2x2ZXIpOwpAQCAtMjcyLDYgKzI3Myw3IEBA
IGVudW0gVGVzdENvbmZpZGVuY2UgeyAiaGlnaCIsICJraW5kYS1sb3cKICAgICBbQ2FjaGVkQXR0
cmlidXRlXSByZWFkb25seSBhdHRyaWJ1dGUgYW55IGNhY2hlZEF0dHJpYnV0ZTI7CiAgICAgCiAg
ICAgYXR0cmlidXRlIGFueSBhbnlBdHRyaWJ1dGU7CisgICAgYXR0cmlidXRlIG9iamVjdCBvYmpl
Y3RBdHRyaWJ1dGU7CiAKICAgICAvLyBPdmVybG9hZHMKICAgICB2b2lkICAgIG92ZXJsb2FkZWRN
ZXRob2QoVGVzdE9iaj8gb2JqQXJnLCBET01TdHJpbmcgc3RyQXJnKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3Bw
CShyZXZpc2lvbiAyMDkyNjEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0T2JqLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAxNSw2ICsxMDE1LDcgQEAg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdAogSlNDOjpFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9w
dGlvbmFsQm9vbGVhbihKU0M6OkV4ZWNTdGF0ZSopOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQm9v
bGVhbklzRmFsc2UoSlNDOjpFeGVjU3RhdGUqKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEFueShK
U0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsT2JqZWN0KEpTQzo6RXhlY1N0
YXRlKik7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxOdWxsYWJsZVdyYXBwZXIoSlNDOjpFeGVjU3Rh
dGUqKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbE51bGxhYmxlV3JhcHBlcklzTnVsbChKU0M6OkV4
ZWNTdGF0ZSopOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsWFBhdGhOU1Jlc29sdmVyKEpTQzo6RXhl
Y1N0YXRlKik7CkBAIC0xMjQwLDYgKzEyNDEsOCBAQCBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dE9iakNhY2hlZEF0dHJpCiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNhY2hlZEF0dHJp
YnV0ZTIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5
TmFtZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakFueUF0dHJpYnV0ZShKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIGJvb2wg
c2V0SlNUZXN0T2JqQW55QXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CitKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9i
ak9iamVjdEF0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpT
Qzo6UHJvcGVydHlOYW1lKTsKK2Jvb2wgc2V0SlNUZXN0T2JqT2JqZWN0QXR0cmlidXRlKEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbnRlbnREb2N1bWVudChKU0M6OkV4ZWNTdGF0
ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqTXV0YWJsZVBvaW50KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogYm9vbCBzZXRKU1Rlc3RPYmpNdXRhYmxl
UG9pbnQoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRK
U1ZhbHVlKTsKQEAgLTE1NDAsNiArMTU0Myw3IEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1
ZSBKU1Rlc3RPYmpQcm8KICAgICB7ICJjYWNoZWRBdHRyaWJ1dGUxIiwgUmVhZE9ubHkgfCBDdXN0
b21BY2Nlc3NvciwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpDYWNoZWRBdHRyaWJ1dGUxKSwgKGludHB0cl90
KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAogICAg
IHsgImNhY2hlZEF0dHJpYnV0ZTIiLCBSZWFkT25seSB8IEN1c3RvbUFjY2Vzc29yLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+
KGpzVGVzdE9iakNhY2hlZEF0dHJpYnV0ZTIpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFBy
b3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCiAgICAgeyAiYW55QXR0cmlidXRlIiwg
Q3VzdG9tQWNjZXNzb3IsIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqQW55QXR0cmlidXRlKSwgKGludHB0cl90
KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0T2Jq
QW55QXR0cmlidXRlKSB9IH0sCisgICAgeyAib2JqZWN0QXR0cmlidXRlIiwgQ3VzdG9tQWNjZXNz
b3IsIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6Okdl
dFZhbHVlRnVuYz4oanNUZXN0T2JqT2JqZWN0QXR0cmlidXRlKSwgKGludHB0cl90KSBzdGF0aWNf
Y2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0T2JqT2JqZWN0QXR0
cmlidXRlKSB9IH0sCiAgICAgeyAiY29udGVudERvY3VtZW50IiwgUmVhZE9ubHkgfCBDdXN0b21B
Y2Nlc3NvciwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xv
dDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpDb250ZW50RG9jdW1lbnQpLCAoaW50cHRyX3QpIHN0
YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCiAgICAgeyAi
bXV0YWJsZVBvaW50IiwgQ3VzdG9tQWNjZXNzb3IsIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqTXV0YWJsZVBv
aW50KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVu
Yz4oc2V0SlNUZXN0T2JqTXV0YWJsZVBvaW50KSB9IH0sCiAgICAgeyAiaW1tdXRhYmxlUG9pbnQi
LCBDdXN0b21BY2Nlc3NvciwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFBy
b3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpJbW11dGFibGVQb2ludCksIChpbnRw
dHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVz
dE9iakltbXV0YWJsZVBvaW50KSB9IH0sCkBAIC0xNjUyLDYgKzE2NTYsNyBAQCBzdGF0aWMgY29u
c3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0T2JqUHJvCiAgICAgeyAibWV0aG9kV2l0aE9wdGlvbmFs
Qm9vbGVhbiIsIEpTQzo6RnVuY3Rpb24sIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRo
T3B0aW9uYWxCb29sZWFuKSwgKGludHB0cl90KSAoMCkgfSB9LAogICAgIHsgIm1ldGhvZFdpdGhP
cHRpb25hbEJvb2xlYW5Jc0ZhbHNlIiwgSlNDOjpGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk1ldGhvZFdpdGhPcHRpb25hbEJvb2xlYW5Jc0ZhbHNlKSwgKGludHB0cl90KSAoMCkgfSB9
LAogICAgIHsgIm1ldGhvZFdpdGhPcHRpb25hbEFueSIsIEpTQzo6RnVuY3Rpb24sIE5vSW50cmlu
c2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBbnkpLCAoaW50cHRyX3QpICgwKSB9IH0s
CisgICAgeyAibWV0aG9kV2l0aE9wdGlvbmFsT2JqZWN0IiwgSlNDOjpGdW5jdGlvbiwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbE9iamVjdCksIChpbnRwdHJfdCkgKDAp
IH0gfSwKICAgICB7ICJtZXRob2RXaXRoT3B0aW9uYWxOdWxsYWJsZVdyYXBwZXIiLCBKU0M6OkZ1
bmN0aW9uLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rp
b24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsTnVsbGFibGVX
cmFwcGVyKSwgKGludHB0cl90KSAoMCkgfSB9LAogICAgIHsgIm1ldGhvZFdpdGhPcHRpb25hbE51
bGxhYmxlV3JhcHBlcklzTnVsbCIsIEpTQzo6RnVuY3Rpb24sIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RXaXRoT3B0aW9uYWxOdWxsYWJsZVdyYXBwZXJJc051bGwpLCAoaW50cHRyX3QpICgw
KSB9IH0sCiAgICAgeyAibWV0aG9kV2l0aE9wdGlvbmFsWFBhdGhOU1Jlc29sdmVyIiwgSlNDOjpG
dW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0
aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFhQYXRoTlNS
ZXNvbHZlciksIChpbnRwdHJfdCkgKDApIH0gfSwKQEAgLTMwMjUsNiArMzAzMCwyMiBAQCBzdGF0
aWMgaW5saW5lIEpTVmFsdWUganNUZXN0T2JqQW55QXR0cmliCiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KIAorc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdE9iak9iamVjdEF0dHJpYnV0ZUdldHRl
cihFeGVjU3RhdGUmLCBKU1Rlc3RPYmomLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKTsKKworRW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqT2JqZWN0QXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQoreworICAgIHJldHVybiBCaW5k
aW5nQ2FsbGVyPEpTVGVzdE9iaj46OmF0dHJpYnV0ZTxqc1Rlc3RPYmpPYmplY3RBdHRyaWJ1dGVH
ZXR0ZXI+KHN0YXRlLCB0aGlzVmFsdWUsICJvYmplY3RBdHRyaWJ1dGUiKTsKK30KKworc3RhdGlj
IGlubGluZSBKU1ZhbHVlIGpzVGVzdE9iak9iamVjdEF0dHJpYnV0ZUdldHRlcihFeGVjU3RhdGUm
IHN0YXRlLCBKU1Rlc3RPYmomIHRoaXNPYmplY3QsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCit7
CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOworICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7
CisgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOworICAgIEpTVmFsdWUgcmVz
dWx0ID0gdG9KUzxJRExPYmplY3Q+KGltcGwub2JqZWN0QXR0cmlidXRlKCkpOworICAgIHJldHVy
biByZXN1bHQ7Cit9CisKIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RPYmpDb250ZW50RG9j
dW1lbnRHZXR0ZXIoRXhlY1N0YXRlJiwgSlNUZXN0T2JqJiwgVGhyb3dTY29wZSYgdGhyb3dTY29w
ZSk7CiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbnRlbnREb2N1bWVudChFeGVjU3RhdGUq
IHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKQEAgLTQ2MjMs
NiArNDY0NCwyNSBAQCBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0T2JqQW55QXR0cmliCiB9
CiAKIAorc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdE9iak9iamVjdEF0dHJpYnV0ZUZ1bmN0
aW9uKEV4ZWNTdGF0ZSYsIEpTVGVzdE9iaiYsIEpTVmFsdWUsIFRocm93U2NvcGUmKTsKKworYm9v
bCBzZXRKU1Rlc3RPYmpPYmplY3RBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCit7CisgICAgcmV0
dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0T2JqPjo6c2V0QXR0cmlidXRlPHNldEpTVGVzdE9iak9i
amVjdEF0dHJpYnV0ZUZ1bmN0aW9uPihzdGF0ZSwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJv
YmplY3RBdHRyaWJ1dGUiKTsKK30KKworc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdE9iak9i
amVjdEF0dHJpYnV0ZUZ1bmN0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdE9iaiYgdGhpc09i
amVjdCwgSlNWYWx1ZSB2YWx1ZSwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3sKKyAgICBVTlVT
RURfUEFSQU0oc3RhdGUpOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKKyAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CisgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNv
bnZlcnQ8SURMT2JqZWN0PihzdGF0ZSwgdmFsdWUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgZmFsc2UpOworICAgIGltcGwuc2V0T2JqZWN0QXR0cmlidXRlKFdURk1vdmUo
bmF0aXZlVmFsdWUpKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworCiBzdGF0aWMgaW5saW5lIGJv
b2wgc2V0SlNUZXN0T2JqTXV0YWJsZVBvaW50RnVuY3Rpb24oRXhlY1N0YXRlJiwgSlNUZXN0T2Jq
JiwgSlNWYWx1ZSwgVGhyb3dTY29wZSYpOwogCiBib29sIHNldEpTVGVzdE9iak11dGFibGVQb2lu
dChFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkKQEAgLTY0MzMsNiArNjQ3MywyNCBAQCBzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKIH0KIAorc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsT2JqZWN0Q2FsbGVyKEpTQzo6
RXhlY1N0YXRlKiwgSlNUZXN0T2JqKiwgSlNDOjpUaHJvd1Njb3BlJik7CisKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0
aW9uYWxPYmplY3QoRXhlY1N0YXRlKiBzdGF0ZSkKK3sKKyAgICByZXR1cm4gQmluZGluZ0NhbGxl
cjxKU1Rlc3RPYmo+OjpjYWxsT3BlcmF0aW9uPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aE9wdGlvbmFsT2JqZWN0Q2FsbGVyPihzdGF0ZSwgIm1ldGhvZFdpdGhPcHRpb25hbE9i
amVjdCIpOworfQorCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxPYmplY3RDYWxsZXIoSlNDOjpFeGVj
U3RhdGUqIHN0YXRlLCBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhy
b3dTY29wZSkKK3sKKyAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFVOVVNFRF9QQVJBTSh0
aHJvd1Njb3BlKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOworICAg
IGF1dG8gYSA9IHN0YXRlLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZCgpID8gc3RkOjpvcHRpb25h
bDxKU0M6OlN0cm9uZzxKU0M6OkpTT2JqZWN0Pj4oKSA6IGNvbnZlcnQ8SURMT2JqZWN0Pigqc3Rh
dGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKyAgICBpbXBsLm1ldGhvZFdpdGhPcHRp
b25hbE9iamVjdChXVEZNb3ZlKGEpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOworfQorCiBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxOdWxsYWJsZVdyYXBwZXJDYWxs
ZXIoSlNDOjpFeGVjU3RhdGUqLCBKU1Rlc3RPYmoqLCBKU0M6OlRocm93U2NvcGUmKTsKIAogRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhv
ZFdpdGhPcHRpb25hbE51bGxhYmxlV3JhcHBlcihFeGVjU3RhdGUqIHN0YXRlKQpJbmRleDogU291
cmNlL1dlYkNvcmUvZG9tL0V4Y2VwdGlvbkNvZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9kb20vRXhjZXB0aW9uQ29kZS5oCShyZXZpc2lvbiAyMDkyNjEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9kb20vRXhjZXB0aW9uQ29kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw5IEBA
IHVzaW5nIEV4Y2VwdGlvbkNvZGUgPSBpbnQ7CiAvLyBTb21lIG9mIHRoZXNlIGFyZSBjb25zaWRl
cmVkIGhpc3RvcmljYWwgc2luY2UgdGhleSBoYXZlIGJlZW4KIC8vIGNoYW5nZWQgb3IgcmVtb3Zl
ZCBmcm9tIHRoZSBzcGVjaWZpY2F0aW9ucy4KIGVudW0geworICAgIC8vIFVzZWQgdG8gaW5kaWNh
dGUgdG8gdGhlIGJpbmRpbmdzIHRoYXQgYSBKUyBleGNlcHRpb24gd2FzIHRocm93biBiZWxvdyBh
bmQgaXQgc2hvdWxkIGJlIHByb3BvZ2F0ZWQuCisgICAgRXhpc3RpbmdFeGNlcHRpb25FcnJvciA9
IDAsIAorCiAgICAgSU5ERVhfU0laRV9FUlIgPSAxLAogICAgIEhJRVJBUkNIWV9SRVFVRVNUX0VS
UiA9IDMsCiAgICAgV1JPTkdfRE9DVU1FTlRfRVJSID0gNCwKQEAgLTcyLDYgKzc1LDkgQEAgZW51
bSB7CiAgICAgT3BlcmF0aW9uRXJyb3IsCiAgICAgTm90QWxsb3dlZEVycm9yLAogCisgICAgLy8g
Tm9uLXN0YW5kYXJkIGVycm9ycworICAgIFN0YWNrT3ZlcmZsb3dFcnJvciwKKwogICAgIC8vIFdl
YklETCBleGNlcHRpb24gdHlwZXMsIGhhbmRsZWQgYnkgdGhlIGJpbmRpbmcgbGF5ZXIuCiAgICAg
Ly8gRklYTUU6IEFkZCBHZW5lcmFsRXJyb3IsIEV2YWxFcnJvciwgZXRjLiB3aGVuIGltcGxlbWVu
dGVkIGluIHRoZSBiaW5kaW5ncy4KICAgICBUeXBlRXJyb3IgPSAxMDUsCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2RvbS9NZXNzYWdlUG9ydC5jcHAJKHJldmlzaW9uIDIwOTI2MSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2RvbS9NZXNzYWdlUG9ydC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDggKzUxLDEzIEBAIE1l
c3NhZ2VQb3J0Ojp+TWVzc2FnZVBvcnQoKQogICAgICAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQtPmRlc3Ryb3llZE1lc3NhZ2VQb3J0KCp0aGlzKTsKIH0KIAotRXhjZXB0aW9uT3I8dm9pZD4g
TWVzc2FnZVBvcnQ6OnBvc3RNZXNzYWdlKFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYg
bWVzc2FnZSwgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+JiYgcG9ydHMpCitFeGNlcHRpb25P
cjx2b2lkPiBNZXNzYWdlUG9ydDo6cG9zdE1lc3NhZ2UoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBK
U0M6OkpTVmFsdWUgbWVzc2FnZVZhbHVlLCBWZWN0b3I8SlNDOjpTdHJvbmc8SlNDOjpKU09iamVj
dD4+JiYgdHJhbnNmZXIpCiB7CisgICAgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+IHBvcnRz
OworICAgIGF1dG8gbWVzc2FnZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKHN0YXRl
LCBtZXNzYWdlVmFsdWUsIFdURk1vdmUodHJhbnNmZXIpLCBwb3J0cyk7CisgICAgaWYgKG1lc3Nh
Z2UuaGFzRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBtZXNzYWdlLnJlbGVhc2VFeGNlcHRp
b24oKTsKKwogICAgIGlmICghaXNFbnRhbmdsZWQoKSkKICAgICAgICAgcmV0dXJuIHsgfTsKICAg
ICBBU1NFUlQobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKQEAgLTY5LDcgKzc0LDcgQEAgRXhj
ZXB0aW9uT3I8dm9pZD4gTWVzc2FnZVBvcnQ6OnBvc3RNZXNzYQogICAgICAgICAgICAgcmV0dXJu
IGRpc2VudGFuZ2xlUmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKICAgICAgICAgY2hhbm5lbHMg
PSBkaXNlbnRhbmdsZVJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKICAgICB9Ci0gICAgbV9l
bnRhbmdsZWRDaGFubmVsLT5wb3N0TWVzc2FnZVRvUmVtb3RlKFdURk1vdmUobWVzc2FnZSksIFdU
Rk1vdmUoY2hhbm5lbHMpKTsKKyAgICBtX2VudGFuZ2xlZENoYW5uZWwtPnBvc3RNZXNzYWdlVG9S
ZW1vdGUobWVzc2FnZS5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgV1RGTW92ZShjaGFubmVscykpOwog
ICAgIHJldHVybiB7IH07CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9y
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5oCShyZXZp
c2lvbiAyMDkyNjEpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzAsNiArMzAsMTIgQEAKICNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgogI2lu
Y2x1ZGUgIk1lc3NhZ2VQb3J0Q2hhbm5lbC5oIgogCituYW1lc3BhY2UgSlNDIHsKK2NsYXNzIEV4
ZWNTdGF0ZTsKK2NsYXNzIEpTT2JqZWN0OworY2xhc3MgSlNWYWx1ZTsKK30KKwogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBGcmFtZTsKQEAgLTM5LDcgKzQ1LDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBSZWY8TWVzc2FnZVBvcnQ+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IE1lc3NhZ2VQb3J0
KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpKTsgfQogICAgIHZpcnR1YWwgfk1lc3NhZ2VQb3J0KCk7
CiAKLSAgICBFeGNlcHRpb25Pcjx2b2lkPiBwb3N0TWVzc2FnZShSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiYmIG1lc3NhZ2UsIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYmKTsKKyAg
ICBFeGNlcHRpb25Pcjx2b2lkPiBwb3N0TWVzc2FnZShKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNW
YWx1ZSBtZXNzYWdlLCBWZWN0b3I8SlNDOjpTdHJvbmc8SlNDOjpKU09iamVjdD4+JiYpOwogCiAg
ICAgdm9pZCBzdGFydCgpOwogICAgIHZvaWQgY2xvc2UoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2RvbS9NZXNzYWdlUG9ydC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL01l
c3NhZ2VQb3J0LmlkbAkocmV2aXNpb24gMjA5MjYxKQorKysgU291cmNlL1dlYkNvcmUvZG9tL01l
c3NhZ2VQb3J0LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzEsMTAgKzMxLDEwIEBACiAgICAgR2Vu
ZXJhdGVJc1JlYWNoYWJsZT1JbXBsLAogICAgIEpTQ3VzdG9tTWFya0Z1bmN0aW9uLAogXSBpbnRl
cmZhY2UgTWVzc2FnZVBvcnQgOiBFdmVudFRhcmdldCB7Ci0gICAgW0N1c3RvbSwgTWF5VGhyb3dF
eGNlcHRpb25dIHZvaWQgcG9zdE1lc3NhZ2UoYW55IG1lc3NhZ2UsIG9wdGlvbmFsIEFycmF5IG1l
c3NhZ2VQb3J0cyk7Ci0KKyAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGUsIE1heVRocm93RXhjZXB0
aW9uXSB2b2lkIHBvc3RNZXNzYWdlKGFueSBtZXNzYWdlLCBvcHRpb25hbCBzZXF1ZW5jZTxvYmpl
Y3Q+IHRyYW5zZmVyID0gW10pOwogICAgIHZvaWQgc3RhcnQoKTsKICAgICB2b2lkIGNsb3NlKCk7
CiAKKyAgICAvLyBldmVudCBoYW5kbGVycwogICAgIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb25t
ZXNzYWdlOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAJKHJldmlzaW9uIDIw
OTI2MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTE2LDYgKzExNiw3IEBACiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNs
dWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CisjaW5jbHVk
ZSA8d3RmL1ZhcmlhbnQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogI2lm
IEVOQUJMRShVU0VSX01FU1NBR0VfSEFORExFUlMpCkBAIC05MTksMTIgKzkyMCwxMiBAQCBFeGNl
cHRpb25PcjxTdG9yYWdlKj4gRE9NV2luZG93Ojpsb2NhbFN0CiAgICAgcmV0dXJuIG1fbG9jYWxT
dG9yYWdlLmdldCgpOwogfQogCi1FeGNlcHRpb25Pcjx2b2lkPiBET01XaW5kb3c6OnBvc3RNZXNz
YWdlKFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYgbWVzc2FnZSwgVmVjdG9yPFJlZlB0cjxN
ZXNzYWdlUG9ydD4+JiYgcG9ydHMsIGNvbnN0IFN0cmluZyYgdGFyZ2V0T3JpZ2luLCBET01XaW5k
b3cmIHNvdXJjZSkKK0V4Y2VwdGlvbk9yPHZvaWQ+IERPTVdpbmRvdzo6cG9zdE1lc3NhZ2UoSlND
OjpFeGVjU3RhdGUmIHN0YXRlLCBET01XaW5kb3cmIGNhbGxlcldpbmRvdywgSlNDOjpKU1ZhbHVl
IG1lc3NhZ2VWYWx1ZSwgY29uc3QgU3RyaW5nJiB0YXJnZXRPcmlnaW4sIFZlY3RvcjxKU0M6OlN0
cm9uZzxKU0M6OkpTT2JqZWN0Pj4mJiB0cmFuc2ZlcikKIHsKICAgICBpZiAoIWlzQ3VycmVudGx5
RGlzcGxheWVkSW5GcmFtZSgpKQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgRG9jdW1lbnQq
IHNvdXJjZURvY3VtZW50ID0gc291cmNlLmRvY3VtZW50KCk7CisgICAgRG9jdW1lbnQqIHNvdXJj
ZURvY3VtZW50ID0gY2FsbGVyV2luZG93LmRvY3VtZW50KCk7CiAKICAgICAvLyBDb21wdXRlIHRo
ZSB0YXJnZXQgb3JpZ2luLiAgV2UgbmVlZCB0byBkbyB0aGlzIHN5bmNocm9ub3VzbHkgaW4gb3Jk
ZXIKICAgICAvLyB0byBnZW5lcmF0ZSB0aGUgU1lOVEFYX0VSUiBleGNlcHRpb24gY29ycmVjdGx5
LgpAQCAtOTQxLDYgKzk0MiwxMSBAQCBFeGNlcHRpb25Pcjx2b2lkPiBET01XaW5kb3c6OnBvc3RN
ZXNzYWdlCiAgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU1lOVEFYX0VSUiB9OwogICAg
IH0KIAorICAgIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiBwb3J0czsKKyAgICBhdXRvIG1l
c3NhZ2UgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShzdGF0ZSwgbWVzc2FnZVZhbHVl
LCBXVEZNb3ZlKHRyYW5zZmVyKSwgcG9ydHMpOworICAgIGlmIChtZXNzYWdlLmhhc0V4Y2VwdGlv
bigpKQorICAgICAgICByZXR1cm4gbWVzc2FnZS5yZWxlYXNlRXhjZXB0aW9uKCk7CisKICAgICBh
dXRvIGNoYW5uZWxzID0gTWVzc2FnZVBvcnQ6OmRpc2VudGFuZ2xlUG9ydHMoV1RGTW92ZShwb3J0
cykpOwogICAgIGlmIChjaGFubmVscy5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGNo
YW5uZWxzLnJlbGVhc2VFeGNlcHRpb24oKTsKQEAgLTk1Nyw3ICs5NjMsNyBAQCBFeGNlcHRpb25P
cjx2b2lkPiBET01XaW5kb3c6OnBvc3RNZXNzYWdlCiAgICAgICAgIHN0YWNrVHJhY2UgPSBjcmVh
dGVTY3JpcHRDYWxsU3RhY2soSlNNYWluVGhyZWFkRXhlY1N0YXRlOjpjdXJyZW50U3RhdGUoKSwg
U2NyaXB0Q2FsbFN0YWNrOjptYXhDYWxsU3RhY2tTaXplVG9DYXB0dXJlKTsKIAogICAgIC8vIFNj
aGVkdWxlIHRoZSBtZXNzYWdlLgotICAgIGF1dG8qIHRpbWVyID0gbmV3IFBvc3RNZXNzYWdlVGlt
ZXIoKnRoaXMsIFdURk1vdmUobWVzc2FnZSksIHNvdXJjZU9yaWdpbiwgc291cmNlLCBjaGFubmVs
cy5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgV1RGTW92ZSh0YXJnZXQpLCBXVEZNb3ZlKHN0YWNrVHJh
Y2UpKTsKKyAgICBhdXRvKiB0aW1lciA9IG5ldyBQb3N0TWVzc2FnZVRpbWVyKCp0aGlzLCBtZXNz
YWdlLnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBzb3VyY2VPcmlnaW4sIGNhbGxlcldpbmRvdywgY2hh
bm5lbHMucmVsZWFzZVJldHVyblZhbHVlKCksIFdURk1vdmUodGFyZ2V0KSwgV1RGTW92ZShzdGFj
a1RyYWNlKSk7CiAgICAgdGltZXItPnN0YXJ0T25lU2hvdCgwKTsKIAogICAgIHJldHVybiB7IH07
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgJKHJldmlzaW9uIDIwOTI2MSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDcg
QEAKICNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1ZGUgPG1l
bW9yeT4KKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+
CiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KQEAg
LTQ0LDYgKzQ1LDEzIEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogY2xhc3MgU2NyaXB0Q2FsbFN0
YWNrOwogfQogCituYW1lc3BhY2UgSlNDIHsKK2NsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNzIEpTT2Jq
ZWN0OworY2xhc3MgSlNWYWx1ZTsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBTdHJvbmc7
Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQmFyUHJvcDsKQEAgLTIzNSw3ICsy
NDMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBwcmludEVycm9yTWVzc2FnZShjb25zdCBTdHJpbmcm
KTsKICAgICBTdHJpbmcgY3Jvc3NEb21haW5BY2Nlc3NFcnJvck1lc3NhZ2UoY29uc3QgRE9NV2lu
ZG93JiBhY3RpdmVXaW5kb3cpOwogCi0gICAgRXhjZXB0aW9uT3I8dm9pZD4gcG9zdE1lc3NhZ2Uo
UmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiBtZXNzYWdlLCBWZWN0b3I8UmVmUHRyPE1lc3Nh
Z2VQb3J0Pj4mJiwgY29uc3QgU3RyaW5nJiB0YXJnZXRPcmlnaW4sIERPTVdpbmRvdyYgc291cmNl
KTsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBwb3N0TWVzc2FnZShKU0M6OkV4ZWNTdGF0ZSYsIERP
TVdpbmRvdyYgY2FsbGVyV2luZG93LCBKU0M6OkpTVmFsdWUgbWVzc2FnZSwgY29uc3QgU3RyaW5n
JiB0YXJnZXRPcmlnaW4sIFZlY3RvcjxKU0M6OlN0cm9uZzxKU0M6OkpTT2JqZWN0Pj4mJik7CiAg
ICAgdm9pZCBwb3N0TWVzc2FnZVRpbWVyRmlyZWQoUG9zdE1lc3NhZ2VUaW1lciYpOwogICAgIHZv
aWQgZGlzcGF0Y2hNZXNzYWdlRXZlbnRXaXRoT3JpZ2luQ2hlY2soU2VjdXJpdHlPcmlnaW4qIGlu
dGVuZGVkVGFyZ2V0T3JpZ2luLCBFdmVudCYsIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpTY3JpcHRD
YWxsU3RhY2s+KTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAkocmV2aXNpb24g
MjA5MjYxKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCSh3b3JraW5nIGNv
cHkpCkBAIC0xNTIsNyArMTUyLDcgQEAKICAgICAvLyAwIHdoZW4gc3RyYWlnaHQgdXA7IC05MCB3
aGVuIHJvdGF0ZWQgOTAgZGVncmVlcyBjbG9ja3dpc2U7IDkwIGNvdW50ZXIgY2xvY2t3aXNlLgog
ICAgIFtDb25kaXRpb25hbD1PUklFTlRBVElPTl9FVkVOVFNdIHJlYWRvbmx5IGF0dHJpYnV0ZSBs
b25nIG9yaWVudGF0aW9uOwogCi0gICAgW0RvTm90Q2hlY2tTZWN1cml0eSwgQ3VzdG9tLCBNYXlU
aHJvd0V4Y2VwdGlvbiwgRm9yd2FyZERlY2xhcmVJbkhlYWRlcl0gdm9pZCBwb3N0TWVzc2FnZShT
ZXJpYWxpemVkU2NyaXB0VmFsdWUgbWVzc2FnZSwgVVNWU3RyaW5nIHRhcmdldE9yaWdpbiwgb3B0
aW9uYWwgQXJyYXkgbWVzc2FnZVBvcnRzKTsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGUmQ2Fs
bGVyV2luZG93LCBEb05vdENoZWNrU2VjdXJpdHksIEZvcndhcmREZWNsYXJlSW5IZWFkZXIsIE1h
eVRocm93RXhjZXB0aW9uXSB2b2lkIHBvc3RNZXNzYWdlKGFueSBtZXNzYWdlLCBVU1ZTdHJpbmcg
dGFyZ2V0T3JpZ2luLCBvcHRpb25hbCBzZXF1ZW5jZTxvYmplY3Q+IHRyYW5zZmVyID0gW10pOwog
CiAgICAgW0NvbmRpdGlvbmFsPVdFQl9USU1JTkcsIFJlcGxhY2VhYmxlXSByZWFkb25seSBhdHRy
aWJ1dGUgUGVyZm9ybWFuY2UgcGVyZm9ybWFuY2U7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuY3BwCShyZXZpc2lv
biAyMDkyNjEpCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckdsb2Jh
bFNjb3BlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjMsMTMgKzYzLDE4IEBAIEV2ZW50VGFyZ2V0
SW50ZXJmYWNlIERlZGljYXRlZFdvcmtlckdsb2IKICAgICByZXR1cm4gRGVkaWNhdGVkV29ya2Vy
R2xvYmFsU2NvcGVFdmVudFRhcmdldEludGVyZmFjZVR5cGU7CiB9CiAKLUV4Y2VwdGlvbk9yPHZv
aWQ+IERlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlOjpwb3N0TWVzc2FnZShSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiYmIG1lc3NhZ2UsIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYm
IHBvcnRzKQorRXhjZXB0aW9uT3I8dm9pZD4gRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGU6OnBv
c3RNZXNzYWdlKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIG1lc3NhZ2VWYWx1
ZSwgVmVjdG9yPEpTQzo6U3Ryb25nPEpTQzo6SlNPYmplY3Q+PiYmIHRyYW5zZmVyKQogeworICAg
IFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiBwb3J0czsKKyAgICBhdXRvIG1lc3NhZ2UgPSBT
ZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShzdGF0ZSwgbWVzc2FnZVZhbHVlLCBXVEZNb3Zl
KHRyYW5zZmVyKSwgcG9ydHMpOworICAgIGlmIChtZXNzYWdlLmhhc0V4Y2VwdGlvbigpKQorICAg
ICAgICByZXR1cm4gbWVzc2FnZS5yZWxlYXNlRXhjZXB0aW9uKCk7CisKICAgICAvLyBEaXNlbnRh
bmdsZSB0aGUgcG9ydCBpbiBwcmVwYXJhdGlvbiBmb3Igc2VuZGluZyBpdCB0byB0aGUgcmVtb3Rl
IGNvbnRleHQuCiAgICAgYXV0byBjaGFubmVscyA9IE1lc3NhZ2VQb3J0OjpkaXNlbnRhbmdsZVBv
cnRzKFdURk1vdmUocG9ydHMpKTsKICAgICBpZiAoY2hhbm5lbHMuaGFzRXhjZXB0aW9uKCkpCiAg
ICAgICAgIHJldHVybiBjaGFubmVscy5yZWxlYXNlRXhjZXB0aW9uKCk7Ci0gICAgdGhyZWFkKCku
d29ya2VyT2JqZWN0UHJveHkoKS5wb3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0KFdURk1vdmUobWVz
c2FnZSksIGNoYW5uZWxzLnJlbGVhc2VSZXR1cm5WYWx1ZSgpKTsKKyAgICB0aHJlYWQoKS53b3Jr
ZXJPYmplY3RQcm94eSgpLnBvc3RNZXNzYWdlVG9Xb3JrZXJPYmplY3QobWVzc2FnZS5yZWxlYXNl
UmV0dXJuVmFsdWUoKSwgY2hhbm5lbHMucmVsZWFzZVJldHVyblZhbHVlKCkpOwogICAgIHJldHVy
biB7IH07CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2Vy
R2xvYmFsU2NvcGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGlj
YXRlZFdvcmtlckdsb2JhbFNjb3BlLmgJKHJldmlzaW9uIDIwOTI2MSkKKysrIFNvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaAkod29ya2luZyBjb3B5KQpA
QCAtMzMsNiArMzMsMTIgQEAKIAogI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlLmgiCiAKK25h
bWVzcGFjZSBKU0MgeworY2xhc3MgRXhlY1N0YXRlOworY2xhc3MgSlNPYmplY3Q7CitjbGFzcyBK
U1ZhbHVlOworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbnRlbnRTZWN1cml0
eVBvbGljeVJlc3BvbnNlSGVhZGVyczsKQEAgLTQ1LDcgKzUxLDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBSZWY8RGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGU+IGNyZWF0ZShjb25zdCBVUkwmLCBj
b25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBEZWRpY2F0
ZWRXb3JrZXJUaHJlYWQmLCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRl
cnMmLCBib29sIHNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSwgUmVm
UHRyPFNlY3VyaXR5T3JpZ2luPiYmIHRvcE9yaWdpbiwgSURCQ2xpZW50OjpJREJDb25uZWN0aW9u
UHJveHkqLCBTb2NrZXRQcm92aWRlciopOwogICAgIHZpcnR1YWwgfkRlZGljYXRlZFdvcmtlckds
b2JhbFNjb3BlKCk7CiAKLSAgICBFeGNlcHRpb25Pcjx2b2lkPiBwb3N0TWVzc2FnZShSZWZQdHI8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmLCBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4mJik7
CisgICAgRXhjZXB0aW9uT3I8dm9pZD4gcG9zdE1lc3NhZ2UoSlNDOjpFeGVjU3RhdGUmLCBKU0M6
OkpTVmFsdWUgbWVzc2FnZSwgVmVjdG9yPEpTQzo6U3Ryb25nPEpTQzo6SlNPYmplY3Q+PiYmKTsK
IAogICAgIERlZGljYXRlZFdvcmtlclRocmVhZCYgdGhyZWFkKCk7CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaWRsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaWRs
CShyZXZpc2lvbiAyMDkyNjEpCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdv
cmtlckdsb2JhbFNjb3BlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQAogICAg
IEdsb2JhbD0oV29ya2VyLERlZGljYXRlZFdvcmtlciksCiAgICAgSlNHZW5lcmF0ZVRvTmF0aXZl
T2JqZWN0LAogXSBpbnRlcmZhY2UgRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUgOiBXb3JrZXJH
bG9iYWxTY29wZSB7Ci0gICAgW0N1c3RvbSwgTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgcG9zdE1l
c3NhZ2UoYW55IG1lc3NhZ2UsIG9wdGlvbmFsIEFycmF5IG1lc3NhZ2VQb3J0cyk7CisgICAgW0Nh
bGxXaXRoPVNjcmlwdFN0YXRlLCBNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBwb3N0TWVzc2FnZShh
bnkgbWVzc2FnZSwgb3B0aW9uYWwgc2VxdWVuY2U8b2JqZWN0PiB0cmFuc2ZlciA9IFtdKTsKIAog
ICAgIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb25tZXNzYWdlOwogfTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlci5jcHAJKHJldmlzaW9uIDIwOTI2MSkKKysrIFNvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDEzICsxMDEsMTggQEAgV29y
a2VyOjp+V29ya2VyKCkKICAgICBtX2NvbnRleHRQcm94eS0+d29ya2VyT2JqZWN0RGVzdHJveWVk
KCk7CiB9CiAKLUV4Y2VwdGlvbk9yPHZvaWQ+IFdvcmtlcjo6cG9zdE1lc3NhZ2UoUmVmUHRyPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiBtZXNzYWdlLCBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0
Pj4mJiBwb3J0cykKK0V4Y2VwdGlvbk9yPHZvaWQ+IFdvcmtlcjo6cG9zdE1lc3NhZ2UoSlNDOjpF
eGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUgbWVzc2FnZVZhbHVlLCBWZWN0b3I8SlNDOjpT
dHJvbmc8SlNDOjpKU09iamVjdD4+JiYgdHJhbnNmZXIpCiB7CisgICAgVmVjdG9yPFJlZlB0cjxN
ZXNzYWdlUG9ydD4+IHBvcnRzOworICAgIGF1dG8gbWVzc2FnZSA9IFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZTo6Y3JlYXRlKHN0YXRlLCBtZXNzYWdlVmFsdWUsIFdURk1vdmUodHJhbnNmZXIpLCBwb3J0
cyk7CisgICAgaWYgKG1lc3NhZ2UuaGFzRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBtZXNz
YWdlLnJlbGVhc2VFeGNlcHRpb24oKTsKKwogICAgIC8vIERpc2VudGFuZ2xlIHRoZSBwb3J0IGlu
IHByZXBhcmF0aW9uIGZvciBzZW5kaW5nIGl0IHRvIHRoZSByZW1vdGUgY29udGV4dC4KICAgICBh
dXRvIGNoYW5uZWxzID0gTWVzc2FnZVBvcnQ6OmRpc2VudGFuZ2xlUG9ydHMoV1RGTW92ZShwb3J0
cykpOwogICAgIGlmIChjaGFubmVscy5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGNo
YW5uZWxzLnJlbGVhc2VFeGNlcHRpb24oKTsKLSAgICBtX2NvbnRleHRQcm94eS0+cG9zdE1lc3Nh
Z2VUb1dvcmtlckdsb2JhbFNjb3BlKFdURk1vdmUobWVzc2FnZSksIGNoYW5uZWxzLnJlbGVhc2VS
ZXR1cm5WYWx1ZSgpKTsKKyAgICBtX2NvbnRleHRQcm94eS0+cG9zdE1lc3NhZ2VUb1dvcmtlckds
b2JhbFNjb3BlKG1lc3NhZ2UucmVsZWFzZVJldHVyblZhbHVlKCksIGNoYW5uZWxzLnJlbGVhc2VS
ZXR1cm5WYWx1ZSgpKTsKICAgICByZXR1cm4geyB9OwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyLmgJKHJldmlzaW9uIDIwOTI2MSkKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDEyIEBACiAjaW5jbHVkZSA8d3RmL09w
dGlvbmFsLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nSGFzaC5oPgogCituYW1l
c3BhY2UgSlNDIHsKK2NsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNzIEpTT2JqZWN0OworY2xhc3MgSlNW
YWx1ZTsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTY3JpcHRFeGVjdXRpb25D
b250ZXh0OwpAQCAtNDYsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEV4Y2VwdGlvbk9y
PFJlZjxXb3JrZXI+PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IFN0cmlu
ZyYgdXJsLCBKU0M6OlJ1bnRpbWVGbGFncyk7CiAgICAgdmlydHVhbCB+V29ya2VyKCk7CiAKLSAg
ICBFeGNlcHRpb25Pcjx2b2lkPiBwb3N0TWVzc2FnZShSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiYmIG1lc3NhZ2UsIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYmKTsKKyAgICBFeGNl
cHRpb25Pcjx2b2lkPiBwb3N0TWVzc2FnZShKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSBt
ZXNzYWdlLCBWZWN0b3I8SlNDOjpTdHJvbmc8SlNDOjpKU09iamVjdD4+JiYpOwogCiAgICAgdm9p
ZCB0ZXJtaW5hdGUoKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuaWRs
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmlkbAkocmV2aXNp
b24gMjA5MjYxKQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuaWRsCSh3b3JraW5n
IGNvcHkpCkBAIC0yOCwxMSArMjgsMTAgQEAKICAgICBBY3RpdmVET01PYmplY3QsCiAgICAgQ3Vz
dG9tQ29uc3RydWN0b3IoVVNWU3RyaW5nIHNjcmlwdFVybCksCiBdIGludGVyZmFjZSBXb3JrZXIg
OiBFdmVudFRhcmdldCB7Ci0gICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbm1lc3NhZ2U7Ci0K
LSAgICBbQ3VzdG9tLCBNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBwb3N0TWVzc2FnZShTZXJpYWxp
emVkU2NyaXB0VmFsdWUgbWVzc2FnZSwgb3B0aW9uYWwgQXJyYXkgbWVzc2FnZVBvcnRzKTsKLQog
ICAgIHZvaWQgdGVybWluYXRlKCk7CisKKyAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGUsIE1heVRo
cm93RXhjZXB0aW9uXSB2b2lkIHBvc3RNZXNzYWdlKGFueSBtZXNzYWdlLCBvcHRpb25hbCBzZXF1
ZW5jZTxvYmplY3Q+IHRyYW5zZmVyID0gW10pOworICAgIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIg
b25tZXNzYWdlOwogfTsKIAogV29ya2VyIGltcGxlbWVudHMgQWJzdHJhY3RXb3JrZXI7CkluZGV4
OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCShyZXZpc2lvbiAyMDkyNjEpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwyNCBAQAorMjAxNi0xMi0wMiAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJr
aXQub3JnPgorCisgICAgICAgIG9wdGlvbmFsIHNlcXVlbmNlIHZhbHVlcyBub3QgaGFuZGxlZCBj
b3JyZWN0bHkgYnkgYmluZGluZyBnZW5lcmF0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MjU2MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvcmVzb3VyY2VzL3R5cGVk
LWFycmF5LXdvcmtlci5qczoKKyAgICAgICAgKiBmYXN0L2RvbS9XaW5kb3cvd2luZG93LXBvc3Rt
ZXNzYWdlLWFyZ3MtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZG9tL1dpbmRvdy93aW5k
b3ctcG9zdG1lc3NhZ2UtYXJncy5odG1sOgorICAgICAgICAqIGZhc3QvZXZlbnRzL21lc3NhZ2Ut
cG9ydC1kZWxldGVkLWRvY3VtZW50Lmh0bWw6CisgICAgICAgICogZmFzdC9ldmVudHMvbWVzc2Fn
ZS1wb3J0LWRlbGV0ZWQtZnJhbWUuaHRtbDoKKyAgICAgICAgKiBmYXN0L2V2ZW50cy9tZXNzYWdl
LXBvcnQtaW5hY3RpdmUtZG9jdW1lbnQuaHRtbDoKKyAgICAgICAgKiBmYXN0L2V2ZW50cy9tZXNz
YWdlLXBvcnQtbXVsdGktZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZXZlbnRzL21lc3Nh
Z2UtcG9ydC5odG1sOgorICAgICAgICAqIGZhc3Qvd29ya2Vycy93b3JrZXItY29udGV4dC1tdWx0
aS1wb3J0LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L3dvcmtlcnMvd29ya2VyLW11bHRp
LXBvcnQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYmdsLzEuMC4yL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3R5cGVkYXJyYXlzL3Jlc291cmNlcy90eXBlZC1hcnJh
eS13b3JrZXIuanM6CisgICAgICAgICogd2ViZ2wvMS4wLjMvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UvdHlwZWRhcnJheXMvcmVzb3VyY2VzL3R5cGVkLWFycmF5LXdvcmtl
ci5qczoKKyAgICAgICAgVXBkYXRlIGZvciBuZXcgZXhjZXB0aW9ucyBhbmQgc3RyaWN0ZXIgZW5m
b3JjZW1lbnQgb2YgdGhlIHBvc3RNZXNzYWdlIHNpZ25hdHVyZS4gCisKIDIwMTYtMTItMDIgIEpv
aG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmVxdWlyZSBwcmVm
bGlnaHQgZm9yIG5vbi1zdGFuZGFyZCBDT1JTLXNhZmVsaXN0ZWQgcmVxdWVzdCBoZWFkZXJzIEFj
Y2VwdCwgQWNjZXB0LUxhbmd1YWdlLCBhbmQgQ29udGVudC1MYW5ndWFnZQpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvcmVzb3VyY2VzL3R5cGVkLWFycmF5LXdvcmtlci5qcwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9yZXNvdXJjZXMvdHlw
ZWQtYXJyYXktd29ya2VyLmpzCShyZXZpc2lvbiAyMDkyNjEpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2NhbnZhcy93ZWJnbC9yZXNvdXJjZXMvdHlwZWQtYXJyYXktd29ya2VyLmpzCSh3b3JraW5nIGNv
cHkpCkBAIC03NCw3ICs3NCw3IEBAIG9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2ZW50KSB7CiAgICAg
fSBlbHNlIHsKICAgICAgIHZhbHVlVG9TZW5kID0gdmlldy5idWZmZXI7CiAgICAgfQotICAgIHZh
ciB0cmFuc2ZlcmFibGVzVG9TZW5kID0gbnVsbDsKKyAgICB2YXIgdHJhbnNmZXJhYmxlc1RvU2Vu
ZCA9IFtdOwogICAgIGlmIChtZXNzYWdlLmNvbW1hbmQgPT0gJ3RyYW5zZmVyJyB8fAogICAgICAg
ICBtZXNzYWdlLmNvbW1hbmQgPT0gJ3RyYW5zZmVyQnVmZmVyJykgewogICAgICAgdHJhbnNmZXJh
Ymxlc1RvU2VuZCA9IFsgdmlldy5idWZmZXIgXTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9t
L1dpbmRvdy93aW5kb3ctcG9zdG1lc3NhZ2UtYXJncy1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wb3N0bWVzc2FnZS1hcmdzLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMjA5MjYxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vV2lu
ZG93L3dpbmRvdy1wb3N0bWVzc2FnZS1hcmdzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMiwxMyArMiwxMyBAQCBUZXN0IHRoYXQgdGhlIHNlY29uZCBhcmd1bWVudCBvZiB3aW5kb3cu
CiAKIFBBU1M6IFBvc3RpbmcgbWVzc2FnZSAoJzEnLCAxKTogdGhyZXcgZXhjZXB0aW9uIFR5cGVF
cnJvcjogVmFsdWUgaXMgbm90IGEgc2VxdWVuY2UKIFBBU1M6IFBvc3RpbmcgbWVzc2FnZSAoJzIn
LCBjKTogdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVmFsdWUgaXMgbm90IGEgc2VxdWVuY2UK
LVBBU1M6IFBvc3RpbmcgbWVzc2FnZSAoJzMnLCBbb2JqZWN0IE9iamVjdF0pOiB0aHJldyBleGNl
cHRpb24gVHlwZUVycm9yOiBWYWx1ZSBpcyBub3QgYSBzZXF1ZW5jZQotUEFTUzogUG9zdGluZyBt
ZXNzYWdlICgnNCcsIFtvYmplY3QgV2luZG93XSkgZGlkIG5vdCB0aHJvdyBhbiBleGNlcHRpb24K
LVBBU1M6IFBvc3RpbmcgbWVzc2FnZSAoJzRhJywgKikgZGlkIG5vdCB0aHJvdyBhbiBleGNlcHRp
b24KK1BBU1M6IFBvc3RpbmcgbWVzc2FnZSAoJzMnLCBbb2JqZWN0IE9iamVjdF0pOiB0aHJldyBl
eGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yCitQQVNTOiBQb3N0aW5nIG1lc3NhZ2UgKCc0
JywgW29iamVjdCBXaW5kb3ddKTogdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJv
cgorUEFTUzogUG9zdGluZyBtZXNzYWdlICgnNGEnLCAqKTogdGhyZXcgZXhjZXB0aW9uIFR5cGVF
cnJvcjogVmFsdWUgaXMgbm90IGEgc2VxdWVuY2UKIFBBU1M6IFBvc3RpbmcgbWVzc2FnZSAoJzUn
LCBudWxsKSBkaWQgbm90IHRocm93IGFuIGV4Y2VwdGlvbgogUEFTUzogUG9zdGluZyBtZXNzYWdl
ICgnNicsIHVuZGVmaW5lZCkgZGlkIG5vdCB0aHJvdyBhbiBleGNlcHRpb24KIFBBU1M6IFBvc3Rp
bmcgbWVzc2FnZSAoJzcnLCBbb2JqZWN0IE1lc3NhZ2VQb3J0XSxbb2JqZWN0IE1lc3NhZ2VQb3J0
XSkgZGlkIG5vdCB0aHJvdyBhbiBleGNlcHRpb24KLVBBU1M6IFBvc3RpbmcgbWVzc2FnZSAoJzdh
JywgKikgZGlkIG5vdCB0aHJvdyBhbiBleGNlcHRpb24KK1BBU1M6IFBvc3RpbmcgbWVzc2FnZSAo
JzdhJywgKik6IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFZhbHVlIGlzIG5vdCBhIHNlcXVl
bmNlCiBQQVNTOiBQb3N0aW5nIG1lc3NhZ2UgKCc3JywgW29iamVjdCBNZXNzYWdlUG9ydF0sW29i
amVjdCBNZXNzYWdlUG9ydF0pIGRpZCBub3QgdGhyb3cgYW4gZXhjZXB0aW9uCiBQQVNTOiBQb3N0
aW5nIG1lc3NhZ2UgKCcyMTQ3NDgzNjQ4JywgbnVsbCkgZGlkIG5vdCB0aHJvdyBhbiBleGNlcHRp
b24KIFBBU1M6IFBvc3RpbmcgbWVzc2FnZSAoJ1tvYmplY3QgTWVzc2FnZVBvcnRdJywgW29iamVj
dCBNZXNzYWdlUG9ydF0sW29iamVjdCBNZXNzYWdlUG9ydF0pIGRpZCBub3QgdGhyb3cgYW4gZXhj
ZXB0aW9uCkBAIC0xOCwxMiArMTgsOSBAQCBQQVNTOiBQb3N0aW5nIG1lc3NhZ2UgKCdbb2JqZWN0
IEFycmF5QnVmCiBQQVNTOiBhcnJheUJ1ZmZlciBuZXV0ZXJlZAogUEFTUzogdmlldyBuZXV0ZXJl
ZAogUEFTUzogUG9zdGluZyBtZXNzYWdlICgnZG9uZScsIHVuZGVmaW5lZCkgZGlkIG5vdCB0aHJv
dyBhbiBleGNlcHRpb24KLVJlY2VpdmVkIG1lc3NhZ2UgJzQnIHdpdGggMCBwb3J0cy4KLVJlY2Vp
dmVkIG1lc3NhZ2UgJzRhJyB3aXRoIDAgcG9ydHMuCiBSZWNlaXZlZCBtZXNzYWdlICc1JyB3aXRo
IDAgcG9ydHMuCiBSZWNlaXZlZCBtZXNzYWdlICc2JyB3aXRoIDAgcG9ydHMuCiBSZWNlaXZlZCBt
ZXNzYWdlICc3JyB3aXRoIDIgcG9ydHMuCi1SZWNlaXZlZCBtZXNzYWdlICc3YScgd2l0aCAyIHBv
cnRzLgogUmVjZWl2ZWQgbWVzc2FnZSAnNycgd2l0aCAyIHBvcnRzLgogUmVjZWl2ZWQgbWVzc2Fn
ZSAnMjE0NzQ4MzY0OCcgd2l0aCAwIHBvcnRzLgogUmVjZWl2ZWQgbWVzc2FnZSAnW29iamVjdCBN
ZXNzYWdlUG9ydF0nIHdpdGggMiBwb3J0cy4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL1dp
bmRvdy93aW5kb3ctcG9zdG1lc3NhZ2UtYXJncy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcG9zdG1lc3NhZ2UtYXJncy5odG1sCShyZXZpc2lv
biAyMDkyNjEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXBvc3RtZXNz
YWdlLWFyZ3MuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNDQsMTQgKzQ0LDE0IEBAIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJkZXNjcmlwdGlvbiIpLmkKIHRyeVBvc3RNZXNzYWdlKCcxJywgJyon
LCAxLCB0cnVlKTsKIHRyeVBvc3RNZXNzYWdlKCcyJywgJyonLCAnYycsIHRydWUpOwogdHJ5UG9z
dE1lc3NhZ2UoJzMnLCAnKicsIHsgeDogMSB9LCB0cnVlKTsKLXRyeVBvc3RNZXNzYWdlKCc0Jywg
JyonLCB3aW5kb3cpOyAgLy8gUGFzc2VzIGJlY2F1c2Ugd2luZG93IGhhcyBhICJsZW5ndGgiIGF0
dHJpYnV0ZSBvZiB2YWx1ZSAnMCcsIHNvIGl0IGxvb2tzIGxpa2UgYW4gYXJyYXkKLXRyeVBvc3RN
ZXNzYWdlKCc0YScsIHdpbmRvdywgJyonKTsgLy8gTGVnYWN5IGFyZ3VtZW50IG9yZGVyLgordHJ5
UG9zdE1lc3NhZ2UoJzQnLCAnKicsIHdpbmRvdywgdHJ1ZSk7Cit0cnlQb3N0TWVzc2FnZSgnNGEn
LCB3aW5kb3csICcqJywgdHJ1ZSk7IC8vIExlZ2FjeSBhcmd1bWVudCBvcmRlci4KIHRyeVBvc3RN
ZXNzYWdlKCc1JywgJyonLCBudWxsKTsKIHRyeVBvc3RNZXNzYWdlKCc2JywgJyonLCB2b2lkIDAp
OwogdmFyIGNoYW5uZWwxID0gbmV3IE1lc3NhZ2VDaGFubmVsOwogdHJ5UG9zdE1lc3NhZ2VGdW5j
dGlvbih3aW5kb3cucG9zdE1lc3NhZ2UsICc3JywgJyonLCBbY2hhbm5lbDEucG9ydDEsIGNoYW5u
ZWwxLnBvcnQyXSk7CiB2YXIgY2hhbm5lbDFhID0gbmV3IE1lc3NhZ2VDaGFubmVsOwotdHJ5UG9z
dE1lc3NhZ2VGdW5jdGlvbih3aW5kb3cucG9zdE1lc3NhZ2UsICc3YScsIFtjaGFubmVsMWEucG9y
dDEsIGNoYW5uZWwxYS5wb3J0Ml0sICcqJyk7Cit0cnlQb3N0TWVzc2FnZUZ1bmN0aW9uKHdpbmRv
dy5wb3N0TWVzc2FnZSwgJzdhJywgW2NoYW5uZWwxYS5wb3J0MSwgY2hhbm5lbDFhLnBvcnQyXSwg
JyonLCB0cnVlKTsKIHZhciBjaGFubmVsMiA9IG5ldyBNZXNzYWdlQ2hhbm5lbDsKIHRyeVBvc3RN
ZXNzYWdlRnVuY3Rpb24od2luZG93LnBvc3RNZXNzYWdlLCAnNycsICcqJywgW2NoYW5uZWwyLnBv
cnQxLCBjaGFubmVsMi5wb3J0Ml0pOwogdmFyIGNoYW5uZWwzID0gbmV3IE1lc3NhZ2VDaGFubmVs
OwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0LWRlbGV0ZWQtZG9j
dW1lbnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdl
LXBvcnQtZGVsZXRlZC1kb2N1bWVudC5odG1sCShyZXZpc2lvbiAyMDkyNjEpCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQtZGVsZXRlZC1kb2N1bWVudC5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3IEBAIHZhciBtYWluUG9ydDsKIGZ1bmN0aW9uIHRlc3Qo
KQogewogICAgIHZhciBjaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFubmVsOwotICAgIHdpbmRvdy5m
cmFtZXNbMF0ucG9zdE1lc3NhZ2UoIm1zZyIsIFtjaGFubmVsLnBvcnQyXSwgIioiKTsKKyAgICB3
aW5kb3cuZnJhbWVzWzBdLnBvc3RNZXNzYWdlKCJtc2ciLCAiKiIsIFtjaGFubmVsLnBvcnQyXSk7
CiAgICAgbWFpblBvcnQgPSBjaGFubmVsLnBvcnQxOwogICAgIG1haW5Qb3J0LnN0YXJ0KCk7CiAK
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1kZWxldGVkLWZyYW1l
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0
LWRlbGV0ZWQtZnJhbWUuaHRtbAkocmV2aXNpb24gMjA5MjYxKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9ldmVudHMvbWVzc2FnZS1wb3J0LWRlbGV0ZWQtZnJhbWUuaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtMjksNyArMjksNyBAQCBmdW5jdGlvbiB0ZXN0KCkKIHsKICAgICBmcmFtZURvYyA9IHdpbmRv
dy5mcmFtZXNbMF0uZG9jdW1lbnQ7CiAgICAgdmFyIGNoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5u
ZWw7Ci0gICAgd2luZG93LmZyYW1lc1swXS5wb3N0TWVzc2FnZSgibXNnIiwgW2NoYW5uZWwucG9y
dDJdLCAiKiIpOworICAgIHdpbmRvdy5mcmFtZXNbMF0ucG9zdE1lc3NhZ2UoIm1zZyIsICIqIiwg
W2NoYW5uZWwucG9ydDJdKTsKICAgICBtYWluUG9ydCA9IGNoYW5uZWwucG9ydDE7CiAgICAgbWFp
blBvcnQuc3RhcnQoKTsKIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1w
b3J0LWluYWN0aXZlLWRvY3VtZW50Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9ldmVudHMvbWVzc2FnZS1wb3J0LWluYWN0aXZlLWRvY3VtZW50Lmh0bWwJKHJldmlzaW9uIDIw
OTI2MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1pbmFjdGl2ZS1k
b2N1bWVudC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw3IEBAIGZ1bmN0aW9uIHRl
c3QoKQogewogICAgIG90aGVyRG9jdW1lbnQgPSB3aW5kb3cuZnJhbWVzWzBdLmRvY3VtZW50Owog
ICAgIHZhciBjaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFubmVsOwotICAgIHdpbmRvdy5mcmFtZXNb
MF0ucG9zdE1lc3NhZ2UoIm1zZyIsIFtjaGFubmVsLnBvcnQyXSwgIioiKTsKKyAgICB3aW5kb3cu
ZnJhbWVzWzBdLnBvc3RNZXNzYWdlKCJtc2ciLCAiKiIsIFtjaGFubmVsLnBvcnQyXSk7CiAgICAg
bWFpblBvcnQgPSBjaGFubmVsLnBvcnQxOwogICAgIG1haW5Qb3J0LnN0YXJ0KCk7CiAKSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1tdWx0aS1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0LW11bHRp
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjA5MjYxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVu
dHMvbWVzc2FnZS1wb3J0LW11bHRpLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNSwx
MiArNSwxMiBAQCBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBCiAKIFBB
U1MgY2hhbm5lbC5wb3J0MS5wb3N0TWVzc2FnZSgic2FtZSBwb3J0IiwgW2NoYW5uZWwucG9ydDFd
KSB0aHJldyBleGNlcHRpb24gRGF0YUNsb25lRXJyb3IgKERPTSBFeGNlcHRpb24gMjUpOiBUaGUg
b2JqZWN0IGNhbiBub3QgYmUgY2xvbmVkLi4KIFBBU1MgY2hhbm5lbC5wb3J0MS5wb3N0TWVzc2Fn
ZSgiZW50YW5nbGVkIHBvcnQiLCBbY2hhbm5lbC5wb3J0Ml0pIHRocmV3IGV4Y2VwdGlvbiBEYXRh
Q2xvbmVFcnJvciAoRE9NIEV4Y2VwdGlvbiAyNSk6IFRoZSBvYmplY3QgY2FuIG5vdCBiZSBjbG9u
ZWQuLgotUEFTUyBjaGFubmVsLnBvcnQxLnBvc3RNZXNzYWdlKCJudWxsIHBvcnQiLCBbY2hhbm5l
bDMucG9ydDEsIG51bGwsIGNoYW5uZWwzLnBvcnQyXSkgdGhyZXcgZXhjZXB0aW9uIEludmFsaWRT
dGF0ZUVycm9yIChET00gRXhjZXB0aW9uIDExKTogVGhlIG9iamVjdCBpcyBpbiBhbiBpbnZhbGlk
IHN0YXRlLi4KLVBBU1MgY2hhbm5lbC5wb3J0MS5wb3N0TWVzc2FnZSgibm90QVBvcnQiLCBbY2hh
bm5lbDMucG9ydDEsIHt9LCBjaGFubmVsMy5wb3J0Ml0pIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJy
b3I6IFR5cGUgZXJyb3IuCi1QQVNTIGNoYW5uZWwucG9ydDEucG9zdE1lc3NhZ2UoImR1cGxpY2F0
ZSBwb3J0IiwgW2NoYW5uZWwzLnBvcnQxLCBjaGFubmVsMy5wb3J0MV0pIHRocmV3IGV4Y2VwdGlv
biBJbnZhbGlkU3RhdGVFcnJvciAoRE9NIEV4Y2VwdGlvbiAxMSk6IFRoZSBvYmplY3QgaXMgaW4g
YW4gaW52YWxpZCBzdGF0ZS4uCi1QQVNTIGNoYW5uZWwucG9ydDEucG9zdE1lc3NhZ2UoIm5vdEFu
QXJyYXkiLCBjaGFubmVsMy5wb3J0MSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVmFsdWUg
aXMgbm90IGEgc2VxdWVuY2UuCi1QQVNTIGNoYW5uZWwucG9ydDEucG9zdE1lc3NhZ2UoIm5vdEFT
ZXF1ZW5jZSIsIFt7bGVuZ3RoOiAzfV0pIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUg
ZXJyb3IuCi1QQVNTIGNoYW5uZWwucG9ydDEucG9zdE1lc3NhZ2UoImxhcmdlU2VxdWVuY2UiLCBs
YXJnZVBvcnRBcnJheSkgdGhyZXcgZXhjZXB0aW9uIEludmFsaWRTdGF0ZUVycm9yIChET00gRXhj
ZXB0aW9uIDExKTogVGhlIG9iamVjdCBpcyBpbiBhbiBpbnZhbGlkIHN0YXRlLi4KK1BBU1MgY2hh
bm5lbC5wb3J0MS5wb3N0TWVzc2FnZSgibnVsbCBwb3J0IiwgW2NoYW5uZWwzLnBvcnQxLCBudWxs
LCBjaGFubmVsMy5wb3J0Ml0pIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3Iu
CitQQVNTIGNoYW5uZWwucG9ydDEucG9zdE1lc3NhZ2UoIm5vdEFQb3J0IiwgW2NoYW5uZWwzLnBv
cnQxLCB7fSwgY2hhbm5lbDMucG9ydDJdKSB0aHJldyBleGNlcHRpb24gRGF0YUNsb25lRXJyb3Ig
KERPTSBFeGNlcHRpb24gMjUpOiBUaGUgb2JqZWN0IGNhbiBub3QgYmUgY2xvbmVkLi4KK1BBU1Mg
Y2hhbm5lbC5wb3J0MS5wb3N0TWVzc2FnZSgiZHVwbGljYXRlIHBvcnQiLCBbY2hhbm5lbDMucG9y
dDEsIGNoYW5uZWwzLnBvcnQxXSkgdGhyZXcgZXhjZXB0aW9uIERhdGFDbG9uZUVycm9yIChET00g
RXhjZXB0aW9uIDI1KTogVGhlIG9iamVjdCBjYW4gbm90IGJlIGNsb25lZC4uCitQQVNTIGNoYW5u
ZWwucG9ydDEucG9zdE1lc3NhZ2UoIm5vdEFuQXJyYXkiLCBjaGFubmVsMy5wb3J0MSkgdGhyZXcg
ZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KK1BBU1MgY2hhbm5lbC5wb3J0MS5wb3N0
TWVzc2FnZSgibm90QVNlcXVlbmNlIiwgW3tsZW5ndGg6IDN9XSkgdGhyZXcgZXhjZXB0aW9uIERh
dGFDbG9uZUVycm9yIChET00gRXhjZXB0aW9uIDI1KTogVGhlIG9iamVjdCBjYW4gbm90IGJlIGNs
b25lZC4uCitQQVNTIGNoYW5uZWwucG9ydDEucG9zdE1lc3NhZ2UoImxhcmdlU2VxdWVuY2UiLCBs
YXJnZVBvcnRBcnJheSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KIFBB
U1MgZXZlbnQucG9ydHMgaXMgbm9uLW51bGwgYW5kIHplcm8gbGVuZ3RoIHdoZW4gbm8gcG9ydCBz
ZW50CiBQQVNTIGV2ZW50LnBvcnRzIGlzIG5vbi1udWxsIGFuZCB6ZXJvIGxlbmd0aCB3aGVuIGVt
cHR5IGFycmF5IHNlbnQKIFBBU1MgZXZlbnQucG9ydHMgY29udGFpbnMgdHdvIHBvcnRzIHdoZW4g
dHdvIHBvcnRzIHNlbnQKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtcG9y
dC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtcG9y
dC5odG1sCShyZXZpc2lvbiAyMDkyNjEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNz
YWdlLXBvcnQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQCBmdW5jdGlvbiB0
ZXN0KHBvc3RNZXNzYWdlRnVuKQogewogICAgIHZhciBjaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFu
bmVsOwogCi0gICAgd2luZG93LmZyYW1lc1swXVtwb3N0TWVzc2FnZUZ1bl0oIm1zZyIsIFtjaGFu
bmVsLnBvcnQyXSwgIioiKTsKKyAgICB3aW5kb3cuZnJhbWVzWzBdW3Bvc3RNZXNzYWdlRnVuXSgi
bXNnIiwgIioiLCBbY2hhbm5lbC5wb3J0Ml0pOwogICAgIG1haW5Qb3J0ID0gY2hhbm5lbC5wb3J0
MTsKICAgICBtYWluUG9ydFtwb3N0TWVzc2FnZUZ1bl0oInBpbmciKTsKICAgICBtYWluUG9ydC5v
bm1lc3NhZ2UgPSBmdW5jdGlvbihldnQpIHsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qvd29ya2Vy
cy93b3JrZXItY29udGV4dC1tdWx0aS1wb3J0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvd29ya2VyLWNvbnRleHQtbXVsdGktcG9ydC1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDIwOTI2MSkKKysrIExheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy93b3Jr
ZXItY29udGV4dC1tdWx0aS1wb3J0LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNiwx
MSArNiwxMSBAQCBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBCiBQQVNT
IGV2ZW50LnBvcnRzIGlzIG5vbi1udWxsIGFuZCB6ZXJvIGxlbmd0aCB3aGVuIG5vIHBvcnQgc2Vu
dAogUEFTUyBldmVudC5wb3J0cyBpcyBub24tbnVsbCBhbmQgemVybyBsZW5ndGggd2hlbiBlbXB0
eSBhcnJheSBzZW50CiBQQVNTIGV2ZW50LnBvcnRzIGNvbnRhaW5zIHR3byBwb3J0cyB3aGVuIHR3
byBwb3J0cyBzZW50Ci1QQVNTIHBvc3RpbmcgYSBudWxsIHBvcnQgZGlkIHRocm93OiBJbnZhbGlk
U3RhdGVFcnJvciAoRE9NIEV4Y2VwdGlvbiAxMSk6IFRoZSBvYmplY3QgaXMgaW4gYW4gaW52YWxp
ZCBzdGF0ZS4KLVBBU1MgcG9zdGluZyBhIG5vbi1wb3J0IGRpZCB0aHJvdzogVHlwZUVycm9yOiBU
eXBlIGVycm9yCitQQVNTIHBvc3RpbmcgYSBudWxsIHBvcnQgZGlkIHRocm93OiBUeXBlRXJyb3I6
IFR5cGUgZXJyb3IKK1BBU1MgcG9zdGluZyBhIG5vbi1wb3J0IGRpZCB0aHJvdzogRGF0YUNsb25l
RXJyb3IgKERPTSBFeGNlcHRpb24gMjUpOiBUaGUgb2JqZWN0IGNhbiBub3QgYmUgY2xvbmVkLgog
UEFTUyBldmVudC5wb3J0cyBjb250YWlucyB0d28gcG9ydHMgd2hlbiB0d28gcG9ydHMgcmUtc2Vu
dCBhZnRlciBlcnJvcgotUEFTUyBwb3N0aW5nIGEgbm9uLWFycmF5IGRpZCB0aHJvdzogVHlwZUVy
cm9yOiBWYWx1ZSBpcyBub3QgYSBzZXF1ZW5jZQotUEFTUyBwb3N0aW5nIGEgbm9uLXNlcXVlbmNl
IGRpZCB0aHJvdzogVHlwZUVycm9yOiBUeXBlIGVycm9yCitQQVNTIHBvc3RpbmcgYSBub24tYXJy
YXkgZGlkIHRocm93OiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IKK1BBU1MgcG9zdGluZyBhIG5vbi1z
ZXF1ZW5jZSBkaWQgdGhyb3c6IERhdGFDbG9uZUVycm9yIChET00gRXhjZXB0aW9uIDI1KTogVGhl
IG9iamVjdCBjYW4gbm90IGJlIGNsb25lZC4KIAogVEVTVCBDT01QTEVURQogCkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L3dvcmtlcnMvd29ya2VyLW11bHRpLXBvcnQtZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy93b3JrZXItbXVsdGktcG9ydC1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDIwOTI2MSkKKysrIExheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy93
b3JrZXItbXVsdGktcG9ydC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTMsMTAgKzMs
MTAgQEAgVGhpcyB0ZXN0IGNoZWNrcyB0aGUgdmFyaW91cyB1c2UgY2FzZXMgYQogT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgogCiAKLVBBU1Mgd29ya2VyLnBvc3RNZXNzYWdlKCJudWxsIHBvcnQi
LCBbY2hhbm5lbDMucG9ydDEsIG51bGwsIGNoYW5uZWwzLnBvcnQyXSkgdGhyZXcgZXhjZXB0aW9u
IEludmFsaWRTdGF0ZUVycm9yIChET00gRXhjZXB0aW9uIDExKTogVGhlIG9iamVjdCBpcyBpbiBh
biBpbnZhbGlkIHN0YXRlLi4KLVBBU1Mgd29ya2VyLnBvc3RNZXNzYWdlKCJub3RBUG9ydCIsIFtj
aGFubmVsMy5wb3J0MSwge30sIGNoYW5uZWwzLnBvcnQyXSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVF
cnJvcjogVHlwZSBlcnJvci4KLVBBU1Mgd29ya2VyLnBvc3RNZXNzYWdlKCJub3RBbkFycmF5Iiwg
Y2hhbm5lbDMucG9ydDEpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFZhbHVlIGlzIG5vdCBh
IHNlcXVlbmNlLgotUEFTUyB3b3JrZXIucG9zdE1lc3NhZ2UoIm5vdEFTZXF1ZW5jZSIsIFt7bGVu
Z3RoOiAzfV0pIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCitQQVNTIHdv
cmtlci5wb3N0TWVzc2FnZSgibnVsbCBwb3J0IiwgW2NoYW5uZWwzLnBvcnQxLCBudWxsLCBjaGFu
bmVsMy5wb3J0Ml0pIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCitQQVNT
IHdvcmtlci5wb3N0TWVzc2FnZSgibm90QVBvcnQiLCBbY2hhbm5lbDMucG9ydDEsIHt9LCBjaGFu
bmVsMy5wb3J0Ml0pIHRocmV3IGV4Y2VwdGlvbiBEYXRhQ2xvbmVFcnJvciAoRE9NIEV4Y2VwdGlv
biAyNSk6IFRoZSBvYmplY3QgY2FuIG5vdCBiZSBjbG9uZWQuLgorUEFTUyB3b3JrZXIucG9zdE1l
c3NhZ2UoIm5vdEFuQXJyYXkiLCBjaGFubmVsMy5wb3J0MSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVF
cnJvcjogVHlwZSBlcnJvci4KK1BBU1Mgd29ya2VyLnBvc3RNZXNzYWdlKCJub3RBU2VxdWVuY2Ui
LCBbe2xlbmd0aDogM31dKSB0aHJldyBleGNlcHRpb24gRGF0YUNsb25lRXJyb3IgKERPTSBFeGNl
cHRpb24gMjUpOiBUaGUgb2JqZWN0IGNhbiBub3QgYmUgY2xvbmVkLi4KIFBBU1MgZXZlbnQucG9y
dHMgaXMgbm9uLW51bGwgYW5kIHplcm8gbGVuZ3RoIHdoZW4gbm8gcG9ydCBzZW50CiBQQVNTIGV2
ZW50LnBvcnRzIGlzIG5vbi1udWxsIGFuZCB6ZXJvIGxlbmd0aCB3aGVuIGVtcHR5IGFycmF5IHNl
bnQKIFBBU1MgZXZlbnQucG9ydHMgY29udGFpbnMgdHdvIHBvcnRzIHdoZW4gdHdvIHBvcnRzIHNl
bnQKSW5kZXg6IExheW91dFRlc3RzL3dlYmdsLzEuMC4yL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL3R5cGVkYXJyYXlzL3Jlc291cmNlcy90eXBlZC1hcnJheS13b3JrZXIu
anMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvd2ViZ2wvMS4wLjIvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdHlwZWRhcnJheXMvcmVzb3VyY2VzL3R5cGVkLWFycmF5
LXdvcmtlci5qcwkocmV2aXNpb24gMjA5MjYxKQorKysgTGF5b3V0VGVzdHMvd2ViZ2wvMS4wLjIv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdHlwZWRhcnJheXMvcmVzb3Vy
Y2VzL3R5cGVkLWFycmF5LXdvcmtlci5qcwkod29ya2luZyBjb3B5KQpAQCAtNzQsNyArNzQsNyBA
QCBvbm1lc3NhZ2UgPSBmdW5jdGlvbihldmVudCkgewogICAgIH0gZWxzZSB7CiAgICAgICB2YWx1
ZVRvU2VuZCA9IHZpZXcuYnVmZmVyOwogICAgIH0KLSAgICB2YXIgdHJhbnNmZXJhYmxlc1RvU2Vu
ZCA9IG51bGw7CisgICAgdmFyIHRyYW5zZmVyYWJsZXNUb1NlbmQgPSBbXTsKICAgICBpZiAobWVz
c2FnZS5jb21tYW5kID09ICd0cmFuc2ZlcicgfHwKICAgICAgICAgbWVzc2FnZS5jb21tYW5kID09
ICd0cmFuc2ZlckJ1ZmZlcicpIHsKICAgICAgIHRyYW5zZmVyYWJsZXNUb1NlbmQgPSBbIHZpZXcu
YnVmZmVyIF07CkluZGV4OiBMYXlvdXRUZXN0cy93ZWJnbC8xLjAuMy9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS90eXBlZGFycmF5cy9yZXNvdXJjZXMvdHlwZWQtYXJyYXkt
d29ya2VyLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3dlYmdsLzEuMC4zL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3R5cGVkYXJyYXlzL3Jlc291cmNlcy90eXBl
ZC1hcnJheS13b3JrZXIuanMJKHJldmlzaW9uIDIwOTI2MSkKKysrIExheW91dFRlc3RzL3dlYmds
LzEuMC4zL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3R5cGVkYXJyYXlz
L3Jlc291cmNlcy90eXBlZC1hcnJheS13b3JrZXIuanMJKHdvcmtpbmcgY29weSkKQEAgLTc0LDcg
Kzc0LDcgQEAgb25tZXNzYWdlID0gZnVuY3Rpb24oZXZlbnQpIHsKICAgICB9IGVsc2UgewogICAg
ICAgdmFsdWVUb1NlbmQgPSB2aWV3LmJ1ZmZlcjsKICAgICB9Ci0gICAgdmFyIHRyYW5zZmVyYWJs
ZXNUb1NlbmQgPSBudWxsOworICAgIHZhciB0cmFuc2ZlcmFibGVzVG9TZW5kID0gW107CiAgICAg
aWYgKG1lc3NhZ2UuY29tbWFuZCA9PSAndHJhbnNmZXInIHx8CiAgICAgICAgIG1lc3NhZ2UuY29t
bWFuZCA9PSAndHJhbnNmZXJCdWZmZXInKSB7CiAgICAgICB0cmFuc2ZlcmFibGVzVG9TZW5kID0g
WyB2aWV3LmJ1ZmZlciBdOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>296002</attachid>
            <date>2016-12-02 14:36:28 -0800</date>
            <delta_ts>2016-12-02 15:23:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-142562-20161202143558.patch</filename>
            <type>text/plain</type>
            <size>88303</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwOTI2MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg5IEBACisyMDE2LTEyLTAyICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgb3B0aW9uYWwgc2VxdWVuY2UgdmFsdWVz
IG5vdCBoYW5kbGVkIGNvcnJlY3RseSBieSBiaW5kaW5nIGdlbmVyYXRvcgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQyNTYyCisKKyAgICAgICAgQWxz
byBmaXhlczoKKyAgICAgICAgICAgIFJlbW92ZSBub24tc3RhbmRhcmQgcG9zdE1lc3NhZ2Ugb3Zl
cmxvYWQKKyAgICAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjE5MTEKKyAgICAgICAgYW5kCisgICAgICAgICAgICBXcm9uZyBhcmd1bWVudCBvcmRlciBp
biB3aW5kb3cucG9zdE1lc3NhZ2UKKyAgICAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD02MzE0MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICBSZW1vdmUgbm8gbG9uZ2VyIG5lZWRlZCBmaWxlcy4KKworICAgICAgICAqIGJpbmRpbmdz
L2dlbmVyaWMvSURMVHlwZXMuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnQu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnZlcnRlcjxJRExPYmplY3Q+Ojpjb252ZXJ0KToKKyAg
ICAgICAgQWRkIHN1cHBvcnQgZm9yIHRoZSBXZWJJREwgb2JqZWN0IHR5cGUuCisKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
RE9NRXhjZXB0aW9uKToKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHRocm93aW5nIHN0YWNrIG92
ZXJmbG93IGVycm9ycy4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9t
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmhhbmRsZVBvc3RNZXNzYWdlKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93Ojpwb3N0TWVzc2FnZSk6IERlbGV0ZWQuCisgICAg
ICAgICogYmluZGluZ3MvanMvSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUN1c3RvbS5jcHA6
IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpKU01lc3NhZ2VQb3J0Ojpwb3N0TWVzc2FnZSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0VHJhbnNmZXJhYmxlcyk6IERlbGV0ZWQuCisgICAg
ICAgICogYmluZGluZ3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5oOiBSZW1vdmVkLgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTV29ya2VyQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpT
V29ya2VyOjpwb3N0TWVzc2FnZSk6IERlbGV0ZWQuCisgICAgICAgIFJlbW92ZSBjdXN0b20gYmlu
ZGluZ3MgZm9yIHBvc3RNZXNzYWdlLgorCisgICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmg6CisgICAgICAgIFN3aXRjaCB0byB1c2luZyBlbnVtIGNsYXNzLgorCisg
ICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6dHJhbnNmZXJBcnJheUJ1ZmZlcnMpOgor
ICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUpOgorICAgICAg
ICBBZGQgbmV3IGNyZWF0ZSBmdW5jdGlvbiB0aGF0IHRha2VzIHRoZSB0cmFuc2ZlciBsaXN0LCBw
cm9jZXNzZXMgaXQsIGFuZCByZXR1cm5zCisgICAgICAgIE1lc3NhZ2VQb3J0cyBhbmQgU2VyaWFs
aXplZFNjcmlwdFZhbHVlIC8gZXhjZXB0aW9uLgorCisgICAgICAgIChXZWJDb3JlOjpDbG9uZUJh
c2U6OnRocm93U3RhY2tPdmVyZmxvdyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDbG9u
ZURlc2VyaWFsaXplcjo6dGhyb3dWYWxpZGF0aW9uRXJyb3IpOiBEZWxldGVkLgorICAgICAgICBS
ZW1vdmUgdW5jYWxsZWQgZnVuY3Rpb25zLgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9yLnBtOgorICAgICAgICAoSXNSZWZQdHJUeXBlKToKKyAgICAgICAgKElzQnVp
bHRpblR5cGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBt
OgorICAgICAgICAoQWRkVG9JbmNsdWRlc0ZvcklETFR5cGUpOgorICAgICAgICAoR2V0QmFzZUlE
TFR5cGUpOgorICAgICAgICBBZGQgc3VwcG9ydCBmb3IgdGhlIFdlYklETCAnb2JqZWN0JyB0eXBl
LgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHA6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsOgorICAgICAgICBBZGQg
dGVzdHMgZm9yICdvYmplY3QnLgorCisgICAgICAgICogZG9tL0V4Y2VwdGlvbkNvZGUuaDoKKyAg
ICAgICAgQWRkIHR3byBuZXcgRXhjZXB0aW9uQ29kZXM6CisgICAgICAgICAgLSBFeGlzdGluZ0V4
Y2VwdGlvbkVycm9yLCB0byBpbmRpY2F0ZSB0aGF0IGltcGxlbWVudGF0aW9uIGNvZGUgdGhyZXcg
YSBKUyBleGNlcHRpb24uCisgICAgICAgICAgLSBTdGFja092ZXJmbG93RXJyb3IsIHRvIGluZGlj
YXRlIHRoYXQgYSBzdGFjayBvdmVyZmxvdyBleGNlcHRpb24gc2hvdWxkIGJlIHRocm93bi4KKwor
ICAgICAgICAqIGRvbS9NZXNzYWdlUG9ydC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdl
UG9ydDo6cG9zdE1lc3NhZ2UpOgorICAgICAgICAqIGRvbS9NZXNzYWdlUG9ydC5oOgorICAgICAg
ICAqIGRvbS9NZXNzYWdlUG9ydC5pZGw6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93Ojpwb3N0TWVzc2FnZSk6CisgICAgICAgICogcGFn
ZS9ET01XaW5kb3cuaDoKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5pZGw6CisgICAgICAgICog
d29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZTo6cG9zdE1lc3NhZ2UpOgorICAgICAgICAqIHdv
cmtlcnMvRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaDoKKyAgICAgICAgKiB3b3JrZXJzL0Rl
ZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmlkbDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXI6OnBvc3RNZXNzYWdlKToKKyAgICAgICAgKiB3
b3JrZXJzL1dvcmtlci5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyLmlkbDoKKyAgICAgICAg
VXBkYXRlIHRvIGNhbGwgbmV3IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSBjcmVhdGUgZnVuY3Rpb24u
CisKIDIwMTYtMTItMDIgIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CiAKICAg
ICAgICAgUmVxdWlyZSBwcmVmbGlnaHQgZm9yIG5vbi1zdGFuZGFyZCBDT1JTLXNhZmVsaXN0ZWQg
cmVxdWVzdCBoZWFkZXJzIEFjY2VwdCwgQWNjZXB0LUxhbmd1YWdlLCBhbmQgQ29udGVudC1MYW5n
dWFnZQpJbmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDIwOTI2MSkKKysrIFNvdXJj
ZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMTI5LDcgKzExMjks
NiBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgYmluZGluZ3MvanMvSlNET01XcmFwcGVyLmNw
cAogICAgIGJpbmRpbmdzL2pzL0pTRGF0YUN1ZUN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9K
U0RhdGFUcmFuc2ZlckN1c3RvbS5jcHAKLSAgICBiaW5kaW5ncy9qcy9KU0RlZGljYXRlZFdvcmtl
ckdsb2JhbFNjb3BlQ3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTRGV2aWNlTW90aW9uRXZl
bnRDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNEZXZpY2VPcmllbnRhdGlvbkV2ZW50Q3Vz
dG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5jcHAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9u
IDIwOTI2MSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTU4NCw3ICsxNTg0LDYgQEAKIAkJNDE2MTRBNzkxREE2
NDI0MTAwNEFEMDZGIC8qIEhUVFBIZWFkZXJWYWx1ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNjE0QTc3MURBNjQyMzYwMDRBRDA2RiAvKiBIVFRQ
SGVhZGVyVmFsdWVzLmggKi87IH07CiAJCTQxNjJBNDUwMTAxMTQ1QUUwMERGRjNFRCAvKiBEZWRp
Y2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0MTYyQTQ0RDEwMTE0NUFFMDBERkYzRUQgLyogRGVkaWNhdGVkV29y
a2VyR2xvYmFsU2NvcGUuY3BwICovOyB9OwogCQk0MTYyQTQ1MTEwMTE0NUFFMDBERkYzRUQgLyog
RGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQxNjJBNDRFMTAxMTQ1QUUwMERGRjNFRCAvKiBEZWRpY2F0ZWRX
b3JrZXJHbG9iYWxTY29wZS5oICovOyB9OwotCQk0MTYyQTQ1NDEwMTE0NUUzMDBERkYzRUQgLyog
SlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTYyQTQ1MzEwMTE0NUUzMDBERkYzRUQgLyog
SlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUN1c3RvbS5jcHAgKi87IH07CiAJCTQxNjJBNDU3
MTAxMTQ2NDcwMERGRjNFRCAvKiBKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNjJBNDU1MTAxMTQ2
NDcwMERGRjNFRCAvKiBKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmNwcCAqLzsgfTsKIAkJ
NDE2MkE0NTgxMDExNDY0NzAwREZGM0VEIC8qIEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNjJBNDU2
MTAxMTQ2NDcwMERGRjNFRCAvKiBKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmggKi87IH07
CiAJCTQxNkUyOUE2MTAyRkE5NjIwMDdGQzE0RSAvKiBXb3JrZXJSZXBvcnRpbmdQcm94eS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2RTI5QTUxMDJG
QTk2MjAwN0ZDMTRFIC8qIFdvcmtlclJlcG9ydGluZ1Byb3h5LmggKi87IH07CkBAIC0xNjQxLDcg
KzE2NDAsNiBAQAogCQk0MUY1NEY4QjFDNTBDNTAzMDAzMzg0ODggLyogRmV0Y2hCb2R5LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRjU0RjdEMUM1
MEM0RjYwMDMzODQ4OCAvKiBGZXRjaEJvZHkuY3BwICovOyB9OwogCQk0MUY1NEY4RDFDNTBDNTA4
MDAzMzg0ODggLyogRmV0Y2hIZWFkZXJzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQxRjU0RjgyMUM1MEM0RjYwMDMzODQ4OCAvKiBGZXRjaEhlYWRl
cnMuY3BwICovOyB9OwogCQk0MUY1NEY4RTFDNTBDNTBDMDAzMzg0ODggLyogRmV0Y2hSZXF1ZXN0
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRjU0
Rjg3MUM1MEM0RjYwMDMzODQ4OCAvKiBGZXRjaFJlcXVlc3QuY3BwICovOyB9OwotCQk0MUY1ODRD
NzEwNDY1MkNCMDA5Q0FBNjQgLyogSlNNZXNzYWdlUG9ydEN1c3RvbS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGNTg0QzYxMDQ2NTJDQjAwOUNBQTY0
IC8qIEpTTWVzc2FnZVBvcnRDdXN0b20uaCAqLzsgfTsKIAkJNDFGQTMwM0UxMzE2QzI5QzAwQzBC
RkM1IC8qIFJlbmRlck1lZGlhQ29udHJvbHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGQTMwM0MxMzE2QzI5QzAwQzBCRkM1IC8qIFJlbmRlck1l
ZGlhQ29udHJvbHMuY3BwICovOyB9OwogCQk0MUZBMzAzRjEzMTZDMjlDMDBDMEJGQzUgLyogUmVu
ZGVyTWVkaWFDb250cm9scy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDFGQTMwM0QxMzE2QzI5QzAwQzBCRkM1IC8qIFJlbmRlck1lZGlhQ29udHJvbHMu
aCAqLzsgfTsKIAkJNDMwNkU0RTYxNDk1NTU0MzAwN0YxN0FDIC8qIEtpbGxSaW5nTm9uZS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MzA2RTRFNTE0
OTU1NTQzMDA3RjE3QUMgLyogS2lsbFJpbmdOb25lLmNwcCAqLzsgfTsKQEAgLTg3MzcsNyArODcz
NSw2IEBACiAJCTQxNjJBNDREMTAxMTQ1QUUwMERGRjNFRCAvKiBEZWRpY2F0ZWRXb3JrZXJHbG9i
YWxTY29wZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZWRpY2F0
ZWRXb3JrZXJHbG9iYWxTY29wZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQx
NjJBNDRFMTAxMTQ1QUUwMERGRjNFRCAvKiBEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29w
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTYyQTQ0RjEwMTE0NUFFMDBERkYz
RUQgLyogRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IERlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJNDE2MkE0NTMxMDExNDVFMzAwREZGM0VEIC8qIEpTRGVkaWNhdGVkV29ya2VyR2xv
YmFsU2NvcGVDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQxNjJBNDU1MTAxMTQ2NDcwMERGRjNFRCAvKiBKU0RlZGljYXRlZFdvcmtl
ckdsb2JhbFNjb3BlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
RGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0MTYyQTQ1NjEwMTE0NjQ3MDBERkYzRUQgLyogSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxT
Y29wZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RlZGljYXRlZFdvcmtl
ckdsb2JhbFNjb3BlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNkUyOUE1MTAy
RkE5NjIwMDdGQzE0RSAvKiBXb3JrZXJSZXBvcnRpbmdQcm94eS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXb3JrZXJSZXBvcnRpbmdQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtODgxMSw3ICs4ODA4LDYgQEAKIAkJNDFGNTRGODcxQzUwQzRGNjAwMzM4
NDg4IC8qIEZldGNoUmVxdWVzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBGZXRjaFJlcXVlc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUY1
NEY4ODFDNTBDNEY2MDAzMzg0ODggLyogRmV0Y2hSZXF1ZXN0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEZldGNoUmVxdWVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0MUY1NEY4OTFDNTBDNEY2MDAzMzg0ODggLyogRmV0Y2hSZXF1ZXN0LmlkbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBGZXRjaFJlcXVlc3QuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQk0MUY1ODRDNjEwNDY1MkNCMDA5Q0FBNjQgLyogSlNNZXNzYWdlUG9ydEN1c3RvbS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU01lc3NhZ2VQb3J0Q3VzdG9tLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRkEzMDNDMTMxNkMyOUMwMEMwQkZDNSAv
KiBSZW5kZXJNZWRpYUNvbnRyb2xzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFJlbmRlck1lZGlhQ29udHJvbHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0MUZBMzAzRDEzMTZDMjlDMDBDMEJGQzUgLyogUmVuZGVyTWVkaWFDb250cm9scy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJNZWRpYUNvbnRyb2xzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQzMDZFNEU1MTQ5NTU1NDMwMDdGMTdBQyAvKiBL
aWxsUmluZ05vbmUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gS2ls
bFJpbmdOb25lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIyMDU3LDcgKzIy
MDUzLDYgQEAKIAkJCQlERUMyOTc1RDFCNERFQjJBMDA1RjU5NDUgLyogSlNDdXN0b21FdmVudEN1
c3RvbS5jcHAgKi8sCiAJCQkJMDdGQkRFMkIxOEZFRDE3ODAwMUE3Q0ZGIC8qIEpTRGF0YUN1ZUN1
c3RvbS5jcHAgKi8sCiAJCQkJQkNBODNFNTEwRDdDRTIwNTAwMzQyMUE4IC8qIEpTRGF0YVRyYW5z
ZmVyQ3VzdG9tLmNwcCAqLywKLQkJCQk0MTYyQTQ1MzEwMTE0NUUzMDBERkYzRUQgLyogSlNEZWRp
Y2F0ZWRXb3JrZXJHbG9iYWxTY29wZUN1c3RvbS5jcHAgKi8sCiAJCQkJMzFGQjFBNkIxMjBBNUQ2
OTAwREMwMkEwIC8qIEpTRGV2aWNlTW90aW9uRXZlbnRDdXN0b20uY3BwICovLAogCQkJCTU5MEUx
QjRBMTFFNEVGNzAwMDY5Rjc4NCAvKiBKU0RldmljZU9yaWVudGF0aW9uRXZlbnRDdXN0b20uY3Bw
ICovLAogCQkJCTQ5QzdCQThDMTA0MkY1QjEwMDA5RDQ0NyAvKiBKU0RvY3VtZW50Q3VzdG9tLmNw
cCAqLywKQEAgLTIyMTEzLDcgKzIyMTA4LDYgQEAKIAkJCQlFMUE1Rjk5QTBFN0VBQTI1MDBBRjg1
RUEgLyogSlNNZXNzYWdlQ2hhbm5lbEN1c3RvbS5jcHAgKi8sCiAJCQkJNDEwQjdFNzExMDQ1RkFC
MDAwRDgyMjRGIC8qIEpTTWVzc2FnZUV2ZW50Q3VzdG9tLmNwcCAqLywKIAkJCQlFMUFERUQ0NjBF
NzZCOEREMDA0QTFBNUUgLyogSlNNZXNzYWdlUG9ydEN1c3RvbS5jcHAgKi8sCi0JCQkJNDFGNTg0
QzYxMDQ2NTJDQjAwOUNBQTY0IC8qIEpTTWVzc2FnZVBvcnRDdXN0b20uaCAqLywKIAkJCQlBMUU1
QjMxRDFBQUQxREE0MDA2RUJFRkIgLyogSlNNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ3VzdG9t
LmNwcCAqLywKIAkJCQlDNkYwOTE3RTE0M0EyQkI5MDA2ODU4NDkgLyogSlNNdXRhdGlvbk9ic2Vy
dmVyQ3VzdG9tLmNwcCAqLywKIAkJCQlCQ0Q5QzI1RjBDMTdBQTY3MDA1QzkwQTIgLyogSlNOYW1l
ZE5vZGVNYXBDdXN0b20uY3BwICovLApAQCAtMjYzMzEsNyArMjYzMjUsNiBAQAogCQkJCUUxMDc0
MDBFMEU3N0JEQzAwMDMzQUYyNCAvKiBKU01lc3NhZ2VDaGFubmVsLmggaW4gSGVhZGVycyAqLywK
IAkJCQk3NTc5M0VDOTBEMENFNzJEMDA3RkMwQUMgLyogSlNNZXNzYWdlRXZlbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUUxQURFRERBMEU3NkJEOTMwMDRBMUE1RSAvKiBKU01lc3NhZ2VQb3J0Lmgg
aW4gSGVhZGVycyAqLywKLQkJCQk0MUY1ODRDNzEwNDY1MkNCMDA5Q0FBNjQgLyogSlNNZXNzYWdl
UG9ydEN1c3RvbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ2RjNFOTUxQzFGODU1NTAwNjFEQkQ0
IC8qIEpTTW9ja1BhZ2VPdmVybGF5LmggaW4gSGVhZGVycyAqLywKIAkJCQlBODY2MjlEMTA5REEy
QjQ4MDA5NjMzQTUgLyogSlNNb3VzZUV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk4MzBBMzZC
RDFEQUM1RkFEMDA2RDdEMDkgLyogSlNNb3VzZUV2ZW50SW5pdC5oIGluIEhlYWRlcnMgKi8sCkBA
IC0yOTg0OSw3ICsyOTg0Miw2IEBACiAJCQkJQkNBODNFNEYwRDdDRTFFOTAwMzQyMUE4IC8qIEpT
RGF0YVRyYW5zZmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDQTgzRTUyMEQ3Q0UyMDUwMDM0
MjFBOCAvKiBKU0RhdGFUcmFuc2ZlckN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MTYy
QTQ1NzEwMTE0NjQ3MDBERkYzRUQgLyogSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAg
aW4gU291cmNlcyAqLywKLQkJCQk0MTYyQTQ1NDEwMTE0NUUzMDBERkYzRUQgLyogSlNEZWRpY2F0
ZWRXb3JrZXJHbG9iYWxTY29wZUN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGREExNUVE
MTEyQjAzRjk0MDAzQTU4M0EgLyogSlNEZWxheU5vZGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MzFGQjFBNjUxMjBBNUQzRjAwREMwMkEwIC8qIEpTRGV2aWNlTW90aW9uRXZlbnQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMzFGQjFBNkMxMjBBNUQ2OTAwREMwMkEwIC8qIEpTRGV2aWNlTW90aW9u
RXZlbnRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9nZW5lcmljL0lETFR5cGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvZ2VuZXJpYy9JRExUeXBlcy5oCShyZXZpc2lvbiAyMDkyNjEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9nZW5lcmljL0lETFR5cGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYg
KzM0LDggQEAgbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBBcnJheUJ1ZmZlcjsKIGNsYXNzIEFycmF5
QnVmZmVyVmlldzsKIGNsYXNzIEpTVmFsdWU7CitjbGFzcyBKU09iamVjdDsKK3RlbXBsYXRlIDx0
eXBlbmFtZSBUPiBjbGFzcyBTdHJvbmc7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTk0
LDcgKzk2LDcgQEAgc3RydWN0IElETERPTVN0cmluZyA6IElETFN0cmluZyB7IH07CiBzdHJ1Y3Qg
SURMQnl0ZVN0cmluZyA6IElETFN0cmluZyB7IH07CiBzdHJ1Y3QgSURMVVNWU3RyaW5nIDogSURM
U3RyaW5nIHsgfTsKIAotc3RydWN0IElETE9iamVjdCA6IElETFVuc3VwcG9ydGVkVHlwZSB7IH07
CitzdHJ1Y3QgSURMT2JqZWN0IDogSURMVHlwZTxKU0M6OlN0cm9uZzxKU0M6OkpTT2JqZWN0Pj4g
eyB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgSURMV3JhcHBlciA6IElETFR5cGU8
UmVmUHRyPFQ+PiB7CiAgICAgdXNpbmcgUmF3VHlwZSA9IFQ7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAJKHJldmlzaW9uIDIw
OTI2MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTY0LDcgKzY0LDYgQEAKICNpbmNsdWRlICJKU0RPTVdyYXBw
ZXIuY3BwIgogI2luY2x1ZGUgIkpTRGF0YUN1ZUN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNEYXRh
VHJhbnNmZXJDdXN0b20uY3BwIgotI2luY2x1ZGUgIkpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2Nv
cGVDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTRGV2aWNlT3JpZW50YXRpb25FdmVudEN1c3RvbS5j
cHAiCiAjaW5jbHVkZSAiSlNEaWN0aW9uYXJ5LmNwcCIKICNpbmNsdWRlICJKU0RvY3VtZW50Q3Vz
dG9tLmNwcCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5n
LmNwcAkocmV2aXNpb24gMjA5MjYxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01CaW5kaW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjg2LDYgKzI4Niw5IEBAIHN0YXRpYyBK
U1ZhbHVlIGNyZWF0ZURPTUV4Y2VwdGlvbihFeGVjU3QKICAgICAgICAgcmV0dXJuIGNyZWF0ZVJh
bmdlRXJyb3IoZXhlYywgKm1lc3NhZ2UpOwogICAgIH0KIAorICAgIGlmIChlYyA9PSBTdGFja092
ZXJmbG93RXJyb3IpCisgICAgICAgIHJldHVybiBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoZXhl
Yyk7CisKICAgICAvLyBGSVhNRTogQWxsIGNhbGxlcnMgdG8gc2V0RE9NRXhjZXB0aW9uIG5lZWQg
dG8gcGFzcyBpbiB0aGUgcmlnaHQgZ2xvYmFsIG9iamVjdAogICAgIC8vIGZvciBub3csIHdlJ3Jl
IGdvaW5nIHRvIGFzc3VtZSB0aGUgbGV4aWNhbEdsb2JhbE9iamVjdC4gV2hpY2ggaXMgd3Jvbmcg
aW4gY2FzZXMgbGlrZSB0aGlzOgogICAgIC8vIGZyYW1lc1swXS5kb2N1bWVudC5jcmVhdGVFbGVt
ZW50KG51bGwsIG51bGwpOyAvLyB0aHJvd3MgYW4gZXhjZXB0aW9uIHdoaWNoIHNob3VsZCBoYXZl
IHRoZSBzdWJmcmFtZXMgcHJvdG90eXBlcy4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NQ29udmVydC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NQ29udmVydC5oCShyZXZpc2lvbiAyMDkyNjEpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTUNvbnZlcnQuaAkod29ya2luZyBjb3B5KQpAQCAtODEzLDYgKzgxMywy
NSBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBKU0NvbnZlcnRlcjxJRExVU1ZTdHJpCiB9OwogCiAvLyBN
QVJLOiAtCisvLyBNQVJLOiBPYmplY3QgdHlwZQorCit0ZW1wbGF0ZTw+IHN0cnVjdCBDb252ZXJ0
ZXI8SURMT2JqZWN0PiA6IERlZmF1bHRDb252ZXJ0ZXI8SURMT2JqZWN0PiB7CisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgRXhjZXB0aW9uVGhyb3dlciA9IERlZmF1bHRFeGNlcHRpb25UaHJvd2VyPgor
ICAgIHN0YXRpYyBKU0M6OlN0cm9uZzxKU0M6OkpTT2JqZWN0PiBjb252ZXJ0KEpTQzo6RXhlY1N0
YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIHZhbHVlLCBFeGNlcHRpb25UaHJvd2VyJiYgZXhjZXB0
aW9uVGhyb3dlciA9IEV4Y2VwdGlvblRocm93ZXIoKSkKKyAgICB7CisgICAgICAgIEpTQzo6Vk0m
IHZtID0gc3RhdGUudm0oKTsKKyAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCisgICAgICAgIGlmICghdmFsdWUuaXNPYmplY3QoKSkgeworICAgICAgICAgICAg
ZXhjZXB0aW9uVGhyb3dlcihzdGF0ZSwgc2NvcGUpOworICAgICAgICAgICAgcmV0dXJuIHsgfTsK
KyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcmV0dXJuIHsgdm0sIEpTQzo6YXNPYmplY3Qo
dmFsdWUpIH07CisgICAgfQorfTsKKworLy8gTUFSSzogLQogLy8gTUFSSzogQXJyYXktbGlrZSB0
eXBlcwogCiBuYW1lc3BhY2UgRGV0YWlsIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAJKHJldmlzaW9uIDIwOTI2MSkKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzIsMTIgKzMyLDEyIEBACiAjaW5jbHVkZSAiSlNIVE1MT3B0aW9uRWxlbWVudC5o
IgogI2luY2x1ZGUgIkpTSURCRmFjdG9yeS5oIgogI2luY2x1ZGUgIkpTSW1hZ2VDb25zdHJ1Y3Rv
ci5oIgotI2luY2x1ZGUgIkpTTWVzc2FnZVBvcnRDdXN0b20uaCIKICNpbmNsdWRlICJKU1dvcmtl
ci5oIgogI2luY2x1ZGUgIkxvY2F0aW9uLmgiCiAjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0
dXJlcy5oIgogI2luY2x1ZGUgIlNjaGVkdWxlZEFjdGlvbi5oIgogI2luY2x1ZGUgIlNldHRpbmdz
LmgiCisjaW5jbHVkZSA8cnVudGltZS9KU0NJbmxpbmVzLmg+CiAKICNpZiBFTkFCTEUoVVNFUl9N
RVNTQUdFX0hBTkRMRVJTKQogI2luY2x1ZGUgIkpTV2ViS2l0TmFtZXNwYWNlLmgiCkBAIC00ODks
NTAgKzQ4OSw2IEBAIEpTVmFsdWUgSlNET01XaW5kb3c6OnNob3dNb2RhbERpYWxvZyhFeGUKICAg
ICByZXR1cm4gaGFuZGxlci5yZXR1cm5WYWx1ZSgpOwogfQogCi1zdGF0aWMgSlNWYWx1ZSBoYW5k
bGVQb3N0TWVzc2FnZShET01XaW5kb3cmIGltcGwsIEV4ZWNTdGF0ZSYgc3RhdGUpCi17Ci0gICAg
Vk0mIHZtID0gc3RhdGUudm0oKTsKLSAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7Ci0KLSAgICBpZiAoVU5MSUtFTFkoc3RhdGUuYXJndW1lbnRDb3VudCgpIDwgMikpCi0g
ICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbigmc3RhdGUsIHNjb3BlLCBjcmVhdGVOb3RFbm91
Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKLQotICAgIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBv
cnQ+PiBtZXNzYWdlUG9ydHM7Ci0gICAgVmVjdG9yPFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPj4g
YXJyYXlCdWZmZXJzOwotCi0gICAgLy8gVGhpcyBmdW5jdGlvbiBoYXMgdmFyaWFibGUgYXJndW1l
bnRzIGFuZCBjYW4gYmU6Ci0gICAgLy8gUGVyIGN1cnJlbnQgc3BlYzoKLSAgICAvLyAgIHBvc3RN
ZXNzYWdlKG1lc3NhZ2UsIHRhcmdldE9yaWdpbikKLSAgICAvLyAgIHBvc3RNZXNzYWdlKG1lc3Nh
Z2UsIHRhcmdldE9yaWdpbiwge3NlcXVlbmNlIG9mIHRyYW5zZmVycmFibGVzfSkKLSAgICAvLyBM
ZWdhY3kgbm9uLXN0YW5kYXJkIGltcGxlbWVudGF0aW9ucyBpbiB3ZWJraXQgYWxsb3dlZDoKLSAg
ICAvLyAgIHBvc3RNZXNzYWdlKG1lc3NhZ2UsIHtzZXF1ZW5jZSBvZiB0cmFuc2ZlcnJhYmxlc30s
IHRhcmdldE9yaWdpbik7Ci0gICAgaW50IHRhcmdldE9yaWdpbkFyZ0luZGV4ID0gMTsKLSAgICBp
ZiAoc3RhdGUuYXJndW1lbnRDb3VudCgpID4gMikgewotICAgICAgICBpbnQgdHJhbnNmZXJhYmxl
c0FyZ0luZGV4ID0gMjsKLSAgICAgICAgaWYgKHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDIpLmlz
U3RyaW5nKCkpIHsKLSAgICAgICAgICAgIHRhcmdldE9yaWdpbkFyZ0luZGV4ID0gMjsKLSAgICAg
ICAgICAgIHRyYW5zZmVyYWJsZXNBcmdJbmRleCA9IDE7Ci0gICAgICAgIH0KLSAgICAgICAgZXh0
cmFjdFRyYW5zZmVyYWJsZXMoc3RhdGUsIHN0YXRlLmFyZ3VtZW50KHRyYW5zZmVyYWJsZXNBcmdJ
bmRleCksIG1lc3NhZ2VQb3J0cywgYXJyYXlCdWZmZXJzKTsKLSAgICB9Ci0gICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZSgpKTsKLQotICAgIGF1dG8gbWVzc2FnZSA9IFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKHN0YXRlLCBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgw
KSwgbWVzc2FnZVBvcnRzLCBXVEZNb3ZlKGFycmF5QnVmZmVycykpOwotICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7Ci0KLSAgICBTdHJpbmcgdGFyZ2V0T3JpZ2luID0g
Y29udmVydDxJRExOdWxsYWJsZTxJRExVU1ZTdHJpbmc+PihzdGF0ZSwgc3RhdGUudW5jaGVja2Vk
QXJndW1lbnQodGFyZ2V0T3JpZ2luQXJnSW5kZXgpKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBKU1ZhbHVlKCkpOwotCi0gICAgcHJvcGFnYXRlRXhjZXB0aW9uKHN0YXRlLCBzY29w
ZSwgaW1wbC5wb3N0TWVzc2FnZShtZXNzYWdlLnJlbGVhc2VOb25OdWxsKCksIFdURk1vdmUobWVz
c2FnZVBvcnRzKSwgdGFyZ2V0T3JpZ2luLCBjYWxsZXJET01XaW5kb3coJnN0YXRlKSkpOwotCi0g
ICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci19Ci0KLUpTVmFsdWUgSlNET01XaW5kb3c6OnBvc3RN
ZXNzYWdlKEV4ZWNTdGF0ZSYgc3RhdGUpCi17Ci0gICAgcmV0dXJuIGhhbmRsZVBvc3RNZXNzYWdl
KHdyYXBwZWQoKSwgc3RhdGUpOwotfQotCiBKU1ZhbHVlIEpTRE9NV2luZG93OjpzZXRUaW1lb3V0
KEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CiAgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDdXN0
b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGVkaWNh
dGVkV29ya2VyR2xvYmFsU2NvcGVDdXN0b20uY3BwCShyZXZpc2lvbiAyMDkyNjEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ3VzdG9t
LmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDQ3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDkgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykg
MjAwOSwgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24u
Ci0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcu
aCIKLSNpbmNsdWRlICJKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmgiCi0KLSNpbmNsdWRl
ICJKU0RPTUJpbmRpbmcuaCIKLSNpbmNsdWRlICJKU01lc3NhZ2VQb3J0Q3VzdG9tLmgiCi0KLXVz
aW5nIG5hbWVzcGFjZSBKU0M7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotSlNDOjpKU1ZhbHVl
IEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGU6OnBvc3RNZXNzYWdlKEpTQzo6RXhlY1N0YXRl
JiBzdGF0ZSkKLXsKLSAgICByZXR1cm4gaGFuZGxlUG9zdE1lc3NhZ2Uoc3RhdGUsIHdyYXBwZWQo
KSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKClByb3BlcnR5IGNoYW5nZXMgb246IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDdXN0
b20uY3BwCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMSArMCwwICMjCi1u
YXRpdmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5jcHAJKHJldmlzaW9u
IDIwOTI2MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRDdXN0
b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNywyMCArMjcsNiBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIkpTTWVzc2FnZVBvcnQuaCIKIAotI2luY2x1ZGUgIkV2ZW50LmgiCi0j
aW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgotI2luY2x1ZGUgIkZyYW1lLmgiCi0jaW5jbHVkZSAi
SlNET01CaW5kaW5nLmgiCi0jaW5jbHVkZSAiSlNET01HbG9iYWxPYmplY3QuaCIKLSNpbmNsdWRl
ICJKU0V2ZW50LmgiCi0jaW5jbHVkZSAiSlNFdmVudExpc3RlbmVyLmgiCi0jaW5jbHVkZSAiSlNN
ZXNzYWdlUG9ydEN1c3RvbS5oIgotI2luY2x1ZGUgIk1lc3NhZ2VQb3J0LmgiCi0jaW5jbHVkZSA8
aGVhcC9TbG90VmlzaXRvcklubGluZXMuaD4KLSNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+Ci0j
aW5jbHVkZSA8cnVudGltZS9KU0FycmF5QnVmZmVyLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQXRv
bWljU3RyaW5nLmg+Ci0KIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKQEAgLTUyLDUzICszOCw0IEBAIHZvaWQgSlNNZXNzYWdlUG9ydDo6dmlzaXRBZGRpdGlvbmFs
Q2hpbGQKICAgICAgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHBvcnQpOwogfQogCi1KU0M6OkpT
VmFsdWUgSlNNZXNzYWdlUG9ydDo6cG9zdE1lc3NhZ2UoSlNDOjpFeGVjU3RhdGUmIHN0YXRlKQot
ewotICAgIHJldHVybiBoYW5kbGVQb3N0TWVzc2FnZShzdGF0ZSwgd3JhcHBlZCgpKTsKLX0KLQot
dm9pZCBleHRyYWN0VHJhbnNmZXJhYmxlcyhKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6SlNW
YWx1ZSB2YWx1ZSwgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+JiBwb3J0QXJyYXksIFZlY3Rv
cjxSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4+JiBhcnJheUJ1ZmZlcnMpCi17Ci0gICAgVk0mIHZt
ID0gc3RhdGUudm0oKTsKLSAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
Ci0KLSAgICBpZiAodmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkgewotICAgICAgICBwb3J0QXJy
YXkucmVzaXplKDApOwotICAgICAgICBhcnJheUJ1ZmZlcnMucmVzaXplKDApOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgLy8gVmFsaWRhdGlvbiBvZiBzZXF1ZW5jZSB0eXBlcywgcGVy
IFdlYklETCBzcGVjIDQuMS4xMy4KLSAgICB1bnNpZ25lZCBsZW5ndGggPSAwOwotICAgIEpTT2Jq
ZWN0KiBvYmplY3QgPSB0b0pTU2VxdWVuY2Uoc3RhdGUsIHZhbHVlLCBsZW5ndGgpOwotICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7Ci0KLSAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwIDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgIEpTVmFsdWUgdmFsdWUgPSBvYmplY3Qt
PmdldCgmc3RhdGUsIGkpOwotICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lk
KCkpOwotCi0gICAgICAgIGlmICh2YWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7Ci0gICAgICAg
ICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBJTlZBTElEX1NUQVRFX0VSUik7Ci0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBWYWxpZGF0aW9uIG9mIE9iamVj
dHMgaW1wbGVtZW50aW5nIGFuIGludGVyZmFjZSwgcGVyIFdlYklETCBzcGVjIDQuMS4xNS4KLSAg
ICAgICAgaWYgKFJlZlB0cjxNZXNzYWdlUG9ydD4gcG9ydCA9IEpTTWVzc2FnZVBvcnQ6OnRvV3Jh
cHBlZCh2YWx1ZSkpIHsKLSAgICAgICAgICAgIC8vIENoZWNrIGZvciBkdXBsaWNhdGUgcG9ydHMu
Ci0gICAgICAgICAgICBpZiAocG9ydEFycmF5LmNvbnRhaW5zKHBvcnQpKSB7Ci0gICAgICAgICAg
ICAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgSU5WQUxJRF9TVEFURV9FUlIpOwotICAgICAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHBvcnRBcnJheS5h
cHBlbmQoV1RGTW92ZShwb3J0KSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiAo
UmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlciA9IHRvUG9zc2libHlTaGFyZWRBcnJheUJ1
ZmZlcih2YWx1ZSkpCi0gICAgICAgICAgICAgICAgYXJyYXlCdWZmZXJzLmFwcGVuZChXVEZNb3Zl
KGFycmF5QnVmZmVyKSk7Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICB0aHJv
d1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRDdXN0b20uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VQb3J0Q3Vz
dG9tLmgJKHJldmlzaW9uIDIwOTI2MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
TWVzc2FnZVBvcnRDdXN0b20uaAkobm9uZXhpc3RlbnQpCkBAIC0xLDY0ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
IENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3Ry
aWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBv
bmNlCi0KLSNpbmNsdWRlICJNZXNzYWdlUG9ydC5oIgotI2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3Iu
aD4KLSNpbmNsdWRlIDxydW50aW1lL0pTQ0lubGluZXMuaD4KLSNpbmNsdWRlIDxydW50aW1lL0pT
Q0pTVmFsdWUuaD4KLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLXZvaWQgZXh0cmFjdFRyYW5zZmVyYWJsZXMoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpT
VmFsdWUsIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYsIFZlY3RvcjxSZWZQdHI8SlNDOjpB
cnJheUJ1ZmZlcj4+Jik7Ci0KLS8vIEhlbHBlciBmdW5jdGlvbiB0byBjb252ZXJ0IGZyb20gSlMg
cG9zdE1lc3NhZ2UgYXJndW1lbnRzIHRvIFdlYkNvcmUgcG9zdE1lc3NhZ2UgYXJndW1lbnRzLgot
dGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIEpTQzo6SlNWYWx1ZSBoYW5kbGVQb3N0TWVzc2Fn
ZShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIFQmIG9iamVjdCkKLXsKLSAgICBKU0M6OlZNJiB2bSA9
IHN0YXRlLnZtKCk7Ci0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwot
Ci0gICAgaWYgKFVOTElLRUxZKHN0YXRlLmFyZ3VtZW50Q291bnQoKSA8IDEpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dFeGNlcHRpb24oJnN0YXRlLCBzY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1l
bnRzRXJyb3IoJnN0YXRlKSk7Ci0KLSAgICBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4gbWVz
c2FnZVBvcnRBcnJheTsKLSAgICBWZWN0b3I8UmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+PiBhcnJh
eUJ1ZmZlckFycmF5OwotICAgIGV4dHJhY3RUcmFuc2ZlcmFibGVzKHN0YXRlLCBzdGF0ZS5hcmd1
bWVudCgxKSwgbWVzc2FnZVBvcnRBcnJheSwgYXJyYXlCdWZmZXJBcnJheSk7Ci0KLSAgICBhdXRv
IG1lc3NhZ2UgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShzdGF0ZSwgc3RhdGUudW5j
aGVja2VkQXJndW1lbnQoMCksIG1lc3NhZ2VQb3J0QXJyYXksIFdURk1vdmUoYXJyYXlCdWZmZXJB
cnJheSkpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTQzo6SlNWYWx1ZSgpKTsK
LQotICAgIHByb3BhZ2F0ZUV4Y2VwdGlvbihzdGF0ZSwgc2NvcGUsIG9iamVjdC5wb3N0TWVzc2Fn
ZShXVEZNb3ZlKG1lc3NhZ2UpLCBXVEZNb3ZlKG1lc3NhZ2VQb3J0QXJyYXkpKSk7Ci0gICAgcmV0
dXJuIEpTQzo6anNVbmRlZmluZWQoKTsKLX0KLQotfQoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5oCl9fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K
RGVsZXRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMSArMCwwICMjCi1uYXRpdmUKXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNX
b3JrZXJDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTV29ya2VyQ3VzdG9tLmNwcAkocmV2aXNpb24gMjA5MjYxKQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNXb3JrZXJDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICsz
MSw2IEBACiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAiSlNET01HbG9iYWxP
YmplY3QuaCIKICNpbmNsdWRlICJKU0RPTVdpbmRvd0N1c3RvbS5oIgotI2luY2x1ZGUgIkpTTWVz
c2FnZVBvcnRDdXN0b20uaCIKICNpbmNsdWRlICJXb3JrZXIuaCIKICNpbmNsdWRlIDxydW50aW1l
L0Vycm9yLmg+CiAKQEAgLTM5LDExICszOCw2IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotSlNDOjpKU1ZhbHVlIEpTV29ya2VyOjpwb3N0TWVzc2FnZShK
U0M6OkV4ZWNTdGF0ZSYgc3RhdGUpCi17Ci0gICAgcmV0dXJuIGhhbmRsZVBvc3RNZXNzYWdlKHN0
YXRlLCB3cmFwcGVkKCkpOwotfQotCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0
cnVjdEpTV29ya2VyKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CiAgICAgVk0mIHZtID0gc3RhdGUudm0o
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmNwcAkocmV2aXNpb24gMjA5MjYxKQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTIs
NiArOTIsMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgY29uc3QgdW5zaWduZWQg
bWF4aW11bUZpbHRlclJlY3Vyc2lvbiA9IDQwMDAwOwogCitlbnVtIGNsYXNzIFNlcmlhbGl6YXRp
b25SZXR1cm5Db2RlIHsKKyAgICBTdWNjZXNzZnVsbHlDb21wbGV0ZWQsCisgICAgU3RhY2tPdmVy
Zmxvd0Vycm9yLAorICAgIEludGVycnVwdGVkRXhlY3V0aW9uRXJyb3IsCisgICAgVmFsaWRhdGlv
bkVycm9yLAorICAgIEV4aXN0aW5nRXhjZXB0aW9uRXJyb3IsCisgICAgRGF0YUNsb25lRXJyb3Is
CisgICAgVW5zcGVjaWZpZWRFcnJvcgorfTsKKwogZW51bSBXYWxrZXJTdGF0ZSB7IFN0YXRlVW5r
bm93biwgQXJyYXlTdGFydFN0YXRlLCBBcnJheVN0YXJ0VmlzaXRNZW1iZXIsIEFycmF5RW5kVmlz
aXRNZW1iZXIsCiAgICAgT2JqZWN0U3RhcnRTdGF0ZSwgT2JqZWN0U3RhcnRWaXNpdE1lbWJlciwg
T2JqZWN0RW5kVmlzaXRNZW1iZXIsCiAgICAgTWFwRGF0YVN0YXJ0VmlzaXRFbnRyeSwgTWFwRGF0
YUVuZFZpc2l0S2V5LCBNYXBEYXRhRW5kVmlzaXRWYWx1ZSwKQEAgLTM3NCw3ICszODQsNyBAQCBz
dGF0aWMgY29uc3QgdW5zaWduZWQgU3RyaW5nRGF0YUlzOEJpdEZsCiAgKiAgICA8ZmFjdG9yU2l6
ZTp1aW50MzJfdD4gPGZhY3RvcjpieXRle2ZhY3RvclNpemV9PiA8Y3J0RXhwb25lbnRTaXplOnVp
bnQzMl90PiA8Y3J0RXhwb25lbnQ6Ynl0ZXtjcnRFeHBvbmVudFNpemV9PiA8Y3J0Q29lZmZpY2ll
bnRTaXplOnVpbnQzMl90PiA8Y3J0Q29lZmZpY2llbnQ6Ynl0ZXtjcnRDb2VmZmljaWVudFNpemV9
PgogICovCiAKLXR5cGVkZWYgc3RkOjpwYWlyPEpTQzo6SlNWYWx1ZSwgU2VyaWFsaXphdGlvblJl
dHVybkNvZGU+IERlc2VyaWFsaXphdGlvblJlc3VsdDsKK3VzaW5nIERlc2VyaWFsaXphdGlvblJl
c3VsdCA9IHN0ZDo6cGFpcjxKU0M6OkpTVmFsdWUsIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlPjsK
IAogY2xhc3MgQ2xvbmVCYXNlIHsKIHByb3RlY3RlZDoKQEAgLTM5MSwxMyArNDAxLDYgQEAgcHJv
dGVjdGVkOgogICAgICAgICByZXR1cm4gc2NvcGUuZXhjZXB0aW9uKCk7CiAgICAgfQogCi0gICAg
dm9pZCB0aHJvd1N0YWNrT3ZlcmZsb3coKQotICAgIHsKLSAgICAgICAgVk0mIHZtID0gbV9leGVj
LT52bSgpOwotICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0g
ICAgICAgIHRocm93RXhjZXB0aW9uKG1fZXhlYywgc2NvcGUsIGNyZWF0ZVN0YWNrT3ZlcmZsb3dF
cnJvcihtX2V4ZWMpKTsKLSAgICB9Ci0KICAgICB2b2lkIGZhaWwoKQogICAgIHsKICAgICAgICAg
bV9mYWlsZWQgPSB0cnVlOwpAQCAtNzMxLDcgKzczNCw3IEBAIHByaXZhdGU6CiAgICAgICAgIHdy
aXRlKHN0YXRpY19jYXN0PHVpbnQzMl90PihhcnJheUJ1ZmZlclZpZXctPmJ5dGVMZW5ndGgoKSkp
OwogICAgICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGFycmF5QnVmZmVyID0gYXJyYXlCdWZmZXJW
aWV3LT5wb3NzaWJseVNoYXJlZEJ1ZmZlcigpOwogICAgICAgICBpZiAoIWFycmF5QnVmZmVyKSB7
Ci0gICAgICAgICAgICBjb2RlID0gVmFsaWRhdGlvbkVycm9yOworICAgICAgICAgICAgY29kZSA9
IFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlOjpWYWxpZGF0aW9uRXJyb3I7CiAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgICAgICBKU1ZhbHVlIGJ1ZmZlck9iaiA9IHRvSlMo
bV9leGVjLCBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihtX2V4ZWMtPmxleGljYWxHbG9iYWxP
YmplY3QoKSksIGFycmF5QnVmZmVyLmdldCgpKTsKQEAgLTg0MSwxMiArODQ0LDEyIEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICAvLyBNZXNzYWdlUG9ydCBvYmplY3QgY291bGQgbm90IGJlIGZvdW5k
IGluIHRyYW5zZmVycmVkIG1lc3NhZ2UgcG9ydHMKLSAgICAgICAgICAgICAgICBjb2RlID0gVmFs
aWRhdGlvbkVycm9yOworICAgICAgICAgICAgICAgIGNvZGUgPSBTZXJpYWxpemF0aW9uUmV0dXJu
Q29kZTo6VmFsaWRhdGlvbkVycm9yOwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgaWYgKEFycmF5QnVmZmVyKiBhcnJheUJ1ZmZlciA9IHRv
UG9zc2libHlTaGFyZWRBcnJheUJ1ZmZlcihvYmopKSB7CiAgICAgICAgICAgICAgICAgaWYgKGFy
cmF5QnVmZmVyLT5pc05ldXRlcmVkKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgY29kZSA9IFZh
bGlkYXRpb25FcnJvcjsKKyAgICAgICAgICAgICAgICAgICAgY29kZSA9IFNlcmlhbGl6YXRpb25S
ZXR1cm5Db2RlOjpWYWxpZGF0aW9uRXJyb3I7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0
cnVlOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBPYmplY3RQb29sOjppdGVy
YXRvciBpbmRleCA9IG1fdHJhbnNmZXJyZWRBcnJheUJ1ZmZlcnMuZmluZChvYmopOwpAQCAtMTIz
NCw3ICsxMjM3LDcgQEAgU2VyaWFsaXphdGlvblJldHVybkNvZGUgQ2xvbmVTZXJpYWxpemVyOgog
ICAgICAgICAgICAgY2FzZSBBcnJheVN0YXJ0U3RhdGU6IHsKICAgICAgICAgICAgICAgICBBU1NF
UlQoaXNBcnJheShpblZhbHVlKSk7CiAgICAgICAgICAgICAgICAgaWYgKGlucHV0T2JqZWN0U3Rh
Y2suc2l6ZSgpID4gbWF4aW11bUZpbHRlclJlY3Vyc2lvbikKLSAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIFN0YWNrT3ZlcmZsb3dFcnJvcjsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFNl
cmlhbGl6YXRpb25SZXR1cm5Db2RlOjpTdGFja092ZXJmbG93RXJyb3I7CiAKICAgICAgICAgICAg
ICAgICBKU0FycmF5KiBpbkFycmF5ID0gYXNBcnJheShpblZhbHVlKTsKICAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBsZW5ndGggPSBpbkFycmF5LT5sZW5ndGgoKTsKQEAgLTEyNzMsOSArMTI3Niw5
IEBAIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlIENsb25lU2VyaWFsaXplcjoKICAgICAgICAgICAg
ICAgICB9CiAKICAgICAgICAgICAgICAgICB3cml0ZShpbmRleCk7Ci0gICAgICAgICAgICAgICAg
U2VyaWFsaXphdGlvblJldHVybkNvZGUgdGVybWluYWxDb2RlID0gU3VjY2Vzc2Z1bGx5Q29tcGxl
dGVkOworICAgICAgICAgICAgICAgIGF1dG8gdGVybWluYWxDb2RlID0gU2VyaWFsaXphdGlvblJl
dHVybkNvZGU6OlN1Y2Nlc3NmdWxseUNvbXBsZXRlZDsKICAgICAgICAgICAgICAgICBpZiAoZHVt
cElmVGVybWluYWwoaW5WYWx1ZSwgdGVybWluYWxDb2RlKSkgewotICAgICAgICAgICAgICAgICAg
ICBpZiAodGVybWluYWxDb2RlICE9IFN1Y2Nlc3NmdWxseUNvbXBsZXRlZCkKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKHRlcm1pbmFsQ29kZSAhPSBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZTo6U3Vj
Y2Vzc2Z1bGx5Q29tcGxldGVkKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRlcm1p
bmFsQ29kZTsKICAgICAgICAgICAgICAgICAgICAgaW5kZXhTdGFjay5sYXN0KCkrKzsKICAgICAg
ICAgICAgICAgICAgICAgZ290byBhcnJheVN0YXJ0VmlzaXRNZW1iZXI7CkBAIC0xMjkxLDcgKzEy
OTQsNyBAQCBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZSBDbG9uZVNlcmlhbGl6ZXI6CiAgICAgICAg
ICAgICBjYXNlIE9iamVjdFN0YXJ0U3RhdGU6IHsKICAgICAgICAgICAgICAgICBBU1NFUlQoaW5W
YWx1ZS5pc09iamVjdCgpKTsKICAgICAgICAgICAgICAgICBpZiAoaW5wdXRPYmplY3RTdGFjay5z
aXplKCkgPiBtYXhpbXVtRmlsdGVyUmVjdXJzaW9uKQotICAgICAgICAgICAgICAgICAgICByZXR1
cm4gU3RhY2tPdmVyZmxvd0Vycm9yOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gU2VyaWFs
aXphdGlvblJldHVybkNvZGU6OlN0YWNrT3ZlcmZsb3dFcnJvcjsKICAgICAgICAgICAgICAgICBK
U09iamVjdCogaW5PYmplY3QgPSBhc09iamVjdChpblZhbHVlKTsKICAgICAgICAgICAgICAgICBp
ZiAoIXN0YXJ0T2JqZWN0KGluT2JqZWN0KSkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CkBA
IC0xMzAwLDcgKzEzMDMsNyBAQCBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZSBDbG9uZVNlcmlhbGl6
ZXI6CiAgICAgICAgICAgICAgICAgLy8gdGhlIGlucHV0IGlzIG5vdCBhbiBPYmplY3Qgb2JqZWN0
IHRoZW4gd2Ugc2hvdWxkIHRocm93CiAgICAgICAgICAgICAgICAgLy8gYSBEYXRhQ2xvbmVFcnJv
ci4KICAgICAgICAgICAgICAgICBpZiAoaW5PYmplY3QtPmNsYXNzSW5mbygpICE9IEpTRmluYWxP
YmplY3Q6OmluZm8oKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIERhdGFDbG9uZUVycm9y
OworICAgICAgICAgICAgICAgICAgICByZXR1cm4gU2VyaWFsaXphdGlvblJldHVybkNvZGU6OkRh
dGFDbG9uZUVycm9yOwogICAgICAgICAgICAgICAgIGlucHV0T2JqZWN0U3RhY2suYXBwZW5kKGlu
T2JqZWN0KTsKICAgICAgICAgICAgICAgICBpbmRleFN0YWNrLmFwcGVuZCgwKTsKICAgICAgICAg
ICAgICAgICBwcm9wZXJ0eVN0YWNrLmFwcGVuZChQcm9wZXJ0eU5hbWVBcnJheShtX2V4ZWMsIFBy
b3BlcnR5TmFtZU1vZGU6OlN0cmluZ3MpKTsKQEAgLTEzMjEsNyArMTMyNCw3IEBAIFNlcmlhbGl6
YXRpb25SZXR1cm5Db2RlIENsb25lU2VyaWFsaXplcjoKICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgaW5WYWx1ZSA9IGdldFByb3BlcnR5KG9iamVjdCwgcHJvcGVydGllc1tpbmRl
eF0pOwogICAgICAgICAgICAgICAgIGlmIChzaG91bGRUZXJtaW5hdGUoKSkKLSAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIEV4aXN0aW5nRXhjZXB0aW9uRXJyb3I7CisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZTo6RXhpc3RpbmdFeGNlcHRpb25FcnJv
cjsKIAogICAgICAgICAgICAgICAgIGlmICghaW5WYWx1ZSkgewogICAgICAgICAgICAgICAgICAg
ICAvLyBQcm9wZXJ0eSB3YXMgcmVtb3ZlZCBkdXJpbmcgc2VyaWFsaXNhdGlvbgpAQCAtMTMzMSwy
MCArMTMzNCwyMCBAQCBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZSBDbG9uZVNlcmlhbGl6ZXI6CiAg
ICAgICAgICAgICAgICAgd3JpdGUocHJvcGVydGllc1tpbmRleF0pOwogCiAgICAgICAgICAgICAg
ICAgaWYgKHNob3VsZFRlcm1pbmF0ZSgpKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gRXhp
c3RpbmdFeGNlcHRpb25FcnJvcjsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFNlcmlhbGl6
YXRpb25SZXR1cm5Db2RlOjpFeGlzdGluZ0V4Y2VwdGlvbkVycm9yOwogCi0gICAgICAgICAgICAg
ICAgU2VyaWFsaXphdGlvblJldHVybkNvZGUgdGVybWluYWxDb2RlID0gU3VjY2Vzc2Z1bGx5Q29t
cGxldGVkOworICAgICAgICAgICAgICAgIGF1dG8gdGVybWluYWxDb2RlID0gU2VyaWFsaXphdGlv
blJldHVybkNvZGU6OlN1Y2Nlc3NmdWxseUNvbXBsZXRlZDsKICAgICAgICAgICAgICAgICBpZiAo
IWR1bXBJZlRlcm1pbmFsKGluVmFsdWUsIHRlcm1pbmFsQ29kZSkpIHsKICAgICAgICAgICAgICAg
ICAgICAgc3RhdGVTdGFjay5hcHBlbmQoT2JqZWN0RW5kVmlzaXRNZW1iZXIpOwogICAgICAgICAg
ICAgICAgICAgICBnb3RvIHN0YXRlVW5rbm93bjsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgaWYgKHRlcm1pbmFsQ29kZSAhPSBTdWNjZXNzZnVsbHlDb21wbGV0ZWQpCisgICAg
ICAgICAgICAgICAgaWYgKHRlcm1pbmFsQ29kZSAhPSBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZTo6
U3VjY2Vzc2Z1bGx5Q29tcGxldGVkKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGVybWlu
YWxDb2RlOwogICAgICAgICAgICAgICAgIEZBTExUSFJPVUdIOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgY2FzZSBPYmplY3RFbmRWaXNpdE1lbWJlcjogewogICAgICAgICAgICAgICAgIGlm
IChzaG91bGRUZXJtaW5hdGUoKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEV4aXN0aW5n
RXhjZXB0aW9uRXJyb3I7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBTZXJpYWxpemF0aW9u
UmV0dXJuQ29kZTo6RXhpc3RpbmdFeGNlcHRpb25FcnJvcjsKIAogICAgICAgICAgICAgICAgIGlu
ZGV4U3RhY2subGFzdCgpKys7CiAgICAgICAgICAgICAgICAgZ290byBvYmplY3RTdGFydFZpc2l0
TWVtYmVyOwpAQCAtMTM1Miw3ICsxMzU1LDcgQEAgU2VyaWFsaXphdGlvblJldHVybkNvZGUgQ2xv
bmVTZXJpYWxpemVyOgogICAgICAgICAgICAgbWFwU3RhcnRTdGF0ZTogewogICAgICAgICAgICAg
ICAgIEFTU0VSVChpblZhbHVlLmlzT2JqZWN0KCkpOwogICAgICAgICAgICAgICAgIGlmIChpbnB1
dE9iamVjdFN0YWNrLnNpemUoKSA+IG1heGltdW1GaWx0ZXJSZWN1cnNpb24pCi0gICAgICAgICAg
ICAgICAgICAgIHJldHVybiBTdGFja092ZXJmbG93RXJyb3I7CisgICAgICAgICAgICAgICAgICAg
IHJldHVybiBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZTo6U3RhY2tPdmVyZmxvd0Vycm9yOwogICAg
ICAgICAgICAgICAgIEpTTWFwKiBpbk1hcCA9IGpzQ2FzdDxKU01hcCo+KGluVmFsdWUpOwogICAg
ICAgICAgICAgICAgIGlmICghc3RhcnRNYXAoaW5NYXApKQogICAgICAgICAgICAgICAgICAgICBi
cmVhazsKQEAgLTEzOTYsNyArMTM5OSw3IEBAIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlIENsb25l
U2VyaWFsaXplcjoKICAgICAgICAgICAgIHNldFN0YXJ0U3RhdGU6IHsKICAgICAgICAgICAgICAg
ICBBU1NFUlQoaW5WYWx1ZS5pc09iamVjdCgpKTsKICAgICAgICAgICAgICAgICBpZiAoaW5wdXRP
YmplY3RTdGFjay5zaXplKCkgPiBtYXhpbXVtRmlsdGVyUmVjdXJzaW9uKQotICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gU3RhY2tPdmVyZmxvd0Vycm9yOworICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gU2VyaWFsaXphdGlvblJldHVybkNvZGU6OlN0YWNrT3ZlcmZsb3dFcnJvcjsKICAgICAg
ICAgICAgICAgICBKU1NldCogaW5TZXQgPSBqc0Nhc3Q8SlNTZXQqPihpblZhbHVlKTsKICAgICAg
ICAgICAgICAgICBpZiAoIXN0YXJ0U2V0KGluU2V0KSkKICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CkBAIC0xNDMxLDkgKzE0MzQsOSBAQCBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZSBDbG9uZVNl
cmlhbGl6ZXI6CiAKICAgICAgICAgICAgIHN0YXRlVW5rbm93bjoKICAgICAgICAgICAgIGNhc2Ug
U3RhdGVVbmtub3duOiB7Ci0gICAgICAgICAgICAgICAgU2VyaWFsaXphdGlvblJldHVybkNvZGUg
dGVybWluYWxDb2RlID0gU3VjY2Vzc2Z1bGx5Q29tcGxldGVkOworICAgICAgICAgICAgICAgIGF1
dG8gdGVybWluYWxDb2RlID0gU2VyaWFsaXphdGlvblJldHVybkNvZGU6OlN1Y2Nlc3NmdWxseUNv
bXBsZXRlZDsKICAgICAgICAgICAgICAgICBpZiAoZHVtcElmVGVybWluYWwoaW5WYWx1ZSwgdGVy
bWluYWxDb2RlKSkgewotICAgICAgICAgICAgICAgICAgICBpZiAodGVybWluYWxDb2RlICE9IFN1
Y2Nlc3NmdWxseUNvbXBsZXRlZCkKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRlcm1pbmFsQ29k
ZSAhPSBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZTo6U3VjY2Vzc2Z1bGx5Q29tcGxldGVkKQogICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRlcm1pbmFsQ29kZTsKICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQpAQCAtMTQ1NCwxMyArMTQ1NywxMSBAQCBT
ZXJpYWxpemF0aW9uUmV0dXJuQ29kZSBDbG9uZVNlcmlhbGl6ZXI6CiAgICAgICAgIHN0YXRlU3Rh
Y2sucmVtb3ZlTGFzdCgpOwogICAgIH0KICAgICBpZiAobV9mYWlsZWQpCi0gICAgICAgIHJldHVy
biBVbnNwZWNpZmllZEVycm9yOworICAgICAgICByZXR1cm4gU2VyaWFsaXphdGlvblJldHVybkNv
ZGU6OlVuc3BlY2lmaWVkRXJyb3I7CiAKLSAgICByZXR1cm4gU3VjY2Vzc2Z1bGx5Q29tcGxldGVk
OworICAgIHJldHVybiBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZTo6U3VjY2Vzc2Z1bGx5Q29tcGxl
dGVkOwogfQogCi10eXBlZGVmIFZlY3RvcjxKU0M6OkFycmF5QnVmZmVyQ29udGVudHM+IEFycmF5
QnVmZmVyQ29udGVudHNBcnJheTsKLQogY2xhc3MgQ2xvbmVEZXNlcmlhbGl6ZXIgOiBDbG9uZUJh
c2UgewogcHVibGljOgogICAgIHN0YXRpYyBTdHJpbmcgZGVzZXJpYWxpemVTdHJpbmcoY29uc3Qg
VmVjdG9yPHVpbnQ4X3Q+JiBidWZmZXIpCkBAIC0xNDg5LDEwICsxNDkwLDEwIEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgRGVzZXJpYWxpemF0aW9uUmVzdWx0IGRlc2VyaWFsaXplKEV4ZWNTdGF0ZSog
ZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVmVjdG9yPFJlZlB0cjxNZXNzYWdl
UG9ydD4+JiBtZXNzYWdlUG9ydHMsIEFycmF5QnVmZmVyQ29udGVudHNBcnJheSogYXJyYXlCdWZm
ZXJDb250ZW50c0FycmF5LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGJ1ZmZlciwgY29uc3QgVmVj
dG9yPFN0cmluZz4mIGJsb2JVUkxzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiBibG9iRmlsZVBhdGhz
KQogICAgIHsKICAgICAgICAgaWYgKCFidWZmZXIuc2l6ZSgpKQotICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bWFrZV9wYWlyKGpzTnVsbCgpLCBVbnNwZWNpZmllZEVycm9yKTsKKyAgICAgICAgICAg
IHJldHVybiBzdGQ6Om1ha2VfcGFpcihqc051bGwoKSwgU2VyaWFsaXphdGlvblJldHVybkNvZGU6
OlVuc3BlY2lmaWVkRXJyb3IpOwogICAgICAgICBDbG9uZURlc2VyaWFsaXplciBkZXNlcmlhbGl6
ZXIoZXhlYywgZ2xvYmFsT2JqZWN0LCBtZXNzYWdlUG9ydHMsIGFycmF5QnVmZmVyQ29udGVudHNB
cnJheSwgYnVmZmVyLCBibG9iVVJMcywgYmxvYkZpbGVQYXRocyk7CiAgICAgICAgIGlmICghZGVz
ZXJpYWxpemVyLmlzVmFsaWQoKSkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihK
U1ZhbHVlKCksIFZhbGlkYXRpb25FcnJvcik7CisgICAgICAgICAgICByZXR1cm4gc3RkOjptYWtl
X3BhaXIoSlNWYWx1ZSgpLCBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZTo6VmFsaWRhdGlvbkVycm9y
KTsKICAgICAgICAgcmV0dXJuIGRlc2VyaWFsaXplci5kZXNlcmlhbGl6ZSgpOwogICAgIH0KIApA
QCAtMTU2OSwxMyArMTU3MCw2IEBAIHByaXZhdGU6CiAKICAgICBEZXNlcmlhbGl6YXRpb25SZXN1
bHQgZGVzZXJpYWxpemUoKTsKIAotICAgIHZvaWQgdGhyb3dWYWxpZGF0aW9uRXJyb3IoKQotICAg
IHsKLSAgICAgICAgVk0mIHZtID0gbV9leGVjLT52bSgpOwotICAgICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKG1fZXhlYywg
c2NvcGUsIEFTQ0lJTGl0ZXJhbCgiVW5hYmxlIHRvIGRlc2VyaWFsaXplIGRhdGEuIikpOwotICAg
IH0KLQogICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIG1fdmVyc2lvbiA8PSBDdXJy
ZW50VmVyc2lvbjsgfQogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGJvb2wgcmVhZExpdHRs
ZUVuZGlhbihUJiB2YWx1ZSkKQEAgLTI1MjgsNyArMjUyMiw3IEBAIERlc2VyaWFsaXphdGlvblJl
c3VsdCBDbG9uZURlc2VyaWFsaXplcjoKICAgICAgICAgb2JqZWN0U3RhcnRTdGF0ZToKICAgICAg
ICAgY2FzZSBPYmplY3RTdGFydFN0YXRlOiB7CiAgICAgICAgICAgICBpZiAob3V0cHV0T2JqZWN0
U3RhY2suc2l6ZSgpID4gbWF4aW11bUZpbHRlclJlY3Vyc2lvbikKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gc3RkOjptYWtlX3BhaXIoSlNWYWx1ZSgpLCBTdGFja092ZXJmbG93RXJyb3IpOworICAg
ICAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihKU1ZhbHVlKCksIFNlcmlhbGl6YXRp
b25SZXR1cm5Db2RlOjpTdGFja092ZXJmbG93RXJyb3IpOwogICAgICAgICAgICAgSlNPYmplY3Qq
IG91dE9iamVjdCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KG1fZXhlYywgbV9nbG9iYWxPYmplY3Qt
Pm9iamVjdFByb3RvdHlwZSgpKTsKICAgICAgICAgICAgIG1fZ2NCdWZmZXIuYXBwZW5kKG91dE9i
amVjdCk7CiAgICAgICAgICAgICBvdXRwdXRPYmplY3RTdGFjay5hcHBlbmQob3V0T2JqZWN0KTsK
QEAgLTI1NjMsNyArMjU1Nyw3IEBAIERlc2VyaWFsaXphdGlvblJlc3VsdCBDbG9uZURlc2VyaWFs
aXplcjoKICAgICAgICAgfQogICAgICAgICBtYXBPYmplY3RTdGFydFN0YXRlOiB7CiAgICAgICAg
ICAgICBpZiAob3V0cHV0T2JqZWN0U3RhY2suc2l6ZSgpID4gbWF4aW11bUZpbHRlclJlY3Vyc2lv
bikKLSAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIoSlNWYWx1ZSgpLCBTdGFj
a092ZXJmbG93RXJyb3IpOworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihK
U1ZhbHVlKCksIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlOjpTdGFja092ZXJmbG93RXJyb3IpOwog
ICAgICAgICAgICAgSlNNYXAqIG1hcCA9IEpTTWFwOjpjcmVhdGUobV9leGVjLCBtX2V4ZWMtPnZt
KCksIG1fZ2xvYmFsT2JqZWN0LT5tYXBTdHJ1Y3R1cmUoKSk7CiAgICAgICAgICAgICBpZiAoVU5M
SUtFTFkoc2NvcGUuZXhjZXB0aW9uKCkpKQogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CkBA
IC0yNTk0LDcgKzI1ODgsNyBAQCBEZXNlcmlhbGl6YXRpb25SZXN1bHQgQ2xvbmVEZXNlcmlhbGl6
ZXI6CiAKICAgICAgICAgc2V0T2JqZWN0U3RhcnRTdGF0ZTogewogICAgICAgICAgICAgaWYgKG91
dHB1dE9iamVjdFN0YWNrLnNpemUoKSA+IG1heGltdW1GaWx0ZXJSZWN1cnNpb24pCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKEpTVmFsdWUoKSwgU3RhY2tPdmVyZmxvd0Vy
cm9yKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIoSlNWYWx1ZSgpLCBT
ZXJpYWxpemF0aW9uUmV0dXJuQ29kZTo6U3RhY2tPdmVyZmxvd0Vycm9yKTsKICAgICAgICAgICAg
IEpTU2V0KiBzZXQgPSBKU1NldDo6Y3JlYXRlKG1fZXhlYywgbV9leGVjLT52bSgpLCBtX2dsb2Jh
bE9iamVjdC0+c2V0U3RydWN0dXJlKCkpOwogICAgICAgICAgICAgaWYgKFVOTElLRUxZKHNjb3Bl
LmV4Y2VwdGlvbigpKSkKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwpAQCAtMjY0MywxMCAr
MjYzNywxMCBAQCBEZXNlcmlhbGl6YXRpb25SZXN1bHQgQ2xvbmVEZXNlcmlhbGl6ZXI6CiAgICAg
fQogICAgIEFTU0VSVChvdXRWYWx1ZSk7CiAgICAgQVNTRVJUKCFtX2ZhaWxlZCk7Ci0gICAgcmV0
dXJuIHN0ZDo6bWFrZV9wYWlyKG91dFZhbHVlLCBTdWNjZXNzZnVsbHlDb21wbGV0ZWQpOworICAg
IHJldHVybiBzdGQ6Om1ha2VfcGFpcihvdXRWYWx1ZSwgU2VyaWFsaXphdGlvblJldHVybkNvZGU6
OlN1Y2Nlc3NmdWxseUNvbXBsZXRlZCk7CiBlcnJvcjoKICAgICBmYWlsKCk7Ci0gICAgcmV0dXJu
IHN0ZDo6bWFrZV9wYWlyKEpTVmFsdWUoKSwgVmFsaWRhdGlvbkVycm9yKTsKKyAgICByZXR1cm4g
c3RkOjptYWtlX3BhaXIoSlNWYWx1ZSgpLCBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZTo6VmFsaWRh
dGlvbkVycm9yKTsKIH0KIAogU2VyaWFsaXplZFNjcmlwdFZhbHVlOjp+U2VyaWFsaXplZFNjcmlw
dFZhbHVlKCkKQEAgLTI2NjksMTkgKzI2NjMsMTIgQEAgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpT
ZXJpYWxpemVkU2NyaXB0VgogICAgICAgICBtX2Jsb2JVUkxzLmFwcGVuZCh1cmwuaXNvbGF0ZWRD
b3B5KCkpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpBcnJh
eUJ1ZmZlckNvbnRlbnRzQXJyYXk+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6dHJhbnNmZXJBcnJh
eUJ1ZmZlcnMoCi0gICAgRXhlY1N0YXRlKiBleGVjLCBWZWN0b3I8UmVmUHRyPEpTQzo6QXJyYXlC
dWZmZXI+PiYgYXJyYXlCdWZmZXJzLCBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZSYgY29kZSkKK0V4
Y2VwdGlvbk9yPHN0ZDo6dW5pcXVlX3B0cjxBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+PiBTZXJp
YWxpemVkU2NyaXB0VmFsdWU6OnRyYW5zZmVyQXJyYXlCdWZmZXJzKGNvbnN0IFZlY3RvcjxSZWZQ
dHI8SlNDOjpBcnJheUJ1ZmZlcj4+JiBhcnJheUJ1ZmZlcnMpCiB7Ci0gICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBhcnJheUJ1ZmZlcnMuc2l6ZSgpOyBpKyspIHsKLSAgICAgICAgaWYgKGFycmF5
QnVmZmVyc1tpXS0+aXNOZXV0ZXJlZCgpKSB7Ci0gICAgICAgICAgICBjb2RlID0gVmFsaWRhdGlv
bkVycm9yOwotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIH0KLSAgICB9Cisg
ICAgaWYgKGFycmF5QnVmZmVycy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOwog
CiAgICAgYXV0byBjb250ZW50cyA9IHN0ZDo6bWFrZV91bmlxdWU8QXJyYXlCdWZmZXJDb250ZW50
c0FycmF5PihhcnJheUJ1ZmZlcnMuc2l6ZSgpKTsKLSAgICBWZWN0b3I8UmVmPERPTVdyYXBwZXJX
b3JsZD4+IHdvcmxkczsKLSAgICBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KGV4ZWMtPnZt
KCkuY2xpZW50RGF0YSktPmdldEFsbFdvcmxkcyh3b3JsZHMpOwogCiAgICAgSGFzaFNldDxKU0M6
OkFycmF5QnVmZmVyKj4gdmlzaXRlZDsKICAgICBmb3IgKHNpemVfdCBhcnJheUJ1ZmZlckluZGV4
ID0gMDsgYXJyYXlCdWZmZXJJbmRleCA8IGFycmF5QnVmZmVycy5zaXplKCk7IGFycmF5QnVmZmVy
SW5kZXgrKykgewpAQCAtMjY5MCwyOSArMjY3NywyMCBAQCBzdGQ6OnVuaXF1ZV9wdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlOjpBCiAgICAgICAgIHZpc2l0ZWQuYWRkKGFycmF5QnVmZmVyc1thcnJh
eUJ1ZmZlckluZGV4XS5nZXQoKSk7CiAKICAgICAgICAgYm9vbCByZXN1bHQgPSBhcnJheUJ1ZmZl
cnNbYXJyYXlCdWZmZXJJbmRleF0tPnRyYW5zZmVyVG8oY29udGVudHMtPmF0KGFycmF5QnVmZmVy
SW5kZXgpKTsKLSAgICAgICAgaWYgKCFyZXN1bHQpIHsKLSAgICAgICAgICAgIGNvZGUgPSBWYWxp
ZGF0aW9uRXJyb3I7Ci0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgfQorICAg
ICAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJy
b3IgfTsKICAgICB9Ci0gICAgcmV0dXJuIGNvbnRlbnRzOwotfQogCi1SZWZQdHI8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShFeGVjU3RhdGUmIGV4
ZWMsIEpTVmFsdWUgdmFsdWUsIFNlcmlhbGl6YXRpb25FcnJvck1vZGUgdGhyb3dFeGNlcHRpb25z
KQotewotICAgIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiBtZXNzYWdlUG9ydHM7Ci0gICAg
cmV0dXJuIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKGV4ZWMsIHZhbHVlLCBtZXNzYWdl
UG9ydHMsIHsgfSwgdGhyb3dFeGNlcHRpb25zKTsKKyAgICByZXR1cm4gV1RGTW92ZShjb250ZW50
cyk7CiB9CiAKLVJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZTo6Y3JlYXRlKEV4ZWNTdGF0ZSYgZXhlYywgSlNWYWx1ZSB2YWx1ZSwgVmVjdG9yPFJlZlB0
cjxNZXNzYWdlUG9ydD4+JiBtZXNzYWdlUG9ydHMsIFZlY3RvcjxSZWZQdHI8SlNDOjpBcnJheUJ1
ZmZlcj4+JiYgYXJyYXlCdWZmZXJzLCBTZXJpYWxpemF0aW9uRXJyb3JNb2RlIHRocm93RXhjZXB0
aW9ucykKK1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTo6Y3JlYXRlKEV4ZWNTdGF0ZSYgZXhlYywgSlNWYWx1ZSB2YWx1ZSwgU2VyaWFsaXphdGlvbkVy
cm9yTW9kZSB0aHJvd0V4Y2VwdGlvbnMpCiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcjsK
ICAgICBWZWN0b3I8U3RyaW5nPiBibG9iVVJMczsKLSAgICBTZXJpYWxpemF0aW9uUmV0dXJuQ29k
ZSBjb2RlID0gQ2xvbmVTZXJpYWxpemVyOjpzZXJpYWxpemUoJmV4ZWMsIHZhbHVlLCBtZXNzYWdl
UG9ydHMsIGFycmF5QnVmZmVycywgYmxvYlVSTHMsIGJ1ZmZlcik7Ci0KLSAgICBzdGQ6OnVuaXF1
ZV9wdHI8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5PiBhcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk7
Ci0gICAgaWYgKCFhcnJheUJ1ZmZlcnMuaXNFbXB0eSgpICYmIHNlcmlhbGl6YXRpb25EaWRDb21w
bGV0ZVN1Y2Nlc3NmdWxseShjb2RlKSkKLSAgICAgICAgYXJyYXlCdWZmZXJDb250ZW50c0FycmF5
ID0gdHJhbnNmZXJBcnJheUJ1ZmZlcnMoJmV4ZWMsIGFycmF5QnVmZmVycywgY29kZSk7CisgICAg
VmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+IGR1bW15TWVzc2FnZVBvcnRzOworICAgIFZlY3Rv
cjxSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4+IGR1bW15QXJyYXlCdWZmZXJzOworICAgIGF1dG8g
Y29kZSA9IENsb25lU2VyaWFsaXplcjo6c2VyaWFsaXplKCZleGVjLCB2YWx1ZSwgZHVtbXlNZXNz
YWdlUG9ydHMsIGR1bW15QXJyYXlCdWZmZXJzLCBibG9iVVJMcywgYnVmZmVyKTsKIAogICAgIGlm
ICh0aHJvd0V4Y2VwdGlvbnMgPT0gVGhyb3dpbmcpCiAgICAgICAgIG1heWJlVGhyb3dFeGNlcHRp
b25JZlNlcmlhbGl6YXRpb25GYWlsZWQoJmV4ZWMsIGNvZGUpOwpAQCAtMjcyMCw3ICsyNjk4LDYx
IEBAIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNlcmlhbGl6ZWQKICAgICBpZiAoIXNl
cmlhbGl6YXRpb25EaWRDb21wbGV0ZVN1Y2Nlc3NmdWxseShjb2RlKSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTZXJpYWxpemVkU2NyaXB0VmFs
dWUoV1RGTW92ZShidWZmZXIpLCBibG9iVVJMcywgV1RGTW92ZShhcnJheUJ1ZmZlckNvbnRlbnRz
QXJyYXkpKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2VyaWFsaXplZFNjcmlwdFZhbHVl
KFdURk1vdmUoYnVmZmVyKSwgYmxvYlVSTHMsIG51bGxwdHIpKTsKK30KKworRXhjZXB0aW9uIFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZXhjZXB0aW9uRm9yU2VyaWFsaXphdGlvbkZhaWx1cmUoU2Vy
aWFsaXphdGlvblJldHVybkNvZGUgY29kZSkKK3sKKyAgICBBU1NFUlQoY29kZSAhPSBTZXJpYWxp
emF0aW9uUmV0dXJuQ29kZTo6U3VjY2Vzc2Z1bGx5Q29tcGxldGVkKTsKKyAgICAKKyAgICBzd2l0
Y2ggKGNvZGUpIHsKKyAgICBjYXNlIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlOjpTdGFja092ZXJm
bG93RXJyb3I6CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTdGFja092ZXJmbG93RXJyb3Ig
fTsKKyAgICBjYXNlIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlOjpWYWxpZGF0aW9uRXJyb3I6Cisg
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IgfTsKKyAgICBjYXNlIFNlcmlhbGl6
YXRpb25SZXR1cm5Db2RlOjpEYXRhQ2xvbmVFcnJvcjoKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IERBVEFfQ0xPTkVfRVJSIH07CisgICAgY2FzZSBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZTo6
RXhpc3RpbmdFeGNlcHRpb25FcnJvcjoKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEV4aXN0
aW5nRXhjZXB0aW9uRXJyb3IgfTsKKyAgICBjYXNlIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlOjpV
bnNwZWNpZmllZEVycm9yOgorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yIH07
CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IgfTsKKyAgICB9Cit9CisKK0V4Y2VwdGlvbk9yPFJl
ZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+PiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShF
eGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlLCBWZWN0b3I8SlNDOjpTdHJvbmc8SlNDOjpK
U09iamVjdD4+JiYgdHJhbnNmZXJMaXN0LCBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4mIG1l
c3NhZ2VQb3J0cykKK3sKKyAgICBWZWN0b3I8UmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+PiBhcnJh
eUJ1ZmZlcnM7CisgICAgZm9yIChhdXRvJiB0cmFuc2ZlcmFibGUgOiB0cmFuc2Zlckxpc3QpIHsK
KyAgICAgICAgaWYgKFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSB0b1Bvc3NpYmx5
U2hhcmVkQXJyYXlCdWZmZXIodHJhbnNmZXJhYmxlLmdldCgpKSkgeworICAgICAgICAgICAgaWYg
KGFycmF5QnVmZmVyLT5pc05ldXRlcmVkKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIEV4Y2Vw
dGlvbiB7IERBVEFfQ0xPTkVfRVJSIH07CisgICAgICAgICAgICBhcnJheUJ1ZmZlcnMuYXBwZW5k
KFdURk1vdmUoYXJyYXlCdWZmZXIpKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9
CisgICAgICAgIGlmIChSZWZQdHI8TWVzc2FnZVBvcnQ+IHBvcnQgPSBKU01lc3NhZ2VQb3J0Ojp0
b1dyYXBwZWQodHJhbnNmZXJhYmxlLmdldCgpKSkgeworICAgICAgICAgICAgLy8gRklYTUU6IFRo
aXMgc2hvdWxkIGNoZWNrIGlmIHRoZSBwb3J0IGlzIGRldGFjaGVkIGFzIHBlciBodHRwczovL2h0
bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9pbmZyYXN0cnVjdHVyZS5odG1sI2lzdHJhbnNm
ZXJhYmxlLgorICAgICAgICAgICAgbWVzc2FnZVBvcnRzLmFwcGVuZChXVEZNb3ZlKHBvcnQpKTsK
KyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIEV4Y2Vw
dGlvbiB7IERBVEFfQ0xPTkVfRVJSIH07CisgICAgfQorCisgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1
ZmZlcjsKKyAgICBWZWN0b3I8U3RyaW5nPiBibG9iVVJMczsKKyAgICBhdXRvIGNvZGUgPSBDbG9u
ZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZSgmc3RhdGUsIHZhbHVlLCBtZXNzYWdlUG9ydHMsIGFycmF5
QnVmZmVycywgYmxvYlVSTHMsIGJ1ZmZlcik7CisKKyAgICBpZiAoY29kZSAhPSBTZXJpYWxpemF0
aW9uUmV0dXJuQ29kZTo6U3VjY2Vzc2Z1bGx5Q29tcGxldGVkKQorICAgICAgICByZXR1cm4gZXhj
ZXB0aW9uRm9yU2VyaWFsaXphdGlvbkZhaWx1cmUoY29kZSk7CisKKyAgICBhdXRvIGFycmF5QnVm
ZmVyQ29udGVudHNBcnJheSA9IHRyYW5zZmVyQXJyYXlCdWZmZXJzKGFycmF5QnVmZmVycyk7Cisg
ICAgaWYgKGFycmF5QnVmZmVyQ29udGVudHNBcnJheS5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAg
cmV0dXJuIGFycmF5QnVmZmVyQ29udGVudHNBcnJheS5yZWxlYXNlRXhjZXB0aW9uKCk7CisKKyAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTZXJpYWxpemVkU2NyaXB0VmFsdWUoV1RGTW92ZShidWZm
ZXIpLCBibG9iVVJMcywgYXJyYXlCdWZmZXJDb250ZW50c0FycmF5LnJlbGVhc2VSZXR1cm5WYWx1
ZSgpKSk7CiB9CiAKIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTo6Y3JlYXRlKFN0cmluZ1ZpZXcgc3RyaW5nKQpAQCAtMjgwNCwyMiArMjgzNiwyMiBA
QCB2b2lkIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6bWF5YmVUaHJvd0V4CiAgICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAK
LSAgICBpZiAoY29kZSA9PSBTdWNjZXNzZnVsbHlDb21wbGV0ZWQpCisgICAgaWYgKGNvZGUgPT0g
U2VyaWFsaXphdGlvblJldHVybkNvZGU6OlN1Y2Nlc3NmdWxseUNvbXBsZXRlZCkKICAgICAgICAg
cmV0dXJuOwogICAgIAogICAgIHN3aXRjaCAoY29kZSkgewotICAgIGNhc2UgU3RhY2tPdmVyZmxv
d0Vycm9yOgorICAgIGNhc2UgU2VyaWFsaXphdGlvblJldHVybkNvZGU6OlN0YWNrT3ZlcmZsb3dF
cnJvcjoKICAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZVN0YWNrT3Zl
cmZsb3dFcnJvcihleGVjKSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgVmFsaWRhdGlvbkVy
cm9yOgorICAgIGNhc2UgU2VyaWFsaXphdGlvblJldHVybkNvZGU6OlZhbGlkYXRpb25FcnJvcjoK
ICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiVW5hYmxl
IHRvIGRlc2VyaWFsaXplIGRhdGEuIikpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIERhdGFD
bG9uZUVycm9yOgorICAgIGNhc2UgU2VyaWFsaXphdGlvblJldHVybkNvZGU6OkRhdGFDbG9uZUVy
cm9yOgogICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgREFUQV9DTE9ORV9FUlIpOwogICAg
ICAgICBicmVhazsKLSAgICBjYXNlIEV4aXN0aW5nRXhjZXB0aW9uRXJyb3I6CisgICAgY2FzZSBT
ZXJpYWxpemF0aW9uUmV0dXJuQ29kZTo6RXhpc3RpbmdFeGNlcHRpb25FcnJvcjoKICAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBVbnNwZWNpZmllZEVycm9yOgorICAgIGNhc2UgU2VyaWFsaXphdGlv
blJldHVybkNvZGU6OlVuc3BlY2lmaWVkRXJyb3I6CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1
bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMjgyOCw3ICsyODYwLDcgQEAg
dm9pZCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6Om1heWJlVGhyb3dFeAogCiBib29sIFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZTo6c2VyaWFsaXphdGlvbkRpZENvbXBsZXRlU3VjY2Vzc2Z1bGx5KFNlcmlh
bGl6YXRpb25SZXR1cm5Db2RlIGNvZGUpCiB7Ci0gICAgcmV0dXJuIChjb2RlID09IFN1Y2Nlc3Nm
dWxseUNvbXBsZXRlZCk7CisgICAgcmV0dXJuIChjb2RlID09IFNlcmlhbGl6YXRpb25SZXR1cm5D
b2RlOjpTdWNjZXNzZnVsbHlDb21wbGV0ZWQpOwogfQogCiB1aW50MzJfdCBTZXJpYWxpemVkU2Ny
aXB0VmFsdWU6OndpcmVGb3JtYXRWZXJzaW9uKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCShyZXZpc2lvbiAyMDkyNjEp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaAko
d29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1
ZGUgIkV4Y2VwdGlvbk9yLmgiCiAjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0VmFsdWUuaD4KICNp
bmNsdWRlIDxoZWFwL1N0cm9uZy5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvQXJyYXlCdWZmZXIuaD4K
QEAgLTQyLDI1ICs0MywxOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIElEQlZhbHVl
OwogY2xhc3MgTWVzc2FnZVBvcnQ7Ci0gCi1lbnVtIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlIHsK
LSAgICBTdWNjZXNzZnVsbHlDb21wbGV0ZWQsCi0gICAgU3RhY2tPdmVyZmxvd0Vycm9yLAotICAg
IEludGVycnVwdGVkRXhlY3V0aW9uRXJyb3IsCi0gICAgVmFsaWRhdGlvbkVycm9yLAotICAgIEV4
aXN0aW5nRXhjZXB0aW9uRXJyb3IsCi0gICAgRGF0YUNsb25lRXJyb3IsCi0gICAgVW5zcGVjaWZp
ZWRFcnJvcgotfTsKLSAgICAKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKK2VudW0gY2xhc3MgU2VyaWFs
aXphdGlvblJldHVybkNvZGU7CisKIGVudW0gU2VyaWFsaXphdGlvbkVycm9yTW9kZSB7IE5vblRo
cm93aW5nLCBUaHJvd2luZyB9OwogCi1jbGFzcyBTaGFyZWRCdWZmZXI7Cit1c2luZyBBcnJheUJ1
ZmZlckNvbnRlbnRzQXJyYXkgPSBWZWN0b3I8SlNDOjpBcnJheUJ1ZmZlckNvbnRlbnRzPjsKIAog
Y2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVk
PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gewogcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBjcmVhdGUoSlNDOjpFeGVjU3RhdGUm
LCBKU0M6OkpTVmFsdWUsIFNlcmlhbGl6YXRpb25FcnJvck1vZGUgPSBUaHJvd2luZyk7Ci0gICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGNyZWF0
ZShKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSwgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9y
dD4+JiwgVmVjdG9yPFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPj4mJiwgU2VyaWFsaXphdGlvbkVy
cm9yTW9kZSA9IFRocm93aW5nKTsKKworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBFeGNlcHRp
b25PcjxSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPj4gY3JlYXRlKEpTQzo6RXhlY1N0YXRlJiwg
SlNDOjpKU1ZhbHVlLCBWZWN0b3I8SlNDOjpTdHJvbmc8SlNDOjpKU09iamVjdD4+JiYsIFZlY3Rv
cjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJl
ZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGNyZWF0ZShTdHJpbmdWaWV3KTsKICAgICBzdGF0
aWMgUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gYWRvcHQoVmVjdG9yPHVpbnQ4X3Q+JiYgYnVm
ZmVyKQpAQCAtMTAwLDEwICs5NCwxMSBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgflNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZSgpOwogCiBwcml2YXRlOgotICAgIHR5cGVkZWYgVmVjdG9yPEpT
Qzo6QXJyYXlCdWZmZXJDb250ZW50cz4gQXJyYXlCdWZmZXJDb250ZW50c0FycmF5OwogICAgIHN0
YXRpYyB2b2lkIG1heWJlVGhyb3dFeGNlcHRpb25JZlNlcmlhbGl6YXRpb25GYWlsZWQoSlNDOjpF
eGVjU3RhdGUqLCBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZSk7CiAgICAgc3RhdGljIGJvb2wgc2Vy
aWFsaXphdGlvbkRpZENvbXBsZXRlU3VjY2Vzc2Z1bGx5KFNlcmlhbGl6YXRpb25SZXR1cm5Db2Rl
KTsKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4g
dHJhbnNmZXJBcnJheUJ1ZmZlcnMoSlNDOjpFeGVjU3RhdGUqLCBWZWN0b3I8UmVmUHRyPEpTQzo6
QXJyYXlCdWZmZXI+PiYsIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlJik7CisgICAgc3RhdGljIEV4
Y2VwdGlvbiBleGNlcHRpb25Gb3JTZXJpYWxpemF0aW9uRmFpbHVyZShTZXJpYWxpemF0aW9uUmV0
dXJuQ29kZSk7CisKKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8c3RkOjp1bmlxdWVfcHRyPEFycmF5
QnVmZmVyQ29udGVudHNBcnJheT4+IHRyYW5zZmVyQXJyYXlCdWZmZXJzKGNvbnN0IFZlY3RvcjxS
ZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4+Jik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBTZXJpYWxp
emVkU2NyaXB0VmFsdWUoVmVjdG9yPHVuc2lnbmVkIGNoYXI+JiYpOwogICAgIFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZShWZWN0b3I8dW5zaWduZWQgY2hhcj4mJiwgY29uc3QgVmVjdG9yPFN0cmluZz4m
IGJsb2JVUkxzLCBzdGQ6OnVuaXF1ZV9wdHI8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5PiYmKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3IucG0JKHJldmlzaW9uIDIwOTI2MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvci5wbQkod29ya2luZyBjb3B5KQpAQCAtNTk3LDYgKzU5Nyw3IEBAIHN1
YiBJc1JlZlB0clR5cGUKICAgICByZXR1cm4gMCBpZiAkb2JqZWN0LT5Jc1N0cmluZ1R5cGUoJHR5
cGUpOwogICAgIHJldHVybiAwIGlmICR0eXBlLT5pc1VuaW9uOwogICAgIHJldHVybiAwIGlmICR0
eXBlLT5uYW1lIGVxICJhbnkiOworICAgIHJldHVybiAwIGlmICR0eXBlLT5uYW1lIGVxICJvYmpl
Y3QiOwogCiAgICAgcmV0dXJuIDE7CiB9CkBAIC04NjIsNiArODYzLDcgQEAgc3ViIElzQnVpbHRp
blR5cGUKICAgICByZXR1cm4gMSBpZiAkb2JqZWN0LT5Jc1R5cGVkQXJyYXlUeXBlKCR0eXBlKTsK
ICAgICByZXR1cm4gMSBpZiAkdHlwZS0+aXNVbmlvbjsKICAgICByZXR1cm4gMSBpZiAkdHlwZS0+
bmFtZSBlcSAiYW55IjsKKyAgICByZXR1cm4gMSBpZiAkdHlwZS0+bmFtZSBlcSAib2JqZWN0IjsK
ICAgICByZXR1cm4gMSBpZiAkdHlwZS0+bmFtZSBlcSAiQnVmZmVyU291cmNlIjsKICAgICByZXR1
cm4gMSBpZiAkdHlwZS0+bmFtZSBlcSAiUHJvbWlzZSI7CiAgICAgcmV0dXJuIDEgaWYgJHR5cGUt
Pm5hbWUgZXEgIlhQYXRoTlNSZXNvbHZlciI7ICAgIApJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHJldmlzaW9uIDIwOTI2
MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBt
CSh3b3JraW5nIGNvcHkpCkBAIC0yNzksNiArMjc5LDcgQEAgc3ViIEFkZFRvSW5jbHVkZXNGb3JJ
RExUeXBlCiAgICAgcmV0dXJuIGlmICRjb2RlR2VuZXJhdG9yLT5Jc1N0cmluZ1R5cGUoJHR5cGUp
OwogICAgIHJldHVybiBpZiAkY29kZUdlbmVyYXRvci0+SXNUeXBlZEFycmF5VHlwZSgkdHlwZSk7
CiAgICAgcmV0dXJuIGlmICR0eXBlLT5uYW1lIGVxICJhbnkiOworICAgIHJldHVybiBpZiAkdHlw
ZS0+bmFtZSBlcSAib2JqZWN0IjsKIAogICAgIGlmICgkdHlwZS0+aXNVbmlvbikgewogICAgICAg
ICBBZGRUb0luY2x1ZGVzKCI8d3RmL1ZhcmlhbnQuaD4iLCAkaW5jbHVkZXNSZWYsICRjb25kaXRp
b25hbCk7CkBAIC00OTcwLDYgKzQ5NzEsNyBAQCBteSAlbmF0aXZlVHlwZSA9ICgKICAgICAiU2Vy
aWFsaXplZFNjcmlwdFZhbHVlIiA9PiAiUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4iLAog
ICAgICJYUGF0aE5TUmVzb2x2ZXIiID0+ICJSZWZQdHI8WFBhdGhOU1Jlc29sdmVyPiIsCiAgICAg
ImFueSIgPT4gIkpTQzo6SlNWYWx1ZSIsCisgICAgIm9iamVjdCIgPT4gIkpTQzo6U3Ryb25nPEpT
Qzo6SlNPYmplY3Q+IiwKICAgICAiYm9vbGVhbiIgPT4gImJvb2wiLAogICAgICJieXRlIiA9PiAi
aW50OF90IiwKICAgICAiZG91YmxlIiA9PiAiZG91YmxlIiwKQEAgLTUwNTgsNiArNTA2MCw3IEBA
IHN1YiBHZXRCYXNlSURMVHlwZQogICAgICAgICAiRE9NU3RyaW5nIiA9PiAiSURMRE9NU3RyaW5n
IiwKICAgICAgICAgIkJ5dGVTdHJpbmciID0+ICJJRExCeXRlU3RyaW5nIiwKICAgICAgICAgIlVT
VlN0cmluZyIgPT4gIklETFVTVlN0cmluZyIsCisgICAgICAgICJvYmplY3QiID0+ICJJRExPYmpl
Y3QiLAogICAgICAgICAKICAgICAgICAgIyBOb24tV2ViSURMIGV4dGVuc2lvbnMKICAgICAgICAg
IkRhdGUiID0+ICJJRExEYXRlIiwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9UZXN0T2JqLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwJKHJldmlzaW9uIDIwOTI2MSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbAkod29ya2luZyBjb3B5KQpA
QCAtMjMzLDYgKzIzMyw3IEBAIGVudW0gVGVzdENvbmZpZGVuY2UgeyAiaGlnaCIsICJraW5kYS1s
b3cKICAgICB2b2lkICAgIG1ldGhvZFdpdGhPcHRpb25hbEJvb2xlYW4ob3B0aW9uYWwgYm9vbGVh
biBiKTsKICAgICB2b2lkICAgIG1ldGhvZFdpdGhPcHRpb25hbEJvb2xlYW5Jc0ZhbHNlKG9wdGlv
bmFsIGJvb2xlYW4gYiA9IGZhbHNlKTsKICAgICB2b2lkICAgIG1ldGhvZFdpdGhPcHRpb25hbEFu
eShvcHRpb25hbCBhbnkgYSk7CisgICAgdm9pZCAgICBtZXRob2RXaXRoT3B0aW9uYWxPYmplY3Qo
b3B0aW9uYWwgb2JqZWN0IGEpOwogICAgIHZvaWQgICAgbWV0aG9kV2l0aE9wdGlvbmFsTnVsbGFi
bGVXcmFwcGVyKG9wdGlvbmFsIFRlc3RPYmo/IG9iaik7CiAgICAgdm9pZCAgICBtZXRob2RXaXRo
T3B0aW9uYWxOdWxsYWJsZVdyYXBwZXJJc051bGwob3B0aW9uYWwgVGVzdE9iaj8gb2JqID0gbnVs
bCk7CiAgICAgdm9pZCAgICBtZXRob2RXaXRoT3B0aW9uYWxYUGF0aE5TUmVzb2x2ZXIob3B0aW9u
YWwgWFBhdGhOU1Jlc29sdmVyPyByZXNvbHZlcik7CkBAIC0yNzIsNiArMjczLDcgQEAgZW51bSBU
ZXN0Q29uZmlkZW5jZSB7ICJoaWdoIiwgImtpbmRhLWxvdwogICAgIFtDYWNoZWRBdHRyaWJ1dGVd
IHJlYWRvbmx5IGF0dHJpYnV0ZSBhbnkgY2FjaGVkQXR0cmlidXRlMjsKICAgICAKICAgICBhdHRy
aWJ1dGUgYW55IGFueUF0dHJpYnV0ZTsKKyAgICBhdHRyaWJ1dGUgb2JqZWN0IG9iamVjdEF0dHJp
YnV0ZTsKIAogICAgIC8vIE92ZXJsb2FkcwogICAgIHZvaWQgICAgb3ZlcmxvYWRlZE1ldGhvZChU
ZXN0T2JqPyBvYmpBcmcsIERPTVN0cmluZyBzdHJBcmcpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAJKHJldmlz
aW9uIDIwOTI2MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RPYmouY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDE1LDYgKzEwMTUsNyBAQCBKU0M6OkVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0CiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxC
b29sZWFuKEpTQzo6RXhlY1N0YXRlKik7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxCb29sZWFuSXNG
YWxzZShKU0M6OkV4ZWNTdGF0ZSopOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQW55KEpTQzo6RXhl
Y1N0YXRlKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxPYmplY3QoSlNDOjpFeGVjU3RhdGUqKTsK
IEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk1ldGhvZFdpdGhPcHRpb25hbE51bGxhYmxlV3JhcHBlcihKU0M6OkV4ZWNTdGF0ZSopOwog
SlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kV2l0aE9wdGlvbmFsTnVsbGFibGVXcmFwcGVySXNOdWxsKEpTQzo6RXhlY1N0YXRl
Kik7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxYUGF0aE5TUmVzb2x2ZXIoSlNDOjpFeGVjU3RhdGUq
KTsKQEAgLTEyNDAsNiArMTI0MSw4IEBAIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ2Fj
aGVkQXR0cmkKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ2FjaGVkQXR0cmlidXRlMihK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsK
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQW55QXR0cmlidXRlKEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogYm9vbCBzZXRKU1Rl
c3RPYmpBbnlBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBK
U0M6OkVuY29kZWRKU1ZhbHVlKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqT2JqZWN0
QXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9w
ZXJ0eU5hbWUpOworYm9vbCBzZXRKU1Rlc3RPYmpPYmplY3RBdHRyaWJ1dGUoSlNDOjpFeGVjU3Rh
dGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqQ29udGVudERvY3VtZW50KEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpNdXRhYmxlUG9pbnQoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1Zh
bHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiBib29sIHNldEpTVGVzdE9iak11dGFibGVQb2ludChK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUp
OwpAQCAtMTU0MCw2ICsxNTQzLDcgQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVz
dE9ialBybwogICAgIHsgImNhY2hlZEF0dHJpYnV0ZTEiLCBSZWFkT25seSB8IEN1c3RvbUFjY2Vz
c29yLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpH
ZXRWYWx1ZUZ1bmM+KGpzVGVzdE9iakNhY2hlZEF0dHJpYnV0ZTEpLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCiAgICAgeyAiY2Fj
aGVkQXR0cmlidXRlMiIsIFJlYWRPbmx5IHwgQ3VzdG9tQWNjZXNzb3IsIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0
T2JqQ2FjaGVkQXR0cmlidXRlMiksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlT
bG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKICAgICB7ICJhbnlBdHRyaWJ1dGUiLCBDdXN0b21B
Y2Nlc3NvciwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xv
dDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpBbnlBdHRyaWJ1dGUpLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RPYmpBbnlBdHRy
aWJ1dGUpIH0gfSwKKyAgICB7ICJvYmplY3RBdHRyaWJ1dGUiLCBDdXN0b21BY2Nlc3NvciwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVG
dW5jPihqc1Rlc3RPYmpPYmplY3RBdHRyaWJ1dGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1
dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RPYmpPYmplY3RBdHRyaWJ1dGUp
IH0gfSwKICAgICB7ICJjb250ZW50RG9jdW1lbnQiLCBSZWFkT25seSB8IEN1c3RvbUFjY2Vzc29y
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRW
YWx1ZUZ1bmM+KGpzVGVzdE9iakNvbnRlbnREb2N1bWVudCksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKICAgICB7ICJtdXRhYmxl
UG9pbnQiLCBDdXN0b21BY2Nlc3NvciwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpNdXRhYmxlUG9pbnQpLCAo
aW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRK
U1Rlc3RPYmpNdXRhYmxlUG9pbnQpIH0gfSwKICAgICB7ICJpbW11dGFibGVQb2ludCIsIEN1c3Rv
bUFjY2Vzc29yLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9iakltbXV0YWJsZVBvaW50KSwgKGludHB0cl90KSBz
dGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0T2JqSW1t
dXRhYmxlUG9pbnQpIH0gfSwKQEAgLTE2NTIsNiArMTY1Niw3IEBAIHN0YXRpYyBjb25zdCBIYXNo
VGFibGVWYWx1ZSBKU1Rlc3RPYmpQcm8KICAgICB7ICJtZXRob2RXaXRoT3B0aW9uYWxCb29sZWFu
IiwgSlNDOjpGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PE5h
dGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25h
bEJvb2xlYW4pLCAoaW50cHRyX3QpICgwKSB9IH0sCiAgICAgeyAibWV0aG9kV2l0aE9wdGlvbmFs
Qm9vbGVhbklzRmFsc2UiLCBKU0M6OkZ1bmN0aW9uLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aE9wdGlvbmFsQm9vbGVhbklzRmFsc2UpLCAoaW50cHRyX3QpICgwKSB9IH0sCiAgICAg
eyAibWV0aG9kV2l0aE9wdGlvbmFsQW55IiwgSlNDOjpGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEFueSksIChpbnRwdHJfdCkgKDApIH0gfSwKKyAgICB7
ICJtZXRob2RXaXRoT3B0aW9uYWxPYmplY3QiLCBKU0M6OkZ1bmN0aW9uLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsT2JqZWN0KSwgKGludHB0cl90KSAoMCkgfSB9LAog
ICAgIHsgIm1ldGhvZFdpdGhPcHRpb25hbE51bGxhYmxlV3JhcHBlciIsIEpTQzo6RnVuY3Rpb24s
IE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxOdWxsYWJsZVdyYXBwZXIp
LCAoaW50cHRyX3QpICgwKSB9IH0sCiAgICAgeyAibWV0aG9kV2l0aE9wdGlvbmFsTnVsbGFibGVX
cmFwcGVySXNOdWxsIiwgSlNDOjpGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhv
ZFdpdGhPcHRpb25hbE51bGxhYmxlV3JhcHBlcklzTnVsbCksIChpbnRwdHJfdCkgKDApIH0gfSwK
ICAgICB7ICJtZXRob2RXaXRoT3B0aW9uYWxYUGF0aE5TUmVzb2x2ZXIiLCBKU0M6OkZ1bmN0aW9u
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsWFBhdGhOU1Jlc29sdmVy
KSwgKGludHB0cl90KSAoMCkgfSB9LApAQCAtMzAyNSw2ICszMDMwLDIyIEBAIHN0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc1Rlc3RPYmpBbnlBdHRyaWIKICAgICByZXR1cm4gcmVzdWx0OwogfQogCitz
dGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0T2JqT2JqZWN0QXR0cmlidXRlR2V0dGVyKEV4ZWNT
dGF0ZSYsIEpTVGVzdE9iaiYsIFRocm93U2NvcGUmIHRocm93U2NvcGUpOworCitFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpPYmplY3RBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCit7CisgICAgcmV0dXJuIEJpbmRpbmdDYWxs
ZXI8SlNUZXN0T2JqPjo6YXR0cmlidXRlPGpzVGVzdE9iak9iamVjdEF0dHJpYnV0ZUdldHRlcj4o
c3RhdGUsIHRoaXNWYWx1ZSwgIm9iamVjdEF0dHJpYnV0ZSIpOworfQorCitzdGF0aWMgaW5saW5l
IEpTVmFsdWUganNUZXN0T2JqT2JqZWN0QXR0cmlidXRlR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUs
IEpTVGVzdE9iaiYgdGhpc09iamVjdCwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3sKKyAgICBV
TlVTRURfUEFSQU0odGhyb3dTY29wZSk7CisgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSB0
b0pTPElETE9iamVjdD4oaW1wbC5vYmplY3RBdHRyaWJ1dGUoKSk7CisgICAgcmV0dXJuIHJlc3Vs
dDsKK30KKwogc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdE9iakNvbnRlbnREb2N1bWVudEdl
dHRlcihFeGVjU3RhdGUmLCBKU1Rlc3RPYmomLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKTsKIAog
RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29udGVudERvY3VtZW50KEV4ZWNTdGF0ZSogc3RhdGUs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQpAQCAtNDYyMyw2ICs0NjQ0
LDI1IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RPYmpBbnlBdHRyaWIKIH0KIAogCitz
dGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0T2JqT2JqZWN0QXR0cmlidXRlRnVuY3Rpb24oRXhl
Y1N0YXRlJiwgSlNUZXN0T2JqJiwgSlNWYWx1ZSwgVGhyb3dTY29wZSYpOworCitib29sIHNldEpT
VGVzdE9iak9iamVjdEF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK3sKKyAgICByZXR1cm4gQmlu
ZGluZ0NhbGxlcjxKU1Rlc3RPYmo+OjpzZXRBdHRyaWJ1dGU8c2V0SlNUZXN0T2JqT2JqZWN0QXR0
cmlidXRlRnVuY3Rpb24+KHN0YXRlLCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIm9iamVjdEF0
dHJpYnV0ZSIpOworfQorCitzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0T2JqT2JqZWN0QXR0
cmlidXRlRnVuY3Rpb24oRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0T2JqJiB0aGlzT2JqZWN0LCBK
U1ZhbHVlIHZhbHVlLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQoreworICAgIFVOVVNFRF9QQVJB
TShzdGF0ZSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOworICAgIGF1dG8mIGltcGwg
PSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKKyAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJ
RExPYmplY3Q+KHN0YXRlLCB2YWx1ZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBmYWxzZSk7CisgICAgaW1wbC5zZXRPYmplY3RBdHRyaWJ1dGUoV1RGTW92ZShuYXRpdmVW
YWx1ZSkpOworICAgIHJldHVybiB0cnVlOworfQorCisKIHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRK
U1Rlc3RPYmpNdXRhYmxlUG9pbnRGdW5jdGlvbihFeGVjU3RhdGUmLCBKU1Rlc3RPYmomLCBKU1Zh
bHVlLCBUaHJvd1Njb3BlJik7CiAKIGJvb2wgc2V0SlNUZXN0T2JqTXV0YWJsZVBvaW50KEV4ZWNT
dGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKQpAQCAtNjQzMyw2ICs2NDczLDI0IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwogfQogCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxPYmplY3RDYWxsZXIoSlNDOjpFeGVjU3Rh
dGUqLCBKU1Rlc3RPYmoqLCBKU0M6OlRocm93U2NvcGUmKTsKKworRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbE9i
amVjdChFeGVjU3RhdGUqIHN0YXRlKQoreworICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVz
dE9iaj46OmNhbGxPcGVyYXRpb248anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRo
T3B0aW9uYWxPYmplY3RDYWxsZXI+KHN0YXRlLCAibWV0aG9kV2l0aE9wdGlvbmFsT2JqZWN0Iik7
Cit9CisKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbE9iamVjdENhbGxlcihKU0M6OkV4ZWNTdGF0ZSog
c3RhdGUsIEpTVGVzdE9iaiogY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3Bl
KQoreworICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2Nv
cGUpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CisgICAgYXV0byBh
ID0gc3RhdGUtPmFyZ3VtZW50KDApLmlzVW5kZWZpbmVkKCkgPyBzdGQ6Om9wdGlvbmFsPEpTQzo6
U3Ryb25nPEpTQzo6SlNPYmplY3Q+PigpIDogY29udmVydDxJRExPYmplY3Q+KCpzdGF0ZSwgc3Rh
dGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworICAgIGltcGwubWV0aG9kV2l0aE9wdGlvbmFsT2Jq
ZWN0KFdURk1vdmUoYSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7Cit9CisKIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbE51bGxhYmxlV3JhcHBlckNhbGxlcihKU0M6
OkV4ZWNTdGF0ZSosIEpTVGVzdE9iaiosIEpTQzo6VGhyb3dTY29wZSYpOwogCiBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9w
dGlvbmFsTnVsbGFibGVXcmFwcGVyKEV4ZWNTdGF0ZSogc3RhdGUpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9kb20vRXhjZXB0aW9uQ29kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Rv
bS9FeGNlcHRpb25Db2RlLmgJKHJldmlzaW9uIDIwOTI2MSkKKysrIFNvdXJjZS9XZWJDb3JlL2Rv
bS9FeGNlcHRpb25Db2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDkgQEAgdXNpbmcg
RXhjZXB0aW9uQ29kZSA9IGludDsKIC8vIFNvbWUgb2YgdGhlc2UgYXJlIGNvbnNpZGVyZWQgaGlz
dG9yaWNhbCBzaW5jZSB0aGV5IGhhdmUgYmVlbgogLy8gY2hhbmdlZCBvciByZW1vdmVkIGZyb20g
dGhlIHNwZWNpZmljYXRpb25zLgogZW51bSB7CisgICAgLy8gVXNlZCB0byBpbmRpY2F0ZSB0byB0
aGUgYmluZGluZ3MgdGhhdCBhIEpTIGV4Y2VwdGlvbiB3YXMgdGhyb3duIGJlbG93IGFuZCBpdCBz
aG91bGQgYmUgcHJvcG9nYXRlZC4KKyAgICBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yID0gMCwgCisK
ICAgICBJTkRFWF9TSVpFX0VSUiA9IDEsCiAgICAgSElFUkFSQ0hZX1JFUVVFU1RfRVJSID0gMywK
ICAgICBXUk9OR19ET0NVTUVOVF9FUlIgPSA0LApAQCAtNzIsNiArNzUsOSBAQCBlbnVtIHsKICAg
ICBPcGVyYXRpb25FcnJvciwKICAgICBOb3RBbGxvd2VkRXJyb3IsCiAKKyAgICAvLyBOb24tc3Rh
bmRhcmQgZXJyb3JzCisgICAgU3RhY2tPdmVyZmxvd0Vycm9yLAorCiAgICAgLy8gV2ViSURMIGV4
Y2VwdGlvbiB0eXBlcywgaGFuZGxlZCBieSB0aGUgYmluZGluZyBsYXllci4KICAgICAvLyBGSVhN
RTogQWRkIEdlbmVyYWxFcnJvciwgRXZhbEVycm9yLCBldGMuIHdoZW4gaW1wbGVtZW50ZWQgaW4g
dGhlIGJpbmRpbmdzLgogICAgIFR5cGVFcnJvciA9IDEwNSwKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2RvbS9NZXNzYWdlUG9ydC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL01l
c3NhZ2VQb3J0LmNwcAkocmV2aXNpb24gMjA5MjYxKQorKysgU291cmNlL1dlYkNvcmUvZG9tL01l
c3NhZ2VQb3J0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEsOCArNTEsMTMgQEAgTWVzc2FnZVBv
cnQ6On5NZXNzYWdlUG9ydCgpCiAgICAgICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+ZGVz
dHJveWVkTWVzc2FnZVBvcnQoKnRoaXMpOwogfQogCi1FeGNlcHRpb25Pcjx2b2lkPiBNZXNzYWdl
UG9ydDo6cG9zdE1lc3NhZ2UoUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiBtZXNzYWdl
LCBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4mJiBwb3J0cykKK0V4Y2VwdGlvbk9yPHZvaWQ+
IE1lc3NhZ2VQb3J0Ojpwb3N0TWVzc2FnZShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6SlNW
YWx1ZSBtZXNzYWdlVmFsdWUsIFZlY3RvcjxKU0M6OlN0cm9uZzxKU0M6OkpTT2JqZWN0Pj4mJiB0
cmFuc2ZlcikKIHsKKyAgICBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4gcG9ydHM7CisgICAg
YXV0byBtZXNzYWdlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoc3RhdGUsIG1lc3Nh
Z2VWYWx1ZSwgV1RGTW92ZSh0cmFuc2ZlciksIHBvcnRzKTsKKyAgICBpZiAobWVzc2FnZS5oYXNF
eGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIG1lc3NhZ2UucmVsZWFzZUV4Y2VwdGlvbigpOwor
CiAgICAgaWYgKCFpc0VudGFuZ2xlZCgpKQogICAgICAgICByZXR1cm4geyB9OwogICAgIEFTU0VS
VChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwpAQCAtNjksNyArNzQsNyBAQCBFeGNlcHRpb25P
cjx2b2lkPiBNZXNzYWdlUG9ydDo6cG9zdE1lc3NhCiAgICAgICAgICAgICByZXR1cm4gZGlzZW50
YW5nbGVSZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOwogICAgICAgICBjaGFubmVscyA9IGRpc2Vu
dGFuZ2xlUmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwogICAgIH0KLSAgICBtX2VudGFuZ2xl
ZENoYW5uZWwtPnBvc3RNZXNzYWdlVG9SZW1vdGUoV1RGTW92ZShtZXNzYWdlKSwgV1RGTW92ZShj
aGFubmVscykpOworICAgIG1fZW50YW5nbGVkQ2hhbm5lbC0+cG9zdE1lc3NhZ2VUb1JlbW90ZSht
ZXNzYWdlLnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBXVEZNb3ZlKGNoYW5uZWxzKSk7CiAgICAgcmV0
dXJuIHsgfTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmgJKHJldmlzaW9uIDIw
OTI2MSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMCw2ICszMCwxMiBAQAogI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCiAjaW5jbHVkZSAi
TWVzc2FnZVBvcnRDaGFubmVsLmgiCiAKK25hbWVzcGFjZSBKU0MgeworY2xhc3MgRXhlY1N0YXRl
OworY2xhc3MgSlNPYmplY3Q7CitjbGFzcyBKU1ZhbHVlOworfQorCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIEZyYW1lOwpAQCAtMzksNyArNDUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IFJlZjxNZXNzYWdlUG9ydD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVzc2FnZVBvcnQoc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCkpOyB9CiAgICAgdmlydHVhbCB+TWVzc2FnZVBvcnQoKTsKIAotICAg
IEV4Y2VwdGlvbk9yPHZvaWQ+IHBvc3RNZXNzYWdlKFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+JiYgbWVzc2FnZSwgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+JiYpOworICAgIEV4Y2Vw
dGlvbk9yPHZvaWQ+IHBvc3RNZXNzYWdlKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlIG1l
c3NhZ2UsIFZlY3RvcjxKU0M6OlN0cm9uZzxKU0M6OkpTT2JqZWN0Pj4mJik7CiAKICAgICB2b2lk
IHN0YXJ0KCk7CiAgICAgdm9pZCBjbG9zZSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL01l
c3NhZ2VQb3J0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBv
cnQuaWRsCShyZXZpc2lvbiAyMDkyNjEpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBv
cnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMSwxMCArMzEsMTAgQEAKICAgICBHZW5lcmF0ZUlz
UmVhY2hhYmxlPUltcGwsCiAgICAgSlNDdXN0b21NYXJrRnVuY3Rpb24sCiBdIGludGVyZmFjZSBN
ZXNzYWdlUG9ydCA6IEV2ZW50VGFyZ2V0IHsKLSAgICBbQ3VzdG9tLCBNYXlUaHJvd0V4Y2VwdGlv
bl0gdm9pZCBwb3N0TWVzc2FnZShhbnkgbWVzc2FnZSwgb3B0aW9uYWwgQXJyYXkgbWVzc2FnZVBv
cnRzKTsKLQorICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZSwgTWF5VGhyb3dFeGNlcHRpb25dIHZv
aWQgcG9zdE1lc3NhZ2UoYW55IG1lc3NhZ2UsIG9wdGlvbmFsIHNlcXVlbmNlPG9iamVjdD4gdHJh
bnNmZXIgPSBbXSk7CiAgICAgdm9pZCBzdGFydCgpOwogICAgIHZvaWQgY2xvc2UoKTsKIAorICAg
IC8vIGV2ZW50IGhhbmRsZXJzCiAgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbm1lc3NhZ2U7
CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAkocmV2aXNpb24gMjA5MjYxKQor
KysgU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MTYsNiArMTE2LDcgQEAKICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0
Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KKyNpbmNsdWRlIDx3dGYv
VmFyaWFudC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiAjaWYgRU5BQkxF
KFVTRVJfTUVTU0FHRV9IQU5ETEVSUykKQEAgLTkxOSwxMiArOTIwLDEyIEBAIEV4Y2VwdGlvbk9y
PFN0b3JhZ2UqPiBET01XaW5kb3c6OmxvY2FsU3QKICAgICByZXR1cm4gbV9sb2NhbFN0b3JhZ2Uu
Z2V0KCk7CiB9CiAKLUV4Y2VwdGlvbk9yPHZvaWQ+IERPTVdpbmRvdzo6cG9zdE1lc3NhZ2UoUmVm
PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiBtZXNzYWdlLCBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQ
b3J0Pj4mJiBwb3J0cywgY29uc3QgU3RyaW5nJiB0YXJnZXRPcmlnaW4sIERPTVdpbmRvdyYgc291
cmNlKQorRXhjZXB0aW9uT3I8dm9pZD4gRE9NV2luZG93Ojpwb3N0TWVzc2FnZShKU0M6OkV4ZWNT
dGF0ZSYgc3RhdGUsIERPTVdpbmRvdyYgY2FsbGVyV2luZG93LCBKU0M6OkpTVmFsdWUgbWVzc2Fn
ZVZhbHVlLCBjb25zdCBTdHJpbmcmIHRhcmdldE9yaWdpbiwgVmVjdG9yPEpTQzo6U3Ryb25nPEpT
Qzo6SlNPYmplY3Q+PiYmIHRyYW5zZmVyKQogewogICAgIGlmICghaXNDdXJyZW50bHlEaXNwbGF5
ZWRJbkZyYW1lKCkpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBEb2N1bWVudCogc291cmNl
RG9jdW1lbnQgPSBzb3VyY2UuZG9jdW1lbnQoKTsKKyAgICBEb2N1bWVudCogc291cmNlRG9jdW1l
bnQgPSBjYWxsZXJXaW5kb3cuZG9jdW1lbnQoKTsKIAogICAgIC8vIENvbXB1dGUgdGhlIHRhcmdl
dCBvcmlnaW4uICBXZSBuZWVkIHRvIGRvIHRoaXMgc3luY2hyb25vdXNseSBpbiBvcmRlcgogICAg
IC8vIHRvIGdlbmVyYXRlIHRoZSBTWU5UQVhfRVJSIGV4Y2VwdGlvbiBjb3JyZWN0bHkuCkBAIC05
NDEsNiArOTQyLDExIEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IERPTVdpbmRvdzo6cG9zdE1lc3NhZ2UK
ICAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTWU5UQVhfRVJSIH07CiAgICAgfQogCisg
ICAgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+IHBvcnRzOworICAgIGF1dG8gbWVzc2FnZSA9
IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKHN0YXRlLCBtZXNzYWdlVmFsdWUsIFdURk1v
dmUodHJhbnNmZXIpLCBwb3J0cyk7CisgICAgaWYgKG1lc3NhZ2UuaGFzRXhjZXB0aW9uKCkpCisg
ICAgICAgIHJldHVybiBtZXNzYWdlLnJlbGVhc2VFeGNlcHRpb24oKTsKKwogICAgIGF1dG8gY2hh
bm5lbHMgPSBNZXNzYWdlUG9ydDo6ZGlzZW50YW5nbGVQb3J0cyhXVEZNb3ZlKHBvcnRzKSk7CiAg
ICAgaWYgKGNoYW5uZWxzLmhhc0V4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gY2hhbm5lbHMu
cmVsZWFzZUV4Y2VwdGlvbigpOwpAQCAtOTU3LDcgKzk2Myw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+
IERPTVdpbmRvdzo6cG9zdE1lc3NhZ2UKICAgICAgICAgc3RhY2tUcmFjZSA9IGNyZWF0ZVNjcmlw
dENhbGxTdGFjayhKU01haW5UaHJlYWRFeGVjU3RhdGU6OmN1cnJlbnRTdGF0ZSgpLCBTY3JpcHRD
YWxsU3RhY2s6Om1heENhbGxTdGFja1NpemVUb0NhcHR1cmUpOwogCiAgICAgLy8gU2NoZWR1bGUg
dGhlIG1lc3NhZ2UuCi0gICAgYXV0byogdGltZXIgPSBuZXcgUG9zdE1lc3NhZ2VUaW1lcigqdGhp
cywgV1RGTW92ZShtZXNzYWdlKSwgc291cmNlT3JpZ2luLCBzb3VyY2UsIGNoYW5uZWxzLnJlbGVh
c2VSZXR1cm5WYWx1ZSgpLCBXVEZNb3ZlKHRhcmdldCksIFdURk1vdmUoc3RhY2tUcmFjZSkpOwor
ICAgIGF1dG8qIHRpbWVyID0gbmV3IFBvc3RNZXNzYWdlVGltZXIoKnRoaXMsIG1lc3NhZ2UucmVs
ZWFzZVJldHVyblZhbHVlKCksIHNvdXJjZU9yaWdpbiwgY2FsbGVyV2luZG93LCBjaGFubmVscy5y
ZWxlYXNlUmV0dXJuVmFsdWUoKSwgV1RGTW92ZSh0YXJnZXQpLCBXVEZNb3ZlKHN0YWNrVHJhY2Up
KTsKICAgICB0aW1lci0+c3RhcnRPbmVTaG90KDApOwogCiAgICAgcmV0dXJuIHsgfTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGFnZS9ET01XaW5kb3cuaAkocmV2aXNpb24gMjA5MjYxKQorKysgU291cmNlL1dlYkNv
cmUvcGFnZS9ET01XaW5kb3cuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYsNyBAQAogI2lu
Y2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8bWVtb3J5Pgor
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNs
dWRlIDx3dGYvT3B0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgpAQCAtNDQsNiAr
NDUsMTMgQEAgbmFtZXNwYWNlIEluc3BlY3RvciB7CiBjbGFzcyBTY3JpcHRDYWxsU3RhY2s7CiB9
CiAKK25hbWVzcGFjZSBKU0MgeworY2xhc3MgRXhlY1N0YXRlOworY2xhc3MgSlNPYmplY3Q7Citj
bGFzcyBKU1ZhbHVlOwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIFN0cm9uZzsKK30KKwog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBCYXJQcm9wOwpAQCAtMjM1LDcgKzI0Myw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIHByaW50RXJyb3JNZXNzYWdlKGNvbnN0IFN0cmluZyYpOwogICAg
IFN0cmluZyBjcm9zc0RvbWFpbkFjY2Vzc0Vycm9yTWVzc2FnZShjb25zdCBET01XaW5kb3cmIGFj
dGl2ZVdpbmRvdyk7CiAKLSAgICBFeGNlcHRpb25Pcjx2b2lkPiBwb3N0TWVzc2FnZShSZWY8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiYmIG1lc3NhZ2UsIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+
PiYmLCBjb25zdCBTdHJpbmcmIHRhcmdldE9yaWdpbiwgRE9NV2luZG93JiBzb3VyY2UpOworICAg
IEV4Y2VwdGlvbk9yPHZvaWQ+IHBvc3RNZXNzYWdlKEpTQzo6RXhlY1N0YXRlJiwgRE9NV2luZG93
JiBjYWxsZXJXaW5kb3csIEpTQzo6SlNWYWx1ZSBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHRhcmdl
dE9yaWdpbiwgVmVjdG9yPEpTQzo6U3Ryb25nPEpTQzo6SlNPYmplY3Q+PiYmKTsKICAgICB2b2lk
IHBvc3RNZXNzYWdlVGltZXJGaXJlZChQb3N0TWVzc2FnZVRpbWVyJik7CiAgICAgdm9pZCBkaXNw
YXRjaE1lc3NhZ2VFdmVudFdpdGhPcmlnaW5DaGVjayhTZWN1cml0eU9yaWdpbiogaW50ZW5kZWRU
YXJnZXRPcmlnaW4sIEV2ZW50JiwgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlNjcmlwdENhbGxTdGFj
az4pOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCShyZXZpc2lvbiAyMDkyNjEp
CisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwJKHdvcmtpbmcgY29weSkKQEAg
LTE1Miw3ICsxNTIsNyBAQAogICAgIC8vIDAgd2hlbiBzdHJhaWdodCB1cDsgLTkwIHdoZW4gcm90
YXRlZCA5MCBkZWdyZWVzIGNsb2Nrd2lzZTsgOTAgY291bnRlciBjbG9ja3dpc2UuCiAgICAgW0Nv
bmRpdGlvbmFsPU9SSUVOVEFUSU9OX0VWRU5UU10gcmVhZG9ubHkgYXR0cmlidXRlIGxvbmcgb3Jp
ZW50YXRpb247CiAKLSAgICBbRG9Ob3RDaGVja1NlY3VyaXR5LCBDdXN0b20sIE1heVRocm93RXhj
ZXB0aW9uLCBGb3J3YXJkRGVjbGFyZUluSGVhZGVyXSB2b2lkIHBvc3RNZXNzYWdlKFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSBtZXNzYWdlLCBVU1ZTdHJpbmcgdGFyZ2V0T3JpZ2luLCBvcHRpb25hbCBB
cnJheSBtZXNzYWdlUG9ydHMpOworICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZSZDYWxsZXJXaW5k
b3csIERvTm90Q2hlY2tTZWN1cml0eSwgRm9yd2FyZERlY2xhcmVJbkhlYWRlciwgTWF5VGhyb3dF
eGNlcHRpb25dIHZvaWQgcG9zdE1lc3NhZ2UoYW55IG1lc3NhZ2UsIFVTVlN0cmluZyB0YXJnZXRP
cmlnaW4sIG9wdGlvbmFsIHNlcXVlbmNlPG9iamVjdD4gdHJhbnNmZXIgPSBbXSk7CiAKICAgICBb
Q29uZGl0aW9uYWw9V0VCX1RJTUlORywgUmVwbGFjZWFibGVdIHJlYWRvbmx5IGF0dHJpYnV0ZSBQ
ZXJmb3JtYW5jZSBwZXJmb3JtYW5jZTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9E
ZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAJKHJldmlzaW9uIDIwOTI2
MSkKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MywxMyArNjMsMTggQEAgRXZlbnRUYXJnZXRJbnRlcmZh
Y2UgRGVkaWNhdGVkV29ya2VyR2xvYgogICAgIHJldHVybiBEZWRpY2F0ZWRXb3JrZXJHbG9iYWxT
Y29wZUV2ZW50VGFyZ2V0SW50ZXJmYWNlVHlwZTsKIH0KIAotRXhjZXB0aW9uT3I8dm9pZD4gRGVk
aWNhdGVkV29ya2VyR2xvYmFsU2NvcGU6OnBvc3RNZXNzYWdlKFJlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+JiYgbWVzc2FnZSwgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+JiYgcG9ydHMp
CitFeGNlcHRpb25Pcjx2b2lkPiBEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZTo6cG9zdE1lc3Nh
Z2UoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUgbWVzc2FnZVZhbHVlLCBWZWN0
b3I8SlNDOjpTdHJvbmc8SlNDOjpKU09iamVjdD4+JiYgdHJhbnNmZXIpCiB7CisgICAgVmVjdG9y
PFJlZlB0cjxNZXNzYWdlUG9ydD4+IHBvcnRzOworICAgIGF1dG8gbWVzc2FnZSA9IFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKHN0YXRlLCBtZXNzYWdlVmFsdWUsIFdURk1vdmUodHJhbnNm
ZXIpLCBwb3J0cyk7CisgICAgaWYgKG1lc3NhZ2UuaGFzRXhjZXB0aW9uKCkpCisgICAgICAgIHJl
dHVybiBtZXNzYWdlLnJlbGVhc2VFeGNlcHRpb24oKTsKKwogICAgIC8vIERpc2VudGFuZ2xlIHRo
ZSBwb3J0IGluIHByZXBhcmF0aW9uIGZvciBzZW5kaW5nIGl0IHRvIHRoZSByZW1vdGUgY29udGV4
dC4KICAgICBhdXRvIGNoYW5uZWxzID0gTWVzc2FnZVBvcnQ6OmRpc2VudGFuZ2xlUG9ydHMoV1RG
TW92ZShwb3J0cykpOwogICAgIGlmIChjaGFubmVscy5oYXNFeGNlcHRpb24oKSkKICAgICAgICAg
cmV0dXJuIGNoYW5uZWxzLnJlbGVhc2VFeGNlcHRpb24oKTsKLSAgICB0aHJlYWQoKS53b3JrZXJP
YmplY3RQcm94eSgpLnBvc3RNZXNzYWdlVG9Xb3JrZXJPYmplY3QoV1RGTW92ZShtZXNzYWdlKSwg
Y2hhbm5lbHMucmVsZWFzZVJldHVyblZhbHVlKCkpOworICAgIHRocmVhZCgpLndvcmtlck9iamVj
dFByb3h5KCkucG9zdE1lc3NhZ2VUb1dvcmtlck9iamVjdChtZXNzYWdlLnJlbGVhc2VSZXR1cm5W
YWx1ZSgpLCBjaGFubmVscy5yZWxlYXNlUmV0dXJuVmFsdWUoKSk7CiAgICAgcmV0dXJuIHsgfTsK
IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxT
Y29wZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29y
a2VyR2xvYmFsU2NvcGUuaAkocmV2aXNpb24gMjA5MjYxKQorKysgU291cmNlL1dlYkNvcmUvd29y
a2Vycy9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2
ICszMywxMiBAQAogCiAjaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIKIAorbmFtZXNwYWNl
IEpTQyB7CitjbGFzcyBFeGVjU3RhdGU7CitjbGFzcyBKU09iamVjdDsKK2NsYXNzIEpTVmFsdWU7
Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ29udGVudFNlY3VyaXR5UG9saWN5
UmVzcG9uc2VIZWFkZXJzOwpAQCAtNDUsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJl
ZjxEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZT4gY3JlYXRlKGNvbnN0IFVSTCYsIGNvbnN0IFN0
cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIERlZGljYXRlZFdvcmtl
clRocmVhZCYsIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyYsIGJv
b2wgc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5LCBSZWZQdHI8U2Vj
dXJpdHlPcmlnaW4+JiYgdG9wT3JpZ2luLCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSos
IFNvY2tldFByb3ZpZGVyKik7CiAgICAgdmlydHVhbCB+RGVkaWNhdGVkV29ya2VyR2xvYmFsU2Nv
cGUoKTsKIAotICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHBvc3RNZXNzYWdlKFJlZlB0cjxTZXJpYWxp
emVkU2NyaXB0VmFsdWU+JiYsIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYmKTsKKyAgICBF
eGNlcHRpb25Pcjx2b2lkPiBwb3N0TWVzc2FnZShKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1
ZSBtZXNzYWdlLCBWZWN0b3I8SlNDOjpTdHJvbmc8SlNDOjpKU09iamVjdD4+JiYpOwogCiAgICAg
RGVkaWNhdGVkV29ya2VyVGhyZWFkJiB0aHJlYWQoKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUv
d29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5pZGwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5pZGwJKHJldmlz
aW9uIDIwOTI2MSkKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyR2xv
YmFsU2NvcGUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBACiAgICAgR2xvYmFs
PShXb3JrZXIsRGVkaWNhdGVkV29ya2VyKSwKICAgICBKU0dlbmVyYXRlVG9OYXRpdmVPYmplY3Qs
CiBdIGludGVyZmFjZSBEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZSA6IFdvcmtlckdsb2JhbFNj
b3BlIHsKLSAgICBbQ3VzdG9tLCBNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBwb3N0TWVzc2FnZShh
bnkgbWVzc2FnZSwgb3B0aW9uYWwgQXJyYXkgbWVzc2FnZVBvcnRzKTsKKyAgICBbQ2FsbFdpdGg9
U2NyaXB0U3RhdGUsIE1heVRocm93RXhjZXB0aW9uXSB2b2lkIHBvc3RNZXNzYWdlKGFueSBtZXNz
YWdlLCBvcHRpb25hbCBzZXF1ZW5jZTxvYmplY3Q+IHRyYW5zZmVyID0gW10pOwogCiAgICAgYXR0
cmlidXRlIEV2ZW50SGFuZGxlciBvbm1lc3NhZ2U7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyLmNwcAkocmV2aXNpb24gMjA5MjYxKQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsMTMgKzEwMSwxOCBAQCBXb3JrZXI6On5X
b3JrZXIoKQogICAgIG1fY29udGV4dFByb3h5LT53b3JrZXJPYmplY3REZXN0cm95ZWQoKTsKIH0K
IAotRXhjZXB0aW9uT3I8dm9pZD4gV29ya2VyOjpwb3N0TWVzc2FnZShSZWZQdHI8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPiYmIG1lc3NhZ2UsIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYmIHBv
cnRzKQorRXhjZXB0aW9uT3I8dm9pZD4gV29ya2VyOjpwb3N0TWVzc2FnZShKU0M6OkV4ZWNTdGF0
ZSYgc3RhdGUsIEpTQzo6SlNWYWx1ZSBtZXNzYWdlVmFsdWUsIFZlY3RvcjxKU0M6OlN0cm9uZzxK
U0M6OkpTT2JqZWN0Pj4mJiB0cmFuc2ZlcikKIHsKKyAgICBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQ
b3J0Pj4gcG9ydHM7CisgICAgYXV0byBtZXNzYWdlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpj
cmVhdGUoc3RhdGUsIG1lc3NhZ2VWYWx1ZSwgV1RGTW92ZSh0cmFuc2ZlciksIHBvcnRzKTsKKyAg
ICBpZiAobWVzc2FnZS5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIG1lc3NhZ2UucmVs
ZWFzZUV4Y2VwdGlvbigpOworCiAgICAgLy8gRGlzZW50YW5nbGUgdGhlIHBvcnQgaW4gcHJlcGFy
YXRpb24gZm9yIHNlbmRpbmcgaXQgdG8gdGhlIHJlbW90ZSBjb250ZXh0LgogICAgIGF1dG8gY2hh
bm5lbHMgPSBNZXNzYWdlUG9ydDo6ZGlzZW50YW5nbGVQb3J0cyhXVEZNb3ZlKHBvcnRzKSk7CiAg
ICAgaWYgKGNoYW5uZWxzLmhhc0V4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gY2hhbm5lbHMu
cmVsZWFzZUV4Y2VwdGlvbigpOwotICAgIG1fY29udGV4dFByb3h5LT5wb3N0TWVzc2FnZVRvV29y
a2VyR2xvYmFsU2NvcGUoV1RGTW92ZShtZXNzYWdlKSwgY2hhbm5lbHMucmVsZWFzZVJldHVyblZh
bHVlKCkpOworICAgIG1fY29udGV4dFByb3h5LT5wb3N0TWVzc2FnZVRvV29ya2VyR2xvYmFsU2Nv
cGUobWVzc2FnZS5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgY2hhbm5lbHMucmVsZWFzZVJldHVyblZh
bHVlKCkpOwogICAgIHJldHVybiB7IH07CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIu
aAkocmV2aXNpb24gMjA5MjYxKQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuaAko
d29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsMTIgQEAKICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmdIYXNoLmg+CiAKK25hbWVzcGFjZSBK
U0MgeworY2xhc3MgRXhlY1N0YXRlOworY2xhc3MgSlNPYmplY3Q7CitjbGFzcyBKU1ZhbHVlOwor
fQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7
CkBAIC00Niw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPFdv
cmtlcj4+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgU3RyaW5nJiB1cmws
IEpTQzo6UnVudGltZUZsYWdzKTsKICAgICB2aXJ0dWFsIH5Xb3JrZXIoKTsKIAotICAgIEV4Y2Vw
dGlvbk9yPHZvaWQ+IHBvc3RNZXNzYWdlKFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYg
bWVzc2FnZSwgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+JiYpOworICAgIEV4Y2VwdGlvbk9y
PHZvaWQ+IHBvc3RNZXNzYWdlKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlIG1lc3NhZ2Us
IFZlY3RvcjxKU0M6OlN0cm9uZzxKU0M6OkpTT2JqZWN0Pj4mJik7CiAKICAgICB2b2lkIHRlcm1p
bmF0ZSgpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5pZGwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuaWRsCShyZXZpc2lvbiAyMDky
NjEpCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5pZGwJKHdvcmtpbmcgY29weSkK
QEAgLTI4LDExICsyOCwxMCBAQAogICAgIEFjdGl2ZURPTU9iamVjdCwKICAgICBDdXN0b21Db25z
dHJ1Y3RvcihVU1ZTdHJpbmcgc2NyaXB0VXJsKSwKIF0gaW50ZXJmYWNlIFdvcmtlciA6IEV2ZW50
VGFyZ2V0IHsKLSAgICBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9ubWVzc2FnZTsKLQotICAgIFtD
dXN0b20sIE1heVRocm93RXhjZXB0aW9uXSB2b2lkIHBvc3RNZXNzYWdlKFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZSBtZXNzYWdlLCBvcHRpb25hbCBBcnJheSBtZXNzYWdlUG9ydHMpOwotCiAgICAgdm9p
ZCB0ZXJtaW5hdGUoKTsKKworICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZSwgTWF5VGhyb3dFeGNl
cHRpb25dIHZvaWQgcG9zdE1lc3NhZ2UoYW55IG1lc3NhZ2UsIG9wdGlvbmFsIHNlcXVlbmNlPG9i
amVjdD4gdHJhbnNmZXIgPSBbXSk7CisgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbm1lc3Nh
Z2U7CiB9OwogCiBXb3JrZXIgaW1wbGVtZW50cyBBYnN0cmFjdFdvcmtlcjsKSW5kZXg6IExheW91
dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIwOTI2MSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDI0IEBACisyMDE2LTEyLTAyICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+
CisKKyAgICAgICAgb3B0aW9uYWwgc2VxdWVuY2UgdmFsdWVzIG5vdCBoYW5kbGVkIGNvcnJlY3Rs
eSBieSBiaW5kaW5nIGdlbmVyYXRvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTQyNTYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9yZXNvdXJjZXMvdHlwZWQtYXJyYXkt
d29ya2VyLmpzOgorICAgICAgICAqIGZhc3QvZG9tL1dpbmRvdy93aW5kb3ctcG9zdG1lc3NhZ2Ut
YXJncy1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9kb20vV2luZG93L3dpbmRvdy1wb3N0
bWVzc2FnZS1hcmdzLmh0bWw6CisgICAgICAgICogZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0LWRl
bGV0ZWQtZG9jdW1lbnQuaHRtbDoKKyAgICAgICAgKiBmYXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQt
ZGVsZXRlZC1mcmFtZS5odG1sOgorICAgICAgICAqIGZhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1p
bmFjdGl2ZS1kb2N1bWVudC5odG1sOgorICAgICAgICAqIGZhc3QvZXZlbnRzL21lc3NhZ2UtcG9y
dC1tdWx0aS1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0
Lmh0bWw6CisgICAgICAgICogZmFzdC93b3JrZXJzL3dvcmtlci1jb250ZXh0LW11bHRpLXBvcnQt
ZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3Qvd29ya2Vycy93b3JrZXItbXVsdGktcG9ydC1l
eHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViZ2wvMS4wLjIvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UvdHlwZWRhcnJheXMvcmVzb3VyY2VzL3R5cGVkLWFycmF5LXdvcmtl
ci5qczoKKyAgICAgICAgKiB3ZWJnbC8xLjAuMy9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9j
b25mb3JtYW5jZS90eXBlZGFycmF5cy9yZXNvdXJjZXMvdHlwZWQtYXJyYXktd29ya2VyLmpzOgor
ICAgICAgICBVcGRhdGUgZm9yIG5ldyBleGNlcHRpb25zIGFuZCBzdHJpY3RlciBlbmZvcmNlbWVu
dCBvZiB0aGUgcG9zdE1lc3NhZ2Ugc2lnbmF0dXJlLiAKKwogMjAxNi0xMi0wMiAgSm9obiBXaWxh
bmRlciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXF1aXJlIHByZWZsaWdodCBm
b3Igbm9uLXN0YW5kYXJkIENPUlMtc2FmZWxpc3RlZCByZXF1ZXN0IGhlYWRlcnMgQWNjZXB0LCBB
Y2NlcHQtTGFuZ3VhZ2UsIGFuZCBDb250ZW50LUxhbmd1YWdlCkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2NhbnZhcy93ZWJnbC9yZXNvdXJjZXMvdHlwZWQtYXJyYXktd29ya2VyLmpzCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3Jlc291cmNlcy90eXBlZC1hcnJh
eS13b3JrZXIuanMJKHJldmlzaW9uIDIwOTI2MSkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFz
L3dlYmdsL3Jlc291cmNlcy90eXBlZC1hcnJheS13b3JrZXIuanMJKHdvcmtpbmcgY29weSkKQEAg
LTc0LDcgKzc0LDcgQEAgb25tZXNzYWdlID0gZnVuY3Rpb24oZXZlbnQpIHsKICAgICB9IGVsc2Ug
ewogICAgICAgdmFsdWVUb1NlbmQgPSB2aWV3LmJ1ZmZlcjsKICAgICB9Ci0gICAgdmFyIHRyYW5z
ZmVyYWJsZXNUb1NlbmQgPSBudWxsOworICAgIHZhciB0cmFuc2ZlcmFibGVzVG9TZW5kID0gW107
CiAgICAgaWYgKG1lc3NhZ2UuY29tbWFuZCA9PSAndHJhbnNmZXInIHx8CiAgICAgICAgIG1lc3Nh
Z2UuY29tbWFuZCA9PSAndHJhbnNmZXJCdWZmZXInKSB7CiAgICAgICB0cmFuc2ZlcmFibGVzVG9T
ZW5kID0gWyB2aWV3LmJ1ZmZlciBdOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93
L3dpbmRvdy1wb3N0bWVzc2FnZS1hcmdzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXBvc3RtZXNzYWdlLWFyZ3MtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAyMDkyNjEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2lu
ZG93LXBvc3RtZXNzYWdlLWFyZ3MtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yLDEz
ICsyLDEzIEBAIFRlc3QgdGhhdCB0aGUgc2Vjb25kIGFyZ3VtZW50IG9mIHdpbmRvdy4KIAogUEFT
UzogUG9zdGluZyBtZXNzYWdlICgnMScsIDEpOiB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBW
YWx1ZSBpcyBub3QgYSBzZXF1ZW5jZQogUEFTUzogUG9zdGluZyBtZXNzYWdlICgnMicsIGMpOiB0
aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBWYWx1ZSBpcyBub3QgYSBzZXF1ZW5jZQotUEFTUzog
UG9zdGluZyBtZXNzYWdlICgnMycsIFtvYmplY3QgT2JqZWN0XSk6IHRocmV3IGV4Y2VwdGlvbiBU
eXBlRXJyb3I6IFZhbHVlIGlzIG5vdCBhIHNlcXVlbmNlCi1QQVNTOiBQb3N0aW5nIG1lc3NhZ2Ug
KCc0JywgW29iamVjdCBXaW5kb3ddKSBkaWQgbm90IHRocm93IGFuIGV4Y2VwdGlvbgotUEFTUzog
UG9zdGluZyBtZXNzYWdlICgnNGEnLCAqKSBkaWQgbm90IHRocm93IGFuIGV4Y2VwdGlvbgorUEFT
UzogUG9zdGluZyBtZXNzYWdlICgnMycsIFtvYmplY3QgT2JqZWN0XSk6IHRocmV3IGV4Y2VwdGlv
biBUeXBlRXJyb3I6IFR5cGUgZXJyb3IKK1BBU1M6IFBvc3RpbmcgbWVzc2FnZSAoJzQnLCBbb2Jq
ZWN0IFdpbmRvd10pOiB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yCitQQVNT
OiBQb3N0aW5nIG1lc3NhZ2UgKCc0YScsICopOiB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBW
YWx1ZSBpcyBub3QgYSBzZXF1ZW5jZQogUEFTUzogUG9zdGluZyBtZXNzYWdlICgnNScsIG51bGwp
IGRpZCBub3QgdGhyb3cgYW4gZXhjZXB0aW9uCiBQQVNTOiBQb3N0aW5nIG1lc3NhZ2UgKCc2Jywg
dW5kZWZpbmVkKSBkaWQgbm90IHRocm93IGFuIGV4Y2VwdGlvbgogUEFTUzogUG9zdGluZyBtZXNz
YWdlICgnNycsIFtvYmplY3QgTWVzc2FnZVBvcnRdLFtvYmplY3QgTWVzc2FnZVBvcnRdKSBkaWQg
bm90IHRocm93IGFuIGV4Y2VwdGlvbgotUEFTUzogUG9zdGluZyBtZXNzYWdlICgnN2EnLCAqKSBk
aWQgbm90IHRocm93IGFuIGV4Y2VwdGlvbgorUEFTUzogUG9zdGluZyBtZXNzYWdlICgnN2EnLCAq
KTogdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVmFsdWUgaXMgbm90IGEgc2VxdWVuY2UKIFBB
U1M6IFBvc3RpbmcgbWVzc2FnZSAoJzcnLCBbb2JqZWN0IE1lc3NhZ2VQb3J0XSxbb2JqZWN0IE1l
c3NhZ2VQb3J0XSkgZGlkIG5vdCB0aHJvdyBhbiBleGNlcHRpb24KIFBBU1M6IFBvc3RpbmcgbWVz
c2FnZSAoJzIxNDc0ODM2NDgnLCBudWxsKSBkaWQgbm90IHRocm93IGFuIGV4Y2VwdGlvbgogUEFT
UzogUG9zdGluZyBtZXNzYWdlICgnW29iamVjdCBNZXNzYWdlUG9ydF0nLCBbb2JqZWN0IE1lc3Nh
Z2VQb3J0XSxbb2JqZWN0IE1lc3NhZ2VQb3J0XSkgZGlkIG5vdCB0aHJvdyBhbiBleGNlcHRpb24K
QEAgLTE4LDEyICsxOCw5IEBAIFBBU1M6IFBvc3RpbmcgbWVzc2FnZSAoJ1tvYmplY3QgQXJyYXlC
dWYKIFBBU1M6IGFycmF5QnVmZmVyIG5ldXRlcmVkCiBQQVNTOiB2aWV3IG5ldXRlcmVkCiBQQVNT
OiBQb3N0aW5nIG1lc3NhZ2UgKCdkb25lJywgdW5kZWZpbmVkKSBkaWQgbm90IHRocm93IGFuIGV4
Y2VwdGlvbgotUmVjZWl2ZWQgbWVzc2FnZSAnNCcgd2l0aCAwIHBvcnRzLgotUmVjZWl2ZWQgbWVz
c2FnZSAnNGEnIHdpdGggMCBwb3J0cy4KIFJlY2VpdmVkIG1lc3NhZ2UgJzUnIHdpdGggMCBwb3J0
cy4KIFJlY2VpdmVkIG1lc3NhZ2UgJzYnIHdpdGggMCBwb3J0cy4KIFJlY2VpdmVkIG1lc3NhZ2Ug
JzcnIHdpdGggMiBwb3J0cy4KLVJlY2VpdmVkIG1lc3NhZ2UgJzdhJyB3aXRoIDIgcG9ydHMuCiBS
ZWNlaXZlZCBtZXNzYWdlICc3JyB3aXRoIDIgcG9ydHMuCiBSZWNlaXZlZCBtZXNzYWdlICcyMTQ3
NDgzNjQ4JyB3aXRoIDAgcG9ydHMuCiBSZWNlaXZlZCBtZXNzYWdlICdbb2JqZWN0IE1lc3NhZ2VQ
b3J0XScgd2l0aCAyIHBvcnRzLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dp
bmRvdy1wb3N0bWVzc2FnZS1hcmdzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9kb20vV2luZG93L3dpbmRvdy1wb3N0bWVzc2FnZS1hcmdzLmh0bWwJKHJldmlzaW9uIDIwOTI2
MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcG9zdG1lc3NhZ2UtYXJn
cy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC00NCwxNCArNDQsMTQgQEAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoImRlc2NyaXB0aW9uIikuaQogdHJ5UG9zdE1lc3NhZ2UoJzEnLCAnKicsIDEsIHRy
dWUpOwogdHJ5UG9zdE1lc3NhZ2UoJzInLCAnKicsICdjJywgdHJ1ZSk7CiB0cnlQb3N0TWVzc2Fn
ZSgnMycsICcqJywgeyB4OiAxIH0sIHRydWUpOwotdHJ5UG9zdE1lc3NhZ2UoJzQnLCAnKicsIHdp
bmRvdyk7ICAvLyBQYXNzZXMgYmVjYXVzZSB3aW5kb3cgaGFzIGEgImxlbmd0aCIgYXR0cmlidXRl
IG9mIHZhbHVlICcwJywgc28gaXQgbG9va3MgbGlrZSBhbiBhcnJheQotdHJ5UG9zdE1lc3NhZ2Uo
JzRhJywgd2luZG93LCAnKicpOyAvLyBMZWdhY3kgYXJndW1lbnQgb3JkZXIuCit0cnlQb3N0TWVz
c2FnZSgnNCcsICcqJywgd2luZG93LCB0cnVlKTsKK3RyeVBvc3RNZXNzYWdlKCc0YScsIHdpbmRv
dywgJyonLCB0cnVlKTsgLy8gTGVnYWN5IGFyZ3VtZW50IG9yZGVyLgogdHJ5UG9zdE1lc3NhZ2Uo
JzUnLCAnKicsIG51bGwpOwogdHJ5UG9zdE1lc3NhZ2UoJzYnLCAnKicsIHZvaWQgMCk7CiB2YXIg
Y2hhbm5lbDEgPSBuZXcgTWVzc2FnZUNoYW5uZWw7CiB0cnlQb3N0TWVzc2FnZUZ1bmN0aW9uKHdp
bmRvdy5wb3N0TWVzc2FnZSwgJzcnLCAnKicsIFtjaGFubmVsMS5wb3J0MSwgY2hhbm5lbDEucG9y
dDJdKTsKIHZhciBjaGFubmVsMWEgPSBuZXcgTWVzc2FnZUNoYW5uZWw7Ci10cnlQb3N0TWVzc2Fn
ZUZ1bmN0aW9uKHdpbmRvdy5wb3N0TWVzc2FnZSwgJzdhJywgW2NoYW5uZWwxYS5wb3J0MSwgY2hh
bm5lbDFhLnBvcnQyXSwgJyonKTsKK3RyeVBvc3RNZXNzYWdlRnVuY3Rpb24od2luZG93LnBvc3RN
ZXNzYWdlLCAnN2EnLCBbY2hhbm5lbDFhLnBvcnQxLCBjaGFubmVsMWEucG9ydDJdLCAnKicsIHRy
dWUpOwogdmFyIGNoYW5uZWwyID0gbmV3IE1lc3NhZ2VDaGFubmVsOwogdHJ5UG9zdE1lc3NhZ2VG
dW5jdGlvbih3aW5kb3cucG9zdE1lc3NhZ2UsICc3JywgJyonLCBbY2hhbm5lbDIucG9ydDEsIGNo
YW5uZWwyLnBvcnQyXSk7CiB2YXIgY2hhbm5lbDMgPSBuZXcgTWVzc2FnZUNoYW5uZWw7CkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQtZGVsZXRlZC1kb2N1bWVudC5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1k
ZWxldGVkLWRvY3VtZW50Lmh0bWwJKHJldmlzaW9uIDIwOTI2MSkKKysrIExheW91dFRlc3RzL2Zh
c3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1kZWxldGVkLWRvY3VtZW50Lmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTI3LDcgKzI3LDcgQEAgdmFyIG1haW5Qb3J0OwogZnVuY3Rpb24gdGVzdCgpCiB7CiAg
ICAgdmFyIGNoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWw7Ci0gICAgd2luZG93LmZyYW1lc1sw
XS5wb3N0TWVzc2FnZSgibXNnIiwgW2NoYW5uZWwucG9ydDJdLCAiKiIpOworICAgIHdpbmRvdy5m
cmFtZXNbMF0ucG9zdE1lc3NhZ2UoIm1zZyIsICIqIiwgW2NoYW5uZWwucG9ydDJdKTsKICAgICBt
YWluUG9ydCA9IGNoYW5uZWwucG9ydDE7CiAgICAgbWFpblBvcnQuc3RhcnQoKTsKIApJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0LWRlbGV0ZWQtZnJhbWUuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQtZGVsZXRl
ZC1mcmFtZS5odG1sCShyZXZpc2lvbiAyMDkyNjEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50
cy9tZXNzYWdlLXBvcnQtZGVsZXRlZC1mcmFtZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3
ICsyOSw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogewogICAgIGZyYW1lRG9jID0gd2luZG93LmZyYW1l
c1swXS5kb2N1bWVudDsKICAgICB2YXIgY2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbDsKLSAg
ICB3aW5kb3cuZnJhbWVzWzBdLnBvc3RNZXNzYWdlKCJtc2ciLCBbY2hhbm5lbC5wb3J0Ml0sICIq
Iik7CisgICAgd2luZG93LmZyYW1lc1swXS5wb3N0TWVzc2FnZSgibXNnIiwgIioiLCBbY2hhbm5l
bC5wb3J0Ml0pOwogICAgIG1haW5Qb3J0ID0gY2hhbm5lbC5wb3J0MTsKICAgICBtYWluUG9ydC5z
dGFydCgpOwogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQtaW5h
Y3RpdmUtZG9jdW1lbnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50
cy9tZXNzYWdlLXBvcnQtaW5hY3RpdmUtZG9jdW1lbnQuaHRtbAkocmV2aXNpb24gMjA5MjYxKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0LWluYWN0aXZlLWRvY3VtZW50
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiB7
CiAgICAgb3RoZXJEb2N1bWVudCA9IHdpbmRvdy5mcmFtZXNbMF0uZG9jdW1lbnQ7CiAgICAgdmFy
IGNoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWw7Ci0gICAgd2luZG93LmZyYW1lc1swXS5wb3N0
TWVzc2FnZSgibXNnIiwgW2NoYW5uZWwucG9ydDJdLCAiKiIpOworICAgIHdpbmRvdy5mcmFtZXNb
MF0ucG9zdE1lc3NhZ2UoIm1zZyIsICIqIiwgW2NoYW5uZWwucG9ydDJdKTsKICAgICBtYWluUG9y
dCA9IGNoYW5uZWwucG9ydDE7CiAgICAgbWFpblBvcnQuc3RhcnQoKTsKIApJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0LW11bHRpLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQtbXVsdGktZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAyMDkyNjEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNz
YWdlLXBvcnQtbXVsdGktZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC01LDEyICs1LDEy
IEBAIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEEKIAogUEFTUyBjaGFu
bmVsLnBvcnQxLnBvc3RNZXNzYWdlKCJzYW1lIHBvcnQiLCBbY2hhbm5lbC5wb3J0MV0pIHRocmV3
IGV4Y2VwdGlvbiBEYXRhQ2xvbmVFcnJvciAoRE9NIEV4Y2VwdGlvbiAyNSk6IFRoZSBvYmplY3Qg
Y2FuIG5vdCBiZSBjbG9uZWQuLgogUEFTUyBjaGFubmVsLnBvcnQxLnBvc3RNZXNzYWdlKCJlbnRh
bmdsZWQgcG9ydCIsIFtjaGFubmVsLnBvcnQyXSkgdGhyZXcgZXhjZXB0aW9uIERhdGFDbG9uZUVy
cm9yIChET00gRXhjZXB0aW9uIDI1KTogVGhlIG9iamVjdCBjYW4gbm90IGJlIGNsb25lZC4uCi1Q
QVNTIGNoYW5uZWwucG9ydDEucG9zdE1lc3NhZ2UoIm51bGwgcG9ydCIsIFtjaGFubmVsMy5wb3J0
MSwgbnVsbCwgY2hhbm5lbDMucG9ydDJdKSB0aHJldyBleGNlcHRpb24gSW52YWxpZFN0YXRlRXJy
b3IgKERPTSBFeGNlcHRpb24gMTEpOiBUaGUgb2JqZWN0IGlzIGluIGFuIGludmFsaWQgc3RhdGUu
LgotUEFTUyBjaGFubmVsLnBvcnQxLnBvc3RNZXNzYWdlKCJub3RBUG9ydCIsIFtjaGFubmVsMy5w
b3J0MSwge30sIGNoYW5uZWwzLnBvcnQyXSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlw
ZSBlcnJvci4KLVBBU1MgY2hhbm5lbC5wb3J0MS5wb3N0TWVzc2FnZSgiZHVwbGljYXRlIHBvcnQi
LCBbY2hhbm5lbDMucG9ydDEsIGNoYW5uZWwzLnBvcnQxXSkgdGhyZXcgZXhjZXB0aW9uIEludmFs
aWRTdGF0ZUVycm9yIChET00gRXhjZXB0aW9uIDExKTogVGhlIG9iamVjdCBpcyBpbiBhbiBpbnZh
bGlkIHN0YXRlLi4KLVBBU1MgY2hhbm5lbC5wb3J0MS5wb3N0TWVzc2FnZSgibm90QW5BcnJheSIs
IGNoYW5uZWwzLnBvcnQxKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBWYWx1ZSBpcyBub3Qg
YSBzZXF1ZW5jZS4KLVBBU1MgY2hhbm5lbC5wb3J0MS5wb3N0TWVzc2FnZSgibm90QVNlcXVlbmNl
IiwgW3tsZW5ndGg6IDN9XSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4K
LVBBU1MgY2hhbm5lbC5wb3J0MS5wb3N0TWVzc2FnZSgibGFyZ2VTZXF1ZW5jZSIsIGxhcmdlUG9y
dEFycmF5KSB0aHJldyBleGNlcHRpb24gSW52YWxpZFN0YXRlRXJyb3IgKERPTSBFeGNlcHRpb24g
MTEpOiBUaGUgb2JqZWN0IGlzIGluIGFuIGludmFsaWQgc3RhdGUuLgorUEFTUyBjaGFubmVsLnBv
cnQxLnBvc3RNZXNzYWdlKCJudWxsIHBvcnQiLCBbY2hhbm5lbDMucG9ydDEsIG51bGwsIGNoYW5u
ZWwzLnBvcnQyXSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KK1BBU1Mg
Y2hhbm5lbC5wb3J0MS5wb3N0TWVzc2FnZSgibm90QVBvcnQiLCBbY2hhbm5lbDMucG9ydDEsIHt9
LCBjaGFubmVsMy5wb3J0Ml0pIHRocmV3IGV4Y2VwdGlvbiBEYXRhQ2xvbmVFcnJvciAoRE9NIEV4
Y2VwdGlvbiAyNSk6IFRoZSBvYmplY3QgY2FuIG5vdCBiZSBjbG9uZWQuLgorUEFTUyBjaGFubmVs
LnBvcnQxLnBvc3RNZXNzYWdlKCJkdXBsaWNhdGUgcG9ydCIsIFtjaGFubmVsMy5wb3J0MSwgY2hh
bm5lbDMucG9ydDFdKSB0aHJldyBleGNlcHRpb24gRGF0YUNsb25lRXJyb3IgKERPTSBFeGNlcHRp
b24gMjUpOiBUaGUgb2JqZWN0IGNhbiBub3QgYmUgY2xvbmVkLi4KK1BBU1MgY2hhbm5lbC5wb3J0
MS5wb3N0TWVzc2FnZSgibm90QW5BcnJheSIsIGNoYW5uZWwzLnBvcnQxKSB0aHJldyBleGNlcHRp
b24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgorUEFTUyBjaGFubmVsLnBvcnQxLnBvc3RNZXNzYWdl
KCJub3RBU2VxdWVuY2UiLCBbe2xlbmd0aDogM31dKSB0aHJldyBleGNlcHRpb24gRGF0YUNsb25l
RXJyb3IgKERPTSBFeGNlcHRpb24gMjUpOiBUaGUgb2JqZWN0IGNhbiBub3QgYmUgY2xvbmVkLi4K
K1BBU1MgY2hhbm5lbC5wb3J0MS5wb3N0TWVzc2FnZSgibGFyZ2VTZXF1ZW5jZSIsIGxhcmdlUG9y
dEFycmF5KSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgogUEFTUyBldmVu
dC5wb3J0cyBpcyBub24tbnVsbCBhbmQgemVybyBsZW5ndGggd2hlbiBubyBwb3J0IHNlbnQKIFBB
U1MgZXZlbnQucG9ydHMgaXMgbm9uLW51bGwgYW5kIHplcm8gbGVuZ3RoIHdoZW4gZW1wdHkgYXJy
YXkgc2VudAogUEFTUyBldmVudC5wb3J0cyBjb250YWlucyB0d28gcG9ydHMgd2hlbiB0d28gcG9y
dHMgc2VudApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0Lmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0Lmh0bWwJ
KHJldmlzaW9uIDIwOTI2MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtcG9y
dC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBAIGZ1bmN0aW9uIHRlc3QocG9z
dE1lc3NhZ2VGdW4pCiB7CiAgICAgdmFyIGNoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWw7CiAK
LSAgICB3aW5kb3cuZnJhbWVzWzBdW3Bvc3RNZXNzYWdlRnVuXSgibXNnIiwgW2NoYW5uZWwucG9y
dDJdLCAiKiIpOworICAgIHdpbmRvdy5mcmFtZXNbMF1bcG9zdE1lc3NhZ2VGdW5dKCJtc2ciLCAi
KiIsIFtjaGFubmVsLnBvcnQyXSk7CiAgICAgbWFpblBvcnQgPSBjaGFubmVsLnBvcnQxOwogICAg
IG1haW5Qb3J0W3Bvc3RNZXNzYWdlRnVuXSgicGluZyIpOwogICAgIG1haW5Qb3J0Lm9ubWVzc2Fn
ZSA9IGZ1bmN0aW9uKGV2dCkgewpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3dvcmtl
ci1jb250ZXh0LW11bHRpLXBvcnQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3Qvd29ya2Vycy93b3JrZXItY29udGV4dC1tdWx0aS1wb3J0LWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMjA5MjYxKQorKysgTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3dvcmtlci1jb250
ZXh0LW11bHRpLXBvcnQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC02LDExICs2LDEx
IEBAIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEEKIFBBU1MgZXZlbnQu
cG9ydHMgaXMgbm9uLW51bGwgYW5kIHplcm8gbGVuZ3RoIHdoZW4gbm8gcG9ydCBzZW50CiBQQVNT
IGV2ZW50LnBvcnRzIGlzIG5vbi1udWxsIGFuZCB6ZXJvIGxlbmd0aCB3aGVuIGVtcHR5IGFycmF5
IHNlbnQKIFBBU1MgZXZlbnQucG9ydHMgY29udGFpbnMgdHdvIHBvcnRzIHdoZW4gdHdvIHBvcnRz
IHNlbnQKLVBBU1MgcG9zdGluZyBhIG51bGwgcG9ydCBkaWQgdGhyb3c6IEludmFsaWRTdGF0ZUVy
cm9yIChET00gRXhjZXB0aW9uIDExKTogVGhlIG9iamVjdCBpcyBpbiBhbiBpbnZhbGlkIHN0YXRl
LgotUEFTUyBwb3N0aW5nIGEgbm9uLXBvcnQgZGlkIHRocm93OiBUeXBlRXJyb3I6IFR5cGUgZXJy
b3IKK1BBU1MgcG9zdGluZyBhIG51bGwgcG9ydCBkaWQgdGhyb3c6IFR5cGVFcnJvcjogVHlwZSBl
cnJvcgorUEFTUyBwb3N0aW5nIGEgbm9uLXBvcnQgZGlkIHRocm93OiBEYXRhQ2xvbmVFcnJvciAo
RE9NIEV4Y2VwdGlvbiAyNSk6IFRoZSBvYmplY3QgY2FuIG5vdCBiZSBjbG9uZWQuCiBQQVNTIGV2
ZW50LnBvcnRzIGNvbnRhaW5zIHR3byBwb3J0cyB3aGVuIHR3byBwb3J0cyByZS1zZW50IGFmdGVy
IGVycm9yCi1QQVNTIHBvc3RpbmcgYSBub24tYXJyYXkgZGlkIHRocm93OiBUeXBlRXJyb3I6IFZh
bHVlIGlzIG5vdCBhIHNlcXVlbmNlCi1QQVNTIHBvc3RpbmcgYSBub24tc2VxdWVuY2UgZGlkIHRo
cm93OiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IKK1BBU1MgcG9zdGluZyBhIG5vbi1hcnJheSBkaWQg
dGhyb3c6IFR5cGVFcnJvcjogVHlwZSBlcnJvcgorUEFTUyBwb3N0aW5nIGEgbm9uLXNlcXVlbmNl
IGRpZCB0aHJvdzogRGF0YUNsb25lRXJyb3IgKERPTSBFeGNlcHRpb24gMjUpOiBUaGUgb2JqZWN0
IGNhbiBub3QgYmUgY2xvbmVkLgogCiBURVNUIENPTVBMRVRFCiAKSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3Qvd29ya2Vycy93b3JrZXItbXVsdGktcG9ydC1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3dvcmtlci1tdWx0aS1wb3J0LWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMjA5MjYxKQorKysgTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3dvcmtlci1t
dWx0aS1wb3J0LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMywxMCArMywxMCBAQCBU
aGlzIHRlc3QgY2hlY2tzIHRoZSB2YXJpb3VzIHVzZSBjYXNlcyBhCiBPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCiAKIAotUEFTUyB3b3JrZXIucG9zdE1lc3NhZ2UoIm51bGwgcG9ydCIsIFtjaGFu
bmVsMy5wb3J0MSwgbnVsbCwgY2hhbm5lbDMucG9ydDJdKSB0aHJldyBleGNlcHRpb24gSW52YWxp
ZFN0YXRlRXJyb3IgKERPTSBFeGNlcHRpb24gMTEpOiBUaGUgb2JqZWN0IGlzIGluIGFuIGludmFs
aWQgc3RhdGUuLgotUEFTUyB3b3JrZXIucG9zdE1lc3NhZ2UoIm5vdEFQb3J0IiwgW2NoYW5uZWwz
LnBvcnQxLCB7fSwgY2hhbm5lbDMucG9ydDJdKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBU
eXBlIGVycm9yLgotUEFTUyB3b3JrZXIucG9zdE1lc3NhZ2UoIm5vdEFuQXJyYXkiLCBjaGFubmVs
My5wb3J0MSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVmFsdWUgaXMgbm90IGEgc2VxdWVu
Y2UuCi1QQVNTIHdvcmtlci5wb3N0TWVzc2FnZSgibm90QVNlcXVlbmNlIiwgW3tsZW5ndGg6IDN9
XSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KK1BBU1Mgd29ya2VyLnBv
c3RNZXNzYWdlKCJudWxsIHBvcnQiLCBbY2hhbm5lbDMucG9ydDEsIG51bGwsIGNoYW5uZWwzLnBv
cnQyXSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KK1BBU1Mgd29ya2Vy
LnBvc3RNZXNzYWdlKCJub3RBUG9ydCIsIFtjaGFubmVsMy5wb3J0MSwge30sIGNoYW5uZWwzLnBv
cnQyXSkgdGhyZXcgZXhjZXB0aW9uIERhdGFDbG9uZUVycm9yIChET00gRXhjZXB0aW9uIDI1KTog
VGhlIG9iamVjdCBjYW4gbm90IGJlIGNsb25lZC4uCitQQVNTIHdvcmtlci5wb3N0TWVzc2FnZSgi
bm90QW5BcnJheSIsIGNoYW5uZWwzLnBvcnQxKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBU
eXBlIGVycm9yLgorUEFTUyB3b3JrZXIucG9zdE1lc3NhZ2UoIm5vdEFTZXF1ZW5jZSIsIFt7bGVu
Z3RoOiAzfV0pIHRocmV3IGV4Y2VwdGlvbiBEYXRhQ2xvbmVFcnJvciAoRE9NIEV4Y2VwdGlvbiAy
NSk6IFRoZSBvYmplY3QgY2FuIG5vdCBiZSBjbG9uZWQuLgogUEFTUyBldmVudC5wb3J0cyBpcyBu
b24tbnVsbCBhbmQgemVybyBsZW5ndGggd2hlbiBubyBwb3J0IHNlbnQKIFBBU1MgZXZlbnQucG9y
dHMgaXMgbm9uLW51bGwgYW5kIHplcm8gbGVuZ3RoIHdoZW4gZW1wdHkgYXJyYXkgc2VudAogUEFT
UyBldmVudC5wb3J0cyBjb250YWlucyB0d28gcG9ydHMgd2hlbiB0d28gcG9ydHMgc2VudApJbmRl
eDogTGF5b3V0VGVzdHMvd2ViZ2wvMS4wLjIvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2UvdHlwZWRhcnJheXMvcmVzb3VyY2VzL3R5cGVkLWFycmF5LXdvcmtlci5qcwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy93ZWJnbC8xLjAuMi9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS90eXBlZGFycmF5cy9yZXNvdXJjZXMvdHlwZWQtYXJyYXktd29ya2Vy
LmpzCShyZXZpc2lvbiAyMDkyNjEpCisrKyBMYXlvdXRUZXN0cy93ZWJnbC8xLjAuMi9yZXNvdXJj
ZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90eXBlZGFycmF5cy9yZXNvdXJjZXMvdHlw
ZWQtYXJyYXktd29ya2VyLmpzCSh3b3JraW5nIGNvcHkpCkBAIC03NCw3ICs3NCw3IEBAIG9ubWVz
c2FnZSA9IGZ1bmN0aW9uKGV2ZW50KSB7CiAgICAgfSBlbHNlIHsKICAgICAgIHZhbHVlVG9TZW5k
ID0gdmlldy5idWZmZXI7CiAgICAgfQotICAgIHZhciB0cmFuc2ZlcmFibGVzVG9TZW5kID0gbnVs
bDsKKyAgICB2YXIgdHJhbnNmZXJhYmxlc1RvU2VuZCA9IFtdOwogICAgIGlmIChtZXNzYWdlLmNv
bW1hbmQgPT0gJ3RyYW5zZmVyJyB8fAogICAgICAgICBtZXNzYWdlLmNvbW1hbmQgPT0gJ3RyYW5z
ZmVyQnVmZmVyJykgewogICAgICAgdHJhbnNmZXJhYmxlc1RvU2VuZCA9IFsgdmlldy5idWZmZXIg
XTsKSW5kZXg6IExheW91dFRlc3RzL3dlYmdsLzEuMC4zL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL3R5cGVkYXJyYXlzL3Jlc291cmNlcy90eXBlZC1hcnJheS13b3JrZXIu
anMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvd2ViZ2wvMS4wLjMvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdHlwZWRhcnJheXMvcmVzb3VyY2VzL3R5cGVkLWFycmF5
LXdvcmtlci5qcwkocmV2aXNpb24gMjA5MjYxKQorKysgTGF5b3V0VGVzdHMvd2ViZ2wvMS4wLjMv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdHlwZWRhcnJheXMvcmVzb3Vy
Y2VzL3R5cGVkLWFycmF5LXdvcmtlci5qcwkod29ya2luZyBjb3B5KQpAQCAtNzQsNyArNzQsNyBA
QCBvbm1lc3NhZ2UgPSBmdW5jdGlvbihldmVudCkgewogICAgIH0gZWxzZSB7CiAgICAgICB2YWx1
ZVRvU2VuZCA9IHZpZXcuYnVmZmVyOwogICAgIH0KLSAgICB2YXIgdHJhbnNmZXJhYmxlc1RvU2Vu
ZCA9IG51bGw7CisgICAgdmFyIHRyYW5zZmVyYWJsZXNUb1NlbmQgPSBbXTsKICAgICBpZiAobWVz
c2FnZS5jb21tYW5kID09ICd0cmFuc2ZlcicgfHwKICAgICAgICAgbWVzc2FnZS5jb21tYW5kID09
ICd0cmFuc2ZlckJ1ZmZlcicpIHsKICAgICAgIHRyYW5zZmVyYWJsZXNUb1NlbmQgPSBbIHZpZXcu
YnVmZmVyIF07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>296009</attachid>
            <date>2016-12-02 15:23:13 -0800</date>
            <delta_ts>2016-12-03 07:41:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-142562-20161202152243.patch</filename>
            <type>text/plain</type>
            <size>88253</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwOTI3MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg5IEBACisyMDE2LTEyLTAyICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgb3B0aW9uYWwgc2VxdWVuY2UgdmFsdWVz
IG5vdCBoYW5kbGVkIGNvcnJlY3RseSBieSBiaW5kaW5nIGdlbmVyYXRvcgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQyNTYyCisKKyAgICAgICAgQWxz
byBmaXhlczoKKyAgICAgICAgICAgIFJlbW92ZSBub24tc3RhbmRhcmQgcG9zdE1lc3NhZ2Ugb3Zl
cmxvYWQKKyAgICAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjE5MTEKKyAgICAgICAgYW5kCisgICAgICAgICAgICBXcm9uZyBhcmd1bWVudCBvcmRlciBp
biB3aW5kb3cucG9zdE1lc3NhZ2UKKyAgICAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD02MzE0MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICBSZW1vdmUgbm8gbG9uZ2VyIG5lZWRlZCBmaWxlcy4KKworICAgICAgICAqIGJpbmRpbmdz
L2dlbmVyaWMvSURMVHlwZXMuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnQu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnZlcnRlcjxJRExPYmplY3Q+Ojpjb252ZXJ0KToKKyAg
ICAgICAgQWRkIHN1cHBvcnQgZm9yIHRoZSBXZWJJREwgb2JqZWN0IHR5cGUuCisKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
RE9NRXhjZXB0aW9uKToKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHRocm93aW5nIHN0YWNrIG92
ZXJmbG93IGVycm9ycy4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9t
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmhhbmRsZVBvc3RNZXNzYWdlKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93Ojpwb3N0TWVzc2FnZSk6IERlbGV0ZWQuCisgICAg
ICAgICogYmluZGluZ3MvanMvSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUN1c3RvbS5jcHA6
IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpKU01lc3NhZ2VQb3J0Ojpwb3N0TWVzc2FnZSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0VHJhbnNmZXJhYmxlcyk6IERlbGV0ZWQuCisgICAg
ICAgICogYmluZGluZ3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5oOiBSZW1vdmVkLgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTV29ya2VyQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpT
V29ya2VyOjpwb3N0TWVzc2FnZSk6IERlbGV0ZWQuCisgICAgICAgIFJlbW92ZSBjdXN0b20gYmlu
ZGluZ3MgZm9yIHBvc3RNZXNzYWdlLgorCisgICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmg6CisgICAgICAgIFN3aXRjaCB0byB1c2luZyBlbnVtIGNsYXNzLgorCisg
ICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6dHJhbnNmZXJBcnJheUJ1ZmZlcnMpOgor
ICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUpOgorICAgICAg
ICBBZGQgbmV3IGNyZWF0ZSBmdW5jdGlvbiB0aGF0IHRha2VzIHRoZSB0cmFuc2ZlciBsaXN0LCBw
cm9jZXNzZXMgaXQsIGFuZCByZXR1cm5zCisgICAgICAgIE1lc3NhZ2VQb3J0cyBhbmQgU2VyaWFs
aXplZFNjcmlwdFZhbHVlIC8gZXhjZXB0aW9uLgorCisgICAgICAgIChXZWJDb3JlOjpDbG9uZUJh
c2U6OnRocm93U3RhY2tPdmVyZmxvdyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDbG9u
ZURlc2VyaWFsaXplcjo6dGhyb3dWYWxpZGF0aW9uRXJyb3IpOiBEZWxldGVkLgorICAgICAgICBS
ZW1vdmUgdW5jYWxsZWQgZnVuY3Rpb25zLgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9yLnBtOgorICAgICAgICAoSXNSZWZQdHJUeXBlKToKKyAgICAgICAgKElzQnVp
bHRpblR5cGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBt
OgorICAgICAgICAoQWRkVG9JbmNsdWRlc0ZvcklETFR5cGUpOgorICAgICAgICAoR2V0QmFzZUlE
TFR5cGUpOgorICAgICAgICBBZGQgc3VwcG9ydCBmb3IgdGhlIFdlYklETCAnb2JqZWN0JyB0eXBl
LgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHA6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsOgorICAgICAgICBBZGQg
dGVzdHMgZm9yICdvYmplY3QnLgorCisgICAgICAgICogZG9tL0V4Y2VwdGlvbkNvZGUuaDoKKyAg
ICAgICAgQWRkIHR3byBuZXcgRXhjZXB0aW9uQ29kZXM6CisgICAgICAgICAgLSBFeGlzdGluZ0V4
Y2VwdGlvbkVycm9yLCB0byBpbmRpY2F0ZSB0aGF0IGltcGxlbWVudGF0aW9uIGNvZGUgdGhyZXcg
YSBKUyBleGNlcHRpb24uCisgICAgICAgICAgLSBTdGFja092ZXJmbG93RXJyb3IsIHRvIGluZGlj
YXRlIHRoYXQgYSBzdGFjayBvdmVyZmxvdyBleGNlcHRpb24gc2hvdWxkIGJlIHRocm93bi4KKwor
ICAgICAgICAqIGRvbS9NZXNzYWdlUG9ydC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdl
UG9ydDo6cG9zdE1lc3NhZ2UpOgorICAgICAgICAqIGRvbS9NZXNzYWdlUG9ydC5oOgorICAgICAg
ICAqIGRvbS9NZXNzYWdlUG9ydC5pZGw6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93Ojpwb3N0TWVzc2FnZSk6CisgICAgICAgICogcGFn
ZS9ET01XaW5kb3cuaDoKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5pZGw6CisgICAgICAgICog
d29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZTo6cG9zdE1lc3NhZ2UpOgorICAgICAgICAqIHdv
cmtlcnMvRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaDoKKyAgICAgICAgKiB3b3JrZXJzL0Rl
ZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmlkbDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXI6OnBvc3RNZXNzYWdlKToKKyAgICAgICAgKiB3
b3JrZXJzL1dvcmtlci5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyLmlkbDoKKyAgICAgICAg
VXBkYXRlIHRvIGNhbGwgbmV3IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSBjcmVhdGUgZnVuY3Rpb24u
CisKIDIwMTYtMTItMDIgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbTW9kZXJuIE1lZGlhIENvbnRyb2xzXSBBZGQgcmV3aW5kIGFuZCBmYXN0LWZvcndhcmQg
c3VwcG9ydApJbmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDIwOTI3MSkKKysrIFNv
dXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMTI5LDcgKzEx
MjksNiBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgYmluZGluZ3MvanMvSlNET01XcmFwcGVy
LmNwcAogICAgIGJpbmRpbmdzL2pzL0pTRGF0YUN1ZUN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9q
cy9KU0RhdGFUcmFuc2ZlckN1c3RvbS5jcHAKLSAgICBiaW5kaW5ncy9qcy9KU0RlZGljYXRlZFdv
cmtlckdsb2JhbFNjb3BlQ3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTRGV2aWNlTW90aW9u
RXZlbnRDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNEZXZpY2VPcmllbnRhdGlvbkV2ZW50
Q3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5jcHAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlz
aW9uIDIwOTI3MSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTU4NCw3ICsxNTg0LDYgQEAKIAkJNDE2MTRBNzkx
REE2NDI0MTAwNEFEMDZGIC8qIEhUVFBIZWFkZXJWYWx1ZXMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNjE0QTc3MURBNjQyMzYwMDRBRDA2RiAvKiBI
VFRQSGVhZGVyVmFsdWVzLmggKi87IH07CiAJCTQxNjJBNDUwMTAxMTQ1QUUwMERGRjNFRCAvKiBE
ZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0MTYyQTQ0RDEwMTE0NUFFMDBERkYzRUQgLyogRGVkaWNhdGVk
V29ya2VyR2xvYmFsU2NvcGUuY3BwICovOyB9OwogCQk0MTYyQTQ1MTEwMTE0NUFFMDBERkYzRUQg
LyogRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNjJBNDRFMTAxMTQ1QUUwMERGRjNFRCAvKiBEZWRpY2F0
ZWRXb3JrZXJHbG9iYWxTY29wZS5oICovOyB9OwotCQk0MTYyQTQ1NDEwMTE0NUUzMDBERkYzRUQg
LyogSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTYyQTQ1MzEwMTE0NUUzMDBERkYzRUQg
LyogSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUN1c3RvbS5jcHAgKi87IH07CiAJCTQxNjJB
NDU3MTAxMTQ2NDcwMERGRjNFRCAvKiBKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNjJBNDU1MTAx
MTQ2NDcwMERGRjNFRCAvKiBKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmNwcCAqLzsgfTsK
IAkJNDE2MkE0NTgxMDExNDY0NzAwREZGM0VEIC8qIEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2Nv
cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNjJB
NDU2MTAxMTQ2NDcwMERGRjNFRCAvKiBKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmggKi87
IH07CiAJCTQxNkUyOUE2MTAyRkE5NjIwMDdGQzE0RSAvKiBXb3JrZXJSZXBvcnRpbmdQcm94eS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2RTI5QTUx
MDJGQTk2MjAwN0ZDMTRFIC8qIFdvcmtlclJlcG9ydGluZ1Byb3h5LmggKi87IH07CkBAIC0xNjQx
LDcgKzE2NDAsNiBAQAogCQk0MUY1NEY4QjFDNTBDNTAzMDAzMzg0ODggLyogRmV0Y2hCb2R5LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRjU0RjdE
MUM1MEM0RjYwMDMzODQ4OCAvKiBGZXRjaEJvZHkuY3BwICovOyB9OwogCQk0MUY1NEY4RDFDNTBD
NTA4MDAzMzg0ODggLyogRmV0Y2hIZWFkZXJzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRjU0RjgyMUM1MEM0RjYwMDMzODQ4OCAvKiBGZXRjaEhl
YWRlcnMuY3BwICovOyB9OwogCQk0MUY1NEY4RTFDNTBDNTBDMDAzMzg0ODggLyogRmV0Y2hSZXF1
ZXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQx
RjU0Rjg3MUM1MEM0RjYwMDMzODQ4OCAvKiBGZXRjaFJlcXVlc3QuY3BwICovOyB9OwotCQk0MUY1
ODRDNzEwNDY1MkNCMDA5Q0FBNjQgLyogSlNNZXNzYWdlUG9ydEN1c3RvbS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGNTg0QzYxMDQ2NTJDQjAwOUNB
QTY0IC8qIEpTTWVzc2FnZVBvcnRDdXN0b20uaCAqLzsgfTsKIAkJNDFGQTMwM0UxMzE2QzI5QzAw
QzBCRkM1IC8qIFJlbmRlck1lZGlhQ29udHJvbHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGQTMwM0MxMzE2QzI5QzAwQzBCRkM1IC8qIFJlbmRl
ck1lZGlhQ29udHJvbHMuY3BwICovOyB9OwogCQk0MUZBMzAzRjEzMTZDMjlDMDBDMEJGQzUgLyog
UmVuZGVyTWVkaWFDb250cm9scy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDFGQTMwM0QxMzE2QzI5QzAwQzBCRkM1IC8qIFJlbmRlck1lZGlhQ29udHJv
bHMuaCAqLzsgfTsKIAkJNDMwNkU0RTYxNDk1NTU0MzAwN0YxN0FDIC8qIEtpbGxSaW5nTm9uZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MzA2RTRF
NTE0OTU1NTQzMDA3RjE3QUMgLyogS2lsbFJpbmdOb25lLmNwcCAqLzsgfTsKQEAgLTg3MzcsNyAr
ODczNSw2IEBACiAJCTQxNjJBNDREMTAxMTQ1QUUwMERGRjNFRCAvKiBEZWRpY2F0ZWRXb3JrZXJH
bG9iYWxTY29wZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZWRp
Y2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQxNjJBNDRFMTAxMTQ1QUUwMERGRjNFRCAvKiBEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEZWRpY2F0ZWRXb3JrZXJHbG9iYWxT
Y29wZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTYyQTQ0RjEwMTE0NUFFMDBE
RkYzRUQgLyogRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaWRsICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IERlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJNDE2MkE0NTMxMDExNDVFMzAwREZGM0VEIC8qIEpTRGVkaWNhdGVkV29ya2Vy
R2xvYmFsU2NvcGVDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQxNjJBNDU1MTAxMTQ2NDcwMERGRjNFRCAvKiBKU0RlZGljYXRlZFdv
cmtlckdsb2JhbFNjb3BlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0MTYyQTQ1NjEwMTE0NjQ3MDBERkYzRUQgLyogSlNEZWRpY2F0ZWRXb3JrZXJHbG9i
YWxTY29wZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RlZGljYXRlZFdv
cmtlckdsb2JhbFNjb3BlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNkUyOUE1
MTAyRkE5NjIwMDdGQzE0RSAvKiBXb3JrZXJSZXBvcnRpbmdQcm94eS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXb3JrZXJSZXBvcnRpbmdQcm94eS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtODgxMSw3ICs4ODA4LDYgQEAKIAkJNDFGNTRGODcxQzUwQzRGNjAw
MzM4NDg4IC8qIEZldGNoUmVxdWVzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBGZXRjaFJlcXVlc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
MUY1NEY4ODFDNTBDNEY2MDAzMzg0ODggLyogRmV0Y2hSZXF1ZXN0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEZldGNoUmVxdWVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0MUY1NEY4OTFDNTBDNEY2MDAzMzg0ODggLyogRmV0Y2hSZXF1ZXN0LmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBGZXRjaFJlcXVlc3QuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQk0MUY1ODRDNjEwNDY1MkNCMDA5Q0FBNjQgLyogSlNNZXNzYWdlUG9ydEN1c3Rv
bS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU01lc3NhZ2VQb3J0Q3VzdG9t
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRkEzMDNDMTMxNkMyOUMwMEMwQkZD
NSAvKiBSZW5kZXJNZWRpYUNvbnRyb2xzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFJlbmRlck1lZGlhQ29udHJvbHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0MUZBMzAzRDEzMTZDMjlDMDBDMEJGQzUgLyogUmVuZGVyTWVkaWFDb250cm9scy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJNZWRpYUNvbnRyb2xzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQzMDZFNEU1MTQ5NTU1NDMwMDdGMTdBQyAv
KiBLaWxsUmluZ05vbmUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
S2lsbFJpbmdOb25lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIyMDY1LDcg
KzIyMDYxLDYgQEAKIAkJCQlERUMyOTc1RDFCNERFQjJBMDA1RjU5NDUgLyogSlNDdXN0b21FdmVu
dEN1c3RvbS5jcHAgKi8sCiAJCQkJMDdGQkRFMkIxOEZFRDE3ODAwMUE3Q0ZGIC8qIEpTRGF0YUN1
ZUN1c3RvbS5jcHAgKi8sCiAJCQkJQkNBODNFNTEwRDdDRTIwNTAwMzQyMUE4IC8qIEpTRGF0YVRy
YW5zZmVyQ3VzdG9tLmNwcCAqLywKLQkJCQk0MTYyQTQ1MzEwMTE0NUUzMDBERkYzRUQgLyogSlNE
ZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUN1c3RvbS5jcHAgKi8sCiAJCQkJMzFGQjFBNkIxMjBB
NUQ2OTAwREMwMkEwIC8qIEpTRGV2aWNlTW90aW9uRXZlbnRDdXN0b20uY3BwICovLAogCQkJCTU5
MEUxQjRBMTFFNEVGNzAwMDY5Rjc4NCAvKiBKU0RldmljZU9yaWVudGF0aW9uRXZlbnRDdXN0b20u
Y3BwICovLAogCQkJCTQ5QzdCQThDMTA0MkY1QjEwMDA5RDQ0NyAvKiBKU0RvY3VtZW50Q3VzdG9t
LmNwcCAqLywKQEAgLTIyMTIxLDcgKzIyMTE2LDYgQEAKIAkJCQlFMUE1Rjk5QTBFN0VBQTI1MDBB
Rjg1RUEgLyogSlNNZXNzYWdlQ2hhbm5lbEN1c3RvbS5jcHAgKi8sCiAJCQkJNDEwQjdFNzExMDQ1
RkFCMDAwRDgyMjRGIC8qIEpTTWVzc2FnZUV2ZW50Q3VzdG9tLmNwcCAqLywKIAkJCQlFMUFERUQ0
NjBFNzZCOEREMDA0QTFBNUUgLyogSlNNZXNzYWdlUG9ydEN1c3RvbS5jcHAgKi8sCi0JCQkJNDFG
NTg0QzYxMDQ2NTJDQjAwOUNBQTY0IC8qIEpTTWVzc2FnZVBvcnRDdXN0b20uaCAqLywKIAkJCQlB
MUU1QjMxRDFBQUQxREE0MDA2RUJFRkIgLyogSlNNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ3Vz
dG9tLmNwcCAqLywKIAkJCQlDNkYwOTE3RTE0M0EyQkI5MDA2ODU4NDkgLyogSlNNdXRhdGlvbk9i
c2VydmVyQ3VzdG9tLmNwcCAqLywKIAkJCQlCQ0Q5QzI1RjBDMTdBQTY3MDA1QzkwQTIgLyogSlNO
YW1lZE5vZGVNYXBDdXN0b20uY3BwICovLApAQCAtMjYzMzksNyArMjYzMzMsNiBAQAogCQkJCUUx
MDc0MDBFMEU3N0JEQzAwMDMzQUYyNCAvKiBKU01lc3NhZ2VDaGFubmVsLmggaW4gSGVhZGVycyAq
LywKIAkJCQk3NTc5M0VDOTBEMENFNzJEMDA3RkMwQUMgLyogSlNNZXNzYWdlRXZlbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUUxQURFRERBMEU3NkJEOTMwMDRBMUE1RSAvKiBKU01lc3NhZ2VQb3J0
LmggaW4gSGVhZGVycyAqLywKLQkJCQk0MUY1ODRDNzEwNDY1MkNCMDA5Q0FBNjQgLyogSlNNZXNz
YWdlUG9ydEN1c3RvbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ2RjNFOTUxQzFGODU1NTAwNjFE
QkQ0IC8qIEpTTW9ja1BhZ2VPdmVybGF5LmggaW4gSGVhZGVycyAqLywKIAkJCQlBODY2MjlEMTA5
REEyQjQ4MDA5NjMzQTUgLyogSlNNb3VzZUV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk4MzBB
MzZCRDFEQUM1RkFEMDA2RDdEMDkgLyogSlNNb3VzZUV2ZW50SW5pdC5oIGluIEhlYWRlcnMgKi8s
CkBAIC0yOTg1Nyw3ICsyOTg1MCw2IEBACiAJCQkJQkNBODNFNEYwRDdDRTFFOTAwMzQyMUE4IC8q
IEpTRGF0YVRyYW5zZmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDQTgzRTUyMEQ3Q0UyMDUw
MDM0MjFBOCAvKiBKU0RhdGFUcmFuc2ZlckN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0
MTYyQTQ1NzEwMTE0NjQ3MDBERkYzRUQgLyogSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5j
cHAgaW4gU291cmNlcyAqLywKLQkJCQk0MTYyQTQ1NDEwMTE0NUUzMDBERkYzRUQgLyogSlNEZWRp
Y2F0ZWRXb3JrZXJHbG9iYWxTY29wZUN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGREEx
NUVEMTEyQjAzRjk0MDAzQTU4M0EgLyogSlNEZWxheU5vZGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMzFGQjFBNjUxMjBBNUQzRjAwREMwMkEwIC8qIEpTRGV2aWNlTW90aW9uRXZlbnQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMzFGQjFBNkMxMjBBNUQ2OTAwREMwMkEwIC8qIEpTRGV2aWNlTW90
aW9uRXZlbnRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9nZW5lcmljL0lETFR5cGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvZ2VuZXJpYy9JRExUeXBlcy5oCShyZXZpc2lvbiAyMDkyNzEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL0lETFR5cGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0
LDYgKzM0LDggQEAgbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBBcnJheUJ1ZmZlcjsKIGNsYXNzIEFy
cmF5QnVmZmVyVmlldzsKIGNsYXNzIEpTVmFsdWU7CitjbGFzcyBKU09iamVjdDsKK3RlbXBsYXRl
IDx0eXBlbmFtZSBUPiBjbGFzcyBTdHJvbmc7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAg
LTk0LDcgKzk2LDcgQEAgc3RydWN0IElETERPTVN0cmluZyA6IElETFN0cmluZyB7IH07CiBzdHJ1
Y3QgSURMQnl0ZVN0cmluZyA6IElETFN0cmluZyB7IH07CiBzdHJ1Y3QgSURMVVNWU3RyaW5nIDog
SURMU3RyaW5nIHsgfTsKIAotc3RydWN0IElETE9iamVjdCA6IElETFVuc3VwcG9ydGVkVHlwZSB7
IH07CitzdHJ1Y3QgSURMT2JqZWN0IDogSURMVHlwZTxKU0M6OlN0cm9uZzxKU0M6OkpTT2JqZWN0
Pj4geyB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgSURMV3JhcHBlciA6IElETFR5
cGU8UmVmUHRyPFQ+PiB7CiAgICAgdXNpbmcgUmF3VHlwZSA9IFQ7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAJKHJldmlzaW9u
IDIwOTI3MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9u
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0LDcgKzY0LDYgQEAKICNpbmNsdWRlICJKU0RPTVdy
YXBwZXIuY3BwIgogI2luY2x1ZGUgIkpTRGF0YUN1ZUN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNE
YXRhVHJhbnNmZXJDdXN0b20uY3BwIgotI2luY2x1ZGUgIkpTRGVkaWNhdGVkV29ya2VyR2xvYmFs
U2NvcGVDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTRGV2aWNlT3JpZW50YXRpb25FdmVudEN1c3Rv
bS5jcHAiCiAjaW5jbHVkZSAiSlNEaWN0aW9uYXJ5LmNwcCIKICNpbmNsdWRlICJKU0RvY3VtZW50
Q3VzdG9tLmNwcCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGlu
Zy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5k
aW5nLmNwcAkocmV2aXNpb24gMjA5MjcxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01CaW5kaW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcwLDcgKzI3MCw3IEBAIHZvaWQg
cmVwb3J0Q3VycmVudEV4Y2VwdGlvbihFeGVjU3RhdGUqIGUKIAogc3RhdGljIEpTVmFsdWUgY3Jl
YXRlRE9NRXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgRXhjZXB0aW9uQ29kZSBlYywgY29uc3Qg
U3RyaW5nKiBtZXNzYWdlID0gbnVsbHB0cikKIHsKLSAgICBpZiAoIWVjKQorICAgIGlmICghZWMg
fHwgZWMgPT0gRXhpc3RpbmdFeGNlcHRpb25FcnJvcikKICAgICAgICAgcmV0dXJuIGpzVW5kZWZp
bmVkKCk7CiAKICAgICAvLyBGSVhNRTogSGFuZGxlIG90aGVyIFdlYklETCBleGNlcHRpb24gdHlw
ZXMuCkBAIC0yODYsNiArMjg2LDkgQEAgc3RhdGljIEpTVmFsdWUgY3JlYXRlRE9NRXhjZXB0aW9u
KEV4ZWNTdAogICAgICAgICByZXR1cm4gY3JlYXRlUmFuZ2VFcnJvcihleGVjLCAqbWVzc2FnZSk7
CiAgICAgfQogCisgICAgaWYgKGVjID09IFN0YWNrT3ZlcmZsb3dFcnJvcikKKyAgICAgICAgcmV0
dXJuIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihleGVjKTsKKwogICAgIC8vIEZJWE1FOiBBbGwg
Y2FsbGVycyB0byBzZXRET01FeGNlcHRpb24gbmVlZCB0byBwYXNzIGluIHRoZSByaWdodCBnbG9i
YWwgb2JqZWN0CiAgICAgLy8gZm9yIG5vdywgd2UncmUgZ29pbmcgdG8gYXNzdW1lIHRoZSBsZXhp
Y2FsR2xvYmFsT2JqZWN0LiBXaGljaCBpcyB3cm9uZyBpbiBjYXNlcyBsaWtlIHRoaXM6CiAgICAg
Ly8gZnJhbWVzWzBdLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQobnVsbCwgbnVsbCk7IC8vIHRocm93
cyBhbiBleGNlcHRpb24gd2hpY2ggc2hvdWxkIGhhdmUgdGhlIHN1YmZyYW1lcyBwcm90b3R5cGVz
LgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0LmgJKHJldmlz
aW9uIDIwOTI3MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydC5o
CSh3b3JraW5nIGNvcHkpCkBAIC04MTMsNiArODEzLDI1IEBAIHRlbXBsYXRlPD4gc3RydWN0IEpT
Q29udmVydGVyPElETFVTVlN0cmkKIH07CiAKIC8vIE1BUks6IC0KKy8vIE1BUks6IE9iamVjdCB0
eXBlCisKK3RlbXBsYXRlPD4gc3RydWN0IENvbnZlcnRlcjxJRExPYmplY3Q+IDogRGVmYXVsdENv
bnZlcnRlcjxJRExPYmplY3Q+IHsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFeGNlcHRpb25UaHJv
d2VyID0gRGVmYXVsdEV4Y2VwdGlvblRocm93ZXI+CisgICAgc3RhdGljIEpTQzo6U3Ryb25nPEpT
Qzo6SlNPYmplY3Q+IGNvbnZlcnQoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUg
dmFsdWUsIEV4Y2VwdGlvblRocm93ZXImJiBleGNlcHRpb25UaHJvd2VyID0gRXhjZXB0aW9uVGhy
b3dlcigpKQorICAgIHsKKyAgICAgICAgSlNDOjpWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgICAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICAgICAgaWYgKCF2
YWx1ZS5pc09iamVjdCgpKSB7CisgICAgICAgICAgICBleGNlcHRpb25UaHJvd2VyKHN0YXRlLCBz
Y29wZSk7CisgICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICB9CisgICAgICAgIAorICAg
ICAgICByZXR1cm4geyB2bSwgSlNDOjphc09iamVjdCh2YWx1ZSkgfTsKKyAgICB9Cit9OworCisv
LyBNQVJLOiAtCiAvLyBNQVJLOiBBcnJheS1saWtlIHR5cGVzCiAKIG5hbWVzcGFjZSBEZXRhaWwg
ewpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3Vz
dG9tLmNwcAkocmV2aXNpb24gMjA5MjcxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01XaW5kb3dDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiwxMiArMzIsMTIgQEAK
ICNpbmNsdWRlICJKU0hUTUxPcHRpb25FbGVtZW50LmgiCiAjaW5jbHVkZSAiSlNJREJGYWN0b3J5
LmgiCiAjaW5jbHVkZSAiSlNJbWFnZUNvbnN0cnVjdG9yLmgiCi0jaW5jbHVkZSAiSlNNZXNzYWdl
UG9ydEN1c3RvbS5oIgogI2luY2x1ZGUgIkpTV29ya2VyLmgiCiAjaW5jbHVkZSAiTG9jYXRpb24u
aCIKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiU2NoZWR1
bGVkQWN0aW9uLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNpbmNsdWRlIDxydW50aW1lL0pT
Q0lubGluZXMuaD4KIAogI2lmIEVOQUJMRShVU0VSX01FU1NBR0VfSEFORExFUlMpCiAjaW5jbHVk
ZSAiSlNXZWJLaXROYW1lc3BhY2UuaCIKQEAgLTQ4OSw1MCArNDg5LDYgQEAgSlNWYWx1ZSBKU0RP
TVdpbmRvdzo6c2hvd01vZGFsRGlhbG9nKEV4ZQogICAgIHJldHVybiBoYW5kbGVyLnJldHVyblZh
bHVlKCk7CiB9CiAKLXN0YXRpYyBKU1ZhbHVlIGhhbmRsZVBvc3RNZXNzYWdlKERPTVdpbmRvdyYg
aW1wbCwgRXhlY1N0YXRlJiBzdGF0ZSkKLXsKLSAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOwotICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLQotICAgIGlmIChVTkxJS0VM
WShzdGF0ZS5hcmd1bWVudENvdW50KCkgPCAyKSkKLSAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0
aW9uKCZzdGF0ZSwgc2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkp
OwotCi0gICAgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+IG1lc3NhZ2VQb3J0czsKLSAgICBW
ZWN0b3I8UmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+PiBhcnJheUJ1ZmZlcnM7Ci0KLSAgICAvLyBU
aGlzIGZ1bmN0aW9uIGhhcyB2YXJpYWJsZSBhcmd1bWVudHMgYW5kIGNhbiBiZToKLSAgICAvLyBQ
ZXIgY3VycmVudCBzcGVjOgotICAgIC8vICAgcG9zdE1lc3NhZ2UobWVzc2FnZSwgdGFyZ2V0T3Jp
Z2luKQotICAgIC8vICAgcG9zdE1lc3NhZ2UobWVzc2FnZSwgdGFyZ2V0T3JpZ2luLCB7c2VxdWVu
Y2Ugb2YgdHJhbnNmZXJyYWJsZXN9KQotICAgIC8vIExlZ2FjeSBub24tc3RhbmRhcmQgaW1wbGVt
ZW50YXRpb25zIGluIHdlYmtpdCBhbGxvd2VkOgotICAgIC8vICAgcG9zdE1lc3NhZ2UobWVzc2Fn
ZSwge3NlcXVlbmNlIG9mIHRyYW5zZmVycmFibGVzfSwgdGFyZ2V0T3JpZ2luKTsKLSAgICBpbnQg
dGFyZ2V0T3JpZ2luQXJnSW5kZXggPSAxOwotICAgIGlmIChzdGF0ZS5hcmd1bWVudENvdW50KCkg
PiAyKSB7Ci0gICAgICAgIGludCB0cmFuc2ZlcmFibGVzQXJnSW5kZXggPSAyOwotICAgICAgICBp
ZiAoc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMikuaXNTdHJpbmcoKSkgewotICAgICAgICAgICAg
dGFyZ2V0T3JpZ2luQXJnSW5kZXggPSAyOwotICAgICAgICAgICAgdHJhbnNmZXJhYmxlc0FyZ0lu
ZGV4ID0gMTsKLSAgICAgICAgfQotICAgICAgICBleHRyYWN0VHJhbnNmZXJhYmxlcyhzdGF0ZSwg
c3RhdGUuYXJndW1lbnQodHJhbnNmZXJhYmxlc0FyZ0luZGV4KSwgbWVzc2FnZVBvcnRzLCBhcnJh
eUJ1ZmZlcnMpOwotICAgIH0KLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVl
KCkpOwotCi0gICAgYXV0byBtZXNzYWdlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUo
c3RhdGUsIHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApLCBtZXNzYWdlUG9ydHMsIFdURk1vdmUo
YXJyYXlCdWZmZXJzKSk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZSgp
KTsKLQotICAgIFN0cmluZyB0YXJnZXRPcmlnaW4gPSBjb252ZXJ0PElETE51bGxhYmxlPElETFVT
VlN0cmluZz4+KHN0YXRlLCBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCh0YXJnZXRPcmlnaW5BcmdJ
bmRleCkpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7Ci0KLSAg
ICBwcm9wYWdhdGVFeGNlcHRpb24oc3RhdGUsIHNjb3BlLCBpbXBsLnBvc3RNZXNzYWdlKG1lc3Nh
Z2UucmVsZWFzZU5vbk51bGwoKSwgV1RGTW92ZShtZXNzYWdlUG9ydHMpLCB0YXJnZXRPcmlnaW4s
IGNhbGxlckRPTVdpbmRvdygmc3RhdGUpKSk7Ci0KLSAgICByZXR1cm4ganNVbmRlZmluZWQoKTsK
LX0KLQotSlNWYWx1ZSBKU0RPTVdpbmRvdzo6cG9zdE1lc3NhZ2UoRXhlY1N0YXRlJiBzdGF0ZSkK
LXsKLSAgICByZXR1cm4gaGFuZGxlUG9zdE1lc3NhZ2Uod3JhcHBlZCgpLCBzdGF0ZSk7Ci19Ci0K
IEpTVmFsdWUgSlNET01XaW5kb3c6OnNldFRpbWVvdXQoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKICAg
ICBWTSYgdm0gPSBzdGF0ZS52bSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUN1c3Rv
bS5jcHAJKHJldmlzaW9uIDIwOTI3MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDdXN0b20uY3BwCShub25leGlzdGVudCkKQEAgLTEs
NDcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSwgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDExIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0g
KiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0g
KiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAot
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkpTRGVkaWNhdGVk
V29ya2VyR2xvYmFsU2NvcGUuaCIKLQotI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgotI2luY2x1
ZGUgIkpTTWVzc2FnZVBvcnRDdXN0b20uaCIKLQotdXNpbmcgbmFtZXNwYWNlIEpTQzsKLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1KU0M6OkpTVmFsdWUgSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxT
Y29wZTo6cG9zdE1lc3NhZ2UoSlNDOjpFeGVjU3RhdGUmIHN0YXRlKQotewotICAgIHJldHVybiBo
YW5kbGVQb3N0TWVzc2FnZShzdGF0ZSwgd3JhcHBlZCgpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUN1c3RvbS5jcHAKX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVk
OiBzdm46ZW9sLXN0eWxlCiMjIC0xICswLDAgIyMKLW5hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIHByb3BlcnR5CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VQ
b3J0Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U01lc3NhZ2VQb3J0Q3VzdG9tLmNwcAkocmV2aXNpb24gMjA5MjcxKQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI3LDIwICsyNyw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSlNNZXNzYWdl
UG9ydC5oIgogCi0jaW5jbHVkZSAiRXZlbnQuaCIKLSNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgi
Ci0jaW5jbHVkZSAiRnJhbWUuaCIKLSNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKLSNpbmNsdWRl
ICJKU0RPTUdsb2JhbE9iamVjdC5oIgotI2luY2x1ZGUgIkpTRXZlbnQuaCIKLSNpbmNsdWRlICJK
U0V2ZW50TGlzdGVuZXIuaCIKLSNpbmNsdWRlICJKU01lc3NhZ2VQb3J0Q3VzdG9tLmgiCi0jaW5j
bHVkZSAiTWVzc2FnZVBvcnQuaCIKLSNpbmNsdWRlIDxoZWFwL1Nsb3RWaXNpdG9ySW5saW5lcy5o
PgotI2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KLSNpbmNsdWRlIDxydW50aW1lL0pTQXJyYXlC
dWZmZXIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KLQogdXNpbmcgbmFt
ZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTIsNTMgKzM4LDQgQEAgdm9p
ZCBKU01lc3NhZ2VQb3J0Ojp2aXNpdEFkZGl0aW9uYWxDaGlsZAogICAgICAgICB2aXNpdG9yLmFk
ZE9wYXF1ZVJvb3QocG9ydCk7CiB9CiAKLUpTQzo6SlNWYWx1ZSBKU01lc3NhZ2VQb3J0Ojpwb3N0
TWVzc2FnZShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUpCi17Ci0gICAgcmV0dXJuIGhhbmRsZVBvc3RN
ZXNzYWdlKHN0YXRlLCB3cmFwcGVkKCkpOwotfQotCi12b2lkIGV4dHJhY3RUcmFuc2ZlcmFibGVz
KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIHZhbHVlLCBWZWN0b3I8UmVmUHRy
PE1lc3NhZ2VQb3J0Pj4mIHBvcnRBcnJheSwgVmVjdG9yPFJlZlB0cjxKU0M6OkFycmF5QnVmZmVy
Pj4mIGFycmF5QnVmZmVycykKLXsKLSAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOwotICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLQotICAgIGlmICh2YWx1ZS5pc1VuZGVm
aW5lZE9yTnVsbCgpKSB7Ci0gICAgICAgIHBvcnRBcnJheS5yZXNpemUoMCk7Ci0gICAgICAgIGFy
cmF5QnVmZmVycy5yZXNpemUoMCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBW
YWxpZGF0aW9uIG9mIHNlcXVlbmNlIHR5cGVzLCBwZXIgV2ViSURMIHNwZWMgNC4xLjEzLgotICAg
IHVuc2lnbmVkIGxlbmd0aCA9IDA7Ci0gICAgSlNPYmplY3QqIG9iamVjdCA9IHRvSlNTZXF1ZW5j
ZShzdGF0ZSwgdmFsdWUsIGxlbmd0aCk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
dm9pZCgpKTsKLQotICAgIGZvciAodW5zaWduZWQgaSA9IDAgOyBpIDwgbGVuZ3RoOyArK2kpIHsK
LSAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IG9iamVjdC0+Z2V0KCZzdGF0ZSwgaSk7Ci0gICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7Ci0KLSAgICAgICAgaWYgKHZhbHVl
LmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKLSAgICAgICAgICAgIHNldERPTUV4Y2VwdGlvbigmc3Rh
dGUsIElOVkFMSURfU1RBVEVfRVJSKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQot
Ci0gICAgICAgIC8vIFZhbGlkYXRpb24gb2YgT2JqZWN0cyBpbXBsZW1lbnRpbmcgYW4gaW50ZXJm
YWNlLCBwZXIgV2ViSURMIHNwZWMgNC4xLjE1LgotICAgICAgICBpZiAoUmVmUHRyPE1lc3NhZ2VQ
b3J0PiBwb3J0ID0gSlNNZXNzYWdlUG9ydDo6dG9XcmFwcGVkKHZhbHVlKSkgewotICAgICAgICAg
ICAgLy8gQ2hlY2sgZm9yIGR1cGxpY2F0ZSBwb3J0cy4KLSAgICAgICAgICAgIGlmIChwb3J0QXJy
YXkuY29udGFpbnMocG9ydCkpIHsKLSAgICAgICAgICAgICAgICBzZXRET01FeGNlcHRpb24oJnN0
YXRlLCBJTlZBTElEX1NUQVRFX0VSUik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICAgICAgfQotICAgICAgICAgICAgcG9ydEFycmF5LmFwcGVuZChXVEZNb3ZlKHBvcnQpKTsKLSAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmIChSZWZQdHI8QXJyYXlCdWZmZXI+IGFycmF5
QnVmZmVyID0gdG9Qb3NzaWJseVNoYXJlZEFycmF5QnVmZmVyKHZhbHVlKSkKLSAgICAgICAgICAg
ICAgICBhcnJheUJ1ZmZlcnMuYXBwZW5kKFdURk1vdmUoYXJyYXlCdWZmZXIpKTsKLSAgICAgICAg
ICAgIGVsc2UgewotICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUp
OwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAg
IH0KLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRDdXN0b20uaAkocmV2aXNpb24gMjA5MjcxKQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5oCShub25l
eGlzdGVudCkKQEAgLTEsNjQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICog
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIk1lc3NhZ2VQ
b3J0LmgiCi0jaW5jbHVkZSA8cnVudGltZS9FcnJvci5oPgotI2luY2x1ZGUgPHJ1bnRpbWUvSlND
SW5saW5lcy5oPgotI2luY2x1ZGUgPHJ1bnRpbWUvSlNDSlNWYWx1ZS5oPgotI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdm9pZCBleHRyYWN0VHJhbnNm
ZXJhYmxlcyhKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSwgVmVjdG9yPFJlZlB0cjxNZXNz
YWdlUG9ydD4+JiwgVmVjdG9yPFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPj4mKTsKLQotLy8gSGVs
cGVyIGZ1bmN0aW9uIHRvIGNvbnZlcnQgZnJvbSBKUyBwb3N0TWVzc2FnZSBhcmd1bWVudHMgdG8g
V2ViQ29yZSBwb3N0TWVzc2FnZSBhcmd1bWVudHMuCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxp
bmUgSlNDOjpKU1ZhbHVlIGhhbmRsZVBvc3RNZXNzYWdlKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwg
VCYgb2JqZWN0KQotewotICAgIEpTQzo6Vk0mIHZtID0gc3RhdGUudm0oKTsKLSAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0KLSAgICBpZiAoVU5MSUtFTFkoc3RhdGUu
YXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbigmc3Rh
dGUsIHNjb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKLQotICAg
IFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiBtZXNzYWdlUG9ydEFycmF5OwotICAgIFZlY3Rv
cjxSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4+IGFycmF5QnVmZmVyQXJyYXk7Ci0gICAgZXh0cmFj
dFRyYW5zZmVyYWJsZXMoc3RhdGUsIHN0YXRlLmFyZ3VtZW50KDEpLCBtZXNzYWdlUG9ydEFycmF5
LCBhcnJheUJ1ZmZlckFycmF5KTsKLQotICAgIGF1dG8gbWVzc2FnZSA9IFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTo6Y3JlYXRlKHN0YXRlLCBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKSwgbWVzc2Fn
ZVBvcnRBcnJheSwgV1RGTW92ZShhcnJheUJ1ZmZlckFycmF5KSk7Ci0gICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgSlNDOjpKU1ZhbHVlKCkpOwotCi0gICAgcHJvcGFnYXRlRXhjZXB0aW9u
KHN0YXRlLCBzY29wZSwgb2JqZWN0LnBvc3RNZXNzYWdlKFdURk1vdmUobWVzc2FnZSksIFdURk1v
dmUobWVzc2FnZVBvcnRBcnJheSkpKTsKLSAgICByZXR1cm4gSlNDOjpqc1VuZGVmaW5lZCgpOwot
fQotCi19CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U01lc3NhZ2VQb3J0Q3VzdG9tLmgKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46ZW9sLXN0eWxlCiMj
IC0xICswLDAgIyMKLW5hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckN1c3RvbS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDdXN0b20uY3BwCShyZXZp
c2lvbiAyMDkyNzEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckN1c3Rv
bS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDYgQEAKICNpbmNsdWRlICJKU0RPTUJp
bmRpbmcuaCIKICNpbmNsdWRlICJKU0RPTUdsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpTRE9N
V2luZG93Q3VzdG9tLmgiCi0jaW5jbHVkZSAiSlNNZXNzYWdlUG9ydEN1c3RvbS5oIgogI2luY2x1
ZGUgIldvcmtlci5oIgogI2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KIApAQCAtMzksMTEgKzM4
LDYgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1KU0M6
OkpTVmFsdWUgSlNXb3JrZXI6OnBvc3RNZXNzYWdlKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSkKLXsK
LSAgICByZXR1cm4gaGFuZGxlUG9zdE1lc3NhZ2Uoc3RhdGUsIHdyYXBwZWQoKSk7Ci19Ci0KIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNXb3JrZXIoRXhlY1N0YXRlJiBz
dGF0ZSkKIHsKICAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCShyZXZpc2lv
biAyMDkyNzEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0
VmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Miw2ICs5MiwxNiBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtYXhpbXVtRmlsdGVyUmVjdXJzaW9uID0g
NDAwMDA7CiAKK2VudW0gY2xhc3MgU2VyaWFsaXphdGlvblJldHVybkNvZGUgeworICAgIFN1Y2Nl
c3NmdWxseUNvbXBsZXRlZCwKKyAgICBTdGFja092ZXJmbG93RXJyb3IsCisgICAgSW50ZXJydXB0
ZWRFeGVjdXRpb25FcnJvciwKKyAgICBWYWxpZGF0aW9uRXJyb3IsCisgICAgRXhpc3RpbmdFeGNl
cHRpb25FcnJvciwKKyAgICBEYXRhQ2xvbmVFcnJvciwKKyAgICBVbnNwZWNpZmllZEVycm9yCit9
OworCiBlbnVtIFdhbGtlclN0YXRlIHsgU3RhdGVVbmtub3duLCBBcnJheVN0YXJ0U3RhdGUsIEFy
cmF5U3RhcnRWaXNpdE1lbWJlciwgQXJyYXlFbmRWaXNpdE1lbWJlciwKICAgICBPYmplY3RTdGFy
dFN0YXRlLCBPYmplY3RTdGFydFZpc2l0TWVtYmVyLCBPYmplY3RFbmRWaXNpdE1lbWJlciwKICAg
ICBNYXBEYXRhU3RhcnRWaXNpdEVudHJ5LCBNYXBEYXRhRW5kVmlzaXRLZXksIE1hcERhdGFFbmRW
aXNpdFZhbHVlLApAQCAtMzc0LDcgKzM4NCw3IEBAIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJp
bmdEYXRhSXM4Qml0RmwKICAqICAgIDxmYWN0b3JTaXplOnVpbnQzMl90PiA8ZmFjdG9yOmJ5dGV7
ZmFjdG9yU2l6ZX0+IDxjcnRFeHBvbmVudFNpemU6dWludDMyX3Q+IDxjcnRFeHBvbmVudDpieXRl
e2NydEV4cG9uZW50U2l6ZX0+IDxjcnRDb2VmZmljaWVudFNpemU6dWludDMyX3Q+IDxjcnRDb2Vm
ZmljaWVudDpieXRle2NydENvZWZmaWNpZW50U2l6ZX0+CiAgKi8KIAotdHlwZWRlZiBzdGQ6OnBh
aXI8SlNDOjpKU1ZhbHVlLCBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZT4gRGVzZXJpYWxpemF0aW9u
UmVzdWx0OwordXNpbmcgRGVzZXJpYWxpemF0aW9uUmVzdWx0ID0gc3RkOjpwYWlyPEpTQzo6SlNW
YWx1ZSwgU2VyaWFsaXphdGlvblJldHVybkNvZGU+OwogCiBjbGFzcyBDbG9uZUJhc2UgewogcHJv
dGVjdGVkOgpAQCAtMzkxLDEzICs0MDEsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIHJldHVybiBz
Y29wZS5leGNlcHRpb24oKTsKICAgICB9CiAKLSAgICB2b2lkIHRocm93U3RhY2tPdmVyZmxvdygp
Ci0gICAgewotICAgICAgICBWTSYgdm0gPSBtX2V4ZWMtPnZtKCk7Ci0gICAgICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICAgICAgdGhyb3dFeGNlcHRpb24obV9l
eGVjLCBzY29wZSwgY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKG1fZXhlYykpOwotICAgIH0KLQog
ICAgIHZvaWQgZmFpbCgpCiAgICAgewogICAgICAgICBtX2ZhaWxlZCA9IHRydWU7CkBAIC03MzEs
NyArNzM0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgd3JpdGUoc3RhdGljX2Nhc3Q8dWludDMyX3Q+
KGFycmF5QnVmZmVyVmlldy0+Ynl0ZUxlbmd0aCgpKSk7CiAgICAgICAgIFJlZlB0cjxBcnJheUJ1
ZmZlcj4gYXJyYXlCdWZmZXIgPSBhcnJheUJ1ZmZlclZpZXctPnBvc3NpYmx5U2hhcmVkQnVmZmVy
KCk7CiAgICAgICAgIGlmICghYXJyYXlCdWZmZXIpIHsKLSAgICAgICAgICAgIGNvZGUgPSBWYWxp
ZGF0aW9uRXJyb3I7CisgICAgICAgICAgICBjb2RlID0gU2VyaWFsaXphdGlvblJldHVybkNvZGU6
OlZhbGlkYXRpb25FcnJvcjsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAg
ICAgICAgIEpTVmFsdWUgYnVmZmVyT2JqID0gdG9KUyhtX2V4ZWMsIGpzQ2FzdDxKU0RPTUdsb2Jh
bE9iamVjdCo+KG1fZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKSwgYXJyYXlCdWZmZXIuZ2V0
KCkpOwpAQCAtODQxLDEyICs4NDQsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIC8vIE1lc3Nh
Z2VQb3J0IG9iamVjdCBjb3VsZCBub3QgYmUgZm91bmQgaW4gdHJhbnNmZXJyZWQgbWVzc2FnZSBw
b3J0cwotICAgICAgICAgICAgICAgIGNvZGUgPSBWYWxpZGF0aW9uRXJyb3I7CisgICAgICAgICAg
ICAgICAgY29kZSA9IFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlOjpWYWxpZGF0aW9uRXJyb3I7CiAg
ICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBp
ZiAoQXJyYXlCdWZmZXIqIGFycmF5QnVmZmVyID0gdG9Qb3NzaWJseVNoYXJlZEFycmF5QnVmZmVy
KG9iaikpIHsKICAgICAgICAgICAgICAgICBpZiAoYXJyYXlCdWZmZXItPmlzTmV1dGVyZWQoKSkg
ewotICAgICAgICAgICAgICAgICAgICBjb2RlID0gVmFsaWRhdGlvbkVycm9yOworICAgICAgICAg
ICAgICAgICAgICBjb2RlID0gU2VyaWFsaXphdGlvblJldHVybkNvZGU6OlZhbGlkYXRpb25FcnJv
cjsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgIE9iamVjdFBvb2w6Oml0ZXJhdG9yIGluZGV4ID0gbV90cmFuc2ZlcnJl
ZEFycmF5QnVmZmVycy5maW5kKG9iaik7CkBAIC0xMjM0LDcgKzEyMzcsNyBAQCBTZXJpYWxpemF0
aW9uUmV0dXJuQ29kZSBDbG9uZVNlcmlhbGl6ZXI6CiAgICAgICAgICAgICBjYXNlIEFycmF5U3Rh
cnRTdGF0ZTogewogICAgICAgICAgICAgICAgIEFTU0VSVChpc0FycmF5KGluVmFsdWUpKTsKICAg
ICAgICAgICAgICAgICBpZiAoaW5wdXRPYmplY3RTdGFjay5zaXplKCkgPiBtYXhpbXVtRmlsdGVy
UmVjdXJzaW9uKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gU3RhY2tPdmVyZmxvd0Vycm9y
OworICAgICAgICAgICAgICAgICAgICByZXR1cm4gU2VyaWFsaXphdGlvblJldHVybkNvZGU6OlN0
YWNrT3ZlcmZsb3dFcnJvcjsKIAogICAgICAgICAgICAgICAgIEpTQXJyYXkqIGluQXJyYXkgPSBh
c0FycmF5KGluVmFsdWUpOwogICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IGluQXJy
YXktPmxlbmd0aCgpOwpAQCAtMTI3Myw5ICsxMjc2LDkgQEAgU2VyaWFsaXphdGlvblJldHVybkNv
ZGUgQ2xvbmVTZXJpYWxpemVyOgogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAg
IHdyaXRlKGluZGV4KTsKLSAgICAgICAgICAgICAgICBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZSB0
ZXJtaW5hbENvZGUgPSBTdWNjZXNzZnVsbHlDb21wbGV0ZWQ7CisgICAgICAgICAgICAgICAgYXV0
byB0ZXJtaW5hbENvZGUgPSBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZTo6U3VjY2Vzc2Z1bGx5Q29t
cGxldGVkOwogICAgICAgICAgICAgICAgIGlmIChkdW1wSWZUZXJtaW5hbChpblZhbHVlLCB0ZXJt
aW5hbENvZGUpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICh0ZXJtaW5hbENvZGUgIT0gU3Vj
Y2Vzc2Z1bGx5Q29tcGxldGVkKQorICAgICAgICAgICAgICAgICAgICBpZiAodGVybWluYWxDb2Rl
ICE9IFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlOjpTdWNjZXNzZnVsbHlDb21wbGV0ZWQpCiAgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGVybWluYWxDb2RlOwogICAgICAgICAgICAgICAg
ICAgICBpbmRleFN0YWNrLmxhc3QoKSsrOwogICAgICAgICAgICAgICAgICAgICBnb3RvIGFycmF5
U3RhcnRWaXNpdE1lbWJlcjsKQEAgLTEyOTEsNyArMTI5NCw3IEBAIFNlcmlhbGl6YXRpb25SZXR1
cm5Db2RlIENsb25lU2VyaWFsaXplcjoKICAgICAgICAgICAgIGNhc2UgT2JqZWN0U3RhcnRTdGF0
ZTogewogICAgICAgICAgICAgICAgIEFTU0VSVChpblZhbHVlLmlzT2JqZWN0KCkpOwogICAgICAg
ICAgICAgICAgIGlmIChpbnB1dE9iamVjdFN0YWNrLnNpemUoKSA+IG1heGltdW1GaWx0ZXJSZWN1
cnNpb24pCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBTdGFja092ZXJmbG93RXJyb3I7Cisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZTo6U3RhY2tP
dmVyZmxvd0Vycm9yOwogICAgICAgICAgICAgICAgIEpTT2JqZWN0KiBpbk9iamVjdCA9IGFzT2Jq
ZWN0KGluVmFsdWUpOwogICAgICAgICAgICAgICAgIGlmICghc3RhcnRPYmplY3QoaW5PYmplY3Qp
KQogICAgICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTEzMDAsNyArMTMwMyw3IEBAIFNlcmlh
bGl6YXRpb25SZXR1cm5Db2RlIENsb25lU2VyaWFsaXplcjoKICAgICAgICAgICAgICAgICAvLyB0
aGUgaW5wdXQgaXMgbm90IGFuIE9iamVjdCBvYmplY3QgdGhlbiB3ZSBzaG91bGQgdGhyb3cKICAg
ICAgICAgICAgICAgICAvLyBhIERhdGFDbG9uZUVycm9yLgogICAgICAgICAgICAgICAgIGlmIChp
bk9iamVjdC0+Y2xhc3NJbmZvKCkgIT0gSlNGaW5hbE9iamVjdDo6aW5mbygpKQotICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gRGF0YUNsb25lRXJyb3I7CisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZTo6RGF0YUNsb25lRXJyb3I7CiAgICAgICAgICAg
ICAgICAgaW5wdXRPYmplY3RTdGFjay5hcHBlbmQoaW5PYmplY3QpOwogICAgICAgICAgICAgICAg
IGluZGV4U3RhY2suYXBwZW5kKDApOwogICAgICAgICAgICAgICAgIHByb3BlcnR5U3RhY2suYXBw
ZW5kKFByb3BlcnR5TmFtZUFycmF5KG1fZXhlYywgUHJvcGVydHlOYW1lTW9kZTo6U3RyaW5ncykp
OwpAQCAtMTMyMSw3ICsxMzI0LDcgQEAgU2VyaWFsaXphdGlvblJldHVybkNvZGUgQ2xvbmVTZXJp
YWxpemVyOgogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpblZhbHVlID0gZ2V0
UHJvcGVydHkob2JqZWN0LCBwcm9wZXJ0aWVzW2luZGV4XSk7CiAgICAgICAgICAgICAgICAgaWYg
KHNob3VsZFRlcm1pbmF0ZSgpKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gRXhpc3RpbmdF
eGNlcHRpb25FcnJvcjsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFNlcmlhbGl6YXRpb25S
ZXR1cm5Db2RlOjpFeGlzdGluZ0V4Y2VwdGlvbkVycm9yOwogCiAgICAgICAgICAgICAgICAgaWYg
KCFpblZhbHVlKSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIFByb3BlcnR5IHdhcyByZW1vdmVk
IGR1cmluZyBzZXJpYWxpc2F0aW9uCkBAIC0xMzMxLDIwICsxMzM0LDIwIEBAIFNlcmlhbGl6YXRp
b25SZXR1cm5Db2RlIENsb25lU2VyaWFsaXplcjoKICAgICAgICAgICAgICAgICB3cml0ZShwcm9w
ZXJ0aWVzW2luZGV4XSk7CiAKICAgICAgICAgICAgICAgICBpZiAoc2hvdWxkVGVybWluYXRlKCkp
Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yOworICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gU2VyaWFsaXphdGlvblJldHVybkNvZGU6OkV4aXN0aW5n
RXhjZXB0aW9uRXJyb3I7CiAKLSAgICAgICAgICAgICAgICBTZXJpYWxpemF0aW9uUmV0dXJuQ29k
ZSB0ZXJtaW5hbENvZGUgPSBTdWNjZXNzZnVsbHlDb21wbGV0ZWQ7CisgICAgICAgICAgICAgICAg
YXV0byB0ZXJtaW5hbENvZGUgPSBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZTo6U3VjY2Vzc2Z1bGx5
Q29tcGxldGVkOwogICAgICAgICAgICAgICAgIGlmICghZHVtcElmVGVybWluYWwoaW5WYWx1ZSwg
dGVybWluYWxDb2RlKSkgewogICAgICAgICAgICAgICAgICAgICBzdGF0ZVN0YWNrLmFwcGVuZChP
YmplY3RFbmRWaXNpdE1lbWJlcik7CiAgICAgICAgICAgICAgICAgICAgIGdvdG8gc3RhdGVVbmtu
b3duOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAodGVybWluYWxDb2Rl
ICE9IFN1Y2Nlc3NmdWxseUNvbXBsZXRlZCkKKyAgICAgICAgICAgICAgICBpZiAodGVybWluYWxD
b2RlICE9IFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlOjpTdWNjZXNzZnVsbHlDb21wbGV0ZWQpCiAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiB0ZXJtaW5hbENvZGU7CiAgICAgICAgICAgICAgICAg
RkFMTFRIUk9VR0g7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBjYXNlIE9iamVjdEVuZFZp
c2l0TWVtYmVyOiB7CiAgICAgICAgICAgICAgICAgaWYgKHNob3VsZFRlcm1pbmF0ZSgpKQotICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gRXhpc3RpbmdFeGNlcHRpb25FcnJvcjsKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlOjpFeGlzdGluZ0V4Y2Vw
dGlvbkVycm9yOwogCiAgICAgICAgICAgICAgICAgaW5kZXhTdGFjay5sYXN0KCkrKzsKICAgICAg
ICAgICAgICAgICBnb3RvIG9iamVjdFN0YXJ0VmlzaXRNZW1iZXI7CkBAIC0xMzUyLDcgKzEzNTUs
NyBAQCBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZSBDbG9uZVNlcmlhbGl6ZXI6CiAgICAgICAgICAg
ICBtYXBTdGFydFN0YXRlOiB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGluVmFsdWUuaXNPYmpl
Y3QoKSk7CiAgICAgICAgICAgICAgICAgaWYgKGlucHV0T2JqZWN0U3RhY2suc2l6ZSgpID4gbWF4
aW11bUZpbHRlclJlY3Vyc2lvbikKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFN0YWNrT3Zl
cmZsb3dFcnJvcjsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFNlcmlhbGl6YXRpb25SZXR1
cm5Db2RlOjpTdGFja092ZXJmbG93RXJyb3I7CiAgICAgICAgICAgICAgICAgSlNNYXAqIGluTWFw
ID0ganNDYXN0PEpTTWFwKj4oaW5WYWx1ZSk7CiAgICAgICAgICAgICAgICAgaWYgKCFzdGFydE1h
cChpbk1hcCkpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTM5Niw3ICsxMzk5LDcg
QEAgU2VyaWFsaXphdGlvblJldHVybkNvZGUgQ2xvbmVTZXJpYWxpemVyOgogICAgICAgICAgICAg
c2V0U3RhcnRTdGF0ZTogewogICAgICAgICAgICAgICAgIEFTU0VSVChpblZhbHVlLmlzT2JqZWN0
KCkpOwogICAgICAgICAgICAgICAgIGlmIChpbnB1dE9iamVjdFN0YWNrLnNpemUoKSA+IG1heGlt
dW1GaWx0ZXJSZWN1cnNpb24pCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBTdGFja092ZXJm
bG93RXJyb3I7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBTZXJpYWxpemF0aW9uUmV0dXJu
Q29kZTo6U3RhY2tPdmVyZmxvd0Vycm9yOwogICAgICAgICAgICAgICAgIEpTU2V0KiBpblNldCA9
IGpzQ2FzdDxKU1NldCo+KGluVmFsdWUpOwogICAgICAgICAgICAgICAgIGlmICghc3RhcnRTZXQo
aW5TZXQpKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTE0MzEsOSArMTQzNCw5IEBA
IFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlIENsb25lU2VyaWFsaXplcjoKIAogICAgICAgICAgICAg
c3RhdGVVbmtub3duOgogICAgICAgICAgICAgY2FzZSBTdGF0ZVVua25vd246IHsKLSAgICAgICAg
ICAgICAgICBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZSB0ZXJtaW5hbENvZGUgPSBTdWNjZXNzZnVs
bHlDb21wbGV0ZWQ7CisgICAgICAgICAgICAgICAgYXV0byB0ZXJtaW5hbENvZGUgPSBTZXJpYWxp
emF0aW9uUmV0dXJuQ29kZTo6U3VjY2Vzc2Z1bGx5Q29tcGxldGVkOwogICAgICAgICAgICAgICAg
IGlmIChkdW1wSWZUZXJtaW5hbChpblZhbHVlLCB0ZXJtaW5hbENvZGUpKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIGlmICh0ZXJtaW5hbENvZGUgIT0gU3VjY2Vzc2Z1bGx5Q29tcGxldGVkKQorICAg
ICAgICAgICAgICAgICAgICBpZiAodGVybWluYWxDb2RlICE9IFNlcmlhbGl6YXRpb25SZXR1cm5D
b2RlOjpTdWNjZXNzZnVsbHlDb21wbGV0ZWQpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gdGVybWluYWxDb2RlOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
ICAgICB9CkBAIC0xNDU0LDEzICsxNDU3LDExIEBAIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlIENs
b25lU2VyaWFsaXplcjoKICAgICAgICAgc3RhdGVTdGFjay5yZW1vdmVMYXN0KCk7CiAgICAgfQog
ICAgIGlmIChtX2ZhaWxlZCkKLSAgICAgICAgcmV0dXJuIFVuc3BlY2lmaWVkRXJyb3I7CisgICAg
ICAgIHJldHVybiBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZTo6VW5zcGVjaWZpZWRFcnJvcjsKIAot
ICAgIHJldHVybiBTdWNjZXNzZnVsbHlDb21wbGV0ZWQ7CisgICAgcmV0dXJuIFNlcmlhbGl6YXRp
b25SZXR1cm5Db2RlOjpTdWNjZXNzZnVsbHlDb21wbGV0ZWQ7CiB9CiAKLXR5cGVkZWYgVmVjdG9y
PEpTQzo6QXJyYXlCdWZmZXJDb250ZW50cz4gQXJyYXlCdWZmZXJDb250ZW50c0FycmF5OwotCiBj
bGFzcyBDbG9uZURlc2VyaWFsaXplciA6IENsb25lQmFzZSB7CiBwdWJsaWM6CiAgICAgc3RhdGlj
IFN0cmluZyBkZXNlcmlhbGl6ZVN0cmluZyhjb25zdCBWZWN0b3I8dWludDhfdD4mIGJ1ZmZlcikK
QEAgLTE0ODksMTAgKzE0OTAsMTAgQEAgcHVibGljOgogICAgIHN0YXRpYyBEZXNlcmlhbGl6YXRp
b25SZXN1bHQgZGVzZXJpYWxpemUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4mIG1lc3NhZ2VQb3J0cywgQXJy
YXlCdWZmZXJDb250ZW50c0FycmF5KiBhcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXksIGNvbnN0IFZl
Y3Rvcjx1aW50OF90PiYgYnVmZmVyLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIGNv
bnN0IFZlY3RvcjxTdHJpbmc+IGJsb2JGaWxlUGF0aHMpCiAgICAgewogICAgICAgICBpZiAoIWJ1
ZmZlci5zaXplKCkpCi0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIoanNOdWxsKCks
IFVuc3BlY2lmaWVkRXJyb3IpOworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKGpz
TnVsbCgpLCBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZTo6VW5zcGVjaWZpZWRFcnJvcik7CiAgICAg
ICAgIENsb25lRGVzZXJpYWxpemVyIGRlc2VyaWFsaXplcihleGVjLCBnbG9iYWxPYmplY3QsIG1l
c3NhZ2VQb3J0cywgYXJyYXlCdWZmZXJDb250ZW50c0FycmF5LCBidWZmZXIsIGJsb2JVUkxzLCBi
bG9iRmlsZVBhdGhzKTsKICAgICAgICAgaWYgKCFkZXNlcmlhbGl6ZXIuaXNWYWxpZCgpKQotICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKEpTVmFsdWUoKSwgVmFsaWRhdGlvbkVycm9y
KTsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihKU1ZhbHVlKCksIFNlcmlhbGl6
YXRpb25SZXR1cm5Db2RlOjpWYWxpZGF0aW9uRXJyb3IpOwogICAgICAgICByZXR1cm4gZGVzZXJp
YWxpemVyLmRlc2VyaWFsaXplKCk7CiAgICAgfQogCkBAIC0xNTY5LDEzICsxNTcwLDYgQEAgcHJp
dmF0ZToKIAogICAgIERlc2VyaWFsaXphdGlvblJlc3VsdCBkZXNlcmlhbGl6ZSgpOwogCi0gICAg
dm9pZCB0aHJvd1ZhbGlkYXRpb25FcnJvcigpCi0gICAgewotICAgICAgICBWTSYgdm0gPSBtX2V4
ZWMtPnZtKCk7Ci0gICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
LSAgICAgICAgdGhyb3dUeXBlRXJyb3IobV9leGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJVbmFi
bGUgdG8gZGVzZXJpYWxpemUgZGF0YS4iKSk7Ci0gICAgfQotCiAgICAgYm9vbCBpc1ZhbGlkKCkg
Y29uc3QgeyByZXR1cm4gbV92ZXJzaW9uIDw9IEN1cnJlbnRWZXJzaW9uOyB9CiAKICAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4gYm9vbCByZWFkTGl0dGxlRW5kaWFuKFQmIHZhbHVlKQpAQCAtMjUy
OCw3ICsyNTIyLDcgQEAgRGVzZXJpYWxpemF0aW9uUmVzdWx0IENsb25lRGVzZXJpYWxpemVyOgog
ICAgICAgICBvYmplY3RTdGFydFN0YXRlOgogICAgICAgICBjYXNlIE9iamVjdFN0YXJ0U3RhdGU6
IHsKICAgICAgICAgICAgIGlmIChvdXRwdXRPYmplY3RTdGFjay5zaXplKCkgPiBtYXhpbXVtRmls
dGVyUmVjdXJzaW9uKQotICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihKU1Zh
bHVlKCksIFN0YWNrT3ZlcmZsb3dFcnJvcik7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bWFrZV9wYWlyKEpTVmFsdWUoKSwgU2VyaWFsaXphdGlvblJldHVybkNvZGU6OlN0YWNrT3ZlcmZs
b3dFcnJvcik7CiAgICAgICAgICAgICBKU09iamVjdCogb3V0T2JqZWN0ID0gY29uc3RydWN0RW1w
dHlPYmplY3QobV9leGVjLCBtX2dsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpOwogICAg
ICAgICAgICAgbV9nY0J1ZmZlci5hcHBlbmQob3V0T2JqZWN0KTsKICAgICAgICAgICAgIG91dHB1
dE9iamVjdFN0YWNrLmFwcGVuZChvdXRPYmplY3QpOwpAQCAtMjU2Myw3ICsyNTU3LDcgQEAgRGVz
ZXJpYWxpemF0aW9uUmVzdWx0IENsb25lRGVzZXJpYWxpemVyOgogICAgICAgICB9CiAgICAgICAg
IG1hcE9iamVjdFN0YXJ0U3RhdGU6IHsKICAgICAgICAgICAgIGlmIChvdXRwdXRPYmplY3RTdGFj
ay5zaXplKCkgPiBtYXhpbXVtRmlsdGVyUmVjdXJzaW9uKQotICAgICAgICAgICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfcGFpcihKU1ZhbHVlKCksIFN0YWNrT3ZlcmZsb3dFcnJvcik7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKEpTVmFsdWUoKSwgU2VyaWFsaXphdGlvblJl
dHVybkNvZGU6OlN0YWNrT3ZlcmZsb3dFcnJvcik7CiAgICAgICAgICAgICBKU01hcCogbWFwID0g
SlNNYXA6OmNyZWF0ZShtX2V4ZWMsIG1fZXhlYy0+dm0oKSwgbV9nbG9iYWxPYmplY3QtPm1hcFN0
cnVjdHVyZSgpKTsKICAgICAgICAgICAgIGlmIChVTkxJS0VMWShzY29wZS5leGNlcHRpb24oKSkp
CiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKQEAgLTI1OTQsNyArMjU4OCw3IEBAIERlc2Vy
aWFsaXphdGlvblJlc3VsdCBDbG9uZURlc2VyaWFsaXplcjoKIAogICAgICAgICBzZXRPYmplY3RT
dGFydFN0YXRlOiB7CiAgICAgICAgICAgICBpZiAob3V0cHV0T2JqZWN0U3RhY2suc2l6ZSgpID4g
bWF4aW11bUZpbHRlclJlY3Vyc2lvbikKLSAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjptYWtl
X3BhaXIoSlNWYWx1ZSgpLCBTdGFja092ZXJmbG93RXJyb3IpOworICAgICAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om1ha2VfcGFpcihKU1ZhbHVlKCksIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlOjpT
dGFja092ZXJmbG93RXJyb3IpOwogICAgICAgICAgICAgSlNTZXQqIHNldCA9IEpTU2V0OjpjcmVh
dGUobV9leGVjLCBtX2V4ZWMtPnZtKCksIG1fZ2xvYmFsT2JqZWN0LT5zZXRTdHJ1Y3R1cmUoKSk7
CiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoc2NvcGUuZXhjZXB0aW9uKCkpKQogICAgICAgICAg
ICAgICAgIGdvdG8gZXJyb3I7CkBAIC0yNjQzLDEwICsyNjM3LDEwIEBAIERlc2VyaWFsaXphdGlv
blJlc3VsdCBDbG9uZURlc2VyaWFsaXplcjoKICAgICB9CiAgICAgQVNTRVJUKG91dFZhbHVlKTsK
ICAgICBBU1NFUlQoIW1fZmFpbGVkKTsKLSAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIob3V0VmFs
dWUsIFN1Y2Nlc3NmdWxseUNvbXBsZXRlZCk7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKG91
dFZhbHVlLCBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZTo6U3VjY2Vzc2Z1bGx5Q29tcGxldGVkKTsK
IGVycm9yOgogICAgIGZhaWwoKTsKLSAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIoSlNWYWx1ZSgp
LCBWYWxpZGF0aW9uRXJyb3IpOworICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihKU1ZhbHVlKCks
IFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlOjpWYWxpZGF0aW9uRXJyb3IpOwogfQogCiBTZXJpYWxp
emVkU2NyaXB0VmFsdWU6On5TZXJpYWxpemVkU2NyaXB0VmFsdWUoKQpAQCAtMjY2OSwxOSArMjY2
MywxMiBAQCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OlNlcmlhbGl6ZWRTY3JpcHRWCiAgICAgICAg
IG1fYmxvYlVSTHMuYXBwZW5kKHVybC5pc29sYXRlZENvcHkoKSk7CiB9CiAKLXN0ZDo6dW5pcXVl
X3B0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU6OkFycmF5QnVmZmVyQ29udGVudHNBcnJheT4gU2Vy
aWFsaXplZFNjcmlwdFZhbHVlOjp0cmFuc2ZlckFycmF5QnVmZmVycygKLSAgICBFeGVjU3RhdGUq
IGV4ZWMsIFZlY3RvcjxSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4+JiBhcnJheUJ1ZmZlcnMsIFNl
cmlhbGl6YXRpb25SZXR1cm5Db2RlJiBjb2RlKQorRXhjZXB0aW9uT3I8c3RkOjp1bmlxdWVfcHRy
PEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6dHJhbnNm
ZXJBcnJheUJ1ZmZlcnMoY29uc3QgVmVjdG9yPFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPj4mIGFy
cmF5QnVmZmVycykKIHsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFycmF5QnVmZmVycy5z
aXplKCk7IGkrKykgewotICAgICAgICBpZiAoYXJyYXlCdWZmZXJzW2ldLT5pc05ldXRlcmVkKCkp
IHsKLSAgICAgICAgICAgIGNvZGUgPSBWYWxpZGF0aW9uRXJyb3I7Ci0gICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLSAgICAgICAgfQotICAgIH0KKyAgICBpZiAoYXJyYXlCdWZmZXJzLmlzRW1w
dHkoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBhdXRvIGNvbnRlbnRzID0gc3Rk
OjptYWtlX3VuaXF1ZTxBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+KGFycmF5QnVmZmVycy5zaXpl
KCkpOwotICAgIFZlY3RvcjxSZWY8RE9NV3JhcHBlcldvcmxkPj4gd29ybGRzOwotICAgIHN0YXRp
Y19jYXN0PEpTVk1DbGllbnREYXRhKj4oZXhlYy0+dm0oKS5jbGllbnREYXRhKS0+Z2V0QWxsV29y
bGRzKHdvcmxkcyk7CiAKICAgICBIYXNoU2V0PEpTQzo6QXJyYXlCdWZmZXIqPiB2aXNpdGVkOwog
ICAgIGZvciAoc2l6ZV90IGFycmF5QnVmZmVySW5kZXggPSAwOyBhcnJheUJ1ZmZlckluZGV4IDwg
YXJyYXlCdWZmZXJzLnNpemUoKTsgYXJyYXlCdWZmZXJJbmRleCsrKSB7CkBAIC0yNjkwLDI5ICsy
Njc3LDIwIEBAIHN0ZDo6dW5pcXVlX3B0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU6OkEKICAgICAg
ICAgdmlzaXRlZC5hZGQoYXJyYXlCdWZmZXJzW2FycmF5QnVmZmVySW5kZXhdLmdldCgpKTsKIAog
ICAgICAgICBib29sIHJlc3VsdCA9IGFycmF5QnVmZmVyc1thcnJheUJ1ZmZlckluZGV4XS0+dHJh
bnNmZXJUbyhjb250ZW50cy0+YXQoYXJyYXlCdWZmZXJJbmRleCkpOwotICAgICAgICBpZiAoIXJl
c3VsdCkgewotICAgICAgICAgICAgY29kZSA9IFZhbGlkYXRpb25FcnJvcjsKLSAgICAgICAgICAg
IHJldHVybiBudWxscHRyOwotICAgICAgICB9CisgICAgICAgIGlmICghcmVzdWx0KQorICAgICAg
ICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciB9OwogICAgIH0KLSAgICByZXR1cm4g
Y29udGVudHM7Ci19CiAKLVJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZTo6Y3JlYXRlKEV4ZWNTdGF0ZSYgZXhlYywgSlNWYWx1ZSB2YWx1ZSwgU2VyaWFs
aXphdGlvbkVycm9yTW9kZSB0aHJvd0V4Y2VwdGlvbnMpCi17Ci0gICAgVmVjdG9yPFJlZlB0cjxN
ZXNzYWdlUG9ydD4+IG1lc3NhZ2VQb3J0czsKLSAgICByZXR1cm4gU2VyaWFsaXplZFNjcmlwdFZh
bHVlOjpjcmVhdGUoZXhlYywgdmFsdWUsIG1lc3NhZ2VQb3J0cywgeyB9LCB0aHJvd0V4Y2VwdGlv
bnMpOworICAgIHJldHVybiBXVEZNb3ZlKGNvbnRlbnRzKTsKIH0KIAotUmVmUHRyPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoRXhlY1N0YXRlJiBl
eGVjLCBKU1ZhbHVlIHZhbHVlLCBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4mIG1lc3NhZ2VQ
b3J0cywgVmVjdG9yPFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPj4mJiBhcnJheUJ1ZmZlcnMsIFNl
cmlhbGl6YXRpb25FcnJvck1vZGUgdGhyb3dFeGNlcHRpb25zKQorUmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoRXhlY1N0YXRlJiBleGVj
LCBKU1ZhbHVlIHZhbHVlLCBTZXJpYWxpemF0aW9uRXJyb3JNb2RlIHRocm93RXhjZXB0aW9ucykK
IHsKICAgICBWZWN0b3I8dWludDhfdD4gYnVmZmVyOwogICAgIFZlY3RvcjxTdHJpbmc+IGJsb2JV
UkxzOwotICAgIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlIGNvZGUgPSBDbG9uZVNlcmlhbGl6ZXI6
OnNlcmlhbGl6ZSgmZXhlYywgdmFsdWUsIG1lc3NhZ2VQb3J0cywgYXJyYXlCdWZmZXJzLCBibG9i
VVJMcywgYnVmZmVyKTsKLQotICAgIHN0ZDo6dW5pcXVlX3B0cjxBcnJheUJ1ZmZlckNvbnRlbnRz
QXJyYXk+IGFycmF5QnVmZmVyQ29udGVudHNBcnJheTsKLSAgICBpZiAoIWFycmF5QnVmZmVycy5p
c0VtcHR5KCkgJiYgc2VyaWFsaXphdGlvbkRpZENvbXBsZXRlU3VjY2Vzc2Z1bGx5KGNvZGUpKQot
ICAgICAgICBhcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkgPSB0cmFuc2ZlckFycmF5QnVmZmVycygm
ZXhlYywgYXJyYXlCdWZmZXJzLCBjb2RlKTsKKyAgICBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0
Pj4gZHVtbXlNZXNzYWdlUG9ydHM7CisgICAgVmVjdG9yPFJlZlB0cjxKU0M6OkFycmF5QnVmZmVy
Pj4gZHVtbXlBcnJheUJ1ZmZlcnM7CisgICAgYXV0byBjb2RlID0gQ2xvbmVTZXJpYWxpemVyOjpz
ZXJpYWxpemUoJmV4ZWMsIHZhbHVlLCBkdW1teU1lc3NhZ2VQb3J0cywgZHVtbXlBcnJheUJ1ZmZl
cnMsIGJsb2JVUkxzLCBidWZmZXIpOwogCiAgICAgaWYgKHRocm93RXhjZXB0aW9ucyA9PSBUaHJv
d2luZykKICAgICAgICAgbWF5YmVUaHJvd0V4Y2VwdGlvbklmU2VyaWFsaXphdGlvbkZhaWxlZCgm
ZXhlYywgY29kZSk7CkBAIC0yNzIwLDcgKzI2OTgsNjEgQEAgUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4gU2VyaWFsaXplZAogICAgIGlmICghc2VyaWFsaXphdGlvbkRpZENvbXBsZXRlU3Vj
Y2Vzc2Z1bGx5KGNvZGUpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShXVEZNb3ZlKGJ1ZmZlciksIGJsb2JV
UkxzLCBXVEZNb3ZlKGFycmF5QnVmZmVyQ29udGVudHNBcnJheSkpKTsKKyAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBTZXJpYWxpemVkU2NyaXB0VmFsdWUoV1RGTW92ZShidWZmZXIpLCBibG9iVVJM
cywgbnVsbHB0cikpOworfQorCitFeGNlcHRpb24gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpleGNl
cHRpb25Gb3JTZXJpYWxpemF0aW9uRmFpbHVyZShTZXJpYWxpemF0aW9uUmV0dXJuQ29kZSBjb2Rl
KQoreworICAgIEFTU0VSVChjb2RlICE9IFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlOjpTdWNjZXNz
ZnVsbHlDb21wbGV0ZWQpOworICAgIAorICAgIHN3aXRjaCAoY29kZSkgeworICAgIGNhc2UgU2Vy
aWFsaXphdGlvblJldHVybkNvZGU6OlN0YWNrT3ZlcmZsb3dFcnJvcjoKKyAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IFN0YWNrT3ZlcmZsb3dFcnJvciB9OworICAgIGNhc2UgU2VyaWFsaXphdGlv
blJldHVybkNvZGU6OlZhbGlkYXRpb25FcnJvcjoKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7
IFR5cGVFcnJvciB9OworICAgIGNhc2UgU2VyaWFsaXphdGlvblJldHVybkNvZGU6OkRhdGFDbG9u
ZUVycm9yOgorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgREFUQV9DTE9ORV9FUlIgfTsKKyAg
ICBjYXNlIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlOjpFeGlzdGluZ0V4Y2VwdGlvbkVycm9yOgor
ICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJvciB9OworICAg
IGNhc2UgU2VyaWFsaXphdGlvblJldHVybkNvZGU6OlVuc3BlY2lmaWVkRXJyb3I6CisgICAgICAg
IHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IgfTsKKyAgICBkZWZhdWx0OgorICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJv
ciB9OworICAgIH0KK30KKworRXhjZXB0aW9uT3I8UmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4+
IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUg
dmFsdWUsIFZlY3RvcjxKU0M6OlN0cm9uZzxKU0M6OkpTT2JqZWN0Pj4mJiB0cmFuc2Zlckxpc3Qs
IFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYgbWVzc2FnZVBvcnRzKQoreworICAgIFZlY3Rv
cjxSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4+IGFycmF5QnVmZmVyczsKKyAgICBmb3IgKGF1dG8m
IHRyYW5zZmVyYWJsZSA6IHRyYW5zZmVyTGlzdCkgeworICAgICAgICBpZiAoUmVmUHRyPEFycmF5
QnVmZmVyPiBhcnJheUJ1ZmZlciA9IHRvUG9zc2libHlTaGFyZWRBcnJheUJ1ZmZlcih0cmFuc2Zl
cmFibGUuZ2V0KCkpKSB7CisgICAgICAgICAgICBpZiAoYXJyYXlCdWZmZXItPmlzTmV1dGVyZWQo
KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgREFUQV9DTE9ORV9FUlIgfTsK
KyAgICAgICAgICAgIGFycmF5QnVmZmVycy5hcHBlbmQoV1RGTW92ZShhcnJheUJ1ZmZlcikpOwor
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKFJlZlB0cjxNZXNz
YWdlUG9ydD4gcG9ydCA9IEpTTWVzc2FnZVBvcnQ6OnRvV3JhcHBlZCh0cmFuc2ZlcmFibGUuZ2V0
KCkpKSB7CisgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgY2hlY2sgaWYgdGhlIHBv
cnQgaXMgZGV0YWNoZWQgYXMgcGVyIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlw
YWdlL2luZnJhc3RydWN0dXJlLmh0bWwjaXN0cmFuc2ZlcmFibGUuCisgICAgICAgICAgICBtZXNz
YWdlUG9ydHMuYXBwZW5kKFdURk1vdmUocG9ydCkpOworICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgIH0KKworICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgREFUQV9DTE9ORV9FUlIgfTsK
KyAgICB9CisKKyAgICBWZWN0b3I8dWludDhfdD4gYnVmZmVyOworICAgIFZlY3RvcjxTdHJpbmc+
IGJsb2JVUkxzOworICAgIGF1dG8gY29kZSA9IENsb25lU2VyaWFsaXplcjo6c2VyaWFsaXplKCZz
dGF0ZSwgdmFsdWUsIG1lc3NhZ2VQb3J0cywgYXJyYXlCdWZmZXJzLCBibG9iVVJMcywgYnVmZmVy
KTsKKworICAgIGlmIChjb2RlICE9IFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlOjpTdWNjZXNzZnVs
bHlDb21wbGV0ZWQpCisgICAgICAgIHJldHVybiBleGNlcHRpb25Gb3JTZXJpYWxpemF0aW9uRmFp
bHVyZShjb2RlKTsKKworICAgIGF1dG8gYXJyYXlCdWZmZXJDb250ZW50c0FycmF5ID0gdHJhbnNm
ZXJBcnJheUJ1ZmZlcnMoYXJyYXlCdWZmZXJzKTsKKyAgICBpZiAoYXJyYXlCdWZmZXJDb250ZW50
c0FycmF5Lmhhc0V4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gYXJyYXlCdWZmZXJDb250ZW50
c0FycmF5LnJlbGVhc2VFeGNlcHRpb24oKTsKKworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZShXVEZNb3ZlKGJ1ZmZlciksIGJsb2JVUkxzLCBhcnJheUJ1ZmZl
ckNvbnRlbnRzQXJyYXkucmVsZWFzZVJldHVyblZhbHVlKCkpKTsKIH0KIAogUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoU3RyaW5nVmll
dyBzdHJpbmcpCkBAIC0yODA0LDIyICsyODM2LDIyIEBAIHZvaWQgU2VyaWFsaXplZFNjcmlwdFZh
bHVlOjptYXliZVRocm93RXgKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIGlmIChjb2RlID09IFN1Y2Nlc3Nm
dWxseUNvbXBsZXRlZCkKKyAgICBpZiAoY29kZSA9PSBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZTo6
U3VjY2Vzc2Z1bGx5Q29tcGxldGVkKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgc3dpdGNo
IChjb2RlKSB7Ci0gICAgY2FzZSBTdGFja092ZXJmbG93RXJyb3I6CisgICAgY2FzZSBTZXJpYWxp
emF0aW9uUmV0dXJuQ29kZTo6U3RhY2tPdmVyZmxvd0Vycm9yOgogICAgICAgICB0aHJvd0V4Y2Vw
dGlvbihleGVjLCBzY29wZSwgY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMpKTsKICAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBWYWxpZGF0aW9uRXJyb3I6CisgICAgY2FzZSBTZXJpYWxpemF0
aW9uUmV0dXJuQ29kZTo6VmFsaWRhdGlvbkVycm9yOgogICAgICAgICB0aHJvd1R5cGVFcnJvcihl
eGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJVbmFibGUgdG8gZGVzZXJpYWxpemUgZGF0YS4iKSk7
CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRGF0YUNsb25lRXJyb3I6CisgICAgY2FzZSBTZXJp
YWxpemF0aW9uUmV0dXJuQ29kZTo6RGF0YUNsb25lRXJyb3I6CiAgICAgICAgIHNldERPTUV4Y2Vw
dGlvbihleGVjLCBEQVRBX0NMT05FX0VSUik7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXhp
c3RpbmdFeGNlcHRpb25FcnJvcjoKKyAgICBjYXNlIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlOjpF
eGlzdGluZ0V4Y2VwdGlvbkVycm9yOgogICAgICAgICBicmVhazsKLSAgICBjYXNlIFVuc3BlY2lm
aWVkRXJyb3I6CisgICAgY2FzZSBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZTo6VW5zcGVjaWZpZWRF
cnJvcjoKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CkBAIC0yODI4LDcgKzI4NjAsNyBAQCB2b2lkIFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTo6bWF5YmVUaHJvd0V4CiAKIGJvb2wgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpzZXJpYWxpemF0
aW9uRGlkQ29tcGxldGVTdWNjZXNzZnVsbHkoU2VyaWFsaXphdGlvblJldHVybkNvZGUgY29kZSkK
IHsKLSAgICByZXR1cm4gKGNvZGUgPT0gU3VjY2Vzc2Z1bGx5Q29tcGxldGVkKTsKKyAgICByZXR1
cm4gKGNvZGUgPT0gU2VyaWFsaXphdGlvblJldHVybkNvZGU6OlN1Y2Nlc3NmdWxseUNvbXBsZXRl
ZCk7CiB9CiAKIHVpbnQzMl90IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6d2lyZUZvcm1hdFZlcnNp
b24oKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmgJKHJldmlzaW9uIDIwOTI3MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsy
Niw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKICNpbmNs
dWRlIDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgogI2luY2x1ZGUgPGhlYXAvU3Ryb25nLmg+CiAj
aW5jbHVkZSA8cnVudGltZS9BcnJheUJ1ZmZlci5oPgpAQCAtNDIsMjUgKzQzLDE4IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSURCVmFsdWU7CiBjbGFzcyBNZXNzYWdlUG9ydDsKLSAK
LWVudW0gU2VyaWFsaXphdGlvblJldHVybkNvZGUgewotICAgIFN1Y2Nlc3NmdWxseUNvbXBsZXRl
ZCwKLSAgICBTdGFja092ZXJmbG93RXJyb3IsCi0gICAgSW50ZXJydXB0ZWRFeGVjdXRpb25FcnJv
ciwKLSAgICBWYWxpZGF0aW9uRXJyb3IsCi0gICAgRXhpc3RpbmdFeGNlcHRpb25FcnJvciwKLSAg
ICBEYXRhQ2xvbmVFcnJvciwKLSAgICBVbnNwZWNpZmllZEVycm9yCi19OwotICAgIAorY2xhc3Mg
U2hhcmVkQnVmZmVyOworZW51bSBjbGFzcyBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZTsKKwogZW51
bSBTZXJpYWxpemF0aW9uRXJyb3JNb2RlIHsgTm9uVGhyb3dpbmcsIFRocm93aW5nIH07CiAKLWNs
YXNzIFNoYXJlZEJ1ZmZlcjsKK3VzaW5nIEFycmF5QnVmZmVyQ29udGVudHNBcnJheSA9IFZlY3Rv
cjxKU0M6OkFycmF5QnVmZmVyQ29udGVudHM+OwogCiBjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFs
dWUgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB7
CiBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+IGNyZWF0ZShKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSwgU2VyaWFsaXph
dGlvbkVycm9yTW9kZSA9IFRocm93aW5nKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVm
UHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gY3JlYXRlKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpK
U1ZhbHVlLCBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4mLCBWZWN0b3I8UmVmUHRyPEpTQzo6
QXJyYXlCdWZmZXI+PiYmLCBTZXJpYWxpemF0aW9uRXJyb3JNb2RlID0gVGhyb3dpbmcpOworCisg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+PiBjcmVhdGUoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUsIFZlY3RvcjxKU0M6
OlN0cm9uZzxKU0M6OkpTT2JqZWN0Pj4mJiwgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+Jik7
CiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4gY3JlYXRlKFN0cmluZ1ZpZXcpOwogICAgIHN0YXRpYyBSZWY8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiBhZG9wdChWZWN0b3I8dWludDhfdD4mJiBidWZmZXIpCkBAIC0xMDAsMTAgKzk0LDExIEBA
IHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB+U2VyaWFsaXplZFNjcmlwdFZhbHVlKCk7CiAK
IHByaXZhdGU6Ci0gICAgdHlwZWRlZiBWZWN0b3I8SlNDOjpBcnJheUJ1ZmZlckNvbnRlbnRzPiBB
cnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk7CiAgICAgc3RhdGljIHZvaWQgbWF5YmVUaHJvd0V4Y2Vw
dGlvbklmU2VyaWFsaXphdGlvbkZhaWxlZChKU0M6OkV4ZWNTdGF0ZSosIFNlcmlhbGl6YXRpb25S
ZXR1cm5Db2RlKTsKICAgICBzdGF0aWMgYm9vbCBzZXJpYWxpemF0aW9uRGlkQ29tcGxldGVTdWNj
ZXNzZnVsbHkoU2VyaWFsaXphdGlvblJldHVybkNvZGUpOwotICAgIHN0YXRpYyBzdGQ6OnVuaXF1
ZV9wdHI8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5PiB0cmFuc2ZlckFycmF5QnVmZmVycyhKU0M6
OkV4ZWNTdGF0ZSosIFZlY3RvcjxSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4+JiwgU2VyaWFsaXph
dGlvblJldHVybkNvZGUmKTsKKyAgICBzdGF0aWMgRXhjZXB0aW9uIGV4Y2VwdGlvbkZvclNlcmlh
bGl6YXRpb25GYWlsdXJlKFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlKTsKKworICAgIHN0YXRpYyBF
eGNlcHRpb25PcjxzdGQ6OnVuaXF1ZV9wdHI8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5Pj4gdHJh
bnNmZXJBcnJheUJ1ZmZlcnMoY29uc3QgVmVjdG9yPFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPj4m
KTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShWZWN0b3I8dW5z
aWduZWQgY2hhcj4mJik7CiAgICAgU2VyaWFsaXplZFNjcmlwdFZhbHVlKFZlY3Rvcjx1bnNpZ25l
ZCBjaGFyPiYmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIHN0ZDo6dW5pcXVlX3B0
cjxBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+JiYpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbQkocmV2aXNpb24gMjA5MjcxKQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtCSh3b3Jr
aW5nIGNvcHkpCkBAIC01OTcsNiArNTk3LDcgQEAgc3ViIElzUmVmUHRyVHlwZQogICAgIHJldHVy
biAwIGlmICRvYmplY3QtPklzU3RyaW5nVHlwZSgkdHlwZSk7CiAgICAgcmV0dXJuIDAgaWYgJHR5
cGUtPmlzVW5pb247CiAgICAgcmV0dXJuIDAgaWYgJHR5cGUtPm5hbWUgZXEgImFueSI7CisgICAg
cmV0dXJuIDAgaWYgJHR5cGUtPm5hbWUgZXEgIm9iamVjdCI7CiAKICAgICByZXR1cm4gMTsKIH0K
QEAgLTg2Miw2ICs4NjMsNyBAQCBzdWIgSXNCdWlsdGluVHlwZQogICAgIHJldHVybiAxIGlmICRv
YmplY3QtPklzVHlwZWRBcnJheVR5cGUoJHR5cGUpOwogICAgIHJldHVybiAxIGlmICR0eXBlLT5p
c1VuaW9uOwogICAgIHJldHVybiAxIGlmICR0eXBlLT5uYW1lIGVxICJhbnkiOworICAgIHJldHVy
biAxIGlmICR0eXBlLT5uYW1lIGVxICJvYmplY3QiOwogICAgIHJldHVybiAxIGlmICR0eXBlLT5u
YW1lIGVxICJCdWZmZXJTb3VyY2UiOwogICAgIHJldHVybiAxIGlmICR0eXBlLT5uYW1lIGVxICJQ
cm9taXNlIjsKICAgICByZXR1cm4gMSBpZiAkdHlwZS0+bmFtZSBlcSAiWFBhdGhOU1Jlc29sdmVy
IjsgICAgCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JKUy5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JKUy5wbQkocmV2aXNpb24gMjA5MjcxKQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHdvcmtpbmcgY29weSkKQEAgLTI3OSw2
ICsyNzksNyBAQCBzdWIgQWRkVG9JbmNsdWRlc0ZvcklETFR5cGUKICAgICByZXR1cm4gaWYgJGNv
ZGVHZW5lcmF0b3ItPklzU3RyaW5nVHlwZSgkdHlwZSk7CiAgICAgcmV0dXJuIGlmICRjb2RlR2Vu
ZXJhdG9yLT5Jc1R5cGVkQXJyYXlUeXBlKCR0eXBlKTsKICAgICByZXR1cm4gaWYgJHR5cGUtPm5h
bWUgZXEgImFueSI7CisgICAgcmV0dXJuIGlmICR0eXBlLT5uYW1lIGVxICJvYmplY3QiOwogCiAg
ICAgaWYgKCR0eXBlLT5pc1VuaW9uKSB7CiAgICAgICAgIEFkZFRvSW5jbHVkZXMoIjx3dGYvVmFy
aWFudC5oPiIsICRpbmNsdWRlc1JlZiwgJGNvbmRpdGlvbmFsKTsKQEAgLTQ5NzAsNiArNDk3MSw3
IEBAIG15ICVuYXRpdmVUeXBlID0gKAogICAgICJTZXJpYWxpemVkU2NyaXB0VmFsdWUiID0+ICJS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiIsCiAgICAgIlhQYXRoTlNSZXNvbHZlciIgPT4g
IlJlZlB0cjxYUGF0aE5TUmVzb2x2ZXI+IiwKICAgICAiYW55IiA9PiAiSlNDOjpKU1ZhbHVlIiwK
KyAgICAib2JqZWN0IiA9PiAiSlNDOjpTdHJvbmc8SlNDOjpKU09iamVjdD4iLAogICAgICJib29s
ZWFuIiA9PiAiYm9vbCIsCiAgICAgImJ5dGUiID0+ICJpbnQ4X3QiLAogICAgICJkb3VibGUiID0+
ICJkb3VibGUiLApAQCAtNTA1OCw2ICs1MDYwLDcgQEAgc3ViIEdldEJhc2VJRExUeXBlCiAgICAg
ICAgICJET01TdHJpbmciID0+ICJJRExET01TdHJpbmciLAogICAgICAgICAiQnl0ZVN0cmluZyIg
PT4gIklETEJ5dGVTdHJpbmciLAogICAgICAgICAiVVNWU3RyaW5nIiA9PiAiSURMVVNWU3RyaW5n
IiwKKyAgICAgICAgIm9iamVjdCIgPT4gIklETE9iamVjdCIsCiAgICAgICAgIAogICAgICAgICAj
IE5vbi1XZWJJREwgZXh0ZW5zaW9ucwogICAgICAgICAiRGF0ZSIgPT4gIklETERhdGUiLApJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlk
bAkocmV2aXNpb24gMjA5MjcxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Rlc3RPYmouaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yMzMsNiArMjMzLDcgQEAgZW51bSBU
ZXN0Q29uZmlkZW5jZSB7ICJoaWdoIiwgImtpbmRhLWxvdwogICAgIHZvaWQgICAgbWV0aG9kV2l0
aE9wdGlvbmFsQm9vbGVhbihvcHRpb25hbCBib29sZWFuIGIpOwogICAgIHZvaWQgICAgbWV0aG9k
V2l0aE9wdGlvbmFsQm9vbGVhbklzRmFsc2Uob3B0aW9uYWwgYm9vbGVhbiBiID0gZmFsc2UpOwog
ICAgIHZvaWQgICAgbWV0aG9kV2l0aE9wdGlvbmFsQW55KG9wdGlvbmFsIGFueSBhKTsKKyAgICB2
b2lkICAgIG1ldGhvZFdpdGhPcHRpb25hbE9iamVjdChvcHRpb25hbCBvYmplY3QgYSk7CiAgICAg
dm9pZCAgICBtZXRob2RXaXRoT3B0aW9uYWxOdWxsYWJsZVdyYXBwZXIob3B0aW9uYWwgVGVzdE9i
aj8gb2JqKTsKICAgICB2b2lkICAgIG1ldGhvZFdpdGhPcHRpb25hbE51bGxhYmxlV3JhcHBlcklz
TnVsbChvcHRpb25hbCBUZXN0T2JqPyBvYmogPSBudWxsKTsKICAgICB2b2lkICAgIG1ldGhvZFdp
dGhPcHRpb25hbFhQYXRoTlNSZXNvbHZlcihvcHRpb25hbCBYUGF0aE5TUmVzb2x2ZXI/IHJlc29s
dmVyKTsKQEAgLTI3Miw2ICsyNzMsNyBAQCBlbnVtIFRlc3RDb25maWRlbmNlIHsgImhpZ2giLCAi
a2luZGEtbG93CiAgICAgW0NhY2hlZEF0dHJpYnV0ZV0gcmVhZG9ubHkgYXR0cmlidXRlIGFueSBj
YWNoZWRBdHRyaWJ1dGUyOwogICAgIAogICAgIGF0dHJpYnV0ZSBhbnkgYW55QXR0cmlidXRlOwor
ICAgIGF0dHJpYnV0ZSBvYmplY3Qgb2JqZWN0QXR0cmlidXRlOwogCiAgICAgLy8gT3ZlcmxvYWRz
CiAgICAgdm9pZCAgICBvdmVybG9hZGVkTWV0aG9kKFRlc3RPYmo/IG9iakFyZywgRE9NU3RyaW5n
IHN0ckFyZyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0T2JqLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAkocmV2aXNpb24gMjA5MjcxKQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEwMTUsNiArMTAxNSw3IEBAIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3QKIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEJvb2xlYW4oSlNDOjpFeGVjU3RhdGUqKTsK
IEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk1ldGhvZFdpdGhPcHRpb25hbEJvb2xlYW5Jc0ZhbHNlKEpTQzo6RXhlY1N0YXRlKik7CiBK
U0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RXaXRoT3B0aW9uYWxBbnkoSlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhP
cHRpb25hbE9iamVjdChKU0M6OkV4ZWNTdGF0ZSopOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsTnVs
bGFibGVXcmFwcGVyKEpTQzo6RXhlY1N0YXRlKik7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxOdWxs
YWJsZVdyYXBwZXJJc051bGwoSlNDOjpFeGVjU3RhdGUqKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25h
bFhQYXRoTlNSZXNvbHZlcihKU0M6OkV4ZWNTdGF0ZSopOwpAQCAtMTI0MCw2ICsxMjQxLDggQEAg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDYWNoZWRBdHRyaQogSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpDYWNoZWRBdHRyaWJ1dGUyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpBbnlBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBK
U0M6OlByb3BlcnR5TmFtZSk7CiBib29sIHNldEpTVGVzdE9iakFueUF0dHJpYnV0ZShKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpPYmplY3RBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Citib29sIHNldEpTVGVz
dE9iak9iamVjdEF0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUs
IEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb250
ZW50RG9jdW1lbnQoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlBy
b3BlcnR5TmFtZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iak11dGFibGVQb2ludChK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsK
IGJvb2wgc2V0SlNUZXN0T2JqTXV0YWJsZVBvaW50KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CkBAIC0xNTQwLDYgKzE1NDMsNyBAQCBz
dGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0T2JqUHJvCiAgICAgeyAiY2FjaGVkQXR0
cmlidXRlMSIsIFJlYWRPbmx5IHwgQ3VzdG9tQWNjZXNzb3IsIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqQ2Fj
aGVkQXR0cmlidXRlMSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KDApIH0gfSwKICAgICB7ICJjYWNoZWRBdHRyaWJ1dGUyIiwgUmVhZE9ubHkg
fCBDdXN0b21BY2Nlc3NvciwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFBy
b3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpDYWNoZWRBdHRyaWJ1dGUyKSwgKGlu
dHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9
LAogICAgIHsgImFueUF0dHJpYnV0ZSIsIEN1c3RvbUFjY2Vzc29yLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9i
akFueUF0dHJpYnV0ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KHNldEpTVGVzdE9iakFueUF0dHJpYnV0ZSkgfSB9LAorICAgIHsgIm9iamVj
dEF0dHJpYnV0ZSIsIEN1c3RvbUFjY2Vzc29yLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9iak9iamVjdEF0dHJp
YnV0ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1
bmM+KHNldEpTVGVzdE9iak9iamVjdEF0dHJpYnV0ZSkgfSB9LAogICAgIHsgImNvbnRlbnREb2N1
bWVudCIsIFJlYWRPbmx5IHwgQ3VzdG9tQWNjZXNzb3IsIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqQ29udGVu
dERvY3VtZW50KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZh
bHVlRnVuYz4oMCkgfSB9LAogICAgIHsgIm11dGFibGVQb2ludCIsIEN1c3RvbUFjY2Vzc29yLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1
ZUZ1bmM+KGpzVGVzdE9iak11dGFibGVQb2ludCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0
UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdE9iak11dGFibGVQb2ludCkgfSB9
LAogICAgIHsgImltbXV0YWJsZVBvaW50IiwgQ3VzdG9tQWNjZXNzb3IsIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0
T2JqSW1tdXRhYmxlUG9pbnQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xv
dDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RPYmpJbW11dGFibGVQb2ludCkgfSB9LApAQCAtMTY1
Miw2ICsxNjU2LDcgQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE9ialBybwog
ICAgIHsgIm1ldGhvZFdpdGhPcHRpb25hbEJvb2xlYW4iLCBKU0M6OkZ1bmN0aW9uLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQm9vbGVhbiksIChpbnRwdHJfdCkgKDAp
IH0gfSwKICAgICB7ICJtZXRob2RXaXRoT3B0aW9uYWxCb29sZWFuSXNGYWxzZSIsIEpTQzo6RnVu
Y3Rpb24sIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlv
bj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxCb29sZWFuSXNG
YWxzZSksIChpbnRwdHJfdCkgKDApIH0gfSwKICAgICB7ICJtZXRob2RXaXRoT3B0aW9uYWxBbnki
LCBKU0M6OkZ1bmN0aW9uLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0
aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFs
QW55KSwgKGludHB0cl90KSAoMCkgfSB9LAorICAgIHsgIm1ldGhvZFdpdGhPcHRpb25hbE9iamVj
dCIsIEpTQzo6RnVuY3Rpb24sIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxO
YXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9u
YWxPYmplY3QpLCAoaW50cHRyX3QpICgwKSB9IH0sCiAgICAgeyAibWV0aG9kV2l0aE9wdGlvbmFs
TnVsbGFibGVXcmFwcGVyIiwgSlNDOjpGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90
KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1l
dGhvZFdpdGhPcHRpb25hbE51bGxhYmxlV3JhcHBlciksIChpbnRwdHJfdCkgKDApIH0gfSwKICAg
ICB7ICJtZXRob2RXaXRoT3B0aW9uYWxOdWxsYWJsZVdyYXBwZXJJc051bGwiLCBKU0M6OkZ1bmN0
aW9uLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+
KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsTnVsbGFibGVXcmFw
cGVySXNOdWxsKSwgKGludHB0cl90KSAoMCkgfSB9LAogICAgIHsgIm1ldGhvZFdpdGhPcHRpb25h
bFhQYXRoTlNSZXNvbHZlciIsIEpTQzo6RnVuY3Rpb24sIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25N
ZXRob2RXaXRoT3B0aW9uYWxYUGF0aE5TUmVzb2x2ZXIpLCAoaW50cHRyX3QpICgwKSB9IH0sCkBA
IC0zMDI1LDYgKzMwMzAsMjIgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdE9iakFueUF0
dHJpYgogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK3N0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rl
c3RPYmpPYmplY3RBdHRyaWJ1dGVHZXR0ZXIoRXhlY1N0YXRlJiwgSlNUZXN0T2JqJiwgVGhyb3dT
Y29wZSYgdGhyb3dTY29wZSk7CisKK0VuY29kZWRKU1ZhbHVlIGpzVGVzdE9iak9iamVjdEF0dHJp
YnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkKK3sKKyAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RPYmo+OjphdHRyaWJ1dGU8
anNUZXN0T2JqT2JqZWN0QXR0cmlidXRlR2V0dGVyPihzdGF0ZSwgdGhpc1ZhbHVlLCAib2JqZWN0
QXR0cmlidXRlIik7Cit9CisKK3N0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RPYmpPYmplY3RB
dHRyaWJ1dGVHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0T2JqJiB0aGlzT2JqZWN0LCBU
aHJvd1Njb3BlJiB0aHJvd1Njb3BlKQoreworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsK
KyAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURMT2JqZWN0PihpbXBsLm9iamVj
dEF0dHJpYnV0ZSgpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiBzdGF0aWMgaW5saW5lIEpT
VmFsdWUganNUZXN0T2JqQ29udGVudERvY3VtZW50R2V0dGVyKEV4ZWNTdGF0ZSYsIEpTVGVzdE9i
aiYsIFRocm93U2NvcGUmIHRocm93U2NvcGUpOwogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpD
b250ZW50RG9jdW1lbnQoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpCkBAIC00NjIzLDYgKzQ2NDQsMjUgQEAgc3RhdGljIGlubGluZSBib29s
IHNldEpTVGVzdE9iakFueUF0dHJpYgogfQogCiAKK3N0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rl
c3RPYmpPYmplY3RBdHRyaWJ1dGVGdW5jdGlvbihFeGVjU3RhdGUmLCBKU1Rlc3RPYmomLCBKU1Zh
bHVlLCBUaHJvd1Njb3BlJik7CisKK2Jvb2wgc2V0SlNUZXN0T2JqT2JqZWN0QXR0cmlidXRlKEV4
ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlKQoreworICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdE9iaj46OnNl
dEF0dHJpYnV0ZTxzZXRKU1Rlc3RPYmpPYmplY3RBdHRyaWJ1dGVGdW5jdGlvbj4oc3RhdGUsIHRo
aXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAib2JqZWN0QXR0cmlidXRlIik7Cit9CisKK3N0YXRpYyBp
bmxpbmUgYm9vbCBzZXRKU1Rlc3RPYmpPYmplY3RBdHRyaWJ1dGVGdW5jdGlvbihFeGVjU3RhdGUm
IHN0YXRlLCBKU1Rlc3RPYmomIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFRocm93U2NvcGUm
IHRocm93U2NvcGUpCit7CisgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBVTlVTRURfUEFS
QU0odGhyb3dTY29wZSk7CisgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwor
ICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETE9iamVjdD4oc3RhdGUsIHZhbHVlKTsK
KyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKKyAgICBpbXBsLnNl
dE9iamVjdEF0dHJpYnV0ZShXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CisgICAgcmV0dXJuIHRydWU7
Cit9CisKKwogc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdE9iak11dGFibGVQb2ludEZ1bmN0
aW9uKEV4ZWNTdGF0ZSYsIEpTVGVzdE9iaiYsIEpTVmFsdWUsIFRocm93U2NvcGUmKTsKIAogYm9v
bCBzZXRKU1Rlc3RPYmpNdXRhYmxlUG9pbnQoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCkBAIC02NDMzLDYgKzY0
NzMsMjQgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKK3N0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhP
cHRpb25hbE9iamVjdENhbGxlcihKU0M6OkV4ZWNTdGF0ZSosIEpTVGVzdE9iaiosIEpTQzo6VGhy
b3dTY29wZSYpOworCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsT2JqZWN0KEV4ZWNTdGF0ZSogc3RhdGUpCit7
CisgICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0T2JqPjo6Y2FsbE9wZXJhdGlvbjxqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbE9iamVjdENhbGxlcj4oc3Rh
dGUsICJtZXRob2RXaXRoT3B0aW9uYWxPYmplY3QiKTsKK30KKworc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlv
bmFsT2JqZWN0Q2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNUZXN0T2JqKiBjYXN0ZWRU
aGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCit7CisgICAgVU5VU0VEX1BBUkFNKHN0
YXRlKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CisgICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPndyYXBwZWQoKTsKKyAgICBhdXRvIGEgPSBzdGF0ZS0+YXJndW1lbnQoMCkuaXNV
bmRlZmluZWQoKSA/IHN0ZDo6b3B0aW9uYWw8SlNDOjpTdHJvbmc8SlNDOjpKU09iamVjdD4+KCkg
OiBjb252ZXJ0PElETE9iamVjdD4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkp
OworICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
CisgICAgaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxPYmplY3QoV1RGTW92ZShhKSk7CisgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKK30KKwogc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9w
dGlvbmFsTnVsbGFibGVXcmFwcGVyQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiwgSlNUZXN0T2JqKiwg
SlNDOjpUaHJvd1Njb3BlJik7CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxOdWxsYWJsZVdyYXBwZXIoRXhl
Y1N0YXRlKiBzdGF0ZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FeGNlcHRpb25Db2RlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0V4Y2VwdGlvbkNvZGUuaAkocmV2aXNp
b24gMjA5MjcxKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0V4Y2VwdGlvbkNvZGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNzIsNiArNzIsMTIgQEAgZW51bSB7CiAgICAgT3BlcmF0aW9uRXJyb3IsCiAg
ICAgTm90QWxsb3dlZEVycm9yLAogCisgICAgLy8gTm9uLXN0YW5kYXJkIGVycm9ycworICAgIFN0
YWNrT3ZlcmZsb3dFcnJvciwKKworICAgIC8vIFVzZWQgdG8gaW5kaWNhdGUgdG8gdGhlIGJpbmRp
bmdzIHRoYXQgYSBKUyBleGNlcHRpb24gd2FzIHRocm93biBiZWxvdyBhbmQgaXQgc2hvdWxkIGJl
IHByb3BvZ2F0ZWQuCisgICAgRXhpc3RpbmdFeGNlcHRpb25FcnJvciwKKwogICAgIC8vIFdlYklE
TCBleGNlcHRpb24gdHlwZXMsIGhhbmRsZWQgYnkgdGhlIGJpbmRpbmcgbGF5ZXIuCiAgICAgLy8g
RklYTUU6IEFkZCBHZW5lcmFsRXJyb3IsIEV2YWxFcnJvciwgZXRjLiB3aGVuIGltcGxlbWVudGVk
IGluIHRoZSBiaW5kaW5ncy4KICAgICBUeXBlRXJyb3IgPSAxMDUsCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9kb20vTWVzc2FnZVBvcnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Rv
bS9NZXNzYWdlUG9ydC5jcHAJKHJldmlzaW9uIDIwOTI3MSkKKysrIFNvdXJjZS9XZWJDb3JlL2Rv
bS9NZXNzYWdlUG9ydC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDggKzUxLDEzIEBAIE1lc3Nh
Z2VQb3J0Ojp+TWVzc2FnZVBvcnQoKQogICAgICAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQt
PmRlc3Ryb3llZE1lc3NhZ2VQb3J0KCp0aGlzKTsKIH0KIAotRXhjZXB0aW9uT3I8dm9pZD4gTWVz
c2FnZVBvcnQ6OnBvc3RNZXNzYWdlKFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYgbWVz
c2FnZSwgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+JiYgcG9ydHMpCitFeGNlcHRpb25Pcjx2
b2lkPiBNZXNzYWdlUG9ydDo6cG9zdE1lc3NhZ2UoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6
OkpTVmFsdWUgbWVzc2FnZVZhbHVlLCBWZWN0b3I8SlNDOjpTdHJvbmc8SlNDOjpKU09iamVjdD4+
JiYgdHJhbnNmZXIpCiB7CisgICAgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+IHBvcnRzOwor
ICAgIGF1dG8gbWVzc2FnZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKHN0YXRlLCBt
ZXNzYWdlVmFsdWUsIFdURk1vdmUodHJhbnNmZXIpLCBwb3J0cyk7CisgICAgaWYgKG1lc3NhZ2Uu
aGFzRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBtZXNzYWdlLnJlbGVhc2VFeGNlcHRpb24o
KTsKKwogICAgIGlmICghaXNFbnRhbmdsZWQoKSkKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICBB
U1NFUlQobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKQEAgLTY5LDcgKzc0LDcgQEAgRXhjZXB0
aW9uT3I8dm9pZD4gTWVzc2FnZVBvcnQ6OnBvc3RNZXNzYQogICAgICAgICAgICAgcmV0dXJuIGRp
c2VudGFuZ2xlUmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKICAgICAgICAgY2hhbm5lbHMgPSBk
aXNlbnRhbmdsZVJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKICAgICB9Ci0gICAgbV9lbnRh
bmdsZWRDaGFubmVsLT5wb3N0TWVzc2FnZVRvUmVtb3RlKFdURk1vdmUobWVzc2FnZSksIFdURk1v
dmUoY2hhbm5lbHMpKTsKKyAgICBtX2VudGFuZ2xlZENoYW5uZWwtPnBvc3RNZXNzYWdlVG9SZW1v
dGUobWVzc2FnZS5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgV1RGTW92ZShjaGFubmVscykpOwogICAg
IHJldHVybiB7IH07CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5oCShyZXZpc2lv
biAyMDkyNzEpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuaAkod29ya2luZyBj
b3B5KQpAQCAtMzAsNiArMzAsMTIgQEAKICNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgogI2luY2x1
ZGUgIk1lc3NhZ2VQb3J0Q2hhbm5lbC5oIgogCituYW1lc3BhY2UgSlNDIHsKK2NsYXNzIEV4ZWNT
dGF0ZTsKK2NsYXNzIEpTT2JqZWN0OworY2xhc3MgSlNWYWx1ZTsKK30KKwogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBGcmFtZTsKQEAgLTM5LDcgKzQ1LDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBSZWY8TWVzc2FnZVBvcnQ+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IE1lc3NhZ2VQb3J0KHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQpKTsgfQogICAgIHZpcnR1YWwgfk1lc3NhZ2VQb3J0KCk7CiAK
LSAgICBFeGNlcHRpb25Pcjx2b2lkPiBwb3N0TWVzc2FnZShSZWZQdHI8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiYmIG1lc3NhZ2UsIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYmKTsKKyAgICBF
eGNlcHRpb25Pcjx2b2lkPiBwb3N0TWVzc2FnZShKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1
ZSBtZXNzYWdlLCBWZWN0b3I8SlNDOjpTdHJvbmc8SlNDOjpKU09iamVjdD4+JiYpOwogCiAgICAg
dm9pZCBzdGFydCgpOwogICAgIHZvaWQgY2xvc2UoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Rv
bS9NZXNzYWdlUG9ydC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL01lc3Nh
Z2VQb3J0LmlkbAkocmV2aXNpb24gMjA5MjcxKQorKysgU291cmNlL1dlYkNvcmUvZG9tL01lc3Nh
Z2VQb3J0LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzEsMTAgKzMxLDEwIEBACiAgICAgR2VuZXJh
dGVJc1JlYWNoYWJsZT1JbXBsLAogICAgIEpTQ3VzdG9tTWFya0Z1bmN0aW9uLAogXSBpbnRlcmZh
Y2UgTWVzc2FnZVBvcnQgOiBFdmVudFRhcmdldCB7Ci0gICAgW0N1c3RvbSwgTWF5VGhyb3dFeGNl
cHRpb25dIHZvaWQgcG9zdE1lc3NhZ2UoYW55IG1lc3NhZ2UsIG9wdGlvbmFsIEFycmF5IG1lc3Nh
Z2VQb3J0cyk7Ci0KKyAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGUsIE1heVRocm93RXhjZXB0aW9u
XSB2b2lkIHBvc3RNZXNzYWdlKGFueSBtZXNzYWdlLCBvcHRpb25hbCBzZXF1ZW5jZTxvYmplY3Q+
IHRyYW5zZmVyID0gW10pOwogICAgIHZvaWQgc3RhcnQoKTsKICAgICB2b2lkIGNsb3NlKCk7CiAK
KyAgICAvLyBldmVudCBoYW5kbGVycwogICAgIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb25tZXNz
YWdlOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAJKHJldmlzaW9uIDIwOTI3
MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTE2LDYgKzExNiw3IEBACiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRl
IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CisjaW5jbHVkZSA8
d3RmL1ZhcmlhbnQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogI2lmIEVO
QUJMRShVU0VSX01FU1NBR0VfSEFORExFUlMpCkBAIC05MTksMTIgKzkyMCwxMiBAQCBFeGNlcHRp
b25PcjxTdG9yYWdlKj4gRE9NV2luZG93Ojpsb2NhbFN0CiAgICAgcmV0dXJuIG1fbG9jYWxTdG9y
YWdlLmdldCgpOwogfQogCi1FeGNlcHRpb25Pcjx2b2lkPiBET01XaW5kb3c6OnBvc3RNZXNzYWdl
KFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYgbWVzc2FnZSwgVmVjdG9yPFJlZlB0cjxNZXNz
YWdlUG9ydD4+JiYgcG9ydHMsIGNvbnN0IFN0cmluZyYgdGFyZ2V0T3JpZ2luLCBET01XaW5kb3cm
IHNvdXJjZSkKK0V4Y2VwdGlvbk9yPHZvaWQ+IERPTVdpbmRvdzo6cG9zdE1lc3NhZ2UoSlNDOjpF
eGVjU3RhdGUmIHN0YXRlLCBET01XaW5kb3cmIGNhbGxlcldpbmRvdywgSlNDOjpKU1ZhbHVlIG1l
c3NhZ2VWYWx1ZSwgY29uc3QgU3RyaW5nJiB0YXJnZXRPcmlnaW4sIFZlY3RvcjxKU0M6OlN0cm9u
ZzxKU0M6OkpTT2JqZWN0Pj4mJiB0cmFuc2ZlcikKIHsKICAgICBpZiAoIWlzQ3VycmVudGx5RGlz
cGxheWVkSW5GcmFtZSgpKQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgRG9jdW1lbnQqIHNv
dXJjZURvY3VtZW50ID0gc291cmNlLmRvY3VtZW50KCk7CisgICAgRG9jdW1lbnQqIHNvdXJjZURv
Y3VtZW50ID0gY2FsbGVyV2luZG93LmRvY3VtZW50KCk7CiAKICAgICAvLyBDb21wdXRlIHRoZSB0
YXJnZXQgb3JpZ2luLiAgV2UgbmVlZCB0byBkbyB0aGlzIHN5bmNocm9ub3VzbHkgaW4gb3JkZXIK
ICAgICAvLyB0byBnZW5lcmF0ZSB0aGUgU1lOVEFYX0VSUiBleGNlcHRpb24gY29ycmVjdGx5LgpA
QCAtOTQxLDYgKzk0MiwxMSBAQCBFeGNlcHRpb25Pcjx2b2lkPiBET01XaW5kb3c6OnBvc3RNZXNz
YWdlCiAgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU1lOVEFYX0VSUiB9OwogICAgIH0K
IAorICAgIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiBwb3J0czsKKyAgICBhdXRvIG1lc3Nh
Z2UgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShzdGF0ZSwgbWVzc2FnZVZhbHVlLCBX
VEZNb3ZlKHRyYW5zZmVyKSwgcG9ydHMpOworICAgIGlmIChtZXNzYWdlLmhhc0V4Y2VwdGlvbigp
KQorICAgICAgICByZXR1cm4gbWVzc2FnZS5yZWxlYXNlRXhjZXB0aW9uKCk7CisKICAgICBhdXRv
IGNoYW5uZWxzID0gTWVzc2FnZVBvcnQ6OmRpc2VudGFuZ2xlUG9ydHMoV1RGTW92ZShwb3J0cykp
OwogICAgIGlmIChjaGFubmVscy5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGNoYW5u
ZWxzLnJlbGVhc2VFeGNlcHRpb24oKTsKQEAgLTk1Nyw3ICs5NjMsNyBAQCBFeGNlcHRpb25Pcjx2
b2lkPiBET01XaW5kb3c6OnBvc3RNZXNzYWdlCiAgICAgICAgIHN0YWNrVHJhY2UgPSBjcmVhdGVT
Y3JpcHRDYWxsU3RhY2soSlNNYWluVGhyZWFkRXhlY1N0YXRlOjpjdXJyZW50U3RhdGUoKSwgU2Ny
aXB0Q2FsbFN0YWNrOjptYXhDYWxsU3RhY2tTaXplVG9DYXB0dXJlKTsKIAogICAgIC8vIFNjaGVk
dWxlIHRoZSBtZXNzYWdlLgotICAgIGF1dG8qIHRpbWVyID0gbmV3IFBvc3RNZXNzYWdlVGltZXIo
KnRoaXMsIFdURk1vdmUobWVzc2FnZSksIHNvdXJjZU9yaWdpbiwgc291cmNlLCBjaGFubmVscy5y
ZWxlYXNlUmV0dXJuVmFsdWUoKSwgV1RGTW92ZSh0YXJnZXQpLCBXVEZNb3ZlKHN0YWNrVHJhY2Up
KTsKKyAgICBhdXRvKiB0aW1lciA9IG5ldyBQb3N0TWVzc2FnZVRpbWVyKCp0aGlzLCBtZXNzYWdl
LnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBzb3VyY2VPcmlnaW4sIGNhbGxlcldpbmRvdywgY2hhbm5l
bHMucmVsZWFzZVJldHVyblZhbHVlKCksIFdURk1vdmUodGFyZ2V0KSwgV1RGTW92ZShzdGFja1Ry
YWNlKSk7CiAgICAgdGltZXItPnN0YXJ0T25lU2hvdCgwKTsKIAogICAgIHJldHVybiB7IH07Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgJKHJldmlzaW9uIDIwOTI3MSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDcgQEAK
ICNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1ZGUgPG1lbW9y
eT4KKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAj
aW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KQEAgLTQ0
LDYgKzQ1LDEzIEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogY2xhc3MgU2NyaXB0Q2FsbFN0YWNr
OwogfQogCituYW1lc3BhY2UgSlNDIHsKK2NsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNzIEpTT2JqZWN0
OworY2xhc3MgSlNWYWx1ZTsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBTdHJvbmc7Cit9
CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQmFyUHJvcDsKQEAgLTIzNSw3ICsyNDMs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBwcmludEVycm9yTWVzc2FnZShjb25zdCBTdHJpbmcmKTsK
ICAgICBTdHJpbmcgY3Jvc3NEb21haW5BY2Nlc3NFcnJvck1lc3NhZ2UoY29uc3QgRE9NV2luZG93
JiBhY3RpdmVXaW5kb3cpOwogCi0gICAgRXhjZXB0aW9uT3I8dm9pZD4gcG9zdE1lc3NhZ2UoUmVm
PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiBtZXNzYWdlLCBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQ
b3J0Pj4mJiwgY29uc3QgU3RyaW5nJiB0YXJnZXRPcmlnaW4sIERPTVdpbmRvdyYgc291cmNlKTsK
KyAgICBFeGNlcHRpb25Pcjx2b2lkPiBwb3N0TWVzc2FnZShKU0M6OkV4ZWNTdGF0ZSYsIERPTVdp
bmRvdyYgY2FsbGVyV2luZG93LCBKU0M6OkpTVmFsdWUgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiB0
YXJnZXRPcmlnaW4sIFZlY3RvcjxKU0M6OlN0cm9uZzxKU0M6OkpTT2JqZWN0Pj4mJik7CiAgICAg
dm9pZCBwb3N0TWVzc2FnZVRpbWVyRmlyZWQoUG9zdE1lc3NhZ2VUaW1lciYpOwogICAgIHZvaWQg
ZGlzcGF0Y2hNZXNzYWdlRXZlbnRXaXRoT3JpZ2luQ2hlY2soU2VjdXJpdHlPcmlnaW4qIGludGVu
ZGVkVGFyZ2V0T3JpZ2luLCBFdmVudCYsIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpTY3JpcHRDYWxs
U3RhY2s+KTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAkocmV2aXNpb24gMjA5
MjcxKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCSh3b3JraW5nIGNvcHkp
CkBAIC0xNTIsNyArMTUyLDcgQEAKICAgICAvLyAwIHdoZW4gc3RyYWlnaHQgdXA7IC05MCB3aGVu
IHJvdGF0ZWQgOTAgZGVncmVlcyBjbG9ja3dpc2U7IDkwIGNvdW50ZXIgY2xvY2t3aXNlLgogICAg
IFtDb25kaXRpb25hbD1PUklFTlRBVElPTl9FVkVOVFNdIHJlYWRvbmx5IGF0dHJpYnV0ZSBsb25n
IG9yaWVudGF0aW9uOwogCi0gICAgW0RvTm90Q2hlY2tTZWN1cml0eSwgQ3VzdG9tLCBNYXlUaHJv
d0V4Y2VwdGlvbiwgRm9yd2FyZERlY2xhcmVJbkhlYWRlcl0gdm9pZCBwb3N0TWVzc2FnZShTZXJp
YWxpemVkU2NyaXB0VmFsdWUgbWVzc2FnZSwgVVNWU3RyaW5nIHRhcmdldE9yaWdpbiwgb3B0aW9u
YWwgQXJyYXkgbWVzc2FnZVBvcnRzKTsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGUmQ2FsbGVy
V2luZG93LCBEb05vdENoZWNrU2VjdXJpdHksIEZvcndhcmREZWNsYXJlSW5IZWFkZXIsIE1heVRo
cm93RXhjZXB0aW9uXSB2b2lkIHBvc3RNZXNzYWdlKGFueSBtZXNzYWdlLCBVU1ZTdHJpbmcgdGFy
Z2V0T3JpZ2luLCBvcHRpb25hbCBzZXF1ZW5jZTxvYmplY3Q+IHRyYW5zZmVyID0gW10pOwogCiAg
ICAgW0NvbmRpdGlvbmFsPVdFQl9USU1JTkcsIFJlcGxhY2VhYmxlXSByZWFkb25seSBhdHRyaWJ1
dGUgUGVyZm9ybWFuY2UgcGVyZm9ybWFuY2U7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuY3BwCShyZXZpc2lvbiAy
MDkyNzEpCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckdsb2JhbFNj
b3BlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjMsMTMgKzYzLDE4IEBAIEV2ZW50VGFyZ2V0SW50
ZXJmYWNlIERlZGljYXRlZFdvcmtlckdsb2IKICAgICByZXR1cm4gRGVkaWNhdGVkV29ya2VyR2xv
YmFsU2NvcGVFdmVudFRhcmdldEludGVyZmFjZVR5cGU7CiB9CiAKLUV4Y2VwdGlvbk9yPHZvaWQ+
IERlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlOjpwb3N0TWVzc2FnZShSZWZQdHI8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPiYmIG1lc3NhZ2UsIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYmIHBv
cnRzKQorRXhjZXB0aW9uT3I8dm9pZD4gRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGU6OnBvc3RN
ZXNzYWdlKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIG1lc3NhZ2VWYWx1ZSwg
VmVjdG9yPEpTQzo6U3Ryb25nPEpTQzo6SlNPYmplY3Q+PiYmIHRyYW5zZmVyKQogeworICAgIFZl
Y3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiBwb3J0czsKKyAgICBhdXRvIG1lc3NhZ2UgPSBTZXJp
YWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShzdGF0ZSwgbWVzc2FnZVZhbHVlLCBXVEZNb3ZlKHRy
YW5zZmVyKSwgcG9ydHMpOworICAgIGlmIChtZXNzYWdlLmhhc0V4Y2VwdGlvbigpKQorICAgICAg
ICByZXR1cm4gbWVzc2FnZS5yZWxlYXNlRXhjZXB0aW9uKCk7CisKICAgICAvLyBEaXNlbnRhbmds
ZSB0aGUgcG9ydCBpbiBwcmVwYXJhdGlvbiBmb3Igc2VuZGluZyBpdCB0byB0aGUgcmVtb3RlIGNv
bnRleHQuCiAgICAgYXV0byBjaGFubmVscyA9IE1lc3NhZ2VQb3J0OjpkaXNlbnRhbmdsZVBvcnRz
KFdURk1vdmUocG9ydHMpKTsKICAgICBpZiAoY2hhbm5lbHMuaGFzRXhjZXB0aW9uKCkpCiAgICAg
ICAgIHJldHVybiBjaGFubmVscy5yZWxlYXNlRXhjZXB0aW9uKCk7Ci0gICAgdGhyZWFkKCkud29y
a2VyT2JqZWN0UHJveHkoKS5wb3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0KFdURk1vdmUobWVzc2Fn
ZSksIGNoYW5uZWxzLnJlbGVhc2VSZXR1cm5WYWx1ZSgpKTsKKyAgICB0aHJlYWQoKS53b3JrZXJP
YmplY3RQcm94eSgpLnBvc3RNZXNzYWdlVG9Xb3JrZXJPYmplY3QobWVzc2FnZS5yZWxlYXNlUmV0
dXJuVmFsdWUoKSwgY2hhbm5lbHMucmVsZWFzZVJldHVyblZhbHVlKCkpOwogICAgIHJldHVybiB7
IH07CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyR2xv
YmFsU2NvcGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRl
ZFdvcmtlckdsb2JhbFNjb3BlLmgJKHJldmlzaW9uIDIwOTI3MSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaAkod29ya2luZyBjb3B5KQpAQCAt
MzMsNiArMzMsMTIgQEAKIAogI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlLmgiCiAKK25hbWVz
cGFjZSBKU0MgeworY2xhc3MgRXhlY1N0YXRlOworY2xhc3MgSlNPYmplY3Q7CitjbGFzcyBKU1Zh
bHVlOworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbnRlbnRTZWN1cml0eVBv
bGljeVJlc3BvbnNlSGVhZGVyczsKQEAgLTQ1LDcgKzUxLDcgQEAgcHVibGljOgogICAgIHN0YXRp
YyBSZWY8RGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGU+IGNyZWF0ZShjb25zdCBVUkwmLCBjb25z
dCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBEZWRpY2F0ZWRX
b3JrZXJUaHJlYWQmLCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMm
LCBib29sIHNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSwgUmVmUHRy
PFNlY3VyaXR5T3JpZ2luPiYmIHRvcE9yaWdpbiwgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJv
eHkqLCBTb2NrZXRQcm92aWRlciopOwogICAgIHZpcnR1YWwgfkRlZGljYXRlZFdvcmtlckdsb2Jh
bFNjb3BlKCk7CiAKLSAgICBFeGNlcHRpb25Pcjx2b2lkPiBwb3N0TWVzc2FnZShSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiYmLCBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4mJik7Cisg
ICAgRXhjZXB0aW9uT3I8dm9pZD4gcG9zdE1lc3NhZ2UoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpT
VmFsdWUgbWVzc2FnZSwgVmVjdG9yPEpTQzo6U3Ryb25nPEpTQzo6SlNPYmplY3Q+PiYmKTsKIAog
ICAgIERlZGljYXRlZFdvcmtlclRocmVhZCYgdGhyZWFkKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaWRsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaWRsCShy
ZXZpc2lvbiAyMDkyNzEpCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtl
ckdsb2JhbFNjb3BlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQAogICAgIEds
b2JhbD0oV29ya2VyLERlZGljYXRlZFdvcmtlciksCiAgICAgSlNHZW5lcmF0ZVRvTmF0aXZlT2Jq
ZWN0LAogXSBpbnRlcmZhY2UgRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUgOiBXb3JrZXJHbG9i
YWxTY29wZSB7Ci0gICAgW0N1c3RvbSwgTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgcG9zdE1lc3Nh
Z2UoYW55IG1lc3NhZ2UsIG9wdGlvbmFsIEFycmF5IG1lc3NhZ2VQb3J0cyk7CisgICAgW0NhbGxX
aXRoPVNjcmlwdFN0YXRlLCBNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBwb3N0TWVzc2FnZShhbnkg
bWVzc2FnZSwgb3B0aW9uYWwgc2VxdWVuY2U8b2JqZWN0PiB0cmFuc2ZlciA9IFtdKTsKIAogICAg
IGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb25tZXNzYWdlOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlci5jcHAJKHJldmlzaW9uIDIwOTI3MSkKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDEzICsxMDEsMTggQEAgV29ya2Vy
Ojp+V29ya2VyKCkKICAgICBtX2NvbnRleHRQcm94eS0+d29ya2VyT2JqZWN0RGVzdHJveWVkKCk7
CiB9CiAKLUV4Y2VwdGlvbk9yPHZvaWQ+IFdvcmtlcjo6cG9zdE1lc3NhZ2UoUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4mJiBtZXNzYWdlLCBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4m
JiBwb3J0cykKK0V4Y2VwdGlvbk9yPHZvaWQ+IFdvcmtlcjo6cG9zdE1lc3NhZ2UoSlNDOjpFeGVj
U3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUgbWVzc2FnZVZhbHVlLCBWZWN0b3I8SlNDOjpTdHJv
bmc8SlNDOjpKU09iamVjdD4+JiYgdHJhbnNmZXIpCiB7CisgICAgVmVjdG9yPFJlZlB0cjxNZXNz
YWdlUG9ydD4+IHBvcnRzOworICAgIGF1dG8gbWVzc2FnZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTo6Y3JlYXRlKHN0YXRlLCBtZXNzYWdlVmFsdWUsIFdURk1vdmUodHJhbnNmZXIpLCBwb3J0cyk7
CisgICAgaWYgKG1lc3NhZ2UuaGFzRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBtZXNzYWdl
LnJlbGVhc2VFeGNlcHRpb24oKTsKKwogICAgIC8vIERpc2VudGFuZ2xlIHRoZSBwb3J0IGluIHBy
ZXBhcmF0aW9uIGZvciBzZW5kaW5nIGl0IHRvIHRoZSByZW1vdGUgY29udGV4dC4KICAgICBhdXRv
IGNoYW5uZWxzID0gTWVzc2FnZVBvcnQ6OmRpc2VudGFuZ2xlUG9ydHMoV1RGTW92ZShwb3J0cykp
OwogICAgIGlmIChjaGFubmVscy5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGNoYW5u
ZWxzLnJlbGVhc2VFeGNlcHRpb24oKTsKLSAgICBtX2NvbnRleHRQcm94eS0+cG9zdE1lc3NhZ2VU
b1dvcmtlckdsb2JhbFNjb3BlKFdURk1vdmUobWVzc2FnZSksIGNoYW5uZWxzLnJlbGVhc2VSZXR1
cm5WYWx1ZSgpKTsKKyAgICBtX2NvbnRleHRQcm94eS0+cG9zdE1lc3NhZ2VUb1dvcmtlckdsb2Jh
bFNjb3BlKG1lc3NhZ2UucmVsZWFzZVJldHVyblZhbHVlKCksIGNoYW5uZWxzLnJlbGVhc2VSZXR1
cm5WYWx1ZSgpKTsKICAgICByZXR1cm4geyB9OwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyLmgJKHJldmlzaW9uIDIwOTI3MSkKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDEyIEBACiAjaW5jbHVkZSA8d3RmL09wdGlv
bmFsLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nSGFzaC5oPgogCituYW1lc3Bh
Y2UgSlNDIHsKK2NsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNzIEpTT2JqZWN0OworY2xhc3MgSlNWYWx1
ZTsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250
ZXh0OwpAQCAtNDYsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJl
ZjxXb3JrZXI+PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IFN0cmluZyYg
dXJsLCBKU0M6OlJ1bnRpbWVGbGFncyk7CiAgICAgdmlydHVhbCB+V29ya2VyKCk7CiAKLSAgICBF
eGNlcHRpb25Pcjx2b2lkPiBwb3N0TWVzc2FnZShSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVl
PiYmIG1lc3NhZ2UsIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYmKTsKKyAgICBFeGNlcHRp
b25Pcjx2b2lkPiBwb3N0TWVzc2FnZShKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSBtZXNz
YWdlLCBWZWN0b3I8SlNDOjpTdHJvbmc8SlNDOjpKU09iamVjdD4+JiYpOwogCiAgICAgdm9pZCB0
ZXJtaW5hdGUoKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuaWRsCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmlkbAkocmV2aXNpb24g
MjA5MjcxKQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuaWRsCSh3b3JraW5nIGNv
cHkpCkBAIC0yOCwxMSArMjgsMTAgQEAKICAgICBBY3RpdmVET01PYmplY3QsCiAgICAgQ3VzdG9t
Q29uc3RydWN0b3IoVVNWU3RyaW5nIHNjcmlwdFVybCksCiBdIGludGVyZmFjZSBXb3JrZXIgOiBF
dmVudFRhcmdldCB7Ci0gICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbm1lc3NhZ2U7Ci0KLSAg
ICBbQ3VzdG9tLCBNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBwb3N0TWVzc2FnZShTZXJpYWxpemVk
U2NyaXB0VmFsdWUgbWVzc2FnZSwgb3B0aW9uYWwgQXJyYXkgbWVzc2FnZVBvcnRzKTsKLQogICAg
IHZvaWQgdGVybWluYXRlKCk7CisKKyAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGUsIE1heVRocm93
RXhjZXB0aW9uXSB2b2lkIHBvc3RNZXNzYWdlKGFueSBtZXNzYWdlLCBvcHRpb25hbCBzZXF1ZW5j
ZTxvYmplY3Q+IHRyYW5zZmVyID0gW10pOworICAgIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb25t
ZXNzYWdlOwogfTsKIAogV29ya2VyIGltcGxlbWVudHMgQWJzdHJhY3RXb3JrZXI7CkluZGV4OiBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMDkyNzEpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwyNCBAQAorMjAxNi0xMi0wMiAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQu
b3JnPgorCisgICAgICAgIG9wdGlvbmFsIHNlcXVlbmNlIHZhbHVlcyBub3QgaGFuZGxlZCBjb3Jy
ZWN0bHkgYnkgYmluZGluZyBnZW5lcmF0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE0MjU2MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvcmVzb3VyY2VzL3R5cGVkLWFy
cmF5LXdvcmtlci5qczoKKyAgICAgICAgKiBmYXN0L2RvbS9XaW5kb3cvd2luZG93LXBvc3RtZXNz
YWdlLWFyZ3MtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZG9tL1dpbmRvdy93aW5kb3ct
cG9zdG1lc3NhZ2UtYXJncy5odG1sOgorICAgICAgICAqIGZhc3QvZXZlbnRzL21lc3NhZ2UtcG9y
dC1kZWxldGVkLWRvY3VtZW50Lmh0bWw6CisgICAgICAgICogZmFzdC9ldmVudHMvbWVzc2FnZS1w
b3J0LWRlbGV0ZWQtZnJhbWUuaHRtbDoKKyAgICAgICAgKiBmYXN0L2V2ZW50cy9tZXNzYWdlLXBv
cnQtaW5hY3RpdmUtZG9jdW1lbnQuaHRtbDoKKyAgICAgICAgKiBmYXN0L2V2ZW50cy9tZXNzYWdl
LXBvcnQtbXVsdGktZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZXZlbnRzL21lc3NhZ2Ut
cG9ydC5odG1sOgorICAgICAgICAqIGZhc3Qvd29ya2Vycy93b3JrZXItY29udGV4dC1tdWx0aS1w
b3J0LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L3dvcmtlcnMvd29ya2VyLW11bHRpLXBv
cnQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYmdsLzEuMC4yL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3R5cGVkYXJyYXlzL3Jlc291cmNlcy90eXBlZC1hcnJheS13
b3JrZXIuanM6CisgICAgICAgICogd2ViZ2wvMS4wLjMvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UvdHlwZWRhcnJheXMvcmVzb3VyY2VzL3R5cGVkLWFycmF5LXdvcmtlci5q
czoKKyAgICAgICAgVXBkYXRlIGZvciBuZXcgZXhjZXB0aW9ucyBhbmQgc3RyaWN0ZXIgZW5mb3Jj
ZW1lbnQgb2YgdGhlIHBvc3RNZXNzYWdlIHNpZ25hdHVyZS4gCisKIDIwMTYtMTItMDIgIEFudG9p
bmUgUXVpbnQgIDxncmFvdXRzQGFwcGxlLmNvbT4KIAogICAgICAgICBbTW9kZXJuIE1lZGlhIENv
bnRyb2xzXSBBZGQgcmV3aW5kIGFuZCBmYXN0LWZvcndhcmQgc3VwcG9ydApJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvcmVzb3VyY2VzL3R5cGVkLWFycmF5LXdvcmtlci5qcwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9yZXNvdXJjZXMvdHlw
ZWQtYXJyYXktd29ya2VyLmpzCShyZXZpc2lvbiAyMDkyNzEpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2NhbnZhcy93ZWJnbC9yZXNvdXJjZXMvdHlwZWQtYXJyYXktd29ya2VyLmpzCSh3b3JraW5nIGNv
cHkpCkBAIC03NCw3ICs3NCw3IEBAIG9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2ZW50KSB7CiAgICAg
fSBlbHNlIHsKICAgICAgIHZhbHVlVG9TZW5kID0gdmlldy5idWZmZXI7CiAgICAgfQotICAgIHZh
ciB0cmFuc2ZlcmFibGVzVG9TZW5kID0gbnVsbDsKKyAgICB2YXIgdHJhbnNmZXJhYmxlc1RvU2Vu
ZCA9IFtdOwogICAgIGlmIChtZXNzYWdlLmNvbW1hbmQgPT0gJ3RyYW5zZmVyJyB8fAogICAgICAg
ICBtZXNzYWdlLmNvbW1hbmQgPT0gJ3RyYW5zZmVyQnVmZmVyJykgewogICAgICAgdHJhbnNmZXJh
Ymxlc1RvU2VuZCA9IFsgdmlldy5idWZmZXIgXTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9t
L1dpbmRvdy93aW5kb3ctcG9zdG1lc3NhZ2UtYXJncy1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wb3N0bWVzc2FnZS1hcmdzLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMjA5MjcxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vV2lu
ZG93L3dpbmRvdy1wb3N0bWVzc2FnZS1hcmdzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMiwxMyArMiwxMyBAQCBUZXN0IHRoYXQgdGhlIHNlY29uZCBhcmd1bWVudCBvZiB3aW5kb3cu
CiAKIFBBU1M6IFBvc3RpbmcgbWVzc2FnZSAoJzEnLCAxKTogdGhyZXcgZXhjZXB0aW9uIFR5cGVF
cnJvcjogVmFsdWUgaXMgbm90IGEgc2VxdWVuY2UKIFBBU1M6IFBvc3RpbmcgbWVzc2FnZSAoJzIn
LCBjKTogdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVmFsdWUgaXMgbm90IGEgc2VxdWVuY2UK
LVBBU1M6IFBvc3RpbmcgbWVzc2FnZSAoJzMnLCBbb2JqZWN0IE9iamVjdF0pOiB0aHJldyBleGNl
cHRpb24gVHlwZUVycm9yOiBWYWx1ZSBpcyBub3QgYSBzZXF1ZW5jZQotUEFTUzogUG9zdGluZyBt
ZXNzYWdlICgnNCcsIFtvYmplY3QgV2luZG93XSkgZGlkIG5vdCB0aHJvdyBhbiBleGNlcHRpb24K
LVBBU1M6IFBvc3RpbmcgbWVzc2FnZSAoJzRhJywgKikgZGlkIG5vdCB0aHJvdyBhbiBleGNlcHRp
b24KK1BBU1M6IFBvc3RpbmcgbWVzc2FnZSAoJzMnLCBbb2JqZWN0IE9iamVjdF0pOiB0aHJldyBl
eGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yCitQQVNTOiBQb3N0aW5nIG1lc3NhZ2UgKCc0
JywgW29iamVjdCBXaW5kb3ddKTogdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJv
cgorUEFTUzogUG9zdGluZyBtZXNzYWdlICgnNGEnLCAqKTogdGhyZXcgZXhjZXB0aW9uIFR5cGVF
cnJvcjogVmFsdWUgaXMgbm90IGEgc2VxdWVuY2UKIFBBU1M6IFBvc3RpbmcgbWVzc2FnZSAoJzUn
LCBudWxsKSBkaWQgbm90IHRocm93IGFuIGV4Y2VwdGlvbgogUEFTUzogUG9zdGluZyBtZXNzYWdl
ICgnNicsIHVuZGVmaW5lZCkgZGlkIG5vdCB0aHJvdyBhbiBleGNlcHRpb24KIFBBU1M6IFBvc3Rp
bmcgbWVzc2FnZSAoJzcnLCBbb2JqZWN0IE1lc3NhZ2VQb3J0XSxbb2JqZWN0IE1lc3NhZ2VQb3J0
XSkgZGlkIG5vdCB0aHJvdyBhbiBleGNlcHRpb24KLVBBU1M6IFBvc3RpbmcgbWVzc2FnZSAoJzdh
JywgKikgZGlkIG5vdCB0aHJvdyBhbiBleGNlcHRpb24KK1BBU1M6IFBvc3RpbmcgbWVzc2FnZSAo
JzdhJywgKik6IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFZhbHVlIGlzIG5vdCBhIHNlcXVl
bmNlCiBQQVNTOiBQb3N0aW5nIG1lc3NhZ2UgKCc3JywgW29iamVjdCBNZXNzYWdlUG9ydF0sW29i
amVjdCBNZXNzYWdlUG9ydF0pIGRpZCBub3QgdGhyb3cgYW4gZXhjZXB0aW9uCiBQQVNTOiBQb3N0
aW5nIG1lc3NhZ2UgKCcyMTQ3NDgzNjQ4JywgbnVsbCkgZGlkIG5vdCB0aHJvdyBhbiBleGNlcHRp
b24KIFBBU1M6IFBvc3RpbmcgbWVzc2FnZSAoJ1tvYmplY3QgTWVzc2FnZVBvcnRdJywgW29iamVj
dCBNZXNzYWdlUG9ydF0sW29iamVjdCBNZXNzYWdlUG9ydF0pIGRpZCBub3QgdGhyb3cgYW4gZXhj
ZXB0aW9uCkBAIC0xOCwxMiArMTgsOSBAQCBQQVNTOiBQb3N0aW5nIG1lc3NhZ2UgKCdbb2JqZWN0
IEFycmF5QnVmCiBQQVNTOiBhcnJheUJ1ZmZlciBuZXV0ZXJlZAogUEFTUzogdmlldyBuZXV0ZXJl
ZAogUEFTUzogUG9zdGluZyBtZXNzYWdlICgnZG9uZScsIHVuZGVmaW5lZCkgZGlkIG5vdCB0aHJv
dyBhbiBleGNlcHRpb24KLVJlY2VpdmVkIG1lc3NhZ2UgJzQnIHdpdGggMCBwb3J0cy4KLVJlY2Vp
dmVkIG1lc3NhZ2UgJzRhJyB3aXRoIDAgcG9ydHMuCiBSZWNlaXZlZCBtZXNzYWdlICc1JyB3aXRo
IDAgcG9ydHMuCiBSZWNlaXZlZCBtZXNzYWdlICc2JyB3aXRoIDAgcG9ydHMuCiBSZWNlaXZlZCBt
ZXNzYWdlICc3JyB3aXRoIDIgcG9ydHMuCi1SZWNlaXZlZCBtZXNzYWdlICc3YScgd2l0aCAyIHBv
cnRzLgogUmVjZWl2ZWQgbWVzc2FnZSAnNycgd2l0aCAyIHBvcnRzLgogUmVjZWl2ZWQgbWVzc2Fn
ZSAnMjE0NzQ4MzY0OCcgd2l0aCAwIHBvcnRzLgogUmVjZWl2ZWQgbWVzc2FnZSAnW29iamVjdCBN
ZXNzYWdlUG9ydF0nIHdpdGggMiBwb3J0cy4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL1dp
bmRvdy93aW5kb3ctcG9zdG1lc3NhZ2UtYXJncy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcG9zdG1lc3NhZ2UtYXJncy5odG1sCShyZXZpc2lv
biAyMDkyNzEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXBvc3RtZXNz
YWdlLWFyZ3MuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNDQsMTQgKzQ0LDE0IEBAIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJkZXNjcmlwdGlvbiIpLmkKIHRyeVBvc3RNZXNzYWdlKCcxJywgJyon
LCAxLCB0cnVlKTsKIHRyeVBvc3RNZXNzYWdlKCcyJywgJyonLCAnYycsIHRydWUpOwogdHJ5UG9z
dE1lc3NhZ2UoJzMnLCAnKicsIHsgeDogMSB9LCB0cnVlKTsKLXRyeVBvc3RNZXNzYWdlKCc0Jywg
JyonLCB3aW5kb3cpOyAgLy8gUGFzc2VzIGJlY2F1c2Ugd2luZG93IGhhcyBhICJsZW5ndGgiIGF0
dHJpYnV0ZSBvZiB2YWx1ZSAnMCcsIHNvIGl0IGxvb2tzIGxpa2UgYW4gYXJyYXkKLXRyeVBvc3RN
ZXNzYWdlKCc0YScsIHdpbmRvdywgJyonKTsgLy8gTGVnYWN5IGFyZ3VtZW50IG9yZGVyLgordHJ5
UG9zdE1lc3NhZ2UoJzQnLCAnKicsIHdpbmRvdywgdHJ1ZSk7Cit0cnlQb3N0TWVzc2FnZSgnNGEn
LCB3aW5kb3csICcqJywgdHJ1ZSk7IC8vIExlZ2FjeSBhcmd1bWVudCBvcmRlci4KIHRyeVBvc3RN
ZXNzYWdlKCc1JywgJyonLCBudWxsKTsKIHRyeVBvc3RNZXNzYWdlKCc2JywgJyonLCB2b2lkIDAp
OwogdmFyIGNoYW5uZWwxID0gbmV3IE1lc3NhZ2VDaGFubmVsOwogdHJ5UG9zdE1lc3NhZ2VGdW5j
dGlvbih3aW5kb3cucG9zdE1lc3NhZ2UsICc3JywgJyonLCBbY2hhbm5lbDEucG9ydDEsIGNoYW5u
ZWwxLnBvcnQyXSk7CiB2YXIgY2hhbm5lbDFhID0gbmV3IE1lc3NhZ2VDaGFubmVsOwotdHJ5UG9z
dE1lc3NhZ2VGdW5jdGlvbih3aW5kb3cucG9zdE1lc3NhZ2UsICc3YScsIFtjaGFubmVsMWEucG9y
dDEsIGNoYW5uZWwxYS5wb3J0Ml0sICcqJyk7Cit0cnlQb3N0TWVzc2FnZUZ1bmN0aW9uKHdpbmRv
dy5wb3N0TWVzc2FnZSwgJzdhJywgW2NoYW5uZWwxYS5wb3J0MSwgY2hhbm5lbDFhLnBvcnQyXSwg
JyonLCB0cnVlKTsKIHZhciBjaGFubmVsMiA9IG5ldyBNZXNzYWdlQ2hhbm5lbDsKIHRyeVBvc3RN
ZXNzYWdlRnVuY3Rpb24od2luZG93LnBvc3RNZXNzYWdlLCAnNycsICcqJywgW2NoYW5uZWwyLnBv
cnQxLCBjaGFubmVsMi5wb3J0Ml0pOwogdmFyIGNoYW5uZWwzID0gbmV3IE1lc3NhZ2VDaGFubmVs
OwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0LWRlbGV0ZWQtZG9j
dW1lbnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdl
LXBvcnQtZGVsZXRlZC1kb2N1bWVudC5odG1sCShyZXZpc2lvbiAyMDkyNzEpCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQtZGVsZXRlZC1kb2N1bWVudC5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3IEBAIHZhciBtYWluUG9ydDsKIGZ1bmN0aW9uIHRlc3Qo
KQogewogICAgIHZhciBjaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFubmVsOwotICAgIHdpbmRvdy5m
cmFtZXNbMF0ucG9zdE1lc3NhZ2UoIm1zZyIsIFtjaGFubmVsLnBvcnQyXSwgIioiKTsKKyAgICB3
aW5kb3cuZnJhbWVzWzBdLnBvc3RNZXNzYWdlKCJtc2ciLCAiKiIsIFtjaGFubmVsLnBvcnQyXSk7
CiAgICAgbWFpblBvcnQgPSBjaGFubmVsLnBvcnQxOwogICAgIG1haW5Qb3J0LnN0YXJ0KCk7CiAK
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1kZWxldGVkLWZyYW1l
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0
LWRlbGV0ZWQtZnJhbWUuaHRtbAkocmV2aXNpb24gMjA5MjcxKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9ldmVudHMvbWVzc2FnZS1wb3J0LWRlbGV0ZWQtZnJhbWUuaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtMjksNyArMjksNyBAQCBmdW5jdGlvbiB0ZXN0KCkKIHsKICAgICBmcmFtZURvYyA9IHdpbmRv
dy5mcmFtZXNbMF0uZG9jdW1lbnQ7CiAgICAgdmFyIGNoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5u
ZWw7Ci0gICAgd2luZG93LmZyYW1lc1swXS5wb3N0TWVzc2FnZSgibXNnIiwgW2NoYW5uZWwucG9y
dDJdLCAiKiIpOworICAgIHdpbmRvdy5mcmFtZXNbMF0ucG9zdE1lc3NhZ2UoIm1zZyIsICIqIiwg
W2NoYW5uZWwucG9ydDJdKTsKICAgICBtYWluUG9ydCA9IGNoYW5uZWwucG9ydDE7CiAgICAgbWFp
blBvcnQuc3RhcnQoKTsKIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1w
b3J0LWluYWN0aXZlLWRvY3VtZW50Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9ldmVudHMvbWVzc2FnZS1wb3J0LWluYWN0aXZlLWRvY3VtZW50Lmh0bWwJKHJldmlzaW9uIDIw
OTI3MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1pbmFjdGl2ZS1k
b2N1bWVudC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw3IEBAIGZ1bmN0aW9uIHRl
c3QoKQogewogICAgIG90aGVyRG9jdW1lbnQgPSB3aW5kb3cuZnJhbWVzWzBdLmRvY3VtZW50Owog
ICAgIHZhciBjaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFubmVsOwotICAgIHdpbmRvdy5mcmFtZXNb
MF0ucG9zdE1lc3NhZ2UoIm1zZyIsIFtjaGFubmVsLnBvcnQyXSwgIioiKTsKKyAgICB3aW5kb3cu
ZnJhbWVzWzBdLnBvc3RNZXNzYWdlKCJtc2ciLCAiKiIsIFtjaGFubmVsLnBvcnQyXSk7CiAgICAg
bWFpblBvcnQgPSBjaGFubmVsLnBvcnQxOwogICAgIG1haW5Qb3J0LnN0YXJ0KCk7CiAKSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1tdWx0aS1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0LW11bHRp
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjA5MjcxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVu
dHMvbWVzc2FnZS1wb3J0LW11bHRpLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNSwx
MiArNSwxMiBAQCBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBCiAKIFBB
U1MgY2hhbm5lbC5wb3J0MS5wb3N0TWVzc2FnZSgic2FtZSBwb3J0IiwgW2NoYW5uZWwucG9ydDFd
KSB0aHJldyBleGNlcHRpb24gRGF0YUNsb25lRXJyb3IgKERPTSBFeGNlcHRpb24gMjUpOiBUaGUg
b2JqZWN0IGNhbiBub3QgYmUgY2xvbmVkLi4KIFBBU1MgY2hhbm5lbC5wb3J0MS5wb3N0TWVzc2Fn
ZSgiZW50YW5nbGVkIHBvcnQiLCBbY2hhbm5lbC5wb3J0Ml0pIHRocmV3IGV4Y2VwdGlvbiBEYXRh
Q2xvbmVFcnJvciAoRE9NIEV4Y2VwdGlvbiAyNSk6IFRoZSBvYmplY3QgY2FuIG5vdCBiZSBjbG9u
ZWQuLgotUEFTUyBjaGFubmVsLnBvcnQxLnBvc3RNZXNzYWdlKCJudWxsIHBvcnQiLCBbY2hhbm5l
bDMucG9ydDEsIG51bGwsIGNoYW5uZWwzLnBvcnQyXSkgdGhyZXcgZXhjZXB0aW9uIEludmFsaWRT
dGF0ZUVycm9yIChET00gRXhjZXB0aW9uIDExKTogVGhlIG9iamVjdCBpcyBpbiBhbiBpbnZhbGlk
IHN0YXRlLi4KLVBBU1MgY2hhbm5lbC5wb3J0MS5wb3N0TWVzc2FnZSgibm90QVBvcnQiLCBbY2hh
bm5lbDMucG9ydDEsIHt9LCBjaGFubmVsMy5wb3J0Ml0pIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJy
b3I6IFR5cGUgZXJyb3IuCi1QQVNTIGNoYW5uZWwucG9ydDEucG9zdE1lc3NhZ2UoImR1cGxpY2F0
ZSBwb3J0IiwgW2NoYW5uZWwzLnBvcnQxLCBjaGFubmVsMy5wb3J0MV0pIHRocmV3IGV4Y2VwdGlv
biBJbnZhbGlkU3RhdGVFcnJvciAoRE9NIEV4Y2VwdGlvbiAxMSk6IFRoZSBvYmplY3QgaXMgaW4g
YW4gaW52YWxpZCBzdGF0ZS4uCi1QQVNTIGNoYW5uZWwucG9ydDEucG9zdE1lc3NhZ2UoIm5vdEFu
QXJyYXkiLCBjaGFubmVsMy5wb3J0MSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVmFsdWUg
aXMgbm90IGEgc2VxdWVuY2UuCi1QQVNTIGNoYW5uZWwucG9ydDEucG9zdE1lc3NhZ2UoIm5vdEFT
ZXF1ZW5jZSIsIFt7bGVuZ3RoOiAzfV0pIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUg
ZXJyb3IuCi1QQVNTIGNoYW5uZWwucG9ydDEucG9zdE1lc3NhZ2UoImxhcmdlU2VxdWVuY2UiLCBs
YXJnZVBvcnRBcnJheSkgdGhyZXcgZXhjZXB0aW9uIEludmFsaWRTdGF0ZUVycm9yIChET00gRXhj
ZXB0aW9uIDExKTogVGhlIG9iamVjdCBpcyBpbiBhbiBpbnZhbGlkIHN0YXRlLi4KK1BBU1MgY2hh
bm5lbC5wb3J0MS5wb3N0TWVzc2FnZSgibnVsbCBwb3J0IiwgW2NoYW5uZWwzLnBvcnQxLCBudWxs
LCBjaGFubmVsMy5wb3J0Ml0pIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3Iu
CitQQVNTIGNoYW5uZWwucG9ydDEucG9zdE1lc3NhZ2UoIm5vdEFQb3J0IiwgW2NoYW5uZWwzLnBv
cnQxLCB7fSwgY2hhbm5lbDMucG9ydDJdKSB0aHJldyBleGNlcHRpb24gRGF0YUNsb25lRXJyb3Ig
KERPTSBFeGNlcHRpb24gMjUpOiBUaGUgb2JqZWN0IGNhbiBub3QgYmUgY2xvbmVkLi4KK1BBU1Mg
Y2hhbm5lbC5wb3J0MS5wb3N0TWVzc2FnZSgiZHVwbGljYXRlIHBvcnQiLCBbY2hhbm5lbDMucG9y
dDEsIGNoYW5uZWwzLnBvcnQxXSkgdGhyZXcgZXhjZXB0aW9uIERhdGFDbG9uZUVycm9yIChET00g
RXhjZXB0aW9uIDI1KTogVGhlIG9iamVjdCBjYW4gbm90IGJlIGNsb25lZC4uCitQQVNTIGNoYW5u
ZWwucG9ydDEucG9zdE1lc3NhZ2UoIm5vdEFuQXJyYXkiLCBjaGFubmVsMy5wb3J0MSkgdGhyZXcg
ZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KK1BBU1MgY2hhbm5lbC5wb3J0MS5wb3N0
TWVzc2FnZSgibm90QVNlcXVlbmNlIiwgW3tsZW5ndGg6IDN9XSkgdGhyZXcgZXhjZXB0aW9uIERh
dGFDbG9uZUVycm9yIChET00gRXhjZXB0aW9uIDI1KTogVGhlIG9iamVjdCBjYW4gbm90IGJlIGNs
b25lZC4uCitQQVNTIGNoYW5uZWwucG9ydDEucG9zdE1lc3NhZ2UoImxhcmdlU2VxdWVuY2UiLCBs
YXJnZVBvcnRBcnJheSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KIFBB
U1MgZXZlbnQucG9ydHMgaXMgbm9uLW51bGwgYW5kIHplcm8gbGVuZ3RoIHdoZW4gbm8gcG9ydCBz
ZW50CiBQQVNTIGV2ZW50LnBvcnRzIGlzIG5vbi1udWxsIGFuZCB6ZXJvIGxlbmd0aCB3aGVuIGVt
cHR5IGFycmF5IHNlbnQKIFBBU1MgZXZlbnQucG9ydHMgY29udGFpbnMgdHdvIHBvcnRzIHdoZW4g
dHdvIHBvcnRzIHNlbnQKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtcG9y
dC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtcG9y
dC5odG1sCShyZXZpc2lvbiAyMDkyNzEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNz
YWdlLXBvcnQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQCBmdW5jdGlvbiB0
ZXN0KHBvc3RNZXNzYWdlRnVuKQogewogICAgIHZhciBjaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFu
bmVsOwogCi0gICAgd2luZG93LmZyYW1lc1swXVtwb3N0TWVzc2FnZUZ1bl0oIm1zZyIsIFtjaGFu
bmVsLnBvcnQyXSwgIioiKTsKKyAgICB3aW5kb3cuZnJhbWVzWzBdW3Bvc3RNZXNzYWdlRnVuXSgi
bXNnIiwgIioiLCBbY2hhbm5lbC5wb3J0Ml0pOwogICAgIG1haW5Qb3J0ID0gY2hhbm5lbC5wb3J0
MTsKICAgICBtYWluUG9ydFtwb3N0TWVzc2FnZUZ1bl0oInBpbmciKTsKICAgICBtYWluUG9ydC5v
bm1lc3NhZ2UgPSBmdW5jdGlvbihldnQpIHsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qvd29ya2Vy
cy93b3JrZXItY29udGV4dC1tdWx0aS1wb3J0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvd29ya2VyLWNvbnRleHQtbXVsdGktcG9ydC1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDIwOTI3MSkKKysrIExheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy93b3Jr
ZXItY29udGV4dC1tdWx0aS1wb3J0LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNiwx
MSArNiwxMSBAQCBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBCiBQQVNT
IGV2ZW50LnBvcnRzIGlzIG5vbi1udWxsIGFuZCB6ZXJvIGxlbmd0aCB3aGVuIG5vIHBvcnQgc2Vu
dAogUEFTUyBldmVudC5wb3J0cyBpcyBub24tbnVsbCBhbmQgemVybyBsZW5ndGggd2hlbiBlbXB0
eSBhcnJheSBzZW50CiBQQVNTIGV2ZW50LnBvcnRzIGNvbnRhaW5zIHR3byBwb3J0cyB3aGVuIHR3
byBwb3J0cyBzZW50Ci1QQVNTIHBvc3RpbmcgYSBudWxsIHBvcnQgZGlkIHRocm93OiBJbnZhbGlk
U3RhdGVFcnJvciAoRE9NIEV4Y2VwdGlvbiAxMSk6IFRoZSBvYmplY3QgaXMgaW4gYW4gaW52YWxp
ZCBzdGF0ZS4KLVBBU1MgcG9zdGluZyBhIG5vbi1wb3J0IGRpZCB0aHJvdzogVHlwZUVycm9yOiBU
eXBlIGVycm9yCitQQVNTIHBvc3RpbmcgYSBudWxsIHBvcnQgZGlkIHRocm93OiBUeXBlRXJyb3I6
IFR5cGUgZXJyb3IKK1BBU1MgcG9zdGluZyBhIG5vbi1wb3J0IGRpZCB0aHJvdzogRGF0YUNsb25l
RXJyb3IgKERPTSBFeGNlcHRpb24gMjUpOiBUaGUgb2JqZWN0IGNhbiBub3QgYmUgY2xvbmVkLgog
UEFTUyBldmVudC5wb3J0cyBjb250YWlucyB0d28gcG9ydHMgd2hlbiB0d28gcG9ydHMgcmUtc2Vu
dCBhZnRlciBlcnJvcgotUEFTUyBwb3N0aW5nIGEgbm9uLWFycmF5IGRpZCB0aHJvdzogVHlwZUVy
cm9yOiBWYWx1ZSBpcyBub3QgYSBzZXF1ZW5jZQotUEFTUyBwb3N0aW5nIGEgbm9uLXNlcXVlbmNl
IGRpZCB0aHJvdzogVHlwZUVycm9yOiBUeXBlIGVycm9yCitQQVNTIHBvc3RpbmcgYSBub24tYXJy
YXkgZGlkIHRocm93OiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IKK1BBU1MgcG9zdGluZyBhIG5vbi1z
ZXF1ZW5jZSBkaWQgdGhyb3c6IERhdGFDbG9uZUVycm9yIChET00gRXhjZXB0aW9uIDI1KTogVGhl
IG9iamVjdCBjYW4gbm90IGJlIGNsb25lZC4KIAogVEVTVCBDT01QTEVURQogCkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L3dvcmtlcnMvd29ya2VyLW11bHRpLXBvcnQtZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy93b3JrZXItbXVsdGktcG9ydC1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDIwOTI3MSkKKysrIExheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy93
b3JrZXItbXVsdGktcG9ydC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTMsMTAgKzMs
MTAgQEAgVGhpcyB0ZXN0IGNoZWNrcyB0aGUgdmFyaW91cyB1c2UgY2FzZXMgYQogT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgogCiAKLVBBU1Mgd29ya2VyLnBvc3RNZXNzYWdlKCJudWxsIHBvcnQi
LCBbY2hhbm5lbDMucG9ydDEsIG51bGwsIGNoYW5uZWwzLnBvcnQyXSkgdGhyZXcgZXhjZXB0aW9u
IEludmFsaWRTdGF0ZUVycm9yIChET00gRXhjZXB0aW9uIDExKTogVGhlIG9iamVjdCBpcyBpbiBh
biBpbnZhbGlkIHN0YXRlLi4KLVBBU1Mgd29ya2VyLnBvc3RNZXNzYWdlKCJub3RBUG9ydCIsIFtj
aGFubmVsMy5wb3J0MSwge30sIGNoYW5uZWwzLnBvcnQyXSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVF
cnJvcjogVHlwZSBlcnJvci4KLVBBU1Mgd29ya2VyLnBvc3RNZXNzYWdlKCJub3RBbkFycmF5Iiwg
Y2hhbm5lbDMucG9ydDEpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFZhbHVlIGlzIG5vdCBh
IHNlcXVlbmNlLgotUEFTUyB3b3JrZXIucG9zdE1lc3NhZ2UoIm5vdEFTZXF1ZW5jZSIsIFt7bGVu
Z3RoOiAzfV0pIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCitQQVNTIHdv
cmtlci5wb3N0TWVzc2FnZSgibnVsbCBwb3J0IiwgW2NoYW5uZWwzLnBvcnQxLCBudWxsLCBjaGFu
bmVsMy5wb3J0Ml0pIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCitQQVNT
IHdvcmtlci5wb3N0TWVzc2FnZSgibm90QVBvcnQiLCBbY2hhbm5lbDMucG9ydDEsIHt9LCBjaGFu
bmVsMy5wb3J0Ml0pIHRocmV3IGV4Y2VwdGlvbiBEYXRhQ2xvbmVFcnJvciAoRE9NIEV4Y2VwdGlv
biAyNSk6IFRoZSBvYmplY3QgY2FuIG5vdCBiZSBjbG9uZWQuLgorUEFTUyB3b3JrZXIucG9zdE1l
c3NhZ2UoIm5vdEFuQXJyYXkiLCBjaGFubmVsMy5wb3J0MSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVF
cnJvcjogVHlwZSBlcnJvci4KK1BBU1Mgd29ya2VyLnBvc3RNZXNzYWdlKCJub3RBU2VxdWVuY2Ui
LCBbe2xlbmd0aDogM31dKSB0aHJldyBleGNlcHRpb24gRGF0YUNsb25lRXJyb3IgKERPTSBFeGNl
cHRpb24gMjUpOiBUaGUgb2JqZWN0IGNhbiBub3QgYmUgY2xvbmVkLi4KIFBBU1MgZXZlbnQucG9y
dHMgaXMgbm9uLW51bGwgYW5kIHplcm8gbGVuZ3RoIHdoZW4gbm8gcG9ydCBzZW50CiBQQVNTIGV2
ZW50LnBvcnRzIGlzIG5vbi1udWxsIGFuZCB6ZXJvIGxlbmd0aCB3aGVuIGVtcHR5IGFycmF5IHNl
bnQKIFBBU1MgZXZlbnQucG9ydHMgY29udGFpbnMgdHdvIHBvcnRzIHdoZW4gdHdvIHBvcnRzIHNl
bnQKSW5kZXg6IExheW91dFRlc3RzL3dlYmdsLzEuMC4yL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL3R5cGVkYXJyYXlzL3Jlc291cmNlcy90eXBlZC1hcnJheS13b3JrZXIu
anMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvd2ViZ2wvMS4wLjIvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdHlwZWRhcnJheXMvcmVzb3VyY2VzL3R5cGVkLWFycmF5
LXdvcmtlci5qcwkocmV2aXNpb24gMjA5MjcxKQorKysgTGF5b3V0VGVzdHMvd2ViZ2wvMS4wLjIv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdHlwZWRhcnJheXMvcmVzb3Vy
Y2VzL3R5cGVkLWFycmF5LXdvcmtlci5qcwkod29ya2luZyBjb3B5KQpAQCAtNzQsNyArNzQsNyBA
QCBvbm1lc3NhZ2UgPSBmdW5jdGlvbihldmVudCkgewogICAgIH0gZWxzZSB7CiAgICAgICB2YWx1
ZVRvU2VuZCA9IHZpZXcuYnVmZmVyOwogICAgIH0KLSAgICB2YXIgdHJhbnNmZXJhYmxlc1RvU2Vu
ZCA9IG51bGw7CisgICAgdmFyIHRyYW5zZmVyYWJsZXNUb1NlbmQgPSBbXTsKICAgICBpZiAobWVz
c2FnZS5jb21tYW5kID09ICd0cmFuc2ZlcicgfHwKICAgICAgICAgbWVzc2FnZS5jb21tYW5kID09
ICd0cmFuc2ZlckJ1ZmZlcicpIHsKICAgICAgIHRyYW5zZmVyYWJsZXNUb1NlbmQgPSBbIHZpZXcu
YnVmZmVyIF07CkluZGV4OiBMYXlvdXRUZXN0cy93ZWJnbC8xLjAuMy9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS90eXBlZGFycmF5cy9yZXNvdXJjZXMvdHlwZWQtYXJyYXkt
d29ya2VyLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3dlYmdsLzEuMC4zL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3R5cGVkYXJyYXlzL3Jlc291cmNlcy90eXBl
ZC1hcnJheS13b3JrZXIuanMJKHJldmlzaW9uIDIwOTI3MSkKKysrIExheW91dFRlc3RzL3dlYmds
LzEuMC4zL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3R5cGVkYXJyYXlz
L3Jlc291cmNlcy90eXBlZC1hcnJheS13b3JrZXIuanMJKHdvcmtpbmcgY29weSkKQEAgLTc0LDcg
Kzc0LDcgQEAgb25tZXNzYWdlID0gZnVuY3Rpb24oZXZlbnQpIHsKICAgICB9IGVsc2UgewogICAg
ICAgdmFsdWVUb1NlbmQgPSB2aWV3LmJ1ZmZlcjsKICAgICB9Ci0gICAgdmFyIHRyYW5zZmVyYWJs
ZXNUb1NlbmQgPSBudWxsOworICAgIHZhciB0cmFuc2ZlcmFibGVzVG9TZW5kID0gW107CiAgICAg
aWYgKG1lc3NhZ2UuY29tbWFuZCA9PSAndHJhbnNmZXInIHx8CiAgICAgICAgIG1lc3NhZ2UuY29t
bWFuZCA9PSAndHJhbnNmZXJCdWZmZXInKSB7CiAgICAgICB0cmFuc2ZlcmFibGVzVG9TZW5kID0g
WyB2aWV3LmJ1ZmZlciBdOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>296046</attachid>
            <date>2016-12-03 07:41:23 -0800</date>
            <delta_ts>2016-12-03 09:59:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-142562-20161202152243.patch</filename>
            <type>text/plain</type>
            <size>88253</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwOTI3MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg5IEBACisyMDE2LTEyLTAyICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgb3B0aW9uYWwgc2VxdWVuY2UgdmFsdWVz
IG5vdCBoYW5kbGVkIGNvcnJlY3RseSBieSBiaW5kaW5nIGdlbmVyYXRvcgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQyNTYyCisKKyAgICAgICAgQWxz
byBmaXhlczoKKyAgICAgICAgICAgIFJlbW92ZSBub24tc3RhbmRhcmQgcG9zdE1lc3NhZ2Ugb3Zl
cmxvYWQKKyAgICAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjE5MTEKKyAgICAgICAgYW5kCisgICAgICAgICAgICBXcm9uZyBhcmd1bWVudCBvcmRlciBp
biB3aW5kb3cucG9zdE1lc3NhZ2UKKyAgICAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD02MzE0MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICBSZW1vdmUgbm8gbG9uZ2VyIG5lZWRlZCBmaWxlcy4KKworICAgICAgICAqIGJpbmRpbmdz
L2dlbmVyaWMvSURMVHlwZXMuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnQu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnZlcnRlcjxJRExPYmplY3Q+Ojpjb252ZXJ0KToKKyAg
ICAgICAgQWRkIHN1cHBvcnQgZm9yIHRoZSBXZWJJREwgb2JqZWN0IHR5cGUuCisKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
RE9NRXhjZXB0aW9uKToKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHRocm93aW5nIHN0YWNrIG92
ZXJmbG93IGVycm9ycy4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9t
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmhhbmRsZVBvc3RNZXNzYWdlKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93Ojpwb3N0TWVzc2FnZSk6IERlbGV0ZWQuCisgICAg
ICAgICogYmluZGluZ3MvanMvSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUN1c3RvbS5jcHA6
IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpKU01lc3NhZ2VQb3J0Ojpwb3N0TWVzc2FnZSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0VHJhbnNmZXJhYmxlcyk6IERlbGV0ZWQuCisgICAg
ICAgICogYmluZGluZ3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5oOiBSZW1vdmVkLgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTV29ya2VyQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpT
V29ya2VyOjpwb3N0TWVzc2FnZSk6IERlbGV0ZWQuCisgICAgICAgIFJlbW92ZSBjdXN0b20gYmlu
ZGluZ3MgZm9yIHBvc3RNZXNzYWdlLgorCisgICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmg6CisgICAgICAgIFN3aXRjaCB0byB1c2luZyBlbnVtIGNsYXNzLgorCisg
ICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6dHJhbnNmZXJBcnJheUJ1ZmZlcnMpOgor
ICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUpOgorICAgICAg
ICBBZGQgbmV3IGNyZWF0ZSBmdW5jdGlvbiB0aGF0IHRha2VzIHRoZSB0cmFuc2ZlciBsaXN0LCBw
cm9jZXNzZXMgaXQsIGFuZCByZXR1cm5zCisgICAgICAgIE1lc3NhZ2VQb3J0cyBhbmQgU2VyaWFs
aXplZFNjcmlwdFZhbHVlIC8gZXhjZXB0aW9uLgorCisgICAgICAgIChXZWJDb3JlOjpDbG9uZUJh
c2U6OnRocm93U3RhY2tPdmVyZmxvdyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDbG9u
ZURlc2VyaWFsaXplcjo6dGhyb3dWYWxpZGF0aW9uRXJyb3IpOiBEZWxldGVkLgorICAgICAgICBS
ZW1vdmUgdW5jYWxsZWQgZnVuY3Rpb25zLgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9yLnBtOgorICAgICAgICAoSXNSZWZQdHJUeXBlKToKKyAgICAgICAgKElzQnVp
bHRpblR5cGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBt
OgorICAgICAgICAoQWRkVG9JbmNsdWRlc0ZvcklETFR5cGUpOgorICAgICAgICAoR2V0QmFzZUlE
TFR5cGUpOgorICAgICAgICBBZGQgc3VwcG9ydCBmb3IgdGhlIFdlYklETCAnb2JqZWN0JyB0eXBl
LgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHA6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsOgorICAgICAgICBBZGQg
dGVzdHMgZm9yICdvYmplY3QnLgorCisgICAgICAgICogZG9tL0V4Y2VwdGlvbkNvZGUuaDoKKyAg
ICAgICAgQWRkIHR3byBuZXcgRXhjZXB0aW9uQ29kZXM6CisgICAgICAgICAgLSBFeGlzdGluZ0V4
Y2VwdGlvbkVycm9yLCB0byBpbmRpY2F0ZSB0aGF0IGltcGxlbWVudGF0aW9uIGNvZGUgdGhyZXcg
YSBKUyBleGNlcHRpb24uCisgICAgICAgICAgLSBTdGFja092ZXJmbG93RXJyb3IsIHRvIGluZGlj
YXRlIHRoYXQgYSBzdGFjayBvdmVyZmxvdyBleGNlcHRpb24gc2hvdWxkIGJlIHRocm93bi4KKwor
ICAgICAgICAqIGRvbS9NZXNzYWdlUG9ydC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdl
UG9ydDo6cG9zdE1lc3NhZ2UpOgorICAgICAgICAqIGRvbS9NZXNzYWdlUG9ydC5oOgorICAgICAg
ICAqIGRvbS9NZXNzYWdlUG9ydC5pZGw6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93Ojpwb3N0TWVzc2FnZSk6CisgICAgICAgICogcGFn
ZS9ET01XaW5kb3cuaDoKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5pZGw6CisgICAgICAgICog
d29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZTo6cG9zdE1lc3NhZ2UpOgorICAgICAgICAqIHdv
cmtlcnMvRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaDoKKyAgICAgICAgKiB3b3JrZXJzL0Rl
ZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmlkbDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXI6OnBvc3RNZXNzYWdlKToKKyAgICAgICAgKiB3
b3JrZXJzL1dvcmtlci5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyLmlkbDoKKyAgICAgICAg
VXBkYXRlIHRvIGNhbGwgbmV3IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSBjcmVhdGUgZnVuY3Rpb24u
CisKIDIwMTYtMTItMDIgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbTW9kZXJuIE1lZGlhIENvbnRyb2xzXSBBZGQgcmV3aW5kIGFuZCBmYXN0LWZvcndhcmQg
c3VwcG9ydApJbmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDIwOTI3MSkKKysrIFNv
dXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMTI5LDcgKzEx
MjksNiBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgYmluZGluZ3MvanMvSlNET01XcmFwcGVy
LmNwcAogICAgIGJpbmRpbmdzL2pzL0pTRGF0YUN1ZUN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9q
cy9KU0RhdGFUcmFuc2ZlckN1c3RvbS5jcHAKLSAgICBiaW5kaW5ncy9qcy9KU0RlZGljYXRlZFdv
cmtlckdsb2JhbFNjb3BlQ3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTRGV2aWNlTW90aW9u
RXZlbnRDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNEZXZpY2VPcmllbnRhdGlvbkV2ZW50
Q3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5jcHAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlz
aW9uIDIwOTI3MSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTU4NCw3ICsxNTg0LDYgQEAKIAkJNDE2MTRBNzkx
REE2NDI0MTAwNEFEMDZGIC8qIEhUVFBIZWFkZXJWYWx1ZXMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNjE0QTc3MURBNjQyMzYwMDRBRDA2RiAvKiBI
VFRQSGVhZGVyVmFsdWVzLmggKi87IH07CiAJCTQxNjJBNDUwMTAxMTQ1QUUwMERGRjNFRCAvKiBE
ZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0MTYyQTQ0RDEwMTE0NUFFMDBERkYzRUQgLyogRGVkaWNhdGVk
V29ya2VyR2xvYmFsU2NvcGUuY3BwICovOyB9OwogCQk0MTYyQTQ1MTEwMTE0NUFFMDBERkYzRUQg
LyogRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNjJBNDRFMTAxMTQ1QUUwMERGRjNFRCAvKiBEZWRpY2F0
ZWRXb3JrZXJHbG9iYWxTY29wZS5oICovOyB9OwotCQk0MTYyQTQ1NDEwMTE0NUUzMDBERkYzRUQg
LyogSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTYyQTQ1MzEwMTE0NUUzMDBERkYzRUQg
LyogSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUN1c3RvbS5jcHAgKi87IH07CiAJCTQxNjJB
NDU3MTAxMTQ2NDcwMERGRjNFRCAvKiBKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNjJBNDU1MTAx
MTQ2NDcwMERGRjNFRCAvKiBKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmNwcCAqLzsgfTsK
IAkJNDE2MkE0NTgxMDExNDY0NzAwREZGM0VEIC8qIEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2Nv
cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNjJB
NDU2MTAxMTQ2NDcwMERGRjNFRCAvKiBKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmggKi87
IH07CiAJCTQxNkUyOUE2MTAyRkE5NjIwMDdGQzE0RSAvKiBXb3JrZXJSZXBvcnRpbmdQcm94eS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2RTI5QTUx
MDJGQTk2MjAwN0ZDMTRFIC8qIFdvcmtlclJlcG9ydGluZ1Byb3h5LmggKi87IH07CkBAIC0xNjQx
LDcgKzE2NDAsNiBAQAogCQk0MUY1NEY4QjFDNTBDNTAzMDAzMzg0ODggLyogRmV0Y2hCb2R5LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRjU0RjdE
MUM1MEM0RjYwMDMzODQ4OCAvKiBGZXRjaEJvZHkuY3BwICovOyB9OwogCQk0MUY1NEY4RDFDNTBD
NTA4MDAzMzg0ODggLyogRmV0Y2hIZWFkZXJzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRjU0RjgyMUM1MEM0RjYwMDMzODQ4OCAvKiBGZXRjaEhl
YWRlcnMuY3BwICovOyB9OwogCQk0MUY1NEY4RTFDNTBDNTBDMDAzMzg0ODggLyogRmV0Y2hSZXF1
ZXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQx
RjU0Rjg3MUM1MEM0RjYwMDMzODQ4OCAvKiBGZXRjaFJlcXVlc3QuY3BwICovOyB9OwotCQk0MUY1
ODRDNzEwNDY1MkNCMDA5Q0FBNjQgLyogSlNNZXNzYWdlUG9ydEN1c3RvbS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGNTg0QzYxMDQ2NTJDQjAwOUNB
QTY0IC8qIEpTTWVzc2FnZVBvcnRDdXN0b20uaCAqLzsgfTsKIAkJNDFGQTMwM0UxMzE2QzI5QzAw
QzBCRkM1IC8qIFJlbmRlck1lZGlhQ29udHJvbHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGQTMwM0MxMzE2QzI5QzAwQzBCRkM1IC8qIFJlbmRl
ck1lZGlhQ29udHJvbHMuY3BwICovOyB9OwogCQk0MUZBMzAzRjEzMTZDMjlDMDBDMEJGQzUgLyog
UmVuZGVyTWVkaWFDb250cm9scy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDFGQTMwM0QxMzE2QzI5QzAwQzBCRkM1IC8qIFJlbmRlck1lZGlhQ29udHJv
bHMuaCAqLzsgfTsKIAkJNDMwNkU0RTYxNDk1NTU0MzAwN0YxN0FDIC8qIEtpbGxSaW5nTm9uZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MzA2RTRF
NTE0OTU1NTQzMDA3RjE3QUMgLyogS2lsbFJpbmdOb25lLmNwcCAqLzsgfTsKQEAgLTg3MzcsNyAr
ODczNSw2IEBACiAJCTQxNjJBNDREMTAxMTQ1QUUwMERGRjNFRCAvKiBEZWRpY2F0ZWRXb3JrZXJH
bG9iYWxTY29wZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZWRp
Y2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQxNjJBNDRFMTAxMTQ1QUUwMERGRjNFRCAvKiBEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEZWRpY2F0ZWRXb3JrZXJHbG9iYWxT
Y29wZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTYyQTQ0RjEwMTE0NUFFMDBE
RkYzRUQgLyogRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaWRsICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IERlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJNDE2MkE0NTMxMDExNDVFMzAwREZGM0VEIC8qIEpTRGVkaWNhdGVkV29ya2Vy
R2xvYmFsU2NvcGVDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQxNjJBNDU1MTAxMTQ2NDcwMERGRjNFRCAvKiBKU0RlZGljYXRlZFdv
cmtlckdsb2JhbFNjb3BlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0MTYyQTQ1NjEwMTE0NjQ3MDBERkYzRUQgLyogSlNEZWRpY2F0ZWRXb3JrZXJHbG9i
YWxTY29wZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RlZGljYXRlZFdv
cmtlckdsb2JhbFNjb3BlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNkUyOUE1
MTAyRkE5NjIwMDdGQzE0RSAvKiBXb3JrZXJSZXBvcnRpbmdQcm94eS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXb3JrZXJSZXBvcnRpbmdQcm94eS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtODgxMSw3ICs4ODA4LDYgQEAKIAkJNDFGNTRGODcxQzUwQzRGNjAw
MzM4NDg4IC8qIEZldGNoUmVxdWVzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBGZXRjaFJlcXVlc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
MUY1NEY4ODFDNTBDNEY2MDAzMzg0ODggLyogRmV0Y2hSZXF1ZXN0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEZldGNoUmVxdWVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0MUY1NEY4OTFDNTBDNEY2MDAzMzg0ODggLyogRmV0Y2hSZXF1ZXN0LmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBGZXRjaFJlcXVlc3QuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQk0MUY1ODRDNjEwNDY1MkNCMDA5Q0FBNjQgLyogSlNNZXNzYWdlUG9ydEN1c3Rv
bS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU01lc3NhZ2VQb3J0Q3VzdG9t
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRkEzMDNDMTMxNkMyOUMwMEMwQkZD
NSAvKiBSZW5kZXJNZWRpYUNvbnRyb2xzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFJlbmRlck1lZGlhQ29udHJvbHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0MUZBMzAzRDEzMTZDMjlDMDBDMEJGQzUgLyogUmVuZGVyTWVkaWFDb250cm9scy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJNZWRpYUNvbnRyb2xzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQzMDZFNEU1MTQ5NTU1NDMwMDdGMTdBQyAv
KiBLaWxsUmluZ05vbmUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
S2lsbFJpbmdOb25lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIyMDY1LDcg
KzIyMDYxLDYgQEAKIAkJCQlERUMyOTc1RDFCNERFQjJBMDA1RjU5NDUgLyogSlNDdXN0b21FdmVu
dEN1c3RvbS5jcHAgKi8sCiAJCQkJMDdGQkRFMkIxOEZFRDE3ODAwMUE3Q0ZGIC8qIEpTRGF0YUN1
ZUN1c3RvbS5jcHAgKi8sCiAJCQkJQkNBODNFNTEwRDdDRTIwNTAwMzQyMUE4IC8qIEpTRGF0YVRy
YW5zZmVyQ3VzdG9tLmNwcCAqLywKLQkJCQk0MTYyQTQ1MzEwMTE0NUUzMDBERkYzRUQgLyogSlNE
ZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUN1c3RvbS5jcHAgKi8sCiAJCQkJMzFGQjFBNkIxMjBB
NUQ2OTAwREMwMkEwIC8qIEpTRGV2aWNlTW90aW9uRXZlbnRDdXN0b20uY3BwICovLAogCQkJCTU5
MEUxQjRBMTFFNEVGNzAwMDY5Rjc4NCAvKiBKU0RldmljZU9yaWVudGF0aW9uRXZlbnRDdXN0b20u
Y3BwICovLAogCQkJCTQ5QzdCQThDMTA0MkY1QjEwMDA5RDQ0NyAvKiBKU0RvY3VtZW50Q3VzdG9t
LmNwcCAqLywKQEAgLTIyMTIxLDcgKzIyMTE2LDYgQEAKIAkJCQlFMUE1Rjk5QTBFN0VBQTI1MDBB
Rjg1RUEgLyogSlNNZXNzYWdlQ2hhbm5lbEN1c3RvbS5jcHAgKi8sCiAJCQkJNDEwQjdFNzExMDQ1
RkFCMDAwRDgyMjRGIC8qIEpTTWVzc2FnZUV2ZW50Q3VzdG9tLmNwcCAqLywKIAkJCQlFMUFERUQ0
NjBFNzZCOEREMDA0QTFBNUUgLyogSlNNZXNzYWdlUG9ydEN1c3RvbS5jcHAgKi8sCi0JCQkJNDFG
NTg0QzYxMDQ2NTJDQjAwOUNBQTY0IC8qIEpTTWVzc2FnZVBvcnRDdXN0b20uaCAqLywKIAkJCQlB
MUU1QjMxRDFBQUQxREE0MDA2RUJFRkIgLyogSlNNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ3Vz
dG9tLmNwcCAqLywKIAkJCQlDNkYwOTE3RTE0M0EyQkI5MDA2ODU4NDkgLyogSlNNdXRhdGlvbk9i
c2VydmVyQ3VzdG9tLmNwcCAqLywKIAkJCQlCQ0Q5QzI1RjBDMTdBQTY3MDA1QzkwQTIgLyogSlNO
YW1lZE5vZGVNYXBDdXN0b20uY3BwICovLApAQCAtMjYzMzksNyArMjYzMzMsNiBAQAogCQkJCUUx
MDc0MDBFMEU3N0JEQzAwMDMzQUYyNCAvKiBKU01lc3NhZ2VDaGFubmVsLmggaW4gSGVhZGVycyAq
LywKIAkJCQk3NTc5M0VDOTBEMENFNzJEMDA3RkMwQUMgLyogSlNNZXNzYWdlRXZlbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUUxQURFRERBMEU3NkJEOTMwMDRBMUE1RSAvKiBKU01lc3NhZ2VQb3J0
LmggaW4gSGVhZGVycyAqLywKLQkJCQk0MUY1ODRDNzEwNDY1MkNCMDA5Q0FBNjQgLyogSlNNZXNz
YWdlUG9ydEN1c3RvbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ2RjNFOTUxQzFGODU1NTAwNjFE
QkQ0IC8qIEpTTW9ja1BhZ2VPdmVybGF5LmggaW4gSGVhZGVycyAqLywKIAkJCQlBODY2MjlEMTA5
REEyQjQ4MDA5NjMzQTUgLyogSlNNb3VzZUV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk4MzBB
MzZCRDFEQUM1RkFEMDA2RDdEMDkgLyogSlNNb3VzZUV2ZW50SW5pdC5oIGluIEhlYWRlcnMgKi8s
CkBAIC0yOTg1Nyw3ICsyOTg1MCw2IEBACiAJCQkJQkNBODNFNEYwRDdDRTFFOTAwMzQyMUE4IC8q
IEpTRGF0YVRyYW5zZmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDQTgzRTUyMEQ3Q0UyMDUw
MDM0MjFBOCAvKiBKU0RhdGFUcmFuc2ZlckN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0
MTYyQTQ1NzEwMTE0NjQ3MDBERkYzRUQgLyogSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5j
cHAgaW4gU291cmNlcyAqLywKLQkJCQk0MTYyQTQ1NDEwMTE0NUUzMDBERkYzRUQgLyogSlNEZWRp
Y2F0ZWRXb3JrZXJHbG9iYWxTY29wZUN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGREEx
NUVEMTEyQjAzRjk0MDAzQTU4M0EgLyogSlNEZWxheU5vZGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMzFGQjFBNjUxMjBBNUQzRjAwREMwMkEwIC8qIEpTRGV2aWNlTW90aW9uRXZlbnQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMzFGQjFBNkMxMjBBNUQ2OTAwREMwMkEwIC8qIEpTRGV2aWNlTW90
aW9uRXZlbnRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9nZW5lcmljL0lETFR5cGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvZ2VuZXJpYy9JRExUeXBlcy5oCShyZXZpc2lvbiAyMDkyNzEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL0lETFR5cGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0
LDYgKzM0LDggQEAgbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBBcnJheUJ1ZmZlcjsKIGNsYXNzIEFy
cmF5QnVmZmVyVmlldzsKIGNsYXNzIEpTVmFsdWU7CitjbGFzcyBKU09iamVjdDsKK3RlbXBsYXRl
IDx0eXBlbmFtZSBUPiBjbGFzcyBTdHJvbmc7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAg
LTk0LDcgKzk2LDcgQEAgc3RydWN0IElETERPTVN0cmluZyA6IElETFN0cmluZyB7IH07CiBzdHJ1
Y3QgSURMQnl0ZVN0cmluZyA6IElETFN0cmluZyB7IH07CiBzdHJ1Y3QgSURMVVNWU3RyaW5nIDog
SURMU3RyaW5nIHsgfTsKIAotc3RydWN0IElETE9iamVjdCA6IElETFVuc3VwcG9ydGVkVHlwZSB7
IH07CitzdHJ1Y3QgSURMT2JqZWN0IDogSURMVHlwZTxKU0M6OlN0cm9uZzxKU0M6OkpTT2JqZWN0
Pj4geyB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgSURMV3JhcHBlciA6IElETFR5
cGU8UmVmUHRyPFQ+PiB7CiAgICAgdXNpbmcgUmF3VHlwZSA9IFQ7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAJKHJldmlzaW9u
IDIwOTI3MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9u
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0LDcgKzY0LDYgQEAKICNpbmNsdWRlICJKU0RPTVdy
YXBwZXIuY3BwIgogI2luY2x1ZGUgIkpTRGF0YUN1ZUN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNE
YXRhVHJhbnNmZXJDdXN0b20uY3BwIgotI2luY2x1ZGUgIkpTRGVkaWNhdGVkV29ya2VyR2xvYmFs
U2NvcGVDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTRGV2aWNlT3JpZW50YXRpb25FdmVudEN1c3Rv
bS5jcHAiCiAjaW5jbHVkZSAiSlNEaWN0aW9uYXJ5LmNwcCIKICNpbmNsdWRlICJKU0RvY3VtZW50
Q3VzdG9tLmNwcCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGlu
Zy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5k
aW5nLmNwcAkocmV2aXNpb24gMjA5MjcxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01CaW5kaW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcwLDcgKzI3MCw3IEBAIHZvaWQg
cmVwb3J0Q3VycmVudEV4Y2VwdGlvbihFeGVjU3RhdGUqIGUKIAogc3RhdGljIEpTVmFsdWUgY3Jl
YXRlRE9NRXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgRXhjZXB0aW9uQ29kZSBlYywgY29uc3Qg
U3RyaW5nKiBtZXNzYWdlID0gbnVsbHB0cikKIHsKLSAgICBpZiAoIWVjKQorICAgIGlmICghZWMg
fHwgZWMgPT0gRXhpc3RpbmdFeGNlcHRpb25FcnJvcikKICAgICAgICAgcmV0dXJuIGpzVW5kZWZp
bmVkKCk7CiAKICAgICAvLyBGSVhNRTogSGFuZGxlIG90aGVyIFdlYklETCBleGNlcHRpb24gdHlw
ZXMuCkBAIC0yODYsNiArMjg2LDkgQEAgc3RhdGljIEpTVmFsdWUgY3JlYXRlRE9NRXhjZXB0aW9u
KEV4ZWNTdAogICAgICAgICByZXR1cm4gY3JlYXRlUmFuZ2VFcnJvcihleGVjLCAqbWVzc2FnZSk7
CiAgICAgfQogCisgICAgaWYgKGVjID09IFN0YWNrT3ZlcmZsb3dFcnJvcikKKyAgICAgICAgcmV0
dXJuIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihleGVjKTsKKwogICAgIC8vIEZJWE1FOiBBbGwg
Y2FsbGVycyB0byBzZXRET01FeGNlcHRpb24gbmVlZCB0byBwYXNzIGluIHRoZSByaWdodCBnbG9i
YWwgb2JqZWN0CiAgICAgLy8gZm9yIG5vdywgd2UncmUgZ29pbmcgdG8gYXNzdW1lIHRoZSBsZXhp
Y2FsR2xvYmFsT2JqZWN0LiBXaGljaCBpcyB3cm9uZyBpbiBjYXNlcyBsaWtlIHRoaXM6CiAgICAg
Ly8gZnJhbWVzWzBdLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQobnVsbCwgbnVsbCk7IC8vIHRocm93
cyBhbiBleGNlcHRpb24gd2hpY2ggc2hvdWxkIGhhdmUgdGhlIHN1YmZyYW1lcyBwcm90b3R5cGVz
LgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0LmgJKHJldmlz
aW9uIDIwOTI3MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydC5o
CSh3b3JraW5nIGNvcHkpCkBAIC04MTMsNiArODEzLDI1IEBAIHRlbXBsYXRlPD4gc3RydWN0IEpT
Q29udmVydGVyPElETFVTVlN0cmkKIH07CiAKIC8vIE1BUks6IC0KKy8vIE1BUks6IE9iamVjdCB0
eXBlCisKK3RlbXBsYXRlPD4gc3RydWN0IENvbnZlcnRlcjxJRExPYmplY3Q+IDogRGVmYXVsdENv
bnZlcnRlcjxJRExPYmplY3Q+IHsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFeGNlcHRpb25UaHJv
d2VyID0gRGVmYXVsdEV4Y2VwdGlvblRocm93ZXI+CisgICAgc3RhdGljIEpTQzo6U3Ryb25nPEpT
Qzo6SlNPYmplY3Q+IGNvbnZlcnQoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUg
dmFsdWUsIEV4Y2VwdGlvblRocm93ZXImJiBleGNlcHRpb25UaHJvd2VyID0gRXhjZXB0aW9uVGhy
b3dlcigpKQorICAgIHsKKyAgICAgICAgSlNDOjpWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgICAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICAgICAgaWYgKCF2
YWx1ZS5pc09iamVjdCgpKSB7CisgICAgICAgICAgICBleGNlcHRpb25UaHJvd2VyKHN0YXRlLCBz
Y29wZSk7CisgICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICB9CisgICAgICAgIAorICAg
ICAgICByZXR1cm4geyB2bSwgSlNDOjphc09iamVjdCh2YWx1ZSkgfTsKKyAgICB9Cit9OworCisv
LyBNQVJLOiAtCiAvLyBNQVJLOiBBcnJheS1saWtlIHR5cGVzCiAKIG5hbWVzcGFjZSBEZXRhaWwg
ewpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3Vz
dG9tLmNwcAkocmV2aXNpb24gMjA5MjcxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01XaW5kb3dDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiwxMiArMzIsMTIgQEAK
ICNpbmNsdWRlICJKU0hUTUxPcHRpb25FbGVtZW50LmgiCiAjaW5jbHVkZSAiSlNJREJGYWN0b3J5
LmgiCiAjaW5jbHVkZSAiSlNJbWFnZUNvbnN0cnVjdG9yLmgiCi0jaW5jbHVkZSAiSlNNZXNzYWdl
UG9ydEN1c3RvbS5oIgogI2luY2x1ZGUgIkpTV29ya2VyLmgiCiAjaW5jbHVkZSAiTG9jYXRpb24u
aCIKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiU2NoZWR1
bGVkQWN0aW9uLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNpbmNsdWRlIDxydW50aW1lL0pT
Q0lubGluZXMuaD4KIAogI2lmIEVOQUJMRShVU0VSX01FU1NBR0VfSEFORExFUlMpCiAjaW5jbHVk
ZSAiSlNXZWJLaXROYW1lc3BhY2UuaCIKQEAgLTQ4OSw1MCArNDg5LDYgQEAgSlNWYWx1ZSBKU0RP
TVdpbmRvdzo6c2hvd01vZGFsRGlhbG9nKEV4ZQogICAgIHJldHVybiBoYW5kbGVyLnJldHVyblZh
bHVlKCk7CiB9CiAKLXN0YXRpYyBKU1ZhbHVlIGhhbmRsZVBvc3RNZXNzYWdlKERPTVdpbmRvdyYg
aW1wbCwgRXhlY1N0YXRlJiBzdGF0ZSkKLXsKLSAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOwotICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLQotICAgIGlmIChVTkxJS0VM
WShzdGF0ZS5hcmd1bWVudENvdW50KCkgPCAyKSkKLSAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0
aW9uKCZzdGF0ZSwgc2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkp
OwotCi0gICAgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+IG1lc3NhZ2VQb3J0czsKLSAgICBW
ZWN0b3I8UmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+PiBhcnJheUJ1ZmZlcnM7Ci0KLSAgICAvLyBU
aGlzIGZ1bmN0aW9uIGhhcyB2YXJpYWJsZSBhcmd1bWVudHMgYW5kIGNhbiBiZToKLSAgICAvLyBQ
ZXIgY3VycmVudCBzcGVjOgotICAgIC8vICAgcG9zdE1lc3NhZ2UobWVzc2FnZSwgdGFyZ2V0T3Jp
Z2luKQotICAgIC8vICAgcG9zdE1lc3NhZ2UobWVzc2FnZSwgdGFyZ2V0T3JpZ2luLCB7c2VxdWVu
Y2Ugb2YgdHJhbnNmZXJyYWJsZXN9KQotICAgIC8vIExlZ2FjeSBub24tc3RhbmRhcmQgaW1wbGVt
ZW50YXRpb25zIGluIHdlYmtpdCBhbGxvd2VkOgotICAgIC8vICAgcG9zdE1lc3NhZ2UobWVzc2Fn
ZSwge3NlcXVlbmNlIG9mIHRyYW5zZmVycmFibGVzfSwgdGFyZ2V0T3JpZ2luKTsKLSAgICBpbnQg
dGFyZ2V0T3JpZ2luQXJnSW5kZXggPSAxOwotICAgIGlmIChzdGF0ZS5hcmd1bWVudENvdW50KCkg
PiAyKSB7Ci0gICAgICAgIGludCB0cmFuc2ZlcmFibGVzQXJnSW5kZXggPSAyOwotICAgICAgICBp
ZiAoc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMikuaXNTdHJpbmcoKSkgewotICAgICAgICAgICAg
dGFyZ2V0T3JpZ2luQXJnSW5kZXggPSAyOwotICAgICAgICAgICAgdHJhbnNmZXJhYmxlc0FyZ0lu
ZGV4ID0gMTsKLSAgICAgICAgfQotICAgICAgICBleHRyYWN0VHJhbnNmZXJhYmxlcyhzdGF0ZSwg
c3RhdGUuYXJndW1lbnQodHJhbnNmZXJhYmxlc0FyZ0luZGV4KSwgbWVzc2FnZVBvcnRzLCBhcnJh
eUJ1ZmZlcnMpOwotICAgIH0KLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVl
KCkpOwotCi0gICAgYXV0byBtZXNzYWdlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUo
c3RhdGUsIHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApLCBtZXNzYWdlUG9ydHMsIFdURk1vdmUo
YXJyYXlCdWZmZXJzKSk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZSgp
KTsKLQotICAgIFN0cmluZyB0YXJnZXRPcmlnaW4gPSBjb252ZXJ0PElETE51bGxhYmxlPElETFVT
VlN0cmluZz4+KHN0YXRlLCBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCh0YXJnZXRPcmlnaW5BcmdJ
bmRleCkpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7Ci0KLSAg
ICBwcm9wYWdhdGVFeGNlcHRpb24oc3RhdGUsIHNjb3BlLCBpbXBsLnBvc3RNZXNzYWdlKG1lc3Nh
Z2UucmVsZWFzZU5vbk51bGwoKSwgV1RGTW92ZShtZXNzYWdlUG9ydHMpLCB0YXJnZXRPcmlnaW4s
IGNhbGxlckRPTVdpbmRvdygmc3RhdGUpKSk7Ci0KLSAgICByZXR1cm4ganNVbmRlZmluZWQoKTsK
LX0KLQotSlNWYWx1ZSBKU0RPTVdpbmRvdzo6cG9zdE1lc3NhZ2UoRXhlY1N0YXRlJiBzdGF0ZSkK
LXsKLSAgICByZXR1cm4gaGFuZGxlUG9zdE1lc3NhZ2Uod3JhcHBlZCgpLCBzdGF0ZSk7Ci19Ci0K
IEpTVmFsdWUgSlNET01XaW5kb3c6OnNldFRpbWVvdXQoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKICAg
ICBWTSYgdm0gPSBzdGF0ZS52bSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUN1c3Rv
bS5jcHAJKHJldmlzaW9uIDIwOTI3MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDdXN0b20uY3BwCShub25leGlzdGVudCkKQEAgLTEs
NDcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSwgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDExIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0g
KiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0g
KiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAot
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkpTRGVkaWNhdGVk
V29ya2VyR2xvYmFsU2NvcGUuaCIKLQotI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgotI2luY2x1
ZGUgIkpTTWVzc2FnZVBvcnRDdXN0b20uaCIKLQotdXNpbmcgbmFtZXNwYWNlIEpTQzsKLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1KU0M6OkpTVmFsdWUgSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxT
Y29wZTo6cG9zdE1lc3NhZ2UoSlNDOjpFeGVjU3RhdGUmIHN0YXRlKQotewotICAgIHJldHVybiBo
YW5kbGVQb3N0TWVzc2FnZShzdGF0ZSwgd3JhcHBlZCgpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUN1c3RvbS5jcHAKX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVk
OiBzdm46ZW9sLXN0eWxlCiMjIC0xICswLDAgIyMKLW5hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIHByb3BlcnR5CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VQ
b3J0Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U01lc3NhZ2VQb3J0Q3VzdG9tLmNwcAkocmV2aXNpb24gMjA5MjcxKQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI3LDIwICsyNyw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSlNNZXNzYWdl
UG9ydC5oIgogCi0jaW5jbHVkZSAiRXZlbnQuaCIKLSNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgi
Ci0jaW5jbHVkZSAiRnJhbWUuaCIKLSNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKLSNpbmNsdWRl
ICJKU0RPTUdsb2JhbE9iamVjdC5oIgotI2luY2x1ZGUgIkpTRXZlbnQuaCIKLSNpbmNsdWRlICJK
U0V2ZW50TGlzdGVuZXIuaCIKLSNpbmNsdWRlICJKU01lc3NhZ2VQb3J0Q3VzdG9tLmgiCi0jaW5j
bHVkZSAiTWVzc2FnZVBvcnQuaCIKLSNpbmNsdWRlIDxoZWFwL1Nsb3RWaXNpdG9ySW5saW5lcy5o
PgotI2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KLSNpbmNsdWRlIDxydW50aW1lL0pTQXJyYXlC
dWZmZXIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KLQogdXNpbmcgbmFt
ZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTIsNTMgKzM4LDQgQEAgdm9p
ZCBKU01lc3NhZ2VQb3J0Ojp2aXNpdEFkZGl0aW9uYWxDaGlsZAogICAgICAgICB2aXNpdG9yLmFk
ZE9wYXF1ZVJvb3QocG9ydCk7CiB9CiAKLUpTQzo6SlNWYWx1ZSBKU01lc3NhZ2VQb3J0Ojpwb3N0
TWVzc2FnZShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUpCi17Ci0gICAgcmV0dXJuIGhhbmRsZVBvc3RN
ZXNzYWdlKHN0YXRlLCB3cmFwcGVkKCkpOwotfQotCi12b2lkIGV4dHJhY3RUcmFuc2ZlcmFibGVz
KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIHZhbHVlLCBWZWN0b3I8UmVmUHRy
PE1lc3NhZ2VQb3J0Pj4mIHBvcnRBcnJheSwgVmVjdG9yPFJlZlB0cjxKU0M6OkFycmF5QnVmZmVy
Pj4mIGFycmF5QnVmZmVycykKLXsKLSAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOwotICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLQotICAgIGlmICh2YWx1ZS5pc1VuZGVm
aW5lZE9yTnVsbCgpKSB7Ci0gICAgICAgIHBvcnRBcnJheS5yZXNpemUoMCk7Ci0gICAgICAgIGFy
cmF5QnVmZmVycy5yZXNpemUoMCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBW
YWxpZGF0aW9uIG9mIHNlcXVlbmNlIHR5cGVzLCBwZXIgV2ViSURMIHNwZWMgNC4xLjEzLgotICAg
IHVuc2lnbmVkIGxlbmd0aCA9IDA7Ci0gICAgSlNPYmplY3QqIG9iamVjdCA9IHRvSlNTZXF1ZW5j
ZShzdGF0ZSwgdmFsdWUsIGxlbmd0aCk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
dm9pZCgpKTsKLQotICAgIGZvciAodW5zaWduZWQgaSA9IDAgOyBpIDwgbGVuZ3RoOyArK2kpIHsK
LSAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IG9iamVjdC0+Z2V0KCZzdGF0ZSwgaSk7Ci0gICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7Ci0KLSAgICAgICAgaWYgKHZhbHVl
LmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKLSAgICAgICAgICAgIHNldERPTUV4Y2VwdGlvbigmc3Rh
dGUsIElOVkFMSURfU1RBVEVfRVJSKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQot
Ci0gICAgICAgIC8vIFZhbGlkYXRpb24gb2YgT2JqZWN0cyBpbXBsZW1lbnRpbmcgYW4gaW50ZXJm
YWNlLCBwZXIgV2ViSURMIHNwZWMgNC4xLjE1LgotICAgICAgICBpZiAoUmVmUHRyPE1lc3NhZ2VQ
b3J0PiBwb3J0ID0gSlNNZXNzYWdlUG9ydDo6dG9XcmFwcGVkKHZhbHVlKSkgewotICAgICAgICAg
ICAgLy8gQ2hlY2sgZm9yIGR1cGxpY2F0ZSBwb3J0cy4KLSAgICAgICAgICAgIGlmIChwb3J0QXJy
YXkuY29udGFpbnMocG9ydCkpIHsKLSAgICAgICAgICAgICAgICBzZXRET01FeGNlcHRpb24oJnN0
YXRlLCBJTlZBTElEX1NUQVRFX0VSUik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICAgICAgfQotICAgICAgICAgICAgcG9ydEFycmF5LmFwcGVuZChXVEZNb3ZlKHBvcnQpKTsKLSAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmIChSZWZQdHI8QXJyYXlCdWZmZXI+IGFycmF5
QnVmZmVyID0gdG9Qb3NzaWJseVNoYXJlZEFycmF5QnVmZmVyKHZhbHVlKSkKLSAgICAgICAgICAg
ICAgICBhcnJheUJ1ZmZlcnMuYXBwZW5kKFdURk1vdmUoYXJyYXlCdWZmZXIpKTsKLSAgICAgICAg
ICAgIGVsc2UgewotICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUp
OwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAg
IH0KLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRDdXN0b20uaAkocmV2aXNpb24gMjA5MjcxKQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5oCShub25l
eGlzdGVudCkKQEAgLTEsNjQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICog
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIk1lc3NhZ2VQ
b3J0LmgiCi0jaW5jbHVkZSA8cnVudGltZS9FcnJvci5oPgotI2luY2x1ZGUgPHJ1bnRpbWUvSlND
SW5saW5lcy5oPgotI2luY2x1ZGUgPHJ1bnRpbWUvSlNDSlNWYWx1ZS5oPgotI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdm9pZCBleHRyYWN0VHJhbnNm
ZXJhYmxlcyhKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSwgVmVjdG9yPFJlZlB0cjxNZXNz
YWdlUG9ydD4+JiwgVmVjdG9yPFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPj4mKTsKLQotLy8gSGVs
cGVyIGZ1bmN0aW9uIHRvIGNvbnZlcnQgZnJvbSBKUyBwb3N0TWVzc2FnZSBhcmd1bWVudHMgdG8g
V2ViQ29yZSBwb3N0TWVzc2FnZSBhcmd1bWVudHMuCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxp
bmUgSlNDOjpKU1ZhbHVlIGhhbmRsZVBvc3RNZXNzYWdlKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwg
VCYgb2JqZWN0KQotewotICAgIEpTQzo6Vk0mIHZtID0gc3RhdGUudm0oKTsKLSAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0KLSAgICBpZiAoVU5MSUtFTFkoc3RhdGUu
YXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbigmc3Rh
dGUsIHNjb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKLQotICAg
IFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiBtZXNzYWdlUG9ydEFycmF5OwotICAgIFZlY3Rv
cjxSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4+IGFycmF5QnVmZmVyQXJyYXk7Ci0gICAgZXh0cmFj
dFRyYW5zZmVyYWJsZXMoc3RhdGUsIHN0YXRlLmFyZ3VtZW50KDEpLCBtZXNzYWdlUG9ydEFycmF5
LCBhcnJheUJ1ZmZlckFycmF5KTsKLQotICAgIGF1dG8gbWVzc2FnZSA9IFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTo6Y3JlYXRlKHN0YXRlLCBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKSwgbWVzc2Fn
ZVBvcnRBcnJheSwgV1RGTW92ZShhcnJheUJ1ZmZlckFycmF5KSk7Ci0gICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgSlNDOjpKU1ZhbHVlKCkpOwotCi0gICAgcHJvcGFnYXRlRXhjZXB0aW9u
KHN0YXRlLCBzY29wZSwgb2JqZWN0LnBvc3RNZXNzYWdlKFdURk1vdmUobWVzc2FnZSksIFdURk1v
dmUobWVzc2FnZVBvcnRBcnJheSkpKTsKLSAgICByZXR1cm4gSlNDOjpqc1VuZGVmaW5lZCgpOwot
fQotCi19CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U01lc3NhZ2VQb3J0Q3VzdG9tLmgKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46ZW9sLXN0eWxlCiMj
IC0xICswLDAgIyMKLW5hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckN1c3RvbS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDdXN0b20uY3BwCShyZXZp
c2lvbiAyMDkyNzEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckN1c3Rv
bS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDYgQEAKICNpbmNsdWRlICJKU0RPTUJp
bmRpbmcuaCIKICNpbmNsdWRlICJKU0RPTUdsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpTRE9N
V2luZG93Q3VzdG9tLmgiCi0jaW5jbHVkZSAiSlNNZXNzYWdlUG9ydEN1c3RvbS5oIgogI2luY2x1
ZGUgIldvcmtlci5oIgogI2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KIApAQCAtMzksMTEgKzM4
LDYgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1KU0M6
OkpTVmFsdWUgSlNXb3JrZXI6OnBvc3RNZXNzYWdlKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSkKLXsK
LSAgICByZXR1cm4gaGFuZGxlUG9zdE1lc3NhZ2Uoc3RhdGUsIHdyYXBwZWQoKSk7Ci19Ci0KIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNXb3JrZXIoRXhlY1N0YXRlJiBz
dGF0ZSkKIHsKICAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCShyZXZpc2lv
biAyMDkyNzEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0
VmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Miw2ICs5MiwxNiBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtYXhpbXVtRmlsdGVyUmVjdXJzaW9uID0g
NDAwMDA7CiAKK2VudW0gY2xhc3MgU2VyaWFsaXphdGlvblJldHVybkNvZGUgeworICAgIFN1Y2Nl
c3NmdWxseUNvbXBsZXRlZCwKKyAgICBTdGFja092ZXJmbG93RXJyb3IsCisgICAgSW50ZXJydXB0
ZWRFeGVjdXRpb25FcnJvciwKKyAgICBWYWxpZGF0aW9uRXJyb3IsCisgICAgRXhpc3RpbmdFeGNl
cHRpb25FcnJvciwKKyAgICBEYXRhQ2xvbmVFcnJvciwKKyAgICBVbnNwZWNpZmllZEVycm9yCit9
OworCiBlbnVtIFdhbGtlclN0YXRlIHsgU3RhdGVVbmtub3duLCBBcnJheVN0YXJ0U3RhdGUsIEFy
cmF5U3RhcnRWaXNpdE1lbWJlciwgQXJyYXlFbmRWaXNpdE1lbWJlciwKICAgICBPYmplY3RTdGFy
dFN0YXRlLCBPYmplY3RTdGFydFZpc2l0TWVtYmVyLCBPYmplY3RFbmRWaXNpdE1lbWJlciwKICAg
ICBNYXBEYXRhU3RhcnRWaXNpdEVudHJ5LCBNYXBEYXRhRW5kVmlzaXRLZXksIE1hcERhdGFFbmRW
aXNpdFZhbHVlLApAQCAtMzc0LDcgKzM4NCw3IEBAIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJp
bmdEYXRhSXM4Qml0RmwKICAqICAgIDxmYWN0b3JTaXplOnVpbnQzMl90PiA8ZmFjdG9yOmJ5dGV7
ZmFjdG9yU2l6ZX0+IDxjcnRFeHBvbmVudFNpemU6dWludDMyX3Q+IDxjcnRFeHBvbmVudDpieXRl
e2NydEV4cG9uZW50U2l6ZX0+IDxjcnRDb2VmZmljaWVudFNpemU6dWludDMyX3Q+IDxjcnRDb2Vm
ZmljaWVudDpieXRle2NydENvZWZmaWNpZW50U2l6ZX0+CiAgKi8KIAotdHlwZWRlZiBzdGQ6OnBh
aXI8SlNDOjpKU1ZhbHVlLCBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZT4gRGVzZXJpYWxpemF0aW9u
UmVzdWx0OwordXNpbmcgRGVzZXJpYWxpemF0aW9uUmVzdWx0ID0gc3RkOjpwYWlyPEpTQzo6SlNW
YWx1ZSwgU2VyaWFsaXphdGlvblJldHVybkNvZGU+OwogCiBjbGFzcyBDbG9uZUJhc2UgewogcHJv
dGVjdGVkOgpAQCAtMzkxLDEzICs0MDEsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIHJldHVybiBz
Y29wZS5leGNlcHRpb24oKTsKICAgICB9CiAKLSAgICB2b2lkIHRocm93U3RhY2tPdmVyZmxvdygp
Ci0gICAgewotICAgICAgICBWTSYgdm0gPSBtX2V4ZWMtPnZtKCk7Ci0gICAgICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICAgICAgdGhyb3dFeGNlcHRpb24obV9l
eGVjLCBzY29wZSwgY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKG1fZXhlYykpOwotICAgIH0KLQog
ICAgIHZvaWQgZmFpbCgpCiAgICAgewogICAgICAgICBtX2ZhaWxlZCA9IHRydWU7CkBAIC03MzEs
NyArNzM0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgd3JpdGUoc3RhdGljX2Nhc3Q8dWludDMyX3Q+
KGFycmF5QnVmZmVyVmlldy0+Ynl0ZUxlbmd0aCgpKSk7CiAgICAgICAgIFJlZlB0cjxBcnJheUJ1
ZmZlcj4gYXJyYXlCdWZmZXIgPSBhcnJheUJ1ZmZlclZpZXctPnBvc3NpYmx5U2hhcmVkQnVmZmVy
KCk7CiAgICAgICAgIGlmICghYXJyYXlCdWZmZXIpIHsKLSAgICAgICAgICAgIGNvZGUgPSBWYWxp
ZGF0aW9uRXJyb3I7CisgICAgICAgICAgICBjb2RlID0gU2VyaWFsaXphdGlvblJldHVybkNvZGU6
OlZhbGlkYXRpb25FcnJvcjsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAg
ICAgICAgIEpTVmFsdWUgYnVmZmVyT2JqID0gdG9KUyhtX2V4ZWMsIGpzQ2FzdDxKU0RPTUdsb2Jh
bE9iamVjdCo+KG1fZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKSwgYXJyYXlCdWZmZXIuZ2V0
KCkpOwpAQCAtODQxLDEyICs4NDQsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIC8vIE1lc3Nh
Z2VQb3J0IG9iamVjdCBjb3VsZCBub3QgYmUgZm91bmQgaW4gdHJhbnNmZXJyZWQgbWVzc2FnZSBw
b3J0cwotICAgICAgICAgICAgICAgIGNvZGUgPSBWYWxpZGF0aW9uRXJyb3I7CisgICAgICAgICAg
ICAgICAgY29kZSA9IFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlOjpWYWxpZGF0aW9uRXJyb3I7CiAg
ICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBp
ZiAoQXJyYXlCdWZmZXIqIGFycmF5QnVmZmVyID0gdG9Qb3NzaWJseVNoYXJlZEFycmF5QnVmZmVy
KG9iaikpIHsKICAgICAgICAgICAgICAgICBpZiAoYXJyYXlCdWZmZXItPmlzTmV1dGVyZWQoKSkg
ewotICAgICAgICAgICAgICAgICAgICBjb2RlID0gVmFsaWRhdGlvbkVycm9yOworICAgICAgICAg
ICAgICAgICAgICBjb2RlID0gU2VyaWFsaXphdGlvblJldHVybkNvZGU6OlZhbGlkYXRpb25FcnJv
cjsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgIE9iamVjdFBvb2w6Oml0ZXJhdG9yIGluZGV4ID0gbV90cmFuc2ZlcnJl
ZEFycmF5QnVmZmVycy5maW5kKG9iaik7CkBAIC0xMjM0LDcgKzEyMzcsNyBAQCBTZXJpYWxpemF0
aW9uUmV0dXJuQ29kZSBDbG9uZVNlcmlhbGl6ZXI6CiAgICAgICAgICAgICBjYXNlIEFycmF5U3Rh
cnRTdGF0ZTogewogICAgICAgICAgICAgICAgIEFTU0VSVChpc0FycmF5KGluVmFsdWUpKTsKICAg
ICAgICAgICAgICAgICBpZiAoaW5wdXRPYmplY3RTdGFjay5zaXplKCkgPiBtYXhpbXVtRmlsdGVy
UmVjdXJzaW9uKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gU3RhY2tPdmVyZmxvd0Vycm9y
OworICAgICAgICAgICAgICAgICAgICByZXR1cm4gU2VyaWFsaXphdGlvblJldHVybkNvZGU6OlN0
YWNrT3ZlcmZsb3dFcnJvcjsKIAogICAgICAgICAgICAgICAgIEpTQXJyYXkqIGluQXJyYXkgPSBh
c0FycmF5KGluVmFsdWUpOwogICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IGluQXJy
YXktPmxlbmd0aCgpOwpAQCAtMTI3Myw5ICsxMjc2LDkgQEAgU2VyaWFsaXphdGlvblJldHVybkNv
ZGUgQ2xvbmVTZXJpYWxpemVyOgogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAg
IHdyaXRlKGluZGV4KTsKLSAgICAgICAgICAgICAgICBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZSB0
ZXJtaW5hbENvZGUgPSBTdWNjZXNzZnVsbHlDb21wbGV0ZWQ7CisgICAgICAgICAgICAgICAgYXV0
byB0ZXJtaW5hbENvZGUgPSBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZTo6U3VjY2Vzc2Z1bGx5Q29t
cGxldGVkOwogICAgICAgICAgICAgICAgIGlmIChkdW1wSWZUZXJtaW5hbChpblZhbHVlLCB0ZXJt
aW5hbENvZGUpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICh0ZXJtaW5hbENvZGUgIT0gU3Vj
Y2Vzc2Z1bGx5Q29tcGxldGVkKQorICAgICAgICAgICAgICAgICAgICBpZiAodGVybWluYWxDb2Rl
ICE9IFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlOjpTdWNjZXNzZnVsbHlDb21wbGV0ZWQpCiAgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGVybWluYWxDb2RlOwogICAgICAgICAgICAgICAg
ICAgICBpbmRleFN0YWNrLmxhc3QoKSsrOwogICAgICAgICAgICAgICAgICAgICBnb3RvIGFycmF5
U3RhcnRWaXNpdE1lbWJlcjsKQEAgLTEyOTEsNyArMTI5NCw3IEBAIFNlcmlhbGl6YXRpb25SZXR1
cm5Db2RlIENsb25lU2VyaWFsaXplcjoKICAgICAgICAgICAgIGNhc2UgT2JqZWN0U3RhcnRTdGF0
ZTogewogICAgICAgICAgICAgICAgIEFTU0VSVChpblZhbHVlLmlzT2JqZWN0KCkpOwogICAgICAg
ICAgICAgICAgIGlmIChpbnB1dE9iamVjdFN0YWNrLnNpemUoKSA+IG1heGltdW1GaWx0ZXJSZWN1
cnNpb24pCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBTdGFja092ZXJmbG93RXJyb3I7Cisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZTo6U3RhY2tP
dmVyZmxvd0Vycm9yOwogICAgICAgICAgICAgICAgIEpTT2JqZWN0KiBpbk9iamVjdCA9IGFzT2Jq
ZWN0KGluVmFsdWUpOwogICAgICAgICAgICAgICAgIGlmICghc3RhcnRPYmplY3QoaW5PYmplY3Qp
KQogICAgICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTEzMDAsNyArMTMwMyw3IEBAIFNlcmlh
bGl6YXRpb25SZXR1cm5Db2RlIENsb25lU2VyaWFsaXplcjoKICAgICAgICAgICAgICAgICAvLyB0
aGUgaW5wdXQgaXMgbm90IGFuIE9iamVjdCBvYmplY3QgdGhlbiB3ZSBzaG91bGQgdGhyb3cKICAg
ICAgICAgICAgICAgICAvLyBhIERhdGFDbG9uZUVycm9yLgogICAgICAgICAgICAgICAgIGlmIChp
bk9iamVjdC0+Y2xhc3NJbmZvKCkgIT0gSlNGaW5hbE9iamVjdDo6aW5mbygpKQotICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gRGF0YUNsb25lRXJyb3I7CisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZTo6RGF0YUNsb25lRXJyb3I7CiAgICAgICAgICAg
ICAgICAgaW5wdXRPYmplY3RTdGFjay5hcHBlbmQoaW5PYmplY3QpOwogICAgICAgICAgICAgICAg
IGluZGV4U3RhY2suYXBwZW5kKDApOwogICAgICAgICAgICAgICAgIHByb3BlcnR5U3RhY2suYXBw
ZW5kKFByb3BlcnR5TmFtZUFycmF5KG1fZXhlYywgUHJvcGVydHlOYW1lTW9kZTo6U3RyaW5ncykp
OwpAQCAtMTMyMSw3ICsxMzI0LDcgQEAgU2VyaWFsaXphdGlvblJldHVybkNvZGUgQ2xvbmVTZXJp
YWxpemVyOgogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpblZhbHVlID0gZ2V0
UHJvcGVydHkob2JqZWN0LCBwcm9wZXJ0aWVzW2luZGV4XSk7CiAgICAgICAgICAgICAgICAgaWYg
KHNob3VsZFRlcm1pbmF0ZSgpKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gRXhpc3RpbmdF
eGNlcHRpb25FcnJvcjsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFNlcmlhbGl6YXRpb25S
ZXR1cm5Db2RlOjpFeGlzdGluZ0V4Y2VwdGlvbkVycm9yOwogCiAgICAgICAgICAgICAgICAgaWYg
KCFpblZhbHVlKSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIFByb3BlcnR5IHdhcyByZW1vdmVk
IGR1cmluZyBzZXJpYWxpc2F0aW9uCkBAIC0xMzMxLDIwICsxMzM0LDIwIEBAIFNlcmlhbGl6YXRp
b25SZXR1cm5Db2RlIENsb25lU2VyaWFsaXplcjoKICAgICAgICAgICAgICAgICB3cml0ZShwcm9w
ZXJ0aWVzW2luZGV4XSk7CiAKICAgICAgICAgICAgICAgICBpZiAoc2hvdWxkVGVybWluYXRlKCkp
Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yOworICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gU2VyaWFsaXphdGlvblJldHVybkNvZGU6OkV4aXN0aW5n
RXhjZXB0aW9uRXJyb3I7CiAKLSAgICAgICAgICAgICAgICBTZXJpYWxpemF0aW9uUmV0dXJuQ29k
ZSB0ZXJtaW5hbENvZGUgPSBTdWNjZXNzZnVsbHlDb21wbGV0ZWQ7CisgICAgICAgICAgICAgICAg
YXV0byB0ZXJtaW5hbENvZGUgPSBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZTo6U3VjY2Vzc2Z1bGx5
Q29tcGxldGVkOwogICAgICAgICAgICAgICAgIGlmICghZHVtcElmVGVybWluYWwoaW5WYWx1ZSwg
dGVybWluYWxDb2RlKSkgewogICAgICAgICAgICAgICAgICAgICBzdGF0ZVN0YWNrLmFwcGVuZChP
YmplY3RFbmRWaXNpdE1lbWJlcik7CiAgICAgICAgICAgICAgICAgICAgIGdvdG8gc3RhdGVVbmtu
b3duOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAodGVybWluYWxDb2Rl
ICE9IFN1Y2Nlc3NmdWxseUNvbXBsZXRlZCkKKyAgICAgICAgICAgICAgICBpZiAodGVybWluYWxD
b2RlICE9IFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlOjpTdWNjZXNzZnVsbHlDb21wbGV0ZWQpCiAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiB0ZXJtaW5hbENvZGU7CiAgICAgICAgICAgICAgICAg
RkFMTFRIUk9VR0g7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBjYXNlIE9iamVjdEVuZFZp
c2l0TWVtYmVyOiB7CiAgICAgICAgICAgICAgICAgaWYgKHNob3VsZFRlcm1pbmF0ZSgpKQotICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gRXhpc3RpbmdFeGNlcHRpb25FcnJvcjsKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlOjpFeGlzdGluZ0V4Y2Vw
dGlvbkVycm9yOwogCiAgICAgICAgICAgICAgICAgaW5kZXhTdGFjay5sYXN0KCkrKzsKICAgICAg
ICAgICAgICAgICBnb3RvIG9iamVjdFN0YXJ0VmlzaXRNZW1iZXI7CkBAIC0xMzUyLDcgKzEzNTUs
NyBAQCBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZSBDbG9uZVNlcmlhbGl6ZXI6CiAgICAgICAgICAg
ICBtYXBTdGFydFN0YXRlOiB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGluVmFsdWUuaXNPYmpl
Y3QoKSk7CiAgICAgICAgICAgICAgICAgaWYgKGlucHV0T2JqZWN0U3RhY2suc2l6ZSgpID4gbWF4
aW11bUZpbHRlclJlY3Vyc2lvbikKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFN0YWNrT3Zl
cmZsb3dFcnJvcjsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFNlcmlhbGl6YXRpb25SZXR1
cm5Db2RlOjpTdGFja092ZXJmbG93RXJyb3I7CiAgICAgICAgICAgICAgICAgSlNNYXAqIGluTWFw
ID0ganNDYXN0PEpTTWFwKj4oaW5WYWx1ZSk7CiAgICAgICAgICAgICAgICAgaWYgKCFzdGFydE1h
cChpbk1hcCkpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTM5Niw3ICsxMzk5LDcg
QEAgU2VyaWFsaXphdGlvblJldHVybkNvZGUgQ2xvbmVTZXJpYWxpemVyOgogICAgICAgICAgICAg
c2V0U3RhcnRTdGF0ZTogewogICAgICAgICAgICAgICAgIEFTU0VSVChpblZhbHVlLmlzT2JqZWN0
KCkpOwogICAgICAgICAgICAgICAgIGlmIChpbnB1dE9iamVjdFN0YWNrLnNpemUoKSA+IG1heGlt
dW1GaWx0ZXJSZWN1cnNpb24pCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBTdGFja092ZXJm
bG93RXJyb3I7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBTZXJpYWxpemF0aW9uUmV0dXJu
Q29kZTo6U3RhY2tPdmVyZmxvd0Vycm9yOwogICAgICAgICAgICAgICAgIEpTU2V0KiBpblNldCA9
IGpzQ2FzdDxKU1NldCo+KGluVmFsdWUpOwogICAgICAgICAgICAgICAgIGlmICghc3RhcnRTZXQo
aW5TZXQpKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTE0MzEsOSArMTQzNCw5IEBA
IFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlIENsb25lU2VyaWFsaXplcjoKIAogICAgICAgICAgICAg
c3RhdGVVbmtub3duOgogICAgICAgICAgICAgY2FzZSBTdGF0ZVVua25vd246IHsKLSAgICAgICAg
ICAgICAgICBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZSB0ZXJtaW5hbENvZGUgPSBTdWNjZXNzZnVs
bHlDb21wbGV0ZWQ7CisgICAgICAgICAgICAgICAgYXV0byB0ZXJtaW5hbENvZGUgPSBTZXJpYWxp
emF0aW9uUmV0dXJuQ29kZTo6U3VjY2Vzc2Z1bGx5Q29tcGxldGVkOwogICAgICAgICAgICAgICAg
IGlmIChkdW1wSWZUZXJtaW5hbChpblZhbHVlLCB0ZXJtaW5hbENvZGUpKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIGlmICh0ZXJtaW5hbENvZGUgIT0gU3VjY2Vzc2Z1bGx5Q29tcGxldGVkKQorICAg
ICAgICAgICAgICAgICAgICBpZiAodGVybWluYWxDb2RlICE9IFNlcmlhbGl6YXRpb25SZXR1cm5D
b2RlOjpTdWNjZXNzZnVsbHlDb21wbGV0ZWQpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gdGVybWluYWxDb2RlOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
ICAgICB9CkBAIC0xNDU0LDEzICsxNDU3LDExIEBAIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlIENs
b25lU2VyaWFsaXplcjoKICAgICAgICAgc3RhdGVTdGFjay5yZW1vdmVMYXN0KCk7CiAgICAgfQog
ICAgIGlmIChtX2ZhaWxlZCkKLSAgICAgICAgcmV0dXJuIFVuc3BlY2lmaWVkRXJyb3I7CisgICAg
ICAgIHJldHVybiBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZTo6VW5zcGVjaWZpZWRFcnJvcjsKIAot
ICAgIHJldHVybiBTdWNjZXNzZnVsbHlDb21wbGV0ZWQ7CisgICAgcmV0dXJuIFNlcmlhbGl6YXRp
b25SZXR1cm5Db2RlOjpTdWNjZXNzZnVsbHlDb21wbGV0ZWQ7CiB9CiAKLXR5cGVkZWYgVmVjdG9y
PEpTQzo6QXJyYXlCdWZmZXJDb250ZW50cz4gQXJyYXlCdWZmZXJDb250ZW50c0FycmF5OwotCiBj
bGFzcyBDbG9uZURlc2VyaWFsaXplciA6IENsb25lQmFzZSB7CiBwdWJsaWM6CiAgICAgc3RhdGlj
IFN0cmluZyBkZXNlcmlhbGl6ZVN0cmluZyhjb25zdCBWZWN0b3I8dWludDhfdD4mIGJ1ZmZlcikK
QEAgLTE0ODksMTAgKzE0OTAsMTAgQEAgcHVibGljOgogICAgIHN0YXRpYyBEZXNlcmlhbGl6YXRp
b25SZXN1bHQgZGVzZXJpYWxpemUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4mIG1lc3NhZ2VQb3J0cywgQXJy
YXlCdWZmZXJDb250ZW50c0FycmF5KiBhcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXksIGNvbnN0IFZl
Y3Rvcjx1aW50OF90PiYgYnVmZmVyLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIGNv
bnN0IFZlY3RvcjxTdHJpbmc+IGJsb2JGaWxlUGF0aHMpCiAgICAgewogICAgICAgICBpZiAoIWJ1
ZmZlci5zaXplKCkpCi0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIoanNOdWxsKCks
IFVuc3BlY2lmaWVkRXJyb3IpOworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKGpz
TnVsbCgpLCBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZTo6VW5zcGVjaWZpZWRFcnJvcik7CiAgICAg
ICAgIENsb25lRGVzZXJpYWxpemVyIGRlc2VyaWFsaXplcihleGVjLCBnbG9iYWxPYmplY3QsIG1l
c3NhZ2VQb3J0cywgYXJyYXlCdWZmZXJDb250ZW50c0FycmF5LCBidWZmZXIsIGJsb2JVUkxzLCBi
bG9iRmlsZVBhdGhzKTsKICAgICAgICAgaWYgKCFkZXNlcmlhbGl6ZXIuaXNWYWxpZCgpKQotICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKEpTVmFsdWUoKSwgVmFsaWRhdGlvbkVycm9y
KTsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihKU1ZhbHVlKCksIFNlcmlhbGl6
YXRpb25SZXR1cm5Db2RlOjpWYWxpZGF0aW9uRXJyb3IpOwogICAgICAgICByZXR1cm4gZGVzZXJp
YWxpemVyLmRlc2VyaWFsaXplKCk7CiAgICAgfQogCkBAIC0xNTY5LDEzICsxNTcwLDYgQEAgcHJp
dmF0ZToKIAogICAgIERlc2VyaWFsaXphdGlvblJlc3VsdCBkZXNlcmlhbGl6ZSgpOwogCi0gICAg
dm9pZCB0aHJvd1ZhbGlkYXRpb25FcnJvcigpCi0gICAgewotICAgICAgICBWTSYgdm0gPSBtX2V4
ZWMtPnZtKCk7Ci0gICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
LSAgICAgICAgdGhyb3dUeXBlRXJyb3IobV9leGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJVbmFi
bGUgdG8gZGVzZXJpYWxpemUgZGF0YS4iKSk7Ci0gICAgfQotCiAgICAgYm9vbCBpc1ZhbGlkKCkg
Y29uc3QgeyByZXR1cm4gbV92ZXJzaW9uIDw9IEN1cnJlbnRWZXJzaW9uOyB9CiAKICAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4gYm9vbCByZWFkTGl0dGxlRW5kaWFuKFQmIHZhbHVlKQpAQCAtMjUy
OCw3ICsyNTIyLDcgQEAgRGVzZXJpYWxpemF0aW9uUmVzdWx0IENsb25lRGVzZXJpYWxpemVyOgog
ICAgICAgICBvYmplY3RTdGFydFN0YXRlOgogICAgICAgICBjYXNlIE9iamVjdFN0YXJ0U3RhdGU6
IHsKICAgICAgICAgICAgIGlmIChvdXRwdXRPYmplY3RTdGFjay5zaXplKCkgPiBtYXhpbXVtRmls
dGVyUmVjdXJzaW9uKQotICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihKU1Zh
bHVlKCksIFN0YWNrT3ZlcmZsb3dFcnJvcik7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bWFrZV9wYWlyKEpTVmFsdWUoKSwgU2VyaWFsaXphdGlvblJldHVybkNvZGU6OlN0YWNrT3ZlcmZs
b3dFcnJvcik7CiAgICAgICAgICAgICBKU09iamVjdCogb3V0T2JqZWN0ID0gY29uc3RydWN0RW1w
dHlPYmplY3QobV9leGVjLCBtX2dsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpOwogICAg
ICAgICAgICAgbV9nY0J1ZmZlci5hcHBlbmQob3V0T2JqZWN0KTsKICAgICAgICAgICAgIG91dHB1
dE9iamVjdFN0YWNrLmFwcGVuZChvdXRPYmplY3QpOwpAQCAtMjU2Myw3ICsyNTU3LDcgQEAgRGVz
ZXJpYWxpemF0aW9uUmVzdWx0IENsb25lRGVzZXJpYWxpemVyOgogICAgICAgICB9CiAgICAgICAg
IG1hcE9iamVjdFN0YXJ0U3RhdGU6IHsKICAgICAgICAgICAgIGlmIChvdXRwdXRPYmplY3RTdGFj
ay5zaXplKCkgPiBtYXhpbXVtRmlsdGVyUmVjdXJzaW9uKQotICAgICAgICAgICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfcGFpcihKU1ZhbHVlKCksIFN0YWNrT3ZlcmZsb3dFcnJvcik7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKEpTVmFsdWUoKSwgU2VyaWFsaXphdGlvblJl
dHVybkNvZGU6OlN0YWNrT3ZlcmZsb3dFcnJvcik7CiAgICAgICAgICAgICBKU01hcCogbWFwID0g
SlNNYXA6OmNyZWF0ZShtX2V4ZWMsIG1fZXhlYy0+dm0oKSwgbV9nbG9iYWxPYmplY3QtPm1hcFN0
cnVjdHVyZSgpKTsKICAgICAgICAgICAgIGlmIChVTkxJS0VMWShzY29wZS5leGNlcHRpb24oKSkp
CiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKQEAgLTI1OTQsNyArMjU4OCw3IEBAIERlc2Vy
aWFsaXphdGlvblJlc3VsdCBDbG9uZURlc2VyaWFsaXplcjoKIAogICAgICAgICBzZXRPYmplY3RT
dGFydFN0YXRlOiB7CiAgICAgICAgICAgICBpZiAob3V0cHV0T2JqZWN0U3RhY2suc2l6ZSgpID4g
bWF4aW11bUZpbHRlclJlY3Vyc2lvbikKLSAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjptYWtl
X3BhaXIoSlNWYWx1ZSgpLCBTdGFja092ZXJmbG93RXJyb3IpOworICAgICAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om1ha2VfcGFpcihKU1ZhbHVlKCksIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlOjpT
dGFja092ZXJmbG93RXJyb3IpOwogICAgICAgICAgICAgSlNTZXQqIHNldCA9IEpTU2V0OjpjcmVh
dGUobV9leGVjLCBtX2V4ZWMtPnZtKCksIG1fZ2xvYmFsT2JqZWN0LT5zZXRTdHJ1Y3R1cmUoKSk7
CiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoc2NvcGUuZXhjZXB0aW9uKCkpKQogICAgICAgICAg
ICAgICAgIGdvdG8gZXJyb3I7CkBAIC0yNjQzLDEwICsyNjM3LDEwIEBAIERlc2VyaWFsaXphdGlv
blJlc3VsdCBDbG9uZURlc2VyaWFsaXplcjoKICAgICB9CiAgICAgQVNTRVJUKG91dFZhbHVlKTsK
ICAgICBBU1NFUlQoIW1fZmFpbGVkKTsKLSAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIob3V0VmFs
dWUsIFN1Y2Nlc3NmdWxseUNvbXBsZXRlZCk7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKG91
dFZhbHVlLCBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZTo6U3VjY2Vzc2Z1bGx5Q29tcGxldGVkKTsK
IGVycm9yOgogICAgIGZhaWwoKTsKLSAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIoSlNWYWx1ZSgp
LCBWYWxpZGF0aW9uRXJyb3IpOworICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihKU1ZhbHVlKCks
IFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlOjpWYWxpZGF0aW9uRXJyb3IpOwogfQogCiBTZXJpYWxp
emVkU2NyaXB0VmFsdWU6On5TZXJpYWxpemVkU2NyaXB0VmFsdWUoKQpAQCAtMjY2OSwxOSArMjY2
MywxMiBAQCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OlNlcmlhbGl6ZWRTY3JpcHRWCiAgICAgICAg
IG1fYmxvYlVSTHMuYXBwZW5kKHVybC5pc29sYXRlZENvcHkoKSk7CiB9CiAKLXN0ZDo6dW5pcXVl
X3B0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU6OkFycmF5QnVmZmVyQ29udGVudHNBcnJheT4gU2Vy
aWFsaXplZFNjcmlwdFZhbHVlOjp0cmFuc2ZlckFycmF5QnVmZmVycygKLSAgICBFeGVjU3RhdGUq
IGV4ZWMsIFZlY3RvcjxSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4+JiBhcnJheUJ1ZmZlcnMsIFNl
cmlhbGl6YXRpb25SZXR1cm5Db2RlJiBjb2RlKQorRXhjZXB0aW9uT3I8c3RkOjp1bmlxdWVfcHRy
PEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6dHJhbnNm
ZXJBcnJheUJ1ZmZlcnMoY29uc3QgVmVjdG9yPFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPj4mIGFy
cmF5QnVmZmVycykKIHsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFycmF5QnVmZmVycy5z
aXplKCk7IGkrKykgewotICAgICAgICBpZiAoYXJyYXlCdWZmZXJzW2ldLT5pc05ldXRlcmVkKCkp
IHsKLSAgICAgICAgICAgIGNvZGUgPSBWYWxpZGF0aW9uRXJyb3I7Ci0gICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLSAgICAgICAgfQotICAgIH0KKyAgICBpZiAoYXJyYXlCdWZmZXJzLmlzRW1w
dHkoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBhdXRvIGNvbnRlbnRzID0gc3Rk
OjptYWtlX3VuaXF1ZTxBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+KGFycmF5QnVmZmVycy5zaXpl
KCkpOwotICAgIFZlY3RvcjxSZWY8RE9NV3JhcHBlcldvcmxkPj4gd29ybGRzOwotICAgIHN0YXRp
Y19jYXN0PEpTVk1DbGllbnREYXRhKj4oZXhlYy0+dm0oKS5jbGllbnREYXRhKS0+Z2V0QWxsV29y
bGRzKHdvcmxkcyk7CiAKICAgICBIYXNoU2V0PEpTQzo6QXJyYXlCdWZmZXIqPiB2aXNpdGVkOwog
ICAgIGZvciAoc2l6ZV90IGFycmF5QnVmZmVySW5kZXggPSAwOyBhcnJheUJ1ZmZlckluZGV4IDwg
YXJyYXlCdWZmZXJzLnNpemUoKTsgYXJyYXlCdWZmZXJJbmRleCsrKSB7CkBAIC0yNjkwLDI5ICsy
Njc3LDIwIEBAIHN0ZDo6dW5pcXVlX3B0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU6OkEKICAgICAg
ICAgdmlzaXRlZC5hZGQoYXJyYXlCdWZmZXJzW2FycmF5QnVmZmVySW5kZXhdLmdldCgpKTsKIAog
ICAgICAgICBib29sIHJlc3VsdCA9IGFycmF5QnVmZmVyc1thcnJheUJ1ZmZlckluZGV4XS0+dHJh
bnNmZXJUbyhjb250ZW50cy0+YXQoYXJyYXlCdWZmZXJJbmRleCkpOwotICAgICAgICBpZiAoIXJl
c3VsdCkgewotICAgICAgICAgICAgY29kZSA9IFZhbGlkYXRpb25FcnJvcjsKLSAgICAgICAgICAg
IHJldHVybiBudWxscHRyOwotICAgICAgICB9CisgICAgICAgIGlmICghcmVzdWx0KQorICAgICAg
ICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciB9OwogICAgIH0KLSAgICByZXR1cm4g
Y29udGVudHM7Ci19CiAKLVJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZTo6Y3JlYXRlKEV4ZWNTdGF0ZSYgZXhlYywgSlNWYWx1ZSB2YWx1ZSwgU2VyaWFs
aXphdGlvbkVycm9yTW9kZSB0aHJvd0V4Y2VwdGlvbnMpCi17Ci0gICAgVmVjdG9yPFJlZlB0cjxN
ZXNzYWdlUG9ydD4+IG1lc3NhZ2VQb3J0czsKLSAgICByZXR1cm4gU2VyaWFsaXplZFNjcmlwdFZh
bHVlOjpjcmVhdGUoZXhlYywgdmFsdWUsIG1lc3NhZ2VQb3J0cywgeyB9LCB0aHJvd0V4Y2VwdGlv
bnMpOworICAgIHJldHVybiBXVEZNb3ZlKGNvbnRlbnRzKTsKIH0KIAotUmVmUHRyPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoRXhlY1N0YXRlJiBl
eGVjLCBKU1ZhbHVlIHZhbHVlLCBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4mIG1lc3NhZ2VQ
b3J0cywgVmVjdG9yPFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPj4mJiBhcnJheUJ1ZmZlcnMsIFNl
cmlhbGl6YXRpb25FcnJvck1vZGUgdGhyb3dFeGNlcHRpb25zKQorUmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoRXhlY1N0YXRlJiBleGVj
LCBKU1ZhbHVlIHZhbHVlLCBTZXJpYWxpemF0aW9uRXJyb3JNb2RlIHRocm93RXhjZXB0aW9ucykK
IHsKICAgICBWZWN0b3I8dWludDhfdD4gYnVmZmVyOwogICAgIFZlY3RvcjxTdHJpbmc+IGJsb2JV
UkxzOwotICAgIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlIGNvZGUgPSBDbG9uZVNlcmlhbGl6ZXI6
OnNlcmlhbGl6ZSgmZXhlYywgdmFsdWUsIG1lc3NhZ2VQb3J0cywgYXJyYXlCdWZmZXJzLCBibG9i
VVJMcywgYnVmZmVyKTsKLQotICAgIHN0ZDo6dW5pcXVlX3B0cjxBcnJheUJ1ZmZlckNvbnRlbnRz
QXJyYXk+IGFycmF5QnVmZmVyQ29udGVudHNBcnJheTsKLSAgICBpZiAoIWFycmF5QnVmZmVycy5p
c0VtcHR5KCkgJiYgc2VyaWFsaXphdGlvbkRpZENvbXBsZXRlU3VjY2Vzc2Z1bGx5KGNvZGUpKQot
ICAgICAgICBhcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkgPSB0cmFuc2ZlckFycmF5QnVmZmVycygm
ZXhlYywgYXJyYXlCdWZmZXJzLCBjb2RlKTsKKyAgICBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0
Pj4gZHVtbXlNZXNzYWdlUG9ydHM7CisgICAgVmVjdG9yPFJlZlB0cjxKU0M6OkFycmF5QnVmZmVy
Pj4gZHVtbXlBcnJheUJ1ZmZlcnM7CisgICAgYXV0byBjb2RlID0gQ2xvbmVTZXJpYWxpemVyOjpz
ZXJpYWxpemUoJmV4ZWMsIHZhbHVlLCBkdW1teU1lc3NhZ2VQb3J0cywgZHVtbXlBcnJheUJ1ZmZl
cnMsIGJsb2JVUkxzLCBidWZmZXIpOwogCiAgICAgaWYgKHRocm93RXhjZXB0aW9ucyA9PSBUaHJv
d2luZykKICAgICAgICAgbWF5YmVUaHJvd0V4Y2VwdGlvbklmU2VyaWFsaXphdGlvbkZhaWxlZCgm
ZXhlYywgY29kZSk7CkBAIC0yNzIwLDcgKzI2OTgsNjEgQEAgUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4gU2VyaWFsaXplZAogICAgIGlmICghc2VyaWFsaXphdGlvbkRpZENvbXBsZXRlU3Vj
Y2Vzc2Z1bGx5KGNvZGUpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShXVEZNb3ZlKGJ1ZmZlciksIGJsb2JV
UkxzLCBXVEZNb3ZlKGFycmF5QnVmZmVyQ29udGVudHNBcnJheSkpKTsKKyAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBTZXJpYWxpemVkU2NyaXB0VmFsdWUoV1RGTW92ZShidWZmZXIpLCBibG9iVVJM
cywgbnVsbHB0cikpOworfQorCitFeGNlcHRpb24gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpleGNl
cHRpb25Gb3JTZXJpYWxpemF0aW9uRmFpbHVyZShTZXJpYWxpemF0aW9uUmV0dXJuQ29kZSBjb2Rl
KQoreworICAgIEFTU0VSVChjb2RlICE9IFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlOjpTdWNjZXNz
ZnVsbHlDb21wbGV0ZWQpOworICAgIAorICAgIHN3aXRjaCAoY29kZSkgeworICAgIGNhc2UgU2Vy
aWFsaXphdGlvblJldHVybkNvZGU6OlN0YWNrT3ZlcmZsb3dFcnJvcjoKKyAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IFN0YWNrT3ZlcmZsb3dFcnJvciB9OworICAgIGNhc2UgU2VyaWFsaXphdGlv
blJldHVybkNvZGU6OlZhbGlkYXRpb25FcnJvcjoKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7
IFR5cGVFcnJvciB9OworICAgIGNhc2UgU2VyaWFsaXphdGlvblJldHVybkNvZGU6OkRhdGFDbG9u
ZUVycm9yOgorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgREFUQV9DTE9ORV9FUlIgfTsKKyAg
ICBjYXNlIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlOjpFeGlzdGluZ0V4Y2VwdGlvbkVycm9yOgor
ICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJvciB9OworICAg
IGNhc2UgU2VyaWFsaXphdGlvblJldHVybkNvZGU6OlVuc3BlY2lmaWVkRXJyb3I6CisgICAgICAg
IHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IgfTsKKyAgICBkZWZhdWx0OgorICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJv
ciB9OworICAgIH0KK30KKworRXhjZXB0aW9uT3I8UmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4+
IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUg
dmFsdWUsIFZlY3RvcjxKU0M6OlN0cm9uZzxKU0M6OkpTT2JqZWN0Pj4mJiB0cmFuc2Zlckxpc3Qs
IFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYgbWVzc2FnZVBvcnRzKQoreworICAgIFZlY3Rv
cjxSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4+IGFycmF5QnVmZmVyczsKKyAgICBmb3IgKGF1dG8m
IHRyYW5zZmVyYWJsZSA6IHRyYW5zZmVyTGlzdCkgeworICAgICAgICBpZiAoUmVmUHRyPEFycmF5
QnVmZmVyPiBhcnJheUJ1ZmZlciA9IHRvUG9zc2libHlTaGFyZWRBcnJheUJ1ZmZlcih0cmFuc2Zl
cmFibGUuZ2V0KCkpKSB7CisgICAgICAgICAgICBpZiAoYXJyYXlCdWZmZXItPmlzTmV1dGVyZWQo
KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgREFUQV9DTE9ORV9FUlIgfTsK
KyAgICAgICAgICAgIGFycmF5QnVmZmVycy5hcHBlbmQoV1RGTW92ZShhcnJheUJ1ZmZlcikpOwor
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKFJlZlB0cjxNZXNz
YWdlUG9ydD4gcG9ydCA9IEpTTWVzc2FnZVBvcnQ6OnRvV3JhcHBlZCh0cmFuc2ZlcmFibGUuZ2V0
KCkpKSB7CisgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgY2hlY2sgaWYgdGhlIHBv
cnQgaXMgZGV0YWNoZWQgYXMgcGVyIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlw
YWdlL2luZnJhc3RydWN0dXJlLmh0bWwjaXN0cmFuc2ZlcmFibGUuCisgICAgICAgICAgICBtZXNz
YWdlUG9ydHMuYXBwZW5kKFdURk1vdmUocG9ydCkpOworICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgIH0KKworICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgREFUQV9DTE9ORV9FUlIgfTsK
KyAgICB9CisKKyAgICBWZWN0b3I8dWludDhfdD4gYnVmZmVyOworICAgIFZlY3RvcjxTdHJpbmc+
IGJsb2JVUkxzOworICAgIGF1dG8gY29kZSA9IENsb25lU2VyaWFsaXplcjo6c2VyaWFsaXplKCZz
dGF0ZSwgdmFsdWUsIG1lc3NhZ2VQb3J0cywgYXJyYXlCdWZmZXJzLCBibG9iVVJMcywgYnVmZmVy
KTsKKworICAgIGlmIChjb2RlICE9IFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlOjpTdWNjZXNzZnVs
bHlDb21wbGV0ZWQpCisgICAgICAgIHJldHVybiBleGNlcHRpb25Gb3JTZXJpYWxpemF0aW9uRmFp
bHVyZShjb2RlKTsKKworICAgIGF1dG8gYXJyYXlCdWZmZXJDb250ZW50c0FycmF5ID0gdHJhbnNm
ZXJBcnJheUJ1ZmZlcnMoYXJyYXlCdWZmZXJzKTsKKyAgICBpZiAoYXJyYXlCdWZmZXJDb250ZW50
c0FycmF5Lmhhc0V4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gYXJyYXlCdWZmZXJDb250ZW50
c0FycmF5LnJlbGVhc2VFeGNlcHRpb24oKTsKKworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZShXVEZNb3ZlKGJ1ZmZlciksIGJsb2JVUkxzLCBhcnJheUJ1ZmZl
ckNvbnRlbnRzQXJyYXkucmVsZWFzZVJldHVyblZhbHVlKCkpKTsKIH0KIAogUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoU3RyaW5nVmll
dyBzdHJpbmcpCkBAIC0yODA0LDIyICsyODM2LDIyIEBAIHZvaWQgU2VyaWFsaXplZFNjcmlwdFZh
bHVlOjptYXliZVRocm93RXgKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIGlmIChjb2RlID09IFN1Y2Nlc3Nm
dWxseUNvbXBsZXRlZCkKKyAgICBpZiAoY29kZSA9PSBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZTo6
U3VjY2Vzc2Z1bGx5Q29tcGxldGVkKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgc3dpdGNo
IChjb2RlKSB7Ci0gICAgY2FzZSBTdGFja092ZXJmbG93RXJyb3I6CisgICAgY2FzZSBTZXJpYWxp
emF0aW9uUmV0dXJuQ29kZTo6U3RhY2tPdmVyZmxvd0Vycm9yOgogICAgICAgICB0aHJvd0V4Y2Vw
dGlvbihleGVjLCBzY29wZSwgY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMpKTsKICAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBWYWxpZGF0aW9uRXJyb3I6CisgICAgY2FzZSBTZXJpYWxpemF0
aW9uUmV0dXJuQ29kZTo6VmFsaWRhdGlvbkVycm9yOgogICAgICAgICB0aHJvd1R5cGVFcnJvcihl
eGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJVbmFibGUgdG8gZGVzZXJpYWxpemUgZGF0YS4iKSk7
CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRGF0YUNsb25lRXJyb3I6CisgICAgY2FzZSBTZXJp
YWxpemF0aW9uUmV0dXJuQ29kZTo6RGF0YUNsb25lRXJyb3I6CiAgICAgICAgIHNldERPTUV4Y2Vw
dGlvbihleGVjLCBEQVRBX0NMT05FX0VSUik7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXhp
c3RpbmdFeGNlcHRpb25FcnJvcjoKKyAgICBjYXNlIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlOjpF
eGlzdGluZ0V4Y2VwdGlvbkVycm9yOgogICAgICAgICBicmVhazsKLSAgICBjYXNlIFVuc3BlY2lm
aWVkRXJyb3I6CisgICAgY2FzZSBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZTo6VW5zcGVjaWZpZWRF
cnJvcjoKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CkBAIC0yODI4LDcgKzI4NjAsNyBAQCB2b2lkIFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTo6bWF5YmVUaHJvd0V4CiAKIGJvb2wgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpzZXJpYWxpemF0
aW9uRGlkQ29tcGxldGVTdWNjZXNzZnVsbHkoU2VyaWFsaXphdGlvblJldHVybkNvZGUgY29kZSkK
IHsKLSAgICByZXR1cm4gKGNvZGUgPT0gU3VjY2Vzc2Z1bGx5Q29tcGxldGVkKTsKKyAgICByZXR1
cm4gKGNvZGUgPT0gU2VyaWFsaXphdGlvblJldHVybkNvZGU6OlN1Y2Nlc3NmdWxseUNvbXBsZXRl
ZCk7CiB9CiAKIHVpbnQzMl90IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6d2lyZUZvcm1hdFZlcnNp
b24oKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmgJKHJldmlzaW9uIDIwOTI3MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsy
Niw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKICNpbmNs
dWRlIDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgogI2luY2x1ZGUgPGhlYXAvU3Ryb25nLmg+CiAj
aW5jbHVkZSA8cnVudGltZS9BcnJheUJ1ZmZlci5oPgpAQCAtNDIsMjUgKzQzLDE4IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSURCVmFsdWU7CiBjbGFzcyBNZXNzYWdlUG9ydDsKLSAK
LWVudW0gU2VyaWFsaXphdGlvblJldHVybkNvZGUgewotICAgIFN1Y2Nlc3NmdWxseUNvbXBsZXRl
ZCwKLSAgICBTdGFja092ZXJmbG93RXJyb3IsCi0gICAgSW50ZXJydXB0ZWRFeGVjdXRpb25FcnJv
ciwKLSAgICBWYWxpZGF0aW9uRXJyb3IsCi0gICAgRXhpc3RpbmdFeGNlcHRpb25FcnJvciwKLSAg
ICBEYXRhQ2xvbmVFcnJvciwKLSAgICBVbnNwZWNpZmllZEVycm9yCi19OwotICAgIAorY2xhc3Mg
U2hhcmVkQnVmZmVyOworZW51bSBjbGFzcyBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZTsKKwogZW51
bSBTZXJpYWxpemF0aW9uRXJyb3JNb2RlIHsgTm9uVGhyb3dpbmcsIFRocm93aW5nIH07CiAKLWNs
YXNzIFNoYXJlZEJ1ZmZlcjsKK3VzaW5nIEFycmF5QnVmZmVyQ29udGVudHNBcnJheSA9IFZlY3Rv
cjxKU0M6OkFycmF5QnVmZmVyQ29udGVudHM+OwogCiBjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFs
dWUgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB7
CiBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+IGNyZWF0ZShKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSwgU2VyaWFsaXph
dGlvbkVycm9yTW9kZSA9IFRocm93aW5nKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVm
UHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gY3JlYXRlKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpK
U1ZhbHVlLCBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4mLCBWZWN0b3I8UmVmUHRyPEpTQzo6
QXJyYXlCdWZmZXI+PiYmLCBTZXJpYWxpemF0aW9uRXJyb3JNb2RlID0gVGhyb3dpbmcpOworCisg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+PiBjcmVhdGUoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUsIFZlY3RvcjxKU0M6
OlN0cm9uZzxKU0M6OkpTT2JqZWN0Pj4mJiwgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+Jik7
CiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4gY3JlYXRlKFN0cmluZ1ZpZXcpOwogICAgIHN0YXRpYyBSZWY8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiBhZG9wdChWZWN0b3I8dWludDhfdD4mJiBidWZmZXIpCkBAIC0xMDAsMTAgKzk0LDExIEBA
IHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB+U2VyaWFsaXplZFNjcmlwdFZhbHVlKCk7CiAK
IHByaXZhdGU6Ci0gICAgdHlwZWRlZiBWZWN0b3I8SlNDOjpBcnJheUJ1ZmZlckNvbnRlbnRzPiBB
cnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk7CiAgICAgc3RhdGljIHZvaWQgbWF5YmVUaHJvd0V4Y2Vw
dGlvbklmU2VyaWFsaXphdGlvbkZhaWxlZChKU0M6OkV4ZWNTdGF0ZSosIFNlcmlhbGl6YXRpb25S
ZXR1cm5Db2RlKTsKICAgICBzdGF0aWMgYm9vbCBzZXJpYWxpemF0aW9uRGlkQ29tcGxldGVTdWNj
ZXNzZnVsbHkoU2VyaWFsaXphdGlvblJldHVybkNvZGUpOwotICAgIHN0YXRpYyBzdGQ6OnVuaXF1
ZV9wdHI8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5PiB0cmFuc2ZlckFycmF5QnVmZmVycyhKU0M6
OkV4ZWNTdGF0ZSosIFZlY3RvcjxSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4+JiwgU2VyaWFsaXph
dGlvblJldHVybkNvZGUmKTsKKyAgICBzdGF0aWMgRXhjZXB0aW9uIGV4Y2VwdGlvbkZvclNlcmlh
bGl6YXRpb25GYWlsdXJlKFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlKTsKKworICAgIHN0YXRpYyBF
eGNlcHRpb25PcjxzdGQ6OnVuaXF1ZV9wdHI8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5Pj4gdHJh
bnNmZXJBcnJheUJ1ZmZlcnMoY29uc3QgVmVjdG9yPFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPj4m
KTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShWZWN0b3I8dW5z
aWduZWQgY2hhcj4mJik7CiAgICAgU2VyaWFsaXplZFNjcmlwdFZhbHVlKFZlY3Rvcjx1bnNpZ25l
ZCBjaGFyPiYmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIHN0ZDo6dW5pcXVlX3B0
cjxBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+JiYpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbQkocmV2aXNpb24gMjA5MjcxKQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtCSh3b3Jr
aW5nIGNvcHkpCkBAIC01OTcsNiArNTk3LDcgQEAgc3ViIElzUmVmUHRyVHlwZQogICAgIHJldHVy
biAwIGlmICRvYmplY3QtPklzU3RyaW5nVHlwZSgkdHlwZSk7CiAgICAgcmV0dXJuIDAgaWYgJHR5
cGUtPmlzVW5pb247CiAgICAgcmV0dXJuIDAgaWYgJHR5cGUtPm5hbWUgZXEgImFueSI7CisgICAg
cmV0dXJuIDAgaWYgJHR5cGUtPm5hbWUgZXEgIm9iamVjdCI7CiAKICAgICByZXR1cm4gMTsKIH0K
QEAgLTg2Miw2ICs4NjMsNyBAQCBzdWIgSXNCdWlsdGluVHlwZQogICAgIHJldHVybiAxIGlmICRv
YmplY3QtPklzVHlwZWRBcnJheVR5cGUoJHR5cGUpOwogICAgIHJldHVybiAxIGlmICR0eXBlLT5p
c1VuaW9uOwogICAgIHJldHVybiAxIGlmICR0eXBlLT5uYW1lIGVxICJhbnkiOworICAgIHJldHVy
biAxIGlmICR0eXBlLT5uYW1lIGVxICJvYmplY3QiOwogICAgIHJldHVybiAxIGlmICR0eXBlLT5u
YW1lIGVxICJCdWZmZXJTb3VyY2UiOwogICAgIHJldHVybiAxIGlmICR0eXBlLT5uYW1lIGVxICJQ
cm9taXNlIjsKICAgICByZXR1cm4gMSBpZiAkdHlwZS0+bmFtZSBlcSAiWFBhdGhOU1Jlc29sdmVy
IjsgICAgCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JKUy5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JKUy5wbQkocmV2aXNpb24gMjA5MjcxKQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHdvcmtpbmcgY29weSkKQEAgLTI3OSw2
ICsyNzksNyBAQCBzdWIgQWRkVG9JbmNsdWRlc0ZvcklETFR5cGUKICAgICByZXR1cm4gaWYgJGNv
ZGVHZW5lcmF0b3ItPklzU3RyaW5nVHlwZSgkdHlwZSk7CiAgICAgcmV0dXJuIGlmICRjb2RlR2Vu
ZXJhdG9yLT5Jc1R5cGVkQXJyYXlUeXBlKCR0eXBlKTsKICAgICByZXR1cm4gaWYgJHR5cGUtPm5h
bWUgZXEgImFueSI7CisgICAgcmV0dXJuIGlmICR0eXBlLT5uYW1lIGVxICJvYmplY3QiOwogCiAg
ICAgaWYgKCR0eXBlLT5pc1VuaW9uKSB7CiAgICAgICAgIEFkZFRvSW5jbHVkZXMoIjx3dGYvVmFy
aWFudC5oPiIsICRpbmNsdWRlc1JlZiwgJGNvbmRpdGlvbmFsKTsKQEAgLTQ5NzAsNiArNDk3MSw3
IEBAIG15ICVuYXRpdmVUeXBlID0gKAogICAgICJTZXJpYWxpemVkU2NyaXB0VmFsdWUiID0+ICJS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiIsCiAgICAgIlhQYXRoTlNSZXNvbHZlciIgPT4g
IlJlZlB0cjxYUGF0aE5TUmVzb2x2ZXI+IiwKICAgICAiYW55IiA9PiAiSlNDOjpKU1ZhbHVlIiwK
KyAgICAib2JqZWN0IiA9PiAiSlNDOjpTdHJvbmc8SlNDOjpKU09iamVjdD4iLAogICAgICJib29s
ZWFuIiA9PiAiYm9vbCIsCiAgICAgImJ5dGUiID0+ICJpbnQ4X3QiLAogICAgICJkb3VibGUiID0+
ICJkb3VibGUiLApAQCAtNTA1OCw2ICs1MDYwLDcgQEAgc3ViIEdldEJhc2VJRExUeXBlCiAgICAg
ICAgICJET01TdHJpbmciID0+ICJJRExET01TdHJpbmciLAogICAgICAgICAiQnl0ZVN0cmluZyIg
PT4gIklETEJ5dGVTdHJpbmciLAogICAgICAgICAiVVNWU3RyaW5nIiA9PiAiSURMVVNWU3RyaW5n
IiwKKyAgICAgICAgIm9iamVjdCIgPT4gIklETE9iamVjdCIsCiAgICAgICAgIAogICAgICAgICAj
IE5vbi1XZWJJREwgZXh0ZW5zaW9ucwogICAgICAgICAiRGF0ZSIgPT4gIklETERhdGUiLApJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlk
bAkocmV2aXNpb24gMjA5MjcxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Rlc3RPYmouaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yMzMsNiArMjMzLDcgQEAgZW51bSBU
ZXN0Q29uZmlkZW5jZSB7ICJoaWdoIiwgImtpbmRhLWxvdwogICAgIHZvaWQgICAgbWV0aG9kV2l0
aE9wdGlvbmFsQm9vbGVhbihvcHRpb25hbCBib29sZWFuIGIpOwogICAgIHZvaWQgICAgbWV0aG9k
V2l0aE9wdGlvbmFsQm9vbGVhbklzRmFsc2Uob3B0aW9uYWwgYm9vbGVhbiBiID0gZmFsc2UpOwog
ICAgIHZvaWQgICAgbWV0aG9kV2l0aE9wdGlvbmFsQW55KG9wdGlvbmFsIGFueSBhKTsKKyAgICB2
b2lkICAgIG1ldGhvZFdpdGhPcHRpb25hbE9iamVjdChvcHRpb25hbCBvYmplY3QgYSk7CiAgICAg
dm9pZCAgICBtZXRob2RXaXRoT3B0aW9uYWxOdWxsYWJsZVdyYXBwZXIob3B0aW9uYWwgVGVzdE9i
aj8gb2JqKTsKICAgICB2b2lkICAgIG1ldGhvZFdpdGhPcHRpb25hbE51bGxhYmxlV3JhcHBlcklz
TnVsbChvcHRpb25hbCBUZXN0T2JqPyBvYmogPSBudWxsKTsKICAgICB2b2lkICAgIG1ldGhvZFdp
dGhPcHRpb25hbFhQYXRoTlNSZXNvbHZlcihvcHRpb25hbCBYUGF0aE5TUmVzb2x2ZXI/IHJlc29s
dmVyKTsKQEAgLTI3Miw2ICsyNzMsNyBAQCBlbnVtIFRlc3RDb25maWRlbmNlIHsgImhpZ2giLCAi
a2luZGEtbG93CiAgICAgW0NhY2hlZEF0dHJpYnV0ZV0gcmVhZG9ubHkgYXR0cmlidXRlIGFueSBj
YWNoZWRBdHRyaWJ1dGUyOwogICAgIAogICAgIGF0dHJpYnV0ZSBhbnkgYW55QXR0cmlidXRlOwor
ICAgIGF0dHJpYnV0ZSBvYmplY3Qgb2JqZWN0QXR0cmlidXRlOwogCiAgICAgLy8gT3ZlcmxvYWRz
CiAgICAgdm9pZCAgICBvdmVybG9hZGVkTWV0aG9kKFRlc3RPYmo/IG9iakFyZywgRE9NU3RyaW5n
IHN0ckFyZyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0T2JqLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAkocmV2aXNpb24gMjA5MjcxKQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEwMTUsNiArMTAxNSw3IEBAIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3QKIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEJvb2xlYW4oSlNDOjpFeGVjU3RhdGUqKTsK
IEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk1ldGhvZFdpdGhPcHRpb25hbEJvb2xlYW5Jc0ZhbHNlKEpTQzo6RXhlY1N0YXRlKik7CiBK
U0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RXaXRoT3B0aW9uYWxBbnkoSlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhP
cHRpb25hbE9iamVjdChKU0M6OkV4ZWNTdGF0ZSopOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsTnVs
bGFibGVXcmFwcGVyKEpTQzo6RXhlY1N0YXRlKik7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxOdWxs
YWJsZVdyYXBwZXJJc051bGwoSlNDOjpFeGVjU3RhdGUqKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25h
bFhQYXRoTlNSZXNvbHZlcihKU0M6OkV4ZWNTdGF0ZSopOwpAQCAtMTI0MCw2ICsxMjQxLDggQEAg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDYWNoZWRBdHRyaQogSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpDYWNoZWRBdHRyaWJ1dGUyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpBbnlBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBK
U0M6OlByb3BlcnR5TmFtZSk7CiBib29sIHNldEpTVGVzdE9iakFueUF0dHJpYnV0ZShKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpPYmplY3RBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Citib29sIHNldEpTVGVz
dE9iak9iamVjdEF0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUs
IEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb250
ZW50RG9jdW1lbnQoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlBy
b3BlcnR5TmFtZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iak11dGFibGVQb2ludChK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsK
IGJvb2wgc2V0SlNUZXN0T2JqTXV0YWJsZVBvaW50KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CkBAIC0xNTQwLDYgKzE1NDMsNyBAQCBz
dGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0T2JqUHJvCiAgICAgeyAiY2FjaGVkQXR0
cmlidXRlMSIsIFJlYWRPbmx5IHwgQ3VzdG9tQWNjZXNzb3IsIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqQ2Fj
aGVkQXR0cmlidXRlMSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KDApIH0gfSwKICAgICB7ICJjYWNoZWRBdHRyaWJ1dGUyIiwgUmVhZE9ubHkg
fCBDdXN0b21BY2Nlc3NvciwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFBy
b3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpDYWNoZWRBdHRyaWJ1dGUyKSwgKGlu
dHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9
LAogICAgIHsgImFueUF0dHJpYnV0ZSIsIEN1c3RvbUFjY2Vzc29yLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9i
akFueUF0dHJpYnV0ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KHNldEpTVGVzdE9iakFueUF0dHJpYnV0ZSkgfSB9LAorICAgIHsgIm9iamVj
dEF0dHJpYnV0ZSIsIEN1c3RvbUFjY2Vzc29yLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9iak9iamVjdEF0dHJp
YnV0ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1
bmM+KHNldEpTVGVzdE9iak9iamVjdEF0dHJpYnV0ZSkgfSB9LAogICAgIHsgImNvbnRlbnREb2N1
bWVudCIsIFJlYWRPbmx5IHwgQ3VzdG9tQWNjZXNzb3IsIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqQ29udGVu
dERvY3VtZW50KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZh
bHVlRnVuYz4oMCkgfSB9LAogICAgIHsgIm11dGFibGVQb2ludCIsIEN1c3RvbUFjY2Vzc29yLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1
ZUZ1bmM+KGpzVGVzdE9iak11dGFibGVQb2ludCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0
UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdE9iak11dGFibGVQb2ludCkgfSB9
LAogICAgIHsgImltbXV0YWJsZVBvaW50IiwgQ3VzdG9tQWNjZXNzb3IsIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0
T2JqSW1tdXRhYmxlUG9pbnQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xv
dDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RPYmpJbW11dGFibGVQb2ludCkgfSB9LApAQCAtMTY1
Miw2ICsxNjU2LDcgQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE9ialBybwog
ICAgIHsgIm1ldGhvZFdpdGhPcHRpb25hbEJvb2xlYW4iLCBKU0M6OkZ1bmN0aW9uLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQm9vbGVhbiksIChpbnRwdHJfdCkgKDAp
IH0gfSwKICAgICB7ICJtZXRob2RXaXRoT3B0aW9uYWxCb29sZWFuSXNGYWxzZSIsIEpTQzo6RnVu
Y3Rpb24sIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlv
bj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxCb29sZWFuSXNG
YWxzZSksIChpbnRwdHJfdCkgKDApIH0gfSwKICAgICB7ICJtZXRob2RXaXRoT3B0aW9uYWxBbnki
LCBKU0M6OkZ1bmN0aW9uLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0
aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFs
QW55KSwgKGludHB0cl90KSAoMCkgfSB9LAorICAgIHsgIm1ldGhvZFdpdGhPcHRpb25hbE9iamVj
dCIsIEpTQzo6RnVuY3Rpb24sIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxO
YXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9u
YWxPYmplY3QpLCAoaW50cHRyX3QpICgwKSB9IH0sCiAgICAgeyAibWV0aG9kV2l0aE9wdGlvbmFs
TnVsbGFibGVXcmFwcGVyIiwgSlNDOjpGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90
KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1l
dGhvZFdpdGhPcHRpb25hbE51bGxhYmxlV3JhcHBlciksIChpbnRwdHJfdCkgKDApIH0gfSwKICAg
ICB7ICJtZXRob2RXaXRoT3B0aW9uYWxOdWxsYWJsZVdyYXBwZXJJc051bGwiLCBKU0M6OkZ1bmN0
aW9uLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+
KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsTnVsbGFibGVXcmFw
cGVySXNOdWxsKSwgKGludHB0cl90KSAoMCkgfSB9LAogICAgIHsgIm1ldGhvZFdpdGhPcHRpb25h
bFhQYXRoTlNSZXNvbHZlciIsIEpTQzo6RnVuY3Rpb24sIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25N
ZXRob2RXaXRoT3B0aW9uYWxYUGF0aE5TUmVzb2x2ZXIpLCAoaW50cHRyX3QpICgwKSB9IH0sCkBA
IC0zMDI1LDYgKzMwMzAsMjIgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdE9iakFueUF0
dHJpYgogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK3N0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rl
c3RPYmpPYmplY3RBdHRyaWJ1dGVHZXR0ZXIoRXhlY1N0YXRlJiwgSlNUZXN0T2JqJiwgVGhyb3dT
Y29wZSYgdGhyb3dTY29wZSk7CisKK0VuY29kZWRKU1ZhbHVlIGpzVGVzdE9iak9iamVjdEF0dHJp
YnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkKK3sKKyAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RPYmo+OjphdHRyaWJ1dGU8
anNUZXN0T2JqT2JqZWN0QXR0cmlidXRlR2V0dGVyPihzdGF0ZSwgdGhpc1ZhbHVlLCAib2JqZWN0
QXR0cmlidXRlIik7Cit9CisKK3N0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RPYmpPYmplY3RB
dHRyaWJ1dGVHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0T2JqJiB0aGlzT2JqZWN0LCBU
aHJvd1Njb3BlJiB0aHJvd1Njb3BlKQoreworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsK
KyAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURMT2JqZWN0PihpbXBsLm9iamVj
dEF0dHJpYnV0ZSgpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiBzdGF0aWMgaW5saW5lIEpT
VmFsdWUganNUZXN0T2JqQ29udGVudERvY3VtZW50R2V0dGVyKEV4ZWNTdGF0ZSYsIEpTVGVzdE9i
aiYsIFRocm93U2NvcGUmIHRocm93U2NvcGUpOwogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpD
b250ZW50RG9jdW1lbnQoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpCkBAIC00NjIzLDYgKzQ2NDQsMjUgQEAgc3RhdGljIGlubGluZSBib29s
IHNldEpTVGVzdE9iakFueUF0dHJpYgogfQogCiAKK3N0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rl
c3RPYmpPYmplY3RBdHRyaWJ1dGVGdW5jdGlvbihFeGVjU3RhdGUmLCBKU1Rlc3RPYmomLCBKU1Zh
bHVlLCBUaHJvd1Njb3BlJik7CisKK2Jvb2wgc2V0SlNUZXN0T2JqT2JqZWN0QXR0cmlidXRlKEV4
ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlKQoreworICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdE9iaj46OnNl
dEF0dHJpYnV0ZTxzZXRKU1Rlc3RPYmpPYmplY3RBdHRyaWJ1dGVGdW5jdGlvbj4oc3RhdGUsIHRo
aXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAib2JqZWN0QXR0cmlidXRlIik7Cit9CisKK3N0YXRpYyBp
bmxpbmUgYm9vbCBzZXRKU1Rlc3RPYmpPYmplY3RBdHRyaWJ1dGVGdW5jdGlvbihFeGVjU3RhdGUm
IHN0YXRlLCBKU1Rlc3RPYmomIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFRocm93U2NvcGUm
IHRocm93U2NvcGUpCit7CisgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBVTlVTRURfUEFS
QU0odGhyb3dTY29wZSk7CisgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwor
ICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETE9iamVjdD4oc3RhdGUsIHZhbHVlKTsK
KyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKKyAgICBpbXBsLnNl
dE9iamVjdEF0dHJpYnV0ZShXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CisgICAgcmV0dXJuIHRydWU7
Cit9CisKKwogc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdE9iak11dGFibGVQb2ludEZ1bmN0
aW9uKEV4ZWNTdGF0ZSYsIEpTVGVzdE9iaiYsIEpTVmFsdWUsIFRocm93U2NvcGUmKTsKIAogYm9v
bCBzZXRKU1Rlc3RPYmpNdXRhYmxlUG9pbnQoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCkBAIC02NDMzLDYgKzY0
NzMsMjQgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKK3N0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhP
cHRpb25hbE9iamVjdENhbGxlcihKU0M6OkV4ZWNTdGF0ZSosIEpTVGVzdE9iaiosIEpTQzo6VGhy
b3dTY29wZSYpOworCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsT2JqZWN0KEV4ZWNTdGF0ZSogc3RhdGUpCit7
CisgICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0T2JqPjo6Y2FsbE9wZXJhdGlvbjxqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbE9iamVjdENhbGxlcj4oc3Rh
dGUsICJtZXRob2RXaXRoT3B0aW9uYWxPYmplY3QiKTsKK30KKworc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlv
bmFsT2JqZWN0Q2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNUZXN0T2JqKiBjYXN0ZWRU
aGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCit7CisgICAgVU5VU0VEX1BBUkFNKHN0
YXRlKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CisgICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPndyYXBwZWQoKTsKKyAgICBhdXRvIGEgPSBzdGF0ZS0+YXJndW1lbnQoMCkuaXNV
bmRlZmluZWQoKSA/IHN0ZDo6b3B0aW9uYWw8SlNDOjpTdHJvbmc8SlNDOjpKU09iamVjdD4+KCkg
OiBjb252ZXJ0PElETE9iamVjdD4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkp
OworICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
CisgICAgaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxPYmplY3QoV1RGTW92ZShhKSk7CisgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKK30KKwogc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9w
dGlvbmFsTnVsbGFibGVXcmFwcGVyQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiwgSlNUZXN0T2JqKiwg
SlNDOjpUaHJvd1Njb3BlJik7CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxOdWxsYWJsZVdyYXBwZXIoRXhl
Y1N0YXRlKiBzdGF0ZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FeGNlcHRpb25Db2RlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0V4Y2VwdGlvbkNvZGUuaAkocmV2aXNp
b24gMjA5MjcxKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0V4Y2VwdGlvbkNvZGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNzIsNiArNzIsMTIgQEAgZW51bSB7CiAgICAgT3BlcmF0aW9uRXJyb3IsCiAg
ICAgTm90QWxsb3dlZEVycm9yLAogCisgICAgLy8gTm9uLXN0YW5kYXJkIGVycm9ycworICAgIFN0
YWNrT3ZlcmZsb3dFcnJvciwKKworICAgIC8vIFVzZWQgdG8gaW5kaWNhdGUgdG8gdGhlIGJpbmRp
bmdzIHRoYXQgYSBKUyBleGNlcHRpb24gd2FzIHRocm93biBiZWxvdyBhbmQgaXQgc2hvdWxkIGJl
IHByb3BvZ2F0ZWQuCisgICAgRXhpc3RpbmdFeGNlcHRpb25FcnJvciwKKwogICAgIC8vIFdlYklE
TCBleGNlcHRpb24gdHlwZXMsIGhhbmRsZWQgYnkgdGhlIGJpbmRpbmcgbGF5ZXIuCiAgICAgLy8g
RklYTUU6IEFkZCBHZW5lcmFsRXJyb3IsIEV2YWxFcnJvciwgZXRjLiB3aGVuIGltcGxlbWVudGVk
IGluIHRoZSBiaW5kaW5ncy4KICAgICBUeXBlRXJyb3IgPSAxMDUsCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9kb20vTWVzc2FnZVBvcnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Rv
bS9NZXNzYWdlUG9ydC5jcHAJKHJldmlzaW9uIDIwOTI3MSkKKysrIFNvdXJjZS9XZWJDb3JlL2Rv
bS9NZXNzYWdlUG9ydC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDggKzUxLDEzIEBAIE1lc3Nh
Z2VQb3J0Ojp+TWVzc2FnZVBvcnQoKQogICAgICAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQt
PmRlc3Ryb3llZE1lc3NhZ2VQb3J0KCp0aGlzKTsKIH0KIAotRXhjZXB0aW9uT3I8dm9pZD4gTWVz
c2FnZVBvcnQ6OnBvc3RNZXNzYWdlKFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYgbWVz
c2FnZSwgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+JiYgcG9ydHMpCitFeGNlcHRpb25Pcjx2
b2lkPiBNZXNzYWdlUG9ydDo6cG9zdE1lc3NhZ2UoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6
OkpTVmFsdWUgbWVzc2FnZVZhbHVlLCBWZWN0b3I8SlNDOjpTdHJvbmc8SlNDOjpKU09iamVjdD4+
JiYgdHJhbnNmZXIpCiB7CisgICAgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+IHBvcnRzOwor
ICAgIGF1dG8gbWVzc2FnZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKHN0YXRlLCBt
ZXNzYWdlVmFsdWUsIFdURk1vdmUodHJhbnNmZXIpLCBwb3J0cyk7CisgICAgaWYgKG1lc3NhZ2Uu
aGFzRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBtZXNzYWdlLnJlbGVhc2VFeGNlcHRpb24o
KTsKKwogICAgIGlmICghaXNFbnRhbmdsZWQoKSkKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICBB
U1NFUlQobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKQEAgLTY5LDcgKzc0LDcgQEAgRXhjZXB0
aW9uT3I8dm9pZD4gTWVzc2FnZVBvcnQ6OnBvc3RNZXNzYQogICAgICAgICAgICAgcmV0dXJuIGRp
c2VudGFuZ2xlUmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKICAgICAgICAgY2hhbm5lbHMgPSBk
aXNlbnRhbmdsZVJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKICAgICB9Ci0gICAgbV9lbnRh
bmdsZWRDaGFubmVsLT5wb3N0TWVzc2FnZVRvUmVtb3RlKFdURk1vdmUobWVzc2FnZSksIFdURk1v
dmUoY2hhbm5lbHMpKTsKKyAgICBtX2VudGFuZ2xlZENoYW5uZWwtPnBvc3RNZXNzYWdlVG9SZW1v
dGUobWVzc2FnZS5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgV1RGTW92ZShjaGFubmVscykpOwogICAg
IHJldHVybiB7IH07CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5oCShyZXZpc2lv
biAyMDkyNzEpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuaAkod29ya2luZyBj
b3B5KQpAQCAtMzAsNiArMzAsMTIgQEAKICNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgogI2luY2x1
ZGUgIk1lc3NhZ2VQb3J0Q2hhbm5lbC5oIgogCituYW1lc3BhY2UgSlNDIHsKK2NsYXNzIEV4ZWNT
dGF0ZTsKK2NsYXNzIEpTT2JqZWN0OworY2xhc3MgSlNWYWx1ZTsKK30KKwogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBGcmFtZTsKQEAgLTM5LDcgKzQ1LDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBSZWY8TWVzc2FnZVBvcnQ+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IE1lc3NhZ2VQb3J0KHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQpKTsgfQogICAgIHZpcnR1YWwgfk1lc3NhZ2VQb3J0KCk7CiAK
LSAgICBFeGNlcHRpb25Pcjx2b2lkPiBwb3N0TWVzc2FnZShSZWZQdHI8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiYmIG1lc3NhZ2UsIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYmKTsKKyAgICBF
eGNlcHRpb25Pcjx2b2lkPiBwb3N0TWVzc2FnZShKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1
ZSBtZXNzYWdlLCBWZWN0b3I8SlNDOjpTdHJvbmc8SlNDOjpKU09iamVjdD4+JiYpOwogCiAgICAg
dm9pZCBzdGFydCgpOwogICAgIHZvaWQgY2xvc2UoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Rv
bS9NZXNzYWdlUG9ydC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL01lc3Nh
Z2VQb3J0LmlkbAkocmV2aXNpb24gMjA5MjcxKQorKysgU291cmNlL1dlYkNvcmUvZG9tL01lc3Nh
Z2VQb3J0LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzEsMTAgKzMxLDEwIEBACiAgICAgR2VuZXJh
dGVJc1JlYWNoYWJsZT1JbXBsLAogICAgIEpTQ3VzdG9tTWFya0Z1bmN0aW9uLAogXSBpbnRlcmZh
Y2UgTWVzc2FnZVBvcnQgOiBFdmVudFRhcmdldCB7Ci0gICAgW0N1c3RvbSwgTWF5VGhyb3dFeGNl
cHRpb25dIHZvaWQgcG9zdE1lc3NhZ2UoYW55IG1lc3NhZ2UsIG9wdGlvbmFsIEFycmF5IG1lc3Nh
Z2VQb3J0cyk7Ci0KKyAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGUsIE1heVRocm93RXhjZXB0aW9u
XSB2b2lkIHBvc3RNZXNzYWdlKGFueSBtZXNzYWdlLCBvcHRpb25hbCBzZXF1ZW5jZTxvYmplY3Q+
IHRyYW5zZmVyID0gW10pOwogICAgIHZvaWQgc3RhcnQoKTsKICAgICB2b2lkIGNsb3NlKCk7CiAK
KyAgICAvLyBldmVudCBoYW5kbGVycwogICAgIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb25tZXNz
YWdlOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAJKHJldmlzaW9uIDIwOTI3
MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTE2LDYgKzExNiw3IEBACiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRl
IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CisjaW5jbHVkZSA8
d3RmL1ZhcmlhbnQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogI2lmIEVO
QUJMRShVU0VSX01FU1NBR0VfSEFORExFUlMpCkBAIC05MTksMTIgKzkyMCwxMiBAQCBFeGNlcHRp
b25PcjxTdG9yYWdlKj4gRE9NV2luZG93Ojpsb2NhbFN0CiAgICAgcmV0dXJuIG1fbG9jYWxTdG9y
YWdlLmdldCgpOwogfQogCi1FeGNlcHRpb25Pcjx2b2lkPiBET01XaW5kb3c6OnBvc3RNZXNzYWdl
KFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYgbWVzc2FnZSwgVmVjdG9yPFJlZlB0cjxNZXNz
YWdlUG9ydD4+JiYgcG9ydHMsIGNvbnN0IFN0cmluZyYgdGFyZ2V0T3JpZ2luLCBET01XaW5kb3cm
IHNvdXJjZSkKK0V4Y2VwdGlvbk9yPHZvaWQ+IERPTVdpbmRvdzo6cG9zdE1lc3NhZ2UoSlNDOjpF
eGVjU3RhdGUmIHN0YXRlLCBET01XaW5kb3cmIGNhbGxlcldpbmRvdywgSlNDOjpKU1ZhbHVlIG1l
c3NhZ2VWYWx1ZSwgY29uc3QgU3RyaW5nJiB0YXJnZXRPcmlnaW4sIFZlY3RvcjxKU0M6OlN0cm9u
ZzxKU0M6OkpTT2JqZWN0Pj4mJiB0cmFuc2ZlcikKIHsKICAgICBpZiAoIWlzQ3VycmVudGx5RGlz
cGxheWVkSW5GcmFtZSgpKQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgRG9jdW1lbnQqIHNv
dXJjZURvY3VtZW50ID0gc291cmNlLmRvY3VtZW50KCk7CisgICAgRG9jdW1lbnQqIHNvdXJjZURv
Y3VtZW50ID0gY2FsbGVyV2luZG93LmRvY3VtZW50KCk7CiAKICAgICAvLyBDb21wdXRlIHRoZSB0
YXJnZXQgb3JpZ2luLiAgV2UgbmVlZCB0byBkbyB0aGlzIHN5bmNocm9ub3VzbHkgaW4gb3JkZXIK
ICAgICAvLyB0byBnZW5lcmF0ZSB0aGUgU1lOVEFYX0VSUiBleGNlcHRpb24gY29ycmVjdGx5LgpA
QCAtOTQxLDYgKzk0MiwxMSBAQCBFeGNlcHRpb25Pcjx2b2lkPiBET01XaW5kb3c6OnBvc3RNZXNz
YWdlCiAgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU1lOVEFYX0VSUiB9OwogICAgIH0K
IAorICAgIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiBwb3J0czsKKyAgICBhdXRvIG1lc3Nh
Z2UgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShzdGF0ZSwgbWVzc2FnZVZhbHVlLCBX
VEZNb3ZlKHRyYW5zZmVyKSwgcG9ydHMpOworICAgIGlmIChtZXNzYWdlLmhhc0V4Y2VwdGlvbigp
KQorICAgICAgICByZXR1cm4gbWVzc2FnZS5yZWxlYXNlRXhjZXB0aW9uKCk7CisKICAgICBhdXRv
IGNoYW5uZWxzID0gTWVzc2FnZVBvcnQ6OmRpc2VudGFuZ2xlUG9ydHMoV1RGTW92ZShwb3J0cykp
OwogICAgIGlmIChjaGFubmVscy5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGNoYW5u
ZWxzLnJlbGVhc2VFeGNlcHRpb24oKTsKQEAgLTk1Nyw3ICs5NjMsNyBAQCBFeGNlcHRpb25Pcjx2
b2lkPiBET01XaW5kb3c6OnBvc3RNZXNzYWdlCiAgICAgICAgIHN0YWNrVHJhY2UgPSBjcmVhdGVT
Y3JpcHRDYWxsU3RhY2soSlNNYWluVGhyZWFkRXhlY1N0YXRlOjpjdXJyZW50U3RhdGUoKSwgU2Ny
aXB0Q2FsbFN0YWNrOjptYXhDYWxsU3RhY2tTaXplVG9DYXB0dXJlKTsKIAogICAgIC8vIFNjaGVk
dWxlIHRoZSBtZXNzYWdlLgotICAgIGF1dG8qIHRpbWVyID0gbmV3IFBvc3RNZXNzYWdlVGltZXIo
KnRoaXMsIFdURk1vdmUobWVzc2FnZSksIHNvdXJjZU9yaWdpbiwgc291cmNlLCBjaGFubmVscy5y
ZWxlYXNlUmV0dXJuVmFsdWUoKSwgV1RGTW92ZSh0YXJnZXQpLCBXVEZNb3ZlKHN0YWNrVHJhY2Up
KTsKKyAgICBhdXRvKiB0aW1lciA9IG5ldyBQb3N0TWVzc2FnZVRpbWVyKCp0aGlzLCBtZXNzYWdl
LnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBzb3VyY2VPcmlnaW4sIGNhbGxlcldpbmRvdywgY2hhbm5l
bHMucmVsZWFzZVJldHVyblZhbHVlKCksIFdURk1vdmUodGFyZ2V0KSwgV1RGTW92ZShzdGFja1Ry
YWNlKSk7CiAgICAgdGltZXItPnN0YXJ0T25lU2hvdCgwKTsKIAogICAgIHJldHVybiB7IH07Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgJKHJldmlzaW9uIDIwOTI3MSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDcgQEAK
ICNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1ZGUgPG1lbW9y
eT4KKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAj
aW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KQEAgLTQ0
LDYgKzQ1LDEzIEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogY2xhc3MgU2NyaXB0Q2FsbFN0YWNr
OwogfQogCituYW1lc3BhY2UgSlNDIHsKK2NsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNzIEpTT2JqZWN0
OworY2xhc3MgSlNWYWx1ZTsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBTdHJvbmc7Cit9
CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQmFyUHJvcDsKQEAgLTIzNSw3ICsyNDMs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBwcmludEVycm9yTWVzc2FnZShjb25zdCBTdHJpbmcmKTsK
ICAgICBTdHJpbmcgY3Jvc3NEb21haW5BY2Nlc3NFcnJvck1lc3NhZ2UoY29uc3QgRE9NV2luZG93
JiBhY3RpdmVXaW5kb3cpOwogCi0gICAgRXhjZXB0aW9uT3I8dm9pZD4gcG9zdE1lc3NhZ2UoUmVm
PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiBtZXNzYWdlLCBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQ
b3J0Pj4mJiwgY29uc3QgU3RyaW5nJiB0YXJnZXRPcmlnaW4sIERPTVdpbmRvdyYgc291cmNlKTsK
KyAgICBFeGNlcHRpb25Pcjx2b2lkPiBwb3N0TWVzc2FnZShKU0M6OkV4ZWNTdGF0ZSYsIERPTVdp
bmRvdyYgY2FsbGVyV2luZG93LCBKU0M6OkpTVmFsdWUgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiB0
YXJnZXRPcmlnaW4sIFZlY3RvcjxKU0M6OlN0cm9uZzxKU0M6OkpTT2JqZWN0Pj4mJik7CiAgICAg
dm9pZCBwb3N0TWVzc2FnZVRpbWVyRmlyZWQoUG9zdE1lc3NhZ2VUaW1lciYpOwogICAgIHZvaWQg
ZGlzcGF0Y2hNZXNzYWdlRXZlbnRXaXRoT3JpZ2luQ2hlY2soU2VjdXJpdHlPcmlnaW4qIGludGVu
ZGVkVGFyZ2V0T3JpZ2luLCBFdmVudCYsIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpTY3JpcHRDYWxs
U3RhY2s+KTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAkocmV2aXNpb24gMjA5
MjcxKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCSh3b3JraW5nIGNvcHkp
CkBAIC0xNTIsNyArMTUyLDcgQEAKICAgICAvLyAwIHdoZW4gc3RyYWlnaHQgdXA7IC05MCB3aGVu
IHJvdGF0ZWQgOTAgZGVncmVlcyBjbG9ja3dpc2U7IDkwIGNvdW50ZXIgY2xvY2t3aXNlLgogICAg
IFtDb25kaXRpb25hbD1PUklFTlRBVElPTl9FVkVOVFNdIHJlYWRvbmx5IGF0dHJpYnV0ZSBsb25n
IG9yaWVudGF0aW9uOwogCi0gICAgW0RvTm90Q2hlY2tTZWN1cml0eSwgQ3VzdG9tLCBNYXlUaHJv
d0V4Y2VwdGlvbiwgRm9yd2FyZERlY2xhcmVJbkhlYWRlcl0gdm9pZCBwb3N0TWVzc2FnZShTZXJp
YWxpemVkU2NyaXB0VmFsdWUgbWVzc2FnZSwgVVNWU3RyaW5nIHRhcmdldE9yaWdpbiwgb3B0aW9u
YWwgQXJyYXkgbWVzc2FnZVBvcnRzKTsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGUmQ2FsbGVy
V2luZG93LCBEb05vdENoZWNrU2VjdXJpdHksIEZvcndhcmREZWNsYXJlSW5IZWFkZXIsIE1heVRo
cm93RXhjZXB0aW9uXSB2b2lkIHBvc3RNZXNzYWdlKGFueSBtZXNzYWdlLCBVU1ZTdHJpbmcgdGFy
Z2V0T3JpZ2luLCBvcHRpb25hbCBzZXF1ZW5jZTxvYmplY3Q+IHRyYW5zZmVyID0gW10pOwogCiAg
ICAgW0NvbmRpdGlvbmFsPVdFQl9USU1JTkcsIFJlcGxhY2VhYmxlXSByZWFkb25seSBhdHRyaWJ1
dGUgUGVyZm9ybWFuY2UgcGVyZm9ybWFuY2U7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuY3BwCShyZXZpc2lvbiAy
MDkyNzEpCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckdsb2JhbFNj
b3BlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjMsMTMgKzYzLDE4IEBAIEV2ZW50VGFyZ2V0SW50
ZXJmYWNlIERlZGljYXRlZFdvcmtlckdsb2IKICAgICByZXR1cm4gRGVkaWNhdGVkV29ya2VyR2xv
YmFsU2NvcGVFdmVudFRhcmdldEludGVyZmFjZVR5cGU7CiB9CiAKLUV4Y2VwdGlvbk9yPHZvaWQ+
IERlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlOjpwb3N0TWVzc2FnZShSZWZQdHI8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPiYmIG1lc3NhZ2UsIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYmIHBv
cnRzKQorRXhjZXB0aW9uT3I8dm9pZD4gRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGU6OnBvc3RN
ZXNzYWdlKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIG1lc3NhZ2VWYWx1ZSwg
VmVjdG9yPEpTQzo6U3Ryb25nPEpTQzo6SlNPYmplY3Q+PiYmIHRyYW5zZmVyKQogeworICAgIFZl
Y3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiBwb3J0czsKKyAgICBhdXRvIG1lc3NhZ2UgPSBTZXJp
YWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShzdGF0ZSwgbWVzc2FnZVZhbHVlLCBXVEZNb3ZlKHRy
YW5zZmVyKSwgcG9ydHMpOworICAgIGlmIChtZXNzYWdlLmhhc0V4Y2VwdGlvbigpKQorICAgICAg
ICByZXR1cm4gbWVzc2FnZS5yZWxlYXNlRXhjZXB0aW9uKCk7CisKICAgICAvLyBEaXNlbnRhbmds
ZSB0aGUgcG9ydCBpbiBwcmVwYXJhdGlvbiBmb3Igc2VuZGluZyBpdCB0byB0aGUgcmVtb3RlIGNv
bnRleHQuCiAgICAgYXV0byBjaGFubmVscyA9IE1lc3NhZ2VQb3J0OjpkaXNlbnRhbmdsZVBvcnRz
KFdURk1vdmUocG9ydHMpKTsKICAgICBpZiAoY2hhbm5lbHMuaGFzRXhjZXB0aW9uKCkpCiAgICAg
ICAgIHJldHVybiBjaGFubmVscy5yZWxlYXNlRXhjZXB0aW9uKCk7Ci0gICAgdGhyZWFkKCkud29y
a2VyT2JqZWN0UHJveHkoKS5wb3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0KFdURk1vdmUobWVzc2Fn
ZSksIGNoYW5uZWxzLnJlbGVhc2VSZXR1cm5WYWx1ZSgpKTsKKyAgICB0aHJlYWQoKS53b3JrZXJP
YmplY3RQcm94eSgpLnBvc3RNZXNzYWdlVG9Xb3JrZXJPYmplY3QobWVzc2FnZS5yZWxlYXNlUmV0
dXJuVmFsdWUoKSwgY2hhbm5lbHMucmVsZWFzZVJldHVyblZhbHVlKCkpOwogICAgIHJldHVybiB7
IH07CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyR2xv
YmFsU2NvcGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRl
ZFdvcmtlckdsb2JhbFNjb3BlLmgJKHJldmlzaW9uIDIwOTI3MSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaAkod29ya2luZyBjb3B5KQpAQCAt
MzMsNiArMzMsMTIgQEAKIAogI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlLmgiCiAKK25hbWVz
cGFjZSBKU0MgeworY2xhc3MgRXhlY1N0YXRlOworY2xhc3MgSlNPYmplY3Q7CitjbGFzcyBKU1Zh
bHVlOworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbnRlbnRTZWN1cml0eVBv
bGljeVJlc3BvbnNlSGVhZGVyczsKQEAgLTQ1LDcgKzUxLDcgQEAgcHVibGljOgogICAgIHN0YXRp
YyBSZWY8RGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGU+IGNyZWF0ZShjb25zdCBVUkwmLCBjb25z
dCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBEZWRpY2F0ZWRX
b3JrZXJUaHJlYWQmLCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMm
LCBib29sIHNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSwgUmVmUHRy
PFNlY3VyaXR5T3JpZ2luPiYmIHRvcE9yaWdpbiwgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJv
eHkqLCBTb2NrZXRQcm92aWRlciopOwogICAgIHZpcnR1YWwgfkRlZGljYXRlZFdvcmtlckdsb2Jh
bFNjb3BlKCk7CiAKLSAgICBFeGNlcHRpb25Pcjx2b2lkPiBwb3N0TWVzc2FnZShSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiYmLCBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4mJik7Cisg
ICAgRXhjZXB0aW9uT3I8dm9pZD4gcG9zdE1lc3NhZ2UoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpT
VmFsdWUgbWVzc2FnZSwgVmVjdG9yPEpTQzo6U3Ryb25nPEpTQzo6SlNPYmplY3Q+PiYmKTsKIAog
ICAgIERlZGljYXRlZFdvcmtlclRocmVhZCYgdGhyZWFkKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaWRsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaWRsCShy
ZXZpc2lvbiAyMDkyNzEpCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtl
ckdsb2JhbFNjb3BlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQAogICAgIEds
b2JhbD0oV29ya2VyLERlZGljYXRlZFdvcmtlciksCiAgICAgSlNHZW5lcmF0ZVRvTmF0aXZlT2Jq
ZWN0LAogXSBpbnRlcmZhY2UgRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUgOiBXb3JrZXJHbG9i
YWxTY29wZSB7Ci0gICAgW0N1c3RvbSwgTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgcG9zdE1lc3Nh
Z2UoYW55IG1lc3NhZ2UsIG9wdGlvbmFsIEFycmF5IG1lc3NhZ2VQb3J0cyk7CisgICAgW0NhbGxX
aXRoPVNjcmlwdFN0YXRlLCBNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBwb3N0TWVzc2FnZShhbnkg
bWVzc2FnZSwgb3B0aW9uYWwgc2VxdWVuY2U8b2JqZWN0PiB0cmFuc2ZlciA9IFtdKTsKIAogICAg
IGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb25tZXNzYWdlOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlci5jcHAJKHJldmlzaW9uIDIwOTI3MSkKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDEzICsxMDEsMTggQEAgV29ya2Vy
Ojp+V29ya2VyKCkKICAgICBtX2NvbnRleHRQcm94eS0+d29ya2VyT2JqZWN0RGVzdHJveWVkKCk7
CiB9CiAKLUV4Y2VwdGlvbk9yPHZvaWQ+IFdvcmtlcjo6cG9zdE1lc3NhZ2UoUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4mJiBtZXNzYWdlLCBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4m
JiBwb3J0cykKK0V4Y2VwdGlvbk9yPHZvaWQ+IFdvcmtlcjo6cG9zdE1lc3NhZ2UoSlNDOjpFeGVj
U3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUgbWVzc2FnZVZhbHVlLCBWZWN0b3I8SlNDOjpTdHJv
bmc8SlNDOjpKU09iamVjdD4+JiYgdHJhbnNmZXIpCiB7CisgICAgVmVjdG9yPFJlZlB0cjxNZXNz
YWdlUG9ydD4+IHBvcnRzOworICAgIGF1dG8gbWVzc2FnZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTo6Y3JlYXRlKHN0YXRlLCBtZXNzYWdlVmFsdWUsIFdURk1vdmUodHJhbnNmZXIpLCBwb3J0cyk7
CisgICAgaWYgKG1lc3NhZ2UuaGFzRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBtZXNzYWdl
LnJlbGVhc2VFeGNlcHRpb24oKTsKKwogICAgIC8vIERpc2VudGFuZ2xlIHRoZSBwb3J0IGluIHBy
ZXBhcmF0aW9uIGZvciBzZW5kaW5nIGl0IHRvIHRoZSByZW1vdGUgY29udGV4dC4KICAgICBhdXRv
IGNoYW5uZWxzID0gTWVzc2FnZVBvcnQ6OmRpc2VudGFuZ2xlUG9ydHMoV1RGTW92ZShwb3J0cykp
OwogICAgIGlmIChjaGFubmVscy5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGNoYW5u
ZWxzLnJlbGVhc2VFeGNlcHRpb24oKTsKLSAgICBtX2NvbnRleHRQcm94eS0+cG9zdE1lc3NhZ2VU
b1dvcmtlckdsb2JhbFNjb3BlKFdURk1vdmUobWVzc2FnZSksIGNoYW5uZWxzLnJlbGVhc2VSZXR1
cm5WYWx1ZSgpKTsKKyAgICBtX2NvbnRleHRQcm94eS0+cG9zdE1lc3NhZ2VUb1dvcmtlckdsb2Jh
bFNjb3BlKG1lc3NhZ2UucmVsZWFzZVJldHVyblZhbHVlKCksIGNoYW5uZWxzLnJlbGVhc2VSZXR1
cm5WYWx1ZSgpKTsKICAgICByZXR1cm4geyB9OwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyLmgJKHJldmlzaW9uIDIwOTI3MSkKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDEyIEBACiAjaW5jbHVkZSA8d3RmL09wdGlv
bmFsLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nSGFzaC5oPgogCituYW1lc3Bh
Y2UgSlNDIHsKK2NsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNzIEpTT2JqZWN0OworY2xhc3MgSlNWYWx1
ZTsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250
ZXh0OwpAQCAtNDYsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJl
ZjxXb3JrZXI+PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IFN0cmluZyYg
dXJsLCBKU0M6OlJ1bnRpbWVGbGFncyk7CiAgICAgdmlydHVhbCB+V29ya2VyKCk7CiAKLSAgICBF
eGNlcHRpb25Pcjx2b2lkPiBwb3N0TWVzc2FnZShSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVl
PiYmIG1lc3NhZ2UsIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYmKTsKKyAgICBFeGNlcHRp
b25Pcjx2b2lkPiBwb3N0TWVzc2FnZShKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSBtZXNz
YWdlLCBWZWN0b3I8SlNDOjpTdHJvbmc8SlNDOjpKU09iamVjdD4+JiYpOwogCiAgICAgdm9pZCB0
ZXJtaW5hdGUoKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuaWRsCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmlkbAkocmV2aXNpb24g
MjA5MjcxKQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuaWRsCSh3b3JraW5nIGNv
cHkpCkBAIC0yOCwxMSArMjgsMTAgQEAKICAgICBBY3RpdmVET01PYmplY3QsCiAgICAgQ3VzdG9t
Q29uc3RydWN0b3IoVVNWU3RyaW5nIHNjcmlwdFVybCksCiBdIGludGVyZmFjZSBXb3JrZXIgOiBF
dmVudFRhcmdldCB7Ci0gICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbm1lc3NhZ2U7Ci0KLSAg
ICBbQ3VzdG9tLCBNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBwb3N0TWVzc2FnZShTZXJpYWxpemVk
U2NyaXB0VmFsdWUgbWVzc2FnZSwgb3B0aW9uYWwgQXJyYXkgbWVzc2FnZVBvcnRzKTsKLQogICAg
IHZvaWQgdGVybWluYXRlKCk7CisKKyAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGUsIE1heVRocm93
RXhjZXB0aW9uXSB2b2lkIHBvc3RNZXNzYWdlKGFueSBtZXNzYWdlLCBvcHRpb25hbCBzZXF1ZW5j
ZTxvYmplY3Q+IHRyYW5zZmVyID0gW10pOworICAgIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb25t
ZXNzYWdlOwogfTsKIAogV29ya2VyIGltcGxlbWVudHMgQWJzdHJhY3RXb3JrZXI7CkluZGV4OiBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMDkyNzEpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwyNCBAQAorMjAxNi0xMi0wMiAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQu
b3JnPgorCisgICAgICAgIG9wdGlvbmFsIHNlcXVlbmNlIHZhbHVlcyBub3QgaGFuZGxlZCBjb3Jy
ZWN0bHkgYnkgYmluZGluZyBnZW5lcmF0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE0MjU2MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvcmVzb3VyY2VzL3R5cGVkLWFy
cmF5LXdvcmtlci5qczoKKyAgICAgICAgKiBmYXN0L2RvbS9XaW5kb3cvd2luZG93LXBvc3RtZXNz
YWdlLWFyZ3MtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZG9tL1dpbmRvdy93aW5kb3ct
cG9zdG1lc3NhZ2UtYXJncy5odG1sOgorICAgICAgICAqIGZhc3QvZXZlbnRzL21lc3NhZ2UtcG9y
dC1kZWxldGVkLWRvY3VtZW50Lmh0bWw6CisgICAgICAgICogZmFzdC9ldmVudHMvbWVzc2FnZS1w
b3J0LWRlbGV0ZWQtZnJhbWUuaHRtbDoKKyAgICAgICAgKiBmYXN0L2V2ZW50cy9tZXNzYWdlLXBv
cnQtaW5hY3RpdmUtZG9jdW1lbnQuaHRtbDoKKyAgICAgICAgKiBmYXN0L2V2ZW50cy9tZXNzYWdl
LXBvcnQtbXVsdGktZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZXZlbnRzL21lc3NhZ2Ut
cG9ydC5odG1sOgorICAgICAgICAqIGZhc3Qvd29ya2Vycy93b3JrZXItY29udGV4dC1tdWx0aS1w
b3J0LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L3dvcmtlcnMvd29ya2VyLW11bHRpLXBv
cnQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYmdsLzEuMC4yL3Jlc291cmNlcy93ZWJnbF90
ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3R5cGVkYXJyYXlzL3Jlc291cmNlcy90eXBlZC1hcnJheS13
b3JrZXIuanM6CisgICAgICAgICogd2ViZ2wvMS4wLjMvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UvdHlwZWRhcnJheXMvcmVzb3VyY2VzL3R5cGVkLWFycmF5LXdvcmtlci5q
czoKKyAgICAgICAgVXBkYXRlIGZvciBuZXcgZXhjZXB0aW9ucyBhbmQgc3RyaWN0ZXIgZW5mb3Jj
ZW1lbnQgb2YgdGhlIHBvc3RNZXNzYWdlIHNpZ25hdHVyZS4gCisKIDIwMTYtMTItMDIgIEFudG9p
bmUgUXVpbnQgIDxncmFvdXRzQGFwcGxlLmNvbT4KIAogICAgICAgICBbTW9kZXJuIE1lZGlhIENv
bnRyb2xzXSBBZGQgcmV3aW5kIGFuZCBmYXN0LWZvcndhcmQgc3VwcG9ydApJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvcmVzb3VyY2VzL3R5cGVkLWFycmF5LXdvcmtlci5qcwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9yZXNvdXJjZXMvdHlw
ZWQtYXJyYXktd29ya2VyLmpzCShyZXZpc2lvbiAyMDkyNzEpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2NhbnZhcy93ZWJnbC9yZXNvdXJjZXMvdHlwZWQtYXJyYXktd29ya2VyLmpzCSh3b3JraW5nIGNv
cHkpCkBAIC03NCw3ICs3NCw3IEBAIG9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2ZW50KSB7CiAgICAg
fSBlbHNlIHsKICAgICAgIHZhbHVlVG9TZW5kID0gdmlldy5idWZmZXI7CiAgICAgfQotICAgIHZh
ciB0cmFuc2ZlcmFibGVzVG9TZW5kID0gbnVsbDsKKyAgICB2YXIgdHJhbnNmZXJhYmxlc1RvU2Vu
ZCA9IFtdOwogICAgIGlmIChtZXNzYWdlLmNvbW1hbmQgPT0gJ3RyYW5zZmVyJyB8fAogICAgICAg
ICBtZXNzYWdlLmNvbW1hbmQgPT0gJ3RyYW5zZmVyQnVmZmVyJykgewogICAgICAgdHJhbnNmZXJh
Ymxlc1RvU2VuZCA9IFsgdmlldy5idWZmZXIgXTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9t
L1dpbmRvdy93aW5kb3ctcG9zdG1lc3NhZ2UtYXJncy1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wb3N0bWVzc2FnZS1hcmdzLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMjA5MjcxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vV2lu
ZG93L3dpbmRvdy1wb3N0bWVzc2FnZS1hcmdzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMiwxMyArMiwxMyBAQCBUZXN0IHRoYXQgdGhlIHNlY29uZCBhcmd1bWVudCBvZiB3aW5kb3cu
CiAKIFBBU1M6IFBvc3RpbmcgbWVzc2FnZSAoJzEnLCAxKTogdGhyZXcgZXhjZXB0aW9uIFR5cGVF
cnJvcjogVmFsdWUgaXMgbm90IGEgc2VxdWVuY2UKIFBBU1M6IFBvc3RpbmcgbWVzc2FnZSAoJzIn
LCBjKTogdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVmFsdWUgaXMgbm90IGEgc2VxdWVuY2UK
LVBBU1M6IFBvc3RpbmcgbWVzc2FnZSAoJzMnLCBbb2JqZWN0IE9iamVjdF0pOiB0aHJldyBleGNl
cHRpb24gVHlwZUVycm9yOiBWYWx1ZSBpcyBub3QgYSBzZXF1ZW5jZQotUEFTUzogUG9zdGluZyBt
ZXNzYWdlICgnNCcsIFtvYmplY3QgV2luZG93XSkgZGlkIG5vdCB0aHJvdyBhbiBleGNlcHRpb24K
LVBBU1M6IFBvc3RpbmcgbWVzc2FnZSAoJzRhJywgKikgZGlkIG5vdCB0aHJvdyBhbiBleGNlcHRp
b24KK1BBU1M6IFBvc3RpbmcgbWVzc2FnZSAoJzMnLCBbb2JqZWN0IE9iamVjdF0pOiB0aHJldyBl
eGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yCitQQVNTOiBQb3N0aW5nIG1lc3NhZ2UgKCc0
JywgW29iamVjdCBXaW5kb3ddKTogdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJv
cgorUEFTUzogUG9zdGluZyBtZXNzYWdlICgnNGEnLCAqKTogdGhyZXcgZXhjZXB0aW9uIFR5cGVF
cnJvcjogVmFsdWUgaXMgbm90IGEgc2VxdWVuY2UKIFBBU1M6IFBvc3RpbmcgbWVzc2FnZSAoJzUn
LCBudWxsKSBkaWQgbm90IHRocm93IGFuIGV4Y2VwdGlvbgogUEFTUzogUG9zdGluZyBtZXNzYWdl
ICgnNicsIHVuZGVmaW5lZCkgZGlkIG5vdCB0aHJvdyBhbiBleGNlcHRpb24KIFBBU1M6IFBvc3Rp
bmcgbWVzc2FnZSAoJzcnLCBbb2JqZWN0IE1lc3NhZ2VQb3J0XSxbb2JqZWN0IE1lc3NhZ2VQb3J0
XSkgZGlkIG5vdCB0aHJvdyBhbiBleGNlcHRpb24KLVBBU1M6IFBvc3RpbmcgbWVzc2FnZSAoJzdh
JywgKikgZGlkIG5vdCB0aHJvdyBhbiBleGNlcHRpb24KK1BBU1M6IFBvc3RpbmcgbWVzc2FnZSAo
JzdhJywgKik6IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFZhbHVlIGlzIG5vdCBhIHNlcXVl
bmNlCiBQQVNTOiBQb3N0aW5nIG1lc3NhZ2UgKCc3JywgW29iamVjdCBNZXNzYWdlUG9ydF0sW29i
amVjdCBNZXNzYWdlUG9ydF0pIGRpZCBub3QgdGhyb3cgYW4gZXhjZXB0aW9uCiBQQVNTOiBQb3N0
aW5nIG1lc3NhZ2UgKCcyMTQ3NDgzNjQ4JywgbnVsbCkgZGlkIG5vdCB0aHJvdyBhbiBleGNlcHRp
b24KIFBBU1M6IFBvc3RpbmcgbWVzc2FnZSAoJ1tvYmplY3QgTWVzc2FnZVBvcnRdJywgW29iamVj
dCBNZXNzYWdlUG9ydF0sW29iamVjdCBNZXNzYWdlUG9ydF0pIGRpZCBub3QgdGhyb3cgYW4gZXhj
ZXB0aW9uCkBAIC0xOCwxMiArMTgsOSBAQCBQQVNTOiBQb3N0aW5nIG1lc3NhZ2UgKCdbb2JqZWN0
IEFycmF5QnVmCiBQQVNTOiBhcnJheUJ1ZmZlciBuZXV0ZXJlZAogUEFTUzogdmlldyBuZXV0ZXJl
ZAogUEFTUzogUG9zdGluZyBtZXNzYWdlICgnZG9uZScsIHVuZGVmaW5lZCkgZGlkIG5vdCB0aHJv
dyBhbiBleGNlcHRpb24KLVJlY2VpdmVkIG1lc3NhZ2UgJzQnIHdpdGggMCBwb3J0cy4KLVJlY2Vp
dmVkIG1lc3NhZ2UgJzRhJyB3aXRoIDAgcG9ydHMuCiBSZWNlaXZlZCBtZXNzYWdlICc1JyB3aXRo
IDAgcG9ydHMuCiBSZWNlaXZlZCBtZXNzYWdlICc2JyB3aXRoIDAgcG9ydHMuCiBSZWNlaXZlZCBt
ZXNzYWdlICc3JyB3aXRoIDIgcG9ydHMuCi1SZWNlaXZlZCBtZXNzYWdlICc3YScgd2l0aCAyIHBv
cnRzLgogUmVjZWl2ZWQgbWVzc2FnZSAnNycgd2l0aCAyIHBvcnRzLgogUmVjZWl2ZWQgbWVzc2Fn
ZSAnMjE0NzQ4MzY0OCcgd2l0aCAwIHBvcnRzLgogUmVjZWl2ZWQgbWVzc2FnZSAnW29iamVjdCBN
ZXNzYWdlUG9ydF0nIHdpdGggMiBwb3J0cy4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL1dp
bmRvdy93aW5kb3ctcG9zdG1lc3NhZ2UtYXJncy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcG9zdG1lc3NhZ2UtYXJncy5odG1sCShyZXZpc2lv
biAyMDkyNzEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXBvc3RtZXNz
YWdlLWFyZ3MuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNDQsMTQgKzQ0LDE0IEBAIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJkZXNjcmlwdGlvbiIpLmkKIHRyeVBvc3RNZXNzYWdlKCcxJywgJyon
LCAxLCB0cnVlKTsKIHRyeVBvc3RNZXNzYWdlKCcyJywgJyonLCAnYycsIHRydWUpOwogdHJ5UG9z
dE1lc3NhZ2UoJzMnLCAnKicsIHsgeDogMSB9LCB0cnVlKTsKLXRyeVBvc3RNZXNzYWdlKCc0Jywg
JyonLCB3aW5kb3cpOyAgLy8gUGFzc2VzIGJlY2F1c2Ugd2luZG93IGhhcyBhICJsZW5ndGgiIGF0
dHJpYnV0ZSBvZiB2YWx1ZSAnMCcsIHNvIGl0IGxvb2tzIGxpa2UgYW4gYXJyYXkKLXRyeVBvc3RN
ZXNzYWdlKCc0YScsIHdpbmRvdywgJyonKTsgLy8gTGVnYWN5IGFyZ3VtZW50IG9yZGVyLgordHJ5
UG9zdE1lc3NhZ2UoJzQnLCAnKicsIHdpbmRvdywgdHJ1ZSk7Cit0cnlQb3N0TWVzc2FnZSgnNGEn
LCB3aW5kb3csICcqJywgdHJ1ZSk7IC8vIExlZ2FjeSBhcmd1bWVudCBvcmRlci4KIHRyeVBvc3RN
ZXNzYWdlKCc1JywgJyonLCBudWxsKTsKIHRyeVBvc3RNZXNzYWdlKCc2JywgJyonLCB2b2lkIDAp
OwogdmFyIGNoYW5uZWwxID0gbmV3IE1lc3NhZ2VDaGFubmVsOwogdHJ5UG9zdE1lc3NhZ2VGdW5j
dGlvbih3aW5kb3cucG9zdE1lc3NhZ2UsICc3JywgJyonLCBbY2hhbm5lbDEucG9ydDEsIGNoYW5u
ZWwxLnBvcnQyXSk7CiB2YXIgY2hhbm5lbDFhID0gbmV3IE1lc3NhZ2VDaGFubmVsOwotdHJ5UG9z
dE1lc3NhZ2VGdW5jdGlvbih3aW5kb3cucG9zdE1lc3NhZ2UsICc3YScsIFtjaGFubmVsMWEucG9y
dDEsIGNoYW5uZWwxYS5wb3J0Ml0sICcqJyk7Cit0cnlQb3N0TWVzc2FnZUZ1bmN0aW9uKHdpbmRv
dy5wb3N0TWVzc2FnZSwgJzdhJywgW2NoYW5uZWwxYS5wb3J0MSwgY2hhbm5lbDFhLnBvcnQyXSwg
JyonLCB0cnVlKTsKIHZhciBjaGFubmVsMiA9IG5ldyBNZXNzYWdlQ2hhbm5lbDsKIHRyeVBvc3RN
ZXNzYWdlRnVuY3Rpb24od2luZG93LnBvc3RNZXNzYWdlLCAnNycsICcqJywgW2NoYW5uZWwyLnBv
cnQxLCBjaGFubmVsMi5wb3J0Ml0pOwogdmFyIGNoYW5uZWwzID0gbmV3IE1lc3NhZ2VDaGFubmVs
OwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0LWRlbGV0ZWQtZG9j
dW1lbnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdl
LXBvcnQtZGVsZXRlZC1kb2N1bWVudC5odG1sCShyZXZpc2lvbiAyMDkyNzEpCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQtZGVsZXRlZC1kb2N1bWVudC5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3IEBAIHZhciBtYWluUG9ydDsKIGZ1bmN0aW9uIHRlc3Qo
KQogewogICAgIHZhciBjaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFubmVsOwotICAgIHdpbmRvdy5m
cmFtZXNbMF0ucG9zdE1lc3NhZ2UoIm1zZyIsIFtjaGFubmVsLnBvcnQyXSwgIioiKTsKKyAgICB3
aW5kb3cuZnJhbWVzWzBdLnBvc3RNZXNzYWdlKCJtc2ciLCAiKiIsIFtjaGFubmVsLnBvcnQyXSk7
CiAgICAgbWFpblBvcnQgPSBjaGFubmVsLnBvcnQxOwogICAgIG1haW5Qb3J0LnN0YXJ0KCk7CiAK
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1kZWxldGVkLWZyYW1l
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0
LWRlbGV0ZWQtZnJhbWUuaHRtbAkocmV2aXNpb24gMjA5MjcxKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9ldmVudHMvbWVzc2FnZS1wb3J0LWRlbGV0ZWQtZnJhbWUuaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtMjksNyArMjksNyBAQCBmdW5jdGlvbiB0ZXN0KCkKIHsKICAgICBmcmFtZURvYyA9IHdpbmRv
dy5mcmFtZXNbMF0uZG9jdW1lbnQ7CiAgICAgdmFyIGNoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5u
ZWw7Ci0gICAgd2luZG93LmZyYW1lc1swXS5wb3N0TWVzc2FnZSgibXNnIiwgW2NoYW5uZWwucG9y
dDJdLCAiKiIpOworICAgIHdpbmRvdy5mcmFtZXNbMF0ucG9zdE1lc3NhZ2UoIm1zZyIsICIqIiwg
W2NoYW5uZWwucG9ydDJdKTsKICAgICBtYWluUG9ydCA9IGNoYW5uZWwucG9ydDE7CiAgICAgbWFp
blBvcnQuc3RhcnQoKTsKIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1w
b3J0LWluYWN0aXZlLWRvY3VtZW50Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9ldmVudHMvbWVzc2FnZS1wb3J0LWluYWN0aXZlLWRvY3VtZW50Lmh0bWwJKHJldmlzaW9uIDIw
OTI3MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1pbmFjdGl2ZS1k
b2N1bWVudC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw3IEBAIGZ1bmN0aW9uIHRl
c3QoKQogewogICAgIG90aGVyRG9jdW1lbnQgPSB3aW5kb3cuZnJhbWVzWzBdLmRvY3VtZW50Owog
ICAgIHZhciBjaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFubmVsOwotICAgIHdpbmRvdy5mcmFtZXNb
MF0ucG9zdE1lc3NhZ2UoIm1zZyIsIFtjaGFubmVsLnBvcnQyXSwgIioiKTsKKyAgICB3aW5kb3cu
ZnJhbWVzWzBdLnBvc3RNZXNzYWdlKCJtc2ciLCAiKiIsIFtjaGFubmVsLnBvcnQyXSk7CiAgICAg
bWFpblBvcnQgPSBjaGFubmVsLnBvcnQxOwogICAgIG1haW5Qb3J0LnN0YXJ0KCk7CiAKSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1tdWx0aS1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0LW11bHRp
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjA5MjcxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVu
dHMvbWVzc2FnZS1wb3J0LW11bHRpLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNSwx
MiArNSwxMiBAQCBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBCiAKIFBB
U1MgY2hhbm5lbC5wb3J0MS5wb3N0TWVzc2FnZSgic2FtZSBwb3J0IiwgW2NoYW5uZWwucG9ydDFd
KSB0aHJldyBleGNlcHRpb24gRGF0YUNsb25lRXJyb3IgKERPTSBFeGNlcHRpb24gMjUpOiBUaGUg
b2JqZWN0IGNhbiBub3QgYmUgY2xvbmVkLi4KIFBBU1MgY2hhbm5lbC5wb3J0MS5wb3N0TWVzc2Fn
ZSgiZW50YW5nbGVkIHBvcnQiLCBbY2hhbm5lbC5wb3J0Ml0pIHRocmV3IGV4Y2VwdGlvbiBEYXRh
Q2xvbmVFcnJvciAoRE9NIEV4Y2VwdGlvbiAyNSk6IFRoZSBvYmplY3QgY2FuIG5vdCBiZSBjbG9u
ZWQuLgotUEFTUyBjaGFubmVsLnBvcnQxLnBvc3RNZXNzYWdlKCJudWxsIHBvcnQiLCBbY2hhbm5l
bDMucG9ydDEsIG51bGwsIGNoYW5uZWwzLnBvcnQyXSkgdGhyZXcgZXhjZXB0aW9uIEludmFsaWRT
dGF0ZUVycm9yIChET00gRXhjZXB0aW9uIDExKTogVGhlIG9iamVjdCBpcyBpbiBhbiBpbnZhbGlk
IHN0YXRlLi4KLVBBU1MgY2hhbm5lbC5wb3J0MS5wb3N0TWVzc2FnZSgibm90QVBvcnQiLCBbY2hh
bm5lbDMucG9ydDEsIHt9LCBjaGFubmVsMy5wb3J0Ml0pIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJy
b3I6IFR5cGUgZXJyb3IuCi1QQVNTIGNoYW5uZWwucG9ydDEucG9zdE1lc3NhZ2UoImR1cGxpY2F0
ZSBwb3J0IiwgW2NoYW5uZWwzLnBvcnQxLCBjaGFubmVsMy5wb3J0MV0pIHRocmV3IGV4Y2VwdGlv
biBJbnZhbGlkU3RhdGVFcnJvciAoRE9NIEV4Y2VwdGlvbiAxMSk6IFRoZSBvYmplY3QgaXMgaW4g
YW4gaW52YWxpZCBzdGF0ZS4uCi1QQVNTIGNoYW5uZWwucG9ydDEucG9zdE1lc3NhZ2UoIm5vdEFu
QXJyYXkiLCBjaGFubmVsMy5wb3J0MSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVmFsdWUg
aXMgbm90IGEgc2VxdWVuY2UuCi1QQVNTIGNoYW5uZWwucG9ydDEucG9zdE1lc3NhZ2UoIm5vdEFT
ZXF1ZW5jZSIsIFt7bGVuZ3RoOiAzfV0pIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUg
ZXJyb3IuCi1QQVNTIGNoYW5uZWwucG9ydDEucG9zdE1lc3NhZ2UoImxhcmdlU2VxdWVuY2UiLCBs
YXJnZVBvcnRBcnJheSkgdGhyZXcgZXhjZXB0aW9uIEludmFsaWRTdGF0ZUVycm9yIChET00gRXhj
ZXB0aW9uIDExKTogVGhlIG9iamVjdCBpcyBpbiBhbiBpbnZhbGlkIHN0YXRlLi4KK1BBU1MgY2hh
bm5lbC5wb3J0MS5wb3N0TWVzc2FnZSgibnVsbCBwb3J0IiwgW2NoYW5uZWwzLnBvcnQxLCBudWxs
LCBjaGFubmVsMy5wb3J0Ml0pIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3Iu
CitQQVNTIGNoYW5uZWwucG9ydDEucG9zdE1lc3NhZ2UoIm5vdEFQb3J0IiwgW2NoYW5uZWwzLnBv
cnQxLCB7fSwgY2hhbm5lbDMucG9ydDJdKSB0aHJldyBleGNlcHRpb24gRGF0YUNsb25lRXJyb3Ig
KERPTSBFeGNlcHRpb24gMjUpOiBUaGUgb2JqZWN0IGNhbiBub3QgYmUgY2xvbmVkLi4KK1BBU1Mg
Y2hhbm5lbC5wb3J0MS5wb3N0TWVzc2FnZSgiZHVwbGljYXRlIHBvcnQiLCBbY2hhbm5lbDMucG9y
dDEsIGNoYW5uZWwzLnBvcnQxXSkgdGhyZXcgZXhjZXB0aW9uIERhdGFDbG9uZUVycm9yIChET00g
RXhjZXB0aW9uIDI1KTogVGhlIG9iamVjdCBjYW4gbm90IGJlIGNsb25lZC4uCitQQVNTIGNoYW5u
ZWwucG9ydDEucG9zdE1lc3NhZ2UoIm5vdEFuQXJyYXkiLCBjaGFubmVsMy5wb3J0MSkgdGhyZXcg
ZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KK1BBU1MgY2hhbm5lbC5wb3J0MS5wb3N0
TWVzc2FnZSgibm90QVNlcXVlbmNlIiwgW3tsZW5ndGg6IDN9XSkgdGhyZXcgZXhjZXB0aW9uIERh
dGFDbG9uZUVycm9yIChET00gRXhjZXB0aW9uIDI1KTogVGhlIG9iamVjdCBjYW4gbm90IGJlIGNs
b25lZC4uCitQQVNTIGNoYW5uZWwucG9ydDEucG9zdE1lc3NhZ2UoImxhcmdlU2VxdWVuY2UiLCBs
YXJnZVBvcnRBcnJheSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KIFBB
U1MgZXZlbnQucG9ydHMgaXMgbm9uLW51bGwgYW5kIHplcm8gbGVuZ3RoIHdoZW4gbm8gcG9ydCBz
ZW50CiBQQVNTIGV2ZW50LnBvcnRzIGlzIG5vbi1udWxsIGFuZCB6ZXJvIGxlbmd0aCB3aGVuIGVt
cHR5IGFycmF5IHNlbnQKIFBBU1MgZXZlbnQucG9ydHMgY29udGFpbnMgdHdvIHBvcnRzIHdoZW4g
dHdvIHBvcnRzIHNlbnQKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtcG9y
dC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtcG9y
dC5odG1sCShyZXZpc2lvbiAyMDkyNzEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNz
YWdlLXBvcnQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQCBmdW5jdGlvbiB0
ZXN0KHBvc3RNZXNzYWdlRnVuKQogewogICAgIHZhciBjaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFu
bmVsOwogCi0gICAgd2luZG93LmZyYW1lc1swXVtwb3N0TWVzc2FnZUZ1bl0oIm1zZyIsIFtjaGFu
bmVsLnBvcnQyXSwgIioiKTsKKyAgICB3aW5kb3cuZnJhbWVzWzBdW3Bvc3RNZXNzYWdlRnVuXSgi
bXNnIiwgIioiLCBbY2hhbm5lbC5wb3J0Ml0pOwogICAgIG1haW5Qb3J0ID0gY2hhbm5lbC5wb3J0
MTsKICAgICBtYWluUG9ydFtwb3N0TWVzc2FnZUZ1bl0oInBpbmciKTsKICAgICBtYWluUG9ydC5v
bm1lc3NhZ2UgPSBmdW5jdGlvbihldnQpIHsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qvd29ya2Vy
cy93b3JrZXItY29udGV4dC1tdWx0aS1wb3J0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvd29ya2VyLWNvbnRleHQtbXVsdGktcG9ydC1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDIwOTI3MSkKKysrIExheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy93b3Jr
ZXItY29udGV4dC1tdWx0aS1wb3J0LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNiwx
MSArNiwxMSBAQCBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBCiBQQVNT
IGV2ZW50LnBvcnRzIGlzIG5vbi1udWxsIGFuZCB6ZXJvIGxlbmd0aCB3aGVuIG5vIHBvcnQgc2Vu
dAogUEFTUyBldmVudC5wb3J0cyBpcyBub24tbnVsbCBhbmQgemVybyBsZW5ndGggd2hlbiBlbXB0
eSBhcnJheSBzZW50CiBQQVNTIGV2ZW50LnBvcnRzIGNvbnRhaW5zIHR3byBwb3J0cyB3aGVuIHR3
byBwb3J0cyBzZW50Ci1QQVNTIHBvc3RpbmcgYSBudWxsIHBvcnQgZGlkIHRocm93OiBJbnZhbGlk
U3RhdGVFcnJvciAoRE9NIEV4Y2VwdGlvbiAxMSk6IFRoZSBvYmplY3QgaXMgaW4gYW4gaW52YWxp
ZCBzdGF0ZS4KLVBBU1MgcG9zdGluZyBhIG5vbi1wb3J0IGRpZCB0aHJvdzogVHlwZUVycm9yOiBU
eXBlIGVycm9yCitQQVNTIHBvc3RpbmcgYSBudWxsIHBvcnQgZGlkIHRocm93OiBUeXBlRXJyb3I6
IFR5cGUgZXJyb3IKK1BBU1MgcG9zdGluZyBhIG5vbi1wb3J0IGRpZCB0aHJvdzogRGF0YUNsb25l
RXJyb3IgKERPTSBFeGNlcHRpb24gMjUpOiBUaGUgb2JqZWN0IGNhbiBub3QgYmUgY2xvbmVkLgog
UEFTUyBldmVudC5wb3J0cyBjb250YWlucyB0d28gcG9ydHMgd2hlbiB0d28gcG9ydHMgcmUtc2Vu
dCBhZnRlciBlcnJvcgotUEFTUyBwb3N0aW5nIGEgbm9uLWFycmF5IGRpZCB0aHJvdzogVHlwZUVy
cm9yOiBWYWx1ZSBpcyBub3QgYSBzZXF1ZW5jZQotUEFTUyBwb3N0aW5nIGEgbm9uLXNlcXVlbmNl
IGRpZCB0aHJvdzogVHlwZUVycm9yOiBUeXBlIGVycm9yCitQQVNTIHBvc3RpbmcgYSBub24tYXJy
YXkgZGlkIHRocm93OiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IKK1BBU1MgcG9zdGluZyBhIG5vbi1z
ZXF1ZW5jZSBkaWQgdGhyb3c6IERhdGFDbG9uZUVycm9yIChET00gRXhjZXB0aW9uIDI1KTogVGhl
IG9iamVjdCBjYW4gbm90IGJlIGNsb25lZC4KIAogVEVTVCBDT01QTEVURQogCkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L3dvcmtlcnMvd29ya2VyLW11bHRpLXBvcnQtZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy93b3JrZXItbXVsdGktcG9ydC1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDIwOTI3MSkKKysrIExheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy93
b3JrZXItbXVsdGktcG9ydC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTMsMTAgKzMs
MTAgQEAgVGhpcyB0ZXN0IGNoZWNrcyB0aGUgdmFyaW91cyB1c2UgY2FzZXMgYQogT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgogCiAKLVBBU1Mgd29ya2VyLnBvc3RNZXNzYWdlKCJudWxsIHBvcnQi
LCBbY2hhbm5lbDMucG9ydDEsIG51bGwsIGNoYW5uZWwzLnBvcnQyXSkgdGhyZXcgZXhjZXB0aW9u
IEludmFsaWRTdGF0ZUVycm9yIChET00gRXhjZXB0aW9uIDExKTogVGhlIG9iamVjdCBpcyBpbiBh
biBpbnZhbGlkIHN0YXRlLi4KLVBBU1Mgd29ya2VyLnBvc3RNZXNzYWdlKCJub3RBUG9ydCIsIFtj
aGFubmVsMy5wb3J0MSwge30sIGNoYW5uZWwzLnBvcnQyXSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVF
cnJvcjogVHlwZSBlcnJvci4KLVBBU1Mgd29ya2VyLnBvc3RNZXNzYWdlKCJub3RBbkFycmF5Iiwg
Y2hhbm5lbDMucG9ydDEpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFZhbHVlIGlzIG5vdCBh
IHNlcXVlbmNlLgotUEFTUyB3b3JrZXIucG9zdE1lc3NhZ2UoIm5vdEFTZXF1ZW5jZSIsIFt7bGVu
Z3RoOiAzfV0pIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCitQQVNTIHdv
cmtlci5wb3N0TWVzc2FnZSgibnVsbCBwb3J0IiwgW2NoYW5uZWwzLnBvcnQxLCBudWxsLCBjaGFu
bmVsMy5wb3J0Ml0pIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCitQQVNT
IHdvcmtlci5wb3N0TWVzc2FnZSgibm90QVBvcnQiLCBbY2hhbm5lbDMucG9ydDEsIHt9LCBjaGFu
bmVsMy5wb3J0Ml0pIHRocmV3IGV4Y2VwdGlvbiBEYXRhQ2xvbmVFcnJvciAoRE9NIEV4Y2VwdGlv
biAyNSk6IFRoZSBvYmplY3QgY2FuIG5vdCBiZSBjbG9uZWQuLgorUEFTUyB3b3JrZXIucG9zdE1l
c3NhZ2UoIm5vdEFuQXJyYXkiLCBjaGFubmVsMy5wb3J0MSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVF
cnJvcjogVHlwZSBlcnJvci4KK1BBU1Mgd29ya2VyLnBvc3RNZXNzYWdlKCJub3RBU2VxdWVuY2Ui
LCBbe2xlbmd0aDogM31dKSB0aHJldyBleGNlcHRpb24gRGF0YUNsb25lRXJyb3IgKERPTSBFeGNl
cHRpb24gMjUpOiBUaGUgb2JqZWN0IGNhbiBub3QgYmUgY2xvbmVkLi4KIFBBU1MgZXZlbnQucG9y
dHMgaXMgbm9uLW51bGwgYW5kIHplcm8gbGVuZ3RoIHdoZW4gbm8gcG9ydCBzZW50CiBQQVNTIGV2
ZW50LnBvcnRzIGlzIG5vbi1udWxsIGFuZCB6ZXJvIGxlbmd0aCB3aGVuIGVtcHR5IGFycmF5IHNl
bnQKIFBBU1MgZXZlbnQucG9ydHMgY29udGFpbnMgdHdvIHBvcnRzIHdoZW4gdHdvIHBvcnRzIHNl
bnQKSW5kZXg6IExheW91dFRlc3RzL3dlYmdsLzEuMC4yL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL3R5cGVkYXJyYXlzL3Jlc291cmNlcy90eXBlZC1hcnJheS13b3JrZXIu
anMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvd2ViZ2wvMS4wLjIvcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdHlwZWRhcnJheXMvcmVzb3VyY2VzL3R5cGVkLWFycmF5
LXdvcmtlci5qcwkocmV2aXNpb24gMjA5MjcxKQorKysgTGF5b3V0VGVzdHMvd2ViZ2wvMS4wLjIv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdHlwZWRhcnJheXMvcmVzb3Vy
Y2VzL3R5cGVkLWFycmF5LXdvcmtlci5qcwkod29ya2luZyBjb3B5KQpAQCAtNzQsNyArNzQsNyBA
QCBvbm1lc3NhZ2UgPSBmdW5jdGlvbihldmVudCkgewogICAgIH0gZWxzZSB7CiAgICAgICB2YWx1
ZVRvU2VuZCA9IHZpZXcuYnVmZmVyOwogICAgIH0KLSAgICB2YXIgdHJhbnNmZXJhYmxlc1RvU2Vu
ZCA9IG51bGw7CisgICAgdmFyIHRyYW5zZmVyYWJsZXNUb1NlbmQgPSBbXTsKICAgICBpZiAobWVz
c2FnZS5jb21tYW5kID09ICd0cmFuc2ZlcicgfHwKICAgICAgICAgbWVzc2FnZS5jb21tYW5kID09
ICd0cmFuc2ZlckJ1ZmZlcicpIHsKICAgICAgIHRyYW5zZmVyYWJsZXNUb1NlbmQgPSBbIHZpZXcu
YnVmZmVyIF07CkluZGV4OiBMYXlvdXRUZXN0cy93ZWJnbC8xLjAuMy9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS90eXBlZGFycmF5cy9yZXNvdXJjZXMvdHlwZWQtYXJyYXkt
d29ya2VyLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3dlYmdsLzEuMC4zL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3R5cGVkYXJyYXlzL3Jlc291cmNlcy90eXBl
ZC1hcnJheS13b3JrZXIuanMJKHJldmlzaW9uIDIwOTI3MSkKKysrIExheW91dFRlc3RzL3dlYmds
LzEuMC4zL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3R5cGVkYXJyYXlz
L3Jlc291cmNlcy90eXBlZC1hcnJheS13b3JrZXIuanMJKHdvcmtpbmcgY29weSkKQEAgLTc0LDcg
Kzc0LDcgQEAgb25tZXNzYWdlID0gZnVuY3Rpb24oZXZlbnQpIHsKICAgICB9IGVsc2UgewogICAg
ICAgdmFsdWVUb1NlbmQgPSB2aWV3LmJ1ZmZlcjsKICAgICB9Ci0gICAgdmFyIHRyYW5zZmVyYWJs
ZXNUb1NlbmQgPSBudWxsOworICAgIHZhciB0cmFuc2ZlcmFibGVzVG9TZW5kID0gW107CiAgICAg
aWYgKG1lc3NhZ2UuY29tbWFuZCA9PSAndHJhbnNmZXInIHx8CiAgICAgICAgIG1lc3NhZ2UuY29t
bWFuZCA9PSAndHJhbnNmZXJCdWZmZXInKSB7CiAgICAgICB0cmFuc2ZlcmFibGVzVG9TZW5kID0g
WyB2aWV3LmJ1ZmZlciBdOwo=
</data>
<flag name="review"
          id="318566"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>