<?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>211112</bug_id>
          
          <creation_ts>2020-04-27 18:55:08 -0700</creation_ts>
          <short_desc>Reduce IPC overhead for message receiver name and message name to 2 bytes</short_desc>
          <delta_ts>2020-08-03 09:32:37 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=213751</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=215054</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=215064</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>211826</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>aboya</cc>
    
    <cc>andersca</cc>
    
    <cc>annulen</cc>
    
    <cc>basuke</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>cturner</cc>
    
    <cc>darin</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>don.olmstead</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>mkwst</cc>
    
    <cc>philipj</cc>
    
    <cc>pnormand</cc>
    
    <cc>rwlbuis</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sam</cc>
    
    <cc>sergio</cc>
    
    <cc>sihui_liu</cc>
    
    <cc>svillar</cc>
    
    <cc>useafterfree</cc>
    
    <cc>vjaquez</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1646353</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-27 18:55:08 -0700</bug_when>
    <thetext>Reduce IPC overhead for message receiver name and message name to 2 bytes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1646354</commentid>
    <comment_count>1</comment_count>
      <attachid>397783</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-27 18:55:49 -0700</bug_when>
    <thetext>Created attachment 397783
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1646389</commentid>
    <comment_count>2</comment_count>
      <attachid>397806</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-27 22:13:19 -0700</bug_when>
    <thetext>Created attachment 397806
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1646390</commentid>
    <comment_count>3</comment_count>
      <attachid>397807</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-27 22:19:40 -0700</bug_when>
    <thetext>Created attachment 397807
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1646411</commentid>
    <comment_count>4</comment_count>
      <attachid>397815</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-27 23:57:13 -0700</bug_when>
    <thetext>Created attachment 397815
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1646496</commentid>
    <comment_count>5</comment_count>
      <attachid>397841</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-28 08:43:29 -0700</bug_when>
    <thetext>Created attachment 397841
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1646506</commentid>
    <comment_count>6</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-28 09:09:06 -0700</bug_when>
    <thetext>Don, could you get this working with CMake/Windows?  I&apos;ve changed the parameters to the message generators and added MessageNames.h and MessageNames.cpp.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1646514</commentid>
    <comment_count>7</comment_count>
      <attachid>397841</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-04-28 09:22:14 -0700</bug_when>
    <thetext>Comment on attachment 397841
Patch

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

&gt; Source/WebKit/Scripts/MessageNames.h:33
&gt; +    WebPage = 1
&gt; +    , WebPage = 2

Looks like duplicate?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1646520</commentid>
    <comment_count>8</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-28 09:31:11 -0700</bug_when>
    <thetext>That&apos;s fine.  That&apos;s because the test receivers have multiple receivers with the same name.  That file is just to test the generator.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1646732</commentid>
    <comment_count>9</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2020-04-28 16:21:26 -0700</bug_when>
    <thetext>Looks like it&apos;s trying to build GPUProcessMessageReceiver.cpp. Probably missing an #if ENABLE(GPU_PROCESS) check somewhere?

[585/1094] Generating ../../DerivedSources/WebKit/GPUProcessMessageReceiver.cpp, ../../DerivedSources/WebKit/GPUProcessMessages.h, ../../DerivedSources/WebKit/GPUProcessMessagesReplies.h
FAILED: DerivedSources/WebKit/GPUProcessMessageReceiver.cpp DerivedSources/WebKit/GPUProcessMessages.h DerivedSources/WebKit/GPUProcessMessagesReplies.h 
cd /home/ews/worker/GTK-Build-EWS/build/Source/WebKit &amp;&amp; /usr/bin/python2.7 /home/ews/worker/GTK-Build-EWS/build/Source/WebKit/Scripts/generate-message-receiver.py GPUProcess/GPUProcess.messages.in --implementation /home/ews/worker/GTK-Build-EWS/build/WebKitBuild/Release/DerivedSources/WebKit/GPUProcessMessageReceiver.cpp --header /home/ews/worker/GTK-Build-EWS/build/WebKitBuild/Release/DerivedSources/WebKit/GPUProcessMessages.h --reply-header /home/ews/worker/GTK-Build-EWS/build/WebKitBuild/Release/DerivedSources/WebKit/GPUProcessMessagesReplies.h
Generating message receiver for --implementation
Traceback (most recent call last):
  File &quot;/home/ews/worker/GTK-Build-EWS/build/Source/WebKit/Scripts/generate-message-receiver.py&quot;, line 72, in &lt;module&gt;
    sys.exit(main(sys.argv))
  File &quot;/home/ews/worker/GTK-Build-EWS/build/Source/WebKit/Scripts/generate-message-receiver.py&quot;, line 50, in main
    with open(&apos;%s/%s.messages.in&apos; % (base_dir, parameter)) as source_file:
IOError: [Errno 20] Not a directory: &apos;GPUProcess/GPUProcess.messages.in/--implementation.messages.in&apos;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1646756</commentid>
    <comment_count>10</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-28 16:49:09 -0700</bug_when>
    <thetext>The point of me cc&apos;ing people who work on GTK was that this will take a bit more effort than I can do just looking at EWS.  generate-message-receiver.py used to be invoked for each .messages.in file with --implementation, --header, and --reply-header in argv, and this requires changing the CMake files to call generate-message-receiver.py with the Source/WebKit directory then a complete list of all the .messages.in files without the .messages.in suffix.  Could someone get that working on Linux?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1646781</commentid>
    <comment_count>11</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2020-04-28 17:47:08 -0700</bug_when>
    <thetext>It&apos;s the sort of thing I would have made time for back when I worked at Igalia, but I&apos;m swamped with non-WebKit tasks right now. Somebody else will probably help.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1647421</commentid>
    <comment_count>12</comment_count>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2020-04-30 11:08:31 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #10)
&gt; The point of me cc&apos;ing people who work on GTK was that this will take a bit
&gt; more effort than I can do just looking at EWS.  generate-message-receiver.py
&gt; used to be invoked for each .messages.in file with --implementation,
&gt; --header, and --reply-header in argv, and this requires changing the CMake
&gt; files to call generate-message-receiver.py with the Source/WebKit directory
&gt; then a complete list of all the .messages.in files without the .messages.in
&gt; suffix.  Could someone get that working on Linux?

Hey Alex,

One issue I foresee with this particular change is that you&apos;re going to hit the windows command line limit of 32767 characters. Can you have it so this script can take the values from a file?

https://support.microsoft.com/en-us/help/830473/command-prompt-cmd-exe-command-line-string-limitation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1647449</commentid>
    <comment_count>13</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-30 11:40:06 -0700</bug_when>
    <thetext>The parameters are python (maybe with a full path), path to generate-message-receiver.py, path to Source/WebKit directory, then a list of relative paths to all the .messages.in files, which is currently 5385 characters.  So unless you&apos;re using 9kb paths, you should be fine.  If someone runs up against the limit we can fix it, but I don&apos;t foresee that happening.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1647983</commentid>
    <comment_count>14</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-05-01 12:40:02 -0700</bug_when>
    <thetext>Adding all Igalia accounts who have committed to WebKit in the last few days.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648041</commentid>
    <comment_count>15</comment_count>
      <attachid>398233</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2020-05-01 13:57:43 -0700</bug_when>
    <thetext>Created attachment 398233
Patch CMake

Changes the CMake code for messages.in files</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648082</commentid>
    <comment_count>16</comment_count>
      <attachid>398245</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2020-05-01 15:00:32 -0700</bug_when>
    <thetext>Created attachment 398245
Patch CMake</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648102</commentid>
    <comment_count>17</comment_count>
      <attachid>398245</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2020-05-01 15:18:37 -0700</bug_when>
    <thetext>Comment on attachment 398245
Patch CMake

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

I checked with WinCairo and incremental builds work and everything links. There was a bug in the previous patch where it wasn&apos;t iterating through the list.

Source/WebKit/UIProcess/LegacySessionStateCodingNone.cpp still doesn&apos;t compile but I just commented out the offending code to test the build bits.

&gt; Source/WebKit/CMakeLists.txt:416
&gt; +        list(APPEND _outputs

Think maybe _outputs should be _output_files for symmetry with the _input_files variable.

&gt; Source/WebKit/CMakeLists.txt:429
&gt; +            ${_outputs}

Ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648112</commentid>
    <comment_count>18</comment_count>
      <attachid>398252</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-05-01 15:24:49 -0700</bug_when>
    <thetext>Created attachment 398252
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648147</commentid>
    <comment_count>19</comment_count>
      <attachid>398262</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-05-01 16:46:33 -0700</bug_when>
    <thetext>Created attachment 398262
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648226</commentid>
    <comment_count>20</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-05-02 03:01:16 -0700</bug_when>
    <thetext>diff --git a/Source/WebKit/UIProcess/LegacySessionStateCodingNone.cpp b/Source/WebKit/UIProcess/LegacySessionStateCodingNone.cpp                                                                                  
index a1ef8d6df672..762f55ed5c9e 100644
--- a/Source/WebKit/UIProcess/LegacySessionStateCodingNone.cpp
+++ b/Source/WebKit/UIProcess/LegacySessionStateCodingNone.cpp
@@ -39,7 +39,7 @@ namespace WebKit {
 RefPtr&lt;API::Data&gt; encodeLegacySessionState(const SessionState&amp; sessionState)
 {
     // FIXME: This should use WTF::Persistence::Encoder instead.
-    IPC::Encoder encoder(MessageName::LegacySessionState, 0);
+    IPC::Encoder encoder(IPC::MessageName::LegacySessionState, 0);
     encoder &lt;&lt; sessionState.backForwardListState;
     encoder &lt;&lt; sessionState.renderTreeSize;
     encoder &lt;&lt; sessionState.provisionalURL;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648227</commentid>
    <comment_count>21</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-05-02 03:02:49 -0700</bug_when>
    <thetext>Nice palindrome bug BTW :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648616</commentid>
    <comment_count>22</comment_count>
      <attachid>398390</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-05-04 10:45:55 -0700</bug_when>
    <thetext>Created attachment 398390
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649312</commentid>
    <comment_count>23</comment_count>
      <attachid>398390</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-05-05 12:02:45 -0700</bug_when>
    <thetext>Comment on attachment 398390
patch

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

&gt; Source/WebKit/Platform/IPC/Connection.cpp:1002
&gt; +    auto it = m_workQueueMessageReceivers.find(static_cast&lt;uint8_t&gt;(message-&gt;messageReceiverName()));

Why do we have all these new static casts? Can they be avoided?

&gt; Source/WebKit/Platform/IPC/Connection.h:349
&gt; +    using WorkQueueMessageReceiverMap = HashMap&lt;uint8_t, std::pair&lt;RefPtr&lt;WorkQueue&gt;, RefPtr&lt;WorkQueueMessageReceiver&gt;&gt;&gt;;

Can we use a stricter type here than uint8_t?

&gt; Source/WebKit/Platform/IPC/Connection.h:353
&gt; +    using ThreadMessageReceiverMap = HashMap&lt;uint8_t, RefPtr&lt;ThreadMessageReceiver&gt;&gt;;

ditto.

&gt; Source/WebKit/Platform/IPC/MessageReceiverMap.h:59
&gt; +    HashMap&lt;uint8_t, MessageReceiver*&gt; m_globalMessageReceivers;

ditto.

&gt; Source/WebKit/Platform/IPC/MessageReceiverMap.h:61
&gt; +    HashMap&lt;std::pair&lt;uint8_t, uint64_t&gt;, MessageReceiver*&gt; m_messageReceivers;

ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649313</commentid>
    <comment_count>24</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-05-05 12:04:53 -0700</bug_when>
    <thetext>We could avoid all these casts if we could have a HashMap with an enum type as a key.  I bet we could do it in HashMap by just using std::underlying_type and some static_asserts with isValidKey, but this is the best we can do until that change.  Maybe we should do that change first?

What do you mean by a stricter type?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649314</commentid>
    <comment_count>25</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-05-05 12:05:40 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #24)
&gt; We could avoid all these casts if we could have a HashMap with an enum type
&gt; as a key.  I bet we could do it in HashMap by just using
&gt; std::underlying_type and some static_asserts with isValidKey, but this is
&gt; the best we can do until that change.  Maybe we should do that change first?
&gt; 
&gt; What do you mean by a stricter type?

I mean the enum type rather than its underlying type.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649315</commentid>
    <comment_count>26</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-05-05 12:08:50 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #24)
&gt; We could avoid all these casts if we could have a HashMap with an enum type
&gt; as a key.  I bet we could do it in HashMap by just using
&gt; std::underlying_type and some static_asserts with isValidKey, but this is
&gt; the best we can do until that change.  Maybe we should do that change first?

I suggest looking into StrongEnumHashTraits which I believe is used for this purpose.

&gt; 
&gt; What do you mean by a stricter type?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649673</commentid>
    <comment_count>27</comment_count>
      <attachid>398631</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-05-06 09:54:04 -0700</bug_when>
    <thetext>Created attachment 398631
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649683</commentid>
    <comment_count>28</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-05-06 10:19:48 -0700</bug_when>
    <thetext>EWS is very red.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649727</commentid>
    <comment_count>29</comment_count>
      <attachid>398641</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-05-06 11:52:34 -0700</bug_when>
    <thetext>Created attachment 398641
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649741</commentid>
    <comment_count>30</comment_count>
      <attachid>398644</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-05-06 12:14:04 -0700</bug_when>
    <thetext>Created attachment 398644
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649781</commentid>
    <comment_count>31</comment_count>
      <attachid>398644</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-05-06 13:57:31 -0700</bug_when>
    <thetext>Comment on attachment 398644
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649865</commentid>
    <comment_count>32</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-05-06 15:54:26 -0700</bug_when>
    <thetext>Committed r261254: &lt;https://trac.webkit.org/changeset/261254&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 398644.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649866</commentid>
    <comment_count>33</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-05-06 15:55:20 -0700</bug_when>
    <thetext>&lt;rdar://problem/62949317&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649953</commentid>
    <comment_count>34</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2020-05-06 20:57:36 -0700</bug_when>
    <thetext>(In reply to EWS from comment #32)
&gt; Committed r261254: &lt;https://trac.webkit.org/changeset/261254&gt;
This appears to have broken webkitpy tests on the bots:
IOError: [Errno 2] No such file or directory: &apos;/Volumes/Data/slave/catalina-release-tests-wk1/build/Source/WebKit/Scripts/webkit/test-messages.in&apos;

https://build.webkit.org/builders/Apple-Catalina-Release-WK1-Tests/builds/5594</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649974</commentid>
    <comment_count>35</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-05-06 23:36:30 -0700</bug_when>
    <thetext>http://trac.webkit.org/r261270</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1652062</commentid>
    <comment_count>36</comment_count>
      <attachid>398644</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-05-12 18:01:20 -0700</bug_when>
    <thetext>Comment on attachment 398644
Patch

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

&gt; Source/WebKit/Shared/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:-82
&gt; -    m_client.paymentCoordinatorAddMessageReceiver(*this, Messages::WebPaymentCoordinatorProxy::messageReceiverName(), *this);

Who adds the message receiver now? I suspect this may be the cause of &lt;rdar://problem/63161750&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1652086</commentid>
    <comment_count>37</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-05-12 19:01:15 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #36)
&gt; Comment on attachment 398644 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=398644&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/Shared/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:-82
&gt; &gt; -    m_client.paymentCoordinatorAddMessageReceiver(*this, Messages::WebPaymentCoordinatorProxy::messageReceiverName(), *this);
&gt; 
&gt; Who adds the message receiver now? I suspect this may be the cause of
&gt; &lt;rdar://problem/63161750&gt;

It was the reason. Fixing via https://bugs.webkit.org/show_bug.cgi?id=211826.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1677249</commentid>
    <comment_count>38</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-08-02 19:36:49 -0700</bug_when>
    <thetext>There were two mistakes in this patch that led to a super-strange problem where generated files were malformed:

1) The rule in DerivedSources.make has multiple targets; so it needs to be a pattern rule, which is the kind of rule that make handles multiple targets correctly for. The rule was a pattern rule before this patch, but since there wasn’t a comment explaining that was important, this patch changed it to a non-pattern rule. This meant that the rule could run multiple times in parallel. Since make re-checks modification dates after running, it doesn’t always run once per generated file but in theory it could! Keith Rollin figured out it was running multiple times and fixed it in bug 215054.

2) There was a typo &quot;addsufix&quot; so the Messages.h files were not properly identified as targets to make. Make silently ignored the entire thing. I noticed the typo was the reason the files weren’t being regenerated on my computer when I deleted one and fixed it in bug 215064.

We should probably follow up by adding a comment to the makefile explaining why the rule needs to be a pattern rule.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1677316</commentid>
    <comment_count>39</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-08-03 09:32:37 -0700</bug_when>
    <thetext>Make is such a strange language.  Thanks for fixing it.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>397783</attachid>
            <date>2020-04-27 18:55:49 -0700</date>
            <delta_ts>2020-04-27 22:13:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211112-20200427185547.patch</filename>
            <type>text/plain</type>
            <size>350469</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNjA3NjQpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDIwLTA0LTI3ICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVkdWNlIElQQyBvdmVyaGVhZCBm
b3IgbWVzc2FnZSByZWNlaXZlciBuYW1lIGFuZCBtZXNzYWdlIG5hbWUgdG8gMiBieXRlcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjExMTEyCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvRW51bVRy
YWl0cy5oOgorCiAyMDIwLTA0LTI2ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbQ29jb2FdIHN0b3AgdXNpbmcgb3V0IGFyZ3VtZW50cyBmb3IgZG9jdW1lbnQgYXR0
cmlidXRlcyB3aGVuIGNvbnZlcnRpbmcgdG8gYXR0cmlidXRlZCBzdHJpbmdzCkluZGV4OiBTb3Vy
Y2UvV1RGL3d0Zi9FbnVtVHJhaXRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvRW51
bVRyYWl0cy5oCShyZXZpc2lvbiAyNjA3NjQpCisrKyBTb3VyY2UvV1RGL3d0Zi9FbnVtVHJhaXRz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDExIEBACiAKICNpbmNsdWRlIDx0eXBlX3Ry
YWl0cz4KIAorbmFtZXNwYWNlIElQQyB7CisvLyBGSVhNRTogRmluZCBhIGJldHRlciB3YXkgdG8g
ZG8gdGhpcyB3aXRob3V0IGxldHRpbmcgV1RGIGtub3cgYWJvdXQgSVBDLgorZW51bSBjbGFzcyBN
ZXNzYWdlTmFtZSA6IHVpbnQxNl90OworfQorCiBuYW1lc3BhY2UgV1RGIHsKIAogdGVtcGxhdGU8
dHlwZW5hbWU+IHN0cnVjdCBFbnVtVHJhaXRzOwpAQCAtNTEsNyArNTYsNyBAQCBzdHJ1Y3QgRW51
bVZhbHVlQ2hlY2tlcjxULCBFbnVtVmFsdWVzPEU+CiAgICAgfQogfTsKIAotdGVtcGxhdGU8dHlw
ZW5hbWUgRSwgdHlwZW5hbWUgVCwgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2VudW08RT46OnZh
bHVlICYmICFzdGQ6OmlzX3NhbWU8c3RkOjp1bmRlcmx5aW5nX3R5cGVfdDxFPiwgYm9vbD46OnZh
bHVlPiogPSBudWxscHRyPgordGVtcGxhdGU8dHlwZW5hbWUgRSwgdHlwZW5hbWUgVCwgc3RkOjpl
bmFibGVfaWZfdDxzdGQ6OmlzX2VudW08RT46OnZhbHVlICYmICFzdGQ6OmlzX3NhbWU8c3RkOjp1
bmRlcmx5aW5nX3R5cGVfdDxFPiwgYm9vbD46OnZhbHVlICYmICFzdGQ6OmlzX3NhbWU8RSwgSVBD
OjpNZXNzYWdlTmFtZT46OnZhbHVlPiogPSBudWxscHRyPgogY29uc3RleHByIGJvb2wgaXNWYWxp
ZEVudW0oVCB0KQogewogICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFQpID49IHN0ZDo6dW5kZXJs
eWluZ190eXBlX3Q8RT4oKSwgIkludGVncmFsIHR5cGUgbXVzdCBiZSBhdCBsZWFzdCB0aGUgc2l6
ZSBvZiB0aGUgdW5kZXJseWluZyBlbnVtIHR5cGUiKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAy
NjA4MDYpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDI4OCBAQAorMjAyMC0wNC0yNyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3
ZWJraXQub3JnPgorCisgICAgICAgIFJlZHVjZSBJUEMgb3ZlcmhlYWQgZm9yIG1lc3NhZ2UgcmVj
ZWl2ZXIgbmFtZSBhbmQgbWVzc2FnZSBuYW1lIHRvIDIgYnl0ZXMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMTExMgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoT09QUyEpLgorCisg
ICAgICAgICogRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVy
aXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UpOgorICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVTeW5jTWVzc2FnZSk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZl
SW52YWxpZE1lc3NhZ2UpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3Nh
Z2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGlkUmVjZWl2ZVN5bmNNZXNz
YWdlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9pb3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3NJT1MubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpwYXltZW50Q29vcmRpbmF0b3JBZGRNZXNzYWdlUmVjZWl2ZXIpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cGF5bWVudENv
b3JkaW5hdG9yUmVtb3ZlTWVzc2FnZVJlY2VpdmVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBQbGF0
Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OldhaXRG
b3JNZXNzYWdlU3RhdGU6OldhaXRGb3JNZXNzYWdlU3RhdGUpOgorICAgICAgICAoSVBDOjpDb25u
ZWN0aW9uOjphZGRXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIpOgorICAgICAgICAoSVBDOjpDb25u
ZWN0aW9uOjpyZW1vdmVXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIpOgorICAgICAgICAoSVBDOjpD
b25uZWN0aW9uOjpkaXNwYXRjaFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlck1lc3NhZ2UpOgorICAg
ICAgICAoSVBDOjpDb25uZWN0aW9uOjphZGRUaHJlYWRNZXNzYWdlUmVjZWl2ZXIpOgorICAgICAg
ICAoSVBDOjpDb25uZWN0aW9uOjpyZW1vdmVUaHJlYWRNZXNzYWdlUmVjZWl2ZXIpOgorICAgICAg
ICAoSVBDOjpDb25uZWN0aW9uOjpkaXNwYXRjaFRocmVhZE1lc3NhZ2VSZWNlaXZlck1lc3NhZ2Up
OgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVTeW5jTWVzc2FnZUVuY29kZXIpOgor
ICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpzZW5kTWVzc2FnZSk6CisgICAgICAgIChJUEM6OkNv
bm5lY3Rpb246OndhaXRGb3JNZXNzYWdlKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6c2Vu
ZFN5bmNNZXNzYWdlKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6d2FpdEZvclN5bmNSZXBs
eSk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnByb2Nlc3NJbmNvbWluZ01lc3NhZ2UpOgor
ICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpkaXNwYXRjaFN5bmNNZXNzYWdlKToKKyAgICAgICAg
KElQQzo6Q29ubmVjdGlvbjo6ZGlzcGF0Y2hEaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UpOgorICAg
ICAgICAoSVBDOjpDb25uZWN0aW9uOjpkaXNwYXRjaE1lc3NhZ2UpOgorICAgICAgICAoSVBDOjpD
b25uZWN0aW9uOjpkaXNwYXRjaE1lc3NhZ2VUb1dvcmtRdWV1ZVJlY2VpdmVyKToKKyAgICAgICAg
KElQQzo6Q29ubmVjdGlvbjo6ZGlzcGF0Y2hNZXNzYWdlVG9UaHJlYWRSZWNlaXZlcik6CisgICAg
ICAgIChJUEM6OkNvbm5lY3Rpb246OmRpc3BhdGNoSW5jb21pbmdNZXNzYWdlcyk6CisgICAgICAg
ICogUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6
c2VuZCk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnNlbmRXaXRoQXN5bmNSZXBseSk6Cisg
ICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnNlbmRTeW5jKToKKyAgICAgICAgKElQQzo6Q29ubmVj
dGlvbjo6d2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRlbHkpOgorICAgICAgICAqIFBsYXRmb3Jt
L0lQQy9EZWNvZGVyLmNwcDoKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvRGVjb2Rlci5oOgorICAg
ICAgICAoSVBDOjpEZWNvZGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lIGNvbnN0KToKKyAgICAgICAg
KElQQzo6RGVjb2Rlcjo6bWVzc2FnZU5hbWUgY29uc3QpOgorICAgICAgICAoSVBDOjpEZWNvZGVy
OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpEZWNvZGVyOjpvcGVyYXRvcj4+KToKKyAgICAgICAg
KiBQbGF0Zm9ybS9JUEMvRW5jb2Rlci5jcHA6CisgICAgICAgIChJUEM6OkVuY29kZXI6OkVuY29k
ZXIpOgorICAgICAgICAoSVBDOjpFbmNvZGVyOjplbmNvZGVIZWFkZXIpOgorICAgICAgICAqIFBs
YXRmb3JtL0lQQy9FbmNvZGVyLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3Nh
Z2UuaDoKKyAgICAgICAgKElQQzo6aGFuZGxlTWVzc2FnZUFzeW5jKToKKyAgICAgICAgKiBQbGF0
Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVyTWFwLmNwcDoKKyAgICAgICAgKElQQzo6TWVzc2FnZVJl
Y2VpdmVyTWFwOjphZGRNZXNzYWdlUmVjZWl2ZXIpOgorICAgICAgICAoSVBDOjpNZXNzYWdlUmVj
ZWl2ZXJNYXA6OnJlbW92ZU1lc3NhZ2VSZWNlaXZlcik6CisgICAgICAgIChJUEM6Ok1lc3NhZ2VS
ZWNlaXZlck1hcDo6ZGlzcGF0Y2hNZXNzYWdlKToKKyAgICAgICAgKElQQzo6TWVzc2FnZVJlY2Vp
dmVyTWFwOjpkaXNwYXRjaFN5bmNNZXNzYWdlKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvTWVz
c2FnZVJlY2VpdmVyTWFwLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL01lc3NhZ2VTZW5kZXIu
aDoKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvY29jb2EvQ29ubmVjdGlvbkNvY29hLm1tOgorICAg
ICAgICAoSVBDOjpDb25uZWN0aW9uOjpvcGVuKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6
c2VuZE1lc3NhZ2UpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpzZW5kT3V0Z29pbmdNZXNz
YWdlKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6cmVjZWl2ZVNvdXJjZUV2ZW50SGFuZGxl
cik6CisgICAgICAgICogUGxhdGZvcm0vSVBDL2NvY29hL01hY2hNZXNzYWdlLmNwcDoKKyAgICAg
ICAgKElQQzo6TWFjaE1lc3NhZ2U6OmNyZWF0ZSk6CisgICAgICAgIChJUEM6Ok1hY2hNZXNzYWdl
OjpNYWNoTWVzc2FnZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL2NvY29hL01hY2hNZXNzYWdl
Lmg6CisgICAgICAgIChJUEM6Ok1hY2hNZXNzYWdlOjptZXNzYWdlUmVjZWl2ZXJOYW1lIGNvbnN0
KToKKyAgICAgICAgKElQQzo6TWFjaE1lc3NhZ2U6Om1lc3NhZ2VOYW1lIGNvbnN0KToKKyAgICAg
ICAgKiBQbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZSk6Cisg
ICAgICAgICogUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5oOgorICAgICAgICAq
IFNjcmlwdHMvTWFrZWZpbGU6CisgICAgICAgICogU2NyaXB0cy9nZW5lcmF0ZS1tZXNzYWdlLXJl
Y2VpdmVyLnB5OgorICAgICAgICAobWFpbik6CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvTGVn
YWN5TWVzc2FnZXMtZXhwZWN0ZWQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dC9MZWdhY3lNZXNzYWdlc1JlcGxpZXMtZXhwZWN0ZWQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdC9NZXNzYWdlTmFtZXMuY3BwOiBBZGRlZC4KKyAgICAgICAgKElQQzo6ZGVz
Y3JpcHRpb24pOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L01lc3NhZ2VOYW1lcy5oOiBBZGRl
ZC4KKyAgICAgICAgKElQQzo6cmVjZWl2ZXJOYW1lKToKKyAgICAgICAgKFdURjo6aXNWYWxpZEVu
dW0pOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L01lc3NhZ2VSZWNlaXZlci1leHBlY3RlZC5j
cHA6IFJlbW92ZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXQvTWVzc2FnZVJlY2VpdmVyU3Vw
ZXJjbGFzcy1leHBlY3RlZC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXQv
TWVzc2FnZXMtZXhwZWN0ZWQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9N
ZXNzYWdlc1JlcGxpZXMtZXhwZWN0ZWQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdC9NZXNzYWdlc1JlcGxpZXNTdXBlcmNsYXNzUmVwbGllcy1leHBlY3RlZC5oOiBSZW1vdmVk
LgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L01lc3NhZ2VzU3VwZXJjbGFzcy1leHBlY3RlZC5o
OiBSZW1vdmVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5OgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0L3Rlc3QtbGVnYWN5LW1lc3NhZ2VzLmluOiBSZW1vdmVkLgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3QtbGVnYWN5Lm1lc3NhZ2VzLmluOiBDb3BpZWQgZnJv
bSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3QtbGVnYWN5LW1lc3NhZ2VzLmluLgor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3QtbGVnYWN5TWVzc2FnZVJlY2VpdmVyLmNwcDog
QWRkZWQuCisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5l
Y3Rpb246OnNlbmQpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RNdWx0aXBsZUF0
dHJpYnV0ZXM6OnNlbmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkaWRSZWNlaXZlV2Vi
UGFnZU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkaWRSZWNlaXZlU3luY1dl
YlBhZ2VNZXNzYWdlKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0LWxlZ2FjeU1lc3Nh
Z2VzLmg6IEFkZGVkLgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6Om1lc3NhZ2VSZWNlaXZl
ck5hbWUpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRVUkw6Om5hbWUpOgorICAg
ICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRVUkw6OkxvYWRVUkwpOgorICAgICAgICAoTWVz
c2FnZXM6OldlYlBhZ2U6OkxvYWRVUkw6OmFyZ3VtZW50cyBjb25zdCk6CisgICAgICAgIChNZXNz
YWdlczo6V2ViUGFnZTo6TG9hZFNvbWV0aGluZzo6bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6
V2ViUGFnZTo6TG9hZFNvbWV0aGluZzo6TG9hZFNvbWV0aGluZyk6CisgICAgICAgIChNZXNzYWdl
czo6V2ViUGFnZTo6TG9hZFNvbWV0aGluZzo6YXJndW1lbnRzIGNvbnN0KToKKyAgICAgICAgKE1l
c3NhZ2VzOjpXZWJQYWdlOjpUb3VjaEV2ZW50OjpuYW1lKToKKyAgICAgICAgKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpUb3VjaEV2ZW50OjpUb3VjaEV2ZW50KToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpUb3VjaEV2ZW50Ojphcmd1bWVudHMgY29uc3QpOgorICAgICAgICAoTWVzc2FnZXM6Oldl
YlBhZ2U6OkFkZEV2ZW50OjpuYW1lKToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpBZGRF
dmVudDo6QWRkRXZlbnQpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OkFkZEV2ZW50Ojph
cmd1bWVudHMgY29uc3QpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRTb21ldGhp
bmdFbHNlOjpuYW1lKToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkU29tZXRoaW5n
RWxzZTo6TG9hZFNvbWV0aGluZ0Vsc2UpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6Okxv
YWRTb21ldGhpbmdFbHNlOjphcmd1bWVudHMgY29uc3QpOgorICAgICAgICAoTWVzc2FnZXM6Oldl
YlBhZ2U6OkRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbjo6bmFtZSk6CisgICAgICAgIChNZXNzYWdl
czo6V2ViUGFnZTo6RGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uOjpEaWRSZWNlaXZlUG9saWN5RGVj
aXNpb24pOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJlY2VpdmVQb2xpY3lEZWNp
c2lvbjo6YXJndW1lbnRzIGNvbnN0KToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpDbG9z
ZTo6bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6Q2xvc2U6OmFyZ3VtZW50cyBj
b25zdCk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6UHJlZmVyZW5jZXNEaWRDaGFuZ2U6
Om5hbWUpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlByZWZlcmVuY2VzRGlkQ2hhbmdl
OjpQcmVmZXJlbmNlc0RpZENoYW5nZSk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6UHJl
ZmVyZW5jZXNEaWRDaGFuZ2U6OmFyZ3VtZW50cyBjb25zdCk6CisgICAgICAgIChNZXNzYWdlczo6
V2ViUGFnZTo6U2VuZERvdWJsZUFuZEZsb2F0OjpuYW1lKToKKyAgICAgICAgKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpTZW5kRG91YmxlQW5kRmxvYXQ6OlNlbmREb3VibGVBbmRGbG9hdCk6CisgICAgICAg
IChNZXNzYWdlczo6V2ViUGFnZTo6U2VuZERvdWJsZUFuZEZsb2F0Ojphcmd1bWVudHMgY29uc3Qp
OgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlNlbmRJbnRzOjpuYW1lKToKKyAgICAgICAg
KE1lc3NhZ2VzOjpXZWJQYWdlOjpTZW5kSW50czo6U2VuZEludHMpOgorICAgICAgICAoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlNlbmRJbnRzOjphcmd1bWVudHMgY29uc3QpOgorICAgICAgICAoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkNyZWF0ZVBsdWdpbjo6bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6V2Vi
UGFnZTo6Q3JlYXRlUGx1Z2luOjpDcmVhdGVQbHVnaW4pOgorICAgICAgICAoTWVzc2FnZXM6Oldl
YlBhZ2U6OkNyZWF0ZVBsdWdpbjo6YXJndW1lbnRzIGNvbnN0KToKKyAgICAgICAgKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpSdW5KYXZhU2NyaXB0QWxlcnQ6Om5hbWUpOgorICAgICAgICAoTWVzc2FnZXM6
OldlYlBhZ2U6OlJ1bkphdmFTY3JpcHRBbGVydDo6UnVuSmF2YVNjcmlwdEFsZXJ0KToKKyAgICAg
ICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpSdW5KYXZhU2NyaXB0QWxlcnQ6OmFyZ3VtZW50cyBjb25z
dCk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6R2V0UGx1Z2luczo6bmFtZSk6CisgICAg
ICAgIChNZXNzYWdlczo6V2ViUGFnZTo6R2V0UGx1Z2luczo6R2V0UGx1Z2lucyk6CisgICAgICAg
IChNZXNzYWdlczo6V2ViUGFnZTo6R2V0UGx1Z2luczo6YXJndW1lbnRzIGNvbnN0KToKKyAgICAg
ICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6bmFtZSk6
CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246
OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdl
OjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6YXJndW1lbnRzIGNvbnN0KToKKyAgICAgICAg
KE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0TXVsdGlwbGVBdHRyaWJ1dGVzOjpuYW1lKToKKyAgICAg
ICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0TXVsdGlwbGVBdHRyaWJ1dGVzOjphcmd1bWVudHMg
Y29uc3QpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RQYXJhbWV0ZXJBdHRyaWJ1
dGVzOjpuYW1lKToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0UGFyYW1ldGVyQXR0
cmlidXRlczo6VGVzdFBhcmFtZXRlckF0dHJpYnV0ZXMpOgorICAgICAgICAoTWVzc2FnZXM6Oldl
YlBhZ2U6OlRlc3RQYXJhbWV0ZXJBdHRyaWJ1dGVzOjphcmd1bWVudHMgY29uc3QpOgorICAgICAg
ICAoTWVzc2FnZXM6OldlYlBhZ2U6OlRlbXBsYXRlVGVzdDo6bmFtZSk6CisgICAgICAgIChNZXNz
YWdlczo6V2ViUGFnZTo6VGVtcGxhdGVUZXN0OjpUZW1wbGF0ZVRlc3QpOgorICAgICAgICAoTWVz
c2FnZXM6OldlYlBhZ2U6OlRlbXBsYXRlVGVzdDo6YXJndW1lbnRzIGNvbnN0KToKKyAgICAgICAg
KE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRWaWRlb0xheWVySUQ6Om5hbWUpOgorICAgICAgICAoTWVz
c2FnZXM6OldlYlBhZ2U6OlNldFZpZGVvTGF5ZXJJRDo6U2V0VmlkZW9MYXllcklEKToKKyAgICAg
ICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRWaWRlb0xheWVySUQ6OmFyZ3VtZW50cyBjb25zdCk6
CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6RGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rp
b246Om5hbWUpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZENyZWF0ZVdlYlByb2Nl
c3NDb25uZWN0aW9uOjpEaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIChN
ZXNzYWdlczo6V2ViUGFnZTo6RGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmFyZ3VtZW50
cyBjb25zdCk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6SW50ZXJwcmV0S2V5RXZlbnQ6
Om5hbWUpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OkludGVycHJldEtleUV2ZW50OjpJ
bnRlcnByZXRLZXlFdmVudCk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6SW50ZXJwcmV0
S2V5RXZlbnQ6OmFyZ3VtZW50cyBjb25zdCk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6
RGVwcmVjYXRlZE9wZXJhdGlvbjo6bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6
RGVwcmVjYXRlZE9wZXJhdGlvbjo6RGVwcmVjYXRlZE9wZXJhdGlvbik6CisgICAgICAgIChNZXNz
YWdlczo6V2ViUGFnZTo6RGVwcmVjYXRlZE9wZXJhdGlvbjo6YXJndW1lbnRzIGNvbnN0KToKKyAg
ICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpFeHBlcmltZW50YWxPcGVyYXRpb246Om5hbWUpOgor
ICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OkV4cGVyaW1lbnRhbE9wZXJhdGlvbjo6RXhwZXJp
bWVudGFsT3BlcmF0aW9uKToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpFeHBlcmltZW50
YWxPcGVyYXRpb246OmFyZ3VtZW50cyBjb25zdCk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXQv
dGVzdC1sZWdhY3lNZXNzYWdlc1JlcGxpZXMuaDogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy93
ZWJraXQvdGVzdC1tZXNzYWdlcy5pbjogUmVtb3ZlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dC90ZXN0LXN1cGVyY2xhc3MtbWVzc2FnZXMuaW46IFJlbW92ZWQuCisgICAgICAgICogU2NyaXB0
cy93ZWJraXQvdGVzdC1zdXBlcmNsYXNzLm1lc3NhZ2VzLmluOiBDb3BpZWQgZnJvbSBTb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3Qtc3VwZXJjbGFzcy1tZXNzYWdlcy5pbi4KKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0LXN1cGVyY2xhc3NNZXNzYWdlUmVjZWl2ZXIuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0QXN5bmNNZXNzYWdlOjpjYWxs
UmVwbHkpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RBc3luY01lc3NhZ2U6OmNh
bmNlbFJlcGx5KToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0QXN5bmNNZXNzYWdl
OjpzZW5kKToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0QXN5bmNNZXNzYWdlV2l0
aE5vQXJndW1lbnRzOjpjYWxsUmVwbHkpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlRl
c3RBc3luY01lc3NhZ2VXaXRoTm9Bcmd1bWVudHM6OmNhbmNlbFJlcGx5KToKKyAgICAgICAgKE1l
c3NhZ2VzOjpXZWJQYWdlOjpUZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJndW1lbnRzOjpzZW5kKToK
KyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxl
QXJndW1lbnRzOjpjYWxsUmVwbHkpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RB
c3luY01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHM6OmNhbmNlbFJlcGx5KToKKyAgICAgICAg
KE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1lbnRz
OjpzZW5kKToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0U3luY01lc3NhZ2U6OnNl
bmQpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RTeW5jaHJvbm91c01lc3NhZ2U6
OnNlbmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkaWRSZWNlaXZlTWVzc2FnZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRpZFJlY2VpdmVTeW5jTWVzc2FnZSk6CisgICAgICAg
ICogU2NyaXB0cy93ZWJraXQvdGVzdC1zdXBlcmNsYXNzTWVzc2FnZXMuaDogQWRkZWQuCisgICAg
ICAgIChNZXNzYWdlczo6V2ViUGFnZTo6bWVzc2FnZVJlY2VpdmVyTmFtZSk6CisgICAgICAgIChN
ZXNzYWdlczo6V2ViUGFnZTo6TG9hZFVSTDo6bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6V2Vi
UGFnZTo6TG9hZFVSTDo6TG9hZFVSTCk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6TG9h
ZFVSTDo6YXJndW1lbnRzIGNvbnN0KToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0
QXN5bmNNZXNzYWdlOjpuYW1lKToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0QXN5
bmNNZXNzYWdlOjphc3luY01lc3NhZ2VSZXBseU5hbWUpOgorICAgICAgICAoTWVzc2FnZXM6Oldl
YlBhZ2U6OlRlc3RBc3luY01lc3NhZ2U6OlRlc3RBc3luY01lc3NhZ2UpOgorICAgICAgICAoTWVz
c2FnZXM6OldlYlBhZ2U6OlRlc3RBc3luY01lc3NhZ2U6OmFyZ3VtZW50cyBjb25zdCk6CisgICAg
ICAgIChNZXNzYWdlczo6V2ViUGFnZTo6VGVzdEFzeW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50czo6
bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6VGVzdEFzeW5jTWVzc2FnZVdpdGhO
b0FyZ3VtZW50czo6YXN5bmNNZXNzYWdlUmVwbHlOYW1lKToKKyAgICAgICAgKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpUZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJndW1lbnRzOjphcmd1bWVudHMgY29uc3Qp
OgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RBc3luY01lc3NhZ2VXaXRoTXVsdGlw
bGVBcmd1bWVudHM6Om5hbWUpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RBc3lu
Y01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHM6OmFzeW5jTWVzc2FnZVJlcGx5TmFtZSk6Cisg
ICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6VGVzdEFzeW5jTWVzc2FnZVdpdGhNdWx0aXBsZUFy
Z3VtZW50czo6YXJndW1lbnRzIGNvbnN0KToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpU
ZXN0U3luY01lc3NhZ2U6Om5hbWUpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RT
eW5jTWVzc2FnZTo6VGVzdFN5bmNNZXNzYWdlKToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdl
OjpUZXN0U3luY01lc3NhZ2U6OmFyZ3VtZW50cyBjb25zdCk6CisgICAgICAgIChNZXNzYWdlczo6
V2ViUGFnZTo6VGVzdFN5bmNocm9ub3VzTWVzc2FnZTo6bmFtZSk6CisgICAgICAgIChNZXNzYWdl
czo6V2ViUGFnZTo6VGVzdFN5bmNocm9ub3VzTWVzc2FnZTo6VGVzdFN5bmNocm9ub3VzTWVzc2Fn
ZSk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6VGVzdFN5bmNocm9ub3VzTWVzc2FnZTo6
YXJndW1lbnRzIGNvbnN0KToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0LXN1cGVyY2xh
c3NNZXNzYWdlc1JlcGxpZXMuaDogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXQvdGVz
dC5tZXNzYWdlcy5pbjogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXQvdGVzdE1lc3Nh
Z2VSZWNlaXZlci5jcHA6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3RNZXNz
YWdlcy5oOiBBZGRlZC4KKyAgICAgICAgKE1lc3NhZ2VzOjpOb25lOjptZXNzYWdlUmVjZWl2ZXJO
YW1lKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0TWVzc2FnZXNSZXBsaWVzLmg6IEFk
ZGVkLgorICAgICAgICAqIFNoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94
eS5oOgorICAgICAgICAqIFNoYXJlZC9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0
b3JQcm94eUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQ
cm94eTo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YXltZW50Q29vcmRpbmF0b3JQcm94eTo6fldlYlBheW1lbnRDb29yZGluYXRvclByb3h5KToKKyAg
ICAgICAgKiBTaGFyZWQvQXV4aWxpYXJ5UHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkF1
eGlsaWFyeVByb2Nlc3M6OmFkZE1lc3NhZ2VSZWNlaXZlcik6CisgICAgICAgIChXZWJLaXQ6OkF1
eGlsaWFyeVByb2Nlc3M6OnJlbW92ZU1lc3NhZ2VSZWNlaXZlcik6CisgICAgICAgIChXZWJLaXQ6
OkF1eGlsaWFyeVByb2Nlc3M6OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZSk6CisgICAgICAgICog
U2hhcmVkL0F1eGlsaWFyeVByb2Nlc3MuaDoKKyAgICAgICAgKFdlYktpdDo6QXV4aWxpYXJ5UHJv
Y2Vzczo6YWRkTWVzc2FnZVJlY2VpdmVyKToKKyAgICAgICAgKFdlYktpdDo6QXV4aWxpYXJ5UHJv
Y2Vzczo6cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKToKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvQXV4
aWxpYXJ5UHJvY2Vzc0NvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpBdXhpbGlhcnlQcm9jZXNz
OjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UpOgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6
CisgICAgICAgICogVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkF1eGlsaWFyeVByb2Nlc3NQcm94eTo6YWRkTWVzc2FnZVJlY2VpdmVyKToKKyAg
ICAgICAgKFdlYktpdDo6QXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjpyZW1vdmVNZXNzYWdlUmVjZWl2
ZXIpOgorICAgICAgICAoV2ViS2l0OjpBdXhpbGlhcnlQcm9jZXNzUHJveHk6OmxvZ0ludmFsaWRN
ZXNzYWdlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5Lmg6Cisg
ICAgICAgIChXZWJLaXQ6OkF1eGlsaWFyeVByb2Nlc3NQcm94eTo6YWRkTWVzc2FnZVJlY2VpdmVy
KToKKyAgICAgICAgKFdlYktpdDo6QXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjpyZW1vdmVNZXNzYWdl
UmVjZWl2ZXIpOgorICAgICAgICAoV2ViS2l0OjpBdXhpbGlhcnlQcm9jZXNzUHJveHk6OnNlbmQp
OgorICAgICAgICAoV2ViS2l0OjpBdXhpbGlhcnlQcm9jZXNzUHJveHk6OnNlbmRXaXRoQXN5bmNS
ZXBseSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2Vy
UHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW06
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cGF5bWVudENvb3JkaW5hdG9yQWRkTWVz
c2FnZVJlY2VpdmVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpw
YXltZW50Q29vcmRpbmF0b3JSZW1vdmVNZXNzYWdlUmVjZWl2ZXIpOiBEZWxldGVkLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
R1BVUHJvY2Vzc1Byb3h5OjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzUHJveHk6OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZSk6CisgICAgICAgICogVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nl
c3NQcm94eTo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUHJvdmlz
aW9uYWxQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNpb25hbFBhZ2VQcm94
eTo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9TdXNwZW5kZWRQYWdl
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjptZXNzYWdlTmFtZXNUb0lnbm9yZVdoaWxlU3Vz
cGVuZGVkKToKKyAgICAgICAgKFdlYktpdDo6U3VzcGVuZGVkUGFnZVByb3h5OjpkaWRSZWNlaXZl
TWVzc2FnZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NQb29sOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzUG9vbDo6YWRkTWVzc2FnZVJlY2VpdmVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzc1Bvb2w6OnJlbW92ZU1lc3NhZ2VSZWNlaXZlcik6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6c2hvdWxkU2VuZFBlbmRpbmdNZXNz
YWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpkaWRSZWNlaXZlSW52YWxp
ZE1lc3NhZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OkdQVVByb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwOgorICAg
ICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZUludmFsaWRN
ZXNzYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5l
Y3Rpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1Jl
bW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXll
clRyZWVEcmF3aW5nQXJlYTo6dXBkYXRlUmVuZGVyaW5nKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpkaWRSZWNlaXZl
TWVzc2FnZSk6CisKIDIwMjAtMDQtMjcgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5j
b20+CiAKICAgICAgICAgRm9sbG93LXVwIGNoYW5nZSBhZnRlciByMjYwNzk4LgpJbmRleDogU291
cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CShyZXZpc2lv
biAyNjA3NjQpCisrKyBTb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVs
aXN0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEsMzkxIEBACiAjIFRoaXMgZmlsZSBpcyBnZW5l
cmF0ZWQgYnkgdGhlIGdlbmVyYXRlLXhjZmlsZWxpc3RzIHNjcmlwdC4KKyQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29k
ZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzTWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlcy5o
CiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxl
eGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUv
T3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVUHJvY2Vzc01lc3NhZ2VSZWNl
aXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9V
c2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9HUFVQcm9jZXNzTWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVVByb2Nlc3NNZXNzYWdlc1JlcGxpZXMuaAorJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3Rl
bnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4v
Y29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHlNZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJj
ZS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5TWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlck1l
c3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlck1lc3NhZ2Vz
LmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9h
bGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlck1lc3NhZ2VzUmVwbGllcy5oCiskKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlz
dGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlQXVkaW9TZXNzaW9uUHJveHlNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNl
bi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1
ZGlvU2Vzc2lvblByb3h5TWFuYWdlck1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291
cmNlL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1Nlc3Npb25Qcm94
eU1hbmFnZXJNZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvblByb3h5TWVzc2Fn
ZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktp
dDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvblByb3h5TWVzc2FnZXMuaAorJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3Rl
bnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUF1ZGlvU2Vzc2lvblByb3h5TWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVu
U291cmNlL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5UHJv
eHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5TWVzc2FnZXMuaAor
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhj
aHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUNETUZhY3RvcnlQcm94eU1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUv
T3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFu
Y2VQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5TWVzc2Fn
ZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJz
L2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHlNZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNl
bi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvblByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2Rl
L09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvblByb3h5TWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5
TWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKKyQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hy
aXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVDRE1Qcm94eU1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eU1lc3NhZ2VzUmVwbGllcy5o
CiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxl
eGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3Rl
bnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUxlZ2FjeUNETUZhY3RvcnlQcm94eU1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291
cmNlL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5
UHJveHlNZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5TWVzc2FnZVJlY2Vp
dmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1Vz
ZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5TWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2Rl
L09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNE
TVByb3h5TWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHlNZXNz
YWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
S2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5TWVzc2FnZXMuaAor
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhj
aHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eU1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2Vu
L2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUv
T3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyUHJveHlNZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHlN
ZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHlNZXNzYWdlUmVjZWl2ZXIu
Y3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMv
YWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eU1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9P
cGVuU291cmNlL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXll
clByb3h5TWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlck1lc3Nh
Z2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJL
aXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlck1lc3NhZ2VzLmgKKyQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hy
aXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlck1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2Nv
ZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvaW9zL1JlbW90ZU1l
ZGlhU2Vzc2lvbkhlbHBlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2Rl
L09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL2lvcy9SZW1vdGVNZWRp
YVNlc3Npb25IZWxwZXJQcm94eU1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNl
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVs
cGVyUHJveHlNZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eU1lc3NhZ2VS
ZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQy
Ly9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHlNZXNzYWdlcy5oCiskKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2Vu
L2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJU
Q0NvZGVjc1Byb3h5TWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNl
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRy
YWNrUmVuZGVyZXJNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09w
ZW5Tb3VyY2UvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlh
U3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXJNZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3Bl
blNvdXJjZS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFT
dHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlck1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2Nv
ZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlv
TWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9j
b2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRp
b01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVu
U291cmNlL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0
cmVhbVRyYWNrUmVuZGVyZXJNZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5T
b3VyY2UvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVy
TWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXJN
ZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8v
VXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyTWVzc2FnZXNSZXBsaWVzLmgK
KyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4
Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJy
dGMvUmVtb3RlTWVkaWFSZWNvcmRlck1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29k
ZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFS
ZWNvcmRlck1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlck1lc3NhZ2VzUmVwbGllcy5o
CiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxl
eGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2Vi
cnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIu
Y3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMv
YWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
d2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXJNZXNzYWdlcy5oCisk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNo
cmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRj
L1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXJNZXNzYWdlc1JlcGxpZXMuaAor
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhj
aHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0
Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlz
dGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1Jl
bW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9P
cGVuU291cmNlL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyTWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291
cmNlL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2Vy
TWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXJNZXNzYWdlcy5oCisk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNo
cmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Nv
b2tpZXMvV2ViQ29va2llTWFuYWdlck1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUv
T3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9M
ZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2Vu
L2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3Rv
Y29scy9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJNZXNzYWdlcy5oCiskKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2Nv
ZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29s
cy9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJNZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNl
bi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9JbmRleGVkREIv
V2ViSURCU2VydmVyTWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3Vy
Y2UvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9JbmRleGVkREIvV2ViSURCU2VydmVyTWVz
c2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1Vz
ZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9JbmRleGVkREIvV2ViSURCU2VydmVyTWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5z
ZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUv
T3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzTWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3Nh
Z2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0
Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyTWVzc2FnZVJlY2VpdmVy
LmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJz
L2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlck1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4v
Y29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NvbnRl
bnRSdWxlTGlzdE1hbmFnZXJNZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5T
b3VyY2UvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc01lc3NhZ2VS
ZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQy
Ly9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NNZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3Bl
blNvdXJjZS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzTWVzc2Fn
ZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQy
Ly9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyTWVzc2FnZVJlY2VpdmVyLmNwcAorJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJp
c3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUmVzb3VyY2VMb2FkZXJNZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlck1lc3NhZ2Vz
UmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8v
VXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsTWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3Rl
bnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
U29ja2V0Q2hhbm5lbE1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWxNZXNzYWdlc1JlcGxp
ZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJz
L2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtTWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9j
b2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0
U3RyZWFtTWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtTWVzc2FnZXNSZXBsaWVzLmgKKyQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hy
aXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrTWVzc2FnZVJlY2VpdmVyLmNwcAorJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJp
c3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2tNZXNzYWdlcy5oCiskKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2Nv
ZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
U2VydmljZVdvcmtlckZldGNoVGFza01lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUv
T3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09w
ZW5Tb3VyY2UvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNX
U2VydmVyQ29ubmVjdGlvbk1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5l
Y3Rpb25NZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNl
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb25NZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uTWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291
cmNlL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdl
clNldE1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlclNldE1lc3Nh
Z2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vy
cy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlclNldE1lc3NhZ2VzUmVwbGllcy5oCiskKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlz
dGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVu
c2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0Nh
Y2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb25NZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3Bl
blNvdXJjZS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVu
Z2luZUNvbm5lY3Rpb25NZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3Vy
Y2UvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya01ETlNSZWdpc3Rl
ck1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtNRE5TUmVnaXN0ZXJNZXNzYWdlcy5o
CiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxl
eGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L3dlYnJ0Yy9OZXR3b3JrTUROU1JlZ2lzdGVyTWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4v
Y29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdv
cmtSVENNb25pdG9yTWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3Vy
Y2UvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ01vbml0b3JN
ZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8v
VXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDTW9uaXRvck1lc3NhZ2VzUmVwbGllcy5oCiskKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlz
dGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0
Yy9OZXR3b3JrUlRDUHJvdmlkZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUv
T3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRD
UHJvdmlkZXJNZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXJNZXNzYWdlc1JlcGxp
ZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJz
L2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy93ZWJydGMvTmV0d29ya1JUQ1NvY2tldE1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5z
ZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05l
dHdvcmtSVENTb2NrZXRNZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDU29ja2V0TWVzc2FnZXNS
ZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9V
c2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvUGx1Z2lu
UHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVu
c2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29u
dHJvbGxlclByb3h5TWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNl
L1dlYktpdC9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eU1lc3NhZ2VzUmVwbGll
cy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMv
YWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nl
c3MvUGx1Z2luUHJvY2Vzc01lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVu
U291cmNlL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9jZXNzTWVzc2FnZXMu
aAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2Fs
ZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNz
L1BsdWdpblByb2Nlc3NNZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3Vy
Y2UvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uTWVzc2Fn
ZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktp
dDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9Q
bHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uTWVzc2FnZXMuaAorJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9j
b2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25u
ZWN0aW9uTWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9SZW1vdGVPYmplY3RSZWdpc3RyeU1lc3NhZ2VSZWNl
aXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9V
c2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FQSS9Db2NvYS9SZW1vdGVPYmplY3RSZWdpc3RyeU1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29k
ZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9SZW1vdGVPYmplY3RS
ZWdpc3RyeU1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eU1lc3Nh
Z2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJL
aXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5TWVzc2FnZXMuaAorJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJp
c3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHlNZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2Rl
L09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGlj
YXRpb25NYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3Vy
Y2UvU291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5h
Z2VyTWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktp
dDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9T
aGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyTWVzc2FnZXNSZXBsaWVz
LmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9h
bGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1eGls
aWFyeVByb2Nlc3NNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJj
ZS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXhpbGlhcnlQcm9jZXNzTWVzc2FnZXMuaAorJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3Rl
bnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9TaGFyZWQvQXV4aWxpYXJ5UHJvY2Vz
c01lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9QbHVnaW5zL05QT2JqZWN0TWVzc2FnZVJlY2VpdmVyTWVzc2FnZVJlY2VpdmVy
LmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJz
L2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1
Z2lucy9OUE9iamVjdE1lc3NhZ2VSZWNlaXZlck1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9P
cGVuU291cmNlL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvTlBPYmplY3RNZXNzYWdlUmVj
ZWl2ZXJNZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5z
ZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvbm5lY3Rpb25NZXNz
YWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNl
cnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJDb25uZWN0aW9uTWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNl
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25N
ZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uTWVzc2FnZXMuaAor
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhj
aHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21h
dGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbk1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2Nv
ZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF5YmFja1Nlc3Np
b25NYW5hZ2VyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNv
dXJjZS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
UHJveHlNZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
S2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHlNZXNzYWdlc1JlcGxp
ZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJz
L2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKKyQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hy
aXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1Vz
ZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHlNZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3Bl
blNvdXJjZS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFu
YWdlclByb3h5TWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eU1l
c3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eU1lc3NhZ2VzLmgK
KyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4
Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eU1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2Vu
L2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxv
YWRQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5TWVzc2FnZXMuaAor
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhj
aHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxv
YWRzL0Rvd25sb2FkUHJveHlNZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5T
b3VyY2UvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VSZWNl
aXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9V
c2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0RyYXdpbmdBcmVhUHJveHlNZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJj
ZS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5TWVzc2FnZXNSZXBsaWVz
LmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9h
bGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dQ
VS9HUFVQcm9jZXNzUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3Bl
blNvdXJjZS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5TWVzc2Fn
ZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJz
L2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
R1BVL0dQVVByb2Nlc3NQcm94eU1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3Bl
blNvdXJjZS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVj
dG9yUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlN
ZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8v
VXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlNZXNzYWdlc1JlcGxpZXMuaAor
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhj
aHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVj
dG9yL1dlYkluc3BlY3RvclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2Rl
L09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3Rv
clByb3h5TWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclByb3h5TWVzc2FnZXNSZXBsaWVzLmgK
KyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4
Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL01lZGlh
L0F1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCisk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNo
cmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9NZWRpYS9B
dWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvclByb3h5TWVzc2FnZXMuaAorJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9j
b2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTWVkaWEvQXVkaW9TZXNzaW9u
Um91dGluZ0FyYml0cmF0b3JQcm94eU1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUv
T3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29s
cy9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKKyQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hy
aXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
Q3VzdG9tUHJvdG9jb2xzL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5TWVzc2FnZXMu
aAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2Fs
ZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0
d29yay9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNZXNz
YWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktp
dDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAor
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhj
aHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3Vy
Y2UvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5TWVz
c2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJL
aXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAor
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhj
aHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5Qcm9jZXNzUHJveHlNZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJj
ZS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eU1lc3Nh
Z2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0
Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1l
c3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVBy
b3h5TWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktp
dDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlN
ZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHlNZXNz
YWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
S2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eU1lc3Nh
Z2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vy
cy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5TWVzc2FnZXNSZXBsaWVz
LmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9h
bGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Zp
ZXdHZXN0dXJlQ29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9P
cGVuU291cmNlL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlck1l
c3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9V
c2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlck1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2Nv
ZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaXNpdGVkTGlua1N0b3JlTWVz
c2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvVmlzaXRlZExpbmtTdG9yZU1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9P
cGVuU291cmNlL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Zpc2l0ZWRMaW5rU3RvcmVNZXNzYWdl
c1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIv
L1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHlN
ZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3JQcm94eU1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRv
clByb3h5TWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5j
cHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9h
bGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkNvb2tpZU1hbmFnZXJQcm94eU1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNl
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eU1lc3NhZ2VzUmVw
bGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNl
cnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNl
bi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnVsbFNjcmVlbk1h
bmFnZXJQcm94eU1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlNZXNzYWdlc1JlcGxpZXMu
aAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2Fs
ZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
R2VvbG9jYXRpb25NYW5hZ2VyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2Nv
ZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFn
ZXJQcm94eU1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5TWVzc2FnZXNSZXBsaWVzLmgK
KyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4
Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eU1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4v
Y29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eU1lc3Nh
Z2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0
Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2Vu
L2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJv
eHlNZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0
Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHlNZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9j
b2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2xNZXNz
YWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
S2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbE1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVu
U291cmNlL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sTWVzc2FnZXNSZXBs
aWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vy
cy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVu
U291cmNlL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eU1lc3NhZ2VzLmgK
KyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4
Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQcm94eU1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRWRpdGFibGVJbWFnZUNvbnRyb2xsZXJNZXNzYWdl
UmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0
Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvRWRpdGFibGVJbWFnZUNvbnRyb2xsZXJNZXNzYWdlcy5oCiskKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2Vu
L2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRWRpdGFibGVJbWFn
ZUNvbnRyb2xsZXJNZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2Uv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1NtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXJN
ZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlck1lc3NhZ2VzLmgK
KyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4
Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9T
bWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyTWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4v
Y29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJEZXZpY2VPcmll
bnRhdGlvblVwZGF0ZVByb3ZpZGVyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2Vu
L2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViRGV2aWNlT3Jp
ZW50YXRpb25VcGRhdGVQcm92aWRlclByb3h5TWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09w
ZW5Tb3VyY2UvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYkRldmljZU9yaWVudGF0aW9u
VXBkYXRlUHJvdmlkZXJQcm94eU1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3Bl
blNvdXJjZS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvU2VjSXRlbVNoaW1Qcm94eU1lc3Nh
Z2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJL
aXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL21hYy9TZWNJdGVtU2hpbVByb3h5TWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2Rl
L09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1NlY0l0ZW1TaGltUHJveHlN
ZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvck1lc3NhZ2VSZWNlaXZl
ci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vy
cy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JNZXNzYWdlcy5oCiskKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2Nv
ZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVu
dENvb3JkaW5hdG9yTWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNl
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9u
UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5
TWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIv
L1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eU1lc3NhZ2VzUmVwbGll
cy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMv
YWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
RGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXJNZXNzYWdlUmVjZWl2
ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNl
cnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXJNZXNzYWdlcy5o
CiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxl
eGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRGF0
YWJhc2VzL0luZGV4ZWREQi9XZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXJNZXNzYWdlc1JlcGxpZXMu
aAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2Fs
ZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0Z1
bGxTY3JlZW4vV2ViRnVsbFNjcmVlbk1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVu
c2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRnVsbFNjcmVlbi9X
ZWJGdWxsU2NyZWVuTWFuYWdlck1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNl
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL1dlYkZ1bGxTY3JlZW5NYW5hZ2Vy
TWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3Bw
CiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxl
eGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L0dQVVByb2Nlc3NDb25uZWN0aW9uTWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3Vy
Y2UvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbk1lc3Nh
Z2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0
Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRNZXNzYWdlUmVjZWl2
ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNl
cnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRNZXNzYWdlcy5oCiskKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVu
c2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRNZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2Rl
L09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXll
clByaXZhdGVSZW1vdGVNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNv
dXJjZS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZU1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlTWVzc2FnZXNS
ZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9V
c2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5TWVzc2FnZVJlY2VpdmVy
LmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJz
L2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHlNZXNzYWdlcy5oCiskKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVu
c2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eU1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2Nv
ZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1
ZGlvU2Vzc2lvbk1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNl
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9TZXNzaW9uTWVz
c2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1Vz
ZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb1Nlc3Npb25NZXNzYWdlc1JlcGxpZXMuaAorJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3Rl
bnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25NZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2Nv
ZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
TWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbk1lc3NhZ2VSZWNl
aXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9V
c2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbk1lc3NhZ2VzLmgKKyQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5z
ZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlTGVnYWN5Q0RNU2Vzc2lvbk1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3Bl
blNvdXJjZS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxh
eWVyTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNl
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyTWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktp
dDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJNZXNzYWdlc1JlcGxp
ZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJz
L2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyTWVzc2FnZVJlY2VpdmVyLmNw
cAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2Fs
ZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyTWVzc2FnZXMuaAorJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNl
bi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9pb3Mv
UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyTWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29k
ZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJU
Q0NvZGVjc01lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjc01lc3NhZ2Vz
LmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9h
bGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjc01lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2Nv
ZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3Bl
blNvdXJjZS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXJNZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNZXNz
YWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktp
dDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlck1lc3NhZ2VSZWNlaXZl
ci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vy
cy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXJNZXNzYWdlcy5oCiskKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2Vu
L2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2Vi
R2VvbG9jYXRpb25NYW5hZ2VyTWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVu
U291cmNlL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVj
dG9yVUlNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclVJTWVzc2Fn
ZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJz
L2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JVSU1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVu
c2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dl
Ykluc3BlY3RvckludGVycnVwdERpc3BhdGNoZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVu
c2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dl
Ykluc3BlY3RvckludGVycnVwdERpc3BhdGNoZXJNZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUv
T3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3Rv
ckludGVycnVwdERpc3BhdGNoZXJNZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09w
ZW5Tb3VyY2UvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JN
ZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3Rvck1lc3NhZ2VzLmgKKyQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5z
ZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2Vi
SW5zcGVjdG9yTWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlNZXNzYWdlUmVj
ZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8v
VXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJTWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2Rl
L09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0
b3JVSU1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdl
UmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0
Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlcy5oCiskKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlz
dGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2Rl
L09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VM
b2FkZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlck1lc3NhZ2VzLmgK
KyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4
Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYlJlc291cmNlTG9hZGVyTWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9P
cGVuU291cmNlL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5u
ZWxNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsTWVzc2FnZXMuaAorJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJp
c3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
V2ViU29ja2V0Q2hhbm5lbE1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNv
dXJjZS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW1NZXNz
YWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
S2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW1NZXNzYWdlcy5oCiskKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2Vu
L2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2Nr
ZXRTdHJlYW1NZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1dlYk1ETlNSZWdpc3Rlck1lc3Nh
Z2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJL
aXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJNRE5TUmVnaXN0ZXJNZXNzYWdlcy5oCiskKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlz
dGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93
ZWJydGMvV2ViTUROU1JlZ2lzdGVyTWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9P
cGVuU291cmNlL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJSVENN
b25pdG9yTWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1dlYlJUQ01vbml0b3JNZXNzYWdl
cy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMv
YWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay93ZWJydGMvV2ViUlRDTW9uaXRvck1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2Vu
L2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMv
V2ViUlRDUmVzb2x2ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNv
dXJjZS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvV2ViUlRDUmVzb2x2
ZXJNZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0
Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay93ZWJydGMvV2ViUlRDUmVzb2x2ZXJNZXNzYWdlc1JlcGxpZXMuaAor
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhj
aHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvd2VicnRjL1dlYlJUQ1NvY2tldE1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29k
ZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJS
VENTb2NrZXRNZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvV2ViUlRDU29ja2V0TWVzc2FnZXNSZXBsaWVz
LmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9h
bGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
b3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCisk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNo
cmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTm90aWZp
Y2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2Rl
L09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90
aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNv
dXJjZS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVj
dGlvbk1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJj
ZS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlv
bk1hbmFnZXJNZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXJNZXNz
YWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktp
dDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIu
Y3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMv
YWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29k
ZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nl
c3NDb25uZWN0aW9uTWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNl
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5TWVzc2FnZVJlY2Vp
dmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1Vz
ZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luUHJveHlNZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNv
dXJjZS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eU1lc3NhZ2Vz
UmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8v
VXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwCisk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNo
cmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTV0NsaWVudENvbm5lY3Rpb25NZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNv
dXJjZS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rp
b25NZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNz
YWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
S2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2Vz
LmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9h
bGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZXNSZXBsaWVzLmgKKyQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hy
aXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29u
dGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVu
c2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvVXNlckNvbnRlbnQv
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyTWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5T
b3VyY2UvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50
Q29udHJvbGxlck1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRGV2aWNlT3JpZW50YXRp
b25VcGRhdGVQcm92aWRlck1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVu
U291cmNlL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEZXZpY2VP
cmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyTWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5T
b3VyY2UvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRldmljZU9y
aWVudGF0aW9uVXBkYXRlUHJvdmlkZXJNZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2Rl
L09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvVGV4dENo
ZWNraW5nQ29udHJvbGxlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2Rl
L09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvVGV4dENo
ZWNraW5nQ29udHJvbGxlclByb3h5TWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3Vy
Y2UvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvVGV4dENoZWNraW5nQ29u
dHJvbGxlclByb3h5TWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNl
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhTWVzc2FnZVJlY2Vp
dmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1Vz
ZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWFNZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNv
dXJjZS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYU1lc3NhZ2Vz
UmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8v
VXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVu
c2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVu
dERpc3BhdGNoZXJNZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXJNZXNzYWdlc1JlcGxpZXMu
aAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2Fs
ZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yTWVzc2FnZVJl
Y2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIv
L1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9y
TWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIv
L1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9y
TWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3JNZXNzYWdl
UmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0
Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yTWVzc2FnZXMuaAor
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhj
aHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvck1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVu
c2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3
VXBkYXRlRGlzcGF0Y2hlck1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVu
U291cmNlL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdVcGRhdGVEaXNwYXRj
aGVyTWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktp
dDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvVmlld1VwZGF0ZURpc3BhdGNoZXJNZXNzYWdlc1JlcGxpZXMuaAor
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhj
aHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvVmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVu
c2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaXNp
dGVkTGlua1RhYmxlQ29udHJvbGxlck1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291
cmNlL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1Zpc2l0ZWRMaW5rVGFibGVDb250
cm9sbGVyTWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2VNZXNzYWdlUmVjZWl2ZXIuY3BwCisk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNo
cmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlTWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZU1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVu
c2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzc01l
c3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzTWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5T
b3VyY2UvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3NNZXNzYWdlc1JlcGxpZXMu
aAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2Fs
ZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXBNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2Nv
ZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdl
QXJlYU1hcE1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwTWVzc2FnZXNSZXBsaWVzLmgK
KyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4
Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2Nv
YS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9j
b2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1BsYXliYWNrU2Vz
c2lvbk1hbmFnZXJNZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlck1lc3NhZ2VzUmVw
bGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNl
cnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlz
dGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVXNl
ck1lZGlhQ2FwdHVyZU1hbmFnZXJNZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJj
ZS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJN
ZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIu
Y3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMv
YWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
Y29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlck1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9P
cGVuU291cmNlL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyTWVzc2FnZXNSZXBsaWVzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJLaXQyL0F1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yUHJveHlNZXNzYWdlUmVj
ZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9B
dWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvclByb3h5TWVzc2FnZXMuaAogJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0
cmF0b3JQcm94eU1lc3NhZ2VzUmVwbGllcy5oCkBAIC02Myw2ICs0NTAsNyBAQCAkKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViS2l0Mi9NZWRpYVBsYXllclByaXZhdGVSZW1vdGVNZXNzYWdlUmVjZWl2
ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9NZWRp
YVBsYXllclByaXZhdGVSZW1vdGVNZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViS2l0Mi9NZWRpYVBsYXllclByaXZhdGVSZW1vdGVNZXNzYWdlc1JlcGxp
ZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvTWVzc2Fn
ZU5hbWVzLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIv
TlBPYmplY3RNZXNzYWdlUmVjZWl2ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9OUE9iamVjdE1lc3NhZ2VSZWNlaXZlck1l
c3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL05Q
T2JqZWN0TWVzc2FnZVJlY2VpdmVyTWVzc2FnZXNSZXBsaWVzLmgKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvRGVyaXZlZFNvdXJjZXMubWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0Rlcml2
ZWRTb3VyY2VzLm1ha2UJKHJldmlzaW9uIDI2MDc2NCkKKysrIFNvdXJjZS9XZWJLaXQvRGVyaXZl
ZFNvdXJjZXMubWFrZQkod29ya2luZyBjb3B5KQpAQCAtMTEyLDEzNCArMTEyLDEzNSBAQCBlbHNl
CiBlbmRpZgogCiBNRVNTQUdFX1JFQ0VJVkVSUyA9IFwKLQlBdWRpb1Nlc3Npb25Sb3V0aW5nQXJi
aXRyYXRvclByb3h5IFwKLSAgICBBdXRoZW50aWNhdGlvbk1hbmFnZXIgXAotICAgIEF1eGlsaWFy
eVByb2Nlc3MgXAotICAgIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24gXAotICAgIERvd25s
b2FkUHJveHkgXAotICAgIERyYXdpbmdBcmVhIFwKLSAgICBEcmF3aW5nQXJlYVByb3h5IFwKLSAg
ICBFZGl0YWJsZUltYWdlQ29udHJvbGxlciBcCi0gICAgRXZlbnREaXNwYXRjaGVyIFwKLSAgICBH
UFVQcm9jZXNzIFwKLSAgICBHUFVQcm9jZXNzUHJveHkgXAotICAgIEdQVVByb2Nlc3NDb25uZWN0
aW9uIFwKLSAgICBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzIFwKLSAgICBMZWdhY3lDdXN0b21Q
cm90b2NvbE1hbmFnZXIgXAotICAgIExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5IFwK
LSAgICBMaWJXZWJSVENDb2RlY3MgXAotICAgIExpYldlYlJUQ0NvZGVjc1Byb3h5IFwKLSAgICBN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGUgXAotICAgIE5QT2JqZWN0TWVzc2FnZVJlY2VpdmVyIFwK
LSAgICBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBcCi0gICAgTmV0d29ya0NvbnRlbnRS
dWxlTGlzdE1hbmFnZXIgXAotICAgIE5ldHdvcmtNRE5TUmVnaXN0ZXJcCi0gICAgTmV0d29ya1By
b2Nlc3MgXAotICAgIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbiBcCi0gICAgTmV0d29ya1Byb2Nl
c3NQcm94eSBcCi0gICAgTmV0d29ya1JUQ01vbml0b3IgXAotICAgIE5ldHdvcmtSVENQcm92aWRl
ciBcCi0gICAgTmV0d29ya1JUQ1NvY2tldCBcCi0gICAgTmV0d29ya1Jlc291cmNlTG9hZGVyIFwK
LSAgICBOZXR3b3JrU29ja2V0Q2hhbm5lbCBcCi0gICAgTmV0d29ya1NvY2tldFN0cmVhbSBcCi0g
ICAgUGxheWJhY2tTZXNzaW9uTWFuYWdlciBcCi0gICAgUGxheWJhY2tTZXNzaW9uTWFuYWdlclBy
b3h5IFwKLSAgICBQbHVnaW5Db250cm9sbGVyUHJveHkgXAotICAgIFBsdWdpblByb2Nlc3MgXAot
ICAgIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uIFwKLSAgICBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlv
bk1hbmFnZXIgXAotICAgIFBsdWdpblByb2Nlc3NQcm94eSBcCi0gICAgUGx1Z2luUHJveHkgXAot
ICAgIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyIFwKLSAgICBSZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uUHJveHkgXAotICAgIFJlbW90ZUF1ZGlvU2Vzc2lvbiBcCi0gICAgUmVtb3RlQXVkaW9T
ZXNzaW9uUHJveHkgXAotICAgIFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFu
YWdlciBcCi0gICAgUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIgXAotICAgIFJl
bW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkgXAotICAgIFJlbW90ZUNETVByb3h5IFwKLSAg
ICBSZW1vdGVDRE1GYWN0b3J5UHJveHkgXAotICAgIFJlbW90ZUNETUluc3RhbmNlUHJveHkgXAot
ICAgIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbiBcCi0gICAgUmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uUHJveHkgXAotICAgIFJlbW90ZUxlZ2FjeUNETVByb3h5IFwKLSAgICBSZW1vdGVMZWdhY3lD
RE1GYWN0b3J5UHJveHkgXAotICAgIFJlbW90ZUxlZ2FjeUNETVNlc3Npb24gXAotICAgIFJlbW90
ZUxlZ2FjeUNETVNlc3Npb25Qcm94eSBcCi0gICAgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyIFwK
LSAgICBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSBcCi0gICAgUmVtb3RlTWVkaWFQbGF5
ZXJQcm94eSBcCi0gICAgUmVtb3RlTWVkaWFSZWNvcmRlciBcCi0gICAgUmVtb3RlTWVkaWFSZWNv
cmRlck1hbmFnZXIgXAotICAgIFJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyIFwKLSAgICBSZW1v
dGVNZWRpYVNlc3Npb25IZWxwZXIgXAotICAgIFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5
IFwKLSAgICBSZW1vdGVPYmplY3RSZWdpc3RyeSBcCi0gICAgUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZCBcCi0gICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5IFwKLSAgICBSZW1vdGVTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXIgXAotICAgIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1h
bmFnZXIgXAotICAgIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yIFwKLSAgICBSZW1vdGVXZWJJ
bnNwZWN0b3JQcm94eSBcCi0gICAgUmVtb3RlV2ViSW5zcGVjdG9yVUkgXAotICAgIFNhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllciBcCi0gICAgU2VjSXRlbVNoaW1Qcm94eSBcCi0gICAgU2VydmljZVdv
cmtlckZldGNoVGFzayBcCi0gICAgU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlciBcCi0gICAg
U3RvcmFnZUFyZWFNYXAgXAotICAgIFN0b3JhZ2VNYW5hZ2VyU2V0IFwKLSAgICBUZXh0Q2hlY2tp
bmdDb250cm9sbGVyUHJveHkgXAotICAgIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyIFwKLSAgICBV
c2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5IFwKLSAgICBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
IFwKLSAgICBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkgXAotICAgIFZpZXdHZXN0dXJlQ29u
dHJvbGxlciBcCi0gICAgVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3RvciBcCi0gICAgVmlld1Vw
ZGF0ZURpc3BhdGNoZXIgXAotICAgIFZpc2l0ZWRMaW5rU3RvcmUgXAotICAgIFZpc2l0ZWRMaW5r
VGFibGVDb250cm9sbGVyIFwKLSAgICBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eSBc
Ci0gICAgV2ViQXV0b21hdGlvblNlc3Npb24gXAotICAgIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJv
eHkgXAotICAgIFdlYkNvbm5lY3Rpb24gXAotICAgIFdlYkNvb2tpZU1hbmFnZXIgXAotICAgIFdl
YkNvb2tpZU1hbmFnZXJQcm94eSBcCi0gICAgV2ViRnVsbFNjcmVlbk1hbmFnZXIgXAotICAgIFdl
YkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkgXAotICAgIFdlYkdlb2xvY2F0aW9uTWFuYWdlciBcCi0g
ICAgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkgXAotICAgIFdlYklEQkNvbm5lY3Rpb25Ub1Nl
cnZlciBcCi0gICAgV2ViSURCU2VydmVyIFwKLSAgICBXZWJJbnNwZWN0b3IgXAotICAgIFdlYklu
c3BlY3RvckludGVycnVwdERpc3BhdGNoZXIgXAotICAgIFdlYkluc3BlY3RvclByb3h5IFwKLSAg
ICBXZWJJbnNwZWN0b3JVSSBcCi0gICAgV2ViTUROU1JlZ2lzdGVyXAotICAgIFdlYk5vdGlmaWNh
dGlvbk1hbmFnZXIgXAotICAgIFdlYlBhZ2UgXAotICAgIFdlYlBhZ2VQcm94eSBcCi0gICAgV2Vi
UGFzdGVib2FyZFByb3h5IFwKLSAgICBXZWJQYXltZW50Q29vcmRpbmF0b3IgXAotICAgIFdlYlBh
eW1lbnRDb29yZGluYXRvclByb3h5IFwKLSAgICBXZWJQcm9jZXNzIFwKLSAgICBXZWJQcm9jZXNz
Q29ubmVjdGlvbiBcCi0gICAgV2ViUHJvY2Vzc1Bvb2wgXAotICAgIFdlYlByb2Nlc3NQcm94eSBc
Ci0gICAgV2ViUlRDTW9uaXRvciBcCi0gICAgV2ViUlRDUmVzb2x2ZXIgXAotICAgIFdlYlJUQ1Nv
Y2tldCBcCi0gICAgV2ViUmVzb3VyY2VMb2FkZXIgXAotICAgIFdlYlNXQ2xpZW50Q29ubmVjdGlv
biBcCi0gICAgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24gXAotICAgIFdlYlNXU2VydmVy
Q29ubmVjdGlvbiBcCi0gICAgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uIFwKLSAgICBX
ZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyIFwKLSAgICBXZWJEZXZpY2VPcmllbnRh
dGlvblVwZGF0ZVByb3ZpZGVyUHJveHkgXAotICAgIFdlYlNvY2tldENoYW5uZWwgXAotICAgIFdl
YlNvY2tldFN0cmVhbSBcCi0gICAgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyIFwKLSAgICBXZWJV
c2VyQ29udGVudENvbnRyb2xsZXJQcm94eSBcCisJJChXZWJLaXQyKS9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBcCisJJChXZWJLaXQyKS9OZXR3b3JrUHJvY2Vz
cy9JbmRleGVkREIvV2ViSURCU2VydmVyIFwKKwkkKFdlYktpdDIpL05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyIFwKKwkkKFdlYktpdDIpL05ldHdvcmtQcm9jZXNz
L1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXJTZXQgXAorCSQoV2ViS2l0MikvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbiBcCisJJChXZWJLaXQyKS9OZXR3
b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyIFwK
KwkkKFdlYktpdDIpL05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsIFwKKwkkKFdl
YktpdDIpL05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9u
IFwKKwkkKFdlYktpdDIpL05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtl
ckZldGNoVGFzayBcCisJJChXZWJLaXQyKS9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dl
YlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiBcCisJJChXZWJLaXQyKS9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrU29ja2V0U3RyZWFtIFwKKwkkKFdlYktpdDIpL05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzIFwKKwkkKFdlYktpdDIpL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRlciBcCisJJChXZWJLaXQyKS9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya01ETlNSZWdp
c3RlciBcCisJJChXZWJLaXQyKS9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1NvY2tl
dCBcCisJJChXZWJLaXQyKS9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVy
IFwKKwkkKFdlYktpdDIpL05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDTW9uaXRvciBc
CisJJChXZWJLaXQyKS9OZXR3b3JrUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIgXAor
CSQoV2ViS2l0MikvU2hhcmVkL1BsdWdpbnMvTlBPYmplY3RNZXNzYWdlUmVjZWl2ZXIgXAorCSQo
V2ViS2l0MikvU2hhcmVkL0F1eGlsaWFyeVByb2Nlc3MgXAorCSQoV2ViS2l0MikvU2hhcmVkL0FQ
SS9Db2NvYS9SZW1vdGVPYmplY3RSZWdpc3RyeSBcCisJJChXZWJLaXQyKS9TaGFyZWQvQXBwbGVQ
YXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkgXAorCSQoV2ViS2l0MikvU2hhcmVkL0F1dGhl
bnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlciBcCisJJChXZWJLaXQyKS9TaGFyZWQvV2Vi
Q29ubmVjdGlvbiBcCisJJChXZWJLaXQyKS9VSVByb2Nlc3MvV2ViRnVsbFNjcmVlbk1hbmFnZXJQ
cm94eSBcCisJJChXZWJLaXQyKS9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVy
VHJlZURyYXdpbmdBcmVhUHJveHkgXAorCSQoV2ViS2l0MikvVUlQcm9jZXNzL0dQVS9HUFVQcm9j
ZXNzUHJveHkgXAorCSQoV2ViS2l0MikvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1
dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5IFwKKwkkKFdlYktpdDIpL1VJUHJvY2Vzcy9XZWJQ
YXN0ZWJvYXJkUHJveHkgXAorCSQoV2ViS2l0MikvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVz
ZXJDb250ZW50Q29udHJvbGxlclByb3h5IFwKKwkkKFdlYktpdDIpL1VJUHJvY2Vzcy9JbnNwZWN0
b3IvV2ViSW5zcGVjdG9yUHJveHkgXAorCSQoV2ViS2l0MikvVUlQcm9jZXNzL0luc3BlY3Rvci9S
ZW1vdGVXZWJJbnNwZWN0b3JQcm94eSBcCisJJChXZWJLaXQyKS9VSVByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5Qcm9jZXNzUHJveHkgXAorCSQoV2ViS2l0MikvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJv
eHkgXAorCSQoV2ViS2l0MikvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eSBc
CisJJChXZWJLaXQyKS9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkgXAorCSQoV2ViS2l0MikvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eSBcCisJJChXZWJLaXQyKS9VSVByb2Nlc3MvVmlzaXRlZExpbmtTdG9yZSBcCisJJChXZWJL
aXQyKS9VSVByb2Nlc3MvaW9zL1dlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94
eSBcCisJJChXZWJLaXQyKS9VSVByb2Nlc3MvaW9zL0VkaXRhYmxlSW1hZ2VDb250cm9sbGVyIFwK
KwkkKFdlYktpdDIpL1VJUHJvY2Vzcy9pb3MvU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlciBc
CisJJChXZWJLaXQyKS9VSVByb2Nlc3MvbWFjL1NlY0l0ZW1TaGltUHJveHkgXAorCSQoV2ViS2l0
MikvVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5IFwKKwkkKFdlYktpdDIpL1VJ
UHJvY2Vzcy9Db2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkgXAorCSQoV2ViS2l0Mikv
VUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eSBcCisJJChXZWJLaXQy
KS9VSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eSBcCisJJChXZWJL
aXQyKS9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5IFwKKwkkKFdlYktpdDIpL1VJUHJv
Y2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIgXAorCSQoV2ViS2l0MikvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQcm94eSBcCisJJChXZWJLaXQyKS9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0
aW9uU2Vzc2lvbiBcCisJJChXZWJLaXQyKS9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wgXAorCSQo
V2ViS2l0MikvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5IFwKKwkkKFdlYktpdDIp
L1VJUHJvY2Vzcy9NZWRpYS9BdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvclByb3h5IFwKKwkk
KFdlYktpdDIpL1dlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJDb25uZWN0aW9u
VG9TZXJ2ZXIgXAorCSQoV2ViS2l0MikvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rp
b24gXAorCSQoV2ViS2l0MikvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5n
QmFja2VuZCBcCisJJChXZWJLaXQyKS9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29k
ZWNzIFwKKwkkKFdlYktpdDIpL1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXIgXAorCSQoV2ViS2l0MikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlIFwKKwkkKFdlYktpdDIpL1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvbiBcCisJJChXZWJLaXQyKS9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVMZWdhY3lDRE1TZXNzaW9uIFwKKwkkKFdlYktpdDIpL1dlYlByb2Nlc3MvR1BVL21lZGlhL2lv
cy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIgXAorCSQoV2ViS2l0MikvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyIFwKKwkkKFdlYktpdDIpL1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eSBcCisJJChXZWJLaXQyKS9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb1Nlc3Npb24gXAorCSQoV2ViS2l0MikvV2ViUHJv
Y2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwIFwKKwkkKFdlYktpdDIpL1dlYlByb2Nlc3Mv
VXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyIFwKKwkkKFdlYktpdDIpL1dlYlBy
b2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvckludGVycnVwdERpc3BhdGNoZXIgXAorCSQoV2Vi
S2l0MikvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUkgXAorCSQoV2ViS2l0Mikv
V2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yIFwKKwkkKFdlYktpdDIpL1dlYlByb2Nl
c3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclVJIFwKKwkkKFdlYktpdDIpL1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIgXAorCSQoV2ViS2l0Mikv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5IFwKKwkkKFdlYktpdDIpL1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbiBcCisJJChXZWJLaXQyKS9XZWJQcm9jZXNz
L05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbCBcCisJJChXZWJLaXQyKS9XZWJQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uIFwKKwkkKFdlYktpdDIpL1dlYlByb2Nlc3MvTmV0
d29yay9XZWJTb2NrZXRTdHJlYW0gXAorCSQoV2ViS2l0MikvV2ViUHJvY2Vzcy9OZXR3b3JrL1dl
YlJlc291cmNlTG9hZGVyIFwKKwkkKFdlYktpdDIpL1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMv
V2ViUlRDU29ja2V0IFwKKwkkKFdlYktpdDIpL1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvV2Vi
UlRDTW9uaXRvciBcCisJJChXZWJLaXQyKS9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1dlYk1E
TlNSZWdpc3RlciBcCisJJChXZWJLaXQyKS9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1dlYlJU
Q1Jlc29sdmVyIFwKKwkkKFdlYktpdDIpL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRGV2
aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlciBcCisJJChXZWJLaXQyKS9XZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24gXAorCSQoV2ViS2l0MikvV2ViUHJv
Y2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbiBcCisJJChXZWJLaXQyKS9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MgXAorCSQoV2ViS2l0MikvV2ViUHJvY2Vzcy9jb2NvYS9QbGF5YmFja1Nl
c3Npb25NYW5hZ2VyIFwKKwkkKFdlYktpdDIpL1dlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2Fw
dHVyZU1hbmFnZXIgXAorCSQoV2ViS2l0MikvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyIFwKKwkkKFdlYktpdDIpL1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9j
YXRpb25NYW5hZ2VyIFwKKwkkKFdlYktpdDIpL1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRv
bWF0aW9uU2Vzc2lvblByb3h5IFwKKwkkKFdlYktpdDIpL1dlYlByb2Nlc3MvRnVsbFNjcmVlbi9X
ZWJGdWxsU2NyZWVuTWFuYWdlciBcCisJJChXZWJLaXQyKS9XZWJQcm9jZXNzL0FwcGxlUGF5L1dl
YlBheW1lbnRDb29yZGluYXRvciBcCisJJChXZWJLaXQyKS9XZWJQcm9jZXNzL05vdGlmaWNhdGlv
bnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlciBcCisJJChXZWJLaXQyKS9XZWJQcm9jZXNzL1dlYlBh
Z2UvRXZlbnREaXNwYXRjaGVyIFwKKwkkKFdlYktpdDIpL1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1v
dGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3IgXAorCSQoV2ViS2l0MikvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IgXAorCSQoV2ViS2l0
MikvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhIFwKKwkkKFdlYktpdDIpL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlIFwKKwkkKFdlYktpdDIpL1dlYlByb2Nlc3MvV2ViUGFnZS9WaXNp
dGVkTGlua1RhYmxlQ29udHJvbGxlciBcCisJJChXZWJLaXQyKS9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Q29jb2EvVGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5IFwKKwkkKFdlYktpdDIpL1dlYlByb2Nl
c3MvV2ViUGFnZS9WaWV3VXBkYXRlRGlzcGF0Y2hlciBcCisJJChXZWJLaXQyKS9QbHVnaW5Qcm9j
ZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uIFwKKwkkKFdlYktpdDIpL1BsdWdpblByb2Nlc3MvUGx1
Z2luQ29udHJvbGxlclByb3h5IFwKKwkkKFdlYktpdDIpL1BsdWdpblByb2Nlc3MvUGx1Z2luUHJv
Y2VzcyBcCisJJChXZWJLaXQyKS9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mg
XAorCSQoV2ViS2l0MikvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHkgXAorCSQoV2ViS2l0MikvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJv
eHkgXAorCSQoV2ViS2l0MikvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyTWFuYWdlciBcCisJJChXZWJLaXQyKS9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVB
dWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXIgXAorCSQoV2ViS2l0MikvR1BVUHJv
Y2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXIgXAorCSQoV2ViS2l0MikvR1BV
UHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIFwKKwkkKFdlYktp
dDIpL0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIgXAorCSQoV2ViS2l0Mikv
R1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIgXAor
CSQoV2ViS2l0MikvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzIFwKKwkkKFdlYktpdDIpL0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5IFwKKwkkKFdlYktpdDIpL0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9TZXNzaW9uUHJveHlNYW5hZ2VyIFwKKwkkKFdlYktpdDIp
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5IFwKKwkkKFdlYktp
dDIpL0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9TZXNzaW9uUHJveHkgXAorCSQoV2ViS2l0
MikvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eSBcCisJJChX
ZWJLaXQyKS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5IFwKKwkkKFdlYktpdDIpL0dQ
VVByb2Nlc3MvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5IFwKKwkkKFdl
YktpdDIpL0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eSBcCisJJChXZWJL
aXQyKS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUZhY3RvcnlQcm94eSBcCisJJChXZWJLaXQy
KS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyIFwKKwkkKFdlYktp
dDIpL0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eSBcCisJJChXZWJLaXQy
KS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5IFwKKwkkKFdlYktpdDIpL0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkgXAorCSQoV2ViS2l0
MikvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlciBcCiAjCiAK
IFNDUklQVFMgPSBcCkBAIC0yNTUsMTUgKzI1NiwxNSBAQCBIRUFERVJfRkxBR1MgPSAkKHNoZWxs
IGVjaG8gJChCVUlMVF9QUk9ECiAKIC5QSE9OWSA6IGFsbAogCi1hbGwgOiBcCi0gICAgJChNRVNT
QUdFX1JFQ0VJVkVSUzolPSVNZXNzYWdlUmVjZWl2ZXIuY3BwKSBcCi0gICAgJChNRVNTQUdFX1JF
Q0VJVkVSUzolPSVNZXNzYWdlcy5oKSBcCi0gICAgJChNRVNTQUdFX1JFQ0VJVkVSUzolPSVNZXNz
YWdlc1JlcGxpZXMuaCkgXAorYWxsIDogTWVzc2FnZU5hbWVzLmggTWVzc2FnZU5hbWVzLmNwcCBc
CisgICAgJCgkKG5vdGRpciBNRVNTQUdFX1JFQ0VJVkVSUyk6JT0lTWVzc2FnZVJlY2VpdmVyLmNw
cCkgXAorICAgICQoJChub3RkaXIgTUVTU0FHRV9SRUNFSVZFUlMpOiU9JU1lc3NhZ2VzLmgpIFwK
KyAgICAkKCQobm90ZGlyIE1FU1NBR0VfUkVDRUlWRVJTKTolPSVNZXNzYWdlc1JlcGxpZXMuaCkg
XAogIwogCi0lTWVzc2FnZVJlY2VpdmVyLmNwcCAlTWVzc2FnZXMuaCAlTWVzc2FnZXNSZXBsaWVz
LmggOiAlLm1lc3NhZ2VzLmluICQoU0NSSVBUUykKLQlAZWNobyBHZW5lcmF0aW5nIG1lc3NhZ2Ug
cmVjZWl2ZXIgZm9yICQqLi4uCi0JQHB5dGhvbiAkKFdlYktpdDIpL1NjcmlwdHMvZ2VuZXJhdGUt
bWVzc2FnZS1yZWNlaXZlci5weSAkPCAtLWltcGxlbWVudGF0aW9uICQqTWVzc2FnZVJlY2VpdmVy
LmNwcCAtLWhlYWRlciAkKk1lc3NhZ2VzLmggLS1yZXBseS1oZWFkZXIgJCpNZXNzYWdlc1JlcGxp
ZXMuaAorJCgkKG5vdGRpciBNRVNTQUdFX1JFQ0VJVkVSUyk6JT0lTWVzc2FnZVJlY2VpdmVyLmNw
cCkgJCgkKG5vdGRpciBNRVNTQUdFX1JFQ0VJVkVSUyk6JT0lTWVzc2FnZXMuaCkgJCgkKG5vdGRp
ciBNRVNTQUdFX1JFQ0VJVkVSUyk6JT0lTWVzc2FnZXNSZXBsaWVzLmgpOiBNZXNzYWdlTmFtZXMu
Y3BwCitNZXNzYWdlTmFtZXMuY3BwOiAkKGFkZHN1ZmZpeCAubWVzc2FnZXMuaW4sJChNRVNTQUdF
X1JFQ0VJVkVSUykpICQoU0NSSVBUUykKKwlAcHl0aG9uICQoV2ViS2l0MikvU2NyaXB0cy9nZW5l
cmF0ZS1tZXNzYWdlLXJlY2VpdmVyLnB5ICQoTUVTU0FHRV9SRUNFSVZFUlMpCiAKIFRFWFRfUFJF
UFJPQ0VTU09SX0ZMQUdTPS1FIC1QIC13CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU291cmNlc0Nv
Y29hLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQJKHJl
dmlzaW9uIDI2MDc2NCkKKysrIFNvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtNjU3LDYgKzY1Nyw3IEBAIEdQVVByb2Nlc3NQcm94eU1lc3NhZ2VSZWNlaXZl
ci5jcHAKIEdQVVByb2Nlc3NNZXNzYWdlUmVjZWl2ZXIuY3BwCiBMaWJXZWJSVENDb2RlY3NQcm94
eU1lc3NhZ2VSZWNlaXZlci5jcHAKIExpYldlYlJUQ0NvZGVjc01lc3NhZ2VSZWNlaXZlci5jcHAK
K01lc3NhZ2VOYW1lcy5jcHAKIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyTWVzc2FnZVJl
Y2VpdmVyLmNwcAogUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5TWVzc2FnZVJlY2VpdmVyLmNw
cAogUmVtb3RlQXVkaW9TZXNzaW9uTWVzc2FnZVJlY2VpdmVyLmNwcApJbmRleDogU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNw
cAkocmV2aXNpb24gMjYwNzY0KQorKysgU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTQsOCArMTE0LDggQEAg
cHVibGljOgogCiBwcml2YXRlOgogICAgIExvZ2dlciYgbG9nZ2VyKCkgZmluYWwgeyByZXR1cm4g
bV9wcm9jZXNzLmxvZ2dlcigpOyB9Ci0gICAgdm9pZCBhZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpT
dHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpNZXNzYWdlUmVjZWl2ZXIm
IHJlY2VpdmVyKSBmaW5hbCB7IH0KLSAgICB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihJUEM6
OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lKSBmaW5hbCB7IH0KKyAgICB2b2lk
IGFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlJlY2VpdmVyTmFtZSwgSVBDOjpNZXNzYWdlUmVjZWl2
ZXImKSBmaW5hbCB7IH0KKyAgICB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlJlY2Vp
dmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1lKSBmaW5hbCB7IH0KICAgICBJUEM6OkNvbm5lY3Rp
b24mIGNvbm5lY3Rpb24oKSBmaW5hbCB7IHJldHVybiBtX3Byb2Nlc3MuY29ubmVjdGlvbigpOyB9
CiAgICAgYm9vbCB3aWxsU3RhcnRDYXB0dXJlKENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGUgdHlw
ZSkgY29uc3QgZmluYWwKICAgICB7CkBAIC0xODUsOSArMTg1LDkgQEAgTG9nZ2VyJiBHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpsb2dnZQogICAgIHJldHVybiAqbV9sb2dnZXI7CiB9CiAKLXZv
aWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJl
Y2VpdmVyTmFtZSwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUpCit2b2lkIEdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6TWVzc2FnZU5hbWUgbWVzc2FnZU5hbWUpCiB7Ci0gICAg
V1RGTG9nQWx3YXlzKCJSZWNlaXZlZCBhbiBpbnZhbGlkIG1lc3NhZ2UgXCIlcy4lc1wiIGZyb20g
dGhlIHdlYiBwcm9jZXNzLlxuIiwgbWVzc2FnZVJlY2VpdmVyTmFtZS50b1N0cmluZygpLmRhdGEo
KSwgbWVzc2FnZU5hbWUudG9TdHJpbmcoKS5kYXRhKCkpOworICAgIFdURkxvZ0Fsd2F5cygiUmVj
ZWl2ZWQgYW4gaW52YWxpZCBtZXNzYWdlIFwiJXNcIiBmcm9tIHRoZSB3ZWIgcHJvY2Vzcy5cbiIs
IGRlc2NyaXB0aW9uKG1lc3NhZ2VOYW1lKSk7CiAgICAgQ1JBU0goKTsKIH0KIApJbmRleDogU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5oCShyZXZpc2lvbiAyNjA3NjQpCisrKyBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDQsNyArMTQ0LDcgQEAg
cHJpdmF0ZToKIAogICAgIC8vIElQQzo6Q29ubmVjdGlvbjo6Q2xpZW50CiAgICAgdm9pZCBkaWRD
bG9zZShJUEM6OkNvbm5lY3Rpb24mKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVJbnZhbGlk
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVj
ZWl2ZXJOYW1lLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZSkgZmluYWw7CisgICAg
dm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNz
YWdlTmFtZSkgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpF
bmNvZGVyPiYpIGZpbmFsOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAkocmV2
aXNpb24gMjYwNzY0KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2NCw3ICsyNjQsNyBA
QCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSCiAgICAgICAgIHJldHVy
biBwYXltZW50Q29vcmRpbmF0b3IoKS5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNv
ZGVyKTsKICNlbmRpZgogCi0gICAgV1RGTG9nQWx3YXlzKCJVbmhhbmRsZWQgbmV0d29yayBwcm9j
ZXNzIG1lc3NhZ2UgJyVzOiVzJyIsIGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpLnRvU3Ry
aW5nKCkuZGF0YSgpLCBkZWNvZGVyLm1lc3NhZ2VOYW1lKCkudG9TdHJpbmcoKS5kYXRhKCkpOwor
ICAgIFdURkxvZ0Fsd2F5cygiVW5oYW5kbGVkIG5ldHdvcmsgcHJvY2VzcyBtZXNzYWdlICclcyci
LCBkZXNjcmlwdGlvbihkZWNvZGVyLm1lc3NhZ2VOYW1lKCkpKTsKICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKIH0KIApAQCAtMzA3LDcgKzMwNyw3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OmRpZFIKICAgICAgICAgcmV0dXJuIHBheW1lbnRDb29yZGluYXRvcigpLmRp
ZFJlY2VpdmVTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseSk7CiAjZW5kaWYK
IAotICAgIFdURkxvZ0Fsd2F5cygiVW5oYW5kbGVkIG5ldHdvcmsgcHJvY2VzcyBtZXNzYWdlICcl
czolcyciLCBkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKS50b1N0cmluZygpLmRhdGEoKSwg
ZGVjb2Rlci5tZXNzYWdlTmFtZSgpLnRvU3RyaW5nKCkuZGF0YSgpKTsKKyAgICBXVEZMb2dBbHdh
eXMoIlVuaGFuZGxlZCBuZXR3b3JrIHByb2Nlc3MgbWVzc2FnZSAnJXMnIiwgZGVzY3JpcHRpb24o
ZGVjb2Rlci5tZXNzYWdlTmFtZSgpKSk7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAK
QEAgLTM1Niw5ICszNTYsOSBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpk
aWRDCiAjZW5kaWYKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlk
UmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6U3RyaW5nUmVmZXJl
bmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1l
KQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZUludmFsaWRN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZU5hbWUgbWVzc2FnZU5hbWUpCiB7
Ci0gICAgUkVMRUFTRV9MT0dfRkFVTFQoSVBDLCAiUmVjZWl2ZWQgYW4gaW52YWxpZCBtZXNzYWdl
ICclIiBQVUJMSUNfTE9HX1NUUklORyAiOjolIiBQVUJMSUNfTE9HX1NUUklORyAiJyBmcm9tIFdl
YkNvbnRlbnQgcHJvY2VzcyAlIiBQUkl1NjQgIiwgcmVxdWVzdGluZyBmb3IgaXQgdG8gYmUgdGVy
bWluYXRlZC4iLCBtZXNzYWdlUmVjZWl2ZXJOYW1lLnRvU3RyaW5nKCkuZGF0YSgpLCBtZXNzYWdl
TmFtZS50b1N0cmluZygpLmRhdGEoKSwgbV93ZWJQcm9jZXNzSWRlbnRpZmllci50b1VJbnQ2NCgp
KTsKKyAgICBSRUxFQVNFX0xPR19GQVVMVChJUEMsICJSZWNlaXZlZCBhbiBpbnZhbGlkIG1lc3Nh
Z2UgJyUiIFBVQkxJQ19MT0dfU1RSSU5HICInIGZyb20gV2ViQ29udGVudCBwcm9jZXNzICUiIFBS
SXU2NCAiLCByZXF1ZXN0aW5nIGZvciBpdCB0byBiZSB0ZXJtaW5hdGVkLiIsIGRlc2NyaXB0aW9u
KG1lc3NhZ2VOYW1lKSwgbV93ZWJQcm9jZXNzSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKICAgICBt
X25ldHdvcmtQcm9jZXNzLT5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2Vz
OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpUZXJtaW5hdGVXZWJQcm9jZXNzKG1fd2ViUHJvY2Vzc0lk
ZW50aWZpZXIpLCAwKTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAkocmV2aXNp
b24gMjYwNzY0KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODYsNyArMTg2LDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6
RGVjb2RlciYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+
Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mKSBvdmVycmlk
ZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJ
UEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6OlN0cmluZ1JlZmVy
ZW5jZSBtZXNzYWdlTmFtZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlTmFtZSkgb3ZlcnJpZGU7CiAKICAg
ICAvLyBNZXNzYWdlIGhhbmRsZXJzLgogICAgIHZvaWQgZGlkUmVjZWl2ZU5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsK
QEAgLTMyNiw4ICszMjYsNiBAQCBwcml2YXRlOgogICAgIGNvbnN0IFN0cmluZyYgcGF5bWVudENv
b3JkaW5hdG9yU291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKGNvbnN0IFdlYlBheW1l
bnRDb29yZGluYXRvclByb3h5JikgZmluYWw7CiAgICAgY29uc3QgU3RyaW5nJiBwYXltZW50Q29v
cmRpbmF0b3JTb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIoY29uc3QgV2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHkmKSBmaW5hbDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGF5bWVu
dEF1dGhvcml6YXRpb25QcmVzZW50ZXI+IHBheW1lbnRDb29yZGluYXRvckF1dGhvcml6YXRpb25Q
cmVzZW50ZXIoV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmLCBQS1BheW1lbnRSZXF1ZXN0ICop
IGZpbmFsOwotICAgIHZvaWQgcGF5bWVudENvb3JkaW5hdG9yQWRkTWVzc2FnZVJlY2VpdmVyKFdl
YlBheW1lbnRDb29yZGluYXRvclByb3h5JiwgY29uc3QgSVBDOjpTdHJpbmdSZWZlcmVuY2UmLCBJ
UEM6Ok1lc3NhZ2VSZWNlaXZlciYpIGZpbmFsOwotICAgIHZvaWQgcGF5bWVudENvb3JkaW5hdG9y
UmVtb3ZlTWVzc2FnZVJlY2VpdmVyKFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JiwgY29uc3Qg
SVBDOjpTdHJpbmdSZWZlcmVuY2UmKSBmaW5hbDsKICNlbmRpZgogCiAgICAgUmVmPElQQzo6Q29u
bmVjdGlvbj4gbV9jb25uZWN0aW9uOwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDI2MDc5MSkKKysrIFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yMTcsNyArMjE3LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2Uo
SQogewogICAgIEFTU0VSVChwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpID09ICZjb25uZWN0aW9u
KTsKICAgICBpZiAocGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKSAhPSAmY29ubmVjdGlvbikgewot
ICAgICAgICBXVEZMb2dBbHdheXMoIklnbm9yZWQgbWVzc2FnZSAnJXM6JXMnIGJlY2F1c2UgaXQg
ZGlkIG5vdCBjb21lIGZyb20gdGhlIFVJUHJvY2VzcyAoZGVzdGluYXRpb246ICUiIFBSSXU2NCAi
KSIsIGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpLnRvU3RyaW5nKCkuZGF0YSgpLCBkZWNv
ZGVyLm1lc3NhZ2VOYW1lKCkudG9TdHJpbmcoKS5kYXRhKCksIGRlY29kZXIuZGVzdGluYXRpb25J
RCgpKTsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJJZ25vcmVkIG1lc3NhZ2UgJyVzJyBiZWNhdXNl
IGl0IGRpZCBub3QgY29tZSBmcm9tIHRoZSBVSVByb2Nlc3MgKGRlc3RpbmF0aW9uOiAlIiBQUkl1
NjQgIikiLCBkZXNjcmlwdGlvbihkZWNvZGVyLm1lc3NhZ2VOYW1lKCkpLCBkZWNvZGVyLmRlc3Rp
bmF0aW9uSUQoKSk7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1
cm47CiAgICAgfQpAQCAtMjQ0LDcgKzI0NCw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRpZFJl
Y2VpdmVTeW5jTWVzc2EKIHsKICAgICBBU1NFUlQocGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKSA9
PSAmY29ubmVjdGlvbik7CiAgICAgaWYgKHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkgIT0gJmNv
bm5lY3Rpb24pIHsKLSAgICAgICAgV1RGTG9nQWx3YXlzKCJJZ25vcmVkIG1lc3NhZ2UgJyVzOiVz
JyBiZWNhdXNlIGl0IGRpZCBub3QgY29tZSBmcm9tIHRoZSBVSVByb2Nlc3MgKGRlc3RpbmF0aW9u
OiAlIiBQUkl1NjQgIikiLCBkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKS50b1N0cmluZygp
LmRhdGEoKSwgZGVjb2Rlci5tZXNzYWdlTmFtZSgpLnRvU3RyaW5nKCkuZGF0YSgpLCBkZWNvZGVy
LmRlc3RpbmF0aW9uSUQoKSk7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiSWdub3JlZCBtZXNzYWdl
ICclcycgYmVjYXVzZSBpdCBkaWQgbm90IGNvbWUgZnJvbSB0aGUgVUlQcm9jZXNzIChkZXN0aW5h
dGlvbjogJSIgUFJJdTY0ICIpIiwgZGVzY3JpcHRpb24oZGVjb2Rlci5tZXNzYWdlTmFtZSgpKSwg
ZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpOwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvaW9zL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzSU9TLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzSU9TLm1tCShyZXZpc2lvbiAyNjA3NjQpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2lvcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc0lPUy5tbQkod29ya2luZyBj
b3B5KQpAQCAtODUsMTQgKzg1LDYgQEAgc3RkOjp1bmlxdWVfcHRyPFBheW1lbnRBdXRob3JpemF0
aW9uUHJlcwogICAgIHJldHVybiBtYWtlVW5pcXVlPFBheW1lbnRBdXRob3JpemF0aW9uQ29udHJv
bGxlcj4oY29vcmRpbmF0b3IsIHJlcXVlc3QpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpwYXltZW50Q29vcmRpbmF0b3JBZGRNZXNzYWdlUmVjZWl2ZXIoV2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHkmLCBjb25zdCBJUEM6OlN0cmluZ1JlZmVyZW5jZSYsIElQQzo6
TWVzc2FnZVJlY2VpdmVyJikKLXsKLX0KLQotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6cGF5bWVudENvb3JkaW5hdG9yUmVtb3ZlTWVzc2FnZVJlY2VpdmVyKFdlYlBheW1lbnRD
b29yZGluYXRvclByb3h5JiwgY29uc3QgSVBDOjpTdHJpbmdSZWZlcmVuY2UmKQotewotfQotCiAj
ZW5kaWYgLy8gRU5BQkxFKEFQUExFX1BBWV9SRU1PVEVfVUkpCiAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApJbmRleDogU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAJKHJl
dmlzaW9uIDI2MDc2NCkKKysrIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NCwyMSArNTQsMTcgQEAgY29uc3Qgc2l6ZV90IG1heFBl
bmRpbmdJbmNvbWluZ01lc3NhZ2VzSwogc3RkOjphdG9taWM8dW5zaWduZWQ+IFVuYm91bmRlZFN5
bmNocm9ub3VzSVBDU2NvcGU6OnVuYm91bmRlZFN5bmNocm9ub3VzSVBDQ291bnQgPSAwOwogCiBz
dHJ1Y3QgQ29ubmVjdGlvbjo6V2FpdEZvck1lc3NhZ2VTdGF0ZSB7Ci0gICAgV2FpdEZvck1lc3Nh
Z2VTdGF0ZShTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgU3RyaW5nUmVmZXJl
bmNlIG1lc3NhZ2VOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBPcHRpb25TZXQ8V2FpdEZv
ck9wdGlvbj4gd2FpdEZvck9wdGlvbnMpCi0gICAgICAgIDogbWVzc2FnZVJlY2VpdmVyTmFtZSht
ZXNzYWdlUmVjZWl2ZXJOYW1lKQotICAgICAgICAsIG1lc3NhZ2VOYW1lKG1lc3NhZ2VOYW1lKQor
ICAgIFdhaXRGb3JNZXNzYWdlU3RhdGUoTWVzc2FnZU5hbWUgbWVzc2FnZU5hbWUsIHVpbnQ2NF90
IGRlc3RpbmF0aW9uSUQsIE9wdGlvblNldDxXYWl0Rm9yT3B0aW9uPiB3YWl0Rm9yT3B0aW9ucykK
KyAgICAgICAgOiBtZXNzYWdlTmFtZShtZXNzYWdlTmFtZSkKICAgICAgICAgLCBkZXN0aW5hdGlv
bklEKGRlc3RpbmF0aW9uSUQpCiAgICAgICAgICwgd2FpdEZvck9wdGlvbnMod2FpdEZvck9wdGlv
bnMpCiAgICAgewogICAgIH0KIAotICAgIFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJO
YW1lOwotICAgIFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZTsKKyAgICBNZXNzYWdlTmFtZSBt
ZXNzYWdlTmFtZTsKICAgICB1aW50NjRfdCBkZXN0aW5hdGlvbklEOwotCiAgICAgT3B0aW9uU2V0
PFdhaXRGb3JPcHRpb24+IHdhaXRGb3JPcHRpb25zOwogICAgIGJvb2wgbWVzc2FnZVdhaXRpbmdJ
bnRlcnJ1cHRlZCA9IGZhbHNlOwotCiAgICAgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IGRlY29k
ZXI7CiB9OwogCkBAIC0zMTUsMjMgKzMxMSwyMyBAQCB2b2lkIENvbm5lY3Rpb246OnNldFNob3Vs
ZEV4aXRPblN5bmNNZXNzCiAgICAgbV9zaG91bGRFeGl0T25TeW5jTWVzc2FnZVNlbmRGYWlsdXJl
ID0gc2hvdWxkRXhpdE9uU3luY01lc3NhZ2VTZW5kRmFpbHVyZTsKIH0KIAotdm9pZCBDb25uZWN0
aW9uOjphZGRXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIoU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VS
ZWNlaXZlck5hbWUsIFdvcmtRdWV1ZSYgd29ya1F1ZXVlLCBXb3JrUXVldWVNZXNzYWdlUmVjZWl2
ZXIqIHdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcikKK3ZvaWQgQ29ubmVjdGlvbjo6YWRkV29ya1F1
ZXVlTWVzc2FnZVJlY2VpdmVyKFJlY2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBXb3Jr
UXVldWUmIHdvcmtRdWV1ZSwgV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKiB3b3JrUXVldWVNZXNz
YWdlUmVjZWl2ZXIpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAgIGF1
dG8gbG9ja2VyID0gaG9sZExvY2sobV93b3JrUXVldWVNZXNzYWdlUmVjZWl2ZXJzTXV0ZXgpOwot
ICAgIEFTU0VSVCghbV93b3JrUXVldWVNZXNzYWdlUmVjZWl2ZXJzLmNvbnRhaW5zKG1lc3NhZ2VS
ZWNlaXZlck5hbWUpKTsKKyAgICBBU1NFUlQoIW1fd29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVycy5j
b250YWlucyhzdGF0aWNfY2FzdDx1aW50OF90PihtZXNzYWdlUmVjZWl2ZXJOYW1lKSkpOwogCi0g
ICAgbV93b3JrUXVldWVNZXNzYWdlUmVjZWl2ZXJzLmFkZChtZXNzYWdlUmVjZWl2ZXJOYW1lLCBz
dGQ6Om1ha2VfcGFpcigmd29ya1F1ZXVlLCB3b3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIpKTsKKyAg
ICBtX3dvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcnMuYWRkKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KG1l
c3NhZ2VSZWNlaXZlck5hbWUpLCBzdGQ6Om1ha2VfcGFpcigmd29ya1F1ZXVlLCB3b3JrUXVldWVN
ZXNzYWdlUmVjZWl2ZXIpKTsKIH0KIAotdm9pZCBDb25uZWN0aW9uOjpyZW1vdmVXb3JrUXVldWVN
ZXNzYWdlUmVjZWl2ZXIoU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUpCit2b2lk
IENvbm5lY3Rpb246OnJlbW92ZVdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcihSZWNlaXZlck5hbWUg
bWVzc2FnZVJlY2VpdmVyTmFtZSkKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwog
CiAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3dvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcnNN
dXRleCk7Ci0gICAgQVNTRVJUKG1fd29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVycy5jb250YWlucyht
ZXNzYWdlUmVjZWl2ZXJOYW1lKSk7Ci0gICAgbV93b3JrUXVldWVNZXNzYWdlUmVjZWl2ZXJzLnJl
bW92ZShtZXNzYWdlUmVjZWl2ZXJOYW1lKTsKKyAgICBBU1NFUlQobV93b3JrUXVldWVNZXNzYWdl
UmVjZWl2ZXJzLmNvbnRhaW5zKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KG1lc3NhZ2VSZWNlaXZlck5h
bWUpKSk7CisgICAgbV93b3JrUXVldWVNZXNzYWdlUmVjZWl2ZXJzLnJlbW92ZShzdGF0aWNfY2Fz
dDx1aW50OF90PihtZXNzYWdlUmVjZWl2ZXJOYW1lKSk7CiB9CiAKIHZvaWQgQ29ubmVjdGlvbjo6
ZGlzcGF0Y2hXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXJNZXNzYWdlKFdvcmtRdWV1ZU1lc3NhZ2VS
ZWNlaXZlciYgd29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyLCBEZWNvZGVyJiBkZWNvZGVyKQpAQCAt
MzQ5LDcgKzM0NSw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6ZGlzcGF0Y2hXb3JrUXVldWVNZXNzYWcK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gcmVwbHlFbmNvZGVyID0gbWFrZVVu
aXF1ZTxFbmNvZGVyPigiSVBDIiwgIlN5bmNNZXNzYWdlUmVwbHkiLCBzeW5jUmVxdWVzdElEKTsK
KyAgICBhdXRvIHJlcGx5RW5jb2RlciA9IG1ha2VVbmlxdWU8RW5jb2Rlcj4oTWVzc2FnZU5hbWU6
OlN5bmNNZXNzYWdlUmVwbHksIHN5bmNSZXF1ZXN0SUQpOwogCiAgICAgLy8gSGFuZCBvZmYgYm90
aCB0aGUgZGVjb2RlciBhbmQgZW5jb2RlciB0byB0aGUgd29yayBxdWV1ZSBtZXNzYWdlIHJlY2Vp
dmVyLgogICAgIHdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlci5kaWRSZWNlaXZlU3luY01lc3NhZ2Uo
KnRoaXMsIGRlY29kZXIsIHJlcGx5RW5jb2Rlcik7CkBAIC0zNjEsMjQgKzM1NywyNCBAQCB2b2lk
IENvbm5lY3Rpb246OmRpc3BhdGNoV29ya1F1ZXVlTWVzc2FnCiAgICAgICAgIHNlbmRTeW5jUmVw
bHkoV1RGTW92ZShyZXBseUVuY29kZXIpKTsKIH0KIAotdm9pZCBDb25uZWN0aW9uOjphZGRUaHJl
YWRNZXNzYWdlUmVjZWl2ZXIoU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIFRo
cmVhZE1lc3NhZ2VSZWNlaXZlciogdGhyZWFkTWVzc2FnZVJlY2VpdmVyKQordm9pZCBDb25uZWN0
aW9uOjphZGRUaHJlYWRNZXNzYWdlUmVjZWl2ZXIoUmVjZWl2ZXJOYW1lIG1lc3NhZ2VSZWNlaXZl
ck5hbWUsIFRocmVhZE1lc3NhZ2VSZWNlaXZlciogdGhyZWFkTWVzc2FnZVJlY2VpdmVyKQogewog
ICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKICAgICBhdXRvIGxvY2tlciA9IGhvbGRM
b2NrKG1fdGhyZWFkTWVzc2FnZVJlY2VpdmVyc0xvY2spOwotICAgIEFTU0VSVCghbV90aHJlYWRN
ZXNzYWdlUmVjZWl2ZXJzLmNvbnRhaW5zKG1lc3NhZ2VSZWNlaXZlck5hbWUpKTsKKyAgICBBU1NF
UlQoIW1fdGhyZWFkTWVzc2FnZVJlY2VpdmVycy5jb250YWlucyhzdGF0aWNfY2FzdDx1aW50OF90
PihtZXNzYWdlUmVjZWl2ZXJOYW1lKSkpOwogCi0gICAgbV90aHJlYWRNZXNzYWdlUmVjZWl2ZXJz
LmFkZChtZXNzYWdlUmVjZWl2ZXJOYW1lLCB0aHJlYWRNZXNzYWdlUmVjZWl2ZXIpOworICAgIG1f
dGhyZWFkTWVzc2FnZVJlY2VpdmVycy5hZGQoc3RhdGljX2Nhc3Q8dWludDhfdD4obWVzc2FnZVJl
Y2VpdmVyTmFtZSksIHRocmVhZE1lc3NhZ2VSZWNlaXZlcik7CiB9CiAKLXZvaWQgQ29ubmVjdGlv
bjo6cmVtb3ZlVGhyZWFkTWVzc2FnZVJlY2VpdmVyKFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVj
ZWl2ZXJOYW1lKQordm9pZCBDb25uZWN0aW9uOjpyZW1vdmVUaHJlYWRNZXNzYWdlUmVjZWl2ZXIo
UmVjZWl2ZXJOYW1lIG1lc3NhZ2VSZWNlaXZlck5hbWUpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6
OmlzTWFpbigpKTsKIAogICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV90aHJlYWRNZXNzYWdl
UmVjZWl2ZXJzTG9jayk7Ci0gICAgQVNTRVJUKG1fdGhyZWFkTWVzc2FnZVJlY2VpdmVycy5jb250
YWlucyhtZXNzYWdlUmVjZWl2ZXJOYW1lKSk7CisgICAgQVNTRVJUKG1fdGhyZWFkTWVzc2FnZVJl
Y2VpdmVycy5jb250YWlucyhzdGF0aWNfY2FzdDx1aW50OF90PihtZXNzYWdlUmVjZWl2ZXJOYW1l
KSkpOwogCi0gICAgbV90aHJlYWRNZXNzYWdlUmVjZWl2ZXJzLnJlbW92ZShtZXNzYWdlUmVjZWl2
ZXJOYW1lKTsKKyAgICBtX3RocmVhZE1lc3NhZ2VSZWNlaXZlcnMucmVtb3ZlKHN0YXRpY19jYXN0
PHVpbnQ4X3Q+KG1lc3NhZ2VSZWNlaXZlck5hbWUpKTsKIH0KIAogdm9pZCBDb25uZWN0aW9uOjpk
aXNwYXRjaFRocmVhZE1lc3NhZ2VSZWNlaXZlck1lc3NhZ2UoVGhyZWFkTWVzc2FnZVJlY2VpdmVy
JiB0aHJlYWRNZXNzYWdlUmVjZWl2ZXIsIERlY29kZXImIGRlY29kZXIpCkBAIC0zOTUsNyArMzkx
LDcgQEAgdm9pZCBDb25uZWN0aW9uOjpkaXNwYXRjaFRocmVhZE1lc3NhZ2VSZQogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgYXV0byByZXBseUVuY29kZXIgPSBtYWtlVW5pcXVlPEVuY29k
ZXI+KCJJUEMiLCAiU3luY01lc3NhZ2VSZXBseSIsIHN5bmNSZXF1ZXN0SUQpOworICAgIGF1dG8g
cmVwbHlFbmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNvZGVyPihNZXNzYWdlTmFtZTo6U3luY01lc3Nh
Z2VSZXBseSwgc3luY1JlcXVlc3RJRCk7CiAgICAgdGhyZWFkTWVzc2FnZVJlY2VpdmVyLmRpZFJl
Y2VpdmVTeW5jTWVzc2FnZSgqdGhpcywgZGVjb2RlciwgcmVwbHlFbmNvZGVyKTsKIAogICAgIC8v
IEZJWE1FOiBJZiB0aGUgbWVzc2FnZSB3YXMgaW52YWxpZCwgd2Ugc2hvdWxkIHNlbmQgYmFjayBh
IFN5bmNNZXNzYWdlRXJyb3IuCkBAIC00MzYsOSArNDMyLDkgQEAgdm9pZCBDb25uZWN0aW9uOjpt
YXJrQ3VycmVudGx5RGlzcGF0Y2hlZAogICAgIG1fZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlID0g
dHJ1ZTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEVuY29kZXI+IENvbm5lY3Rpb246OmNyZWF0ZVN5
bmNNZXNzYWdlRW5jb2RlcihTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgU3Ry
aW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCB1aW50NjRf
dCYgc3luY1JlcXVlc3RJRCkKK3N0ZDo6dW5pcXVlX3B0cjxFbmNvZGVyPiBDb25uZWN0aW9uOjpj
cmVhdGVTeW5jTWVzc2FnZUVuY29kZXIoTWVzc2FnZU5hbWUgbWVzc2FnZU5hbWUsIHVpbnQ2NF90
IGRlc3RpbmF0aW9uSUQsIHVpbnQ2NF90JiBzeW5jUmVxdWVzdElEKQogewotICAgIGF1dG8gZW5j
b2RlciA9IG1ha2VVbmlxdWU8RW5jb2Rlcj4obWVzc2FnZVJlY2VpdmVyTmFtZSwgbWVzc2FnZU5h
bWUsIGRlc3RpbmF0aW9uSUQpOworICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWU8RW5jb2Rl
cj4obWVzc2FnZU5hbWUsIGRlc3RpbmF0aW9uSUQpOwogICAgIGVuY29kZXItPnNldElzU3luY01l
c3NhZ2UodHJ1ZSk7CiAKICAgICAvLyBFbmNvZGUgdGhlIHN5bmMgcmVxdWVzdCBJRC4KQEAgLTQ1
Myw5ICs0NDksOSBAQCBib29sIENvbm5lY3Rpb246OnNlbmRNZXNzYWdlKHN0ZDo6dW5pcXVlCiAg
ICAgaWYgKCFpc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmIChpc01h
aW5UaHJlYWQoKSAmJiBtX2luRGlzcGF0Y2hNZXNzYWdlTWFya2VkVG9Vc2VGdWxseVN5bmNocm9u
b3VzTW9kZUZvclRlc3RpbmcgJiYgIWVuY29kZXItPmlzU3luY01lc3NhZ2UoKSAmJiAhKGVuY29k
ZXItPm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSAiSVBDIikgJiYgIXNlbmRPcHRpb25zLmNvbnRh
aW5zKFNlbmRPcHRpb246Oklnbm9yZUZ1bGx5U3luY2hyb25vdXNNb2RlKSkgeworICAgIGlmIChp
c01haW5UaHJlYWQoKSAmJiBtX2luRGlzcGF0Y2hNZXNzYWdlTWFya2VkVG9Vc2VGdWxseVN5bmNo
cm9ub3VzTW9kZUZvclRlc3RpbmcgJiYgIWVuY29kZXItPmlzU3luY01lc3NhZ2UoKSAmJiAhKGVu
Y29kZXItPm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBSZWNlaXZlck5hbWU6OklQQykgJiYgIXNl
bmRPcHRpb25zLmNvbnRhaW5zKFNlbmRPcHRpb246Oklnbm9yZUZ1bGx5U3luY2hyb25vdXNNb2Rl
KSkgewogICAgICAgICB1aW50NjRfdCBzeW5jUmVxdWVzdElEOwotICAgICAgICBhdXRvIHdyYXBw
ZWRNZXNzYWdlID0gY3JlYXRlU3luY01lc3NhZ2VFbmNvZGVyKCJJUEMiLCAiV3JhcHBlZEFzeW5j
TWVzc2FnZUZvclRlc3RpbmciLCBlbmNvZGVyLT5kZXN0aW5hdGlvbklEKCksIHN5bmNSZXF1ZXN0
SUQpOworICAgICAgICBhdXRvIHdyYXBwZWRNZXNzYWdlID0gY3JlYXRlU3luY01lc3NhZ2VFbmNv
ZGVyKE1lc3NhZ2VOYW1lOjpXcmFwcGVkQXN5bmNNZXNzYWdlRm9yVGVzdGluZywgZW5jb2Rlci0+
ZGVzdGluYXRpb25JRCgpLCBzeW5jUmVxdWVzdElEKTsKICAgICAgICAgd3JhcHBlZE1lc3NhZ2Ut
PnNldEZ1bGx5U3luY2hyb25vdXNNb2RlRm9yVGVzdGluZygpOwogICAgICAgICB3cmFwcGVkTWVz
c2FnZS0+d3JhcEZvclRlc3RpbmcoV1RGTW92ZShlbmNvZGVyKSk7CiAgICAgICAgIHJldHVybiBz
dGF0aWNfY2FzdDxib29sPihzZW5kU3luY01lc3NhZ2Uoc3luY1JlcXVlc3RJRCwgV1RGTW92ZSh3
cmFwcGVkTWVzc2FnZSksIFNlY29uZHM6OmluZmluaXR5KCksIHsgfSkpOwpAQCAtNDkwLDcgKzQ4
Niw3IEBAIFNlY29uZHMgQ29ubmVjdGlvbjo6dGltZW91dFJlc3BlY3RpbmdJZ24KICAgICByZXR1
cm4gbV9pZ25vcmVUaW1lb3V0c0ZvclRlc3RpbmcgPyBTZWNvbmRzOjppbmZpbml0eSgpIDogdGlt
ZW91dDsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IENvbm5lY3Rpb246OndhaXRGb3JN
ZXNzYWdlKFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBTdHJpbmdSZWZlcmVu
Y2UgbWVzc2FnZU5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCwg
T3B0aW9uU2V0PFdhaXRGb3JPcHRpb24+IHdhaXRGb3JPcHRpb25zKQorc3RkOjp1bmlxdWVfcHRy
PERlY29kZXI+IENvbm5lY3Rpb246OndhaXRGb3JNZXNzYWdlKE1lc3NhZ2VOYW1lIG1lc3NhZ2VO
YW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQsIE9wdGlvblNldDxX
YWl0Rm9yT3B0aW9uPiB3YWl0Rm9yT3B0aW9ucykKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNN
YWluKCkpOwogICAgIGF1dG8gcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpOwpAQCAtNTA2
LDcgKzUwMiw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiBDb25uZWN0aW9uOjp3YWkKICAg
ICAgICAgZm9yIChhdXRvIGl0ID0gbV9pbmNvbWluZ01lc3NhZ2VzLmJlZ2luKCksIGVuZCA9IG1f
aW5jb21pbmdNZXNzYWdlcy5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KSB7CiAgICAgICAgICAgICBz
dGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4mIG1lc3NhZ2UgPSAqaXQ7CiAKLSAgICAgICAgICAgIGlm
IChtZXNzYWdlLT5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gbWVzc2FnZVJlY2VpdmVyTmFtZSAm
JiBtZXNzYWdlLT5tZXNzYWdlTmFtZSgpID09IG1lc3NhZ2VOYW1lICYmIG1lc3NhZ2UtPmRlc3Rp
bmF0aW9uSUQoKSA9PSBkZXN0aW5hdGlvbklEKSB7CisgICAgICAgICAgICBpZiAobWVzc2FnZS0+
bWVzc2FnZU5hbWUoKSA9PSBtZXNzYWdlTmFtZSAmJiBtZXNzYWdlLT5kZXN0aW5hdGlvbklEKCkg
PT0gZGVzdGluYXRpb25JRCkgewogICAgICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxEZWNv
ZGVyPiByZXR1cm5lZE1lc3NhZ2UgPSBXVEZNb3ZlKG1lc3NhZ2UpOwogCiAgICAgICAgICAgICAg
ICAgbV9pbmNvbWluZ01lc3NhZ2VzLnJlbW92ZShpdCk7CkBAIC01MjgsNyArNTI0LDcgQEAgc3Rk
Ojp1bmlxdWVfcHRyPERlY29kZXI+IENvbm5lY3Rpb246OndhaQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICB9CiAKLSAgICBXYWl0Rm9yTWVzc2FnZVN0YXRlIHdhaXRpbmdGb3JNZXNzYWdl
KG1lc3NhZ2VSZWNlaXZlck5hbWUsIG1lc3NhZ2VOYW1lLCBkZXN0aW5hdGlvbklELCB3YWl0Rm9y
T3B0aW9ucyk7CisgICAgV2FpdEZvck1lc3NhZ2VTdGF0ZSB3YWl0aW5nRm9yTWVzc2FnZShtZXNz
YWdlTmFtZSwgZGVzdGluYXRpb25JRCwgd2FpdEZvck9wdGlvbnMpOwogCiAgICAgewogICAgICAg
ICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fd2FpdEZvck1lc3NhZ2VNdXRleCk7CkBAIC02MDAs
MTQgKzU5NiwxMyBAQCBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gQ29ubmVjdGlvbjo6c2VuCiAg
ICAgaWYgKHNlbmRTeW5jT3B0aW9ucy5jb250YWlucyhTZW5kU3luY09wdGlvbjo6Rm9yY2VEaXNw
YXRjaFdoZW5EZXN0aW5hdGlvbklzV2FpdGluZ0ZvclVuYm91bmRlZFN5bmNSZXBseSkpCiAgICAg
ICAgIHNlbmRPcHRpb25zID0gc2VuZE9wdGlvbnMgfCBJUEM6OlNlbmRPcHRpb246OkRpc3BhdGNo
TWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclVuYm91bmRlZFN5bmNSZXBseTsKIAotICAgIGF1dG8g
bWVzc2FnZVJlY2VpdmVyTmFtZSA9IGVuY29kZXItPm1lc3NhZ2VSZWNlaXZlck5hbWUoKTsKICAg
ICBhdXRvIG1lc3NhZ2VOYW1lID0gZW5jb2Rlci0+bWVzc2FnZU5hbWUoKTsKICAgICBzZW5kTWVz
c2FnZShXVEZNb3ZlKGVuY29kZXIpLCBzZW5kT3B0aW9ucyk7CiAKICAgICAvLyBUaGVuIHdhaXQg
Zm9yIGEgcmVwbHkuIFdhaXRpbmcgZm9yIGEgcmVwbHkgY291bGQgaW52b2x2ZSBkaXNwYXRjaGlu
ZyBpbmNvbWluZyBzeW5jIG1lc3NhZ2VzLCBzbwogICAgIC8vIGtlZXAgYW4gZXh0cmEgcmVmZXJl
bmNlIHRvIHRoZSBjb25uZWN0aW9uIGhlcmUgaW4gY2FzZSBpdCdzIGludmFsaWRhdGVkLgogICAg
IFJlZjxDb25uZWN0aW9uPiBwcm90ZWN0KCp0aGlzKTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RGVj
b2Rlcj4gcmVwbHkgPSB3YWl0Rm9yU3luY1JlcGx5KHN5bmNSZXF1ZXN0SUQsIG1lc3NhZ2VSZWNl
aXZlck5hbWUsIG1lc3NhZ2VOYW1lLCB0aW1lb3V0LCBzZW5kU3luY09wdGlvbnMpOworICAgIHN0
ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiByZXBseSA9IHdhaXRGb3JTeW5jUmVwbHkoc3luY1JlcXVl
c3RJRCwgbWVzc2FnZU5hbWUsIHRpbWVvdXQsIHNlbmRTeW5jT3B0aW9ucyk7CiAKICAgICAtLW1f
aW5TZW5kU3luY0NvdW50OwogCkBAIC02MjQsNyArNjE5LDcgQEAgc3RkOjp1bmlxdWVfcHRyPERl
Y29kZXI+IENvbm5lY3Rpb246OnNlbgogICAgIHJldHVybiByZXBseTsKIH0KIAotc3RkOjp1bmlx
dWVfcHRyPERlY29kZXI+IENvbm5lY3Rpb246OndhaXRGb3JTeW5jUmVwbHkodWludDY0X3Qgc3lu
Y1JlcXVlc3RJRCwgU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIFN0cmluZ1Jl
ZmVyZW5jZSBtZXNzYWdlTmFtZSwgU2Vjb25kcyB0aW1lb3V0LCBPcHRpb25TZXQ8U2VuZFN5bmNP
cHRpb24+IHNlbmRTeW5jT3B0aW9ucykKK3N0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiBDb25uZWN0
aW9uOjp3YWl0Rm9yU3luY1JlcGx5KHVpbnQ2NF90IHN5bmNSZXF1ZXN0SUQsIE1lc3NhZ2VOYW1l
IG1lc3NhZ2VOYW1lLCBTZWNvbmRzIHRpbWVvdXQsIE9wdGlvblNldDxTZW5kU3luY09wdGlvbj4g
c2VuZFN5bmNPcHRpb25zKQogewogICAgIHRpbWVvdXQgPSB0aW1lb3V0UmVzcGVjdGluZ0lnbm9y
ZVRpbWVvdXRzRm9yVGVzdGluZyh0aW1lb3V0KTsKICAgICBNb25vdG9uaWNUaW1lIGFic29sdXRl
VGltZSA9IE1vbm90b25pY1RpbWU6Om5vdygpICsgdGltZW91dDsKQEAgLTY2OSw5ICs2NjQsOSBA
QCBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gQ29ubmVjdGlvbjo6d2FpCiAgICAgfQogCiAjaWYg
T1MoREFSV0lOKQotICAgIFJFTEVBU0VfTE9HX0VSUk9SKElQQywgIkNvbm5lY3Rpb246OndhaXRG
b3JTeW5jUmVwbHk6IFRpbWVkLW91dCB3aGlsZSB3YWl0aW5nIGZvciByZXBseSBmb3IgJXtwdWJs
aWN9czo6JXtwdWJsaWN9cyBmcm9tIHByb2Nlc3MgJWQsIGlkID0gJSIgUFJJdTY0LCBtZXNzYWdl
UmVjZWl2ZXJOYW1lLnRvU3RyaW5nKCkuZGF0YSgpLCBtZXNzYWdlTmFtZS50b1N0cmluZygpLmRh
dGEoKSwgcmVtb3RlUHJvY2Vzc0lEKCksIHN5bmNSZXF1ZXN0SUQpOworICAgIFJFTEVBU0VfTE9H
X0VSUk9SKElQQywgIkNvbm5lY3Rpb246OndhaXRGb3JTeW5jUmVwbHk6IFRpbWVkLW91dCB3aGls
ZSB3YWl0aW5nIGZvciByZXBseSBmb3IgJXtwdWJsaWN9cyBmcm9tIHByb2Nlc3MgJWQsIGlkID0g
JSIgUFJJdTY0LCBkZXNjcmlwdGlvbihtZXNzYWdlTmFtZSksIHJlbW90ZVByb2Nlc3NJRCgpLCBz
eW5jUmVxdWVzdElEKTsKICNlbHNlCi0gICAgUkVMRUFTRV9MT0dfRVJST1IoSVBDLCAiQ29ubmVj
dGlvbjo6d2FpdEZvclN5bmNSZXBseTogVGltZWQtb3V0IHdoaWxlIHdhaXRpbmcgZm9yIHJlcGx5
IGZvciAlczo6JXMsIGlkID0gJSIgUFJJdTY0LCBtZXNzYWdlUmVjZWl2ZXJOYW1lLnRvU3RyaW5n
KCkuZGF0YSgpLCBtZXNzYWdlTmFtZS50b1N0cmluZygpLmRhdGEoKSwgc3luY1JlcXVlc3RJRCk7
CisgICAgUkVMRUFTRV9MT0dfRVJST1IoSVBDLCAiQ29ubmVjdGlvbjo6d2FpdEZvclN5bmNSZXBs
eTogVGltZWQtb3V0IHdoaWxlIHdhaXRpbmcgZm9yIHJlcGx5IGZvciAlcywgaWQgPSAlIiBQUkl1
NjQsIGRlc2NyaXB0aW9uKG1lc3NhZ2VOYW1lKSwgc3luY1JlcXVlc3RJRCk7CiAjZW5kaWYKIAog
ICAgIGRpZFJlY2VpdmVTeW5jUmVwbHkoc2VuZFN5bmNPcHRpb25zKTsKQEAgLTcxMSwyMyArNzA2
LDE2IEBAIHZvaWQgQ29ubmVjdGlvbjo6cHJvY2Vzc0luY29taW5nU3luY1JlcGwKIAogdm9pZCBD
b25uZWN0aW9uOjpwcm9jZXNzSW5jb21pbmdNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVy
PiBtZXNzYWdlKQogewotICAgIEFTU0VSVCghbWVzc2FnZS0+bWVzc2FnZVJlY2VpdmVyTmFtZSgp
LmlzRW1wdHkoKSk7Ci0gICAgQVNTRVJUKCFtZXNzYWdlLT5tZXNzYWdlTmFtZSgpLmlzRW1wdHko
KSk7CisgICAgQVNTRVJUKG1lc3NhZ2UtPm1lc3NhZ2VSZWNlaXZlck5hbWUoKSAhPSBSZWNlaXZl
ck5hbWU6OkludmFsaWQpOwogCi0gICAgaWYgKG1lc3NhZ2UtPm1lc3NhZ2VSZWNlaXZlck5hbWUo
KSA9PSAiSVBDIiAmJiBtZXNzYWdlLT5tZXNzYWdlTmFtZSgpID09ICJTeW5jTWVzc2FnZVJlcGx5
IikgeworICAgIGlmIChtZXNzYWdlLT5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VOYW1lOjpTeW5j
TWVzc2FnZVJlcGx5KSB7CiAgICAgICAgIHByb2Nlc3NJbmNvbWluZ1N5bmNSZXBseShXVEZNb3Zl
KG1lc3NhZ2UpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmICghV29ya1F1ZXVl
TWVzc2FnZVJlY2VpdmVyTWFwOjppc1ZhbGlkS2V5KG1lc3NhZ2UtPm1lc3NhZ2VSZWNlaXZlck5h
bWUoKSkgfHwgIVRocmVhZE1lc3NhZ2VSZWNlaXZlck1hcDo6aXNWYWxpZEtleShtZXNzYWdlLT5t
ZXNzYWdlUmVjZWl2ZXJOYW1lKCkpKSB7Ci0gICAgICAgIFJlZlB0cjxDb25uZWN0aW9uPiBwcm90
ZWN0ZWRUaGlzKHRoaXMpOwotICAgICAgICBTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVy
TmFtZVJlZmVyZW5jZSA9IG1lc3NhZ2UtPm1lc3NhZ2VSZWNlaXZlck5hbWUoKTsKLSAgICAgICAg
U3RyaW5nIG1lc3NhZ2VSZWNlaXZlck5hbWUobWVzc2FnZVJlY2VpdmVyTmFtZVJlZmVyZW5jZS5p
c0VtcHR5KCkgPyAiPHVua25vd24gbWVzc2FnZSByZWNlaXZlcj4iIDogU3RyaW5nKG1lc3NhZ2VS
ZWNlaXZlck5hbWVSZWZlcmVuY2UuZGF0YSgpLCBtZXNzYWdlUmVjZWl2ZXJOYW1lUmVmZXJlbmNl
LnNpemUoKSkpOwotICAgICAgICBTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWVSZWZlcmVuY2Ug
PSBtZXNzYWdlLT5tZXNzYWdlTmFtZSgpOwotICAgICAgICBTdHJpbmcgbWVzc2FnZU5hbWUobWVz
c2FnZU5hbWVSZWZlcmVuY2UuaXNFbXB0eSgpID8gIjx1bmtub3duIG1lc3NhZ2U+IiA6IFN0cmlu
ZyhtZXNzYWdlTmFtZVJlZmVyZW5jZS5kYXRhKCksIG1lc3NhZ2VOYW1lUmVmZXJlbmNlLnNpemUo
KSkpOwotCi0gICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCBtZXNzYWdlUmVjZWl2ZXJOYW1lID0gV1RGTW92ZShtZXNzYWdlUmVj
ZWl2ZXJOYW1lKSwgbWVzc2FnZU5hbWUgPSBXVEZNb3ZlKG1lc3NhZ2VOYW1lKV0oKSBtdXRhYmxl
IHsKLSAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPmRpc3BhdGNoRGlkUmVjZWl2ZUludmFsaWRN
ZXNzYWdlKG1lc3NhZ2VSZWNlaXZlck5hbWUudXRmOCgpLCBtZXNzYWdlTmFtZS51dGY4KCkpOwor
ICAgIGlmICghV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyTWFwOjppc1ZhbGlkS2V5KHN0YXRpY19j
YXN0PHVpbnQ4X3Q+KG1lc3NhZ2UtPm1lc3NhZ2VSZWNlaXZlck5hbWUoKSkpIHx8ICFUaHJlYWRN
ZXNzYWdlUmVjZWl2ZXJNYXA6OmlzVmFsaWRLZXkoc3RhdGljX2Nhc3Q8dWludDhfdD4obWVzc2Fn
ZS0+bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSkpIHsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRp
c3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIG1lc3NhZ2VOYW1lID0gbWVz
c2FnZS0+bWVzc2FnZU5hbWUoKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIHByb3RlY3RlZFRo
aXMtPmRpc3BhdGNoRGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKG1lc3NhZ2VOYW1lKTsKICAgICAg
ICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC03NTksNyArNzQ3LDcgQEAgdm9pZCBD
b25uZWN0aW9uOjpwcm9jZXNzSW5jb21pbmdNZXNzYWdlKAogICAgICAgICBhdXRvIGxvY2tlciA9
IGhvbGRMb2NrKG1fd2FpdEZvck1lc3NhZ2VNdXRleCk7CiAKICAgICAgICAgaWYgKG1fd2FpdGlu
Z0Zvck1lc3NhZ2UgJiYgIW1fd2FpdGluZ0Zvck1lc3NhZ2UtPmRlY29kZXIpIHsKLSAgICAgICAg
ICAgIGlmIChtX3dhaXRpbmdGb3JNZXNzYWdlLT5tZXNzYWdlUmVjZWl2ZXJOYW1lID09IG1lc3Nh
Z2UtPm1lc3NhZ2VSZWNlaXZlck5hbWUoKSAmJiBtX3dhaXRpbmdGb3JNZXNzYWdlLT5tZXNzYWdl
TmFtZSA9PSBtZXNzYWdlLT5tZXNzYWdlTmFtZSgpICYmIG1fd2FpdGluZ0Zvck1lc3NhZ2UtPmRl
c3RpbmF0aW9uSUQgPT0gbWVzc2FnZS0+ZGVzdGluYXRpb25JRCgpKSB7CisgICAgICAgICAgICBp
ZiAobV93YWl0aW5nRm9yTWVzc2FnZS0+bWVzc2FnZU5hbWUgPT0gbWVzc2FnZS0+bWVzc2FnZU5h
bWUoKSAmJiBtX3dhaXRpbmdGb3JNZXNzYWdlLT5kZXN0aW5hdGlvbklEID09IG1lc3NhZ2UtPmRl
c3RpbmF0aW9uSUQoKSkgewogICAgICAgICAgICAgICAgIG1fd2FpdGluZ0Zvck1lc3NhZ2UtPmRl
Y29kZXIgPSBXVEZNb3ZlKG1lc3NhZ2UpOwogICAgICAgICAgICAgICAgIEFTU0VSVChtX3dhaXRp
bmdGb3JNZXNzYWdlLT5kZWNvZGVyKTsKICAgICAgICAgICAgICAgICBtX3dhaXRGb3JNZXNzYWdl
Q29uZGl0aW9uLm5vdGlmeU9uZSgpOwpAQCAtOTEyLDkgKzkwMCw5IEBAIHZvaWQgQ29ubmVjdGlv
bjo6ZGlzcGF0Y2hTeW5jTWVzc2FnZShEZWMKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IGF1dG8gcmVwbHlFbmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNvZGVyPigiSVBDIiwgIlN5bmNNZXNz
YWdlUmVwbHkiLCBzeW5jUmVxdWVzdElEKTsKKyAgICBhdXRvIHJlcGx5RW5jb2RlciA9IG1ha2VV
bmlxdWU8RW5jb2Rlcj4oTWVzc2FnZU5hbWU6OlN5bmNNZXNzYWdlUmVwbHksIHN5bmNSZXF1ZXN0
SUQpOwogCi0gICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09ICJJUEMiICYm
IGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSAiV3JhcHBlZEFzeW5jTWVzc2FnZUZvclRlc3Rpbmci
KSB7CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlTmFtZTo6V3JhcHBl
ZEFzeW5jTWVzc2FnZUZvclRlc3RpbmcpIHsKICAgICAgICAgaWYgKCFtX2Z1bGx5U3luY2hyb25v
dXNNb2RlSXNBbGxvd2VkRm9yVGVzdGluZykgewogICAgICAgICAgICAgZGVjb2Rlci5tYXJrSW52
YWxpZCgpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtOTM2LDE0ICs5MjQsMTQgQEAgdm9pZCBD
b25uZWN0aW9uOjpkaXNwYXRjaFN5bmNNZXNzYWdlKERlYwogICAgICAgICBzZW5kU3luY1JlcGx5
KFdURk1vdmUocmVwbHlFbmNvZGVyKSk7CiB9CiAKLXZvaWQgQ29ubmVjdGlvbjo6ZGlzcGF0Y2hE
aWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoY29uc3QgQ1N0cmluZyYgbWVzc2FnZVJlY2VpdmVyTmFt
ZVN0cmluZywgY29uc3QgQ1N0cmluZyYgbWVzc2FnZU5hbWVTdHJpbmcpCit2b2lkIENvbm5lY3Rp
b246OmRpc3BhdGNoRGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKE1lc3NhZ2VOYW1lIG1lc3NhZ2VO
YW1lKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKICAgICBpZiAoIWlzVmFs
aWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9jbGllbnQuZGlkUmVjZWl2ZUludmFsaWRN
ZXNzYWdlKCp0aGlzLCBTdHJpbmdSZWZlcmVuY2UobWVzc2FnZVJlY2VpdmVyTmFtZVN0cmluZy5k
YXRhKCksIG1lc3NhZ2VSZWNlaXZlck5hbWVTdHJpbmcubGVuZ3RoKCkpLCBTdHJpbmdSZWZlcmVu
Y2UobWVzc2FnZU5hbWVTdHJpbmcuZGF0YSgpLCBtZXNzYWdlTmFtZVN0cmluZy5sZW5ndGgoKSkp
OworICAgIG1fY2xpZW50LmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZSgqdGhpcywgbWVzc2FnZU5h
bWUpOwogfQogCiB2b2lkIENvbm5lY3Rpb246OmRpZEZhaWxUb1NlbmRTeW5jTWVzc2FnZSgpCkBA
IC05ODksNyArOTc3LDcgQEAgdm9pZCBDb25uZWN0aW9uOjplbnF1ZXVlSW5jb21pbmdNZXNzYWdl
KAogdm9pZCBDb25uZWN0aW9uOjpkaXNwYXRjaE1lc3NhZ2UoRGVjb2RlciYgZGVjb2RlcikKIHsK
ICAgICBSRUxFQVNFX0FTU0VSVChpc1ZhbGlkKCkpOwotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSA9PSAiQXN5bmNSZXBseSIpIHsKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdl
UmVjZWl2ZXJOYW1lKCkgPT0gUmVjZWl2ZXJOYW1lOjpBc3luY1JlcGx5KSB7CiAgICAgICAgIE9w
dGlvbmFsPHVpbnQ2NF90PiBsaXN0ZW5lcklEOwogICAgICAgICBkZWNvZGVyID4+IGxpc3RlbmVy
SUQ7CiAgICAgICAgIGlmICghbGlzdGVuZXJJRCkgewpAQCAtMTAxMSw3ICs5OTksNyBAQCB2b2lk
IENvbm5lY3Rpb246OmRpc3BhdGNoTWVzc2FnZShEZWNvZGVyCiBib29sIENvbm5lY3Rpb246OmRp
c3BhdGNoTWVzc2FnZVRvV29ya1F1ZXVlUmVjZWl2ZXIoc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+
JiBtZXNzYWdlKQogewogICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV93b3JrUXVldWVNZXNz
YWdlUmVjZWl2ZXJzTXV0ZXgpOwotICAgIGF1dG8gaXQgPSBtX3dvcmtRdWV1ZU1lc3NhZ2VSZWNl
aXZlcnMuZmluZChtZXNzYWdlLT5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkpOworICAgIGF1dG8gaXQg
PSBtX3dvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcnMuZmluZChzdGF0aWNfY2FzdDx1aW50OF90Piht
ZXNzYWdlLT5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkpKTsKICAgICBpZiAoaXQgIT0gbV93b3JrUXVl
dWVNZXNzYWdlUmVjZWl2ZXJzLmVuZCgpKSB7CiAgICAgICAgIGl0LT52YWx1ZS5maXJzdC0+ZGlz
cGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgd29ya1F1ZXVlTWVzc2FnZVJl
Y2VpdmVyID0gaXQtPnZhbHVlLnNlY29uZCwgZGVjb2RlciA9IFdURk1vdmUobWVzc2FnZSldKCkg
bXV0YWJsZSB7CiAgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5kaXNwYXRjaFdvcmtRdWV1ZU1l
c3NhZ2VSZWNlaXZlck1lc3NhZ2UoKndvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlciwgKmRlY29kZXIp
OwpAQCAtMTAyNiw3ICsxMDE0LDcgQEAgYm9vbCBDb25uZWN0aW9uOjpkaXNwYXRjaE1lc3NhZ2VU
b1RocmVhZAogICAgIFJlZlB0cjxUaHJlYWRNZXNzYWdlUmVjZWl2ZXI+IHByb3RlY3RlZFRocmVh
ZE1lc3NhZ2VSZWNlaXZlcjsKICAgICB7CiAgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2so
bV90aHJlYWRNZXNzYWdlUmVjZWl2ZXJzTG9jayk7Ci0gICAgICAgIHByb3RlY3RlZFRocmVhZE1l
c3NhZ2VSZWNlaXZlciA9IG1fdGhyZWFkTWVzc2FnZVJlY2VpdmVycy5nZXQobWVzc2FnZS0+bWVz
c2FnZVJlY2VpdmVyTmFtZSgpKTsKKyAgICAgICAgcHJvdGVjdGVkVGhyZWFkTWVzc2FnZVJlY2Vp
dmVyID0gbV90aHJlYWRNZXNzYWdlUmVjZWl2ZXJzLmdldChzdGF0aWNfY2FzdDx1aW50OF90Piht
ZXNzYWdlLT5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkpKTsKICAgICB9CiAKICAgICBpZiAocHJvdGVj
dGVkVGhyZWFkTWVzc2FnZVJlY2VpdmVyKSB7CkBAIC0xMDU0LDcgKzEwNDIsNyBAQCB2b2lkIENv
bm5lY3Rpb246OmRpc3BhdGNoTWVzc2FnZShzdGQ6OnVuCiAKICAgICBpZiAobWVzc2FnZS0+c2hv
dWxkVXNlRnVsbHlTeW5jaHJvbm91c01vZGVGb3JUZXN0aW5nKCkpIHsKICAgICAgICAgaWYgKCFt
X2Z1bGx5U3luY2hyb25vdXNNb2RlSXNBbGxvd2VkRm9yVGVzdGluZykgewotICAgICAgICAgICAg
bV9jbGllbnQuZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKCp0aGlzLCBtZXNzYWdlLT5tZXNzYWdl
UmVjZWl2ZXJOYW1lKCksIG1lc3NhZ2UtPm1lc3NhZ2VOYW1lKCkpOworICAgICAgICAgICAgbV9j
bGllbnQuZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKCp0aGlzLCBtZXNzYWdlLT5tZXNzYWdlTmFt
ZSgpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBtX2luRGlzcGF0
Y2hNZXNzYWdlTWFya2VkVG9Vc2VGdWxseVN5bmNocm9ub3VzTW9kZUZvclRlc3RpbmcrKzsKQEAg
LTEwODgsNyArMTA3Niw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6ZGlzcGF0Y2hNZXNzYWdlKHN0ZDo6
dW4KICAgICAgICAgbV9pbkRpc3BhdGNoTWVzc2FnZU1hcmtlZFRvVXNlRnVsbHlTeW5jaHJvbm91
c01vZGVGb3JUZXN0aW5nLS07CiAKICAgICBpZiAobV9kaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2Ug
JiYgaXNWYWxpZCgpKQotICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2Uo
KnRoaXMsIG1lc3NhZ2UtPm1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbWVzc2FnZS0+bWVzc2FnZU5h
bWUoKSk7CisgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZSgqdGhpcywg
bWVzc2FnZS0+bWVzc2FnZU5hbWUoKSk7CiAKICAgICBtX2RpZFJlY2VpdmVJbnZhbGlkTWVzc2Fn
ZSA9IG9sZERpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZTsKIH0KQEAgLTExNjgsNyArMTE1Niw3IEBA
IHZvaWQgQ29ubmVjdGlvbjo6ZGlzcGF0Y2hJbmNvbWluZ01lc3NhZ2UKICAgICAgICAgaWYgKG1l
c3NhZ2VzVG9Qcm9jZXNzIDwgbV9pbmNvbWluZ01lc3NhZ2VzLnNpemUoKSkgewogICAgICAgICAg
ICAgUkVMRUFTRV9MT0dfRVJST1IoSVBDLCAiJXAgLSBDb25uZWN0aW9uOjpkaXNwYXRjaEluY29t
aW5nTWVzc2FnZXM6IElQQyB0aHJvdHRsaW5nIHdhcyB0cmlnZ2VyZWQgKGhhcyAlenUgcGVuZGlu
ZyBpbmNvbWluZyBtZXNzYWdlcywgd2lsbCBvbmx5IHByb2Nlc3MgJXp1IGJlZm9yZSB5aWVsZGlu
ZykiLCB0aGlzLCBtX2luY29taW5nTWVzc2FnZXMuc2l6ZSgpLCBtZXNzYWdlc1RvUHJvY2Vzcyk7
CiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihJUEMs
ICIlcCAtIENvbm5lY3Rpb246OmRpc3BhdGNoSW5jb21pbmdNZXNzYWdlczogZmlyc3QgSVBDIG1l
c3NhZ2UgaW4gcXVldWUgaXMgJXtwdWJsaWN9czo6JXtwdWJsaWN9cyIsIHRoaXMsIG1lc3NhZ2Ut
Pm1lc3NhZ2VSZWNlaXZlck5hbWUoKS50b1N0cmluZygpLmRhdGEoKSwgbWVzc2FnZS0+bWVzc2Fn
ZU5hbWUoKS50b1N0cmluZygpLmRhdGEoKSk7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJP
UihJUEMsICIlcCAtIENvbm5lY3Rpb246OmRpc3BhdGNoSW5jb21pbmdNZXNzYWdlczogZmlyc3Qg
SVBDIG1lc3NhZ2UgaW4gcXVldWUgaXMgJXtwdWJsaWN9cyIsIHRoaXMsIGRlc2NyaXB0aW9uKG1l
c3NhZ2UtPm1lc3NhZ2VOYW1lKCkpKTsKICNlbmRpZgogICAgICAgICB9CiAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmgJKHJldmlzaW9uIDI2MDc2NCkKKysrIFNv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAt
MTA3LDcgKzEwNyw3IEBAIHB1YmxpYzoKICAgICBjbGFzcyBDbGllbnQgOiBwdWJsaWMgTWVzc2Fn
ZVJlY2VpdmVyIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRDbG9zZShD
b25uZWN0aW9uJikgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRN
ZXNzYWdlKENvbm5lY3Rpb24mLCBTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwg
U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBk
aWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoQ29ubmVjdGlvbiYsIE1lc3NhZ2VOYW1lKSA9IDA7CiAK
ICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZpcnR1YWwgfkNsaWVudCgpIHsgfQpAQCAtMTg5LDEx
ICsxODksMTEgQEAgcHVibGljOgogICAgIHR5cGVkZWYgdm9pZCAoKkRpZENsb3NlT25Db25uZWN0
aW9uV29ya1F1ZXVlQ2FsbGJhY2spKENvbm5lY3Rpb24qKTsKICAgICB2b2lkIHNldERpZENsb3Nl
T25Db25uZWN0aW9uV29ya1F1ZXVlQ2FsbGJhY2soRGlkQ2xvc2VPbkNvbm5lY3Rpb25Xb3JrUXVl
dWVDYWxsYmFjayk7CiAKLSAgICB2b2lkIGFkZFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcihTdHJp
bmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgV29ya1F1ZXVlJiwgV29ya1F1ZXVlTWVz
c2FnZVJlY2VpdmVyKik7Ci0gICAgdm9pZCByZW1vdmVXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIo
U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUpOworICAgIHZvaWQgYWRkV29ya1F1
ZXVlTWVzc2FnZVJlY2VpdmVyKFJlY2VpdmVyTmFtZSwgV29ya1F1ZXVlJiwgV29ya1F1ZXVlTWVz
c2FnZVJlY2VpdmVyKik7CisgICAgdm9pZCByZW1vdmVXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIo
UmVjZWl2ZXJOYW1lKTsKIAotICAgIHZvaWQgYWRkVGhyZWFkTWVzc2FnZVJlY2VpdmVyKFN0cmlu
Z1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBUaHJlYWRNZXNzYWdlUmVjZWl2ZXIqKTsK
LSAgICB2b2lkIHJlbW92ZVRocmVhZE1lc3NhZ2VSZWNlaXZlcihTdHJpbmdSZWZlcmVuY2UgbWVz
c2FnZVJlY2VpdmVyTmFtZSk7CisgICAgdm9pZCBhZGRUaHJlYWRNZXNzYWdlUmVjZWl2ZXIoUmVj
ZWl2ZXJOYW1lLCBUaHJlYWRNZXNzYWdlUmVjZWl2ZXIqKTsKKyAgICB2b2lkIHJlbW92ZVRocmVh
ZE1lc3NhZ2VSZWNlaXZlcihSZWNlaXZlck5hbWUpOwogCiAgICAgYm9vbCBvcGVuKCk7CiAgICAg
dm9pZCBpbnZhbGlkYXRlKCk7CkBAIC0yMzUsNyArMjM1LDcgQEAgcHVibGljOgogICAgIH0KIAog
ICAgIGJvb2wgc2VuZE1lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPEVuY29kZXI+LCBPcHRpb25TZXQ8
U2VuZE9wdGlvbj4gc2VuZE9wdGlvbnMpOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVyPiBj
cmVhdGVTeW5jTWVzc2FnZUVuY29kZXIoU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5h
bWUsIFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwg
dWludDY0X3QmIHN5bmNSZXF1ZXN0SUQpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVyPiBj
cmVhdGVTeW5jTWVzc2FnZUVuY29kZXIoTWVzc2FnZU5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9u
SUQsIHVpbnQ2NF90JiBzeW5jUmVxdWVzdElEKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rl
cj4gc2VuZFN5bmNNZXNzYWdlKHVpbnQ2NF90IHN5bmNSZXF1ZXN0SUQsIHN0ZDo6dW5pcXVlX3B0
cjxFbmNvZGVyPiwgU2Vjb25kcyB0aW1lb3V0LCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRpb24+IHNl
bmRTeW5jT3B0aW9ucyk7CiAgICAgYm9vbCBzZW5kU3luY1JlcGx5KHN0ZDo6dW5pcXVlX3B0cjxF
bmNvZGVyPik7CiAKQEAgLTI3NCw5ICsyNzQsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgcGxhdGZv
cm1Jbml0aWFsaXplKElkZW50aWZpZXIpOwogICAgIHZvaWQgcGxhdGZvcm1JbnZhbGlkYXRlKCk7
CiAgICAgCi0gICAgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IHdhaXRGb3JNZXNzYWdlKFN0cmlu
Z1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5h
bWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCwgT3B0aW9uU2V0PFdh
aXRGb3JPcHRpb24+KTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gd2FpdEZvck1lc3Nh
Z2UoTWVzc2FnZU5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCwg
T3B0aW9uU2V0PFdhaXRGb3JPcHRpb24+KTsKICAgICAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RGVj
b2Rlcj4gd2FpdEZvclN5bmNSZXBseSh1aW50NjRfdCBzeW5jUmVxdWVzdElELCBTdHJpbmdSZWZl
cmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lLCBT
ZWNvbmRzIHRpbWVvdXQsIE9wdGlvblNldDxTZW5kU3luY09wdGlvbj4pOworICAgIHN0ZDo6dW5p
cXVlX3B0cjxEZWNvZGVyPiB3YWl0Rm9yU3luY1JlcGx5KHVpbnQ2NF90IHN5bmNSZXF1ZXN0SUQs
IE1lc3NhZ2VOYW1lLCBTZWNvbmRzIHRpbWVvdXQsIE9wdGlvblNldDxTZW5kU3luY09wdGlvbj4p
OwogCiAgICAgYm9vbCBkaXNwYXRjaE1lc3NhZ2VUb1dvcmtRdWV1ZVJlY2VpdmVyKHN0ZDo6dW5p
cXVlX3B0cjxEZWNvZGVyPiYpOwogICAgIGJvb2wgZGlzcGF0Y2hNZXNzYWdlVG9UaHJlYWRSZWNl
aXZlcihzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4mKTsKQEAgLTMwMCw3ICszMDAsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgZGlzcGF0Y2hNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPik7
CiAgICAgdm9pZCBkaXNwYXRjaE1lc3NhZ2UoRGVjb2RlciYpOwogICAgIHZvaWQgZGlzcGF0Y2hT
eW5jTWVzc2FnZShEZWNvZGVyJik7Ci0gICAgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJbnZhbGlk
TWVzc2FnZShjb25zdCBDU3RyaW5nJiBtZXNzYWdlUmVjZWl2ZXJOYW1lU3RyaW5nLCBjb25zdCBD
U3RyaW5nJiBtZXNzYWdlTmFtZVN0cmluZyk7CisgICAgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJ
bnZhbGlkTWVzc2FnZShNZXNzYWdlTmFtZSk7CiAgICAgdm9pZCBkaWRGYWlsVG9TZW5kU3luY01l
c3NhZ2UoKTsKIAogICAgIC8vIENhbiBiZSBjYWxsZWQgb24gYW55IHRocmVhZC4KQEAgLTM0Niwx
MSArMzQ2LDExIEBAIHByaXZhdGU6CiAgICAgUmVmPFdvcmtRdWV1ZT4gbV9jb25uZWN0aW9uUXVl
dWU7CiAKICAgICBMb2NrIG1fd29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyc011dGV4OwotICAgIHVz
aW5nIFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlck1hcCA9IEhhc2hNYXA8U3RyaW5nUmVmZXJlbmNl
LCBzdGQ6OnBhaXI8UmVmUHRyPFdvcmtRdWV1ZT4sIFJlZlB0cjxXb3JrUXVldWVNZXNzYWdlUmVj
ZWl2ZXI+Pj47CisgICAgdXNpbmcgV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyTWFwID0gSGFzaE1h
cDx1aW50OF90LCBzdGQ6OnBhaXI8UmVmUHRyPFdvcmtRdWV1ZT4sIFJlZlB0cjxXb3JrUXVldWVN
ZXNzYWdlUmVjZWl2ZXI+Pj47CiAgICAgV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyTWFwIG1fd29y
a1F1ZXVlTWVzc2FnZVJlY2VpdmVyczsKIAogICAgIExvY2sgbV90aHJlYWRNZXNzYWdlUmVjZWl2
ZXJzTG9jazsKLSAgICB1c2luZyBUaHJlYWRNZXNzYWdlUmVjZWl2ZXJNYXAgPSBIYXNoTWFwPFN0
cmluZ1JlZmVyZW5jZSwgUmVmUHRyPFRocmVhZE1lc3NhZ2VSZWNlaXZlcj4+OworICAgIHVzaW5n
IFRocmVhZE1lc3NhZ2VSZWNlaXZlck1hcCA9IEhhc2hNYXA8dWludDhfdCwgUmVmUHRyPFRocmVh
ZE1lc3NhZ2VSZWNlaXZlcj4+OwogICAgIFRocmVhZE1lc3NhZ2VSZWNlaXZlck1hcCBtX3RocmVh
ZE1lc3NhZ2VSZWNlaXZlcnM7CiAKICAgICB1bnNpZ25lZCBtX2luU2VuZFN5bmNDb3VudDsKQEAg
LTQ2Miw3ICs0NjIsNyBAQCBib29sIENvbm5lY3Rpb246OnNlbmQoVCYmIG1lc3NhZ2UsIHVpbnQ2
CiB7CiAgICAgQ09NUElMRV9BU1NFUlQoIVQ6OmlzU3luYywgQXN5bmNNZXNzYWdlRXhwZWN0ZWQp
OwogCi0gICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNvZGVyPihUOjpyZWNlaXZlck5h
bWUoKSwgVDo6bmFtZSgpLCBkZXN0aW5hdGlvbklEKTsKKyAgICBhdXRvIGVuY29kZXIgPSBtYWtl
VW5pcXVlPEVuY29kZXI+KFQ6Om5hbWUoKSwgZGVzdGluYXRpb25JRCk7CiAgICAgZW5jb2Rlci0+
ZW5jb2RlKG1lc3NhZ2UuYXJndW1lbnRzKCkpOwogICAgIAogICAgIHJldHVybiBzZW5kTWVzc2Fn
ZShXVEZNb3ZlKGVuY29kZXIpLCBzZW5kT3B0aW9ucyk7CkBAIC00NzcsNyArNDc3LDcgQEAgdm9p
ZCBDb25uZWN0aW9uOjpzZW5kV2l0aEFzeW5jUmVwbHkoVCYmIAogewogICAgIENPTVBJTEVfQVNT
RVJUKCFUOjppc1N5bmMsIEFzeW5jTWVzc2FnZUV4cGVjdGVkKTsKIAotICAgIGF1dG8gZW5jb2Rl
ciA9IG1ha2VVbmlxdWU8RW5jb2Rlcj4oVDo6cmVjZWl2ZXJOYW1lKCksIFQ6Om5hbWUoKSwgZGVz
dGluYXRpb25JRCk7CisgICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNvZGVyPihUOjpu
YW1lKCksIGRlc3RpbmF0aW9uSUQpOwogICAgIHVpbnQ2NF90IGxpc3RlbmVySUQgPSBuZXh0QXN5
bmNSZXBseUhhbmRsZXJJRCgpOwogICAgIGVuY29kZXItPmVuY29kZShsaXN0ZW5lcklEKTsKICAg
ICBlbmNvZGVyLT5lbmNvZGUobWVzc2FnZS5hcmd1bWVudHMoKSk7CkBAIC01MTUsNyArNTE1LDcg
QEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9vbCBDb25uZWN0aW9uOjpzZQogICAgIFJFTEVBU0Vf
QVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAgIHVpbnQ2NF90IHN5bmNSZXF1ZXN0SUQg
PSAwOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVyPiBlbmNvZGVyID0gY3JlYXRlU3luY01l
c3NhZ2VFbmNvZGVyKFQ6OnJlY2VpdmVyTmFtZSgpLCBUOjpuYW1lKCksIGRlc3RpbmF0aW9uSUQs
IHN5bmNSZXF1ZXN0SUQpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVyPiBlbmNvZGVyID0g
Y3JlYXRlU3luY01lc3NhZ2VFbmNvZGVyKFQ6Om5hbWUoKSwgZGVzdGluYXRpb25JRCwgc3luY1Jl
cXVlc3RJRCk7CiAKICAgICBpZiAoc2VuZFN5bmNPcHRpb25zLmNvbnRhaW5zKFNlbmRTeW5jT3B0
aW9uOjpVc2VGdWxseVN5bmNocm9ub3VzTW9kZUZvclRlc3RpbmcpKSB7CiAgICAgICAgIGVuY29k
ZXItPnNldEZ1bGx5U3luY2hyb25vdXNNb2RlRm9yVGVzdGluZygpOwpAQCAtNTQyLDcgKzU0Miw3
IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgQ29ubmVjdGlvbjo6c2UKIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+IGJvb2wgQ29ubmVjdGlvbjo6d2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRlbHko
dWludDY0X3QgZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0LCBPcHRpb25TZXQ8V2FpdEZv
ck9wdGlvbj4gd2FpdEZvck9wdGlvbnMpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoUnVuTG9vcDo6
aXNNYWluKCkpOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiBkZWNvZGVyID0gd2FpdEZv
ck1lc3NhZ2UoVDo6cmVjZWl2ZXJOYW1lKCksIFQ6Om5hbWUoKSwgZGVzdGluYXRpb25JRCwgdGlt
ZW91dCwgd2FpdEZvck9wdGlvbnMpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiBkZWNv
ZGVyID0gd2FpdEZvck1lc3NhZ2UoVDo6bmFtZSgpLCBkZXN0aW5hdGlvbklELCB0aW1lb3V0LCB3
YWl0Rm9yT3B0aW9ucyk7CiAgICAgaWYgKCFkZWNvZGVyKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwCShyZXZpc2lvbiAy
NjA3NjQpCisrKyBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNjYsOSArNjYsNiBAQCBEZWNvZGVyOjpEZWNvZGVyKGNvbnN0IHVpbnQ4X3Qq
IGJ1ZmZlciwgCiAgICAgaWYgKCFkZWNvZGUobV9tZXNzYWdlRmxhZ3MpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBpZiAoIWRlY29kZShtX21lc3NhZ2VSZWNlaXZlck5hbWUpKQotICAgICAgICBy
ZXR1cm47Ci0KICAgICBpZiAoIWRlY29kZShtX21lc3NhZ2VOYW1lKSkKICAgICAgICAgcmV0dXJu
OwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5oCShyZXZpc2lvbiAyNjA3
NjQpCisrKyBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXIuaCIKICNpbmNs
dWRlICJBdHRhY2htZW50LmgiCisjaW5jbHVkZSAiTWVzc2FnZU5hbWVzLmgiCiAjaW5jbHVkZSAi
U3RyaW5nUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSA8d3RmL0VudW1UcmFpdHMuaD4KICNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CkBAIC01MSw4ICs1Miw4IEBAIHB1YmxpYzoKICAgICBEZWNvZGVyKGNv
bnN0IERlY29kZXImKSA9IGRlbGV0ZTsKICAgICBEZWNvZGVyKERlY29kZXImJikgPSBkZWxldGU7
CiAKLSAgICBTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSgpIGNvbnN0IHsgcmV0
dXJuIG1fbWVzc2FnZVJlY2VpdmVyTmFtZTsgfQotICAgIFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdl
TmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWVzc2FnZU5hbWU7IH0KKyAgICBSZWNlaXZlck5hbWUg
bWVzc2FnZVJlY2VpdmVyTmFtZSgpIGNvbnN0IHsgcmV0dXJuIHJlY2VpdmVyTmFtZShtX21lc3Nh
Z2VOYW1lKTsgfQorICAgIE1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lKCkgY29uc3QgeyByZXR1cm4g
bV9tZXNzYWdlTmFtZTsgfQogICAgIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQoKSBjb25zdCB7IHJl
dHVybiBtX2Rlc3RpbmF0aW9uSUQ7IH0KIAogICAgIGJvb2wgaXNTeW5jTWVzc2FnZSgpIGNvbnN0
OwpAQCAtMTExLDcgKzExMiw3IEBAIHB1YmxpYzoKICAgICAgICAgdHlwZW5hbWUgc3RkOjp1bmRl
cmx5aW5nX3R5cGU8RT46OnR5cGUgdmFsdWU7CiAgICAgICAgIGlmICghZGVjb2RlKHZhbHVlKSkK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgaWYgKCFpc1ZhbGlkRW51bTxFPih2
YWx1ZSkpCisgICAgICAgIGlmICghV1RGOjppc1ZhbGlkRW51bTxFPih2YWx1ZSkpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgZSA9IHN0YXRpY19jYXN0PEU+KHZhbHVlKTsK
QEAgLTEyMyw3ICsxMjQsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBPcHRpb25hbDx0eXBl
bmFtZSBzdGQ6OnVuZGVybHlpbmdfdHlwZTxFPjo6dHlwZT4gdmFsdWU7CiAgICAgICAgICp0aGlz
ID4+IHZhbHVlOwotICAgICAgICBpZiAodmFsdWUgJiYgaXNWYWxpZEVudW08RT4oKnZhbHVlKSkK
KyAgICAgICAgaWYgKHZhbHVlICYmIFdURjo6aXNWYWxpZEVudW08RT4oKnZhbHVlKSkKICAgICAg
ICAgICAgIG9wdGlvbmFsID0gc3RhdGljX2Nhc3Q8RT4oKnZhbHVlKTsKICAgICAgICAgcmV0dXJu
ICp0aGlzOwogICAgIH0KQEAgLTIwMyw4ICsyMDQsNyBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxB
dHRhY2htZW50PiBtX2F0dGFjaG1lbnRzOwogCiAgICAgdWludDhfdCBtX21lc3NhZ2VGbGFnczsK
LSAgICBTdHJpbmdSZWZlcmVuY2UgbV9tZXNzYWdlUmVjZWl2ZXJOYW1lOwotICAgIFN0cmluZ1Jl
ZmVyZW5jZSBtX21lc3NhZ2VOYW1lOworICAgIE1lc3NhZ2VOYW1lIG1fbWVzc2FnZU5hbWU7CiAK
ICAgICB1aW50NjRfdCBtX2Rlc3RpbmF0aW9uSUQ7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL0VuY29kZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL0VuY29kZXIuY3BwCShyZXZpc2lvbiAyNjA3NjQpCisrKyBTb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9FbmNvZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjEsOSArNjEsOCBAQCBz
dGF0aWMgaW5saW5lIHZvaWQgZnJlZUJ1ZmZlcih2b2lkKiBhZGRyCiAjZW5kaWYKIH0KIAotRW5j
b2Rlcjo6RW5jb2RlcihTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgU3RyaW5n
UmVmZXJlbmNlIG1lc3NhZ2VOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKQotICAgIDogbV9t
ZXNzYWdlUmVjZWl2ZXJOYW1lKG1lc3NhZ2VSZWNlaXZlck5hbWUpCi0gICAgLCBtX21lc3NhZ2VO
YW1lKG1lc3NhZ2VOYW1lKQorRW5jb2Rlcjo6RW5jb2RlcihNZXNzYWdlTmFtZSBtZXNzYWdlTmFt
ZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCkKKyAgICA6IG1fbWVzc2FnZU5hbWUobWVzc2FnZU5h
bWUpCiAgICAgLCBtX2Rlc3RpbmF0aW9uSUQoZGVzdGluYXRpb25JRCkKICAgICAsIG1fYnVmZmVy
KG1faW5saW5lQnVmZmVyKQogICAgICwgbV9idWZmZXJQb2ludGVyKG1faW5saW5lQnVmZmVyKQpA
QCAtMTY4LDEwICsxNjcsNyBAQCB2b2lkIEVuY29kZXI6OnJlc2VydmUoc2l6ZV90IHNpemUpCiAK
IHZvaWQgRW5jb2Rlcjo6ZW5jb2RlSGVhZGVyKCkKIHsKLSAgICBBU1NFUlQoIW1fbWVzc2FnZVJl
Y2VpdmVyTmFtZS5pc0VtcHR5KCkpOwotCiAgICAgKnRoaXMgPDwgZGVmYXVsdE1lc3NhZ2VGbGFn
czsKLSAgICAqdGhpcyA8PCBtX21lc3NhZ2VSZWNlaXZlck5hbWU7CiAgICAgKnRoaXMgPDwgbV9t
ZXNzYWdlTmFtZTsKICAgICAqdGhpcyA8PCBtX2Rlc3RpbmF0aW9uSUQ7CiB9CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9FbmNvZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvRW5jb2Rlci5oCShyZXZpc2lvbiAyNjA3NjQpCisrKyBTb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9FbmNvZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3
LDcgQEAKIAogI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXIuaCIKICNpbmNsdWRlICJBdHRhY2htZW50
LmgiCisjaW5jbHVkZSAiTWVzc2FnZU5hbWVzLmgiCiAjaW5jbHVkZSAiU3RyaW5nUmVmZXJlbmNl
LmgiCiAjaW5jbHVkZSA8d3RmL0VudW1UcmFpdHMuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CkBAIC0zNSwxNSArMzYsMTYgQEAgbmFtZXNwYWNlIElQQyB7CiAKIGNsYXNzIERhdGFSZWZlcmVu
Y2U7CiBlbnVtIGNsYXNzIFNob3VsZERpc3BhdGNoV2hlbldhaXRpbmdGb3JTeW5jUmVwbHk7Citl
bnVtIGNsYXNzIE1lc3NhZ2VOYW1lIDogdWludDE2X3Q7CiAKIGNsYXNzIEVuY29kZXIgZmluYWwg
ewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIEVuY29kZXIoU3Ry
aW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdl
TmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCk7CisgICAgRW5jb2RlcihNZXNzYWdlTmFtZSwg
dWludDY0X3QgZGVzdGluYXRpb25JRCk7CiAgICAgfkVuY29kZXIoKTsKIAotICAgIFN0cmluZ1Jl
ZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gbV9tZXNzYWdlUmVj
ZWl2ZXJOYW1lOyB9Ci0gICAgU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lKCkgY29uc3QgeyBy
ZXR1cm4gbV9tZXNzYWdlTmFtZTsgfQorICAgIFJlY2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJO
YW1lKCkgY29uc3QgeyByZXR1cm4gcmVjZWl2ZXJOYW1lKG1fbWVzc2FnZU5hbWUpOyB9CisgICAg
TWVzc2FnZU5hbWUgbWVzc2FnZU5hbWUoKSBjb25zdCB7IHJldHVybiBtX21lc3NhZ2VOYW1lOyB9
CiAgICAgdWludDY0X3QgZGVzdGluYXRpb25JRCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVzdGluYXRp
b25JRDsgfQogCiAgICAgdm9pZCBzZXRJc1N5bmNNZXNzYWdlKGJvb2wpOwpAQCAtMTEyLDE0ICsx
MTQsMTMgQEAgcHJpdmF0ZToKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFPgogICAgIGF1dG8gZW5j
b2RlKEUgdmFsdWUpIC0+IHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19lbnVtPEU+Ojp2YWx1ZT4K
ICAgICB7Ci0gICAgICAgIEFTU0VSVChpc1ZhbGlkRW51bTxFPihzdGF0aWNfY2FzdDx0eXBlbmFt
ZSBzdGQ6OnVuZGVybHlpbmdfdHlwZTxFPjo6dHlwZT4odmFsdWUpKSk7CisgICAgICAgIEFTU0VS
VChXVEY6OmlzVmFsaWRFbnVtPEU+KHN0YXRpY19jYXN0PHR5cGVuYW1lIHN0ZDo6dW5kZXJseWlu
Z190eXBlPEU+Ojp0eXBlPih2YWx1ZSkpKTsKICAgICAgICAgZW5jb2RlKHN0YXRpY19jYXN0PHR5
cGVuYW1lIHN0ZDo6dW5kZXJseWluZ190eXBlPEU+Ojp0eXBlPih2YWx1ZSkpOwogICAgIH0KIAog
ICAgIHZvaWQgZW5jb2RlSGVhZGVyKCk7CiAKLSAgICBTdHJpbmdSZWZlcmVuY2UgbV9tZXNzYWdl
UmVjZWl2ZXJOYW1lOwotICAgIFN0cmluZ1JlZmVyZW5jZSBtX21lc3NhZ2VOYW1lOworICAgIE1l
c3NhZ2VOYW1lIG1fbWVzc2FnZU5hbWU7CiAgICAgdWludDY0X3QgbV9kZXN0aW5hdGlvbklEOwog
CiAgICAgdWludDhfdCBtX2lubGluZUJ1ZmZlcls1MTJdOwpJbmRleDogU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaAkocmV2aXNpb24gMjYwNzY0KQorKysgU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
NzYsNyArMTc2LDcgQEAgdm9pZCBoYW5kbGVNZXNzYWdlQXN5bmMoQ29ubmVjdGlvbiYgY29ubgog
ICAgIH0KIAogICAgIHR5cGVuYW1lIFQ6OkFzeW5jUmVwbHkgY29tcGxldGlvbkhhbmRsZXIgPSBb
bGlzdGVuZXJJRCA9ICpsaXN0ZW5lcklELCBjb25uZWN0aW9uID0gbWFrZVJlZihjb25uZWN0aW9u
KV0gKGF1dG8mJi4uLiBhcmdzKSBtdXRhYmxlIHsKLSAgICAgICAgYXV0byBlbmNvZGVyID0gbWFr
ZVVuaXF1ZTxFbmNvZGVyPigiQXN5bmNSZXBseSIsIFQ6OmFzeW5jTWVzc2FnZVJlcGx5TmFtZSgp
LCAwKTsKKyAgICAgICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNvZGVyPihUOjphc3lu
Y01lc3NhZ2VSZXBseU5hbWUoKSwgMCk7CiAgICAgICAgICplbmNvZGVyIDw8IGxpc3RlbmVySUQ7
CiAgICAgICAgIFQ6OnNlbmQoV1RGTW92ZShlbmNvZGVyKSwgV1RGTW92ZShjb25uZWN0aW9uKSwg
YXJncy4uLik7CiAgICAgfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3Nh
Z2VSZWNlaXZlck1hcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvTWVzc2FnZVJlY2VpdmVyTWFwLmNwcAkocmV2aXNpb24gMjYwNzY0KQorKysgU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVyTWFwLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzksMzkgKzM5LDM5IEBAIE1lc3NhZ2VSZWNlaXZlck1hcDo6fk1lc3NhZ2VSZWNlaXZlck1h
cCgKIHsKIH0KIAotdm9pZCBNZXNzYWdlUmVjZWl2ZXJNYXA6OmFkZE1lc3NhZ2VSZWNlaXZlcihT
dHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgTWVzc2FnZVJlY2VpdmVyJiBtZXNz
YWdlUmVjZWl2ZXIpCit2b2lkIE1lc3NhZ2VSZWNlaXZlck1hcDo6YWRkTWVzc2FnZVJlY2VpdmVy
KFJlY2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBNZXNzYWdlUmVjZWl2ZXImIG1lc3Nh
Z2VSZWNlaXZlcikKIHsKLSAgICBBU1NFUlQoIW1fZ2xvYmFsTWVzc2FnZVJlY2VpdmVycy5jb250
YWlucyhtZXNzYWdlUmVjZWl2ZXJOYW1lKSk7CisgICAgQVNTRVJUKCFtX2dsb2JhbE1lc3NhZ2VS
ZWNlaXZlcnMuY29udGFpbnMoc3RhdGljX2Nhc3Q8dWludDhfdD4obWVzc2FnZVJlY2VpdmVyTmFt
ZSkpKTsKIAogICAgIG1lc3NhZ2VSZWNlaXZlci53aWxsQmVBZGRlZFRvTWVzc2FnZVJlY2VpdmVy
TWFwKCk7Ci0gICAgbV9nbG9iYWxNZXNzYWdlUmVjZWl2ZXJzLnNldChtZXNzYWdlUmVjZWl2ZXJO
YW1lLCAmbWVzc2FnZVJlY2VpdmVyKTsKKyAgICBtX2dsb2JhbE1lc3NhZ2VSZWNlaXZlcnMuc2V0
KHN0YXRpY19jYXN0PHVpbnQ4X3Q+KG1lc3NhZ2VSZWNlaXZlck5hbWUpLCAmbWVzc2FnZVJlY2Vp
dmVyKTsKIH0KIAotdm9pZCBNZXNzYWdlUmVjZWl2ZXJNYXA6OmFkZE1lc3NhZ2VSZWNlaXZlcihT
dHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25J
RCwgTWVzc2FnZVJlY2VpdmVyJiBtZXNzYWdlUmVjZWl2ZXIpCit2b2lkIE1lc3NhZ2VSZWNlaXZl
ck1hcDo6YWRkTWVzc2FnZVJlY2VpdmVyKFJlY2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1l
LCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBNZXNzYWdlUmVjZWl2ZXImIG1lc3NhZ2VSZWNlaXZl
cikKIHsKICAgICBBU1NFUlQoZGVzdGluYXRpb25JRCk7Ci0gICAgQVNTRVJUKCFtX21lc3NhZ2VS
ZWNlaXZlcnMuY29udGFpbnMoc3RkOjptYWtlX3BhaXIobWVzc2FnZVJlY2VpdmVyTmFtZSwgZGVz
dGluYXRpb25JRCkpKTsKLSAgICBBU1NFUlQoIW1fZ2xvYmFsTWVzc2FnZVJlY2VpdmVycy5jb250
YWlucyhtZXNzYWdlUmVjZWl2ZXJOYW1lKSk7CisgICAgQVNTRVJUKCFtX21lc3NhZ2VSZWNlaXZl
cnMuY29udGFpbnMoc3RkOjptYWtlX3BhaXIoc3RhdGljX2Nhc3Q8dWludDhfdD4obWVzc2FnZVJl
Y2VpdmVyTmFtZSksIGRlc3RpbmF0aW9uSUQpKSk7CisgICAgQVNTRVJUKCFtX2dsb2JhbE1lc3Nh
Z2VSZWNlaXZlcnMuY29udGFpbnMoc3RhdGljX2Nhc3Q8dWludDhfdD4obWVzc2FnZVJlY2VpdmVy
TmFtZSkpKTsKIAogICAgIG1lc3NhZ2VSZWNlaXZlci53aWxsQmVBZGRlZFRvTWVzc2FnZVJlY2Vp
dmVyTWFwKCk7Ci0gICAgbV9tZXNzYWdlUmVjZWl2ZXJzLnNldChzdGQ6Om1ha2VfcGFpcihtZXNz
YWdlUmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklEKSwgJm1lc3NhZ2VSZWNlaXZlcik7CisgICAg
bV9tZXNzYWdlUmVjZWl2ZXJzLnNldChzdGQ6Om1ha2VfcGFpcihzdGF0aWNfY2FzdDx1aW50OF90
PihtZXNzYWdlUmVjZWl2ZXJOYW1lKSwgZGVzdGluYXRpb25JRCksICZtZXNzYWdlUmVjZWl2ZXIp
OwogfQogCi12b2lkIE1lc3NhZ2VSZWNlaXZlck1hcDo6cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKFN0
cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lKQordm9pZCBNZXNzYWdlUmVjZWl2ZXJN
YXA6OnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihSZWNlaXZlck5hbWUgbWVzc2FnZVJlY2VpdmVyTmFt
ZSkKIHsKLSAgICBBU1NFUlQobV9nbG9iYWxNZXNzYWdlUmVjZWl2ZXJzLmNvbnRhaW5zKG1lc3Nh
Z2VSZWNlaXZlck5hbWUpKTsKKyAgICBBU1NFUlQobV9nbG9iYWxNZXNzYWdlUmVjZWl2ZXJzLmNv
bnRhaW5zKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KG1lc3NhZ2VSZWNlaXZlck5hbWUpKSk7CiAKLSAg
ICBhdXRvIGl0ID0gbV9nbG9iYWxNZXNzYWdlUmVjZWl2ZXJzLmZpbmQobWVzc2FnZVJlY2VpdmVy
TmFtZSk7CisgICAgYXV0byBpdCA9IG1fZ2xvYmFsTWVzc2FnZVJlY2VpdmVycy5maW5kKHN0YXRp
Y19jYXN0PHVpbnQ4X3Q+KG1lc3NhZ2VSZWNlaXZlck5hbWUpKTsKICAgICBpdC0+dmFsdWUtPndp
bGxCZVJlbW92ZWRGcm9tTWVzc2FnZVJlY2VpdmVyTWFwKCk7CiAKICAgICBtX2dsb2JhbE1lc3Nh
Z2VSZWNlaXZlcnMucmVtb3ZlKGl0KTsKIH0KIAotdm9pZCBNZXNzYWdlUmVjZWl2ZXJNYXA6OnJl
bW92ZU1lc3NhZ2VSZWNlaXZlcihTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwg
dWludDY0X3QgZGVzdGluYXRpb25JRCkKK3ZvaWQgTWVzc2FnZVJlY2VpdmVyTWFwOjpyZW1vdmVN
ZXNzYWdlUmVjZWl2ZXIoUmVjZWl2ZXJOYW1lIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90
IGRlc3RpbmF0aW9uSUQpCiB7Ci0gICAgQVNTRVJUKG1fbWVzc2FnZVJlY2VpdmVycy5jb250YWlu
cyhzdGQ6Om1ha2VfcGFpcihtZXNzYWdlUmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklEKSkpOwor
ICAgIEFTU0VSVChtX21lc3NhZ2VSZWNlaXZlcnMuY29udGFpbnMoc3RkOjptYWtlX3BhaXIoc3Rh
dGljX2Nhc3Q8dWludDhfdD4obWVzc2FnZVJlY2VpdmVyTmFtZSksIGRlc3RpbmF0aW9uSUQpKSk7
CiAKLSAgICBhdXRvIGl0ID0gbV9tZXNzYWdlUmVjZWl2ZXJzLmZpbmQoc3RkOjptYWtlX3BhaXIo
bWVzc2FnZVJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRCkpOworICAgIGF1dG8gaXQgPSBtX21l
c3NhZ2VSZWNlaXZlcnMuZmluZChzdGQ6Om1ha2VfcGFpcihzdGF0aWNfY2FzdDx1aW50OF90Piht
ZXNzYWdlUmVjZWl2ZXJOYW1lKSwgZGVzdGluYXRpb25JRCkpOwogICAgIGl0LT52YWx1ZS0+d2ls
bEJlUmVtb3ZlZEZyb21NZXNzYWdlUmVjZWl2ZXJNYXAoKTsKIAogICAgIG1fbWVzc2FnZVJlY2Vp
dmVycy5yZW1vdmUoaXQpOwpAQCAtNzksMjMgKzc5LDIzIEBAIHZvaWQgTWVzc2FnZVJlY2VpdmVy
TWFwOjpyZW1vdmVNZXNzYWdlUmUKIAogdm9pZCBNZXNzYWdlUmVjZWl2ZXJNYXA6OnJlbW92ZU1l
c3NhZ2VSZWNlaXZlcihNZXNzYWdlUmVjZWl2ZXImIG1lc3NhZ2VSZWNlaXZlcikKIHsKLSAgICBW
ZWN0b3I8U3RyaW5nUmVmZXJlbmNlPiBnbG9iYWxSZWNlaXZlcnNUb1JlbW92ZTsKKyAgICBWZWN0
b3I8UmVjZWl2ZXJOYW1lPiBnbG9iYWxSZWNlaXZlcnNUb1JlbW92ZTsKICAgICBmb3IgKGF1dG8m
IFtuYW1lLCByZWNlaXZlcl0gOiBtX2dsb2JhbE1lc3NhZ2VSZWNlaXZlcnMpIHsKICAgICAgICAg
aWYgKHJlY2VpdmVyID09ICZtZXNzYWdlUmVjZWl2ZXIpCi0gICAgICAgICAgICBnbG9iYWxSZWNl
aXZlcnNUb1JlbW92ZS5hcHBlbmQobmFtZSk7CisgICAgICAgICAgICBnbG9iYWxSZWNlaXZlcnNU
b1JlbW92ZS5hcHBlbmQoc3RhdGljX2Nhc3Q8UmVjZWl2ZXJOYW1lPihuYW1lKSk7CiAgICAgfQog
CiAgICAgZm9yIChhdXRvJiBnbG9iYWxSZWNlaXZlclRvUmVtb3ZlIDogZ2xvYmFsUmVjZWl2ZXJz
VG9SZW1vdmUpCiAgICAgICAgIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihnbG9iYWxSZWNlaXZlclRv
UmVtb3ZlKTsKIAotICAgIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nUmVmZXJlbmNlLCB1aW50NjRf
dD4+IHJlY2VpdmVyc1RvUmVtb3ZlOworICAgIFZlY3RvcjxzdGQ6OnBhaXI8dWludDhfdCwgdWlu
dDY0X3Q+PiByZWNlaXZlcnNUb1JlbW92ZTsKICAgICBmb3IgKGF1dG8mIFtuYW1lQW5kRGVzdGlu
YXRpb25JRCwgcmVjZWl2ZXJdIDogbV9tZXNzYWdlUmVjZWl2ZXJzKSB7CiAgICAgICAgIGlmIChy
ZWNlaXZlciA9PSAmbWVzc2FnZVJlY2VpdmVyKQotICAgICAgICAgICAgcmVjZWl2ZXJzVG9SZW1v
dmUuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKG5hbWVBbmREZXN0aW5hdGlvbklELmZpcnN0LCBuYW1l
QW5kRGVzdGluYXRpb25JRC5zZWNvbmQpKTsKKyAgICAgICAgICAgIHJlY2VpdmVyc1RvUmVtb3Zl
LmFwcGVuZChzdGQ6Om1ha2VfcGFpcihzdGF0aWNfY2FzdDx1aW50OF90PihuYW1lQW5kRGVzdGlu
YXRpb25JRC5maXJzdCksIG5hbWVBbmREZXN0aW5hdGlvbklELnNlY29uZCkpOwogICAgIH0KIAog
ICAgIGZvciAoYXV0byYgW25hbWUsIGRlc3RpbmF0aW9uSURdIDogcmVjZWl2ZXJzVG9SZW1vdmUp
Ci0gICAgICAgIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihuYW1lLCBkZXN0aW5hdGlvbklEKTsKKyAg
ICAgICAgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKHN0YXRpY19jYXN0PFJlY2VpdmVyTmFtZT4obmFt
ZSksIGRlc3RpbmF0aW9uSUQpOwogfQogCiB2b2lkIE1lc3NhZ2VSZWNlaXZlck1hcDo6aW52YWxp
ZGF0ZSgpCkBAIC0xMTIsMTQgKzExMiwxNCBAQCB2b2lkIE1lc3NhZ2VSZWNlaXZlck1hcDo6aW52
YWxpZGF0ZSgpCiAKIGJvb2wgTWVzc2FnZVJlY2VpdmVyTWFwOjpkaXNwYXRjaE1lc3NhZ2UoQ29u
bmVjdGlvbiYgY29ubmVjdGlvbiwgRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBpZiAoTWVzc2Fn
ZVJlY2VpdmVyKiBtZXNzYWdlUmVjZWl2ZXIgPSBtX2dsb2JhbE1lc3NhZ2VSZWNlaXZlcnMuZ2V0
KGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpKSkgeworICAgIGlmIChNZXNzYWdlUmVjZWl2
ZXIqIG1lc3NhZ2VSZWNlaXZlciA9IG1fZ2xvYmFsTWVzc2FnZVJlY2VpdmVycy5nZXQoc3RhdGlj
X2Nhc3Q8dWludDhfdD4oZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkpKSkgewogICAgICAg
ICBBU1NFUlQoIWRlY29kZXIuZGVzdGluYXRpb25JRCgpKTsKIAogICAgICAgICBtZXNzYWdlUmVj
ZWl2ZXItPmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBpZiAoTWVzc2FnZVJlY2VpdmVyKiBtZXNzYWdlUmVj
ZWl2ZXIgPSBtX21lc3NhZ2VSZWNlaXZlcnMuZ2V0KHN0ZDo6bWFrZV9wYWlyKGRlY29kZXIubWVz
c2FnZVJlY2VpdmVyTmFtZSgpLCBkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSkpKSB7CisgICAgaWYg
KE1lc3NhZ2VSZWNlaXZlciogbWVzc2FnZVJlY2VpdmVyID0gbV9tZXNzYWdlUmVjZWl2ZXJzLmdl
dChzdGQ6Om1ha2VfcGFpcihzdGF0aWNfY2FzdDx1aW50OF90PihkZWNvZGVyLm1lc3NhZ2VSZWNl
aXZlck5hbWUoKSksIGRlY29kZXIuZGVzdGluYXRpb25JRCgpKSkpIHsKICAgICAgICAgbWVzc2Fn
ZVJlY2VpdmVyLT5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMTI5LDE0ICsxMjksMTQgQEAgYm9vbCBNZXNzYWdl
UmVjZWl2ZXJNYXA6OmRpc3BhdGNoTWVzc2FnZQogCiBib29sIE1lc3NhZ2VSZWNlaXZlck1hcDo6
ZGlzcGF0Y2hTeW5jTWVzc2FnZShDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBEZWNvZGVyJiBkZWNv
ZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8RW5jb2Rlcj4mIHJlcGx5RW5jb2RlcikKIHsKLSAgICBpZiAo
TWVzc2FnZVJlY2VpdmVyKiBtZXNzYWdlUmVjZWl2ZXIgPSBtX2dsb2JhbE1lc3NhZ2VSZWNlaXZl
cnMuZ2V0KGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpKSkgeworICAgIGlmIChNZXNzYWdl
UmVjZWl2ZXIqIG1lc3NhZ2VSZWNlaXZlciA9IG1fZ2xvYmFsTWVzc2FnZVJlY2VpdmVycy5nZXQo
c3RhdGljX2Nhc3Q8dWludDhfdD4oZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkpKSkgewog
ICAgICAgICBBU1NFUlQoIWRlY29kZXIuZGVzdGluYXRpb25JRCgpKTsKIAogICAgICAgICBtZXNz
YWdlUmVjZWl2ZXItPmRpZFJlY2VpdmVTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCBy
ZXBseUVuY29kZXIpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBpZiAoTWVz
c2FnZVJlY2VpdmVyKiBtZXNzYWdlUmVjZWl2ZXIgPSBtX21lc3NhZ2VSZWNlaXZlcnMuZ2V0KHN0
ZDo6bWFrZV9wYWlyKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBkZWNvZGVyLmRlc3Rp
bmF0aW9uSUQoKSkpKSB7CisgICAgaWYgKE1lc3NhZ2VSZWNlaXZlciogbWVzc2FnZVJlY2VpdmVy
ID0gbV9tZXNzYWdlUmVjZWl2ZXJzLmdldChzdGQ6Om1ha2VfcGFpcihzdGF0aWNfY2FzdDx1aW50
OF90PihkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSksIGRlY29kZXIuZGVzdGluYXRpb25J
RCgpKSkpIHsKICAgICAgICAgbWVzc2FnZVJlY2VpdmVyLT5kaWRSZWNlaXZlU3luY01lc3NhZ2Uo
Y29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyKTsKICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgfQpJbmRleDogU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVy
TWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVJl
Y2VpdmVyTWFwLmgJKHJldmlzaW9uIDI2MDc2NCkKKysrIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL01lc3NhZ2VSZWNlaXZlck1hcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw4ICsyMyw3IEBA
CiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBNZXNz
YWdlUmVjZWl2ZXJNYXBfaAotI2RlZmluZSBNZXNzYWdlUmVjZWl2ZXJNYXBfaAorI3ByYWdtYSBv
bmNlCiAKICNpbmNsdWRlICJTdHJpbmdSZWZlcmVuY2UuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1h
cC5oPgpAQCAtMzYsMTcgKzM1LDE4IEBAIGNsYXNzIENvbm5lY3Rpb247CiBjbGFzcyBFbmNvZGVy
OwogY2xhc3MgRGVjb2RlcjsKIGNsYXNzIE1lc3NhZ2VSZWNlaXZlcjsKK2VudW0gY2xhc3MgUmVj
ZWl2ZXJOYW1lIDogdWludDhfdDsKIAogY2xhc3MgTWVzc2FnZVJlY2VpdmVyTWFwIHsKIHB1Ymxp
YzoKICAgICBNZXNzYWdlUmVjZWl2ZXJNYXAoKTsKICAgICB+TWVzc2FnZVJlY2VpdmVyTWFwKCk7
CiAKLSAgICB2b2lkIGFkZE1lc3NhZ2VSZWNlaXZlcihTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJl
Y2VpdmVyTmFtZSwgTWVzc2FnZVJlY2VpdmVyJik7Ci0gICAgdm9pZCBhZGRNZXNzYWdlUmVjZWl2
ZXIoU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0
aW9uSUQsIE1lc3NhZ2VSZWNlaXZlciYpOworICAgIHZvaWQgYWRkTWVzc2FnZVJlY2VpdmVyKFJl
Y2VpdmVyTmFtZSwgTWVzc2FnZVJlY2VpdmVyJik7CisgICAgdm9pZCBhZGRNZXNzYWdlUmVjZWl2
ZXIoUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBNZXNzYWdlUmVjZWl2ZXIm
KTsKIAotICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKFN0cmluZ1JlZmVyZW5jZSBtZXNz
YWdlUmVjZWl2ZXJOYW1lKTsKLSAgICB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihTdHJpbmdS
ZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCk7Cisg
ICAgdm9pZCByZW1vdmVNZXNzYWdlUmVjZWl2ZXIoUmVjZWl2ZXJOYW1lKTsKKyAgICB2b2lkIHJl
bW92ZU1lc3NhZ2VSZWNlaXZlcihSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQp
OwogICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VSZWNlaXZlciYpOwogCiAg
ICAgdm9pZCBpbnZhbGlkYXRlKCk7CkBAIC01NiwxMSArNTYsOSBAQCBwdWJsaWM6CiAKIHByaXZh
dGU6CiAgICAgLy8gTWVzc2FnZSByZWNlaXZlcnMgdGhhdCBkb24ndCByZXF1aXJlIGEgZGVzdGlu
YXRpb24gSUQuCi0gICAgSGFzaE1hcDxTdHJpbmdSZWZlcmVuY2UsIE1lc3NhZ2VSZWNlaXZlcio+
IG1fZ2xvYmFsTWVzc2FnZVJlY2VpdmVyczsKKyAgICBIYXNoTWFwPHVpbnQ4X3QsIE1lc3NhZ2VS
ZWNlaXZlcio+IG1fZ2xvYmFsTWVzc2FnZVJlY2VpdmVyczsKIAotICAgIEhhc2hNYXA8c3RkOjpw
YWlyPFN0cmluZ1JlZmVyZW5jZSwgdWludDY0X3Q+LCBNZXNzYWdlUmVjZWl2ZXIqPiBtX21lc3Nh
Z2VSZWNlaXZlcnM7CisgICAgSGFzaE1hcDxzdGQ6OnBhaXI8dWludDhfdCwgdWludDY0X3Q+LCBN
ZXNzYWdlUmVjZWl2ZXIqPiBtX21lc3NhZ2VSZWNlaXZlcnM7CiB9OwogCiB9OwotCi0jZW5kaWYg
Ly8gTWVzc2FnZVJlY2VpdmVyTWFwX2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L01lc3NhZ2VTZW5kZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9NZXNzYWdlU2VuZGVyLmgJKHJldmlzaW9uIDI2MDc2NCkKKysrIFNvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL01lc3NhZ2VTZW5kZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNyBA
QCBwdWJsaWM6CiAgICAgewogICAgICAgICBzdGF0aWNfYXNzZXJ0KCFVOjppc1N5bmMsICJNZXNz
YWdlIGlzIHN5bmMhIik7CiAKLSAgICAgICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNv
ZGVyPihVOjpyZWNlaXZlck5hbWUoKSwgVTo6bmFtZSgpLCBkZXN0aW5hdGlvbklEKTsKKyAgICAg
ICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNvZGVyPihVOjpuYW1lKCksIGRlc3RpbmF0
aW9uSUQpOwogICAgICAgICBlbmNvZGVyLT5lbmNvZGUobWVzc2FnZS5hcmd1bWVudHMoKSk7CiAg
ICAgICAgIAogICAgICAgICByZXR1cm4gc2VuZE1lc3NhZ2UoV1RGTW92ZShlbmNvZGVyKSwgc2Vu
ZE9wdGlvbnMpOwpAQCAtODgsNyArODgsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBDT01Q
SUxFX0FTU0VSVCghVDo6aXNTeW5jLCBBc3luY01lc3NhZ2VFeHBlY3RlZCk7CiAKLSAgICAgICAg
YXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZTxJUEM6OkVuY29kZXI+KFQ6OnJlY2VpdmVyTmFtZSgp
LCBUOjpuYW1lKCksIGRlc3RpbmF0aW9uSUQpOworICAgICAgICBhdXRvIGVuY29kZXIgPSBtYWtl
VW5pcXVlPElQQzo6RW5jb2Rlcj4oVDo6bmFtZSgpLCBkZXN0aW5hdGlvbklEKTsKICAgICAgICAg
dWludDY0X3QgbGlzdGVuZXJJRCA9IElQQzo6bmV4dEFzeW5jUmVwbHlIYW5kbGVySUQoKTsKICAg
ICAgICAgZW5jb2Rlci0+ZW5jb2RlKGxpc3RlbmVySUQpOwogICAgICAgICBlbmNvZGVyLT5lbmNv
ZGUobWVzc2FnZS5hcmd1bWVudHMoKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9jb2NvYS9Db25uZWN0aW9uQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvY29jb2EvQ29ubmVjdGlvbkNvY29hLm1tCShyZXZpc2lvbiAyNjA3NjQpCisr
KyBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9Db25uZWN0aW9uQ29jb2EubW0JKHdv
cmtpbmcgY29weSkKQEAgLTIxNCw3ICsyMTQsNyBAQCBib29sIENvbm5lY3Rpb246Om9wZW4oKQog
ICAgICAgICBtX2lzQ29ubmVjdGVkID0gdHJ1ZTsKICAgICAgICAgCiAgICAgICAgIC8vIFNlbmQg
dGhlIGluaXRpYWxpemUgbWVzc2FnZSwgd2hpY2ggY29udGFpbnMgYSBzZW5kIHJpZ2h0IGZvciB0
aGUgc2VydmVyIHRvIHVzZS4KLSAgICAgICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNv
ZGVyPigiSVBDIiwgIkluaXRpYWxpemVDb25uZWN0aW9uIiwgMCk7CisgICAgICAgIGF1dG8gZW5j
b2RlciA9IG1ha2VVbmlxdWU8RW5jb2Rlcj4oTWVzc2FnZU5hbWU6OkluaXRpYWxpemVDb25uZWN0
aW9uLCAwKTsKICAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKE1hY2hQb3J0KG1fcmVjZWl2ZVBvcnQs
IE1BQ0hfTVNHX1RZUEVfTUFLRV9TRU5EKSk7CiAKICAgICAgICAgaW5pdGlhbGl6ZVNlbmRTb3Vy
Y2UoKTsKQEAgLTI3Myw3ICsyNzMsNyBAQCBib29sIENvbm5lY3Rpb246OnNlbmRNZXNzYWdlKHN0
ZDo6dW5pcXVlCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGRlZmF1bHQ6Ci0gICAgICAg
IENTdHJpbmcgbWVzc2FnZU5hbWUgPSBtYWtlU3RyaW5nKG1lc3NhZ2UtPm1lc3NhZ2VSZWNlaXZl
ck5hbWUoKS5kYXRhKCksICI6OiIsIG1lc3NhZ2UtPm1lc3NhZ2VOYW1lKCkuZGF0YSgpKS51dGY4
KCk7CisgICAgICAgIENTdHJpbmcgbWVzc2FnZU5hbWUoZGVzY3JpcHRpb24obWVzc2FnZS0+bWVz
c2FnZU5hbWUoKSkpOwogICAgICAgICBXZWJLaXQ6OnNldENyYXNoUmVwb3J0QXBwbGljYXRpb25T
cGVjaWZpY0luZm9ybWF0aW9uKChfX2JyaWRnZSBDRlN0cmluZ1JlZilbTlNTdHJpbmcgc3RyaW5n
V2l0aEZvcm1hdDpAIlVuaGFuZGxlZCBlcnJvciBjb2RlICV4LCBtZXNzYWdlICclcycsIGhhc2gg
JWQiLCBrciwgbWVzc2FnZU5hbWUuZGF0YSgpLCBtZXNzYWdlTmFtZS5oYXNoKCldKTsKICAgICAg
ICAgQ1JBU0hfV0lUSF9JTkZPKGtyLCBtZXNzYWdlTmFtZS5oYXNoKCkpOwogICAgIH0KQEAgLTMw
OCw3ICszMDgsNyBAQCBib29sIENvbm5lY3Rpb246OnNlbmRPdXRnb2luZ01lc3NhZ2Uoc3RkCiAg
ICAgfQogCiAgICAgc2l6ZV90IHNhZmVNZXNzYWdlU2l6ZSA9IG1lc3NhZ2VTaXplLnVuc2FmZUdl
dCgpOwotICAgIGF1dG8gbWVzc2FnZSA9IE1hY2hNZXNzYWdlOjpjcmVhdGUoZW5jb2Rlci0+bWVz
c2FnZVJlY2VpdmVyTmFtZSgpLnRvU3RyaW5nKCksIGVuY29kZXItPm1lc3NhZ2VOYW1lKCkudG9T
dHJpbmcoKSwgc2FmZU1lc3NhZ2VTaXplKTsKKyAgICBhdXRvIG1lc3NhZ2UgPSBNYWNoTWVzc2Fn
ZTo6Y3JlYXRlKGVuY29kZXItPm1lc3NhZ2VOYW1lKCksIHNhZmVNZXNzYWdlU2l6ZSk7CiAgICAg
aWYgKCFtZXNzYWdlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTUzMiw3ICs1MzIsNyBA
QCB2b2lkIENvbm5lY3Rpb246OnJlY2VpdmVTb3VyY2VFdmVudEhhbmRsCiAgICAgZGVjb2Rlci0+
c2V0SW1wb3J0YW5jZUFzc2VydGlvbihtYWtlVW5pcXVlPEltcG9ydGFuY2VBc3NlcnRpb24+KGhl
YWRlcikpOwogI2VuZGlmCiAKLSAgICBpZiAoZGVjb2Rlci0+bWVzc2FnZVJlY2VpdmVyTmFtZSgp
ID09ICJJUEMiICYmIGRlY29kZXItPm1lc3NhZ2VOYW1lKCkgPT0gIkluaXRpYWxpemVDb25uZWN0
aW9uIikgeworICAgIGlmIChkZWNvZGVyLT5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VOYW1lOjpJ
bml0aWFsaXplQ29ubmVjdGlvbikgewogICAgICAgICBBU1NFUlQobV9pc1NlcnZlcik7CiAgICAg
ICAgIEFTU0VSVCghbV9pc0Nvbm5lY3RlZCk7CiAgICAgICAgIEFTU0VSVCghbV9zZW5kUG9ydCk7
CkBAIC01NzAsMzAgKzU3MCw2IEBAIHZvaWQgQ29ubmVjdGlvbjo6cmVjZWl2ZVNvdXJjZUV2ZW50
SGFuZGwKICAgICAgICAgCiAgICAgICAgIHJldHVybjsKICAgICB9Ci0KLSNpZiAhUExBVEZPUk0o
SU9TX0ZBTUlMWSkKLSAgICBpZiAoZGVjb2Rlci0+bWVzc2FnZVJlY2VpdmVyTmFtZSgpID09ICJJ
UEMiICYmIGRlY29kZXItPm1lc3NhZ2VOYW1lKCkgPT0gIlNldEV4Y2VwdGlvblBvcnQiKSB7Ci0g
ICAgICAgIGlmIChtX2lzU2VydmVyKSB7Ci0gICAgICAgICAgICAvLyBTZXJ2ZXIgY29ubmVjdGlv
bnMgYXJlbid0IHN1cHBvc2VkIHRvIGhhdmUgdGhlaXIgZXhjZXB0aW9uIHBvcnRzIG92ZXJyaWRk
ZW4uIFRyZWF0IHRoaXMgYXMgYW4gaW52YWxpZCBtZXNzYWdlLgotICAgICAgICAgICAgU3RyaW5n
UmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWVSZWZlcmVuY2UgPSBkZWNvZGVyLT5tZXNzYWdl
UmVjZWl2ZXJOYW1lKCk7Ci0gICAgICAgICAgICBTdHJpbmcgbWVzc2FnZVJlY2VpdmVyTmFtZShT
dHJpbmcobWVzc2FnZVJlY2VpdmVyTmFtZVJlZmVyZW5jZS5kYXRhKCksIG1lc3NhZ2VSZWNlaXZl
ck5hbWVSZWZlcmVuY2Uuc2l6ZSgpKSk7Ci0gICAgICAgICAgICBTdHJpbmdSZWZlcmVuY2UgbWVz
c2FnZU5hbWVSZWZlcmVuY2UgPSBkZWNvZGVyLT5tZXNzYWdlTmFtZSgpOwotICAgICAgICAgICAg
U3RyaW5nIG1lc3NhZ2VOYW1lKFN0cmluZyhtZXNzYWdlTmFtZVJlZmVyZW5jZS5kYXRhKCksIG1l
c3NhZ2VOYW1lUmVmZXJlbmNlLnNpemUoKSkpOwotCi0gICAgICAgICAgICBSdW5Mb29wOjptYWlu
KCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgbWVzc2FnZVJlY2Vp
dmVyTmFtZSA9IFdURk1vdmUobWVzc2FnZVJlY2VpdmVyTmFtZSksIG1lc3NhZ2VOYW1lID0gV1RG
TW92ZShtZXNzYWdlTmFtZSldKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICAgICAgcHJvdGVjdGVk
VGhpcy0+ZGlzcGF0Y2hEaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UobWVzc2FnZVJlY2VpdmVyTmFt
ZS51dGY4KCksIG1lc3NhZ2VOYW1lLnV0ZjgoKSk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBNYWNoUG9ydCBleGNlcHRpb25Qb3J0Owot
ICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZShleGNlcHRpb25Qb3J0KSkKLSAgICAgICAgICAg
IHJldHVybjsKLQotICAgICAgICBzZXRNYWNoRXhjZXB0aW9uUG9ydChleGNlcHRpb25Qb3J0LnBv
cnQoKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYKLQogICAgIHByb2Nlc3NJbmNv
bWluZ01lc3NhZ2UoV1RGTW92ZShkZWNvZGVyKSk7CiB9ICAgIAogCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9NYWNoTWVzc2FnZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvTWFjaE1lc3NhZ2UuY3BwCShyZXZpc2lvbiAy
NjA3NjQpCisrKyBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9NYWNoTWVzc2FnZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDE4ICszOSwxNyBAQCBzdGF0aWMgaW5saW5lIENoZWNr
ZWRTaXplIHNhZmVSb3VuZE1zZyhDCiAgICAgcmV0dXJuICgodmFsdWUgKyAoYWxpZ25tZW50IC0g
MSkpIC8gYWxpZ25tZW50KSAqIGFsaWdubWVudDsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPE1hY2hN
ZXNzYWdlPiBNYWNoTWVzc2FnZTo6Y3JlYXRlKENTdHJpbmcmJiBtZXNzYWdlUmVjZWl2ZXJOYW1l
LCBDU3RyaW5nJiYgbWVzc2FnZU5hbWUsIHNpemVfdCBzaXplKQorc3RkOjp1bmlxdWVfcHRyPE1h
Y2hNZXNzYWdlPiBNYWNoTWVzc2FnZTo6Y3JlYXRlKE1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lLCBz
aXplX3Qgc2l6ZSkKIHsKICAgICBhdXRvIGJ1ZmZlclNpemUgPSBDaGVja2VkU2l6ZShzaXplb2Yo
TWFjaE1lc3NhZ2UpKSArIHNpemU7CiAgICAgaWYgKGJ1ZmZlclNpemUuaGFzT3ZlcmZsb3dlZCgp
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB2b2lkKiBtZW1vcnkgPSBXVEY6OmZhc3Ra
ZXJvZWRNYWxsb2MoYnVmZmVyU2l6ZS51bnNhZmVHZXQoKSk7Ci0gICAgcmV0dXJuIHN0ZDo6dW5p
cXVlX3B0cjxNYWNoTWVzc2FnZT4geyBuZXcgKE5vdE51bGwsIG1lbW9yeSkgTWFjaE1lc3NhZ2Ug
eyBXVEZNb3ZlKG1lc3NhZ2VSZWNlaXZlck5hbWUpLCBXVEZNb3ZlKG1lc3NhZ2VOYW1lKSwgc2l6
ZSB9IH07CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxNYWNoTWVzc2FnZT4geyBuZXcgKE5v
dE51bGwsIG1lbW9yeSkgTWFjaE1lc3NhZ2UgeyBtZXNzYWdlTmFtZSwgc2l6ZSB9IH07CiB9CiAK
LU1hY2hNZXNzYWdlOjpNYWNoTWVzc2FnZShDU3RyaW5nJiYgbWVzc2FnZVJlY2VpdmVyTmFtZSwg
Q1N0cmluZyYmIG1lc3NhZ2VOYW1lLCBzaXplX3Qgc2l6ZSkKLSAgICA6IG1fbWVzc2FnZVJlY2Vp
dmVyTmFtZShXVEZNb3ZlKG1lc3NhZ2VSZWNlaXZlck5hbWUpKQotICAgICwgbV9tZXNzYWdlTmFt
ZShXVEZNb3ZlKG1lc3NhZ2VOYW1lKSkKK01hY2hNZXNzYWdlOjpNYWNoTWVzc2FnZShNZXNzYWdl
TmFtZSBtZXNzYWdlTmFtZSwgc2l6ZV90IHNpemUpCisgICAgOiBtX21lc3NhZ2VOYW1lIHsgbWVz
c2FnZU5hbWUgfQogICAgICwgbV9zaXplIHsgc2l6ZSB9CiB7CiB9CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9NYWNoTWVzc2FnZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL01hY2hNZXNzYWdlLmgJKHJldmlzaW9uIDI2MDc2
NCkKKysrIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL01hY2hNZXNzYWdlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogCisj
aW5jbHVkZSAiTWVzc2FnZU5hbWVzLmgiCiAjaW5jbHVkZSA8bWFjaC9tZXNzYWdlLmg+CiAjaW5j
bHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgpAQCAtMzcs
NyArMzgsNyBAQCBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIE1hY2hNZXNzYWdlIHsKICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRy
PE1hY2hNZXNzYWdlPiBjcmVhdGUoQ1N0cmluZyYmIG1lc3NhZ2VSZWNlaXZlck5hbWUsIENTdHJp
bmcmJiBtZXNzYWdlTmFtZSwgc2l6ZV90KTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPE1h
Y2hNZXNzYWdlPiBjcmVhdGUoTWVzc2FnZU5hbWUsIHNpemVfdCk7CiAgICAgfk1hY2hNZXNzYWdl
KCk7CiAKICAgICBzdGF0aWMgQ2hlY2tlZFNpemUgbWVzc2FnZVNpemUoc2l6ZV90IGJvZHlTaXpl
LCBzaXplX3QgcG9ydERlc2NyaXB0b3JDb3VudCwgc2l6ZV90IG1lbW9yeURlc2NyaXB0b3JDb3Vu
dCk7CkBAIC00NywxNCArNDgsMTMgQEAgcHVibGljOgogCiAgICAgdm9pZCBsZWFrRGVzY3JpcHRv
cnMoKTsKIAotICAgIGNvbnN0IENTdHJpbmcmIG1lc3NhZ2VSZWNlaXZlck5hbWUoKSBjb25zdCB7
IHJldHVybiBtX21lc3NhZ2VSZWNlaXZlck5hbWU7IH0KLSAgICBjb25zdCBDU3RyaW5nJiBtZXNz
YWdlTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWVzc2FnZU5hbWU7IH0KKyAgICBSZWNlaXZlck5h
bWUgbWVzc2FnZVJlY2VpdmVyTmFtZSgpIGNvbnN0IHsgcmV0dXJuIHJlY2VpdmVyTmFtZShtX21l
c3NhZ2VOYW1lKTsgfQorICAgIE1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lKCkgY29uc3QgeyByZXR1
cm4gbV9tZXNzYWdlTmFtZTsgfQogCiBwcml2YXRlOgotICAgIE1hY2hNZXNzYWdlKENTdHJpbmcm
JiBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBDU3RyaW5nJiYgbWVzc2FnZU5hbWUsIHNpemVfdCk7Cisg
ICAgTWFjaE1lc3NhZ2UoTWVzc2FnZU5hbWUsIHNpemVfdCk7CiAKLSAgICBDU3RyaW5nIG1fbWVz
c2FnZVJlY2VpdmVyTmFtZTsKLSAgICBDU3RyaW5nIG1fbWVzc2FnZU5hbWU7CisgICAgTWVzc2Fn
ZU5hbWUgbV9tZXNzYWdlTmFtZTsKICAgICBzaXplX3QgbV9zaXplOwogICAgIGJvb2wgbV9zaG91
bGRGcmVlRGVzY3JpcHRvcnMgeyB0cnVlIH07CiAgICAgbWFjaF9tc2dfaGVhZGVyX3QgbV9tZXNz
YWdlSGVhZGVyW107CkluZGV4OiBTb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vz
c0Nvbm5lY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vz
cy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5jcHAJKHJldmlzaW9uIDI2MDc2NCkKKysrIFNvdXJjZS9X
ZWJLaXQvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTIwNSw3ICsyMDUsNyBAQCB2b2lkIFdlYlByb2Nlc3NDb25uZWN0aW9uOjpkZXN0cm95
UGx1Z2luCiAgICAgZGVzdHJveVBsdWdpbkNvbnRyb2xsZXJQcm94eShwbHVnaW5Db250cm9sbGVy
UHJveHkpOwogfQogCi12b2lkIFdlYlByb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlSW52YWxp
ZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpTdHJpbmdSZWZlcmVuY2UsIElQQzo6U3Ry
aW5nUmVmZXJlbmNlKQordm9pZCBXZWJQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZUludmFs
aWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZU5hbWUpCiB7CiAgICAgLy8g
RklYTUU6IEltcGxlbWVudC4KIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9X
ZWJQcm9jZXNzQ29ubmVjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUGx1Z2lu
UHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5oCShyZXZpc2lvbiAyNjA3NjQpCisrKyBTb3Vy
Y2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uaAkod29ya2luZyBj
b3B5KQpAQCAtNjQsNyArNjQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBk
aWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3Rk
Ojp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZENsb3Nl
KElQQzo6Q29ubmVjdGlvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNl
aXZlck5hbWUsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lKSBvdmVycmlkZTsKKyAg
ICB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1l
c3NhZ2VOYW1lKSBvdmVycmlkZTsKIAogICAgIC8vIE1lc3NhZ2UgaGFuZGxlcnMuCiAgICAgdm9p
ZCBkaWRSZWNlaXZlV2ViUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYs
IElQQzo6RGVjb2RlciYpOwpJbmRleDogU291cmNlL1dlYktpdC9TY3JpcHRzL01ha2VmaWxlCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy9NYWtlZmlsZQkocmV2aXNpb24gMjYw
NzY0KQorKysgU291cmNlL1dlYktpdC9TY3JpcHRzL01ha2VmaWxlCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsMiBAQAogYWxsOgotCXB5dGhvbiAuL2dlbmVyYXRlLW1lc3NhZ2UtcmVjZWl2ZXIu
cHkgd2Via2l0L3Rlc3Qtc3VwZXJjbGFzcy1tZXNzYWdlcy5pbiAtLWltcGxlbWVudGF0aW9uIHdl
YmtpdC9NZXNzYWdlUmVjZWl2ZXJTdXBlcmNsYXNzLWV4cGVjdGVkLmNwcCAtLWhlYWRlciB3ZWJr
aXQvTWVzc2FnZXNTdXBlcmNsYXNzLWV4cGVjdGVkLmggLS1yZXBseS1oZWFkZXIgd2Via2l0L01l
c3NhZ2VzUmVwbGllc1N1cGVyY2xhc3NSZXBsaWVzLWV4cGVjdGVkLmgKLQlweXRob24gLi9nZW5l
cmF0ZS1tZXNzYWdlLXJlY2VpdmVyLnB5IHdlYmtpdC90ZXN0LWxlZ2FjeS1tZXNzYWdlcy5pbiAt
LWltcGxlbWVudGF0aW9uIHdlYmtpdC9MZWdhY3lNZXNzYWdlUmVjZWl2ZXItZXhwZWN0ZWQuY3Bw
IC0taGVhZGVyIHdlYmtpdC9MZWdhY3lNZXNzYWdlcy1leHBlY3RlZC5oIC0tcmVwbHktaGVhZGVy
IHdlYmtpdC9MZWdhY3lNZXNzYWdlc1JlcGxpZXMtZXhwZWN0ZWQuaAotCXB5dGhvbiAuL2dlbmVy
YXRlLW1lc3NhZ2UtcmVjZWl2ZXIucHkgd2Via2l0L3Rlc3QtbWVzc2FnZXMuaW4gLS1pbXBsZW1l
bnRhdGlvbiB3ZWJraXQvTWVzc2FnZVJlY2VpdmVyLWV4cGVjdGVkLmNwcCAtLWhlYWRlciB3ZWJr
aXQvTWVzc2FnZXMtZXhwZWN0ZWQuaCAtLXJlcGx5LWhlYWRlciB3ZWJraXQvTWVzc2FnZXNSZXBs
aWVzLWV4cGVjdGVkLmgKLQorCWNkIHdlYmtpdCAmJiBweXRob24gLi4vZ2VuZXJhdGUtbWVzc2Fn
ZS1yZWNlaXZlci5weSB0ZXN0LXN1cGVyY2xhc3MgdGVzdC1sZWdhY3kgdGVzdCAmJiBjZCAuLgpJ
bmRleDogU291cmNlL1dlYktpdC9TY3JpcHRzL2dlbmVyYXRlLW1lc3NhZ2UtcmVjZWl2ZXIucHkK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TY3JpcHRzL2dlbmVyYXRlLW1lc3NhZ2UtcmVj
ZWl2ZXIucHkJKHJldmlzaW9uIDI2MDc2NCkKKysrIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy9nZW5l
cmF0ZS1tZXNzYWdlLXJlY2VpdmVyLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yMywzMyArMjMsNDIg
QEAKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KIAogZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCB3aXRoX3N0YXRlbWVu
dAotaW1wb3J0IGFyZ3BhcnNlCiBpbXBvcnQgc3lzCiAKIGltcG9ydCB3ZWJraXQubWVzc2FnZXMK
IGltcG9ydCB3ZWJraXQucGFyc2VyCiAKIAotZGVmIG1haW4oYXJndj1Ob25lKToKLSAgICBwYXJz
ZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcigpCi0gICAgcGFyc2VyLmFkZF9hcmd1bWVudCgn
c291cmNlJykKLSAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLWltcGxlbWVudGF0aW9uJywgcmVx
dWlyZWQ9VHJ1ZSkKLSAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLWhlYWRlcicsIHJlcXVpcmVk
PVRydWUpCi0gICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1yZXBseS1oZWFkZXInLCByZXF1aXJl
ZD1UcnVlKQotCi0gICAgYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKCkKLQotICAgIHdpdGggb3Bl
bihhcmdzLnNvdXJjZSkgYXMgc291cmNlX2ZpbGU6Ci0gICAgICAgIHJlY2VpdmVyID0gd2Via2l0
LnBhcnNlci5wYXJzZShzb3VyY2VfZmlsZSkKK2RlZiBtYWluKGFyZ3YpOgorICAgIHJlY2VpdmVy
cyA9IFtdCiAKLSAgICB3aXRoIG9wZW4oYXJncy5pbXBsZW1lbnRhdGlvbiwgIncrIikgYXMgaW1w
bGVtZW50YXRpb25fb3V0cHV0OgotICAgICAgICBpbXBsZW1lbnRhdGlvbl9vdXRwdXQud3JpdGUo
d2Via2l0Lm1lc3NhZ2VzLmdlbmVyYXRlX21lc3NhZ2VfaGFuZGxlcihyZWNlaXZlcikpCisgICAg
Zmlyc3RfYXJnID0gVHJ1ZQorICAgIGZvciBwYXRoX3dpdGhvdXRfbWVzc2FnZXNfaW5fc3VmZml4
IGluIGFyZ3Y6CisgICAgICAgIGlmIGZpcnN0X2FyZzoKKyAgICAgICAgICAgIGZpcnN0X2FyZyA9
IEZhbHNlCisgICAgICAgICAgICBjb250aW51ZQogCi0gICAgd2l0aCBvcGVuKGFyZ3MuaGVhZGVy
LCAidysiKSBhcyBoZWFkZXJfb3V0cHV0OgotICAgICAgICBoZWFkZXJfb3V0cHV0LndyaXRlKHdl
YmtpdC5tZXNzYWdlcy5nZW5lcmF0ZV9tZXNzYWdlc19oZWFkZXIocmVjZWl2ZXIpKQorICAgICAg
ICByZWNlaXZlcl9uYW1lID0gcGF0aF93aXRob3V0X21lc3NhZ2VzX2luX3N1ZmZpeC5yc3BsaXQo
Jy8nLCAxKS5wb3AoKQorICAgICAgICBwcmludCAnR2VuZXJhdGluZyBtZXNzYWdlIHJlY2VpdmVy
IGZvciAlcycgJSByZWNlaXZlcl9uYW1lCiAKLSAgICB3aXRoIG9wZW4oYXJncy5yZXBseV9oZWFk
ZXIsICJ3KyIpIGFzIHJlcGx5X2hlYWRlcl9vdXRwdXQ6Ci0gICAgICAgIHJlcGx5X2hlYWRlcl9v
dXRwdXQud3JpdGUod2Via2l0Lm1lc3NhZ2VzLmdlbmVyYXRlX21lc3NhZ2VzX3JlcGx5X2hlYWRl
cihyZWNlaXZlcikpCisgICAgICAgIHdpdGggb3BlbignJXMubWVzc2FnZXMuaW4nICUgcGF0aF93
aXRob3V0X21lc3NhZ2VzX2luX3N1ZmZpeCkgYXMgc291cmNlX2ZpbGU6CisgICAgICAgICAgICBy
ZWNlaXZlciA9IHdlYmtpdC5wYXJzZXIucGFyc2Uoc291cmNlX2ZpbGUpCisgICAgICAgIHJlY2Vp
dmVycy5hcHBlbmQocmVjZWl2ZXIpCisKKyAgICAgICAgd2l0aCBvcGVuKCclc01lc3NhZ2VSZWNl
aXZlci5jcHAnICUgcmVjZWl2ZXJfbmFtZSwgIncrIikgYXMgaW1wbGVtZW50YXRpb25fb3V0cHV0
OgorICAgICAgICAgICAgaW1wbGVtZW50YXRpb25fb3V0cHV0LndyaXRlKHdlYmtpdC5tZXNzYWdl
cy5nZW5lcmF0ZV9tZXNzYWdlX2hhbmRsZXIocmVjZWl2ZXIpKQorCisgICAgICAgIHdpdGggb3Bl
bignJXNNZXNzYWdlcy5oJyAlIHJlY2VpdmVyX25hbWUsICJ3KyIpIGFzIGhlYWRlcl9vdXRwdXQ6
CisgICAgICAgICAgICBoZWFkZXJfb3V0cHV0LndyaXRlKHdlYmtpdC5tZXNzYWdlcy5nZW5lcmF0
ZV9tZXNzYWdlc19oZWFkZXIocmVjZWl2ZXIpKQorCisgICAgICAgIHdpdGggb3BlbignJXNNZXNz
YWdlc1JlcGxpZXMuaCcgJSByZWNlaXZlcl9uYW1lLCAidysiKSBhcyByZXBseV9oZWFkZXJfb3V0
cHV0OgorICAgICAgICAgICAgcmVwbHlfaGVhZGVyX291dHB1dC53cml0ZSh3ZWJraXQubWVzc2Fn
ZXMuZ2VuZXJhdGVfbWVzc2FnZXNfcmVwbHlfaGVhZGVyKHJlY2VpdmVyKSkKKworICAgIHdpdGgg
b3BlbignTWVzc2FnZU5hbWVzLmgnLCAidysiKSBhcyBtZXNzYWdlX25hbWVzX2hlYWRlcl9vdXRw
dXQ6CisgICAgICAgIG1lc3NhZ2VfbmFtZXNfaGVhZGVyX291dHB1dC53cml0ZSh3ZWJraXQubWVz
c2FnZXMuZ2VuZXJhdGVfbWVzc2FnZV9uYW1lc19oZWFkZXIocmVjZWl2ZXJzKSkKKworICAgIHdp
dGggb3BlbignTWVzc2FnZU5hbWVzLmNwcCcsICJ3KyIpIGFzIG1lc3NhZ2VfbmFtZXNfaW1wbGVt
ZW50YXRpb25fb3V0cHV0OgorICAgICAgICBtZXNzYWdlX25hbWVzX2ltcGxlbWVudGF0aW9uX291
dHB1dC53cml0ZSh3ZWJraXQubWVzc2FnZXMuZ2VuZXJhdGVfbWVzc2FnZV9uYW1lc19pbXBsZW1l
bnRhdGlvbihyZWNlaXZlcnMpKQogCiAgICAgcmV0dXJuIDAKIApJbmRleDogU291cmNlL1dlYktp
dC9TY3JpcHRzL3dlYmtpdC9MZWdhY3lNZXNzYWdlcy1leHBlY3RlZC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvTGVnYWN5TWVzc2FnZXMtZXhwZWN0ZWQuaAko
cmV2aXNpb24gMjYwNzY0KQorKysgU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9MZWdhY3lN
ZXNzYWdlcy1leHBlY3RlZC5oCShub25leGlzdGVudCkKQEAgLTEsNTcwICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAotICogQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0gKiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMCi0gKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgotICogU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSAq
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksCi0gKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIChFTkFCTEUoV0VCS0lUMikgJiYgKE5F
U1RFRF9NQVNURVJfQ09ORElUSU9OIHx8IE1BU1RFUl9PUiAmJiBNQVNURVJfQU5EKSkKLQotI2lu
Y2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCi0jaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgotI2luY2x1
ZGUgIlBsdWdpbi5oIgotI2luY2x1ZGUgIldlYlBhZ2VNZXNzYWdlc1JlcGxpZXMuaCIKLSNpbmNs
dWRlIDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0tleWJvYXJk
RXZlbnQuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1BsdWdpbkRhdGEuaD4KLSNpbmNsdWRlIDx1dGls
aXR5PgotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
LSNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBJUEMg
ewotY2xhc3MgRHVtbXlUeXBlOwotY2xhc3MgTWFjaFBvcnQ7Ci19Ci0KLW5hbWVzcGFjZSBXZWJL
aXQgewotY2xhc3MgV2ViUHJlZmVyZW5jZXNTdG9yZTsKLWNsYXNzIFdlYlRvdWNoRXZlbnQ7Ci19
Ci0KLW5hbWVzcGFjZSBNZXNzYWdlcyB7Ci1uYW1lc3BhY2UgV2ViUGFnZSB7Ci0KLXN0YXRpYyBp
bmxpbmUgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSgpCi17Ci0gICAg
cmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJXZWJQYWdlIik7Ci19Ci0KLWNsYXNzIExvYWRV
UkwgewotcHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBTdHJpbmcmPiBBcmd1
bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkg
eyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6U3RyaW5n
UmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiTG9hZFVSTCIp
OyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7Ci0KLSAgICBleHBsaWNp
dCBMb2FkVVJMKGNvbnN0IFN0cmluZyYgdXJsKQotICAgICAgICA6IG1fYXJndW1lbnRzKHVybCkK
LSAgICB7Ci0gICAgfQotCi0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAot
ICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAg
ICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19OwotCi0jaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykK
LWNsYXNzIExvYWRTb21ldGhpbmcgewotcHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxj
b25zdCBTdHJpbmcmPiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVu
Y2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAg
c3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1Jl
ZmVyZW5jZSgiTG9hZFNvbWV0aGluZyIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5j
ID0gZmFsc2U7Ci0KLSAgICBleHBsaWNpdCBMb2FkU29tZXRoaW5nKGNvbnN0IFN0cmluZyYgdXJs
KQotICAgICAgICA6IG1fYXJndW1lbnRzKHVybCkKLSAgICB7Ci0gICAgfQotCi0gICAgY29uc3Qg
QXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJn
dW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19
OwotI2VuZGlmCi0KLSNpZiAoRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgKE5FU1RFRF9NRVNTQUdF
X0NPTkRJVElPTiB8fCBTT01FX09USEVSX01FU1NBR0VfQ09ORElUSU9OKSkKLWNsYXNzIFRvdWNo
RXZlbnQgewotcHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBXZWJLaXQ6Oldl
YlRvdWNoRXZlbnQmPiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVu
Y2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAg
c3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1Jl
ZmVyZW5jZSgiVG91Y2hFdmVudCIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0g
ZmFsc2U7Ci0KLSAgICBleHBsaWNpdCBUb3VjaEV2ZW50KGNvbnN0IFdlYktpdDo6V2ViVG91Y2hF
dmVudCYgZXZlbnQpCi0gICAgICAgIDogbV9hcmd1bWVudHMoZXZlbnQpCi0gICAgewotICAgIH0K
LQotICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAg
IHJldHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1f
YXJndW1lbnRzOwotfTsKLSNlbmRpZgotCi0jaWYgKEVOQUJMRShUT1VDSF9FVkVOVFMpICYmIChO
RVNURURfTUVTU0FHRV9DT05ESVRJT04gJiYgU09NRV9PVEhFUl9NRVNTQUdFX0NPTkRJVElPTikp
Ci1jbGFzcyBBZGRFdmVudCB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGNvbnN0
IFdlYktpdDo6V2ViVG91Y2hFdmVudCY+IEFyZ3VtZW50czsKLQotICAgIHN0YXRpYyBJUEM6OlN0
cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1l
KCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQ
Qzo6U3RyaW5nUmVmZXJlbmNlKCJBZGRFdmVudCIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wg
aXNTeW5jID0gZmFsc2U7Ci0KLSAgICBleHBsaWNpdCBBZGRFdmVudChjb25zdCBXZWJLaXQ6Oldl
YlRvdWNoRXZlbnQmIGV2ZW50KQotICAgICAgICA6IG1fYXJndW1lbnRzKGV2ZW50KQotICAgIHsK
LSAgICB9Ci0KLSAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewot
ICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3Vt
ZW50cyBtX2FyZ3VtZW50czsKLX07Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMp
Ci1jbGFzcyBMb2FkU29tZXRoaW5nRWxzZSB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1
cGxlPGNvbnN0IFN0cmluZyY+IEFyZ3VtZW50czsKLQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1Jl
ZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0K
LSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3Ry
aW5nUmVmZXJlbmNlKCJMb2FkU29tZXRoaW5nRWxzZSIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJv
b2wgaXNTeW5jID0gZmFsc2U7Ci0KLSAgICBleHBsaWNpdCBMb2FkU29tZXRoaW5nRWxzZShjb25z
dCBTdHJpbmcmIHVybCkKLSAgICAgICAgOiBtX2FyZ3VtZW50cyh1cmwpCi0gICAgewotICAgIH0K
LQotICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAg
IHJldHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1f
YXJndW1lbnRzOwotfTsKLSNlbmRpZgotCi1jbGFzcyBEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24g
ewotcHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTx1aW50NjRfdCwgdWludDY0X3QsIHVp
bnQzMl90PiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVj
ZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGlj
IElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5j
ZSgiRGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uIik7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBp
c1N5bmMgPSBmYWxzZTsKLQotICAgIERpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbih1aW50NjRfdCBm
cmFtZUlELCB1aW50NjRfdCBsaXN0ZW5lcklELCB1aW50MzJfdCBwb2xpY3lBY3Rpb24pCi0gICAg
ICAgIDogbV9hcmd1bWVudHMoZnJhbWVJRCwgbGlzdGVuZXJJRCwgcG9saWN5QWN0aW9uKQotICAg
IHsKLSAgICB9Ci0KLSAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAg
ewotICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFy
Z3VtZW50cyBtX2FyZ3VtZW50czsKLX07Ci0KLWNsYXNzIENsb3NlIHsKLXB1YmxpYzoKLSAgICB0
eXBlZGVmIHN0ZDo6dHVwbGU8PiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdS
ZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9
Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0
cmluZ1JlZmVyZW5jZSgiQ2xvc2UiKTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9
IGZhbHNlOwotCi0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsK
LSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1
bWVudHMgbV9hcmd1bWVudHM7Ci19OwotCi1jbGFzcyBQcmVmZXJlbmNlc0RpZENoYW5nZSB7Ci1w
dWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGNvbnN0IFdlYktpdDo6V2ViUHJlZmVyZW5j
ZXNTdG9yZSY+IEFyZ3VtZW50czsKLQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBy
ZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0
aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJl
bmNlKCJQcmVmZXJlbmNlc0RpZENoYW5nZSIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNT
eW5jID0gZmFsc2U7Ci0KLSAgICBleHBsaWNpdCBQcmVmZXJlbmNlc0RpZENoYW5nZShjb25zdCBX
ZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlKQotICAgICAgICA6IG1fYXJndW1lbnRz
KHN0b3JlKQotICAgIHsKLSAgICB9Ci0KLSAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygp
IGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7Ci0gICAgfQotCi1wcml2
YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKLX07Ci0KLWNsYXNzIFNlbmREb3VibGVB
bmRGbG9hdCB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGRvdWJsZSwgZmxvYXQ+
IEFyZ3VtZW50czsKLQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5h
bWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpT
dHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJTZW5k
RG91YmxlQW5kRmxvYXQiKTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNl
OwotCi0gICAgU2VuZERvdWJsZUFuZEZsb2F0KGRvdWJsZSBkLCBmbG9hdCBmKQotICAgICAgICA6
IG1fYXJndW1lbnRzKGQsIGYpCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0IEFyZ3VtZW50cyYg
YXJndW1lbnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAg
ICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLQotY2xhc3Mg
U2VuZEludHMgewotcHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBWZWN0b3I8
dWludDY0X3Q+JiwgY29uc3QgVmVjdG9yPFZlY3Rvcjx1aW50NjRfdD4+Jj4gQXJndW1lbnRzOwot
Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJu
IG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsgfQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5j
ZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIlNlbmRJbnRzIik7IH0KLSAg
ICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKLQotICAgIFNlbmRJbnRzKGNvbnN0
IFZlY3Rvcjx1aW50NjRfdD4mIGludHMsIGNvbnN0IFZlY3RvcjxWZWN0b3I8dWludDY0X3Q+PiYg
aW50VmVjdG9ycykKLSAgICAgICAgOiBtX2FyZ3VtZW50cyhpbnRzLCBpbnRWZWN0b3JzKQotICAg
IHsKLSAgICB9Ci0KLSAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAg
ewotICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFy
Z3VtZW50cyBtX2FyZ3VtZW50czsKLX07Ci0KLWNsYXNzIENyZWF0ZVBsdWdpbiB7Ci1wdWJsaWM6
Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPHVpbnQ2NF90LCBjb25zdCBXZWJLaXQ6OlBsdWdpbjo6
UGFyYW1ldGVycyY+IEFyZ3VtZW50czsKLQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5j
ZSByZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBz
dGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVm
ZXJlbmNlKCJDcmVhdGVQbHVnaW4iKTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9
IHRydWU7Ci0KLSAgICB1c2luZyBSZXBseSA9IHN0ZDo6dHVwbGU8Ym9vbCY+OwotICAgIHVzaW5n
IFJlcGx5QXJndW1lbnRzID0gc3RkOjp0dXBsZTxib29sPjsKLSAgICBDcmVhdGVQbHVnaW4odWlu
dDY0X3QgcGx1Z2luSW5zdGFuY2VJRCwgY29uc3QgV2ViS2l0OjpQbHVnaW46OlBhcmFtZXRlcnMm
IHBhcmFtZXRlcnMpCi0gICAgICAgIDogbV9hcmd1bWVudHMocGx1Z2luSW5zdGFuY2VJRCwgcGFy
YW1ldGVycykKLSAgICB7Ci0gICAgfQotCi0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMo
KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJp
dmF0ZToKLSAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19OwotCi1jbGFzcyBSdW5KYXZhU2Ny
aXB0QWxlcnQgewotcHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTx1aW50NjRfdCwgY29u
c3QgU3RyaW5nJj4gQXJndW1lbnRzOwotCi0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNl
IHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsgfQotICAgIHN0
YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpTdHJpbmdSZWZl
cmVuY2UoIlJ1bkphdmFTY3JpcHRBbGVydCIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNT
eW5jID0gdHJ1ZTsKLQotICAgIHVzaW5nIFJlcGx5ID0gc3RkOjp0dXBsZTw+OwotICAgIHVzaW5n
IFJlcGx5QXJndW1lbnRzID0gc3RkOjp0dXBsZTw+OwotICAgIFJ1bkphdmFTY3JpcHRBbGVydCh1
aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCi0gICAgICAgIDogbV9hcmd1
bWVudHMoZnJhbWVJRCwgbWVzc2FnZSkKLSAgICB7Ci0gICAgfQotCi0gICAgY29uc3QgQXJndW1l
bnRzJiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRz
OwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19OwotCi1j
bGFzcyBHZXRQbHVnaW5zIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8Ym9vbD4g
QXJndW1lbnRzOwotCi0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFt
ZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsgfQotICAgIHN0YXRpYyBJUEM6OlN0
cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIkdldFBs
dWdpbnMiKTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IHRydWU7Ci0KLSAgICB1
c2luZyBSZXBseSA9IHN0ZDo6dHVwbGU8VmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+Jj47Ci0g
ICAgdXNpbmcgUmVwbHlBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPFZlY3RvcjxXZWJDb3JlOjpQbHVn
aW5JbmZvPj47Ci0gICAgZXhwbGljaXQgR2V0UGx1Z2lucyhib29sIHJlZnJlc2gpCi0gICAgICAg
IDogbV9hcmd1bWVudHMocmVmcmVzaCkKLSAgICB7Ci0gICAgfQotCi0gICAgY29uc3QgQXJndW1l
bnRzJiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRz
OwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19OwotCi1j
bGFzcyBHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbiB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBz
dGQ6OnR1cGxlPGNvbnN0IFN0cmluZyY+IEFyZ3VtZW50czsKLQotICAgIHN0YXRpYyBJUEM6OlN0
cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1l
KCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQ
Qzo6U3RyaW5nUmVmZXJlbmNlKCJHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbiIpOyB9Ci0gICAg
c3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gdHJ1ZTsKLQotICAgIHVzaW5nIERlbGF5ZWRSZXBs
eSA9IEdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uRGVsYXllZFJlcGx5OwotICAgIHN0YXRpYyB2
b2lkIHNlbmQoc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mJiwgSVBDOjpDb25uZWN0aW9u
JiwgY29uc3QgSVBDOjpDb25uZWN0aW9uOjpIYW5kbGUmIGNvbm5lY3Rpb25IYW5kbGUpOwotICAg
IHVzaW5nIFJlcGx5ID0gc3RkOjp0dXBsZTxJUEM6OkNvbm5lY3Rpb246OkhhbmRsZSY+OwotICAg
IHVzaW5nIFJlcGx5QXJndW1lbnRzID0gc3RkOjp0dXBsZTxJUEM6OkNvbm5lY3Rpb246OkhhbmRs
ZT47Ci0gICAgZXhwbGljaXQgR2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24oY29uc3QgU3RyaW5n
JiBwbHVnaW5QYXRoKQotICAgICAgICA6IG1fYXJndW1lbnRzKHBsdWdpblBhdGgpCi0gICAgewot
ICAgIH0KLQotICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1l
bnRzIG1fYXJndW1lbnRzOwotfTsKLQotY2xhc3MgVGVzdE11bHRpcGxlQXR0cmlidXRlcyB7Ci1w
dWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPD4gQXJndW1lbnRzOwotCi0gICAgc3RhdGlj
IElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNl
aXZlck5hbWUoKTsgfQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyBy
ZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIlRlc3RNdWx0aXBsZUF0dHJpYnV0ZXMiKTsgfQot
ICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IHRydWU7Ci0KLSAgICB1c2luZyBEZWxheWVk
UmVwbHkgPSBUZXN0TXVsdGlwbGVBdHRyaWJ1dGVzRGVsYXllZFJlcGx5OwotICAgIHN0YXRpYyB2
b2lkIHNlbmQoc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mJiwgSVBDOjpDb25uZWN0aW9u
Jik7Ci0gICAgdXNpbmcgUmVwbHkgPSBzdGQ6OnR1cGxlPD47Ci0gICAgdXNpbmcgUmVwbHlBcmd1
bWVudHMgPSBzdGQ6OnR1cGxlPD47Ci0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBj
b25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0
ZToKLSAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19OwotCi1jbGFzcyBUZXN0UGFyYW1ldGVy
QXR0cmlidXRlcyB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPHVpbnQ2NF90LCBk
b3VibGUsIGRvdWJsZT4gQXJndW1lbnRzOwotCi0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJl
bmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsgfQotICAg
IHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpTdHJpbmdS
ZWZlcmVuY2UoIlRlc3RQYXJhbWV0ZXJBdHRyaWJ1dGVzIik7IH0KLSAgICBzdGF0aWMgY29uc3Qg
Ym9vbCBpc1N5bmMgPSBmYWxzZTsKLQotICAgIFRlc3RQYXJhbWV0ZXJBdHRyaWJ1dGVzKHVpbnQ2
NF90IGZvbywgZG91YmxlIGJhciwgZG91YmxlIGJheikKLSAgICAgICAgOiBtX2FyZ3VtZW50cyhm
b28sIGJhciwgYmF6KQotICAgIHsKLSAgICB9Ci0KLSAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3Vt
ZW50cygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7Ci0gICAgfQot
Ci1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKLX07Ci0KLWNsYXNzIFRlbXBs
YXRlVGVzdCB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGNvbnN0IEhhc2hNYXA8
U3RyaW5nLCBzdGQ6OnBhaXI8U3RyaW5nLCB1aW50NjRfdD4+Jj4gQXJndW1lbnRzOwotCi0gICAg
c3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3Nh
Z2VSZWNlaXZlck5hbWUoKTsgfQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1l
KCkgeyByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIlRlbXBsYXRlVGVzdCIpOyB9Ci0gICAg
c3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7Ci0KLSAgICBleHBsaWNpdCBUZW1wbGF0
ZVRlc3QoY29uc3QgSGFzaE1hcDxTdHJpbmcsIHN0ZDo6cGFpcjxTdHJpbmcsIHVpbnQ2NF90Pj4m
IGEpCi0gICAgICAgIDogbV9hcmd1bWVudHMoYSkKLSAgICB7Ci0gICAgfQotCi0gICAgY29uc3Qg
QXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJn
dW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19
OwotCi1jbGFzcyBTZXRWaWRlb0xheWVySUQgewotcHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0
dXBsZTxjb25zdCBXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQmPiBBcmd1
bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkg
eyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6U3RyaW5n
UmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiU2V0VmlkZW9M
YXllcklEIik7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKLQotICAg
IGV4cGxpY2l0IFNldFZpZGVvTGF5ZXJJRChjb25zdCBXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpQ
bGF0Zm9ybUxheWVySUQmIHZpZGVvTGF5ZXJJRCkKLSAgICAgICAgOiBtX2FyZ3VtZW50cyh2aWRl
b0xheWVySUQpCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRz
KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0KLXBy
aXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLQotI2lmIFBMQVRGT1JNKE1B
QykKLWNsYXNzIERpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uIHsKLXB1YmxpYzoKLSAgICB0
eXBlZGVmIHN0ZDo6dHVwbGU8Y29uc3QgSVBDOjpNYWNoUG9ydCY+IEFyZ3VtZW50czsKLQotICAg
IHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNz
YWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFt
ZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJEaWRDcmVhdGVXZWJQcm9jZXNzQ29u
bmVjdGlvbiIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7Ci0KLSAg
ICBleHBsaWNpdCBEaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbihjb25zdCBJUEM6Ok1hY2hQ
b3J0JiBjb25uZWN0aW9uSWRlbnRpZmllcikKLSAgICAgICAgOiBtX2FyZ3VtZW50cyhjb25uZWN0
aW9uSWRlbnRpZmllcikKLSAgICB7Ci0gICAgfQotCi0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1
bWVudHMoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0K
LQotcHJpdmF0ZToKLSAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19OwotI2VuZGlmCi0KLSNp
ZiBQTEFURk9STShNQUMpCi1jbGFzcyBJbnRlcnByZXRLZXlFdmVudCB7Ci1wdWJsaWM6Ci0gICAg
dHlwZWRlZiBzdGQ6OnR1cGxlPHVpbnQzMl90PiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBD
OjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVy
TmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVy
biBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiSW50ZXJwcmV0S2V5RXZlbnQiKTsgfQotICAgIHN0YXRp
YyBjb25zdCBib29sIGlzU3luYyA9IHRydWU7Ci0KLSAgICB1c2luZyBSZXBseSA9IHN0ZDo6dHVw
bGU8VmVjdG9yPFdlYkNvcmU6OktleXByZXNzQ29tbWFuZD4mPjsKLSAgICB1c2luZyBSZXBseUFy
Z3VtZW50cyA9IHN0ZDo6dHVwbGU8VmVjdG9yPFdlYkNvcmU6OktleXByZXNzQ29tbWFuZD4+Owot
ICAgIGV4cGxpY2l0IEludGVycHJldEtleUV2ZW50KHVpbnQzMl90IHR5cGUpCi0gICAgICAgIDog
bV9hcmd1bWVudHModHlwZSkKLSAgICB7Ci0gICAgfQotCi0gICAgY29uc3QgQXJndW1lbnRzJiBh
cmd1bWVudHMoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAg
IH0KLQotcHJpdmF0ZToKLSAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19OwotI2VuZGlmCi0K
LSNpZiBFTkFCTEUoREVQUkVDQVRFRF9GRUFUVVJFKQotY2xhc3MgRGVwcmVjYXRlZE9wZXJhdGlv
biB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGNvbnN0IElQQzo6RHVtbXlUeXBl
Jj4gQXJndW1lbnRzOwotCi0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVy
TmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsgfQotICAgIHN0YXRpYyBJUEM6
OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIkRl
cHJlY2F0ZWRPcGVyYXRpb24iKTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZh
bHNlOwotCi0gICAgZXhwbGljaXQgRGVwcmVjYXRlZE9wZXJhdGlvbihjb25zdCBJUEM6OkR1bW15
VHlwZSYgZHVtbXkpCi0gICAgICAgIDogbV9hcmd1bWVudHMoZHVtbXkpCi0gICAgewotICAgIH0K
LQotICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAg
IHJldHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1f
YXJndW1lbnRzOwotfTsKLSNlbmRpZgotCi0jaWYgRU5BQkxFKEVYUEVSSU1FTlRBTF9GRUFUVVJF
KQotY2xhc3MgRXhwZXJpbWVudGFsT3BlcmF0aW9uIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0
ZDo6dHVwbGU8Y29uc3QgSVBDOjpEdW1teVR5cGUmPiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0aWMg
SVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2Vp
dmVyTmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJl
dHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiRXhwZXJpbWVudGFsT3BlcmF0aW9uIik7IH0KLSAg
ICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKLQotICAgIGV4cGxpY2l0IEV4cGVy
aW1lbnRhbE9wZXJhdGlvbihjb25zdCBJUEM6OkR1bW15VHlwZSYgZHVtbXkpCi0gICAgICAgIDog
bV9hcmd1bWVudHMoZHVtbXkpCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0IEFyZ3VtZW50cyYg
YXJndW1lbnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAg
ICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLSNlbmRpZgot
Ci19IC8vIG5hbWVzcGFjZSBXZWJQYWdlCi19IC8vIG5hbWVzcGFjZSBNZXNzYWdlcwotCi0jZW5k
aWYgLy8gKEVOQUJMRShXRUJLSVQyKSAmJiAoTkVTVEVEX01BU1RFUl9DT05ESVRJT04gfHwgTUFT
VEVSX09SICYmIE1BU1RFUl9BTkQpKQoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dlYktp
dC9TY3JpcHRzL3dlYmtpdC9MZWdhY3lNZXNzYWdlcy1leHBlY3RlZC5oCl9fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVs
ZXRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMSArMCwwICMjCi1uYXRpdmUKXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9MZWdh
Y3lNZXNzYWdlc1JlcGxpZXMtZXhwZWN0ZWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1NjcmlwdHMvd2Via2l0L0xlZ2FjeU1lc3NhZ2VzUmVwbGllcy1leHBlY3RlZC5oCShyZXZpc2lv
biAyNjA3NjQpCisrKyBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L0xlZ2FjeU1lc3NhZ2Vz
UmVwbGllcy1leHBlY3RlZC5oCShub25leGlzdGVudCkKQEAgLTEsNDMgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECi0gKiBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSAqIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwKLSAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0gKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotICog
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwKLSAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgKEVOQUJMRShXRUJLSVQyKSAmJiAoTkVT
VEVEX01BU1RFUl9DT05ESVRJT04gfHwgTUFTVEVSX09SICYmIE1BU1RFUl9BTkQpKQotCi0jaW5j
bHVkZSAiQ29ubmVjdGlvbi5oIgotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0KLQotbmFtZXNw
YWNlIE1lc3NhZ2VzIHsKLW5hbWVzcGFjZSBXZWJQYWdlIHsKLQotdXNpbmcgR2V0UGx1Z2luUHJv
Y2Vzc0Nvbm5lY3Rpb25EZWxheWVkUmVwbHkgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0
IElQQzo6Q29ubmVjdGlvbjo6SGFuZGxlJiBjb25uZWN0aW9uSGFuZGxlKT47Ci0KLXVzaW5nIFRl
c3RNdWx0aXBsZUF0dHJpYnV0ZXNEZWxheWVkUmVwbHkgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+OwotCi19IC8vIG5hbWVzcGFjZSBXZWJQYWdlCi19IC8vIG5hbWVzcGFjZSBNZXNzYWdlcwot
Ci0jZW5kaWYgLy8gKEVOQUJMRShXRUJLSVQyKSAmJiAoTkVTVEVEX01BU1RFUl9DT05ESVRJT04g
fHwgTUFTVEVSX09SICYmIE1BU1RFUl9BTkQpKQpJbmRleDogU291cmNlL1dlYktpdC9TY3JpcHRz
L3dlYmtpdC9NZXNzYWdlTmFtZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2Ny
aXB0cy93ZWJraXQvTWVzc2FnZU5hbWVzLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2Vi
S2l0L1NjcmlwdHMvd2Via2l0L01lc3NhZ2VOYW1lcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwxMjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFO
RAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiTWVzc2FnZU5hbWVzLmgiCisKK25hbWVzcGFjZSBJUEMgeworCitjb25zdCBjaGFyKiBk
ZXNjcmlwdGlvbihNZXNzYWdlTmFtZSBuYW1lKQoreworICAgIHN3aXRjaCAobmFtZSkgeworICAg
IGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfTG9hZFVSTDoKKyAgICAgICAgcmV0dXJuICJXZWJQ
YWdlOjpMb2FkVVJMIjsKKyNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQorICAgIGNhc2UgTWVzc2Fn
ZU5hbWU6OldlYlBhZ2VfVGVzdEFzeW5jTWVzc2FnZToKKyAgICAgICAgcmV0dXJuICJXZWJQYWdl
OjpUZXN0QXN5bmNNZXNzYWdlIjsKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX1Rlc3RB
c3luY01lc3NhZ2VSZXBseToKKyAgICAgICAgcmV0dXJuICJXZWJQYWdlOjpUZXN0QXN5bmNNZXNz
YWdlUmVwbHkiOworI2VuZGlmCisjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKKyAgICBjYXNlIE1l
c3NhZ2VOYW1lOjpXZWJQYWdlX1Rlc3RBc3luY01lc3NhZ2VXaXRoTm9Bcmd1bWVudHM6CisgICAg
ICAgIHJldHVybiAiV2ViUGFnZTo6VGVzdEFzeW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50cyI7Cisg
ICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9UZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJndW1l
bnRzUmVwbHk6CisgICAgICAgIHJldHVybiAiV2ViUGFnZTo6VGVzdEFzeW5jTWVzc2FnZVdpdGhO
b0FyZ3VtZW50c1JlcGx5IjsKKyNlbmRpZgorI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCisgICAg
Y2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9UZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJn
dW1lbnRzOgorICAgICAgICByZXR1cm4gIldlYlBhZ2U6OlRlc3RBc3luY01lc3NhZ2VXaXRoTXVs
dGlwbGVBcmd1bWVudHMiOworICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVzdEFzeW5j
TWVzc2FnZVdpdGhNdWx0aXBsZUFyZ3VtZW50c1JlcGx5OgorICAgICAgICByZXR1cm4gIldlYlBh
Z2U6OlRlc3RBc3luY01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHNSZXBseSI7CisjZW5kaWYK
KyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX1Rlc3RTeW5jTWVzc2FnZToKKyAgICAgICAg
cmV0dXJuICJXZWJQYWdlOjpUZXN0U3luY01lc3NhZ2UiOworICAgIGNhc2UgTWVzc2FnZU5hbWU6
OldlYlBhZ2VfVGVzdFN5bmNocm9ub3VzTWVzc2FnZToKKyAgICAgICAgcmV0dXJuICJXZWJQYWdl
OjpUZXN0U3luY2hyb25vdXNNZXNzYWdlIjsKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdl
X0xvYWRVUkw6CisgICAgICAgIHJldHVybiAiV2ViUGFnZTo6TG9hZFVSTCI7CisjaWYgRU5BQkxF
KFRPVUNIX0VWRU5UUykKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX0xvYWRTb21ldGhp
bmc6CisgICAgICAgIHJldHVybiAiV2ViUGFnZTo6TG9hZFNvbWV0aGluZyI7CisjZW5kaWYKKyNp
ZiAoRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgKE5FU1RFRF9NRVNTQUdFX0NPTkRJVElPTiB8fCBT
T01FX09USEVSX01FU1NBR0VfQ09ORElUSU9OKSkKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQ
YWdlX1RvdWNoRXZlbnQ6CisgICAgICAgIHJldHVybiAiV2ViUGFnZTo6VG91Y2hFdmVudCI7Cisj
ZW5kaWYKKyNpZiAoRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgKE5FU1RFRF9NRVNTQUdFX0NPTkRJ
VElPTiAmJiBTT01FX09USEVSX01FU1NBR0VfQ09ORElUSU9OKSkKKyAgICBjYXNlIE1lc3NhZ2VO
YW1lOjpXZWJQYWdlX0FkZEV2ZW50OgorICAgICAgICByZXR1cm4gIldlYlBhZ2U6OkFkZEV2ZW50
IjsKKyNlbmRpZgorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAgY2FzZSBNZXNzYWdlTmFt
ZTo6V2ViUGFnZV9Mb2FkU29tZXRoaW5nRWxzZToKKyAgICAgICAgcmV0dXJuICJXZWJQYWdlOjpM
b2FkU29tZXRoaW5nRWxzZSI7CisjZW5kaWYKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdl
X0RpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbjoKKyAgICAgICAgcmV0dXJuICJXZWJQYWdlOjpEaWRS
ZWNlaXZlUG9saWN5RGVjaXNpb24iOworICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfQ2xv
c2U6CisgICAgICAgIHJldHVybiAiV2ViUGFnZTo6Q2xvc2UiOworICAgIGNhc2UgTWVzc2FnZU5h
bWU6OldlYlBhZ2VfUHJlZmVyZW5jZXNEaWRDaGFuZ2U6CisgICAgICAgIHJldHVybiAiV2ViUGFn
ZTo6UHJlZmVyZW5jZXNEaWRDaGFuZ2UiOworICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2Vf
U2VuZERvdWJsZUFuZEZsb2F0OgorICAgICAgICByZXR1cm4gIldlYlBhZ2U6OlNlbmREb3VibGVB
bmRGbG9hdCI7CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9TZW5kSW50czoKKyAgICAg
ICAgcmV0dXJuICJXZWJQYWdlOjpTZW5kSW50cyI7CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2Vi
UGFnZV9DcmVhdGVQbHVnaW46CisgICAgICAgIHJldHVybiAiV2ViUGFnZTo6Q3JlYXRlUGx1Z2lu
IjsKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX1J1bkphdmFTY3JpcHRBbGVydDoKKyAg
ICAgICAgcmV0dXJuICJXZWJQYWdlOjpSdW5KYXZhU2NyaXB0QWxlcnQiOworICAgIGNhc2UgTWVz
c2FnZU5hbWU6OldlYlBhZ2VfR2V0UGx1Z2luczoKKyAgICAgICAgcmV0dXJuICJXZWJQYWdlOjpH
ZXRQbHVnaW5zIjsKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX0dldFBsdWdpblByb2Nl
c3NDb25uZWN0aW9uOgorICAgICAgICByZXR1cm4gIldlYlBhZ2U6OkdldFBsdWdpblByb2Nlc3ND
b25uZWN0aW9uIjsKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX1Rlc3RNdWx0aXBsZUF0
dHJpYnV0ZXM6CisgICAgICAgIHJldHVybiAiV2ViUGFnZTo6VGVzdE11bHRpcGxlQXR0cmlidXRl
cyI7CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9UZXN0UGFyYW1ldGVyQXR0cmlidXRl
czoKKyAgICAgICAgcmV0dXJuICJXZWJQYWdlOjpUZXN0UGFyYW1ldGVyQXR0cmlidXRlcyI7Cisg
ICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9UZW1wbGF0ZVRlc3Q6CisgICAgICAgIHJldHVy
biAiV2ViUGFnZTo6VGVtcGxhdGVUZXN0IjsKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdl
X1NldFZpZGVvTGF5ZXJJRDoKKyAgICAgICAgcmV0dXJuICJXZWJQYWdlOjpTZXRWaWRlb0xheWVy
SUQiOworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX0Rp
ZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uOgorICAgICAgICByZXR1cm4gIldlYlBhZ2U6OkRp
ZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uIjsKKyNlbmRpZgorI2lmIFBMQVRGT1JNKE1BQykK
KyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX0ludGVycHJldEtleUV2ZW50OgorICAgICAg
ICByZXR1cm4gIldlYlBhZ2U6OkludGVycHJldEtleUV2ZW50IjsKKyNlbmRpZgorI2lmIEVOQUJM
RShERVBSRUNBVEVEX0ZFQVRVUkUpCisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9EZXBy
ZWNhdGVkT3BlcmF0aW9uOgorICAgICAgICByZXR1cm4gIldlYlBhZ2U6OkRlcHJlY2F0ZWRPcGVy
YXRpb24iOworI2VuZGlmCisjaWYgRU5BQkxFKEVYUEVSSU1FTlRBTF9GRUFUVVJFKQorICAgIGNh
c2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfRXhwZXJpbWVudGFsT3BlcmF0aW9uOgorICAgICAgICBy
ZXR1cm4gIldlYlBhZ2U6OkV4cGVyaW1lbnRhbE9wZXJhdGlvbiI7CisjZW5kaWYKKyAgICBjYXNl
IE1lc3NhZ2VOYW1lOjpXcmFwcGVkQXN5bmNNZXNzYWdlRm9yVGVzdGluZzoKKyAgICAgICAgcmV0
dXJuICJJUEM6OldyYXBwZWRBc3luY01lc3NhZ2VGb3JUZXN0aW5nIjsKKyAgICBjYXNlIE1lc3Nh
Z2VOYW1lOjpTeW5jTWVzc2FnZVJlcGx5OgorICAgICAgICByZXR1cm4gIklQQzo6U3luY01lc3Nh
Z2VSZXBseSI7CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6SW5pdGlhbGl6ZUNvbm5lY3Rpb246Cisg
ICAgICAgIHJldHVybiAiSVBDOjpJbml0aWFsaXplQ29ubmVjdGlvbiI7CisgICAgfQorICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiAiPGludmFsaWQgbWVzc2FnZSBuYW1lPiI7
Cit9CisKK30gLy8gbmFtZXNwYWNlIElQQwpJbmRleDogU291cmNlL1dlYktpdC9TY3JpcHRzL3dl
YmtpdC9NZXNzYWdlTmFtZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMv
d2Via2l0L01lc3NhZ2VOYW1lcy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvU2Ny
aXB0cy93ZWJraXQvTWVzc2FnZU5hbWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyNzYg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
CisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9FbnVt
VHJhaXRzLmg+CisKK25hbWVzcGFjZSBJUEMgeworCitlbnVtIGNsYXNzIFJlY2VpdmVyTmFtZSA6
IHVpbnQ4X3QgeworICAgIFdlYlBhZ2UgPSAxCisgICAgLCBXZWJQYWdlID0gMgorICAgICwgTm9u
ZSA9IDMKKyAgICAsIElQQyA9IDQKKyAgICAsIEFzeW5jUmVwbHkgPSA1CisgICAgLCBJbnZhbGlk
ID0gNgorfTsKKworZW51bSBjbGFzcyBNZXNzYWdlTmFtZSA6IHVpbnQxNl90IHsKKyAgICBXZWJQ
YWdlX0xvYWRVUkwgPSAxCisjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKKyAgICAsIFdlYlBhZ2Vf
VGVzdEFzeW5jTWVzc2FnZSA9IDIKKyAgICAsIFdlYlBhZ2VfVGVzdEFzeW5jTWVzc2FnZVJlcGx5
ID0gMworI2VuZGlmCisjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKKyAgICAsIFdlYlBhZ2VfVGVz
dEFzeW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50cyA9IDQKKyAgICAsIFdlYlBhZ2VfVGVzdEFzeW5j
TWVzc2FnZVdpdGhOb0FyZ3VtZW50c1JlcGx5ID0gNQorI2VuZGlmCisjaWYgRU5BQkxFKFRFU1Rf
RkVBVFVSRSkKKyAgICAsIFdlYlBhZ2VfVGVzdEFzeW5jTWVzc2FnZVdpdGhNdWx0aXBsZUFyZ3Vt
ZW50cyA9IDYKKyAgICAsIFdlYlBhZ2VfVGVzdEFzeW5jTWVzc2FnZVdpdGhNdWx0aXBsZUFyZ3Vt
ZW50c1JlcGx5ID0gNworI2VuZGlmCisgICAgLCBXZWJQYWdlX1Rlc3RTeW5jTWVzc2FnZSA9IDgK
KyAgICAsIFdlYlBhZ2VfVGVzdFN5bmNocm9ub3VzTWVzc2FnZSA9IDkKKyAgICAsIFdlYlBhZ2Vf
TG9hZFVSTCA9IDEwCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAgICAsIFdlYlBhZ2VfTG9h
ZFNvbWV0aGluZyA9IDExCisjZW5kaWYKKyNpZiAoRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgKE5F
U1RFRF9NRVNTQUdFX0NPTkRJVElPTiB8fCBTT01FX09USEVSX01FU1NBR0VfQ09ORElUSU9OKSkK
KyAgICAsIFdlYlBhZ2VfVG91Y2hFdmVudCA9IDEyCisjZW5kaWYKKyNpZiAoRU5BQkxFKFRPVUNI
X0VWRU5UUykgJiYgKE5FU1RFRF9NRVNTQUdFX0NPTkRJVElPTiAmJiBTT01FX09USEVSX01FU1NB
R0VfQ09ORElUSU9OKSkKKyAgICAsIFdlYlBhZ2VfQWRkRXZlbnQgPSAxMworI2VuZGlmCisjaWYg
RU5BQkxFKFRPVUNIX0VWRU5UUykKKyAgICAsIFdlYlBhZ2VfTG9hZFNvbWV0aGluZ0Vsc2UgPSAx
NAorI2VuZGlmCisgICAgLCBXZWJQYWdlX0RpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbiA9IDE1Cisg
ICAgLCBXZWJQYWdlX0Nsb3NlID0gMTYKKyAgICAsIFdlYlBhZ2VfUHJlZmVyZW5jZXNEaWRDaGFu
Z2UgPSAxNworICAgICwgV2ViUGFnZV9TZW5kRG91YmxlQW5kRmxvYXQgPSAxOAorICAgICwgV2Vi
UGFnZV9TZW5kSW50cyA9IDE5CisgICAgLCBXZWJQYWdlX0NyZWF0ZVBsdWdpbiA9IDIwCisgICAg
LCBXZWJQYWdlX1J1bkphdmFTY3JpcHRBbGVydCA9IDIxCisgICAgLCBXZWJQYWdlX0dldFBsdWdp
bnMgPSAyMgorICAgICwgV2ViUGFnZV9HZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbiA9IDIzCisg
ICAgLCBXZWJQYWdlX1Rlc3RNdWx0aXBsZUF0dHJpYnV0ZXMgPSAyNAorICAgICwgV2ViUGFnZV9U
ZXN0UGFyYW1ldGVyQXR0cmlidXRlcyA9IDI1CisgICAgLCBXZWJQYWdlX1RlbXBsYXRlVGVzdCA9
IDI2CisgICAgLCBXZWJQYWdlX1NldFZpZGVvTGF5ZXJJRCA9IDI3CisjaWYgUExBVEZPUk0oTUFD
KQorICAgICwgV2ViUGFnZV9EaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbiA9IDI4CisjZW5k
aWYKKyNpZiBQTEFURk9STShNQUMpCisgICAgLCBXZWJQYWdlX0ludGVycHJldEtleUV2ZW50ID0g
MjkKKyNlbmRpZgorI2lmIEVOQUJMRShERVBSRUNBVEVEX0ZFQVRVUkUpCisgICAgLCBXZWJQYWdl
X0RlcHJlY2F0ZWRPcGVyYXRpb24gPSAzMAorI2VuZGlmCisjaWYgRU5BQkxFKEVYUEVSSU1FTlRB
TF9GRUFUVVJFKQorICAgICwgV2ViUGFnZV9FeHBlcmltZW50YWxPcGVyYXRpb24gPSAzMQorI2Vu
ZGlmCisgICAgLCBXcmFwcGVkQXN5bmNNZXNzYWdlRm9yVGVzdGluZyA9IDMyCisgICAgLCBTeW5j
TWVzc2FnZVJlcGx5ID0gMzMKKyAgICAsIEluaXRpYWxpemVDb25uZWN0aW9uID0gMzQKK307CisK
K2lubGluZSBSZWNlaXZlck5hbWUgcmVjZWl2ZXJOYW1lKE1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1l
KQoreworICAgIHN3aXRjaCAobWVzc2FnZU5hbWUpIHsKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpX
ZWJQYWdlX0xvYWRVUkw6CisjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKKyAgICBjYXNlIE1lc3Nh
Z2VOYW1lOjpXZWJQYWdlX1Rlc3RBc3luY01lc3NhZ2U6CisjZW5kaWYKKyNpZiBFTkFCTEUoVEVT
VF9GRUFUVVJFKQorICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVzdEFzeW5jTWVzc2Fn
ZVdpdGhOb0FyZ3VtZW50czoKKyNlbmRpZgorI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCisgICAg
Y2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9UZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJn
dW1lbnRzOgorI2VuZGlmCisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9UZXN0U3luY01l
c3NhZ2U6CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9UZXN0U3luY2hyb25vdXNNZXNz
YWdlOgorICAgICAgICByZXR1cm4gUmVjZWl2ZXJOYW1lOjpXZWJQYWdlOworICAgIGNhc2UgTWVz
c2FnZU5hbWU6OldlYlBhZ2VfTG9hZFVSTDoKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAg
IGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfTG9hZFNvbWV0aGluZzoKKyNlbmRpZgorI2lmIChF
TkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiAoTkVTVEVEX01FU1NBR0VfQ09ORElUSU9OIHx8IFNPTUVf
T1RIRVJfTUVTU0FHRV9DT05ESVRJT04pKQorICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2Vf
VG91Y2hFdmVudDoKKyNlbmRpZgorI2lmIChFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiAoTkVTVEVE
X01FU1NBR0VfQ09ORElUSU9OICYmIFNPTUVfT1RIRVJfTUVTU0FHRV9DT05ESVRJT04pKQorICAg
IGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfQWRkRXZlbnQ6CisjZW5kaWYKKyNpZiBFTkFCTEUo
VE9VQ0hfRVZFTlRTKQorICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfTG9hZFNvbWV0aGlu
Z0Vsc2U6CisjZW5kaWYKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX0RpZFJlY2VpdmVQ
b2xpY3lEZWNpc2lvbjoKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX0Nsb3NlOgorICAg
IGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfUHJlZmVyZW5jZXNEaWRDaGFuZ2U6CisgICAgY2Fz
ZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9TZW5kRG91YmxlQW5kRmxvYXQ6CisgICAgY2FzZSBNZXNz
YWdlTmFtZTo6V2ViUGFnZV9TZW5kSW50czoKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdl
X0NyZWF0ZVBsdWdpbjoKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX1J1bkphdmFTY3Jp
cHRBbGVydDoKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX0dldFBsdWdpbnM6CisgICAg
Y2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9HZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjoKKyAg
ICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX1Rlc3RNdWx0aXBsZUF0dHJpYnV0ZXM6CisgICAg
Y2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9UZXN0UGFyYW1ldGVyQXR0cmlidXRlczoKKyAgICBj
YXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX1RlbXBsYXRlVGVzdDoKKyAgICBjYXNlIE1lc3NhZ2VO
YW1lOjpXZWJQYWdlX1NldFZpZGVvTGF5ZXJJRDoKKyNpZiBQTEFURk9STShNQUMpCisgICAgY2Fz
ZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9EaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbjoKKyNl
bmRpZgorI2lmIFBMQVRGT1JNKE1BQykKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX0lu
dGVycHJldEtleUV2ZW50OgorI2VuZGlmCisjaWYgRU5BQkxFKERFUFJFQ0FURURfRkVBVFVSRSkK
KyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX0RlcHJlY2F0ZWRPcGVyYXRpb246CisjZW5k
aWYKKyNpZiBFTkFCTEUoRVhQRVJJTUVOVEFMX0ZFQVRVUkUpCisgICAgY2FzZSBNZXNzYWdlTmFt
ZTo6V2ViUGFnZV9FeHBlcmltZW50YWxPcGVyYXRpb246CisjZW5kaWYKKyAgICAgICAgcmV0dXJu
IFJlY2VpdmVyTmFtZTo6V2ViUGFnZTsKKyAgICAgICAgcmV0dXJuIFJlY2VpdmVyTmFtZTo6Tm9u
ZTsKKyNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQorICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBh
Z2VfVGVzdEFzeW5jTWVzc2FnZVJlcGx5OgorI2VuZGlmCisjaWYgRU5BQkxFKFRFU1RfRkVBVFVS
RSkKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX1Rlc3RBc3luY01lc3NhZ2VXaXRoTm9B
cmd1bWVudHNSZXBseToKKyNlbmRpZgorI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCisgICAgY2Fz
ZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9UZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1l
bnRzUmVwbHk6CisjZW5kaWYKKyAgICAgICAgcmV0dXJuIFJlY2VpdmVyTmFtZTo6QXN5bmNSZXBs
eTsKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXcmFwcGVkQXN5bmNNZXNzYWdlRm9yVGVzdGluZzoK
KyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpTeW5jTWVzc2FnZVJlcGx5OgorICAgIGNhc2UgTWVzc2Fn
ZU5hbWU6OkluaXRpYWxpemVDb25uZWN0aW9uOgorICAgICAgICByZXR1cm4gUmVjZWl2ZXJOYW1l
OjpJUEM7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBSZWNl
aXZlck5hbWU6OkludmFsaWQ7Cit9CisKK2NvbnN0IGNoYXIqIGRlc2NyaXB0aW9uKE1lc3NhZ2VO
YW1lKTsKKworfSAvLyBuYW1lc3BhY2UgSVBDCisKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0
ZTx0eXBlbmFtZSBFLCB0eXBlbmFtZSBULCBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfc2FtZTxF
LCBJUEM6Ok1lc3NhZ2VOYW1lPjo6dmFsdWU+KiA9IG51bGxwdHI+Citjb25zdGV4cHIgYm9vbCBp
c1ZhbGlkRW51bShUIG1lc3NhZ2VOYW1lKQoreworICAgIGlmIChzdGF0aWNfY2FzdDxJUEM6Ok1l
c3NhZ2VOYW1lPihtZXNzYWdlTmFtZSkgPT0gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9Mb2Fk
VVJMKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQorICAg
IGlmIChzdGF0aWNfY2FzdDxJUEM6Ok1lc3NhZ2VOYW1lPihtZXNzYWdlTmFtZSkgPT0gSVBDOjpN
ZXNzYWdlTmFtZTo6V2ViUGFnZV9UZXN0QXN5bmNNZXNzYWdlKQorICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICBpZiAoc3RhdGljX2Nhc3Q8SVBDOjpNZXNzYWdlTmFtZT4obWVzc2FnZU5hbWUpID09
IElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVzdEFzeW5jTWVzc2FnZVJlcGx5KQorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyNlbmRpZgorI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCisgICAgaWYg
KHN0YXRpY19jYXN0PElQQzo6TWVzc2FnZU5hbWU+KG1lc3NhZ2VOYW1lKSA9PSBJUEM6Ok1lc3Nh
Z2VOYW1lOjpXZWJQYWdlX1Rlc3RBc3luY01lc3NhZ2VXaXRoTm9Bcmd1bWVudHMpCisgICAgICAg
IHJldHVybiB0cnVlOworICAgIGlmIChzdGF0aWNfY2FzdDxJUEM6Ok1lc3NhZ2VOYW1lPihtZXNz
YWdlTmFtZSkgPT0gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9UZXN0QXN5bmNNZXNzYWdlV2l0
aE5vQXJndW1lbnRzUmVwbHkpCisgICAgICAgIHJldHVybiB0cnVlOworI2VuZGlmCisjaWYgRU5B
QkxFKFRFU1RfRkVBVFVSRSkKKyAgICBpZiAoc3RhdGljX2Nhc3Q8SVBDOjpNZXNzYWdlTmFtZT4o
bWVzc2FnZU5hbWUpID09IElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVzdEFzeW5jTWVzc2Fn
ZVdpdGhNdWx0aXBsZUFyZ3VtZW50cykKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHN0
YXRpY19jYXN0PElQQzo6TWVzc2FnZU5hbWU+KG1lc3NhZ2VOYW1lKSA9PSBJUEM6Ok1lc3NhZ2VO
YW1lOjpXZWJQYWdlX1Rlc3RBc3luY01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHNSZXBseSkK
KyAgICAgICAgcmV0dXJuIHRydWU7CisjZW5kaWYKKyAgICBpZiAoc3RhdGljX2Nhc3Q8SVBDOjpN
ZXNzYWdlTmFtZT4obWVzc2FnZU5hbWUpID09IElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVz
dFN5bmNNZXNzYWdlKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAoc3RhdGljX2Nhc3Q8
SVBDOjpNZXNzYWdlTmFtZT4obWVzc2FnZU5hbWUpID09IElQQzo6TWVzc2FnZU5hbWU6OldlYlBh
Z2VfVGVzdFN5bmNocm9ub3VzTWVzc2FnZSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYg
KHN0YXRpY19jYXN0PElQQzo6TWVzc2FnZU5hbWU+KG1lc3NhZ2VOYW1lKSA9PSBJUEM6Ok1lc3Nh
Z2VOYW1lOjpXZWJQYWdlX0xvYWRVUkwpCisgICAgICAgIHJldHVybiB0cnVlOworI2lmIEVOQUJM
RShUT1VDSF9FVkVOVFMpCisgICAgaWYgKHN0YXRpY19jYXN0PElQQzo6TWVzc2FnZU5hbWU+KG1l
c3NhZ2VOYW1lKSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX0xvYWRTb21ldGhpbmcpCisg
ICAgICAgIHJldHVybiB0cnVlOworI2VuZGlmCisjaWYgKEVOQUJMRShUT1VDSF9FVkVOVFMpICYm
IChORVNURURfTUVTU0FHRV9DT05ESVRJT04gfHwgU09NRV9PVEhFUl9NRVNTQUdFX0NPTkRJVElP
TikpCisgICAgaWYgKHN0YXRpY19jYXN0PElQQzo6TWVzc2FnZU5hbWU+KG1lc3NhZ2VOYW1lKSA9
PSBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX1RvdWNoRXZlbnQpCisgICAgICAgIHJldHVybiB0
cnVlOworI2VuZGlmCisjaWYgKEVOQUJMRShUT1VDSF9FVkVOVFMpICYmIChORVNURURfTUVTU0FH
RV9DT05ESVRJT04gJiYgU09NRV9PVEhFUl9NRVNTQUdFX0NPTkRJVElPTikpCisgICAgaWYgKHN0
YXRpY19jYXN0PElQQzo6TWVzc2FnZU5hbWU+KG1lc3NhZ2VOYW1lKSA9PSBJUEM6Ok1lc3NhZ2VO
YW1lOjpXZWJQYWdlX0FkZEV2ZW50KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyNlbmRpZgorI2lm
IEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAgaWYgKHN0YXRpY19jYXN0PElQQzo6TWVzc2FnZU5h
bWU+KG1lc3NhZ2VOYW1lKSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX0xvYWRTb21ldGhp
bmdFbHNlKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyNlbmRpZgorICAgIGlmIChzdGF0aWNfY2Fz
dDxJUEM6Ok1lc3NhZ2VOYW1lPihtZXNzYWdlTmFtZSkgPT0gSVBDOjpNZXNzYWdlTmFtZTo6V2Vi
UGFnZV9EaWRSZWNlaXZlUG9saWN5RGVjaXNpb24pCisgICAgICAgIHJldHVybiB0cnVlOworICAg
IGlmIChzdGF0aWNfY2FzdDxJUEM6Ok1lc3NhZ2VOYW1lPihtZXNzYWdlTmFtZSkgPT0gSVBDOjpN
ZXNzYWdlTmFtZTo6V2ViUGFnZV9DbG9zZSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYg
KHN0YXRpY19jYXN0PElQQzo6TWVzc2FnZU5hbWU+KG1lc3NhZ2VOYW1lKSA9PSBJUEM6Ok1lc3Nh
Z2VOYW1lOjpXZWJQYWdlX1ByZWZlcmVuY2VzRGlkQ2hhbmdlKQorICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICBpZiAoc3RhdGljX2Nhc3Q8SVBDOjpNZXNzYWdlTmFtZT4obWVzc2FnZU5hbWUpID09
IElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfU2VuZERvdWJsZUFuZEZsb2F0KQorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICBpZiAoc3RhdGljX2Nhc3Q8SVBDOjpNZXNzYWdlTmFtZT4obWVzc2Fn
ZU5hbWUpID09IElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfU2VuZEludHMpCisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIGlmIChzdGF0aWNfY2FzdDxJUEM6Ok1lc3NhZ2VOYW1lPihtZXNzYWdl
TmFtZSkgPT0gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9DcmVhdGVQbHVnaW4pCisgICAgICAg
IHJldHVybiB0cnVlOworICAgIGlmIChzdGF0aWNfY2FzdDxJUEM6Ok1lc3NhZ2VOYW1lPihtZXNz
YWdlTmFtZSkgPT0gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9SdW5KYXZhU2NyaXB0QWxlcnQp
CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmIChzdGF0aWNfY2FzdDxJUEM6Ok1lc3NhZ2VO
YW1lPihtZXNzYWdlTmFtZSkgPT0gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9HZXRQbHVnaW5z
KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAoc3RhdGljX2Nhc3Q8SVBDOjpNZXNzYWdl
TmFtZT4obWVzc2FnZU5hbWUpID09IElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfR2V0UGx1Z2lu
UHJvY2Vzc0Nvbm5lY3Rpb24pCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmIChzdGF0aWNf
Y2FzdDxJUEM6Ok1lc3NhZ2VOYW1lPihtZXNzYWdlTmFtZSkgPT0gSVBDOjpNZXNzYWdlTmFtZTo6
V2ViUGFnZV9UZXN0TXVsdGlwbGVBdHRyaWJ1dGVzKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICBpZiAoc3RhdGljX2Nhc3Q8SVBDOjpNZXNzYWdlTmFtZT4obWVzc2FnZU5hbWUpID09IElQQzo6
TWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVzdFBhcmFtZXRlckF0dHJpYnV0ZXMpCisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIGlmIChzdGF0aWNfY2FzdDxJUEM6Ok1lc3NhZ2VOYW1lPihtZXNzYWdl
TmFtZSkgPT0gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9UZW1wbGF0ZVRlc3QpCisgICAgICAg
IHJldHVybiB0cnVlOworICAgIGlmIChzdGF0aWNfY2FzdDxJUEM6Ok1lc3NhZ2VOYW1lPihtZXNz
YWdlTmFtZSkgPT0gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9TZXRWaWRlb0xheWVySUQpCisg
ICAgICAgIHJldHVybiB0cnVlOworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBpZiAoc3RhdGljX2Nh
c3Q8SVBDOjpNZXNzYWdlTmFtZT4obWVzc2FnZU5hbWUpID09IElQQzo6TWVzc2FnZU5hbWU6Oldl
YlBhZ2VfRGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24pCisgICAgICAgIHJldHVybiB0cnVl
OworI2VuZGlmCisjaWYgUExBVEZPUk0oTUFDKQorICAgIGlmIChzdGF0aWNfY2FzdDxJUEM6Ok1l
c3NhZ2VOYW1lPihtZXNzYWdlTmFtZSkgPT0gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9JbnRl
cnByZXRLZXlFdmVudCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisjZW5kaWYKKyNpZiBFTkFCTEUo
REVQUkVDQVRFRF9GRUFUVVJFKQorICAgIGlmIChzdGF0aWNfY2FzdDxJUEM6Ok1lc3NhZ2VOYW1l
PihtZXNzYWdlTmFtZSkgPT0gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9EZXByZWNhdGVkT3Bl
cmF0aW9uKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyNlbmRpZgorI2lmIEVOQUJMRShFWFBFUklN
RU5UQUxfRkVBVFVSRSkKKyAgICBpZiAoc3RhdGljX2Nhc3Q8SVBDOjpNZXNzYWdlTmFtZT4obWVz
c2FnZU5hbWUpID09IElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfRXhwZXJpbWVudGFsT3BlcmF0
aW9uKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyNlbmRpZgorICAgIGlmIChzdGF0aWNfY2FzdDxJ
UEM6Ok1lc3NhZ2VOYW1lPihtZXNzYWdlTmFtZSkgPT0gSVBDOjpNZXNzYWdlTmFtZTo6V3JhcHBl
ZEFzeW5jTWVzc2FnZUZvclRlc3RpbmcpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmIChz
dGF0aWNfY2FzdDxJUEM6Ok1lc3NhZ2VOYW1lPihtZXNzYWdlTmFtZSkgPT0gSVBDOjpNZXNzYWdl
TmFtZTo6U3luY01lc3NhZ2VSZXBseSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHN0
YXRpY19jYXN0PElQQzo6TWVzc2FnZU5hbWU+KG1lc3NhZ2VOYW1lKSA9PSBJUEM6Ok1lc3NhZ2VO
YW1lOjpJbml0aWFsaXplQ29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgcmV0
dXJuIGZhbHNlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1NjcmlwdHMvd2Via2l0L01lc3NhZ2VSZWNlaXZlci1leHBlY3RlZC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9NZXNzYWdlUmVjZWl2ZXItZXhwZWN0ZWQu
Y3BwCShyZXZpc2lvbiAyNjA3NjQpCisrKyBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L01l
c3NhZ2VSZWNlaXZlci1leHBlY3RlZC5jcHAJKG5vbmV4aXN0ZW50KQpAQCAtMSwyMDMgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECi0gKiBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IK
LSAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwKLSAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0gKiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUgotICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0g
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lmIChFTkFCTEUo
V0VCS0lUMikgJiYgKE5FU1RFRF9NQVNURVJfQ09ORElUSU9OIHx8IE1BU1RFUl9PUiAmJiBNQVNU
RVJfQU5EKSkKLQotI2luY2x1ZGUgIldlYlBhZ2UuaCIKLQotI2luY2x1ZGUgIkFyZ3VtZW50Q29k
ZXJzLmgiCi0jaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgotI2luY2x1ZGUgIkRlY29kZXIuaCIKLSNp
ZiBFTkFCTEUoREVQUkVDQVRFRF9GRUFUVVJFKSB8fCBFTkFCTEUoRVhQRVJJTUVOVEFMX0ZFQVRV
UkUpCi0jaW5jbHVkZSAiRHVtbXlUeXBlLmgiCi0jZW5kaWYKLSNpbmNsdWRlICJIYW5kbGVNZXNz
YWdlLmgiCi0jaWYgUExBVEZPUk0oTUFDKQotI2luY2x1ZGUgIk1hY2hQb3J0LmgiCi0jZW5kaWYK
LSNpbmNsdWRlICJQbHVnaW4uaCIKLSNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIK
LSNpZiAoRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgKE5FU1RFRF9NRVNTQUdFX0NPTkRJVElPTiAm
JiBTT01FX09USEVSX01FU1NBR0VfQ09ORElUSU9OKSkgfHwgKEVOQUJMRShUT1VDSF9FVkVOVFMp
ICYmIChORVNURURfTUVTU0FHRV9DT05ESVRJT04gfHwgU09NRV9PVEhFUl9NRVNTQUdFX0NPTkRJ
VElPTikpCi0jaW5jbHVkZSAiV2ViRXZlbnQuaCIKLSNlbmRpZgotI2luY2x1ZGUgIldlYlBhZ2VN
ZXNzYWdlcy5oIgotI2luY2x1ZGUgIldlYlByZWZlcmVuY2VzU3RvcmUuaCIKLSNpbmNsdWRlIDxX
ZWJDb3JlL0dyYXBoaWNzTGF5ZXIuaD4KLSNpZiBQTEFURk9STShNQUMpCi0jaW5jbHVkZSA8V2Vi
Q29yZS9LZXlib2FyZEV2ZW50Lmg+Ci0jZW5kaWYKLSNpbmNsdWRlIDxXZWJDb3JlL1BsdWdpbkRh
dGEuaD4KLSNpbmNsdWRlIDx1dGlsaXR5PgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1u
YW1lc3BhY2UgTWVzc2FnZXMgewotCi1uYW1lc3BhY2UgV2ViUGFnZSB7Ci0KLXZvaWQgR2V0UGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OnNlbmQoc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4m
JiBlbmNvZGVyLCBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IElQQzo6Q29ubmVj
dGlvbjo6SGFuZGxlJiBjb25uZWN0aW9uSGFuZGxlKQotewotICAgICplbmNvZGVyIDw8IGNvbm5l
Y3Rpb25IYW5kbGU7Ci0gICAgY29ubmVjdGlvbi5zZW5kU3luY1JlcGx5KFdURk1vdmUoZW5jb2Rl
cikpOwotfQotCi12b2lkIFRlc3RNdWx0aXBsZUF0dHJpYnV0ZXM6OnNlbmQoc3RkOjp1bmlxdWVf
cHRyPElQQzo6RW5jb2Rlcj4mJiBlbmNvZGVyLCBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24p
Ci17Ci0gICAgY29ubmVjdGlvbi5zZW5kU3luY1JlcGx5KFdURk1vdmUoZW5jb2RlcikpOwotfQot
Ci19IC8vIG5hbWVzcGFjZSBXZWJQYWdlCi0KLX0gLy8gbmFtZXNwYWNlIE1lc3NhZ2VzCi0KLW5h
bWVzcGFjZSBXZWJLaXQgewotCi12b2lkIFdlYlBhZ2U6OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQotewotICAgIGF1
dG8gcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpOwotICAgIGlmIChkZWNvZGVyLm1lc3Nh
Z2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRVUkw6Om5hbWUoKSkgewotICAgICAg
ICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRVUkw+KGRlY29kZXIs
IHRoaXMsICZXZWJQYWdlOjpsb2FkVVJMKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNpZiBF
TkFCTEUoVE9VQ0hfRVZFTlRTKQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVz
c2FnZXM6OldlYlBhZ2U6OkxvYWRTb21ldGhpbmc6Om5hbWUoKSkgewotICAgICAgICBJUEM6Omhh
bmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRTb21ldGhpbmc+KGRlY29kZXIsIHRo
aXMsICZXZWJQYWdlOjpsb2FkU29tZXRoaW5nKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNl
bmRpZgotI2lmIChFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiAoTkVTVEVEX01FU1NBR0VfQ09ORElU
SU9OIHx8IFNPTUVfT1RIRVJfTUVTU0FHRV9DT05ESVRJT04pKQotICAgIGlmIChkZWNvZGVyLm1l
c3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OlRvdWNoRXZlbnQ6Om5hbWUoKSkgewot
ICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OlRvdWNoRXZlbnQ+
KGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjp0b3VjaEV2ZW50KTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLSNlbmRpZgotI2lmIChFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiAoTkVTVEVEX01FU1NB
R0VfQ09ORElUSU9OICYmIFNPTUVfT1RIRVJfTUVTU0FHRV9DT05ESVRJT04pKQotICAgIGlmIChk
ZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OkFkZEV2ZW50OjpuYW1l
KCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpBZGRF
dmVudD4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OmFkZEV2ZW50KTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLSNlbmRpZgotI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCi0gICAgaWYgKGRlY29k
ZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFNvbWV0aGluZ0Vsc2U6
Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6
OkxvYWRTb21ldGhpbmdFbHNlPihkZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6bG9hZFNvbWV0aGlu
Z0Vsc2UpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlmCi0gICAgaWYgKGRlY29kZXIu
bWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVjZWl2ZVBvbGljeURlY2lz
aW9uOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQ
YWdlOjpEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24+KGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjpk
aWRSZWNlaXZlUG9saWN5RGVjaXNpb24pOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlm
IChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OkNsb3NlOjpuYW1l
KCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpDbG9z
ZT4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OmNsb3NlKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpQ
cmVmZXJlbmNlc0RpZENoYW5nZTo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2Fn
ZTxNZXNzYWdlczo6V2ViUGFnZTo6UHJlZmVyZW5jZXNEaWRDaGFuZ2U+KGRlY29kZXIsIHRoaXMs
ICZXZWJQYWdlOjpwcmVmZXJlbmNlc0RpZENoYW5nZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6U2Vu
ZERvdWJsZUFuZEZsb2F0OjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1l
c3NhZ2VzOjpXZWJQYWdlOjpTZW5kRG91YmxlQW5kRmxvYXQ+KGRlY29kZXIsIHRoaXMsICZXZWJQ
YWdlOjpzZW5kRG91YmxlQW5kRmxvYXQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlm
IChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OlNlbmRJbnRzOjpu
YW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpT
ZW5kSW50cz4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OnNlbmRJbnRzKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpX
ZWJQYWdlOjpUZXN0UGFyYW1ldGVyQXR0cmlidXRlczo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6
aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6VGVzdFBhcmFtZXRlckF0dHJpYnV0ZXM+
KGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjp0ZXN0UGFyYW1ldGVyQXR0cmlidXRlcyk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNz
YWdlczo6V2ViUGFnZTo6VGVtcGxhdGVUZXN0OjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5k
bGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpUZW1wbGF0ZVRlc3Q+KGRlY29kZXIsIHRoaXMs
ICZXZWJQYWdlOjp0ZW1wbGF0ZVRlc3QpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlm
IChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OlNldFZpZGVvTGF5
ZXJJRDo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2Vi
UGFnZTo6U2V0VmlkZW9MYXllcklEPihkZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6c2V0VmlkZW9M
YXllcklEKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNpZiBQTEFURk9STShNQUMpCi0gICAg
aWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6RGlkQ3JlYXRl
V2ViUHJvY2Vzc0Nvbm5lY3Rpb246Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3Nh
Z2U8TWVzc2FnZXM6OldlYlBhZ2U6OkRpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uPihkZWNv
ZGVyLCB0aGlzLCAmV2ViUGFnZTo6ZGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24pOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlmCi0jaWYgRU5BQkxFKERFUFJFQ0FURURfRkVBVFVS
RSkKLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpE
ZXByZWNhdGVkT3BlcmF0aW9uOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdl
PE1lc3NhZ2VzOjpXZWJQYWdlOjpEZXByZWNhdGVkT3BlcmF0aW9uPihkZWNvZGVyLCB0aGlzLCAm
V2ViUGFnZTo6ZGVwcmVjYXRlZE9wZXJhdGlvbik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0j
ZW5kaWYKLSNpZiBFTkFCTEUoRVhQRVJJTUVOVEFMX0ZFQVRVUkUpCi0gICAgaWYgKGRlY29kZXIu
bWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6RXhwZXJpbWVudGFsT3BlcmF0aW9u
OjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdl
OjpFeHBlcmltZW50YWxPcGVyYXRpb24+KGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjpleHBlcmlt
ZW50YWxPcGVyYXRpb24pOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlmCi0gICAgVU5V
U0VEX1BBUkFNKGNvbm5lY3Rpb24pOwotICAgIFVOVVNFRF9QQVJBTShkZWNvZGVyKTsKLSAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotdm9pZCBXZWJQYWdlOjpkaWRSZWNlaXZlU3luY01l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIs
IHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiByZXBseUVuY29kZXIpCi17Ci0gICAgYXV0
byBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyk7Ci0gICAgaWYgKGRlY29kZXIubWVzc2Fn
ZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6Q3JlYXRlUGx1Z2luOjpuYW1lKCkpIHsKLSAg
ICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpDcmVhdGVQbHVnaW4+
KGRlY29kZXIsICpyZXBseUVuY29kZXIsIHRoaXMsICZXZWJQYWdlOjpjcmVhdGVQbHVnaW4pOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0g
TWVzc2FnZXM6OldlYlBhZ2U6OlJ1bkphdmFTY3JpcHRBbGVydDo6bmFtZSgpKSB7Ci0gICAgICAg
IElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6UnVuSmF2YVNjcmlwdEFsZXJ0
PihkZWNvZGVyLCAqcmVwbHlFbmNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6cnVuSmF2YVNjcmlwdEFs
ZXJ0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFt
ZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRQbHVnaW5zOjpuYW1lKCkpIHsKLSAgICAgICAg
SVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRQbHVnaW5zPihkZWNvZGVy
LCAqcmVwbHlFbmNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6Z2V0UGx1Z2lucyk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6
V2ViUGFnZTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246Om5hbWUoKSkgewotICAgICAgICBJ
UEM6OmhhbmRsZU1lc3NhZ2VTeW5jaHJvbm91czxNZXNzYWdlczo6V2ViUGFnZTo6R2V0UGx1Z2lu
UHJvY2Vzc0Nvbm5lY3Rpb24+KGNvbm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5RW5jb2RlciwgdGhp
cywgJldlYlBhZ2U6OmdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQ
YWdlOjpUZXN0TXVsdGlwbGVBdHRyaWJ1dGVzOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5k
bGVNZXNzYWdlU3luY2hyb25vdXNXYW50c0Nvbm5lY3Rpb248TWVzc2FnZXM6OldlYlBhZ2U6OlRl
c3RNdWx0aXBsZUF0dHJpYnV0ZXM+KGNvbm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5RW5jb2Rlciwg
dGhpcywgJldlYlBhZ2U6OnRlc3RNdWx0aXBsZUF0dHJpYnV0ZXMpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotI2lmIFBMQVRGT1JNKE1BQykKLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgp
ID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpJbnRlcnByZXRLZXlFdmVudDo6bmFtZSgpKSB7Ci0gICAg
ICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6SW50ZXJwcmV0S2V5RXZl
bnQ+KGRlY29kZXIsICpyZXBseUVuY29kZXIsIHRoaXMsICZXZWJQYWdlOjppbnRlcnByZXRLZXlF
dmVudCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYKLSAgICBVTlVTRURfUEFSQU0o
Y29ubmVjdGlvbik7Ci0gICAgVU5VU0VEX1BBUkFNKGRlY29kZXIpOwotICAgIFVOVVNFRF9QQVJB
TShyZXBseUVuY29kZXIpOwotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi19IC8vIG5h
bWVzcGFjZSBXZWJLaXQKLQotCi0jZW5kaWYgLy8gKEVOQUJMRShXRUJLSVQyKSAmJiAoTkVTVEVE
X01BU1RFUl9DT05ESVRJT04gfHwgTUFTVEVSX09SICYmIE1BU1RFUl9BTkQpKQoKUHJvcGVydHkg
Y2hhbmdlcyBvbjogU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9NZXNzYWdlUmVjZWl2ZXIt
ZXhwZWN0ZWQuY3BwCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMSArMCww
ICMjCi1uYXRpdmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogU291cmNl
L1dlYktpdC9TY3JpcHRzL3dlYmtpdC9NZXNzYWdlUmVjZWl2ZXJTdXBlcmNsYXNzLWV4cGVjdGVk
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L01lc3NhZ2VS
ZWNlaXZlclN1cGVyY2xhc3MtZXhwZWN0ZWQuY3BwCShyZXZpc2lvbiAyNjA3NjQpCisrKyBTb3Vy
Y2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L01lc3NhZ2VSZWNlaXZlclN1cGVyY2xhc3MtZXhwZWN0
ZWQuY3BwCShub25leGlzdGVudCkKQEAgLTEsMTg5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTAtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAotICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAq
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0gKiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0g
KiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUgotICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSAqIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksCi0gKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpbmNsdWRlICJXZWJQYWdlLmgiCi0KLSNpbmNsdWRl
ICJBcmd1bWVudENvZGVycy5oIgotI2luY2x1ZGUgIkRlY29kZXIuaCIKLSNpbmNsdWRlICJIYW5k
bGVNZXNzYWdlLmgiCi0jaW5jbHVkZSAiVGVzdENsYXNzTmFtZS5oIgotI2lmIEVOQUJMRShURVNU
X0ZFQVRVUkUpCi0jaW5jbHVkZSAiVGVzdFR3b1N0YXRlRW51bS5oIgotI2VuZGlmCi0jaW5jbHVk
ZSAiV2ViUGFnZU1lc3NhZ2VzLmgiCi0jaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+Ci0jaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBNZXNzYWdlcyB7Ci0KLW5hbWVz
cGFjZSBXZWJQYWdlIHsKLQotI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCi0KLXZvaWQgVGVzdEFz
eW5jTWVzc2FnZTo6Y2FsbFJlcGx5KElQQzo6RGVjb2RlciYgZGVjb2RlciwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCh1aW50NjRfdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAgICBPcHRp
b25hbDx1aW50NjRfdD4gcmVzdWx0OwotICAgIGRlY29kZXIgPj4gcmVzdWx0OwotICAgIGlmICgh
cmVzdWx0KSB7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICBjYW5jZWxS
ZXBseShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0gICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZSgqcmVzdWx0KSk7Ci19Ci0KLXZvaWQgVGVz
dEFzeW5jTWVzc2FnZTo6Y2FuY2VsUmVwbHkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRf
dCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6
OkFzeW5jUmVwbHlFcnJvcjx1aW50NjRfdD46OmNyZWF0ZSgpKTsKLX0KLQotdm9pZCBUZXN0QXN5
bmNNZXNzYWdlOjpzZW5kKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiYgZW5jb2Rlciwg
SVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCB1aW50NjRfdCByZXN1bHQpCi17Ci0gICAgKmVu
Y29kZXIgPDwgcmVzdWx0OwotICAgIGNvbm5lY3Rpb24uc2VuZFN5bmNSZXBseShXVEZNb3ZlKGVu
Y29kZXIpKTsKLX0KLQotI2VuZGlmCi0KLSNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQotCi12b2lk
IFRlc3RBc3luY01lc3NhZ2VXaXRoTm9Bcmd1bWVudHM6OmNhbGxSZXBseShJUEM6OkRlY29kZXIm
IGRlY29kZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
LXsKLSAgICBjb21wbGV0aW9uSGFuZGxlcigpOwotfQotCi12b2lkIFRlc3RBc3luY01lc3NhZ2VX
aXRoTm9Bcmd1bWVudHM6OmNhbmNlbFJlcGx5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKLXsKLSAgICBjb21wbGV0aW9uSGFuZGxlcigpOwotfQotCi12b2lk
IFRlc3RBc3luY01lc3NhZ2VXaXRoTm9Bcmd1bWVudHM6OnNlbmQoc3RkOjp1bmlxdWVfcHRyPElQ
Qzo6RW5jb2Rlcj4mJiBlbmNvZGVyLCBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCi17Ci0g
ICAgY29ubmVjdGlvbi5zZW5kU3luY1JlcGx5KFdURk1vdmUoZW5jb2RlcikpOwotfQotCi0jZW5k
aWYKLQotI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCi0KLXZvaWQgVGVzdEFzeW5jTWVzc2FnZVdp
dGhNdWx0aXBsZUFyZ3VtZW50czo6Y2FsbFJlcGx5KElQQzo6RGVjb2RlciYgZGVjb2RlciwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sJiYsIHVpbnQ2NF90JiYpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQotewotICAgIE9wdGlvbmFsPGJvb2w+IGZsYWc7Ci0gICAgZGVjb2RlciA+PiBmbGFnOwot
ICAgIGlmICghZmxhZykgewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAg
Y2FuY2VsUmVwbHkoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiB2YWx1ZTsKLSAgICBkZWNvZGVyID4+IHZh
bHVlOwotICAgIGlmICghdmFsdWUpIHsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgICAgIGNhbmNlbFJlcGx5KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLSAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKCpmbGFnKSwgV1RG
TW92ZSgqdmFsdWUpKTsKLX0KLQotdm9pZCBUZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJn
dW1lbnRzOjpjYW5jZWxSZXBseShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wmJiwgdWludDY0
X3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCi17Ci0gICAgY29tcGxldGlvbkhhbmRsZXIoSVBD
OjpBc3luY1JlcGx5RXJyb3I8Ym9vbD46OmNyZWF0ZSgpLCBJUEM6OkFzeW5jUmVwbHlFcnJvcjx1
aW50NjRfdD46OmNyZWF0ZSgpKTsKLX0KLQotdm9pZCBUZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRp
cGxlQXJndW1lbnRzOjpzZW5kKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiYgZW5jb2Rl
ciwgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBib29sIGZsYWcsIHVpbnQ2NF90IHZhbHVl
KQotewotICAgICplbmNvZGVyIDw8IGZsYWc7Ci0gICAgKmVuY29kZXIgPDwgdmFsdWU7Ci0gICAg
Y29ubmVjdGlvbi5zZW5kU3luY1JlcGx5KFdURk1vdmUoZW5jb2RlcikpOwotfQotCi0jZW5kaWYK
LQotdm9pZCBUZXN0U3luY01lc3NhZ2U6OnNlbmQoc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rl
cj4mJiBlbmNvZGVyLCBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIHVpbnQ4X3QgcmVwbHkp
Ci17Ci0gICAgKmVuY29kZXIgPDwgcmVwbHk7Ci0gICAgY29ubmVjdGlvbi5zZW5kU3luY1JlcGx5
KFdURk1vdmUoZW5jb2RlcikpOwotfQotCi12b2lkIFRlc3RTeW5jaHJvbm91c01lc3NhZ2U6OnNl
bmQoc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mJiBlbmNvZGVyLCBJUEM6OkNvbm5lY3Rp
b24mIGNvbm5lY3Rpb24sIGNvbnN0IE9wdGlvbmFsPFdlYktpdDo6VGVzdENsYXNzTmFtZT4mIG9w
dGlvbmFsUmVwbHkpCi17Ci0gICAgKmVuY29kZXIgPDwgb3B0aW9uYWxSZXBseTsKLSAgICBjb25u
ZWN0aW9uLnNlbmRTeW5jUmVwbHkoV1RGTW92ZShlbmNvZGVyKSk7Ci19Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYlBhZ2UKLQotfSAvLyBuYW1lc3BhY2UgTWVzc2FnZXMKLQotbmFtZXNwYWNlIFdlYktp
dCB7Ci0KLXZvaWQgV2ViUGFnZTo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBj
b25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpCi17Ci0gICAgYXV0byBwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyk7Ci0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBN
ZXNzYWdlczo6V2ViUGFnZTo6TG9hZFVSTDo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxl
TWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFVSTD4oZGVjb2RlciwgdGhpcywgJldlYlBh
Z2U6OmxvYWRVUkwpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2lmIEVOQUJMRShURVNUX0ZF
QVRVUkUpCi0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFn
ZTo6VGVzdEFzeW5jTWVzc2FnZTo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2Fn
ZUFzeW5jPE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0QXN5bmNNZXNzYWdlPihjb25uZWN0aW9uLCBk
ZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6dGVzdEFzeW5jTWVzc2FnZSk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0jZW5kaWYKLSNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQotICAgIGlmIChkZWNv
ZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RBc3luY01lc3NhZ2VX
aXRoTm9Bcmd1bWVudHM6Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2VBc3lu
YzxNZXNzYWdlczo6V2ViUGFnZTo6VGVzdEFzeW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50cz4oY29u
bmVjdGlvbiwgZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OnRlc3RBc3luY01lc3NhZ2VXaXRoTm9B
cmd1bWVudHMpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlmCi0jaWYgRU5BQkxFKFRF
U1RfRkVBVFVSRSkKLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpX
ZWJQYWdlOjpUZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1lbnRzOjpuYW1lKCkpIHsK
LSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlQXN5bmM8TWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RB
c3luY01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHM+KGNvbm5lY3Rpb24sIGRlY29kZXIsIHRo
aXMsICZXZWJQYWdlOjp0ZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1lbnRzKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLSNlbmRpZgotICAgIFdlYlBhZ2VCYXNlOjpkaWRSZWNlaXZl
TWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKLX0KLQotdm9pZCBXZWJQYWdlOjpkaWRSZWNl
aXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXIm
IGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiByZXBseUVuY29kZXIpCi17
Ci0gICAgYXV0byBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyk7Ci0gICAgaWYgKGRlY29k
ZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6VGVzdFN5bmNNZXNzYWdlOjpu
YW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlU3luY2hyb25vdXM8TWVzc2FnZXM6
OldlYlBhZ2U6OlRlc3RTeW5jTWVzc2FnZT4oY29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNv
ZGVyLCB0aGlzLCAmV2ViUGFnZTo6dGVzdFN5bmNNZXNzYWdlKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdl
OjpUZXN0U3luY2hyb25vdXNNZXNzYWdlOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVN
ZXNzYWdlU3luY2hyb25vdXM8TWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RTeW5jaHJvbm91c01lc3Nh
Z2U+KGNvbm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5RW5jb2RlciwgdGhpcywgJldlYlBhZ2U6OnRl
c3RTeW5jaHJvbm91c01lc3NhZ2UpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIFVOVVNF
RF9QQVJBTShjb25uZWN0aW9uKTsKLSAgICBVTlVTRURfUEFSQU0oZGVjb2Rlcik7Ci0gICAgVU5V
U0VEX1BBUkFNKHJlcGx5RW5jb2Rlcik7Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0K
LX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV2Vi
S2l0L1NjcmlwdHMvd2Via2l0L01lc3NhZ2VSZWNlaXZlclN1cGVyY2xhc3MtZXhwZWN0ZWQuY3Bw
Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX18KRGVsZXRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMSArMCwwICMjCi1uYXRpdmUK
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogU291cmNlL1dlYktpdC9TY3Jp
cHRzL3dlYmtpdC9NZXNzYWdlcy1leHBlY3RlZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvU2NyaXB0cy93ZWJraXQvTWVzc2FnZXMtZXhwZWN0ZWQuaAkocmV2aXNpb24gMjYwNzY0KQor
KysgU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9NZXNzYWdlcy1leHBlY3RlZC5oCShub25l
eGlzdGVudCkKQEAgLTEsNTcwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnIEFORAotICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0gKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0gKiBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUgotICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0g
KiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9u
Y2UKLQotI2lmIChFTkFCTEUoV0VCS0lUMikgJiYgKE5FU1RFRF9NQVNURVJfQ09ORElUSU9OIHx8
IE1BU1RFUl9PUiAmJiBNQVNURVJfQU5EKSkKLQotI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgi
Ci0jaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgotI2luY2x1ZGUgIlBsdWdpbi5oIgotI2luY2x1ZGUg
IldlYlBhZ2VNZXNzYWdlc1JlcGxpZXMuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzTGF5
ZXIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0tleWJvYXJkRXZlbnQuaD4KLSNpbmNsdWRlIDxXZWJD
b3JlL1BsdWdpbkRhdGEuaD4KLSNpbmNsdWRlIDx1dGlsaXR5PgotI2luY2x1ZGUgPHd0Zi9Gb3J3
YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvVGhyZWFkU2Fm
ZVJlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBJUEMgewotY2xhc3MgRHVtbXlUeXBlOwotY2xh
c3MgTWFjaFBvcnQ7Ci19Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotY2xhc3MgV2ViUHJlZmVyZW5j
ZXNTdG9yZTsKLWNsYXNzIFdlYlRvdWNoRXZlbnQ7Ci19Ci0KLW5hbWVzcGFjZSBNZXNzYWdlcyB7
Ci1uYW1lc3BhY2UgV2ViUGFnZSB7Ci0KLXN0YXRpYyBpbmxpbmUgSVBDOjpTdHJpbmdSZWZlcmVu
Y2UgbWVzc2FnZVJlY2VpdmVyTmFtZSgpCi17Ci0gICAgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJl
bmNlKCJXZWJQYWdlIik7Ci19Ci0KLWNsYXNzIExvYWRVUkwgewotcHVibGljOgotICAgIHR5cGVk
ZWYgc3RkOjp0dXBsZTxjb25zdCBTdHJpbmcmPiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBD
OjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVy
TmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVy
biBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiTG9hZFVSTCIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJv
b2wgaXNTeW5jID0gZmFsc2U7Ci0KLSAgICBleHBsaWNpdCBMb2FkVVJMKGNvbnN0IFN0cmluZyYg
dXJsKQotICAgICAgICA6IG1fYXJndW1lbnRzKHVybCkKLSAgICB7Ci0gICAgfQotCi0gICAgY29u
c3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1f
YXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7
Ci19OwotCi0jaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLWNsYXNzIExvYWRTb21ldGhpbmcgewot
cHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBTdHJpbmcmPiBBcmd1bWVudHM7
Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1
cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJl
bmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiTG9hZFNvbWV0aGluZyIp
OyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7Ci0KLSAgICBleHBsaWNp
dCBMb2FkU29tZXRoaW5nKGNvbnN0IFN0cmluZyYgdXJsKQotICAgICAgICA6IG1fYXJndW1lbnRz
KHVybCkKLSAgICB7Ci0gICAgfQotCi0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBj
b25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0
ZToKLSAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19OwotI2VuZGlmCi0KLSNpZiAoRU5BQkxF
KFRPVUNIX0VWRU5UUykgJiYgKE5FU1RFRF9NRVNTQUdFX0NPTkRJVElPTiB8fCBTT01FX09USEVS
X01FU1NBR0VfQ09ORElUSU9OKSkKLWNsYXNzIFRvdWNoRXZlbnQgewotcHVibGljOgotICAgIHR5
cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBXZWJLaXQ6OldlYlRvdWNoRXZlbnQmPiBBcmd1bWVudHM7
Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1
cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJl
bmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiVG91Y2hFdmVudCIpOyB9
Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7Ci0KLSAgICBleHBsaWNpdCBU
b3VjaEV2ZW50KGNvbnN0IFdlYktpdDo6V2ViVG91Y2hFdmVudCYgZXZlbnQpCi0gICAgICAgIDog
bV9hcmd1bWVudHMoZXZlbnQpCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0IEFyZ3VtZW50cyYg
YXJndW1lbnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAg
ICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLSNlbmRpZgot
Ci0jaWYgKEVOQUJMRShUT1VDSF9FVkVOVFMpICYmIChORVNURURfTUVTU0FHRV9DT05ESVRJT04g
JiYgU09NRV9PVEhFUl9NRVNTQUdFX0NPTkRJVElPTikpCi1jbGFzcyBBZGRFdmVudCB7Ci1wdWJs
aWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGNvbnN0IFdlYktpdDo6V2ViVG91Y2hFdmVudCY+
IEFyZ3VtZW50czsKLQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5h
bWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpT
dHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJBZGRF
dmVudCIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7Ci0KLSAgICBl
eHBsaWNpdCBBZGRFdmVudChjb25zdCBXZWJLaXQ6OldlYlRvdWNoRXZlbnQmIGV2ZW50KQotICAg
ICAgICA6IG1fYXJndW1lbnRzKGV2ZW50KQotICAgIHsKLSAgICB9Ci0KLSAgICBjb25zdCBBcmd1
bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9hcmd1bWVu
dHM7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKLX07Ci0j
ZW5kaWYKLQotI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCi1jbGFzcyBMb2FkU29tZXRoaW5nRWxz
ZSB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGNvbnN0IFN0cmluZyY+IEFyZ3Vt
ZW50czsKLQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7
IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdS
ZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJMb2FkU29tZXRo
aW5nRWxzZSIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7Ci0KLSAg
ICBleHBsaWNpdCBMb2FkU29tZXRoaW5nRWxzZShjb25zdCBTdHJpbmcmIHVybCkKLSAgICAgICAg
OiBtX2FyZ3VtZW50cyh1cmwpCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0IEFyZ3VtZW50cyYg
YXJndW1lbnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAg
ICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLSNlbmRpZgot
Ci1jbGFzcyBEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24gewotcHVibGljOgotICAgIHR5cGVkZWYg
c3RkOjp0dXBsZTx1aW50NjRfdCwgdWludDY0X3QsIHVpbnQzMl90PiBBcmd1bWVudHM7Ci0KLSAg
ICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVz
c2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5h
bWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiRGlkUmVjZWl2ZVBvbGljeURlY2lz
aW9uIik7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKLQotICAgIERp
ZFJlY2VpdmVQb2xpY3lEZWNpc2lvbih1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBsaXN0ZW5l
cklELCB1aW50MzJfdCBwb2xpY3lBY3Rpb24pCi0gICAgICAgIDogbV9hcmd1bWVudHMoZnJhbWVJ
RCwgbGlzdGVuZXJJRCwgcG9saWN5QWN0aW9uKQotICAgIHsKLSAgICB9Ci0KLSAgICBjb25zdCBB
cmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9hcmd1
bWVudHM7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKLX07
Ci0KLWNsYXNzIENsb3NlIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8PiBBcmd1
bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkg
eyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6U3RyaW5n
UmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiQ2xvc2UiKTsg
fQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOwotCi0gICAgY29uc3QgQXJn
dW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1l
bnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19Owot
Ci1jbGFzcyBQcmVmZXJlbmNlc0RpZENoYW5nZSB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6
OnR1cGxlPGNvbnN0IFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZSY+IEFyZ3VtZW50czsKLQot
ICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVybiBt
ZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2Ug
bmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJQcmVmZXJlbmNlc0RpZENoYW5n
ZSIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7Ci0KLSAgICBleHBs
aWNpdCBQcmVmZXJlbmNlc0RpZENoYW5nZShjb25zdCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3Rv
cmUmIHN0b3JlKQotICAgICAgICA6IG1fYXJndW1lbnRzKHN0b3JlKQotICAgIHsKLSAgICB9Ci0K
LSAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewotICAgICAgICBy
ZXR1cm4gbV9hcmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBtX2Fy
Z3VtZW50czsKLX07Ci0KLWNsYXNzIFNlbmREb3VibGVBbmRGbG9hdCB7Ci1wdWJsaWM6Ci0gICAg
dHlwZWRlZiBzdGQ6OnR1cGxlPGRvdWJsZSwgZmxvYXQ+IEFyZ3VtZW50czsKLQotICAgIHN0YXRp
YyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVj
ZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsg
cmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJTZW5kRG91YmxlQW5kRmxvYXQiKTsgfQotICAg
IHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOwotCi0gICAgU2VuZERvdWJsZUFuZEZs
b2F0KGRvdWJsZSBkLCBmbG9hdCBmKQotICAgICAgICA6IG1fYXJndW1lbnRzKGQsIGYpCi0gICAg
ewotICAgIH0KLQotICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKLSAgICB7
Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJn
dW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLQotY2xhc3MgU2VuZEludHMgewotcHVibGljOgotICAg
IHR5cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBWZWN0b3I8dWludDY0X3Q+JiwgY29uc3QgVmVjdG9y
PFZlY3Rvcjx1aW50NjRfdD4+Jj4gQXJndW1lbnRzOwotCi0gICAgc3RhdGljIElQQzo6U3RyaW5n
UmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsg
fQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpT
dHJpbmdSZWZlcmVuY2UoIlNlbmRJbnRzIik7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5
bmMgPSBmYWxzZTsKLQotICAgIFNlbmRJbnRzKGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIGludHMs
IGNvbnN0IFZlY3RvcjxWZWN0b3I8dWludDY0X3Q+PiYgaW50VmVjdG9ycykKLSAgICAgICAgOiBt
X2FyZ3VtZW50cyhpbnRzLCBpbnRWZWN0b3JzKQotICAgIHsKLSAgICB9Ci0KLSAgICBjb25zdCBB
cmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9hcmd1
bWVudHM7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKLX07
Ci0KLWNsYXNzIENyZWF0ZVBsdWdpbiB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxl
PHVpbnQ2NF90LCBjb25zdCBXZWJLaXQ6OlBsdWdpbjo6UGFyYW1ldGVycyY+IEFyZ3VtZW50czsK
LQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVy
biBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVu
Y2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJDcmVhdGVQbHVnaW4iKTsg
fQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IHRydWU7Ci0KLSAgICB1c2luZyBSZXBs
eSA9IHN0ZDo6dHVwbGU8Ym9vbCY+OwotICAgIHVzaW5nIFJlcGx5QXJndW1lbnRzID0gc3RkOjp0
dXBsZTxib29sPjsKLSAgICBDcmVhdGVQbHVnaW4odWludDY0X3QgcGx1Z2luSW5zdGFuY2VJRCwg
Y29uc3QgV2ViS2l0OjpQbHVnaW46OlBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCi0gICAgICAgIDog
bV9hcmd1bWVudHMocGx1Z2luSW5zdGFuY2VJRCwgcGFyYW1ldGVycykKLSAgICB7Ci0gICAgfQot
Ci0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsKLSAgICAgICAg
cmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1bWVudHMgbV9h
cmd1bWVudHM7Ci19OwotCi1jbGFzcyBSdW5KYXZhU2NyaXB0QWxlcnQgewotcHVibGljOgotICAg
IHR5cGVkZWYgc3RkOjp0dXBsZTx1aW50NjRfdCwgY29uc3QgU3RyaW5nJj4gQXJndW1lbnRzOwot
Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJu
IG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsgfQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5j
ZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIlJ1bkphdmFTY3JpcHRBbGVy
dCIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gdHJ1ZTsKLQotICAgIHVzaW5n
IFJlcGx5ID0gc3RkOjp0dXBsZTw+OwotICAgIHVzaW5nIFJlcGx5QXJndW1lbnRzID0gc3RkOjp0
dXBsZTw+OwotICAgIFJ1bkphdmFTY3JpcHRBbGVydCh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBT
dHJpbmcmIG1lc3NhZ2UpCi0gICAgICAgIDogbV9hcmd1bWVudHMoZnJhbWVJRCwgbWVzc2FnZSkK
LSAgICB7Ci0gICAgfQotCi0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAot
ICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAg
ICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19OwotCi1jbGFzcyBHZXRQbHVnaW5zIHsKLXB1Ymxp
YzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8Ym9vbD4gQXJndW1lbnRzOwotCi0gICAgc3RhdGlj
IElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNl
aXZlck5hbWUoKTsgfQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyBy
ZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIkdldFBsdWdpbnMiKTsgfQotICAgIHN0YXRpYyBj
b25zdCBib29sIGlzU3luYyA9IHRydWU7Ci0KLSAgICB1c2luZyBSZXBseSA9IHN0ZDo6dHVwbGU8
VmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+Jj47Ci0gICAgdXNpbmcgUmVwbHlBcmd1bWVudHMg
PSBzdGQ6OnR1cGxlPFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPj47Ci0gICAgZXhwbGljaXQg
R2V0UGx1Z2lucyhib29sIHJlZnJlc2gpCi0gICAgICAgIDogbV9hcmd1bWVudHMocmVmcmVzaCkK
LSAgICB7Ci0gICAgfQotCi0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAot
ICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAg
ICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19OwotCi1jbGFzcyBHZXRQbHVnaW5Qcm9jZXNzQ29u
bmVjdGlvbiB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGNvbnN0IFN0cmluZyY+
IEFyZ3VtZW50czsKLQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5h
bWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpT
dHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJHZXRQ
bHVnaW5Qcm9jZXNzQ29ubmVjdGlvbiIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5j
ID0gdHJ1ZTsKLQotICAgIHVzaW5nIERlbGF5ZWRSZXBseSA9IEdldFBsdWdpblByb2Nlc3NDb25u
ZWN0aW9uRGVsYXllZFJlcGx5OwotICAgIHN0YXRpYyB2b2lkIHNlbmQoc3RkOjp1bmlxdWVfcHRy
PElQQzo6RW5jb2Rlcj4mJiwgSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgSVBDOjpDb25uZWN0aW9u
OjpIYW5kbGUmIGNvbm5lY3Rpb25IYW5kbGUpOwotICAgIHVzaW5nIFJlcGx5ID0gc3RkOjp0dXBs
ZTxJUEM6OkNvbm5lY3Rpb246OkhhbmRsZSY+OwotICAgIHVzaW5nIFJlcGx5QXJndW1lbnRzID0g
c3RkOjp0dXBsZTxJUEM6OkNvbm5lY3Rpb246OkhhbmRsZT47Ci0gICAgZXhwbGljaXQgR2V0UGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb24oY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoKQotICAgICAgICA6
IG1fYXJndW1lbnRzKHBsdWdpblBhdGgpCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0IEFyZ3Vt
ZW50cyYgYXJndW1lbnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50
czsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLQot
Y2xhc3MgVGVzdE11bHRpcGxlQXR0cmlidXRlcyB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6
OnR1cGxlPD4gQXJndW1lbnRzOwotCi0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJl
Y2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsgfQotICAgIHN0YXRp
YyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVu
Y2UoIlRlc3RNdWx0aXBsZUF0dHJpYnV0ZXMiKTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlz
U3luYyA9IHRydWU7Ci0KLSAgICB1c2luZyBEZWxheWVkUmVwbHkgPSBUZXN0TXVsdGlwbGVBdHRy
aWJ1dGVzRGVsYXllZFJlcGx5OwotICAgIHN0YXRpYyB2b2lkIHNlbmQoc3RkOjp1bmlxdWVfcHRy
PElQQzo6RW5jb2Rlcj4mJiwgSVBDOjpDb25uZWN0aW9uJik7Ci0gICAgdXNpbmcgUmVwbHkgPSBz
dGQ6OnR1cGxlPD47Ci0gICAgdXNpbmcgUmVwbHlBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPD47Ci0g
ICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0
dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1bWVudHMgbV9hcmd1
bWVudHM7Ci19OwotCi1jbGFzcyBUZXN0UGFyYW1ldGVyQXR0cmlidXRlcyB7Ci1wdWJsaWM6Ci0g
ICAgdHlwZWRlZiBzdGQ6OnR1cGxlPHVpbnQ2NF90LCBkb3VibGUsIGRvdWJsZT4gQXJndW1lbnRz
OwotCi0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0
dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsgfQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVy
ZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIlRlc3RQYXJhbWV0ZXJB
dHRyaWJ1dGVzIik7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKLQot
ICAgIFRlc3RQYXJhbWV0ZXJBdHRyaWJ1dGVzKHVpbnQ2NF90IGZvbywgZG91YmxlIGJhciwgZG91
YmxlIGJheikKLSAgICAgICAgOiBtX2FyZ3VtZW50cyhmb28sIGJhciwgYmF6KQotICAgIHsKLSAg
ICB9Ci0KLSAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewotICAg
ICAgICByZXR1cm4gbV9hcmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50
cyBtX2FyZ3VtZW50czsKLX07Ci0KLWNsYXNzIFRlbXBsYXRlVGVzdCB7Ci1wdWJsaWM6Ci0gICAg
dHlwZWRlZiBzdGQ6OnR1cGxlPGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBzdGQ6OnBhaXI8U3RyaW5n
LCB1aW50NjRfdD4+Jj4gQXJndW1lbnRzOwotCi0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJl
bmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsgfQotICAg
IHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpTdHJpbmdS
ZWZlcmVuY2UoIlRlbXBsYXRlVGVzdCIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5j
ID0gZmFsc2U7Ci0KLSAgICBleHBsaWNpdCBUZW1wbGF0ZVRlc3QoY29uc3QgSGFzaE1hcDxTdHJp
bmcsIHN0ZDo6cGFpcjxTdHJpbmcsIHVpbnQ2NF90Pj4mIGEpCi0gICAgICAgIDogbV9hcmd1bWVu
dHMoYSkKLSAgICB7Ci0gICAgfQotCi0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBj
b25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0
ZToKLSAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19OwotCi1jbGFzcyBTZXRWaWRlb0xheWVy
SUQgewotcHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBXZWJDb3JlOjpHcmFw
aGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQmPiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBD
OjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVy
TmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVy
biBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiU2V0VmlkZW9MYXllcklEIik7IH0KLSAgICBzdGF0aWMg
Y29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKLQotICAgIGV4cGxpY2l0IFNldFZpZGVvTGF5ZXJJ
RChjb25zdCBXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQmIHZpZGVvTGF5
ZXJJRCkKLSAgICAgICAgOiBtX2FyZ3VtZW50cyh2aWRlb0xheWVySUQpCi0gICAgewotICAgIH0K
LQotICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAg
IHJldHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1f
YXJndW1lbnRzOwotfTsKLQotI2lmIFBMQVRGT1JNKE1BQykKLWNsYXNzIERpZENyZWF0ZVdlYlBy
b2Nlc3NDb25uZWN0aW9uIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8Y29uc3Qg
SVBDOjpNYWNoUG9ydCY+IEFyZ3VtZW50czsKLQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVy
ZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAg
ICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5n
UmVmZXJlbmNlKCJEaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbiIpOyB9Ci0gICAgc3RhdGlj
IGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7Ci0KLSAgICBleHBsaWNpdCBEaWRDcmVhdGVXZWJQ
cm9jZXNzQ29ubmVjdGlvbihjb25zdCBJUEM6Ok1hY2hQb3J0JiBjb25uZWN0aW9uSWRlbnRpZmll
cikKLSAgICAgICAgOiBtX2FyZ3VtZW50cyhjb25uZWN0aW9uSWRlbnRpZmllcikKLSAgICB7Ci0g
ICAgfQotCi0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsKLSAg
ICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1bWVu
dHMgbV9hcmd1bWVudHM7Ci19OwotI2VuZGlmCi0KLSNpZiBQTEFURk9STShNQUMpCi1jbGFzcyBJ
bnRlcnByZXRLZXlFdmVudCB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPHVpbnQz
Ml90PiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2
ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGljIElQ
Qzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgi
SW50ZXJwcmV0S2V5RXZlbnQiKTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IHRy
dWU7Ci0KLSAgICB1c2luZyBSZXBseSA9IHN0ZDo6dHVwbGU8VmVjdG9yPFdlYkNvcmU6OktleXBy
ZXNzQ29tbWFuZD4mPjsKLSAgICB1c2luZyBSZXBseUFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8VmVj
dG9yPFdlYkNvcmU6OktleXByZXNzQ29tbWFuZD4+OwotICAgIGV4cGxpY2l0IEludGVycHJldEtl
eUV2ZW50KHVpbnQzMl90IHR5cGUpCi0gICAgICAgIDogbV9hcmd1bWVudHModHlwZSkKLSAgICB7
Ci0gICAgfQotCi0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsK
LSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1
bWVudHMgbV9hcmd1bWVudHM7Ci19OwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoREVQUkVDQVRFRF9G
RUFUVVJFKQotY2xhc3MgRGVwcmVjYXRlZE9wZXJhdGlvbiB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRl
ZiBzdGQ6OnR1cGxlPGNvbnN0IElQQzo6RHVtbXlUeXBlJj4gQXJndW1lbnRzOwotCi0gICAgc3Rh
dGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VS
ZWNlaXZlck5hbWUoKTsgfQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkg
eyByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIkRlcHJlY2F0ZWRPcGVyYXRpb24iKTsgfQot
ICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOwotCi0gICAgZXhwbGljaXQgRGVw
cmVjYXRlZE9wZXJhdGlvbihjb25zdCBJUEM6OkR1bW15VHlwZSYgZHVtbXkpCi0gICAgICAgIDog
bV9hcmd1bWVudHMoZHVtbXkpCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0IEFyZ3VtZW50cyYg
YXJndW1lbnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAg
ICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLSNlbmRpZgot
Ci0jaWYgRU5BQkxFKEVYUEVSSU1FTlRBTF9GRUFUVVJFKQotY2xhc3MgRXhwZXJpbWVudGFsT3Bl
cmF0aW9uIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8Y29uc3QgSVBDOjpEdW1t
eVR5cGUmPiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVj
ZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGlj
IElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5j
ZSgiRXhwZXJpbWVudGFsT3BlcmF0aW9uIik7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5
bmMgPSBmYWxzZTsKLQotICAgIGV4cGxpY2l0IEV4cGVyaW1lbnRhbE9wZXJhdGlvbihjb25zdCBJ
UEM6OkR1bW15VHlwZSYgZHVtbXkpCi0gICAgICAgIDogbV9hcmd1bWVudHMoZHVtbXkpCi0gICAg
ewotICAgIH0KLQotICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKLSAgICB7
Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJn
dW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBXZWJQYWdl
Ci19IC8vIG5hbWVzcGFjZSBNZXNzYWdlcwotCi0jZW5kaWYgLy8gKEVOQUJMRShXRUJLSVQyKSAm
JiAoTkVTVEVEX01BU1RFUl9DT05ESVRJT04gfHwgTUFTVEVSX09SICYmIE1BU1RFUl9BTkQpKQoK
UHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9NZXNzYWdl
cy1leHBlY3RlZC5oCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMSArMCww
ICMjCi1uYXRpdmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogU291cmNl
L1dlYktpdC9TY3JpcHRzL3dlYmtpdC9NZXNzYWdlc1JlcGxpZXMtZXhwZWN0ZWQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L01lc3NhZ2VzUmVwbGllcy1leHBl
Y3RlZC5oCShyZXZpc2lvbiAyNjA3NjQpCisrKyBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0
L01lc3NhZ2VzUmVwbGllcy1leHBlY3RlZC5oCShub25leGlzdGVudCkKQEAgLTEsNDMgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECi0gKiBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IK
LSAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwKLSAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0gKiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUgotICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0g
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgKEVOQUJMRShXRUJLSVQy
KSAmJiAoTkVTVEVEX01BU1RFUl9DT05ESVRJT04gfHwgTUFTVEVSX09SICYmIE1BU1RFUl9BTkQp
KQotCi0jaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0K
LQotbmFtZXNwYWNlIE1lc3NhZ2VzIHsKLW5hbWVzcGFjZSBXZWJQYWdlIHsKLQotdXNpbmcgR2V0
UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25EZWxheWVkUmVwbHkgPSBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IElQQzo6Q29ubmVjdGlvbjo6SGFuZGxlJiBjb25uZWN0aW9uSGFuZGxlKT47Ci0K
LXVzaW5nIFRlc3RNdWx0aXBsZUF0dHJpYnV0ZXNEZWxheWVkUmVwbHkgPSBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+OwotCi19IC8vIG5hbWVzcGFjZSBXZWJQYWdlCi19IC8vIG5hbWVzcGFjZSBN
ZXNzYWdlcwotCi0jZW5kaWYgLy8gKEVOQUJMRShXRUJLSVQyKSAmJiAoTkVTVEVEX01BU1RFUl9D
T05ESVRJT04gfHwgTUFTVEVSX09SICYmIE1BU1RFUl9BTkQpKQpJbmRleDogU291cmNlL1dlYktp
dC9TY3JpcHRzL3dlYmtpdC9NZXNzYWdlc1JlcGxpZXNTdXBlcmNsYXNzUmVwbGllcy1leHBlY3Rl
ZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvTWVzc2FnZXNS
ZXBsaWVzU3VwZXJjbGFzc1JlcGxpZXMtZXhwZWN0ZWQuaAkocmV2aXNpb24gMjYwNzY0KQorKysg
U291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9NZXNzYWdlc1JlcGxpZXNTdXBlcmNsYXNzUmVw
bGllcy1leHBlY3RlZC5oCShub25leGlzdGVudCkKQEAgLTEsNTIgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECi0gKiBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSAqIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwKLSAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0gKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotICogQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwKLSAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiVGVzdENsYXNzTmFtZS5oIgotI2lu
Y2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+Ci0KLQotbmFt
ZXNwYWNlIE1lc3NhZ2VzIHsKLW5hbWVzcGFjZSBXZWJQYWdlIHsKLQotI2lmIEVOQUJMRShURVNU
X0ZFQVRVUkUpCi11c2luZyBUZXN0QXN5bmNNZXNzYWdlQXN5bmNSZXBseSA9IENvbXBsZXRpb25I
YW5kbGVyPHZvaWQodWludDY0X3QgcmVzdWx0KT47Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShURVNU
X0ZFQVRVUkUpCi11c2luZyBUZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJndW1lbnRzQXN5bmNSZXBs
eSA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT47Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShURVNU
X0ZFQVRVUkUpCi11c2luZyBUZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1lbnRzQXN5
bmNSZXBseSA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBmbGFnLCB1aW50NjRfdCB2YWx1
ZSk+OwotI2VuZGlmCi0KLXVzaW5nIFRlc3RTeW5jTWVzc2FnZURlbGF5ZWRSZXBseSA9IENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQodWludDhfdCByZXBseSk+OwotCi11c2luZyBUZXN0U3luY2hyb25v
dXNNZXNzYWdlRGVsYXllZFJlcGx5ID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBPcHRp
b25hbDxXZWJLaXQ6OlRlc3RDbGFzc05hbWU+JiBvcHRpb25hbFJlcGx5KT47Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdlYlBhZ2UKLX0gLy8gbmFtZXNwYWNlIE1lc3NhZ2VzCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1NjcmlwdHMvd2Via2l0L01lc3NhZ2VzU3VwZXJjbGFzcy1leHBlY3RlZC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvTWVzc2FnZXNTdXBlcmNsYXNzLWV4
cGVjdGVkLmgJKHJldmlzaW9uIDI2MDc2NCkKKysrIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJr
aXQvTWVzc2FnZXNTdXBlcmNsYXNzLWV4cGVjdGVkLmgJKG5vbmV4aXN0ZW50KQpAQCAtMSwyMDYg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMC0yMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECi0g
KiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IKLSAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0gKiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUgotICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSAqIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiQXJn
dW1lbnRDb2RlcnMuaCIKLSNpbmNsdWRlICJDb25uZWN0aW9uLmgiCi0jaW5jbHVkZSAiVGVzdENs
YXNzTmFtZS5oIgotI2luY2x1ZGUgIldlYlBhZ2VNZXNzYWdlc1JlcGxpZXMuaCIKLSNpbmNsdWRl
IDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgotI2luY2x1ZGUgPHd0
Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLWVudW0gY2xhc3MgVGVzdFR3b1N0YXRlRW51bSA6IGJv
b2w7Ci19Ci0KLW5hbWVzcGFjZSBNZXNzYWdlcyB7Ci1uYW1lc3BhY2UgV2ViUGFnZSB7Ci0KLXN0
YXRpYyBpbmxpbmUgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSgpCi17
Ci0gICAgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJXZWJQYWdlIik7Ci19Ci0KLWNsYXNz
IExvYWRVUkwgewotcHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBTdHJpbmcm
PiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJO
YW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6
U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiTG9h
ZFVSTCIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7Ci0KLSAgICBl
eHBsaWNpdCBMb2FkVVJMKGNvbnN0IFN0cmluZyYgdXJsKQotICAgICAgICA6IG1fYXJndW1lbnRz
KHVybCkKLSAgICB7Ci0gICAgfQotCi0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBj
b25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0
ZToKLSAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19OwotCi0jaWYgRU5BQkxFKFRFU1RfRkVB
VFVSRSkKLWNsYXNzIFRlc3RBc3luY01lc3NhZ2UgewotcHVibGljOgotICAgIHR5cGVkZWYgc3Rk
Ojp0dXBsZTxXZWJLaXQ6OlRlc3RUd29TdGF0ZUVudW0+IEFyZ3VtZW50czsKLQotICAgIHN0YXRp
YyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVj
ZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsg
cmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJUZXN0QXN5bmNNZXNzYWdlIik7IH0KLSAgICBz
dGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKLQotICAgIHN0YXRpYyB2b2lkIGNhbGxS
ZXBseShJUEM6OkRlY29kZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90JiYpPiYm
KTsKLSAgICBzdGF0aWMgdm9pZCBjYW5jZWxSZXBseShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVp
bnQ2NF90JiYpPiYmKTsKLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgYXN5bmNNZXNz
YWdlUmVwbHlOYW1lKCkgeyByZXR1cm4geyAiVGVzdEFzeW5jTWVzc2FnZVJlcGx5IiB9OyB9Ci0g
ICAgdXNpbmcgQXN5bmNSZXBseSA9IFRlc3RBc3luY01lc3NhZ2VBc3luY1JlcGx5OwotICAgIHN0
YXRpYyB2b2lkIHNlbmQoc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mJiwgSVBDOjpDb25u
ZWN0aW9uJiwgdWludDY0X3QgcmVzdWx0KTsKLSAgICB1c2luZyBSZXBseSA9IHN0ZDo6dHVwbGU8
dWludDY0X3QmPjsKLSAgICB1c2luZyBSZXBseUFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8dWludDY0
X3Q+OwotICAgIGV4cGxpY2l0IFRlc3RBc3luY01lc3NhZ2UoV2ViS2l0OjpUZXN0VHdvU3RhdGVF
bnVtIHR3b1N0YXRlRW51bSkKLSAgICAgICAgOiBtX2FyZ3VtZW50cyh0d29TdGF0ZUVudW0pCi0g
ICAgewotICAgIH0KLQotICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAg
QXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLSNlbmRpZgotCi0jaWYgRU5BQkxFKFRFU1RfRkVB
VFVSRSkKLWNsYXNzIFRlc3RBc3luY01lc3NhZ2VXaXRoTm9Bcmd1bWVudHMgewotcHVibGljOgot
ICAgIHR5cGVkZWYgc3RkOjp0dXBsZTw+IEFyZ3VtZW50czsKLQotICAgIHN0YXRpYyBJUEM6OlN0
cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1l
KCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQ
Qzo6U3RyaW5nUmVmZXJlbmNlKCJUZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJndW1lbnRzIik7IH0K
LSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKLQotICAgIHN0YXRpYyB2b2lk
IGNhbGxSZXBseShJUEM6OkRlY29kZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwot
ICAgIHN0YXRpYyB2b2lkIGNhbmNlbFJlcGx5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7
Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIGFzeW5jTWVzc2FnZVJlcGx5TmFtZSgp
IHsgcmV0dXJuIHsgIlRlc3RBc3luY01lc3NhZ2VXaXRoTm9Bcmd1bWVudHNSZXBseSIgfTsgfQot
ICAgIHVzaW5nIEFzeW5jUmVwbHkgPSBUZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJndW1lbnRzQXN5
bmNSZXBseTsKLSAgICBzdGF0aWMgdm9pZCBzZW5kKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29k
ZXI+JiYsIElQQzo6Q29ubmVjdGlvbiYpOwotICAgIHVzaW5nIFJlcGx5ID0gc3RkOjp0dXBsZTw+
OwotICAgIHVzaW5nIFJlcGx5QXJndW1lbnRzID0gc3RkOjp0dXBsZTw+OwotICAgIGNvbnN0IEFy
Z3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3Vt
ZW50czsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsK
LSNlbmRpZgotCi0jaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKLWNsYXNzIFRlc3RBc3luY01lc3Nh
Z2VXaXRoTXVsdGlwbGVBcmd1bWVudHMgewotcHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBs
ZTw+IEFyZ3VtZW50czsKLQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZl
ck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMgSVBD
OjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJU
ZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1lbnRzIik7IH0KLSAgICBzdGF0aWMgY29u
c3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKLQotICAgIHN0YXRpYyB2b2lkIGNhbGxSZXBseShJUEM6
OkRlY29kZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wmJiwgdWludDY0X3QmJik+JiYp
OwotICAgIHN0YXRpYyB2b2lkIGNhbmNlbFJlcGx5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCYmLCB1aW50NjRfdCYmKT4mJik7Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIGFz
eW5jTWVzc2FnZVJlcGx5TmFtZSgpIHsgcmV0dXJuIHsgIlRlc3RBc3luY01lc3NhZ2VXaXRoTXVs
dGlwbGVBcmd1bWVudHNSZXBseSIgfTsgfQotICAgIHVzaW5nIEFzeW5jUmVwbHkgPSBUZXN0QXN5
bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1lbnRzQXN5bmNSZXBseTsKLSAgICBzdGF0aWMgdm9p
ZCBzZW5kKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiYsIElQQzo6Q29ubmVjdGlvbiYs
IGJvb2wgZmxhZywgdWludDY0X3QgdmFsdWUpOwotICAgIHVzaW5nIFJlcGx5ID0gc3RkOjp0dXBs
ZTxib29sJiwgdWludDY0X3QmPjsKLSAgICB1c2luZyBSZXBseUFyZ3VtZW50cyA9IHN0ZDo6dHVw
bGU8Ym9vbCwgdWludDY0X3Q+OwotICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29u
c3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0KLXByaXZhdGU6
Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLSNlbmRpZgotCi1jbGFzcyBUZXN0U3lu
Y01lc3NhZ2UgewotcHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTx1aW50MzJfdD4gQXJn
dW1lbnRzOwotCi0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgp
IHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsgfQotICAgIHN0YXRpYyBJUEM6OlN0cmlu
Z1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIlRlc3RTeW5j
TWVzc2FnZSIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gdHJ1ZTsKLQotICAg
IHVzaW5nIERlbGF5ZWRSZXBseSA9IFRlc3RTeW5jTWVzc2FnZURlbGF5ZWRSZXBseTsKLSAgICBz
dGF0aWMgdm9pZCBzZW5kKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiYsIElQQzo6Q29u
bmVjdGlvbiYsIHVpbnQ4X3QgcmVwbHkpOwotICAgIHVzaW5nIFJlcGx5ID0gc3RkOjp0dXBsZTx1
aW50OF90Jj47Ci0gICAgdXNpbmcgUmVwbHlBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPHVpbnQ4X3Q+
OwotICAgIGV4cGxpY2l0IFRlc3RTeW5jTWVzc2FnZSh1aW50MzJfdCBwYXJhbSkKLSAgICAgICAg
OiBtX2FyZ3VtZW50cyhwYXJhbSkKLSAgICB7Ci0gICAgfQotCi0gICAgY29uc3QgQXJndW1lbnRz
JiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwot
ICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19OwotCi1jbGFz
cyBUZXN0U3luY2hyb25vdXNNZXNzYWdlIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVw
bGU8Ym9vbD4gQXJndW1lbnRzOwotCi0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJl
Y2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsgfQotICAgIHN0YXRp
YyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVu
Y2UoIlRlc3RTeW5jaHJvbm91c01lc3NhZ2UiKTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlz
U3luYyA9IHRydWU7Ci0KLSAgICB1c2luZyBEZWxheWVkUmVwbHkgPSBUZXN0U3luY2hyb25vdXNN
ZXNzYWdlRGVsYXllZFJlcGx5OwotICAgIHN0YXRpYyB2b2lkIHNlbmQoc3RkOjp1bmlxdWVfcHRy
PElQQzo6RW5jb2Rlcj4mJiwgSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgT3B0aW9uYWw8V2ViS2l0
OjpUZXN0Q2xhc3NOYW1lPiYgb3B0aW9uYWxSZXBseSk7Ci0gICAgdXNpbmcgUmVwbHkgPSBzdGQ6
OnR1cGxlPE9wdGlvbmFsPFdlYktpdDo6VGVzdENsYXNzTmFtZT4mPjsKLSAgICB1c2luZyBSZXBs
eUFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8T3B0aW9uYWw8V2ViS2l0OjpUZXN0Q2xhc3NOYW1lPj47
Ci0gICAgZXhwbGljaXQgVGVzdFN5bmNocm9ub3VzTWVzc2FnZShib29sIHZhbHVlKQotICAgICAg
ICA6IG1fYXJndW1lbnRzKHZhbHVlKQotICAgIHsKLSAgICB9Ci0KLSAgICBjb25zdCBBcmd1bWVu
dHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7
Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKLX07Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdlYlBhZ2UKLX0gLy8gbmFtZXNwYWNlIE1lc3NhZ2VzCgpQcm9wZXJ0eSBj
aGFuZ2VzIG9uOiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L01lc3NhZ2VzU3VwZXJjbGFz
cy1leHBlY3RlZC5oCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMSArMCww
ICMjCi1uYXRpdmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogU291cmNl
L1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CShyZXZpc2lvbiAyNjA3NjQpCisrKyBT
b3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CSh3b3JraW5nIGNvcHkpCkBA
IC0zNCw3ICszNCw3IEBAIFNZTkNIUk9OT1VTX0FUVFJJQlVURSA9ICdTeW5jaHJvbm91cycKIEFT
WU5DX0FUVFJJQlVURSA9ICdBc3luYycKIAogX2xpY2Vuc2VfaGVhZGVyID0gIiIiLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTM0LDcgKzEzNCw3IEBAIGRlZiBt
ZXNzYWdlX3RvX3JlcGx5X2ZvcndhcmRfZGVjbGFyYXRpb24KICAgICByZXR1cm4gc3Vycm91bmRf
aW5fY29uZGl0aW9uKCcnLmpvaW4ocmVzdWx0KSwgbWVzc2FnZS5jb25kaXRpb24pCiAKIAotZGVm
IG1lc3NhZ2VfdG9fc3RydWN0X2RlY2xhcmF0aW9uKG1lc3NhZ2UpOgorZGVmIG1lc3NhZ2VfdG9f
c3RydWN0X2RlY2xhcmF0aW9uKHJlY2VpdmVyLCBtZXNzYWdlKToKICAgICByZXN1bHQgPSBbXQog
ICAgIGZ1bmN0aW9uX3BhcmFtZXRlcnMgPSBbKGZ1bmN0aW9uX3BhcmFtZXRlcl90eXBlKHgudHlw
ZSwgeC5raW5kKSwgeC5uYW1lKSBmb3IgeCBpbiBtZXNzYWdlLnBhcmFtZXRlcnNdCiAKQEAgLTE0
Miw4ICsxNDIsNyBAQCBkZWYgbWVzc2FnZV90b19zdHJ1Y3RfZGVjbGFyYXRpb24obWVzc2FnCiAg
ICAgcmVzdWx0LmFwcGVuZCgncHVibGljOlxuJykKICAgICByZXN1bHQuYXBwZW5kKCcgICAgdHlw
ZWRlZiAlcyBBcmd1bWVudHM7XG4nICUgYXJndW1lbnRzX3R5cGUobWVzc2FnZSkpCiAgICAgcmVz
dWx0LmFwcGVuZCgnXG4nKQotICAgIHJlc3VsdC5hcHBlbmQoJyAgICBzdGF0aWMgSVBDOjpTdHJp
bmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgp
OyB9XG4nKQotICAgIHJlc3VsdC5hcHBlbmQoJyAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVu
Y2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCIlcyIpOyB9XG4nICUgbWVz
c2FnZS5uYW1lKQorICAgIHJlc3VsdC5hcHBlbmQoJyAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFt
ZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6JXNfJXM7IH1cbicgJSAocmVjZWl2
ZXIubmFtZSwgbWVzc2FnZS5uYW1lKSkKICAgICByZXN1bHQuYXBwZW5kKCcgICAgc3RhdGljIGNv
bnN0IGJvb2wgaXNTeW5jID0gJXM7XG4nICUgKCdmYWxzZScsICd0cnVlJylbbWVzc2FnZS5yZXBs
eV9wYXJhbWV0ZXJzICE9IE5vbmUgYW5kIG5vdCBtZXNzYWdlLmhhc19hdHRyaWJ1dGUoQVNZTkNf
QVRUUklCVVRFKV0pCiAgICAgcmVzdWx0LmFwcGVuZCgnXG4nKQogICAgIGlmIG1lc3NhZ2UucmVw
bHlfcGFyYW1ldGVycyAhPSBOb25lOgpAQCAtMTUzLDcgKzE1Miw3IEBAIGRlZiBtZXNzYWdlX3Rv
X3N0cnVjdF9kZWNsYXJhdGlvbihtZXNzYWcKICAgICAgICAgICAgIG1vdmVfcGFyYW1ldGVycyA9
ICcsICcuam9pbihbbW92ZV90eXBlKHgudHlwZSkgZm9yIHggaW4gbWVzc2FnZS5yZXBseV9wYXJh
bWV0ZXJzXSkKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBzdGF0aWMgdm9pZCBjYWxs
UmVwbHkoSVBDOjpEZWNvZGVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCglcyk+JiYpO1xuJyAl
IG1vdmVfcGFyYW1ldGVycykKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBzdGF0aWMg
dm9pZCBjYW5jZWxSZXBseShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCVzKT4mJik7XG4nICUgbW92
ZV9wYXJhbWV0ZXJzKQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIHN0YXRpYyBJUEM6
OlN0cmluZ1JlZmVyZW5jZSBhc3luY01lc3NhZ2VSZXBseU5hbWUoKSB7IHJldHVybiB7ICIlc1Jl
cGx5IiB9OyB9XG4nICUgbWVzc2FnZS5uYW1lKQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgn
ICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIGFzeW5jTWVzc2FnZVJlcGx5TmFtZSgpIHsgcmV0
dXJuIElQQzo6TWVzc2FnZU5hbWU6OiVzXyVzUmVwbHk7IH1cbicgJSAocmVjZWl2ZXIubmFtZSwg
bWVzc2FnZS5uYW1lKSkKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICB1c2luZyBBc3lu
Y1JlcGx5ID0gJXNBc3luY1JlcGx5O1xuJyAlIG1lc3NhZ2UubmFtZSkKICAgICAgICAgZWxpZiBt
ZXNzYWdlLmhhc19hdHRyaWJ1dGUoU1lOQ0hST05PVVNfQVRUUklCVVRFKToKICAgICAgICAgICAg
IHJlc3VsdC5hcHBlbmQoJyAgICB1c2luZyBEZWxheWVkUmVwbHkgPSAlc0RlbGF5ZWRSZXBseTtc
bicgJSBtZXNzYWdlLm5hbWUpCkBAIC0yNzcsOCArMjc2LDkgQEAgZGVmIGZvcndhcmRfZGVjbGFy
YXRpb25zX2FuZF9oZWFkZXJzKHJlYwogCiAgICAgaGVhZGVycyA9IHNldChbCiAgICAgICAgICci
QXJndW1lbnRDb2RlcnMuaCInLAotICAgICAgICAnPHd0Zi9Gb3J3YXJkLmg+JywKICAgICAgICAg
JyJDb25uZWN0aW9uLmgiJywKKyAgICAgICAgJyJNZXNzYWdlTmFtZXMuaCInLAorICAgICAgICAn
PHd0Zi9Gb3J3YXJkLmg+JywKICAgICAgICAgJzx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4n
LAogICAgICAgICAnIiVzTWVzc2FnZXNSZXBsaWVzLmgiJyAlIHJlY2VpdmVyLm5hbWUsCiAgICAg
XSkKQEAgLTMzNSw2ICszMzUsNyBAQCBkZWYgZm9yd2FyZF9kZWNsYXJhdGlvbnNfYW5kX2hlYWRl
cnNfZm9yCiAKICAgICBoZWFkZXJzID0gc2V0KFsKICAgICAgICAgJzx3dGYvRm9yd2FyZC5oPics
CisgICAgICAgICciTWVzc2FnZU5hbWVzLmgiJywKICAgICBdKQogCiAgICAgbm9uX3RlbXBsYXRl
X3d0Zl90eXBlcyA9IGZyb3plbnNldChbCkBAIC00NDAsMTIgKzQ0MSwxMiBAQCBkZWYgZ2VuZXJh
dGVfbWVzc2FnZXNfaGVhZGVyKHJlY2VpdmVyKToKIAogICAgIHJlc3VsdC5hcHBlbmQoJ25hbWVz
cGFjZSBNZXNzYWdlcyB7XG5uYW1lc3BhY2UgJXMge1xuJyAlIHJlY2VpdmVyLm5hbWUpCiAgICAg
cmVzdWx0LmFwcGVuZCgnXG4nKQotICAgIHJlc3VsdC5hcHBlbmQoJ3N0YXRpYyBpbmxpbmUgSVBD
OjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSgpXG4nKQorICAgIHJlc3VsdC5h
cHBlbmQoJ3N0YXRpYyBpbmxpbmUgSVBDOjpSZWNlaXZlck5hbWUgbWVzc2FnZVJlY2VpdmVyTmFt
ZSgpXG4nKQogICAgIHJlc3VsdC5hcHBlbmQoJ3tcbicpCi0gICAgcmVzdWx0LmFwcGVuZCgnICAg
IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiJXMiKTtcbicgJSByZWNlaXZlci5uYW1lKQor
ICAgIHJlc3VsdC5hcHBlbmQoJyAgICByZXR1cm4gSVBDOjpSZWNlaXZlck5hbWU6OiVzO1xuJyAl
IHJlY2VpdmVyLm5hbWUpCiAgICAgcmVzdWx0LmFwcGVuZCgnfVxuJykKICAgICByZXN1bHQuYXBw
ZW5kKCdcbicpCi0gICAgcmVzdWx0LmFwcGVuZCgnXG4nLmpvaW4oW21lc3NhZ2VfdG9fc3RydWN0
X2RlY2xhcmF0aW9uKHgpIGZvciB4IGluIHJlY2VpdmVyLm1lc3NhZ2VzXSkpCisgICAgcmVzdWx0
LmFwcGVuZCgnXG4nLmpvaW4oW21lc3NhZ2VfdG9fc3RydWN0X2RlY2xhcmF0aW9uKHJlY2VpdmVy
LCB4KSBmb3IgeCBpbiByZWNlaXZlci5tZXNzYWdlc10pKQogICAgIHJlc3VsdC5hcHBlbmQoJ1xu
JykKICAgICByZXN1bHQuYXBwZW5kKCd9IC8vIG5hbWVzcGFjZSAlc1xufSAvLyBuYW1lc3BhY2Ug
TWVzc2FnZXNcbicgJSByZWNlaXZlci5uYW1lKQogCkBAIC04NDcsMyArODQ4LDE1OCBAQCBkZWYg
Z2VuZXJhdGVfbWVzc2FnZV9oYW5kbGVyKHJlY2VpdmVyKToKICAgICAgICAgcmVzdWx0LmFwcGVu
ZCgnXG4jZW5kaWYgLy8gJXNcbicgJSByZWNlaXZlci5jb25kaXRpb24pCiAKICAgICByZXR1cm4g
Jycuam9pbihyZXN1bHQpCisKKworZGVmIGdlbmVyYXRlX21lc3NhZ2VfbmFtZXNfaGVhZGVyKHJl
Y2VpdmVycyk6CisgICAgcmVzdWx0ID0gW10KKyAgICByZXN1bHQuYXBwZW5kKF9saWNlbnNlX2hl
YWRlcikKKyAgICByZXN1bHQuYXBwZW5kKCcjcHJhZ21hIG9uY2VcbicpCisgICAgcmVzdWx0LmFw
cGVuZCgnXG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJyNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5o
PlxuJykKKyAgICByZXN1bHQuYXBwZW5kKCdcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnbmFtZXNw
YWNlIElQQyB7XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJ1xuJykKKyAgICByZXN1bHQuYXBwZW5k
KCdlbnVtIGNsYXNzIFJlY2VpdmVyTmFtZSA6IHVpbnQ4X3QgeycpCisKKyAgICBlbnVtX3ZhbHVl
ID0gMQorICAgIGZpcnN0X3JlY2VpdmVyID0gVHJ1ZQorICAgIGZvciByZWNlaXZlciBpbiByZWNl
aXZlcnM6CisgICAgICAgIHJlc3VsdC5hcHBlbmQoJ1xuJykKKyAgICAgICAgcmVzdWx0LmFwcGVu
ZCgnICAgICcpCisgICAgICAgIGlmIG5vdCBmaXJzdF9yZWNlaXZlcjoKKyAgICAgICAgICAgIHJl
c3VsdC5hcHBlbmQoJywgJykKKyAgICAgICAgZmlyc3RfcmVjZWl2ZXIgPSBGYWxzZQorICAgICAg
ICByZXN1bHQuYXBwZW5kKCclcyA9ICVkJyAlIChyZWNlaXZlci5uYW1lLCBlbnVtX3ZhbHVlKSkK
KyAgICAgICAgZW51bV92YWx1ZSA9IGVudW1fdmFsdWUgKyAxCisgICAgcmVzdWx0LmFwcGVuZCgn
XG4gICAgLCBJUEMgPSAlZCcgJSBlbnVtX3ZhbHVlKQorICAgIGVudW1fdmFsdWUgPSBlbnVtX3Zh
bHVlICsgMQorICAgIHJlc3VsdC5hcHBlbmQoJ1xuICAgICwgQXN5bmNSZXBseSA9ICVkJyAlIGVu
dW1fdmFsdWUpCisgICAgZW51bV92YWx1ZSA9IGVudW1fdmFsdWUgKyAxCisgICAgcmVzdWx0LmFw
cGVuZCgnXG4gICAgLCBJbnZhbGlkID0gJWQnICUgZW51bV92YWx1ZSkKKyAgICByZXN1bHQuYXBw
ZW5kKCdcbn07XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJ1xuJykKKyAgICByZXN1bHQuYXBwZW5k
KCdlbnVtIGNsYXNzIE1lc3NhZ2VOYW1lIDogdWludDE2X3QgeycpCisKKyAgICBlbnVtX3ZhbHVl
ID0gMQorICAgIGZpcnN0X21lc3NhZ2UgPSBUcnVlCisgICAgZm9yIHJlY2VpdmVyIGluIHJlY2Vp
dmVyczoKKyAgICAgICAgZm9yIG1lc3NhZ2UgaW4gcmVjZWl2ZXIubWVzc2FnZXM6CisgICAgICAg
ICAgICByZXN1bHQuYXBwZW5kKCdcbicpCisgICAgICAgICAgICBpZiBtZXNzYWdlLmNvbmRpdGlv
bjoKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcjaWYgJXNcbicgJSBtZXNzYWdlLmNv
bmRpdGlvbikKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICAnKQorICAgICAgICAgICAg
aWYgbm90IGZpcnN0X21lc3NhZ2U6CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnLCAn
KQorICAgICAgICAgICAgZmlyc3RfbWVzc2FnZSA9IEZhbHNlCisgICAgICAgICAgICByZXN1bHQu
YXBwZW5kKCclc18lcyA9ICVkJyAlIChyZWNlaXZlci5uYW1lLCBtZXNzYWdlLm5hbWUsIGVudW1f
dmFsdWUpKQorICAgICAgICAgICAgZW51bV92YWx1ZSA9IGVudW1fdmFsdWUgKyAxCisgICAgICAg
ICAgICBpZiBtZXNzYWdlLmhhc19hdHRyaWJ1dGUoQVNZTkNfQVRUUklCVVRFKToKKyAgICAgICAg
ICAgICAgICByZXN1bHQuYXBwZW5kKCdcbiAgICAsICVzXyVzUmVwbHkgPSAlZCcgJSAocmVjZWl2
ZXIubmFtZSwgbWVzc2FnZS5uYW1lLCBlbnVtX3ZhbHVlKSkKKyAgICAgICAgICAgICAgICBlbnVt
X3ZhbHVlID0gZW51bV92YWx1ZSArIDEKKyAgICAgICAgICAgIGlmIG1lc3NhZ2UuY29uZGl0aW9u
OgorICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ1xuI2VuZGlmJykKKyAgICByZXN1bHQu
YXBwZW5kKCdcbiAgICAsIFdyYXBwZWRBc3luY01lc3NhZ2VGb3JUZXN0aW5nID0gJWQnICUgZW51
bV92YWx1ZSkKKyAgICBlbnVtX3ZhbHVlID0gZW51bV92YWx1ZSArIDEKKyAgICByZXN1bHQuYXBw
ZW5kKCdcbiAgICAsIFN5bmNNZXNzYWdlUmVwbHkgPSAlZCcgJSBlbnVtX3ZhbHVlKQorICAgIGVu
dW1fdmFsdWUgPSBlbnVtX3ZhbHVlICsgMQorICAgIHJlc3VsdC5hcHBlbmQoJ1xuICAgICwgSW5p
dGlhbGl6ZUNvbm5lY3Rpb24gPSAlZCcgJSBlbnVtX3ZhbHVlKQorICAgIHJlc3VsdC5hcHBlbmQo
J1xufTtcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnXG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJ2lu
bGluZSBSZWNlaXZlck5hbWUgcmVjZWl2ZXJOYW1lKE1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lKVxu
JykKKyAgICByZXN1bHQuYXBwZW5kKCd7XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJyAgICBzd2l0
Y2ggKG1lc3NhZ2VOYW1lKSB7XG4nKQorICAgIGZvciByZWNlaXZlciBpbiByZWNlaXZlcnM6Cisg
ICAgICAgIGZvciBtZXNzYWdlIGluIHJlY2VpdmVyLm1lc3NhZ2VzOgorICAgICAgICAgICAgaWYg
bWVzc2FnZS5jb25kaXRpb246CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnI2lmICVz
XG4nICUgbWVzc2FnZS5jb25kaXRpb24pCisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAg
Y2FzZSBNZXNzYWdlTmFtZTo6JXNfJXM6XG4nICUgKHJlY2VpdmVyLm5hbWUsIG1lc3NhZ2UubmFt
ZSkpCisgICAgICAgICAgICBpZiBtZXNzYWdlLmNvbmRpdGlvbjoKKyAgICAgICAgICAgICAgICBy
ZXN1bHQuYXBwZW5kKCcjZW5kaWZcbicpCisgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICAgICAg
cmV0dXJuIFJlY2VpdmVyTmFtZTo6JXM7XG4nICUgcmVjZWl2ZXIubmFtZSkKKyAgICBmb3IgcmVj
ZWl2ZXIgaW4gcmVjZWl2ZXJzOgorICAgICAgICBmb3IgbWVzc2FnZSBpbiByZWNlaXZlci5tZXNz
YWdlczoKKyAgICAgICAgICAgIGlmIG1lc3NhZ2UuaGFzX2F0dHJpYnV0ZShBU1lOQ19BVFRSSUJV
VEUpOgorICAgICAgICAgICAgICAgIGlmIG1lc3NhZ2UuY29uZGl0aW9uOgorICAgICAgICAgICAg
ICAgICAgICByZXN1bHQuYXBwZW5kKCcjaWYgJXNcbicgJSBtZXNzYWdlLmNvbmRpdGlvbikKKyAg
ICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgY2FzZSBNZXNzYWdlTmFtZTo6JXNfJXNS
ZXBseTpcbicgJSAocmVjZWl2ZXIubmFtZSwgbWVzc2FnZS5uYW1lKSkKKyAgICAgICAgICAgICAg
ICBpZiBtZXNzYWdlLmNvbmRpdGlvbjoKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVu
ZCgnI2VuZGlmXG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJyAgICAgICAgcmV0dXJuIFJlY2VpdmVy
TmFtZTo6QXN5bmNSZXBseTtcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnICAgIGNhc2UgTWVzc2Fn
ZU5hbWU6OldyYXBwZWRBc3luY01lc3NhZ2VGb3JUZXN0aW5nOlxuJykKKyAgICByZXN1bHQuYXBw
ZW5kKCcgICAgY2FzZSBNZXNzYWdlTmFtZTo6U3luY01lc3NhZ2VSZXBseTpcbicpCisgICAgcmVz
dWx0LmFwcGVuZCgnICAgIGNhc2UgTWVzc2FnZU5hbWU6OkluaXRpYWxpemVDb25uZWN0aW9uOlxu
JykKKyAgICByZXN1bHQuYXBwZW5kKCcgICAgICAgIHJldHVybiBSZWNlaXZlck5hbWU6OklQQztc
bicpCisgICAgcmVzdWx0LmFwcGVuZCgnICAgIH1cbicpCisgICAgcmVzdWx0LmFwcGVuZCgnICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpO1xuJykKKyAgICByZXN1bHQuYXBwZW5kKCcgICAgcmV0dXJu
IFJlY2VpdmVyTmFtZTo6SW52YWxpZDtcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnfVxuJykKKyAg
ICByZXN1bHQuYXBwZW5kKCdcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnY29uc3QgY2hhciogZGVz
Y3JpcHRpb24oTWVzc2FnZU5hbWUpO1xuJykKKyAgICByZXN1bHQuYXBwZW5kKCdcbicpCisgICAg
cmVzdWx0LmFwcGVuZCgnfSAvLyBuYW1lc3BhY2UgSVBDXG4nKQorICAgIHJlc3VsdC5hcHBlbmQo
J1xuJykKKworICAgIHJlc3VsdC5hcHBlbmQoJ25hbWVzcGFjZSBXVEYge1xuJykKKyAgICByZXN1
bHQuYXBwZW5kKCdcbicpCisgICAgcmVzdWx0LmFwcGVuZCgndGVtcGxhdGU8dHlwZW5hbWUgRSwg
dHlwZW5hbWUgVCwgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX3NhbWU8RSwgSVBDOjpNZXNzYWdl
TmFtZT46OnZhbHVlPiogPSBudWxscHRyPlxuJykKKyAgICByZXN1bHQuYXBwZW5kKCdjb25zdGV4
cHIgYm9vbCBpc1ZhbGlkRW51bShUIG1lc3NhZ2VOYW1lKVxuJykKKyAgICByZXN1bHQuYXBwZW5k
KCd7XG4nKQorICAgIGZvciByZWNlaXZlciBpbiByZWNlaXZlcnM6CisgICAgICAgIGZvciBtZXNz
YWdlIGluIHJlY2VpdmVyLm1lc3NhZ2VzOgorICAgICAgICAgICAgaWYgbWVzc2FnZS5jb25kaXRp
b246CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnI2lmICVzXG4nICUgbWVzc2FnZS5j
b25kaXRpb24pCisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgaWYgKHN0YXRpY19jYXN0
PElQQzo6TWVzc2FnZU5hbWU+KG1lc3NhZ2VOYW1lKSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjolc18l
cylcbicgJSAocmVjZWl2ZXIubmFtZSwgbWVzc2FnZS5uYW1lKSkKKyAgICAgICAgICAgIHJlc3Vs
dC5hcHBlbmQoJyAgICAgICAgcmV0dXJuIHRydWU7XG4nKQorICAgICAgICAgICAgaWYgbWVzc2Fn
ZS5oYXNfYXR0cmlidXRlKEFTWU5DX0FUVFJJQlVURSk6CisgICAgICAgICAgICAgICAgcmVzdWx0
LmFwcGVuZCgnICAgIGlmIChzdGF0aWNfY2FzdDxJUEM6Ok1lc3NhZ2VOYW1lPihtZXNzYWdlTmFt
ZSkgPT0gSVBDOjpNZXNzYWdlTmFtZTo6JXNfJXNSZXBseSlcbicgJSAocmVjZWl2ZXIubmFtZSwg
bWVzc2FnZS5uYW1lKSkKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgICAgIHJl
dHVybiB0cnVlO1xuJykKKyAgICAgICAgICAgIGlmIG1lc3NhZ2UuY29uZGl0aW9uOgorICAgICAg
ICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyNlbmRpZlxuJykKKyAgICByZXN1bHQuYXBwZW5kKCcg
ICAgaWYgKHN0YXRpY19jYXN0PElQQzo6TWVzc2FnZU5hbWU+KG1lc3NhZ2VOYW1lKSA9PSBJUEM6
Ok1lc3NhZ2VOYW1lOjpXcmFwcGVkQXN5bmNNZXNzYWdlRm9yVGVzdGluZylcbicpCisgICAgcmVz
dWx0LmFwcGVuZCgnICAgICAgICByZXR1cm4gdHJ1ZTtcbicpCisgICAgcmVzdWx0LmFwcGVuZCgn
ICAgIGlmIChzdGF0aWNfY2FzdDxJUEM6Ok1lc3NhZ2VOYW1lPihtZXNzYWdlTmFtZSkgPT0gSVBD
OjpNZXNzYWdlTmFtZTo6U3luY01lc3NhZ2VSZXBseSlcbicpCisgICAgcmVzdWx0LmFwcGVuZCgn
ICAgICAgICByZXR1cm4gdHJ1ZTtcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnICAgIGlmIChzdGF0
aWNfY2FzdDxJUEM6Ok1lc3NhZ2VOYW1lPihtZXNzYWdlTmFtZSkgPT0gSVBDOjpNZXNzYWdlTmFt
ZTo6SW5pdGlhbGl6ZUNvbm5lY3Rpb24pXG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJyAgICAgICAg
cmV0dXJuIHRydWU7XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJyAgICByZXR1cm4gZmFsc2U7XG4n
KQorICAgIHJlc3VsdC5hcHBlbmQoJ307XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJ1xuJykKKyAg
ICByZXN1bHQuYXBwZW5kKCd9IC8vIG5hbWVzcGFjZSBXVEZcbicpCisgICAgcmV0dXJuICcnLmpv
aW4ocmVzdWx0KQorCisKK2RlZiBnZW5lcmF0ZV9tZXNzYWdlX25hbWVzX2ltcGxlbWVudGF0aW9u
KHJlY2VpdmVycyk6CisgICAgcmVzdWx0ID0gW10KKyAgICByZXN1bHQuYXBwZW5kKF9saWNlbnNl
X2hlYWRlcikKKyAgICByZXN1bHQuYXBwZW5kKCcjaW5jbHVkZSAiY29uZmlnLmgiXG4nKQorICAg
IHJlc3VsdC5hcHBlbmQoJyNpbmNsdWRlICJNZXNzYWdlTmFtZXMuaCJcbicpCisgICAgcmVzdWx0
LmFwcGVuZCgnXG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJ25hbWVzcGFjZSBJUEMge1xuJykKKyAg
ICByZXN1bHQuYXBwZW5kKCdcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnY29uc3QgY2hhciogZGVz
Y3JpcHRpb24oTWVzc2FnZU5hbWUgbmFtZSlcbicpCisgICAgcmVzdWx0LmFwcGVuZCgne1xuJykK
KyAgICByZXN1bHQuYXBwZW5kKCcgICAgc3dpdGNoIChuYW1lKSB7XG4nKQorICAgIGZvciByZWNl
aXZlciBpbiByZWNlaXZlcnM6CisgICAgICAgIGZvciBtZXNzYWdlIGluIHJlY2VpdmVyLm1lc3Nh
Z2VzOgorICAgICAgICAgICAgaWYgbWVzc2FnZS5jb25kaXRpb246CisgICAgICAgICAgICAgICAg
cmVzdWx0LmFwcGVuZCgnI2lmICVzXG4nICUgbWVzc2FnZS5jb25kaXRpb24pCisgICAgICAgICAg
ICByZXN1bHQuYXBwZW5kKCcgICAgY2FzZSBNZXNzYWdlTmFtZTo6JXNfJXM6XG4nICUgKHJlY2Vp
dmVyLm5hbWUsIG1lc3NhZ2UubmFtZSkpCisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAg
ICAgIHJldHVybiAiJXM6OiVzIjtcbicgJSAocmVjZWl2ZXIubmFtZSwgbWVzc2FnZS5uYW1lKSkK
KyAgICAgICAgICAgIGlmIG1lc3NhZ2UuaGFzX2F0dHJpYnV0ZShBU1lOQ19BVFRSSUJVVEUpOgor
ICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBjYXNlIE1lc3NhZ2VOYW1lOjolc18l
c1JlcGx5OlxuJyAlIChyZWNlaXZlci5uYW1lLCBtZXNzYWdlLm5hbWUpKQorICAgICAgICAgICAg
ICAgIHJlc3VsdC5hcHBlbmQoJyAgICAgICAgcmV0dXJuICIlczo6JXNSZXBseSI7XG4nICUgKHJl
Y2VpdmVyLm5hbWUsIG1lc3NhZ2UubmFtZSkpCisgICAgICAgICAgICBpZiBtZXNzYWdlLmNvbmRp
dGlvbjoKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcjZW5kaWZcbicpCisgICAgcmVz
dWx0LmFwcGVuZCgnICAgIGNhc2UgTWVzc2FnZU5hbWU6OldyYXBwZWRBc3luY01lc3NhZ2VGb3JU
ZXN0aW5nOlxuJykKKyAgICByZXN1bHQuYXBwZW5kKCcgICAgICAgIHJldHVybiAiSVBDOjpXcmFw
cGVkQXN5bmNNZXNzYWdlRm9yVGVzdGluZyI7XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJyAgICBj
YXNlIE1lc3NhZ2VOYW1lOjpTeW5jTWVzc2FnZVJlcGx5OlxuJykKKyAgICByZXN1bHQuYXBwZW5k
KCcgICAgICAgIHJldHVybiAiSVBDOjpTeW5jTWVzc2FnZVJlcGx5IjtcbicpCisgICAgcmVzdWx0
LmFwcGVuZCgnICAgIGNhc2UgTWVzc2FnZU5hbWU6OkluaXRpYWxpemVDb25uZWN0aW9uOlxuJykK
KyAgICByZXN1bHQuYXBwZW5kKCcgICAgICAgIHJldHVybiAiSVBDOjpJbml0aWFsaXplQ29ubmVj
dGlvbiI7XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJyAgICB9XG4nKQorICAgIHJlc3VsdC5hcHBl
bmQoJyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTtcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnICAg
IHJldHVybiAiPGludmFsaWQgbWVzc2FnZSBuYW1lPiI7XG4nKQorICAgIHJlc3VsdC5hcHBlbmQo
J31cbicpCisgICAgcmVzdWx0LmFwcGVuZCgnXG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJ30gLy8g
bmFtZXNwYWNlIElQQ1xuJykKKyAgICByZXR1cm4gJycuam9pbihyZXN1bHQpCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3QtbGVnYWN5LW1lc3NhZ2VzLmluCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdC1sZWdhY3ktbWVzc2FnZXMu
aW4JKHJldmlzaW9uIDI2MDc2NCkKKysrIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVz
dC1sZWdhY3ktbWVzc2FnZXMuaW4JKG5vbmV4aXN0ZW50KQpAQCAtMSw3NyArMCwwIEBACi0jIENv
cHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0jIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMK
LSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJyBBTkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSMgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQotIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgotIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SCi0jIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0jIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0jIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLSNpZiBFTkFCTEUoV0VCS0lUMikK
LSNpZiBORVNURURfTUFTVEVSX0NPTkRJVElPTiB8fCBNQVNURVJfT1IgJiYgTUFTVEVSX0FORAot
Ci1tZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsKLSAgICBMb2FkVVJMKFN0cmlu
ZyB1cmwpCi0jaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLSAgICBMb2FkU29tZXRoaW5nKFN0cmlu
ZyB1cmwpCi0jaWYgTkVTVEVEX01FU1NBR0VfQ09ORElUSU9OIHx8IFNPTUVfT1RIRVJfTUVTU0FH
RV9DT05ESVRJT04KLSAgICBUb3VjaEV2ZW50KFdlYktpdDo6V2ViVG91Y2hFdmVudCBldmVudCkK
LSNlbmRpZgotI2lmIE5FU1RFRF9NRVNTQUdFX0NPTkRJVElPTiAmJiBTT01FX09USEVSX01FU1NB
R0VfQ09ORElUSU9OCi0gICAgQWRkRXZlbnQoV2ViS2l0OjpXZWJUb3VjaEV2ZW50IGV2ZW50KQot
I2VuZGlmCi0gICAgTG9hZFNvbWV0aGluZ0Vsc2UoU3RyaW5nIHVybCkKLSNlbmRpZgotICAgIERp
ZFJlY2VpdmVQb2xpY3lEZWNpc2lvbih1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBsaXN0ZW5l
cklELCB1aW50MzJfdCBwb2xpY3lBY3Rpb24pCi0gICAgQ2xvc2UoKQotCi0gICAgUHJlZmVyZW5j
ZXNEaWRDaGFuZ2UoV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlIHN0b3JlKQotICAgIFNlbmRE
b3VibGVBbmRGbG9hdChkb3VibGUgZCwgZmxvYXQgZikKLSAgICBTZW5kSW50cyhWZWN0b3I8dWlu
dDY0X3Q+IGludHMsIFZlY3RvcjxWZWN0b3I8dWludDY0X3Q+PiBpbnRWZWN0b3JzKQotCi0gICAg
Q3JlYXRlUGx1Z2luKHVpbnQ2NF90IHBsdWdpbkluc3RhbmNlSUQsIFdlYktpdDo6UGx1Z2luOjpQ
YXJhbWV0ZXJzIHBhcmFtZXRlcnMpIC0+IChib29sIHJlc3VsdCkKLSAgICBSdW5KYXZhU2NyaXB0
QWxlcnQodWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG1lc3NhZ2UpIC0+ICgpCi0gICAgR2V0UGx1
Z2lucyhib29sIHJlZnJlc2gpIC0+IChWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4gcGx1Z2lu
cykKLSAgICBHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbihTdHJpbmcgcGx1Z2luUGF0aCkgLT4g
KElQQzo6Q29ubmVjdGlvbjo6SGFuZGxlIGNvbm5lY3Rpb25IYW5kbGUpIFN5bmNocm9ub3VzCi0K
LSAgICBUZXN0TXVsdGlwbGVBdHRyaWJ1dGVzKCkgLT4gKCkgV2FudHNDb25uZWN0aW9uIFN5bmNo
cm9ub3VzCi0KLSAgICBUZXN0UGFyYW1ldGVyQXR0cmlidXRlcyhbQXR0cmlidXRlT25lIEF0dHJp
YnV0ZVR3b10gdWludDY0X3QgZm9vLCBkb3VibGUgYmFyLCBbQXR0cmlidXRlVGhyZWVdIGRvdWJs
ZSBiYXopCi0KLSAgICBUZW1wbGF0ZVRlc3QoSGFzaE1hcDxTdHJpbmcsIHN0ZDo6cGFpcjxTdHJp
bmcsIHVpbnQ2NF90Pj4gYSkKLQotICAgIFNldFZpZGVvTGF5ZXJJRChXZWJDb3JlOjpHcmFwaGlj
c0xheWVyOjpQbGF0Zm9ybUxheWVySUQgdmlkZW9MYXllcklEKQotCi0jaWYgUExBVEZPUk0oTUFD
KQotICAgIERpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKElQQzo6TWFjaFBvcnQgY29ubmVj
dGlvbklkZW50aWZpZXIpCi0jZW5kaWYKLQotI2lmIFBMQVRGT1JNKE1BQykKLSAgICAjIEtleWJv
YXJkIHN1cHBvcnQKLSAgICBJbnRlcnByZXRLZXlFdmVudCh1aW50MzJfdCB0eXBlKSAtPiAoVmVj
dG9yPFdlYkNvcmU6OktleXByZXNzQ29tbWFuZD4gY29tbWFuZE5hbWUpCi0jZW5kaWYKLQotI2lm
IEVOQUJMRShERVBSRUNBVEVEX0ZFQVRVUkUpCi0gICAgRGVwcmVjYXRlZE9wZXJhdGlvbihJUEM6
OkR1bW15VHlwZSBkdW1teSkKLSNlbmRpZgotCi0jaWYgRU5BQkxFKEVYUEVSSU1FTlRBTF9GRUFU
VVJFKQotICAgIEV4cGVyaW1lbnRhbE9wZXJhdGlvbihJUEM6OkR1bW15VHlwZSBkdW1teSkKLSNl
bmRpZgotfQotCi0jZW5kaWYKLSNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9TY3JpcHRzL3dl
YmtpdC90ZXN0LWxlZ2FjeS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1NjcmlwdHMvd2Via2l0L3Rlc3QtbGVnYWN5Lm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyNjA3NjQp
CShmcm9tIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdC1sZWdhY3ktbWVzc2FnZXMu
aW46MjYwNzY0KQorKysgU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0LWxlZ2FjeS5t
ZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDc3IEBACisjIENvcHlyaWdodCAo
QykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
IyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJyBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisj
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNpZiBFTkFCTEUoV0VCS0lUMikKKyNpZiBORVNU
RURfTUFTVEVSX0NPTkRJVElPTiB8fCBNQVNURVJfT1IgJiYgTUFTVEVSX0FORAorCittZXNzYWdl
cyAtPiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsKKyAgICBMb2FkVVJMKFN0cmluZyB1cmwpCisj
aWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAgICBMb2FkU29tZXRoaW5nKFN0cmluZyB1cmwpCisj
aWYgTkVTVEVEX01FU1NBR0VfQ09ORElUSU9OIHx8IFNPTUVfT1RIRVJfTUVTU0FHRV9DT05ESVRJ
T04KKyAgICBUb3VjaEV2ZW50KFdlYktpdDo6V2ViVG91Y2hFdmVudCBldmVudCkKKyNlbmRpZgor
I2lmIE5FU1RFRF9NRVNTQUdFX0NPTkRJVElPTiAmJiBTT01FX09USEVSX01FU1NBR0VfQ09ORElU
SU9OCisgICAgQWRkRXZlbnQoV2ViS2l0OjpXZWJUb3VjaEV2ZW50IGV2ZW50KQorI2VuZGlmCisg
ICAgTG9hZFNvbWV0aGluZ0Vsc2UoU3RyaW5nIHVybCkKKyNlbmRpZgorICAgIERpZFJlY2VpdmVQ
b2xpY3lEZWNpc2lvbih1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBsaXN0ZW5lcklELCB1aW50
MzJfdCBwb2xpY3lBY3Rpb24pCisgICAgQ2xvc2UoKQorCisgICAgUHJlZmVyZW5jZXNEaWRDaGFu
Z2UoV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlIHN0b3JlKQorICAgIFNlbmREb3VibGVBbmRG
bG9hdChkb3VibGUgZCwgZmxvYXQgZikKKyAgICBTZW5kSW50cyhWZWN0b3I8dWludDY0X3Q+IGlu
dHMsIFZlY3RvcjxWZWN0b3I8dWludDY0X3Q+PiBpbnRWZWN0b3JzKQorCisgICAgQ3JlYXRlUGx1
Z2luKHVpbnQ2NF90IHBsdWdpbkluc3RhbmNlSUQsIFdlYktpdDo6UGx1Z2luOjpQYXJhbWV0ZXJz
IHBhcmFtZXRlcnMpIC0+IChib29sIHJlc3VsdCkKKyAgICBSdW5KYXZhU2NyaXB0QWxlcnQodWlu
dDY0X3QgZnJhbWVJRCwgU3RyaW5nIG1lc3NhZ2UpIC0+ICgpCisgICAgR2V0UGx1Z2lucyhib29s
IHJlZnJlc2gpIC0+IChWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4gcGx1Z2lucykKKyAgICBH
ZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbihTdHJpbmcgcGx1Z2luUGF0aCkgLT4gKElQQzo6Q29u
bmVjdGlvbjo6SGFuZGxlIGNvbm5lY3Rpb25IYW5kbGUpIFN5bmNocm9ub3VzCisKKyAgICBUZXN0
TXVsdGlwbGVBdHRyaWJ1dGVzKCkgLT4gKCkgV2FudHNDb25uZWN0aW9uIFN5bmNocm9ub3VzCisK
KyAgICBUZXN0UGFyYW1ldGVyQXR0cmlidXRlcyhbQXR0cmlidXRlT25lIEF0dHJpYnV0ZVR3b10g
dWludDY0X3QgZm9vLCBkb3VibGUgYmFyLCBbQXR0cmlidXRlVGhyZWVdIGRvdWJsZSBiYXopCisK
KyAgICBUZW1wbGF0ZVRlc3QoSGFzaE1hcDxTdHJpbmcsIHN0ZDo6cGFpcjxTdHJpbmcsIHVpbnQ2
NF90Pj4gYSkKKworICAgIFNldFZpZGVvTGF5ZXJJRChXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpQ
bGF0Zm9ybUxheWVySUQgdmlkZW9MYXllcklEKQorCisjaWYgUExBVEZPUk0oTUFDKQorICAgIERp
ZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKElQQzo6TWFjaFBvcnQgY29ubmVjdGlvbklkZW50
aWZpZXIpCisjZW5kaWYKKworI2lmIFBMQVRGT1JNKE1BQykKKyAgICAjIEtleWJvYXJkIHN1cHBv
cnQKKyAgICBJbnRlcnByZXRLZXlFdmVudCh1aW50MzJfdCB0eXBlKSAtPiAoVmVjdG9yPFdlYkNv
cmU6OktleXByZXNzQ29tbWFuZD4gY29tbWFuZE5hbWUpCisjZW5kaWYKKworI2lmIEVOQUJMRShE
RVBSRUNBVEVEX0ZFQVRVUkUpCisgICAgRGVwcmVjYXRlZE9wZXJhdGlvbihJUEM6OkR1bW15VHlw
ZSBkdW1teSkKKyNlbmRpZgorCisjaWYgRU5BQkxFKEVYUEVSSU1FTlRBTF9GRUFUVVJFKQorICAg
IEV4cGVyaW1lbnRhbE9wZXJhdGlvbihJUEM6OkR1bW15VHlwZSBkdW1teSkKKyNlbmRpZgorfQor
CisjZW5kaWYKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0
LWxlZ2FjeU1lc3NhZ2VSZWNlaXZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9T
Y3JpcHRzL3dlYmtpdC90ZXN0LWxlZ2FjeU1lc3NhZ2VSZWNlaXZlci5jcHAJKG5vbmV4aXN0ZW50
KQorKysgU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0LWxlZ2FjeU1lc3NhZ2VSZWNl
aXZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyMDMgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTAtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
CisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiAoRU5BQkxFKFdFQktJVDIpICYmIChORVNU
RURfTUFTVEVSX0NPTkRJVElPTiB8fCBNQVNURVJfT1IgJiYgTUFTVEVSX0FORCkpCisKKyNpbmNs
dWRlICJXZWJQYWdlLmgiCisKKyNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUg
IkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJEZWNvZGVyLmgiCisjaWYgRU5BQkxFKERFUFJFQ0FU
RURfRkVBVFVSRSkgfHwgRU5BQkxFKEVYUEVSSU1FTlRBTF9GRUFUVVJFKQorI2luY2x1ZGUgIkR1
bW15VHlwZS5oIgorI2VuZGlmCisjaW5jbHVkZSAiSGFuZGxlTWVzc2FnZS5oIgorI2lmIFBMQVRG
T1JNKE1BQykKKyNpbmNsdWRlICJNYWNoUG9ydC5oIgorI2VuZGlmCisjaW5jbHVkZSAiUGx1Z2lu
LmgiCisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaWYgKEVOQUJMRShUT1VD
SF9FVkVOVFMpICYmIChORVNURURfTUVTU0FHRV9DT05ESVRJT04gJiYgU09NRV9PVEhFUl9NRVNT
QUdFX0NPTkRJVElPTikpIHx8IChFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiAoTkVTVEVEX01FU1NB
R0VfQ09ORElUSU9OIHx8IFNPTUVfT1RIRVJfTUVTU0FHRV9DT05ESVRJT04pKQorI2luY2x1ZGUg
IldlYkV2ZW50LmgiCisjZW5kaWYKKyNpbmNsdWRlICJXZWJQYWdlTWVzc2FnZXMuaCIKKyNpbmNs
dWRlICJXZWJQcmVmZXJlbmNlc1N0b3JlLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0xh
eWVyLmg+CisjaWYgUExBVEZPUk0oTUFDKQorI2luY2x1ZGUgPFdlYkNvcmUvS2V5Ym9hcmRFdmVu
dC5oPgorI2VuZGlmCisjaW5jbHVkZSA8V2ViQ29yZS9QbHVnaW5EYXRhLmg+CisjaW5jbHVkZSA8
dXRpbGl0eT4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIE1lc3NhZ2Vz
IHsKKworbmFtZXNwYWNlIFdlYlBhZ2UgeworCit2b2lkIEdldFBsdWdpblByb2Nlc3NDb25uZWN0
aW9uOjpzZW5kKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiYgZW5jb2RlciwgSVBDOjpD
b25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBJUEM6OkNvbm5lY3Rpb246OkhhbmRsZSYgY29u
bmVjdGlvbkhhbmRsZSkKK3sKKyAgICAqZW5jb2RlciA8PCBjb25uZWN0aW9uSGFuZGxlOworICAg
IGNvbm5lY3Rpb24uc2VuZFN5bmNSZXBseShXVEZNb3ZlKGVuY29kZXIpKTsKK30KKwordm9pZCBU
ZXN0TXVsdGlwbGVBdHRyaWJ1dGVzOjpzZW5kKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+
JiYgZW5jb2RlciwgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQoreworICAgIGNvbm5lY3Rp
b24uc2VuZFN5bmNSZXBseShXVEZNb3ZlKGVuY29kZXIpKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViUGFnZQorCit9IC8vIG5hbWVzcGFjZSBNZXNzYWdlcworCituYW1lc3BhY2UgV2ViS2l0IHsK
Kwordm9pZCBXZWJQYWdlOjpkaWRSZWNlaXZlV2ViUGFnZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpCit7CisgICAgYXV0byBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyk7CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9
PSBNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFVSTDo6bmFtZSgpKSB7CisgICAgICAgIElQQzo6aGFu
ZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFVSTD4oZGVjb2RlciwgdGhpcywgJldl
YlBhZ2U6OmxvYWRVUkwpOworICAgICAgICByZXR1cm47CisgICAgfQorI2lmIEVOQUJMRShUT1VD
SF9FVkVOVFMpCisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2Vi
UGFnZTo6TG9hZFNvbWV0aGluZzo6bmFtZSgpKSB7CisgICAgICAgIElQQzo6aGFuZGxlTWVzc2Fn
ZTxNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFNvbWV0aGluZz4oZGVjb2RlciwgdGhpcywgJldlYlBh
Z2U6OmxvYWRTb21ldGhpbmcpOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisjaWYg
KEVOQUJMRShUT1VDSF9FVkVOVFMpICYmIChORVNURURfTUVTU0FHRV9DT05ESVRJT04gfHwgU09N
RV9PVEhFUl9NRVNTQUdFX0NPTkRJVElPTikpCisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUo
KSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6VG91Y2hFdmVudDo6bmFtZSgpKSB7CisgICAgICAgIElQ
Qzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6VG91Y2hFdmVudD4oZGVjb2Rlciwg
dGhpcywgJldlYlBhZ2U6OnRvdWNoRXZlbnQpOworICAgICAgICByZXR1cm47CisgICAgfQorI2Vu
ZGlmCisjaWYgKEVOQUJMRShUT1VDSF9FVkVOVFMpICYmIChORVNURURfTUVTU0FHRV9DT05ESVRJ
T04gJiYgU09NRV9PVEhFUl9NRVNTQUdFX0NPTkRJVElPTikpCisgICAgaWYgKGRlY29kZXIubWVz
c2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6QWRkRXZlbnQ6Om5hbWUoKSkgeworICAg
ICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OkFkZEV2ZW50PihkZWNv
ZGVyLCB0aGlzLCAmV2ViUGFnZTo6YWRkRXZlbnQpOworICAgICAgICByZXR1cm47CisgICAgfQor
I2VuZGlmCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdl
TmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkU29tZXRoaW5nRWxzZTo6bmFtZSgpKSB7
CisgICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFNvbWV0
aGluZ0Vsc2U+KGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjpsb2FkU29tZXRoaW5nRWxzZSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFt
ZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZWNlaXZlUG9saWN5RGVjaXNpb246Om5hbWUo
KSkgeworICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJl
Y2VpdmVQb2xpY3lEZWNpc2lvbj4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OmRpZFJlY2VpdmVQ
b2xpY3lEZWNpc2lvbik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKGRlY29kZXIu
bWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6Q2xvc2U6Om5hbWUoKSkgeworICAg
ICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OkNsb3NlPihkZWNvZGVy
LCB0aGlzLCAmV2ViUGFnZTo6Y2xvc2UpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlm
IChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OlByZWZlcmVuY2Vz
RGlkQ2hhbmdlOjpuYW1lKCkpIHsKKyAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2Vz
OjpXZWJQYWdlOjpQcmVmZXJlbmNlc0RpZENoYW5nZT4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6
OnByZWZlcmVuY2VzRGlkQ2hhbmdlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAo
ZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpTZW5kRG91YmxlQW5k
RmxvYXQ6Om5hbWUoKSkgeworICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6Oldl
YlBhZ2U6OlNlbmREb3VibGVBbmRGbG9hdD4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OnNlbmRE
b3VibGVBbmRGbG9hdCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKGRlY29kZXIu
bWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6U2VuZEludHM6Om5hbWUoKSkgewor
ICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OlNlbmRJbnRzPihk
ZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6c2VuZEludHMpOworICAgICAgICByZXR1cm47CisgICAg
fQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OlRl
c3RQYXJhbWV0ZXJBdHRyaWJ1dGVzOjpuYW1lKCkpIHsKKyAgICAgICAgSVBDOjpoYW5kbGVNZXNz
YWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0UGFyYW1ldGVyQXR0cmlidXRlcz4oZGVjb2Rlciwg
dGhpcywgJldlYlBhZ2U6OnRlc3RQYXJhbWV0ZXJBdHRyaWJ1dGVzKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQ
YWdlOjpUZW1wbGF0ZVRlc3Q6Om5hbWUoKSkgeworICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8
TWVzc2FnZXM6OldlYlBhZ2U6OlRlbXBsYXRlVGVzdD4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6
OnRlbXBsYXRlVGVzdCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKGRlY29kZXIu
bWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6U2V0VmlkZW9MYXllcklEOjpuYW1l
KCkpIHsKKyAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRW
aWRlb0xheWVySUQ+KGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjpzZXRWaWRlb0xheWVySUQpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorI2lmIFBMQVRGT1JNKE1BQykKKyAgICBpZiAoZGVjb2Rl
ci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRDcmVhdGVXZWJQcm9jZXNz
Q29ubmVjdGlvbjo6bmFtZSgpKSB7CisgICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdl
czo6V2ViUGFnZTo6RGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24+KGRlY29kZXIsIHRoaXMs
ICZXZWJQYWdlOjpkaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbik7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisjZW5kaWYKKyNpZiBFTkFCTEUoREVQUkVDQVRFRF9GRUFUVVJFKQorICAgIGlm
IChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OkRlcHJlY2F0ZWRP
cGVyYXRpb246Om5hbWUoKSkgeworICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6
OldlYlBhZ2U6OkRlcHJlY2F0ZWRPcGVyYXRpb24+KGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjpk
ZXByZWNhdGVkT3BlcmF0aW9uKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorI2lm
IEVOQUJMRShFWFBFUklNRU5UQUxfRkVBVFVSRSkKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFt
ZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpFeHBlcmltZW50YWxPcGVyYXRpb246Om5hbWUoKSkg
eworICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OkV4cGVyaW1l
bnRhbE9wZXJhdGlvbj4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OmV4cGVyaW1lbnRhbE9wZXJh
dGlvbik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKyAgICBVTlVTRURfUEFSQU0o
Y29ubmVjdGlvbik7CisgICAgVU5VU0VEX1BBUkFNKGRlY29kZXIpOworICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworfQorCit2b2lkIFdlYlBhZ2U6OmRpZFJlY2VpdmVTeW5jV2ViUGFnZU1lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIHN0
ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiByZXBseUVuY29kZXIpCit7CisgICAgYXV0byBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyk7CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5h
bWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6Q3JlYXRlUGx1Z2luOjpuYW1lKCkpIHsKKyAgICAg
ICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpDcmVhdGVQbHVnaW4+KGRl
Y29kZXIsICpyZXBseUVuY29kZXIsIHRoaXMsICZXZWJQYWdlOjpjcmVhdGVQbHVnaW4pOworICAg
ICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVz
c2FnZXM6OldlYlBhZ2U6OlJ1bkphdmFTY3JpcHRBbGVydDo6bmFtZSgpKSB7CisgICAgICAgIElQ
Qzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6UnVuSmF2YVNjcmlwdEFsZXJ0Pihk
ZWNvZGVyLCAqcmVwbHlFbmNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6cnVuSmF2YVNjcmlwdEFsZXJ0
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgp
ID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRQbHVnaW5zOjpuYW1lKCkpIHsKKyAgICAgICAgSVBD
OjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRQbHVnaW5zPihkZWNvZGVyLCAq
cmVwbHlFbmNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6Z2V0UGx1Z2lucyk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2Vi
UGFnZTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246Om5hbWUoKSkgeworICAgICAgICBJUEM6
OmhhbmRsZU1lc3NhZ2VTeW5jaHJvbm91czxNZXNzYWdlczo6V2ViUGFnZTo6R2V0UGx1Z2luUHJv
Y2Vzc0Nvbm5lY3Rpb24+KGNvbm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5RW5jb2RlciwgdGhpcywg
JldlYlBhZ2U6OmdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdl
OjpUZXN0TXVsdGlwbGVBdHRyaWJ1dGVzOjpuYW1lKCkpIHsKKyAgICAgICAgSVBDOjpoYW5kbGVN
ZXNzYWdlU3luY2hyb25vdXNXYW50c0Nvbm5lY3Rpb248TWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RN
dWx0aXBsZUF0dHJpYnV0ZXM+KGNvbm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5RW5jb2RlciwgdGhp
cywgJldlYlBhZ2U6OnRlc3RNdWx0aXBsZUF0dHJpYnV0ZXMpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorI2lmIFBMQVRGT1JNKE1BQykKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09
IE1lc3NhZ2VzOjpXZWJQYWdlOjpJbnRlcnByZXRLZXlFdmVudDo6bmFtZSgpKSB7CisgICAgICAg
IElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6SW50ZXJwcmV0S2V5RXZlbnQ+
KGRlY29kZXIsICpyZXBseUVuY29kZXIsIHRoaXMsICZXZWJQYWdlOjppbnRlcnByZXRLZXlFdmVu
dCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKyAgICBVTlVTRURfUEFSQU0oY29u
bmVjdGlvbik7CisgICAgVU5VU0VEX1BBUkFNKGRlY29kZXIpOworICAgIFVOVVNFRF9QQVJBTShy
ZXBseUVuY29kZXIpOworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKKworCisjZW5kaWYgLy8gKEVOQUJMRShXRUJLSVQyKSAmJiAoTkVTVEVEX01B
U1RFUl9DT05ESVRJT04gfHwgTUFTVEVSX09SICYmIE1BU1RFUl9BTkQpKQpJbmRleDogU291cmNl
L1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0LWxlZ2FjeU1lc3NhZ2VzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0LWxlZ2FjeU1lc3NhZ2VzLmgJKG5v
bmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0LWxlZ2FjeU1l
c3NhZ2VzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NDkgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTAtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
CisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2lmIChFTkFCTEUoV0VCS0lUMikgJiYgKE5FU1RFRF9NQVNU
RVJfQ09ORElUSU9OIHx8IE1BU1RFUl9PUiAmJiBNQVNURVJfQU5EKSkKKworI2luY2x1ZGUgIkFy
Z3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIk1lc3Nh
Z2VOYW1lcy5oIgorI2luY2x1ZGUgIlBsdWdpbi5oIgorI2luY2x1ZGUgIldlYlBhZ2VNZXNzYWdl
c1JlcGxpZXMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXIuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL0tleWJvYXJkRXZlbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BsdWdpbkRhdGEu
aD4KKyNpbmNsdWRlIDx1dGlsaXR5PgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4K
KyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CisKK25hbWVzcGFjZSBJUEMgeworY2xhc3MgRHVtbXlUeXBlOworY2xhc3MgTWFjaFBvcnQ7Cit9
CisKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgV2ViUHJlZmVyZW5jZXNTdG9yZTsKK2NsYXNz
IFdlYlRvdWNoRXZlbnQ7Cit9CisKK25hbWVzcGFjZSBNZXNzYWdlcyB7CituYW1lc3BhY2UgV2Vi
UGFnZSB7CisKK3N0YXRpYyBpbmxpbmUgSVBDOjpSZWNlaXZlck5hbWUgbWVzc2FnZVJlY2VpdmVy
TmFtZSgpCit7CisgICAgcmV0dXJuIElQQzo6UmVjZWl2ZXJOYW1lOjpXZWJQYWdlOworfQorCitj
bGFzcyBMb2FkVVJMIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8Y29uc3QgU3Ry
aW5nJj4gQXJndW1lbnRzOworCisgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsg
cmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfTG9hZFVSTDsgfQorICAgIHN0YXRpYyBj
b25zdCBib29sIGlzU3luYyA9IGZhbHNlOworCisgICAgZXhwbGljaXQgTG9hZFVSTChjb25zdCBT
dHJpbmcmIHVybCkKKyAgICAgICAgOiBtX2FyZ3VtZW50cyh1cmwpCisgICAgeworICAgIH0KKwor
ICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJl
dHVybiBtX2FyZ3VtZW50czsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQXJndW1lbnRzIG1fYXJn
dW1lbnRzOworfTsKKworI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCitjbGFzcyBMb2FkU29tZXRo
aW5nIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8Y29uc3QgU3RyaW5nJj4gQXJn
dW1lbnRzOworCisgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQ
Qzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfTG9hZFNvbWV0aGluZzsgfQorICAgIHN0YXRpYyBjb25z
dCBib29sIGlzU3luYyA9IGZhbHNlOworCisgICAgZXhwbGljaXQgTG9hZFNvbWV0aGluZyhjb25z
dCBTdHJpbmcmIHVybCkKKyAgICAgICAgOiBtX2FyZ3VtZW50cyh1cmwpCisgICAgeworICAgIH0K
KworICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKKyAgICB7CisgICAgICAg
IHJldHVybiBtX2FyZ3VtZW50czsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQXJndW1lbnRzIG1f
YXJndW1lbnRzOworfTsKKyNlbmRpZgorCisjaWYgKEVOQUJMRShUT1VDSF9FVkVOVFMpICYmIChO
RVNURURfTUVTU0FHRV9DT05ESVRJT04gfHwgU09NRV9PVEhFUl9NRVNTQUdFX0NPTkRJVElPTikp
CitjbGFzcyBUb3VjaEV2ZW50IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8Y29u
c3QgV2ViS2l0OjpXZWJUb3VjaEV2ZW50Jj4gQXJndW1lbnRzOworCisgICAgc3RhdGljIElQQzo6
TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfVG91
Y2hFdmVudDsgfQorICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOworCisgICAg
ZXhwbGljaXQgVG91Y2hFdmVudChjb25zdCBXZWJLaXQ6OldlYlRvdWNoRXZlbnQmIGV2ZW50KQor
ICAgICAgICA6IG1fYXJndW1lbnRzKGV2ZW50KQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdCBB
cmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9hcmd1
bWVudHM7CisgICAgfQorCitwcml2YXRlOgorICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKK307
CisjZW5kaWYKKworI2lmIChFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiAoTkVTVEVEX01FU1NBR0Vf
Q09ORElUSU9OICYmIFNPTUVfT1RIRVJfTUVTU0FHRV9DT05ESVRJT04pKQorY2xhc3MgQWRkRXZl
bnQgeworcHVibGljOgorICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBXZWJLaXQ6OldlYlRv
dWNoRXZlbnQmPiBBcmd1bWVudHM7CisKKyAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1l
KCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9BZGRFdmVudDsgfQorICAgIHN0
YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOworCisgICAgZXhwbGljaXQgQWRkRXZlbnQo
Y29uc3QgV2ViS2l0OjpXZWJUb3VjaEV2ZW50JiBldmVudCkKKyAgICAgICAgOiBtX2FyZ3VtZW50
cyhldmVudCkKKyAgICB7CisgICAgfQorCisgICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMo
KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOworICAgIH0KKworcHJp
dmF0ZToKKyAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Cit9OworI2VuZGlmCisKKyNpZiBFTkFC
TEUoVE9VQ0hfRVZFTlRTKQorY2xhc3MgTG9hZFNvbWV0aGluZ0Vsc2UgeworcHVibGljOgorICAg
IHR5cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBTdHJpbmcmPiBBcmd1bWVudHM7CisKKyAgICBzdGF0
aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6V2Vi
UGFnZV9Mb2FkU29tZXRoaW5nRWxzZTsgfQorICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9
IGZhbHNlOworCisgICAgZXhwbGljaXQgTG9hZFNvbWV0aGluZ0Vsc2UoY29uc3QgU3RyaW5nJiB1
cmwpCisgICAgICAgIDogbV9hcmd1bWVudHModXJsKQorICAgIHsKKyAgICB9CisKKyAgICBjb25z
dCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9h
cmd1bWVudHM7CisgICAgfQorCitwcml2YXRlOgorICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsK
K307CisjZW5kaWYKKworY2xhc3MgRGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uIHsKK3B1YmxpYzoK
KyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8dWludDY0X3QsIHVpbnQ2NF90LCB1aW50MzJfdD4gQXJn
dW1lbnRzOworCisgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQ
Qzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfRGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uOyB9CisgICAg
c3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7CisKKyAgICBEaWRSZWNlaXZlUG9saWN5
RGVjaXNpb24odWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbGlzdGVuZXJJRCwgdWludDMyX3Qg
cG9saWN5QWN0aW9uKQorICAgICAgICA6IG1fYXJndW1lbnRzKGZyYW1lSUQsIGxpc3RlbmVySUQs
IHBvbGljeUFjdGlvbikKKyAgICB7CisgICAgfQorCisgICAgY29uc3QgQXJndW1lbnRzJiBhcmd1
bWVudHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOworICAgIH0K
KworcHJpdmF0ZToKKyAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Cit9OworCitjbGFzcyBDbG9z
ZSB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBzdGQ6OnR1cGxlPD4gQXJndW1lbnRzOworCisgICAg
c3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6
OldlYlBhZ2VfQ2xvc2U7IH0KKyAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsK
KworICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKKyAgICB7CisgICAgICAg
IHJldHVybiBtX2FyZ3VtZW50czsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQXJndW1lbnRzIG1f
YXJndW1lbnRzOworfTsKKworY2xhc3MgUHJlZmVyZW5jZXNEaWRDaGFuZ2UgeworcHVibGljOgor
ICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmUm
PiBBcmd1bWVudHM7CisKKyAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1
cm4gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9QcmVmZXJlbmNlc0RpZENoYW5nZTsgfQorICAg
IHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOworCisgICAgZXhwbGljaXQgUHJlZmVy
ZW5jZXNEaWRDaGFuZ2UoY29uc3QgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSkK
KyAgICAgICAgOiBtX2FyZ3VtZW50cyhzdG9yZSkKKyAgICB7CisgICAgfQorCisgICAgY29uc3Qg
QXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYXJn
dW1lbnRzOworICAgIH0KKworcHJpdmF0ZToKKyAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Cit9
OworCitjbGFzcyBTZW5kRG91YmxlQW5kRmxvYXQgeworcHVibGljOgorICAgIHR5cGVkZWYgc3Rk
Ojp0dXBsZTxkb3VibGUsIGZsb2F0PiBBcmd1bWVudHM7CisKKyAgICBzdGF0aWMgSVBDOjpNZXNz
YWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9TZW5kRG91
YmxlQW5kRmxvYXQ7IH0KKyAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKKwor
ICAgIFNlbmREb3VibGVBbmRGbG9hdChkb3VibGUgZCwgZmxvYXQgZikKKyAgICAgICAgOiBtX2Fy
Z3VtZW50cyhkLCBmKQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3Vt
ZW50cygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7CisgICAgfQor
Citwcml2YXRlOgorICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKK307CisKK2NsYXNzIFNlbmRJ
bnRzIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8Y29uc3QgVmVjdG9yPHVpbnQ2
NF90PiYsIGNvbnN0IFZlY3RvcjxWZWN0b3I8dWludDY0X3Q+PiY+IEFyZ3VtZW50czsKKworICAg
IHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1l
OjpXZWJQYWdlX1NlbmRJbnRzOyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFs
c2U7CisKKyAgICBTZW5kSW50cyhjb25zdCBWZWN0b3I8dWludDY0X3Q+JiBpbnRzLCBjb25zdCBW
ZWN0b3I8VmVjdG9yPHVpbnQ2NF90Pj4mIGludFZlY3RvcnMpCisgICAgICAgIDogbV9hcmd1bWVu
dHMoaW50cywgaW50VmVjdG9ycykKKyAgICB7CisgICAgfQorCisgICAgY29uc3QgQXJndW1lbnRz
JiBhcmd1bWVudHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwor
ICAgIH0KKworcHJpdmF0ZToKKyAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Cit9OworCitjbGFz
cyBDcmVhdGVQbHVnaW4geworcHVibGljOgorICAgIHR5cGVkZWYgc3RkOjp0dXBsZTx1aW50NjRf
dCwgY29uc3QgV2ViS2l0OjpQbHVnaW46OlBhcmFtZXRlcnMmPiBBcmd1bWVudHM7CisKKyAgICBz
dGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6
V2ViUGFnZV9DcmVhdGVQbHVnaW47IH0KKyAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSB0
cnVlOworCisgICAgdXNpbmcgUmVwbHkgPSBzdGQ6OnR1cGxlPGJvb2wmPjsKKyAgICB1c2luZyBS
ZXBseUFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8Ym9vbD47CisgICAgQ3JlYXRlUGx1Z2luKHVpbnQ2
NF90IHBsdWdpbkluc3RhbmNlSUQsIGNvbnN0IFdlYktpdDo6UGx1Z2luOjpQYXJhbWV0ZXJzJiBw
YXJhbWV0ZXJzKQorICAgICAgICA6IG1fYXJndW1lbnRzKHBsdWdpbkluc3RhbmNlSUQsIHBhcmFt
ZXRlcnMpCisgICAgeworICAgIH0KKworICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkg
Y29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKKyAgICB9CisKK3ByaXZh
dGU6CisgICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOworfTsKKworY2xhc3MgUnVuSmF2YVNjcmlw
dEFsZXJ0IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8dWludDY0X3QsIGNvbnN0
IFN0cmluZyY+IEFyZ3VtZW50czsKKworICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUo
KSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX1J1bkphdmFTY3JpcHRBbGVydDsg
fQorICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IHRydWU7CisKKyAgICB1c2luZyBSZXBs
eSA9IHN0ZDo6dHVwbGU8PjsKKyAgICB1c2luZyBSZXBseUFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8
PjsKKyAgICBSdW5KYXZhU2NyaXB0QWxlcnQodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5n
JiBtZXNzYWdlKQorICAgICAgICA6IG1fYXJndW1lbnRzKGZyYW1lSUQsIG1lc3NhZ2UpCisgICAg
eworICAgIH0KKworICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKKyAgICB7
CisgICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQXJn
dW1lbnRzIG1fYXJndW1lbnRzOworfTsKKworY2xhc3MgR2V0UGx1Z2lucyB7CitwdWJsaWM6Cisg
ICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGJvb2w+IEFyZ3VtZW50czsKKworICAgIHN0YXRpYyBJUEM6
Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX0dl
dFBsdWdpbnM7IH0KKyAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSB0cnVlOworCisgICAg
dXNpbmcgUmVwbHkgPSBzdGQ6OnR1cGxlPFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiY+Owor
ICAgIHVzaW5nIFJlcGx5QXJndW1lbnRzID0gc3RkOjp0dXBsZTxWZWN0b3I8V2ViQ29yZTo6UGx1
Z2luSW5mbz4+OworICAgIGV4cGxpY2l0IEdldFBsdWdpbnMoYm9vbCByZWZyZXNoKQorICAgICAg
ICA6IG1fYXJndW1lbnRzKHJlZnJlc2gpCisgICAgeworICAgIH0KKworICAgIGNvbnN0IEFyZ3Vt
ZW50cyYgYXJndW1lbnRzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2FyZ3VtZW50
czsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOworfTsKKwor
Y2xhc3MgR2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24geworcHVibGljOgorICAgIHR5cGVkZWYg
c3RkOjp0dXBsZTxjb25zdCBTdHJpbmcmPiBBcmd1bWVudHM7CisKKyAgICBzdGF0aWMgSVBDOjpN
ZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9HZXRQ
bHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjsgfQorICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9
IHRydWU7CisKKyAgICB1c2luZyBEZWxheWVkUmVwbHkgPSBHZXRQbHVnaW5Qcm9jZXNzQ29ubmVj
dGlvbkRlbGF5ZWRSZXBseTsKKyAgICBzdGF0aWMgdm9pZCBzZW5kKHN0ZDo6dW5pcXVlX3B0cjxJ
UEM6OkVuY29kZXI+JiYsIElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IElQQzo6Q29ubmVjdGlvbjo6
SGFuZGxlJiBjb25uZWN0aW9uSGFuZGxlKTsKKyAgICB1c2luZyBSZXBseSA9IHN0ZDo6dHVwbGU8
SVBDOjpDb25uZWN0aW9uOjpIYW5kbGUmPjsKKyAgICB1c2luZyBSZXBseUFyZ3VtZW50cyA9IHN0
ZDo6dHVwbGU8SVBDOjpDb25uZWN0aW9uOjpIYW5kbGU+OworICAgIGV4cGxpY2l0IEdldFBsdWdp
blByb2Nlc3NDb25uZWN0aW9uKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCkKKyAgICAgICAgOiBt
X2FyZ3VtZW50cyhwbHVnaW5QYXRoKQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdCBBcmd1bWVu
dHMmIGFyZ3VtZW50cygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7
CisgICAgfQorCitwcml2YXRlOgorICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKK307CisKK2Ns
YXNzIFRlc3RNdWx0aXBsZUF0dHJpYnV0ZXMgeworcHVibGljOgorICAgIHR5cGVkZWYgc3RkOjp0
dXBsZTw+IEFyZ3VtZW50czsKKworICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7
IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX1Rlc3RNdWx0aXBsZUF0dHJpYnV0ZXM7
IH0KKyAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSB0cnVlOworCisgICAgdXNpbmcgRGVs
YXllZFJlcGx5ID0gVGVzdE11bHRpcGxlQXR0cmlidXRlc0RlbGF5ZWRSZXBseTsKKyAgICBzdGF0
aWMgdm9pZCBzZW5kKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiYsIElQQzo6Q29ubmVj
dGlvbiYpOworICAgIHVzaW5nIFJlcGx5ID0gc3RkOjp0dXBsZTw+OworICAgIHVzaW5nIFJlcGx5
QXJndW1lbnRzID0gc3RkOjp0dXBsZTw+OworICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRz
KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKKyAgICB9CisKK3By
aXZhdGU6CisgICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOworfTsKKworY2xhc3MgVGVzdFBhcmFt
ZXRlckF0dHJpYnV0ZXMgeworcHVibGljOgorICAgIHR5cGVkZWYgc3RkOjp0dXBsZTx1aW50NjRf
dCwgZG91YmxlLCBkb3VibGU+IEFyZ3VtZW50czsKKworICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VO
YW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX1Rlc3RQYXJhbWV0
ZXJBdHRyaWJ1dGVzOyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7CisK
KyAgICBUZXN0UGFyYW1ldGVyQXR0cmlidXRlcyh1aW50NjRfdCBmb28sIGRvdWJsZSBiYXIsIGRv
dWJsZSBiYXopCisgICAgICAgIDogbV9hcmd1bWVudHMoZm9vLCBiYXIsIGJheikKKyAgICB7Cisg
ICAgfQorCisgICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAorICAgIHsKKyAg
ICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOworICAgIH0KKworcHJpdmF0ZToKKyAgICBBcmd1bWVu
dHMgbV9hcmd1bWVudHM7Cit9OworCitjbGFzcyBUZW1wbGF0ZVRlc3QgeworcHVibGljOgorICAg
IHR5cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBIYXNoTWFwPFN0cmluZywgc3RkOjpwYWlyPFN0cmlu
ZywgdWludDY0X3Q+PiY+IEFyZ3VtZW50czsKKworICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1l
IG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX1RlbXBsYXRlVGVzdDsg
fQorICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOworCisgICAgZXhwbGljaXQg
VGVtcGxhdGVUZXN0KGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBzdGQ6OnBhaXI8U3RyaW5nLCB1aW50
NjRfdD4+JiBhKQorICAgICAgICA6IG1fYXJndW1lbnRzKGEpCisgICAgeworICAgIH0KKworICAg
IGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVy
biBtX2FyZ3VtZW50czsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQXJndW1lbnRzIG1fYXJndW1l
bnRzOworfTsKKworY2xhc3MgU2V0VmlkZW9MYXllcklEIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVm
IHN0ZDo6dHVwbGU8Y29uc3QgV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklE
Jj4gQXJndW1lbnRzOworCisgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0
dXJuIElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfU2V0VmlkZW9MYXllcklEOyB9CisgICAgc3Rh
dGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7CisKKyAgICBleHBsaWNpdCBTZXRWaWRlb0xh
eWVySUQoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklEJiB2aWRl
b0xheWVySUQpCisgICAgICAgIDogbV9hcmd1bWVudHModmlkZW9MYXllcklEKQorICAgIHsKKyAg
ICB9CisKKyAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0CisgICAgeworICAg
ICAgICByZXR1cm4gbV9hcmd1bWVudHM7CisgICAgfQorCitwcml2YXRlOgorICAgIEFyZ3VtZW50
cyBtX2FyZ3VtZW50czsKK307CisKKyNpZiBQTEFURk9STShNQUMpCitjbGFzcyBEaWRDcmVhdGVX
ZWJQcm9jZXNzQ29ubmVjdGlvbiB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGNv
bnN0IElQQzo6TWFjaFBvcnQmPiBBcmd1bWVudHM7CisKKyAgICBzdGF0aWMgSVBDOjpNZXNzYWdl
TmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9EaWRDcmVhdGVX
ZWJQcm9jZXNzQ29ubmVjdGlvbjsgfQorICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZh
bHNlOworCisgICAgZXhwbGljaXQgRGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oY29uc3Qg
SVBDOjpNYWNoUG9ydCYgY29ubmVjdGlvbklkZW50aWZpZXIpCisgICAgICAgIDogbV9hcmd1bWVu
dHMoY29ubmVjdGlvbklkZW50aWZpZXIpCisgICAgeworICAgIH0KKworICAgIGNvbnN0IEFyZ3Vt
ZW50cyYgYXJndW1lbnRzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2FyZ3VtZW50
czsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOworfTsKKyNl
bmRpZgorCisjaWYgUExBVEZPUk0oTUFDKQorY2xhc3MgSW50ZXJwcmV0S2V5RXZlbnQgeworcHVi
bGljOgorICAgIHR5cGVkZWYgc3RkOjp0dXBsZTx1aW50MzJfdD4gQXJndW1lbnRzOworCisgICAg
c3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6
OldlYlBhZ2VfSW50ZXJwcmV0S2V5RXZlbnQ7IH0KKyAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5
bmMgPSB0cnVlOworCisgICAgdXNpbmcgUmVwbHkgPSBzdGQ6OnR1cGxlPFZlY3RvcjxXZWJDb3Jl
OjpLZXlwcmVzc0NvbW1hbmQ+Jj47CisgICAgdXNpbmcgUmVwbHlBcmd1bWVudHMgPSBzdGQ6OnR1
cGxlPFZlY3RvcjxXZWJDb3JlOjpLZXlwcmVzc0NvbW1hbmQ+PjsKKyAgICBleHBsaWNpdCBJbnRl
cnByZXRLZXlFdmVudCh1aW50MzJfdCB0eXBlKQorICAgICAgICA6IG1fYXJndW1lbnRzKHR5cGUp
CisgICAgeworICAgIH0KKworICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QK
KyAgICB7CisgICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKKyAgICB9CisKK3ByaXZhdGU6Cisg
ICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOworfTsKKyNlbmRpZgorCisjaWYgRU5BQkxFKERFUFJF
Q0FURURfRkVBVFVSRSkKK2NsYXNzIERlcHJlY2F0ZWRPcGVyYXRpb24geworcHVibGljOgorICAg
IHR5cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBJUEM6OkR1bW15VHlwZSY+IEFyZ3VtZW50czsKKwor
ICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VO
YW1lOjpXZWJQYWdlX0RlcHJlY2F0ZWRPcGVyYXRpb247IH0KKyAgICBzdGF0aWMgY29uc3QgYm9v
bCBpc1N5bmMgPSBmYWxzZTsKKworICAgIGV4cGxpY2l0IERlcHJlY2F0ZWRPcGVyYXRpb24oY29u
c3QgSVBDOjpEdW1teVR5cGUmIGR1bW15KQorICAgICAgICA6IG1fYXJndW1lbnRzKGR1bW15KQor
ICAgIHsKKyAgICB9CisKKyAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Cisg
ICAgeworICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7CisgICAgfQorCitwcml2YXRlOgorICAg
IEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKK307CisjZW5kaWYKKworI2lmIEVOQUJMRShFWFBFUklN
RU5UQUxfRkVBVFVSRSkKK2NsYXNzIEV4cGVyaW1lbnRhbE9wZXJhdGlvbiB7CitwdWJsaWM6Cisg
ICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGNvbnN0IElQQzo6RHVtbXlUeXBlJj4gQXJndW1lbnRzOwor
CisgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2Fn
ZU5hbWU6OldlYlBhZ2VfRXhwZXJpbWVudGFsT3BlcmF0aW9uOyB9CisgICAgc3RhdGljIGNvbnN0
IGJvb2wgaXNTeW5jID0gZmFsc2U7CisKKyAgICBleHBsaWNpdCBFeHBlcmltZW50YWxPcGVyYXRp
b24oY29uc3QgSVBDOjpEdW1teVR5cGUmIGR1bW15KQorICAgICAgICA6IG1fYXJndW1lbnRzKGR1
bW15KQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNv
bnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7CisgICAgfQorCitwcml2YXRl
OgorICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKK307CisjZW5kaWYKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViUGFnZQorfSAvLyBuYW1lc3BhY2UgTWVzc2FnZXMKKworI2VuZGlmIC8vIChFTkFCTEUo
V0VCS0lUMikgJiYgKE5FU1RFRF9NQVNURVJfQ09ORElUSU9OIHx8IE1BU1RFUl9PUiAmJiBNQVNU
RVJfQU5EKSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdC1sZWdhY3lN
ZXNzYWdlc1JlcGxpZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Vi
a2l0L3Rlc3QtbGVnYWN5TWVzc2FnZXNSZXBsaWVzLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNl
L1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0LWxlZ2FjeU1lc3NhZ2VzUmVwbGllcy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisg
KiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2lmIChFTkFCTEUoV0VCS0lUMikgJiYgKE5FU1RFRF9NQVNURVJfQ09ORElUSU9OIHx8
IE1BU1RFUl9PUiAmJiBNQVNURVJfQU5EKSkKKworI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNp
bmNsdWRlICJNZXNzYWdlTmFtZXMuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCisKK25h
bWVzcGFjZSBNZXNzYWdlcyB7CituYW1lc3BhY2UgV2ViUGFnZSB7CisKK3VzaW5nIEdldFBsdWdp
blByb2Nlc3NDb25uZWN0aW9uRGVsYXllZFJlcGx5ID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBJUEM6OkNvbm5lY3Rpb246OkhhbmRsZSYgY29ubmVjdGlvbkhhbmRsZSk+OworCit1c2lu
ZyBUZXN0TXVsdGlwbGVBdHRyaWJ1dGVzRGVsYXllZFJlcGx5ID0gQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPjsKKworfSAvLyBuYW1lc3BhY2UgV2ViUGFnZQorfSAvLyBuYW1lc3BhY2UgTWVzc2Fn
ZXMKKworI2VuZGlmIC8vIChFTkFCTEUoV0VCS0lUMikgJiYgKE5FU1RFRF9NQVNURVJfQ09ORElU
SU9OIHx8IE1BU1RFUl9PUiAmJiBNQVNURVJfQU5EKSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2Ny
aXB0cy93ZWJraXQvdGVzdC1tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1NjcmlwdHMvd2Via2l0L3Rlc3QtbWVzc2FnZXMuaW4JKHJldmlzaW9uIDI2MDc2NCkKKysrIFNv
dXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdC1tZXNzYWdlcy5pbgkobm9uZXhpc3RlbnQp
CkBAIC0xLDg0ICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0Ogot
IyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAotIyBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAotIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0jIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0jIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwKLSMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSMgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwKLSMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LQotI2lmIEVOQUJMRShXRUJLSVQyKQotI2lmIE5FU1RFRF9NQVNURVJfQ09ORElUSU9OIHx8IE1B
U1RFUl9PUiAmJiBNQVNURVJfQU5ECi0KLQotIyBUaGUgcGFyc2VyIHNob3VsZCB0cmVhdCBhbGwg
b2YgdGhlc2UgYXMgY29tbWVudHMKLSNGYWtlTG9hZFVSTEEoU3RyaW5nIHVybCkKLSMgRmFrZUxv
YWRVUkxCKFN0cmluZyB1cmwpCi0gICAgI0Zha2VMb2FkVVJMQyhTdHJpbmcgdXJsKQotICAgICMg
RmFrZUxvYWRVUkxEKFN0cmluZyB1cmwpCi0KLW1lc3NhZ2VzIC0+IFdlYlBhZ2UgewotICAgIExv
YWRVUkwoU3RyaW5nIHVybCkKLSNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQotICAgIExvYWRTb21l
dGhpbmcoU3RyaW5nIHVybCkKLSNpZiBORVNURURfTUVTU0FHRV9DT05ESVRJT04gfHwgU09NRV9P
VEhFUl9NRVNTQUdFX0NPTkRJVElPTgotICAgIFRvdWNoRXZlbnQoV2ViS2l0OjpXZWJUb3VjaEV2
ZW50IGV2ZW50KQotI2VuZGlmCi0jaWYgTkVTVEVEX01FU1NBR0VfQ09ORElUSU9OICYmIFNPTUVf
T1RIRVJfTUVTU0FHRV9DT05ESVRJT04KLSAgICBBZGRFdmVudChXZWJLaXQ6OldlYlRvdWNoRXZl
bnQgZXZlbnQpCi0jZW5kaWYKLSAgICBMb2FkU29tZXRoaW5nRWxzZShTdHJpbmcgdXJsKQotI2Vu
ZGlmCi0gICAgRGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2
NF90IGxpc3RlbmVySUQsIHVpbnQzMl90IHBvbGljeUFjdGlvbikKLSAgICBDbG9zZSgpCi0KLSAg
ICBQcmVmZXJlbmNlc0RpZENoYW5nZShXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmUgc3RvcmUp
Ci0gICAgU2VuZERvdWJsZUFuZEZsb2F0KGRvdWJsZSBkLCBmbG9hdCBmKQotICAgIFNlbmRJbnRz
KFZlY3Rvcjx1aW50NjRfdD4gaW50cywgVmVjdG9yPFZlY3Rvcjx1aW50NjRfdD4+IGludFZlY3Rv
cnMpCi0KLSAgICBDcmVhdGVQbHVnaW4odWludDY0X3QgcGx1Z2luSW5zdGFuY2VJRCwgV2ViS2l0
OjpQbHVnaW46OlBhcmFtZXRlcnMgcGFyYW1ldGVycykgLT4gKGJvb2wgcmVzdWx0KQotICAgIFJ1
bkphdmFTY3JpcHRBbGVydCh1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgbWVzc2FnZSkgLT4gKCkK
LSAgICBHZXRQbHVnaW5zKGJvb2wgcmVmcmVzaCkgLT4gKFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5J
bmZvPiBwbHVnaW5zKQotICAgIEdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKFN0cmluZyBwbHVn
aW5QYXRoKSAtPiAoSVBDOjpDb25uZWN0aW9uOjpIYW5kbGUgY29ubmVjdGlvbkhhbmRsZSkgU3lu
Y2hyb25vdXMKLQotICAgIFRlc3RNdWx0aXBsZUF0dHJpYnV0ZXMoKSAtPiAoKSBXYW50c0Nvbm5l
Y3Rpb24gU3luY2hyb25vdXMKLQotICAgIFRlc3RQYXJhbWV0ZXJBdHRyaWJ1dGVzKFtBdHRyaWJ1
dGVPbmUgQXR0cmlidXRlVHdvXSB1aW50NjRfdCBmb28sIGRvdWJsZSBiYXIsIFtBdHRyaWJ1dGVU
aHJlZV0gZG91YmxlIGJheikKLQotICAgIFRlbXBsYXRlVGVzdChIYXNoTWFwPFN0cmluZywgc3Rk
OjpwYWlyPFN0cmluZywgdWludDY0X3Q+PiBhKQotCi0gICAgU2V0VmlkZW9MYXllcklEKFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRCB2aWRlb0xheWVySUQpCi0KLSNpZiBQ
TEFURk9STShNQUMpCi0gICAgRGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oSVBDOjpNYWNo
UG9ydCBjb25uZWN0aW9uSWRlbnRpZmllcikKLSNlbmRpZgotCi0jaWYgUExBVEZPUk0oTUFDKQot
ICAgICMgS2V5Ym9hcmQgc3VwcG9ydAotICAgIEludGVycHJldEtleUV2ZW50KHVpbnQzMl90IHR5
cGUpIC0+IChWZWN0b3I8V2ViQ29yZTo6S2V5cHJlc3NDb21tYW5kPiBjb21tYW5kTmFtZSkKLSNl
bmRpZgotCi0jaWYgRU5BQkxFKERFUFJFQ0FURURfRkVBVFVSRSkKLSAgICBEZXByZWNhdGVkT3Bl
cmF0aW9uKElQQzo6RHVtbXlUeXBlIGR1bW15KQotI2VuZGlmCi0KLSNpZiBFTkFCTEUoRVhQRVJJ
TUVOVEFMX0ZFQVRVUkUpCi0gICAgRXhwZXJpbWVudGFsT3BlcmF0aW9uKElQQzo6RHVtbXlUeXBl
IGR1bW15KQotI2VuZGlmCi19Ci0KLSNlbmRpZgotI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1NjcmlwdHMvd2Via2l0L3Rlc3Qtc3VwZXJjbGFzcy1tZXNzYWdlcy5pbgo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3Qtc3VwZXJjbGFzcy1tZXNzYWdlcy5p
bgkocmV2aXNpb24gMjYwNzY0KQorKysgU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0
LXN1cGVyY2xhc3MtbWVzc2FnZXMuaW4JKG5vbmV4aXN0ZW50KQpAQCAtMSwzMiArMCwwIEBACi0j
IENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0j
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0jIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSMgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQotIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgotIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SCi0jIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0jIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0j
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLW1lc3NhZ2VzIC0+IFdlYlBh
Z2UgOiBXZWJQYWdlQmFzZSB7Ci0gICAgTG9hZFVSTChTdHJpbmcgdXJsKQotI2lmIEVOQUJMRShU
RVNUX0ZFQVRVUkUpCi0gICAgVGVzdEFzeW5jTWVzc2FnZShlbnVtOmJvb2wgV2ViS2l0OjpUZXN0
VHdvU3RhdGVFbnVtIHR3b1N0YXRlRW51bSkgLT4gKHVpbnQ2NF90IHJlc3VsdCkgQXN5bmMKLSAg
ICBUZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJndW1lbnRzKCkgLT4gKCkgQXN5bmMKLSAgICBUZXN0
QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1lbnRzKCkgLT4gKGJvb2wgZmxhZywgdWludDY0
X3QgdmFsdWUpIEFzeW5jCi0jZW5kaWYKLSAgICBUZXN0U3luY01lc3NhZ2UodWludDMyX3QgcGFy
YW0pIC0+ICh1aW50OF90IHJlcGx5KSBTeW5jaHJvbm91cwotICAgIFRlc3RTeW5jaHJvbm91c01l
c3NhZ2UoYm9vbCB2YWx1ZSkgLT4gKE9wdGlvbmFsPFdlYktpdDo6VGVzdENsYXNzTmFtZT4gb3B0
aW9uYWxSZXBseSkgU3luY2hyb25vdXMKLX0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93
ZWJraXQvdGVzdC1zdXBlcmNsYXNzLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdC1zdXBlcmNsYXNzLm1lc3NhZ2VzLmluCShyZXZpc2lv
biAyNjA3NjQpCShmcm9tIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdC1zdXBlcmNs
YXNzLW1lc3NhZ2VzLmluOjI2MDc2NCkKKysrIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQv
dGVzdC1zdXBlcmNsYXNzLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzIg
QEAKKyMgQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworbWVzc2FnZXMgLT4g
V2ViUGFnZSA6IFdlYlBhZ2VCYXNlIHsKKyAgICBMb2FkVVJMKFN0cmluZyB1cmwpCisjaWYgRU5B
QkxFKFRFU1RfRkVBVFVSRSkKKyAgICBUZXN0QXN5bmNNZXNzYWdlKGVudW06Ym9vbCBXZWJLaXQ6
OlRlc3RUd29TdGF0ZUVudW0gdHdvU3RhdGVFbnVtKSAtPiAodWludDY0X3QgcmVzdWx0KSBBc3lu
YworICAgIFRlc3RBc3luY01lc3NhZ2VXaXRoTm9Bcmd1bWVudHMoKSAtPiAoKSBBc3luYworICAg
IFRlc3RBc3luY01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHMoKSAtPiAoYm9vbCBmbGFnLCB1
aW50NjRfdCB2YWx1ZSkgQXN5bmMKKyNlbmRpZgorICAgIFRlc3RTeW5jTWVzc2FnZSh1aW50MzJf
dCBwYXJhbSkgLT4gKHVpbnQ4X3QgcmVwbHkpIFN5bmNocm9ub3VzCisgICAgVGVzdFN5bmNocm9u
b3VzTWVzc2FnZShib29sIHZhbHVlKSAtPiAoT3B0aW9uYWw8V2ViS2l0OjpUZXN0Q2xhc3NOYW1l
PiBvcHRpb25hbFJlcGx5KSBTeW5jaHJvbm91cworfQpJbmRleDogU291cmNlL1dlYktpdC9TY3Jp
cHRzL3dlYmtpdC90ZXN0LXN1cGVyY2xhc3NNZXNzYWdlUmVjZWl2ZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdC1zdXBlcmNsYXNzTWVzc2FnZVJl
Y2VpdmVyLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0
L3Rlc3Qtc3VwZXJjbGFzc01lc3NhZ2VSZWNlaXZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwxODkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFO
RAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNp
bmNsdWRlICJXZWJQYWdlLmgiCisKKyNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgorI2luY2x1
ZGUgIkRlY29kZXIuaCIKKyNpbmNsdWRlICJIYW5kbGVNZXNzYWdlLmgiCisjaW5jbHVkZSAiVGVz
dENsYXNzTmFtZS5oIgorI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCisjaW5jbHVkZSAiVGVzdFR3
b1N0YXRlRW51bS5oIgorI2VuZGlmCisjaW5jbHVkZSAiV2ViUGFnZU1lc3NhZ2VzLmgiCisjaW5j
bHVkZSA8d3RmL09wdGlvbmFsLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisK
K25hbWVzcGFjZSBNZXNzYWdlcyB7CisKK25hbWVzcGFjZSBXZWJQYWdlIHsKKworI2lmIEVOQUJM
RShURVNUX0ZFQVRVUkUpCisKK3ZvaWQgVGVzdEFzeW5jTWVzc2FnZTo6Y2FsbFJlcGx5KElQQzo6
RGVjb2RlciYgZGVjb2RlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCYmKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBPcHRpb25hbDx1aW50NjRfdD4gcmVzdWx0OworICAg
IGRlY29kZXIgPj4gcmVzdWx0OworICAgIGlmICghcmVzdWx0KSB7CisgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICBjYW5jZWxSZXBseShXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgY29tcGxldGlvbkhhbmRsZXIoV1RG
TW92ZSgqcmVzdWx0KSk7Cit9CisKK3ZvaWQgVGVzdEFzeW5jTWVzc2FnZTo6Y2FuY2VsUmVwbHko
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3sKKyAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkFzeW5jUmVwbHlFcnJvcjx1aW50NjRfdD46
OmNyZWF0ZSgpKTsKK30KKwordm9pZCBUZXN0QXN5bmNNZXNzYWdlOjpzZW5kKHN0ZDo6dW5pcXVl
X3B0cjxJUEM6OkVuY29kZXI+JiYgZW5jb2RlciwgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9u
LCB1aW50NjRfdCByZXN1bHQpCit7CisgICAgKmVuY29kZXIgPDwgcmVzdWx0OworICAgIGNvbm5l
Y3Rpb24uc2VuZFN5bmNSZXBseShXVEZNb3ZlKGVuY29kZXIpKTsKK30KKworI2VuZGlmCisKKyNp
ZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQorCit2b2lkIFRlc3RBc3luY01lc3NhZ2VXaXRoTm9Bcmd1
bWVudHM6OmNhbGxSZXBseShJUEM6OkRlY29kZXImIGRlY29kZXIsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBjb21wbGV0aW9uSGFuZGxlcigp
OworfQorCit2b2lkIFRlc3RBc3luY01lc3NhZ2VXaXRoTm9Bcmd1bWVudHM6OmNhbmNlbFJlcGx5
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBj
b21wbGV0aW9uSGFuZGxlcigpOworfQorCit2b2lkIFRlc3RBc3luY01lc3NhZ2VXaXRoTm9Bcmd1
bWVudHM6OnNlbmQoc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mJiBlbmNvZGVyLCBJUEM6
OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCit7CisgICAgY29ubmVjdGlvbi5zZW5kU3luY1JlcGx5
KFdURk1vdmUoZW5jb2RlcikpOworfQorCisjZW5kaWYKKworI2lmIEVOQUJMRShURVNUX0ZFQVRV
UkUpCisKK3ZvaWQgVGVzdEFzeW5jTWVzc2FnZVdpdGhNdWx0aXBsZUFyZ3VtZW50czo6Y2FsbFJl
cGx5KElQQzo6RGVjb2RlciYgZGVjb2RlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sJiYs
IHVpbnQ2NF90JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIE9wdGlvbmFsPGJvb2w+
IGZsYWc7CisgICAgZGVjb2RlciA+PiBmbGFnOworICAgIGlmICghZmxhZykgeworICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgY2FuY2VsUmVwbHkoV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIE9wdGlvbmFsPHVpbnQ2
NF90PiB2YWx1ZTsKKyAgICBkZWNvZGVyID4+IHZhbHVlOworICAgIGlmICghdmFsdWUpIHsKKyAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGNhbmNlbFJlcGx5KFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBjb21wbGV0
aW9uSGFuZGxlcihXVEZNb3ZlKCpmbGFnKSwgV1RGTW92ZSgqdmFsdWUpKTsKK30KKwordm9pZCBU
ZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1lbnRzOjpjYW5jZWxSZXBseShDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wmJiwgdWludDY0X3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit7CisgICAgY29tcGxldGlvbkhhbmRsZXIoSVBDOjpBc3luY1JlcGx5RXJyb3I8Ym9vbD46OmNy
ZWF0ZSgpLCBJUEM6OkFzeW5jUmVwbHlFcnJvcjx1aW50NjRfdD46OmNyZWF0ZSgpKTsKK30KKwor
dm9pZCBUZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1lbnRzOjpzZW5kKHN0ZDo6dW5p
cXVlX3B0cjxJUEM6OkVuY29kZXI+JiYgZW5jb2RlciwgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0
aW9uLCBib29sIGZsYWcsIHVpbnQ2NF90IHZhbHVlKQoreworICAgICplbmNvZGVyIDw8IGZsYWc7
CisgICAgKmVuY29kZXIgPDwgdmFsdWU7CisgICAgY29ubmVjdGlvbi5zZW5kU3luY1JlcGx5KFdU
Rk1vdmUoZW5jb2RlcikpOworfQorCisjZW5kaWYKKwordm9pZCBUZXN0U3luY01lc3NhZ2U6OnNl
bmQoc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mJiBlbmNvZGVyLCBJUEM6OkNvbm5lY3Rp
b24mIGNvbm5lY3Rpb24sIHVpbnQ4X3QgcmVwbHkpCit7CisgICAgKmVuY29kZXIgPDwgcmVwbHk7
CisgICAgY29ubmVjdGlvbi5zZW5kU3luY1JlcGx5KFdURk1vdmUoZW5jb2RlcikpOworfQorCit2
b2lkIFRlc3RTeW5jaHJvbm91c01lc3NhZ2U6OnNlbmQoc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5j
b2Rlcj4mJiBlbmNvZGVyLCBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IE9wdGlv
bmFsPFdlYktpdDo6VGVzdENsYXNzTmFtZT4mIG9wdGlvbmFsUmVwbHkpCit7CisgICAgKmVuY29k
ZXIgPDwgb3B0aW9uYWxSZXBseTsKKyAgICBjb25uZWN0aW9uLnNlbmRTeW5jUmVwbHkoV1RGTW92
ZShlbmNvZGVyKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYlBhZ2UKKworfSAvLyBuYW1lc3Bh
Y2UgTWVzc2FnZXMKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgV2ViUGFnZTo6ZGlkUmVj
ZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRl
Y29kZXIpCit7CisgICAgYXV0byBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyk7CisgICAg
aWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFVSTDo6
bmFtZSgpKSB7CisgICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6
TG9hZFVSTD4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OmxvYWRVUkwpOworICAgICAgICByZXR1
cm47CisgICAgfQorI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCisgICAgaWYgKGRlY29kZXIubWVz
c2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6VGVzdEFzeW5jTWVzc2FnZTo6bmFtZSgp
KSB7CisgICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZUFzeW5jPE1lc3NhZ2VzOjpXZWJQYWdlOjpU
ZXN0QXN5bmNNZXNzYWdlPihjb25uZWN0aW9uLCBkZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6dGVz
dEFzeW5jTWVzc2FnZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKyNpZiBFTkFC
TEUoVEVTVF9GRUFUVVJFKQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2Fn
ZXM6OldlYlBhZ2U6OlRlc3RBc3luY01lc3NhZ2VXaXRoTm9Bcmd1bWVudHM6Om5hbWUoKSkgewor
ICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2VBc3luYzxNZXNzYWdlczo6V2ViUGFnZTo6VGVzdEFz
eW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50cz4oY29ubmVjdGlvbiwgZGVjb2RlciwgdGhpcywgJldl
YlBhZ2U6OnRlc3RBc3luY01lc3NhZ2VXaXRoTm9Bcmd1bWVudHMpOworICAgICAgICByZXR1cm47
CisgICAgfQorI2VuZGlmCisjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKKyAgICBpZiAoZGVjb2Rl
ci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0QXN5bmNNZXNzYWdlV2l0
aE11bHRpcGxlQXJndW1lbnRzOjpuYW1lKCkpIHsKKyAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdl
QXN5bmM8TWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RBc3luY01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1
bWVudHM+KGNvbm5lY3Rpb24sIGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjp0ZXN0QXN5bmNNZXNz
YWdlV2l0aE11bHRpcGxlQXJndW1lbnRzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRp
ZgorICAgIFdlYlBhZ2VCYXNlOjpkaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVy
KTsKK30KKwordm9pZCBXZWJQYWdlOjpkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0cjxJ
UEM6OkVuY29kZXI+JiByZXBseUVuY29kZXIpCit7CisgICAgYXV0byBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyk7CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdl
czo6V2ViUGFnZTo6VGVzdFN5bmNNZXNzYWdlOjpuYW1lKCkpIHsKKyAgICAgICAgSVBDOjpoYW5k
bGVNZXNzYWdlU3luY2hyb25vdXM8TWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RTeW5jTWVzc2FnZT4o
Y29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6dGVzdFN5
bmNNZXNzYWdlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoZGVjb2Rlci5tZXNz
YWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0U3luY2hyb25vdXNNZXNzYWdlOjpu
YW1lKCkpIHsKKyAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlU3luY2hyb25vdXM8TWVzc2FnZXM6
OldlYlBhZ2U6OlRlc3RTeW5jaHJvbm91c01lc3NhZ2U+KGNvbm5lY3Rpb24sIGRlY29kZXIsIHJl
cGx5RW5jb2RlciwgdGhpcywgJldlYlBhZ2U6OnRlc3RTeW5jaHJvbm91c01lc3NhZ2UpOworICAg
ICAgICByZXR1cm47CisgICAgfQorICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsKKyAgICBV
TlVTRURfUEFSQU0oZGVjb2Rlcik7CisgICAgVU5VU0VEX1BBUkFNKHJlcGx5RW5jb2Rlcik7Cisg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3Qtc3VwZXJjbGFzc01lc3NhZ2Vz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0LXN1cGVy
Y2xhc3NNZXNzYWdlcy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93
ZWJraXQvdGVzdC1zdXBlcmNsYXNzTWVzc2FnZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDIwMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisg
KiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IKKyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQXJn
dW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiTWVzc2Fn
ZU5hbWVzLmgiCisjaW5jbHVkZSAiVGVzdENsYXNzTmFtZS5oIgorI2luY2x1ZGUgIldlYlBhZ2VN
ZXNzYWdlc1JlcGxpZXMuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0
Zi9PcHRpb25hbC5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKK2VudW0g
Y2xhc3MgVGVzdFR3b1N0YXRlRW51bSA6IGJvb2w7Cit9CisKK25hbWVzcGFjZSBNZXNzYWdlcyB7
CituYW1lc3BhY2UgV2ViUGFnZSB7CisKK3N0YXRpYyBpbmxpbmUgSVBDOjpSZWNlaXZlck5hbWUg
bWVzc2FnZVJlY2VpdmVyTmFtZSgpCit7CisgICAgcmV0dXJuIElQQzo6UmVjZWl2ZXJOYW1lOjpX
ZWJQYWdlOworfQorCitjbGFzcyBMb2FkVVJMIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIHN0ZDo6
dHVwbGU8Y29uc3QgU3RyaW5nJj4gQXJndW1lbnRzOworCisgICAgc3RhdGljIElQQzo6TWVzc2Fn
ZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfTG9hZFVSTDsg
fQorICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOworCisgICAgZXhwbGljaXQg
TG9hZFVSTChjb25zdCBTdHJpbmcmIHVybCkKKyAgICAgICAgOiBtX2FyZ3VtZW50cyh1cmwpCisg
ICAgeworICAgIH0KKworICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKKyAg
ICB7CisgICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKKyAgICB9CisKK3ByaXZhdGU6CisgICAg
QXJndW1lbnRzIG1fYXJndW1lbnRzOworfTsKKworI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCitj
bGFzcyBUZXN0QXN5bmNNZXNzYWdlIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8
V2ViS2l0OjpUZXN0VHdvU3RhdGVFbnVtPiBBcmd1bWVudHM7CisKKyAgICBzdGF0aWMgSVBDOjpN
ZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9UZXN0
QXN5bmNNZXNzYWdlOyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7CisK
KyAgICBzdGF0aWMgdm9pZCBjYWxsUmVwbHkoSVBDOjpEZWNvZGVyJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCh1aW50NjRfdCYmKT4mJik7CisgICAgc3RhdGljIHZvaWQgY2FuY2VsUmVwbHkoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCYmKT4mJik7CisgICAgc3RhdGljIElQQzo6TWVz
c2FnZU5hbWUgYXN5bmNNZXNzYWdlUmVwbHlOYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFt
ZTo6V2ViUGFnZV9UZXN0QXN5bmNNZXNzYWdlUmVwbHk7IH0KKyAgICB1c2luZyBBc3luY1JlcGx5
ID0gVGVzdEFzeW5jTWVzc2FnZUFzeW5jUmVwbHk7CisgICAgc3RhdGljIHZvaWQgc2VuZChzdGQ6
OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYmLCBJUEM6OkNvbm5lY3Rpb24mLCB1aW50NjRfdCBy
ZXN1bHQpOworICAgIHVzaW5nIFJlcGx5ID0gc3RkOjp0dXBsZTx1aW50NjRfdCY+OworICAgIHVz
aW5nIFJlcGx5QXJndW1lbnRzID0gc3RkOjp0dXBsZTx1aW50NjRfdD47CisgICAgZXhwbGljaXQg
VGVzdEFzeW5jTWVzc2FnZShXZWJLaXQ6OlRlc3RUd29TdGF0ZUVudW0gdHdvU3RhdGVFbnVtKQor
ICAgICAgICA6IG1fYXJndW1lbnRzKHR3b1N0YXRlRW51bSkKKyAgICB7CisgICAgfQorCisgICAg
Y29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJu
IG1fYXJndW1lbnRzOworICAgIH0KKworcHJpdmF0ZToKKyAgICBBcmd1bWVudHMgbV9hcmd1bWVu
dHM7Cit9OworI2VuZGlmCisKKyNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQorY2xhc3MgVGVzdEFz
eW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50cyB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBzdGQ6OnR1
cGxlPD4gQXJndW1lbnRzOworCisgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsg
cmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVzdEFzeW5jTWVzc2FnZVdpdGhOb0Fy
Z3VtZW50czsgfQorICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOworCisgICAg
c3RhdGljIHZvaWQgY2FsbFJlcGx5KElQQzo6RGVjb2RlciYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7CisgICAgc3RhdGljIHZvaWQgY2FuY2VsUmVwbHkoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKTsKKyAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBhc3luY01lc3NhZ2VSZXBs
eU5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX1Rlc3RBc3luY01lc3Nh
Z2VXaXRoTm9Bcmd1bWVudHNSZXBseTsgfQorICAgIHVzaW5nIEFzeW5jUmVwbHkgPSBUZXN0QXN5
bmNNZXNzYWdlV2l0aE5vQXJndW1lbnRzQXN5bmNSZXBseTsKKyAgICBzdGF0aWMgdm9pZCBzZW5k
KHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiYsIElQQzo6Q29ubmVjdGlvbiYpOworICAg
IHVzaW5nIFJlcGx5ID0gc3RkOjp0dXBsZTw+OworICAgIHVzaW5nIFJlcGx5QXJndW1lbnRzID0g
c3RkOjp0dXBsZTw+OworICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKKyAg
ICB7CisgICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKKyAgICB9CisKK3ByaXZhdGU6CisgICAg
QXJndW1lbnRzIG1fYXJndW1lbnRzOworfTsKKyNlbmRpZgorCisjaWYgRU5BQkxFKFRFU1RfRkVB
VFVSRSkKK2NsYXNzIFRlc3RBc3luY01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHMgeworcHVi
bGljOgorICAgIHR5cGVkZWYgc3RkOjp0dXBsZTw+IEFyZ3VtZW50czsKKworICAgIHN0YXRpYyBJ
UEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdl
X1Rlc3RBc3luY01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHM7IH0KKyAgICBzdGF0aWMgY29u
c3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKKworICAgIHN0YXRpYyB2b2lkIGNhbGxSZXBseShJUEM6
OkRlY29kZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wmJiwgdWludDY0X3QmJik+JiYp
OworICAgIHN0YXRpYyB2b2lkIGNhbmNlbFJlcGx5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCYmLCB1aW50NjRfdCYmKT4mJik7CisgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgYXN5bmNN
ZXNzYWdlUmVwbHlOYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9UZXN0
QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1lbnRzUmVwbHk7IH0KKyAgICB1c2luZyBBc3lu
Y1JlcGx5ID0gVGVzdEFzeW5jTWVzc2FnZVdpdGhNdWx0aXBsZUFyZ3VtZW50c0FzeW5jUmVwbHk7
CisgICAgc3RhdGljIHZvaWQgc2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYmLCBJ
UEM6OkNvbm5lY3Rpb24mLCBib29sIGZsYWcsIHVpbnQ2NF90IHZhbHVlKTsKKyAgICB1c2luZyBS
ZXBseSA9IHN0ZDo6dHVwbGU8Ym9vbCYsIHVpbnQ2NF90Jj47CisgICAgdXNpbmcgUmVwbHlBcmd1
bWVudHMgPSBzdGQ6OnR1cGxlPGJvb2wsIHVpbnQ2NF90PjsKKyAgICBjb25zdCBBcmd1bWVudHMm
IGFyZ3VtZW50cygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7Cisg
ICAgfQorCitwcml2YXRlOgorICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKK307CisjZW5kaWYK
KworY2xhc3MgVGVzdFN5bmNNZXNzYWdlIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIHN0ZDo6dHVw
bGU8dWludDMyX3Q+IEFyZ3VtZW50czsKKworICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5h
bWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX1Rlc3RTeW5jTWVzc2FnZTsg
fQorICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IHRydWU7CisKKyAgICB1c2luZyBEZWxh
eWVkUmVwbHkgPSBUZXN0U3luY01lc3NhZ2VEZWxheWVkUmVwbHk7CisgICAgc3RhdGljIHZvaWQg
c2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYmLCBJUEM6OkNvbm5lY3Rpb24mLCB1
aW50OF90IHJlcGx5KTsKKyAgICB1c2luZyBSZXBseSA9IHN0ZDo6dHVwbGU8dWludDhfdCY+Owor
ICAgIHVzaW5nIFJlcGx5QXJndW1lbnRzID0gc3RkOjp0dXBsZTx1aW50OF90PjsKKyAgICBleHBs
aWNpdCBUZXN0U3luY01lc3NhZ2UodWludDMyX3QgcGFyYW0pCisgICAgICAgIDogbV9hcmd1bWVu
dHMocGFyYW0pCisgICAgeworICAgIH0KKworICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRz
KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKKyAgICB9CisKK3By
aXZhdGU6CisgICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOworfTsKKworY2xhc3MgVGVzdFN5bmNo
cm9ub3VzTWVzc2FnZSB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGJvb2w+IEFy
Z3VtZW50czsKKworICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJ
UEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX1Rlc3RTeW5jaHJvbm91c01lc3NhZ2U7IH0KKyAgICBz
dGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSB0cnVlOworCisgICAgdXNpbmcgRGVsYXllZFJlcGx5
ID0gVGVzdFN5bmNocm9ub3VzTWVzc2FnZURlbGF5ZWRSZXBseTsKKyAgICBzdGF0aWMgdm9pZCBz
ZW5kKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiYsIElQQzo6Q29ubmVjdGlvbiYsIGNv
bnN0IE9wdGlvbmFsPFdlYktpdDo6VGVzdENsYXNzTmFtZT4mIG9wdGlvbmFsUmVwbHkpOworICAg
IHVzaW5nIFJlcGx5ID0gc3RkOjp0dXBsZTxPcHRpb25hbDxXZWJLaXQ6OlRlc3RDbGFzc05hbWU+
Jj47CisgICAgdXNpbmcgUmVwbHlBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPE9wdGlvbmFsPFdlYktp
dDo6VGVzdENsYXNzTmFtZT4+OworICAgIGV4cGxpY2l0IFRlc3RTeW5jaHJvbm91c01lc3NhZ2Uo
Ym9vbCB2YWx1ZSkKKyAgICAgICAgOiBtX2FyZ3VtZW50cyh2YWx1ZSkKKyAgICB7CisgICAgfQor
CisgICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAorICAgIHsKKyAgICAgICAg
cmV0dXJuIG1fYXJndW1lbnRzOworICAgIH0KKworcHJpdmF0ZToKKyAgICBBcmd1bWVudHMgbV9h
cmd1bWVudHM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJQYWdlCit9IC8vIG5hbWVzcGFjZSBN
ZXNzYWdlcwpJbmRleDogU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0LXN1cGVyY2xh
c3NNZXNzYWdlc1JlcGxpZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMv
d2Via2l0L3Rlc3Qtc3VwZXJjbGFzc01lc3NhZ2VzUmVwbGllcy5oCShub25leGlzdGVudCkKKysr
IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdC1zdXBlcmNsYXNzTWVzc2FnZXNSZXBs
aWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAq
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTWVzc2FnZU5hbWVzLmgiCisjaW5jbHVkZSAiVGVz
dENsYXNzTmFtZS5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL09w
dGlvbmFsLmg+CisKKworbmFtZXNwYWNlIE1lc3NhZ2VzIHsKK25hbWVzcGFjZSBXZWJQYWdlIHsK
KworI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCit1c2luZyBUZXN0QXN5bmNNZXNzYWdlQXN5bmNS
ZXBseSA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0X3QgcmVzdWx0KT47CisjZW5kaWYK
KworI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCit1c2luZyBUZXN0QXN5bmNNZXNzYWdlV2l0aE5v
QXJndW1lbnRzQXN5bmNSZXBseSA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT47CisjZW5kaWYK
KworI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCit1c2luZyBUZXN0QXN5bmNNZXNzYWdlV2l0aE11
bHRpcGxlQXJndW1lbnRzQXN5bmNSZXBseSA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBm
bGFnLCB1aW50NjRfdCB2YWx1ZSk+OworI2VuZGlmCisKK3VzaW5nIFRlc3RTeW5jTWVzc2FnZURl
bGF5ZWRSZXBseSA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDhfdCByZXBseSk+OworCit1
c2luZyBUZXN0U3luY2hyb25vdXNNZXNzYWdlRGVsYXllZFJlcGx5ID0gQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChjb25zdCBPcHRpb25hbDxXZWJLaXQ6OlRlc3RDbGFzc05hbWU+JiBvcHRpb25hbFJl
cGx5KT47CisKK30gLy8gbmFtZXNwYWNlIFdlYlBhZ2UKK30gLy8gbmFtZXNwYWNlIE1lc3NhZ2Vz
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3QubWVzc2FnZXMuaW4KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQpJbmRleDogU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0TWVzc2FnZVJl
Y2VpdmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rl
c3RNZXNzYWdlUmVjZWl2ZXIuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvU2Ny
aXB0cy93ZWJraXQvdGVzdE1lc3NhZ2VSZWNlaXZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5E
CisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IKKyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lu
Y2x1ZGUgIk5vbmUuaCIKKworI2luY2x1ZGUgIkRlY29kZXIuaCIKKyNpbmNsdWRlICJIYW5kbGVN
ZXNzYWdlLmgiCisjaW5jbHVkZSAiTm9uZU1lc3NhZ2VzLmgiCisKK25hbWVzcGFjZSBXZWJLaXQg
eworCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCkluZGV4OiBTb3VyY2UvV2ViS2l0L1Njcmlw
dHMvd2Via2l0L3Rlc3RNZXNzYWdlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2Ny
aXB0cy93ZWJraXQvdGVzdE1lc3NhZ2VzLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktp
dC9TY3JpcHRzL3dlYmtpdC90ZXN0TWVzc2FnZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAq
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUgorICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSCisgKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorICogT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJBcmd1
bWVudENvZGVycy5oIgorI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJNZXNzYWdl
TmFtZXMuaCIKKyNpbmNsdWRlICJOb25lTWVzc2FnZXNSZXBsaWVzLmgiCisjaW5jbHVkZSA8d3Rm
L0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKworCitu
YW1lc3BhY2UgTWVzc2FnZXMgeworbmFtZXNwYWNlIE5vbmUgeworCitzdGF0aWMgaW5saW5lIElQ
Qzo6UmVjZWl2ZXJOYW1lIG1lc3NhZ2VSZWNlaXZlck5hbWUoKQoreworICAgIHJldHVybiBJUEM6
OlJlY2VpdmVyTmFtZTo6Tm9uZTsKK30KKworCit9IC8vIG5hbWVzcGFjZSBOb25lCit9IC8vIG5h
bWVzcGFjZSBNZXNzYWdlcwpJbmRleDogU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0
TWVzc2FnZXNSZXBsaWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TY3JpcHRzL3dl
YmtpdC90ZXN0TWVzc2FnZXNSZXBsaWVzLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktp
dC9TY3JpcHRzL3dlYmtpdC90ZXN0TWVzc2FnZXNSZXBsaWVzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycg
QU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSAiTWVzc2FnZU5hbWVzLmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKworCituYW1lc3Bh
Y2UgTWVzc2FnZXMgeworbmFtZXNwYWNlIE5vbmUgeworCisKK30gLy8gbmFtZXNwYWNlIE5vbmUK
K30gLy8gbmFtZXNwYWNlIE1lc3NhZ2VzCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXhp
bGlhcnlQcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXhp
bGlhcnlQcm9jZXNzLmNwcAkocmV2aXNpb24gMjYwNzY0KQorKysgU291cmNlL1dlYktpdC9TaGFy
ZWQvQXV4aWxpYXJ5UHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNywyMiArMTA3LDIy
IEBAIHZvaWQgQXV4aWxpYXJ5UHJvY2Vzczo6aW5pdGlhbGl6ZUNvbm5lY3QKIHsKIH0KIAotdm9p
ZCBBdXhpbGlhcnlQcm9jZXNzOjphZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVu
Y2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImIG1lc3NhZ2VSZWNl
aXZlcikKK3ZvaWQgQXV4aWxpYXJ5UHJvY2Vzczo6YWRkTWVzc2FnZVJlY2VpdmVyKElQQzo6UmVj
ZWl2ZXJOYW1lIG1lc3NhZ2VSZWNlaXZlck5hbWUsIElQQzo6TWVzc2FnZVJlY2VpdmVyJiBtZXNz
YWdlUmVjZWl2ZXIpCiB7CiAgICAgbV9tZXNzYWdlUmVjZWl2ZXJNYXAuYWRkTWVzc2FnZVJlY2Vp
dmVyKG1lc3NhZ2VSZWNlaXZlck5hbWUsIG1lc3NhZ2VSZWNlaXZlcik7CiB9CiAKLXZvaWQgQXV4
aWxpYXJ5UHJvY2Vzczo6YWRkTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1l
c3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIElQQzo6TWVzc2FnZVJl
Y2VpdmVyJiBtZXNzYWdlUmVjZWl2ZXIpCit2b2lkIEF1eGlsaWFyeVByb2Nlc3M6OmFkZE1lc3Nh
Z2VSZWNlaXZlcihJUEM6OlJlY2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCB1aW50NjRf
dCBkZXN0aW5hdGlvbklELCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYgbWVzc2FnZVJlY2VpdmVyKQog
ewogICAgIG1fbWVzc2FnZVJlY2VpdmVyTWFwLmFkZE1lc3NhZ2VSZWNlaXZlcihtZXNzYWdlUmVj
ZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklELCBtZXNzYWdlUmVjZWl2ZXIpOwogfQogCi12b2lkIEF1
eGlsaWFyeVByb2Nlc3M6OnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5j
ZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKQordm9pZCBBdXhp
bGlhcnlQcm9jZXNzOjpyZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpSZWNlaXZlck5hbWUgbWVz
c2FnZVJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCkKIHsKICAgICBtX21lc3Nh
Z2VSZWNlaXZlck1hcC5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSwg
ZGVzdGluYXRpb25JRCk7CiB9CiAKLXZvaWQgQXV4aWxpYXJ5UHJvY2Vzczo6cmVtb3ZlTWVzc2Fn
ZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUpCit2b2lk
IEF1eGlsaWFyeVByb2Nlc3M6OnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlJlY2VpdmVyTmFt
ZSBtZXNzYWdlUmVjZWl2ZXJOYW1lKQogewogICAgIG1fbWVzc2FnZVJlY2VpdmVyTWFwLnJlbW92
ZU1lc3NhZ2VSZWNlaXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1lKTsKIH0KQEAgLTIzNiw5ICsyMzYs
OSBAQCB2b2lkIEF1eGlsaWFyeVByb2Nlc3M6OmluaXRpYWxpemVTYW5kYm94CiB7CiB9CiAKLXZv
aWQgQXV4aWxpYXJ5UHJvY2Vzczo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIElQQzo6U3Ry
aW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lKQordm9pZCBBdXhpbGlhcnlQcm9jZXNzOjpkaWRSZWNl
aXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlTmFtZSBtZXNz
YWdlTmFtZSkKIHsKLSAgICBXVEZMb2dBbHdheXMoIlJlY2VpdmVkIGludmFsaWQgbWVzc2FnZTog
JyVzOjolcyciLCBtZXNzYWdlUmVjZWl2ZXJOYW1lLnRvU3RyaW5nKCkuZGF0YSgpLCBtZXNzYWdl
TmFtZS50b1N0cmluZygpLmRhdGEoKSk7CisgICAgV1RGTG9nQWx3YXlzKCJSZWNlaXZlZCBpbnZh
bGlkIG1lc3NhZ2U6ICclcyciLCBkZXNjcmlwdGlvbihtZXNzYWdlTmFtZSkpOwogICAgIENSQVNI
KCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0F1eGlsaWFyeVByb2Nlc3MuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXhpbGlhcnlQcm9jZXNzLmgJKHJl
dmlzaW9uIDI2MDc2NCkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0F1eGlsaWFyeVByb2Nlc3Mu
aAkod29ya2luZyBjb3B5KQpAQCAtNjAsMjAgKzYwLDIwIEBAIHB1YmxpYzoKICAgICB2b2lkIGRp
c2FibGVUZXJtaW5hdGlvbigpOwogICAgIHZvaWQgZW5hYmxlVGVybWluYXRpb24oKTsKIAotICAg
IHZvaWQgYWRkTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNl
aXZlck5hbWUsIElQQzo6TWVzc2FnZVJlY2VpdmVyJik7Ci0gICAgdm9pZCBhZGRNZXNzYWdlUmVj
ZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgdWludDY0X3Qg
ZGVzdGluYXRpb25JRCwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImKTsKLSAgICB2b2lkIHJlbW92ZU1l
c3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCB1
aW50NjRfdCBkZXN0aW5hdGlvbklEKTsKLSAgICB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihJ
UEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lKTsKKyAgICB2b2lkIGFkZE1l
c3NhZ2VSZWNlaXZlcihJUEM6OlJlY2VpdmVyTmFtZSwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImKTsK
KyAgICB2b2lkIGFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlJlY2VpdmVyTmFtZSwgdWludDY0X3Qg
ZGVzdGluYXRpb25JRCwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImKTsKKyAgICB2b2lkIHJlbW92ZU1l
c3NhZ2VSZWNlaXZlcihJUEM6OlJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCk7
CisgICAgdm9pZCByZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpSZWNlaXZlck5hbWUpOwogICAg
IHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6TWVzc2FnZVJlY2VpdmVyJik7CiAgICAg
CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAgdm9pZCBhZGRNZXNzYWdlUmVjZWl2ZXIo
SVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgT2JqZWN0SWRlbnRpZmll
cjxUPiBkZXN0aW5hdGlvbklELCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYgcmVjZWl2ZXIpCisgICAg
dm9pZCBhZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpSZWNlaXZlck5hbWUgbWVzc2FnZVJlY2VpdmVy
TmFtZSwgT2JqZWN0SWRlbnRpZmllcjxUPiBkZXN0aW5hdGlvbklELCBJUEM6Ok1lc3NhZ2VSZWNl
aXZlciYgcmVjZWl2ZXIpCiAgICAgewogICAgICAgICBhZGRNZXNzYWdlUmVjZWl2ZXIobWVzc2Fn
ZVJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRC50b1VJbnQ2NCgpLCByZWNlaXZlcik7CiAgICAg
fQogICAgIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgIHZvaWQgcmVtb3ZlTWVzc2Fn
ZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIE9iamVj
dElkZW50aWZpZXI8VD4gZGVzdGluYXRpb25JRCkKKyAgICB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNl
aXZlcihJUEM6OlJlY2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBPYmplY3RJZGVudGlm
aWVyPFQ+IGRlc3RpbmF0aW9uSUQpCiAgICAgewogICAgICAgICByZW1vdmVNZXNzYWdlUmVjZWl2
ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRC50b1VJbnQ2NCgpKTsKICAgICB9
CkBAIC0xMzgsNyArMTM4LDcgQEAgcHJpdmF0ZToKICAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVy
RGVzdGluYXRpb25JRCgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgLy8gSVBDOjpDb25uZWN0aW9u
OjpDbGllbnQuCi0gICAgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpTdHJp
bmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZUludmFs
aWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZU5hbWUpIGZpbmFsOwogICAg
IHZvaWQgZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHNo
dXREb3duKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50
Q29vcmRpbmF0b3JQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0Fw
cGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmgJKHJldmlzaW9uIDI2MDc2NCkKKysr
IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5
LmgJKHdvcmtpbmcgY29weSkKQEAgLTg2LDggKzg2LDYgQEAgcHVibGljOgogICAgICAgICB2aXJ0
dWFsIGNvbnN0IFN0cmluZyYgcGF5bWVudENvb3JkaW5hdG9yQm91bmRJbnRlcmZhY2VJZGVudGlm
aWVyKGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JikgPSAwOwogICAgICAgICB2aXJ0
dWFsIGNvbnN0IFN0cmluZyYgcGF5bWVudENvb3JkaW5hdG9yU291cmNlQXBwbGljYXRpb25CdW5k
bGVJZGVudGlmaWVyKGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JikgPSAwOwogICAg
ICAgICB2aXJ0dWFsIGNvbnN0IFN0cmluZyYgcGF5bWVudENvb3JkaW5hdG9yU291cmNlQXBwbGlj
YXRpb25TZWNvbmRhcnlJZGVudGlmaWVyKGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5
JikgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgcGF5bWVudENvb3JkaW5hdG9yQWRkTWVzc2Fn
ZVJlY2VpdmVyKFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JiwgY29uc3QgSVBDOjpTdHJpbmdS
ZWZlcmVuY2UmLCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYpID0gMDsKLSAgICAgICAgdmlydHVhbCB2
b2lkIHBheW1lbnRDb29yZGluYXRvclJlbW92ZU1lc3NhZ2VSZWNlaXZlcihXZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eSYsIGNvbnN0IElQQzo6U3RyaW5nUmVmZXJlbmNlJikgPSAwOwogI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIHZpcnR1YWwgVUlWaWV3Q29udHJvbGxlciAqcGF5
bWVudENvb3JkaW5hdG9yUHJlc2VudGluZ1ZpZXdDb250cm9sbGVyKGNvbnN0IFdlYlBheW1lbnRD
b29yZGluYXRvclByb3h5JikgPSAwOwogICAgICAgICB2aXJ0dWFsIGNvbnN0IFN0cmluZyYgcGF5
bWVudENvb3JkaW5hdG9yQ1REYXRhQ29ubmVjdGlvblNlcnZpY2VUeXBlKGNvbnN0IFdlYlBheW1l
bnRDb29yZGluYXRvclByb3h5JikgPSAwOwpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvQXBw
bGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eUNvY29hLm1tCShyZXZpc2lvbiAyNjA3NjQpCisrKyBTb3VyY2UvV2ViS2l0L1No
YXJlZC9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC03OSwxNSArNzksMTIgQEAgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJv
eHk6OldlYlBheW1lbnRDbwogICAgIDogbV9jbGllbnQoY2xpZW50KQogICAgICwgbV9jYW5NYWtl
UGF5bWVudHNRdWV1ZShXb3JrUXVldWU6OmNyZWF0ZSgiY29tLmFwcGxlLldlYktpdC5DYW5NYWtl
UGF5bWVudHMiKSkKIHsKLSAgICBtX2NsaWVudC5wYXltZW50Q29vcmRpbmF0b3JBZGRNZXNzYWdl
UmVjZWl2ZXIoKnRoaXMsIE1lc3NhZ2VzOjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6bWVz
c2FnZVJlY2VpdmVyTmFtZSgpLCAqdGhpcyk7CiB9CiAKIFdlYlBheW1lbnRDb29yZGluYXRvclBy
b3h5Ojp+V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkoKQogewogICAgIGlmIChtX3N0YXRlICE9
IFN0YXRlOjpJZGxlKQogICAgICAgICBoaWRlUGF5bWVudFVJKCk7Ci0KLSAgICBtX2NsaWVudC5w
YXltZW50Q29vcmRpbmF0b3JSZW1vdmVNZXNzYWdlUmVjZWl2ZXIoKnRoaXMsIE1lc3NhZ2VzOjpX
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKTsKIH0KIAog
dm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1DYW5NYWtlUGF5bWVudHNX
aXRoQWN0aXZlQ2FyZChjb25zdCBTdHJpbmcmIG1lcmNoYW50SWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiBkb21haW5OYW1lLCBXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9BdXhpbGlhcnlQcm9jZXNz
Q29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQXV4aWxp
YXJ5UHJvY2Vzc0NvY29hLm1tCShyZXZpc2lvbiAyNjA3NjQpCisrKyBTb3VyY2UvV2ViS2l0L1No
YXJlZC9Db2NvYS9BdXhpbGlhcnlQcm9jZXNzQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTMy
LDkgKzMyLDkgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXZvaWQgQXV4aWxpYXJ5UHJvY2Vz
czo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6U3RyaW5n
UmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3Nh
Z2VOYW1lKQordm9pZCBBdXhpbGlhcnlQcm9jZXNzOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlTmFtZSBtZXNzYWdlTmFtZSkKIHsKLSAgICBz
ZXRDcmFzaFJlcG9ydEFwcGxpY2F0aW9uU3BlY2lmaWNJbmZvcm1hdGlvbigoX19icmlkZ2UgQ0ZT
dHJpbmdSZWYpW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJSZWNlaXZlZCBpbnZhbGlkIG1l
c3NhZ2U6ICclczo6JXMnIiwgbWVzc2FnZVJlY2VpdmVyTmFtZS50b1N0cmluZygpLmRhdGEoKSwg
bWVzc2FnZU5hbWUudG9TdHJpbmcoKS5kYXRhKCldKTsKKyAgICBzZXRDcmFzaFJlcG9ydEFwcGxp
Y2F0aW9uU3BlY2lmaWNJbmZvcm1hdGlvbigoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpW05TU3RyaW5n
IHN0cmluZ1dpdGhGb3JtYXQ6QCJSZWNlaXZlZCBpbnZhbGlkIG1lc3NhZ2U6ICclcyciLCBkZXNj
cmlwdGlvbihtZXNzYWdlTmFtZSldKTsKICAgICBDUkFTSCgpOwogfQogCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5jcHAJKHJldmlz
aW9uIDI2MDc5MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQ
cm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3OCwyMiArMTc4LDIyIEBAIGJvb2wgQXV4aWxp
YXJ5UHJvY2Vzc1Byb3h5OjpzZW5kTWVzc2FnZSgKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZv
aWQgQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjphZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdS
ZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImIG1lc3Nh
Z2VSZWNlaXZlcikKK3ZvaWQgQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjphZGRNZXNzYWdlUmVjZWl2
ZXIoSVBDOjpSZWNlaXZlck5hbWUgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpNZXNzYWdlUmVj
ZWl2ZXImIG1lc3NhZ2VSZWNlaXZlcikKIHsKICAgICBtX21lc3NhZ2VSZWNlaXZlck1hcC5hZGRN
ZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSwgbWVzc2FnZVJlY2VpdmVyKTsKIH0K
IAotdm9pZCBBdXhpbGlhcnlQcm9jZXNzUHJveHk6OmFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0
cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklE
LCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYgbWVzc2FnZVJlY2VpdmVyKQordm9pZCBBdXhpbGlhcnlQ
cm9jZXNzUHJveHk6OmFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlJlY2VpdmVyTmFtZSBtZXNzYWdl
UmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBJUEM6Ok1lc3NhZ2VSZWNlaXZl
ciYgbWVzc2FnZVJlY2VpdmVyKQogewogICAgIG1fbWVzc2FnZVJlY2VpdmVyTWFwLmFkZE1lc3Nh
Z2VSZWNlaXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklELCBtZXNzYWdlUmVj
ZWl2ZXIpOwogfQogCi12b2lkIEF1eGlsaWFyeVByb2Nlc3NQcm94eTo6cmVtb3ZlTWVzc2FnZVJl
Y2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90
IGRlc3RpbmF0aW9uSUQpCit2b2lkIEF1eGlsaWFyeVByb2Nlc3NQcm94eTo6cmVtb3ZlTWVzc2Fn
ZVJlY2VpdmVyKElQQzo6UmVjZWl2ZXJOYW1lIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90
IGRlc3RpbmF0aW9uSUQpCiB7CiAgICAgbV9tZXNzYWdlUmVjZWl2ZXJNYXAucmVtb3ZlTWVzc2Fn
ZVJlY2VpdmVyKG1lc3NhZ2VSZWNlaXZlck5hbWUsIGRlc3RpbmF0aW9uSUQpOwogfQogCi12b2lk
IEF1eGlsaWFyeVByb2Nlc3NQcm94eTo6cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5n
UmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUpCit2b2lkIEF1eGlsaWFyeVByb2Nlc3NQcm94
eTo6cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6UmVjZWl2ZXJOYW1lIG1lc3NhZ2VSZWNlaXZl
ck5hbWUpCiB7CiAgICAgbV9tZXNzYWdlUmVjZWl2ZXJNYXAucmVtb3ZlTWVzc2FnZVJlY2VpdmVy
KG1lc3NhZ2VSZWNlaXZlck5hbWUpOwogfQpAQCAtMjc4LDkgKzI3OCw5IEBAIHZvaWQgQXV4aWxp
YXJ5UHJvY2Vzc1Byb3h5Ojpjb25uZWN0aW9uV2kKIHsKIH0KIAotdm9pZCBBdXhpbGlhcnlQcm9j
ZXNzUHJveHk6OmxvZ0ludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwg
SVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpTdHJpbmdSZWZl
cmVuY2UgbWVzc2FnZU5hbWUpCit2b2lkIEF1eGlsaWFyeVByb2Nlc3NQcm94eTo6bG9nSW52YWxp
ZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6Ok1lc3NhZ2VOYW1lIG1l
c3NhZ2VOYW1lKQogewotICAgIFJFTEVBU0VfTE9HX0ZBVUxUKElQQywgIlJlY2VpdmVkIGFuIGlu
dmFsaWQgbWVzc2FnZSAnJSIgUFVCTElDX0xPR19TVFJJTkcgIjo6JSIgUFVCTElDX0xPR19TVFJJ
TkcgIicgZnJvbSB0aGUgJSIgUFVCTElDX0xPR19TVFJJTkcgIiBwcm9jZXNzLiIsIG1lc3NhZ2VS
ZWNlaXZlck5hbWUudG9TdHJpbmcoKS5kYXRhKCksIG1lc3NhZ2VOYW1lLnRvU3RyaW5nKCkuZGF0
YSgpLCBwcm9jZXNzTmFtZSgpLmNoYXJhY3RlcnMoKSk7CisgICAgUkVMRUFTRV9MT0dfRkFVTFQo
SVBDLCAiUmVjZWl2ZWQgYW4gaW52YWxpZCBtZXNzYWdlICclIiBQVUJMSUNfTE9HX1NUUklORyAi
JyBmcm9tIHRoZSAlIiBQVUJMSUNfTE9HX1NUUklORyAiIHByb2Nlc3MuIiwgZGVzY3JpcHRpb24o
bWVzc2FnZU5hbWUpLCBwcm9jZXNzTmFtZSgpLmNoYXJhY3RlcnMoKSk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV4aWxpYXJ5UHJv
Y2Vzc1Byb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV4aWxp
YXJ5UHJvY2Vzc1Byb3h5LmgJKHJldmlzaW9uIDI2MDc2NCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC03NSwxOSAr
NzUsMTkgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9jb25uZWN0aW9uID09ICZjb25uZWN0
aW9uOwogICAgIH0KIAotICAgIHZvaWQgYWRkTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVm
ZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIElQQzo6TWVzc2FnZVJlY2VpdmVyJik7Ci0gICAg
dm9pZCBhZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2Vp
dmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImKTsK
LSAgICB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNz
YWdlUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKTsKLSAgICB2b2lkIHJlbW92
ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1l
KTsKKyAgICB2b2lkIGFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlJlY2VpdmVyTmFtZSwgSVBDOjpN
ZXNzYWdlUmVjZWl2ZXImKTsKKyAgICB2b2lkIGFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlJlY2Vp
dmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImKTsK
KyAgICB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlJlY2VpdmVyTmFtZSwgdWludDY0
X3QgZGVzdGluYXRpb25JRCk7CisgICAgdm9pZCByZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpS
ZWNlaXZlck5hbWUpOwogICAgIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgIHZvaWQg
YWRkTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5h
bWUsIE9iamVjdElkZW50aWZpZXI8VD4gZGVzdGluYXRpb25JRCwgSVBDOjpNZXNzYWdlUmVjZWl2
ZXImIHJlY2VpdmVyKQorICAgIHZvaWQgYWRkTWVzc2FnZVJlY2VpdmVyKElQQzo6UmVjZWl2ZXJO
YW1lIG1lc3NhZ2VSZWNlaXZlck5hbWUsIE9iamVjdElkZW50aWZpZXI8VD4gZGVzdGluYXRpb25J
RCwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImIHJlY2VpdmVyKQogICAgIHsKICAgICAgICAgYWRkTWVz
c2FnZVJlY2VpdmVyKG1lc3NhZ2VSZWNlaXZlck5hbWUsIGRlc3RpbmF0aW9uSUQudG9VSW50NjQo
KSwgcmVjZWl2ZXIpOwogICAgIH0KICAgICAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAg
ICB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdl
UmVjZWl2ZXJOYW1lLCBPYmplY3RJZGVudGlmaWVyPFQ+IGRlc3RpbmF0aW9uSUQpCisgICAgdm9p
ZCByZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpSZWNlaXZlck5hbWUgbWVzc2FnZVJlY2VpdmVy
TmFtZSwgT2JqZWN0SWRlbnRpZmllcjxUPiBkZXN0aW5hdGlvbklEKQogICAgIHsKICAgICAgICAg
cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKG1lc3NhZ2VSZWNlaXZlck5hbWUsIGRlc3RpbmF0aW9uSUQu
dG9VSW50NjQoKSk7CiAgICAgfQpAQCAtMTE5LDcgKzExOSw3IEBAIHByb3RlY3RlZDoKICAgICBi
b29sIGRpc3BhdGNoTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKICAg
ICBib29sIGRpc3BhdGNoU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVy
Jiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKTsKIAotICAgIHZvaWQgbG9nSW52YWxp
ZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJl
Y2VpdmVyTmFtZSwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUpOworICAgIHZvaWQg
bG9nSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlTmFtZSk7CiAg
ICAgdmlydHVhbCBBU0NJSUxpdGVyYWwgcHJvY2Vzc05hbWUoKSBjb25zdCA9IDA7CiAKICAgICB2
aXJ0dWFsIHZvaWQgZ2V0TGF1bmNoT3B0aW9ucyhQcm9jZXNzTGF1bmNoZXI6OkxhdW5jaE9wdGlv
bnMmKTsKQEAgLTE1MCw3ICsxNTAsNyBAQCBib29sIEF1eGlsaWFyeVByb2Nlc3NQcm94eTo6c2Vu
ZChUJiYgbWVzCiB7CiAgICAgQ09NUElMRV9BU1NFUlQoIVQ6OmlzU3luYywgQXN5bmNNZXNzYWdl
RXhwZWN0ZWQpOwogCi0gICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZTxJUEM6OkVuY29kZXI+
KFQ6OnJlY2VpdmVyTmFtZSgpLCBUOjpuYW1lKCksIGRlc3RpbmF0aW9uSUQpOworICAgIGF1dG8g
ZW5jb2RlciA9IG1ha2VVbmlxdWU8SVBDOjpFbmNvZGVyPihUOjpuYW1lKCksIGRlc3RpbmF0aW9u
SUQpOwogICAgIGVuY29kZXItPmVuY29kZShtZXNzYWdlLmFyZ3VtZW50cygpKTsKIAogICAgIHJl
dHVybiBzZW5kTWVzc2FnZShXVEZNb3ZlKGVuY29kZXIpLCBzZW5kT3B0aW9ucyk7CkBAIC0xNzQs
NyArMTc0LDcgQEAgdm9pZCBBdXhpbGlhcnlQcm9jZXNzUHJveHk6OnNlbmRXaXRoQXN5bgogewog
ICAgIENPTVBJTEVfQVNTRVJUKCFUOjppc1N5bmMsIEFzeW5jTWVzc2FnZUV4cGVjdGVkKTsKIAot
ICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWU8SVBDOjpFbmNvZGVyPihUOjpyZWNlaXZlck5h
bWUoKSwgVDo6bmFtZSgpLCBkZXN0aW5hdGlvbklEKTsKKyAgICBhdXRvIGVuY29kZXIgPSBtYWtl
VW5pcXVlPElQQzo6RW5jb2Rlcj4oVDo6bmFtZSgpLCBkZXN0aW5hdGlvbklEKTsKICAgICB1aW50
NjRfdCBsaXN0ZW5lcklEID0gSVBDOjpuZXh0QXN5bmNSZXBseUhhbmRsZXJJRCgpOwogICAgIGVu
Y29kZXItPmVuY29kZShsaXN0ZW5lcklEKTsKICAgICBlbmNvZGVyLT5lbmNvZGUobWVzc2FnZS5h
cmd1bWVudHMoKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBh
Z2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlz
aW9uYWxQYWdlUHJveHkuY3BwCShyZXZpc2lvbiAyNjA3NjQpCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxOSw3
ICs1MTksNyBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRSZWNlaXZlTWVzCiAgICAg
fQogI2VuZGlmCiAKLSAgICBMT0coUHJvY2Vzc1N3YXBwaW5nLCAiVW5oYW5kbGVkIG1lc3NhZ2Ug
JXM6OiVzIGZyb20gcHJvdmlzaW9uYWwgcHJvY2VzcyIsIGRlY29kZXIubWVzc2FnZVJlY2VpdmVy
TmFtZSgpLnRvU3RyaW5nKCkuZGF0YSgpLCBkZWNvZGVyLm1lc3NhZ2VOYW1lKCkudG9TdHJpbmco
KS5kYXRhKCkpOworICAgIExPRyhQcm9jZXNzU3dhcHBpbmcsICJVbmhhbmRsZWQgbWVzc2FnZSAl
cyBmcm9tIHByb3Zpc2lvbmFsIHByb2Nlc3MiLCBkZXNjcmlwdGlvbihkZWNvZGVyLm1lc3NhZ2VO
YW1lKCkpKTsKIH0KIAogdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkUmVjZWl2ZVN5bmNN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVy
LCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYgcmVwbHlFbmNvZGVyKQpJbmRleDogU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwCShyZXZpc2lv
biAyNjA3NjQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHku
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MSwzMyArNjEsMzIgQEAgUmVmUHRyPFdlYlByb2Nlc3NQ
cm94eT4gU3VzcGVuZGVkUGFnZVBybwogfQogCiAjaWYgIUxPR19ESVNBQkxFRAotc3RhdGljIGNv
bnN0IEhhc2hTZXQ8SVBDOjpTdHJpbmdSZWZlcmVuY2U+JiBtZXNzYWdlTmFtZXNUb0lnbm9yZVdo
aWxlU3VzcGVuZGVkKCkKK3N0YXRpYyBjb25zdCBIYXNoU2V0PHVpbnQxNl90PiYgbWVzc2FnZU5h
bWVzVG9JZ25vcmVXaGlsZVN1c3BlbmRlZCgpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PEhhc2hTZXQ8SVBDOjpTdHJpbmdSZWZlcmVuY2U+PiBtZXNzYWdlTmFtZXM7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8dWludDE2X3Q+PiBtZXNzYWdlTmFtZXM7CiAgICAgc3Rh
dGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwogICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFn
LCBbXSB7Ci0gICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoIkJhY2tGb3J3YXJkQWRkSXRl
bSIpOwotICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJDbGVhckFsbEVkaXRDb21tYW5k
cyIpOwotICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJEaWRDaGFuZ2VDb250ZW50U2l6
ZSIpOwotICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJEaWRDaGFuZ2VNYWluRG9jdW1l
bnQiKTsKLSAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZCgiRGlkQ2hhbmdlUHJvZ3Jlc3Mi
KTsKLSAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZCgiRGlkQ29tbWl0TG9hZEZvckZyYW1l
Iik7Ci0gICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoIkRpZERlc3Ryb3lOYXZpZ2F0aW9u
Iik7Ci0gICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoIkRpZEZpbmlzaERvY3VtZW50TG9h
ZEZvckZyYW1lIik7Ci0gICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoIkRpZEZpbmlzaFBy
b2dyZXNzIik7Ci0gICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoIkRpZENvbXBsZXRlUGFn
ZVRyYW5zaXRpb24iKTsKLSAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZCgiRGlkRmlyc3RM
YXlvdXRGb3JGcmFtZSIpOwotICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJEaWRGaXJz
dFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZSIpOwotICAgICAgICBtZXNzYWdlTmFtZXMu
Z2V0KCkuYWRkKCJEaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YSIpOwotICAgICAgICBtZXNz
YWdlTmFtZXMuZ2V0KCkuYWRkKCJEaWRSZWFjaExheW91dE1pbGVzdG9uZSIpOwotICAgICAgICBt
ZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJEaWRSZXN0b3JlU2Nyb2xsUG9zaXRpb24iKTsKLSAgICAg
ICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZCgiRGlkU3RhcnRQcm9ncmVzcyIpOwotICAgICAgICBt
ZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJEaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lIik7
Ci0gICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoIkVkaXRvclN0YXRlQ2hhbmdlZCIpOwot
ICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJQYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29s
b3JEaWRDaGFuZ2UiKTsKLSAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZCgiU2V0UmVuZGVy
VHJlZVNpemUiKTsKLSAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZCgiU2V0U3RhdHVzVGV4
dCIpOwotICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJTZXROZXR3b3JrUmVxdWVzdHNJ
blByb2dyZXNzIik7CisgICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoc3RhdGljX2Nhc3Q8
dWludDE2X3Q+KElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VQcm94eV9CYWNrRm9yd2FyZEFkZEl0
ZW0pKTsKKyAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZChzdGF0aWNfY2FzdDx1aW50MTZf
dD4oSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZVByb3h5X0NsZWFyQWxsRWRpdENvbW1hbmRzKSk7
CisgICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoc3RhdGljX2Nhc3Q8dWludDE2X3Q+KElQ
Qzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VQcm94eV9EaWRDaGFuZ2VDb250ZW50U2l6ZSkpOworICAg
ICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKHN0YXRpY19jYXN0PHVpbnQxNl90PihJUEM6Ok1l
c3NhZ2VOYW1lOjpXZWJQYWdlUHJveHlfRGlkQ2hhbmdlTWFpbkRvY3VtZW50KSk7CisgICAgICAg
IG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoc3RhdGljX2Nhc3Q8dWludDE2X3Q+KElQQzo6TWVzc2Fn
ZU5hbWU6OldlYlBhZ2VQcm94eV9EaWRDaGFuZ2VQcm9ncmVzcykpOworICAgICAgICBtZXNzYWdl
TmFtZXMuZ2V0KCkuYWRkKHN0YXRpY19jYXN0PHVpbnQxNl90PihJUEM6Ok1lc3NhZ2VOYW1lOjpX
ZWJQYWdlUHJveHlfRGlkQ29tbWl0TG9hZEZvckZyYW1lKSk7CisgICAgICAgIG1lc3NhZ2VOYW1l
cy5nZXQoKS5hZGQoc3RhdGljX2Nhc3Q8dWludDE2X3Q+KElQQzo6TWVzc2FnZU5hbWU6OldlYlBh
Z2VQcm94eV9EaWREZXN0cm95TmF2aWdhdGlvbikpOworICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0
KCkuYWRkKHN0YXRpY19jYXN0PHVpbnQxNl90PihJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlUHJv
eHlfRGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUpKTsKKyAgICAgICAgbWVzc2FnZU5hbWVz
LmdldCgpLmFkZChzdGF0aWNfY2FzdDx1aW50MTZfdD4oSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFn
ZVByb3h5X0RpZEZpbmlzaFByb2dyZXNzKSk7CisgICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5h
ZGQoc3RhdGljX2Nhc3Q8dWludDE2X3Q+KElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VQcm94eV9E
aWRGaXJzdExheW91dEZvckZyYW1lKSk7CisgICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQo
c3RhdGljX2Nhc3Q8dWludDE2X3Q+KElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VQcm94eV9EaWRG
aXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZSkpOworICAgICAgICBtZXNzYWdlTmFt
ZXMuZ2V0KCkuYWRkKHN0YXRpY19jYXN0PHVpbnQxNl90PihJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQ
YWdlUHJveHlfRGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGEpKTsKKyAgICAgICAgbWVzc2Fn
ZU5hbWVzLmdldCgpLmFkZChzdGF0aWNfY2FzdDx1aW50MTZfdD4oSVBDOjpNZXNzYWdlTmFtZTo6
V2ViUGFnZVByb3h5X0RpZFJlYWNoTGF5b3V0TWlsZXN0b25lKSk7CisgICAgICAgIG1lc3NhZ2VO
YW1lcy5nZXQoKS5hZGQoc3RhdGljX2Nhc3Q8dWludDE2X3Q+KElQQzo6TWVzc2FnZU5hbWU6Oldl
YlBhZ2VQcm94eV9EaWRSZXN0b3JlU2Nyb2xsUG9zaXRpb24pKTsKKyAgICAgICAgbWVzc2FnZU5h
bWVzLmdldCgpLmFkZChzdGF0aWNfY2FzdDx1aW50MTZfdD4oSVBDOjpNZXNzYWdlTmFtZTo6V2Vi
UGFnZVByb3h5X0RpZFN0YXJ0UHJvZ3Jlc3MpKTsKKyAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgp
LmFkZChzdGF0aWNfY2FzdDx1aW50MTZfdD4oSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZVByb3h5
X0RpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUpKTsKKyAgICAgICAgbWVzc2FnZU5hbWVz
LmdldCgpLmFkZChzdGF0aWNfY2FzdDx1aW50MTZfdD4oSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFn
ZVByb3h5X0VkaXRvclN0YXRlQ2hhbmdlZCkpOworICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCku
YWRkKHN0YXRpY19jYXN0PHVpbnQxNl90PihJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlUHJveHlf
UGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yRGlkQ2hhbmdlKSk7CisgICAgICAgIG1lc3NhZ2VO
YW1lcy5nZXQoKS5hZGQoc3RhdGljX2Nhc3Q8dWludDE2X3Q+KElQQzo6TWVzc2FnZU5hbWU6Oldl
YlBhZ2VQcm94eV9TZXRSZW5kZXJUcmVlU2l6ZSkpOworICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0
KCkuYWRkKHN0YXRpY19jYXN0PHVpbnQxNl90PihJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlUHJv
eHlfU2V0U3RhdHVzVGV4dCkpOworICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKHN0YXRp
Y19jYXN0PHVpbnQxNl90PihJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlUHJveHlfU2V0TmV0d29y
a1JlcXVlc3RzSW5Qcm9ncmVzcykpOwogICAgIH0pOwogCiAgICAgcmV0dXJuIG1lc3NhZ2VOYW1l
czsKQEAgLTI1NCw4ICsyNTMsOCBAQCB2b2lkIFN1c3BlbmRlZFBhZ2VQcm94eTo6ZGlkUmVjZWl2
ZU1lc3NhCiAgICAgfQogCiAjaWYgIUxPR19ESVNBQkxFRAotICAgIGlmICghbWVzc2FnZU5hbWVz
VG9JZ25vcmVXaGlsZVN1c3BlbmRlZCgpLmNvbnRhaW5zKGRlY29kZXIubWVzc2FnZU5hbWUoKSkp
Ci0gICAgICAgIExPRyhQcm9jZXNzU3dhcHBpbmcsICJTdXNwZW5kZWRQYWdlUHJveHkgcmVjZWl2
ZWQgdW5leHBlY3RlZCBXZWJQYWdlUHJveHkgbWVzc2FnZSAnJXMnIiwgZGVjb2Rlci5tZXNzYWdl
TmFtZSgpLnRvU3RyaW5nKCkuZGF0YSgpKTsKKyAgICBpZiAoIW1lc3NhZ2VOYW1lc1RvSWdub3Jl
V2hpbGVTdXNwZW5kZWQoKS5jb250YWlucyhzdGF0aWNfY2FzdDx1aW50MTZfdD4oZGVjb2Rlci5t
ZXNzYWdlTmFtZSgpKSkpCisgICAgICAgIExPRyhQcm9jZXNzU3dhcHBpbmcsICJTdXNwZW5kZWRQ
YWdlUHJveHkgcmVjZWl2ZWQgdW5leHBlY3RlZCBXZWJQYWdlUHJveHkgbWVzc2FnZSAnJXMnIiwg
ZGVzY3JpcHRpb24oZGVjb2Rlci5tZXNzYWdlTmFtZSgpKSk7CiAjZW5kaWYKIH0KIApJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJldmlzaW9uIDI2MDc2NCkKKysr
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yMjc3LDggKzIyNzcsNiBAQCBwcml2YXRlOgogICAgIGNvbnN0IFN0cmluZyYgcGF5bWVudENv
b3JkaW5hdG9yQm91bmRJbnRlcmZhY2VJZGVudGlmaWVyKGNvbnN0IFdlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5JikgZmluYWw7CiAgICAgY29uc3QgU3RyaW5nJiBwYXltZW50Q29vcmRpbmF0b3JT
b3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoY29uc3QgV2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHkmKSBmaW5hbDsKICAgICBjb25zdCBTdHJpbmcmIHBheW1lbnRDb29yZGluYXRvclNv
dXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllcihjb25zdCBXZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eSYpIGZpbmFsOwotICAgIHZvaWQgcGF5bWVudENvb3JkaW5hdG9yQWRkTWVzc2Fn
ZVJlY2VpdmVyKFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JiwgY29uc3QgSVBDOjpTdHJpbmdS
ZWZlcmVuY2UmLCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYpIGZpbmFsOwotICAgIHZvaWQgcGF5bWVu
dENvb3JkaW5hdG9yUmVtb3ZlTWVzc2FnZVJlY2VpdmVyKFdlYlBheW1lbnRDb29yZGluYXRvclBy
b3h5JiwgY29uc3QgSVBDOjpTdHJpbmdSZWZlcmVuY2UmKSBmaW5hbDsKICNlbmRpZgogI2lmIEVO
QUJMRShBUFBMRV9QQVkpICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgVUlWaWV3Q29udHJv
bGxlciAqcGF5bWVudENvb3JkaW5hdG9yUHJlc2VudGluZ1ZpZXdDb250cm9sbGVyKGNvbnN0IFdl
YlBheW1lbnRDb29yZGluYXRvclByb3h5JikgZmluYWw7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCShyZXZpc2lvbiAyNjA3NjQpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg1
MiwxNyArODUyLDEyIEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldEludmFsaWRNZXNzYWdlQ2EK
ICAgICBzX2ludmFsaWRNZXNzYWdlQ2FsbGJhY2sgPSBpbnZhbGlkTWVzc2FnZUNhbGxiYWNrOwog
fQogCi12b2lkIFdlYlByb2Nlc3NQb29sOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoY29uc3Qg
SVBDOjpTdHJpbmdSZWZlcmVuY2UmIG1lc3NhZ2VSZWNlaXZlck5hbWUsIGNvbnN0IElQQzo6U3Ry
aW5nUmVmZXJlbmNlJiBtZXNzYWdlTmFtZSkKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmRpZFJlY2Vp
dmVJbnZhbGlkTWVzc2FnZShJUEM6Ok1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lKQogewogICAgIGlm
ICghc19pbnZhbGlkTWVzc2FnZUNhbGxiYWNrKQogICAgICAgICByZXR1cm47CiAKLSAgICBTdHJp
bmdCdWlsZGVyIG1lc3NhZ2VOYW1lU3RyaW5nQnVpbGRlcjsKLSAgICBtZXNzYWdlTmFtZVN0cmlu
Z0J1aWxkZXIuYXBwZW5kQ2hhcmFjdGVycyhtZXNzYWdlUmVjZWl2ZXJOYW1lLmRhdGEoKSwgbWVz
c2FnZVJlY2VpdmVyTmFtZS5zaXplKCkpOwotICAgIG1lc3NhZ2VOYW1lU3RyaW5nQnVpbGRlci5h
cHBlbmQoJy4nKTsKLSAgICBtZXNzYWdlTmFtZVN0cmluZ0J1aWxkZXIuYXBwZW5kQ2hhcmFjdGVy
cyhtZXNzYWdlTmFtZS5kYXRhKCksIG1lc3NhZ2VOYW1lLnNpemUoKSk7Ci0KLSAgICBzX2ludmFs
aWRNZXNzYWdlQ2FsbGJhY2sodG9BUEkoQVBJOjpTdHJpbmc6OmNyZWF0ZShtZXNzYWdlTmFtZVN0
cmluZ0J1aWxkZXIudG9TdHJpbmcoKSkucHRyKCkpKTsKKyAgICBzX2ludmFsaWRNZXNzYWdlQ2Fs
bGJhY2sodG9BUEkoQVBJOjpTdHJpbmc6OmNyZWF0ZShkZXNjcmlwdGlvbihtZXNzYWdlTmFtZSkp
LnB0cigpKSk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlc29sdmVQYXRoc0ZvclNhbmRi
b3hFeHRlbnNpb25zKCkKQEAgLTE2NzMsMjIgKzE2NjgsMjIgQEAgdm9pZCBXZWJQcm9jZXNzUG9v
bDo6c3ludGhlc2l6ZUFwcElzQmFjawogICAgIGVuc3VyZU5ldHdvcmtQcm9jZXNzKCkuc3ludGhl
c2l6ZUFwcElzQmFja2dyb3VuZChiYWNrZ3JvdW5kKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzUG9v
bDo6YWRkTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZl
ck5hbWUsIElQQzo6TWVzc2FnZVJlY2VpdmVyJiBtZXNzYWdlUmVjZWl2ZXIpCit2b2lkIFdlYlBy
b2Nlc3NQb29sOjphZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpSZWNlaXZlck5hbWUgbWVzc2FnZVJl
Y2VpdmVyTmFtZSwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImIG1lc3NhZ2VSZWNlaXZlcikKIHsKICAg
ICBtX21lc3NhZ2VSZWNlaXZlck1hcC5hZGRNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVy
TmFtZSwgbWVzc2FnZVJlY2VpdmVyKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzUG9vbDo6YWRkTWVz
c2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVp
bnQ2NF90IGRlc3RpbmF0aW9uSUQsIElQQzo6TWVzc2FnZVJlY2VpdmVyJiBtZXNzYWdlUmVjZWl2
ZXIpCit2b2lkIFdlYlByb2Nlc3NQb29sOjphZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpSZWNlaXZl
ck5hbWUgbWVzc2FnZVJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgSVBDOjpN
ZXNzYWdlUmVjZWl2ZXImIG1lc3NhZ2VSZWNlaXZlcikKIHsKICAgICBtX21lc3NhZ2VSZWNlaXZl
ck1hcC5hZGRNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25J
RCwgbWVzc2FnZVJlY2VpdmVyKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVtb3ZlTWVz
c2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUpCit2
b2lkIFdlYlByb2Nlc3NQb29sOjpyZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpSZWNlaXZlck5h
bWUgbWVzc2FnZVJlY2VpdmVyTmFtZSkKIHsKICAgICBtX21lc3NhZ2VSZWNlaXZlck1hcC5yZW1v
dmVNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSk7CiB9CiAKLXZvaWQgV2ViUHJv
Y2Vzc1Bvb2w6OnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNz
YWdlUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKQordm9pZCBXZWJQcm9jZXNz
UG9vbDo6cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6UmVjZWl2ZXJOYW1lIG1lc3NhZ2VSZWNl
aXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpCiB7CiAgICAgbV9tZXNzYWdlUmVjZWl2
ZXJNYXAucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKG1lc3NhZ2VSZWNlaXZlck5hbWUsIGRlc3RpbmF0
aW9uSUQpOwogfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5o
CShyZXZpc2lvbiAyNjA3NjQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDgsMjEgKzE0OCwyMSBAQCBwdWJsaWM6CiAgICAg
ICAgIG1fc3VwcGxlbWVudHMuYWRkKFQ6OnN1cHBsZW1lbnROYW1lKCksIFQ6OmNyZWF0ZSh0aGlz
KSk7CiAgICAgfQogCi0gICAgdm9pZCBhZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZl
cmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImKTsKLSAgICB2
b2lkIGFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2
ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYpOwot
ICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3Nh
Z2VSZWNlaXZlck5hbWUpOwotICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6U3Ry
aW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQp
OworICAgIHZvaWQgYWRkTWVzc2FnZVJlY2VpdmVyKElQQzo6UmVjZWl2ZXJOYW1lLCBJUEM6Ok1l
c3NhZ2VSZWNlaXZlciYpOworICAgIHZvaWQgYWRkTWVzc2FnZVJlY2VpdmVyKElQQzo6UmVjZWl2
ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYpOwor
ICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6UmVjZWl2ZXJOYW1lKTsKKyAgICB2
b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVz
dGluYXRpb25JRCk7CiAKICAgICBXZWJCYWNrRm9yd2FyZENhY2hlJiBiYWNrRm9yd2FyZENhY2hl
KCkgeyByZXR1cm4gbV9iYWNrRm9yd2FyZENhY2hlLmdldCgpOyB9CiAgICAgCiAgICAgdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+Ci0gICAgdm9pZCBhZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdS
ZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgT2JqZWN0SWRlbnRpZmllcjxUPiBkZXN0aW5h
dGlvbklELCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYgcmVjZWl2ZXIpCisgICAgdm9pZCBhZGRNZXNz
YWdlUmVjZWl2ZXIoSVBDOjpSZWNlaXZlck5hbWUgbWVzc2FnZVJlY2VpdmVyTmFtZSwgT2JqZWN0
SWRlbnRpZmllcjxUPiBkZXN0aW5hdGlvbklELCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYgcmVjZWl2
ZXIpCiAgICAgewogICAgICAgICBhZGRNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFt
ZSwgZGVzdGluYXRpb25JRC50b1VJbnQ2NCgpLCByZWNlaXZlcik7CiAgICAgfQogICAgIAogICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQ
Qzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIE9iamVjdElkZW50aWZpZXI8
VD4gZGVzdGluYXRpb25JRCkKKyAgICB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlJl
Y2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBPYmplY3RJZGVudGlmaWVyPFQ+IGRlc3Rp
bmF0aW9uSUQpCiAgICAgewogICAgICAgICByZW1vdmVNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJl
Y2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRC50b1VJbnQ2NCgpKTsKICAgICB9CkBAIC00MTcsNyAr
NDE3LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICBzdGF0aWMgdm9pZCBzZXRJbnZhbGlkTWVz
c2FnZUNhbGxiYWNrKHZvaWQgKCopKFdLU3RyaW5nUmVmKSk7Ci0gICAgc3RhdGljIHZvaWQgZGlk
UmVjZWl2ZUludmFsaWRNZXNzYWdlKGNvbnN0IElQQzo6U3RyaW5nUmVmZXJlbmNlJiBtZXNzYWdl
UmVjZWl2ZXJOYW1lLCBjb25zdCBJUEM6OlN0cmluZ1JlZmVyZW5jZSYgbWVzc2FnZU5hbWUpOwor
ICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6Ok1lc3NhZ2VOYW1l
KTsKIAogICAgIGJvb2wgaXNVUkxLbm93bkhTVFNIb3N0KGNvbnN0IFN0cmluZyYgdXJsU3RyaW5n
KSBjb25zdDsKICAgICB2b2lkIHJlc2V0SFNUU0hvc3RzKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAJKHJldmlzaW9uIDI2MDc2NCkKKysrIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE2MSw4ICsxNjEsOCBAQCBjbGFzcyBVSVByb3h5Rm9yQ2FwdHVyZSBmaW5hbCA6IHB1Ymxp
YyBVCiBwdWJsaWM6CiAgICAgZXhwbGljaXQgVUlQcm94eUZvckNhcHR1cmUoV2ViUHJvY2Vzc1By
b3h5JiBwcm9jZXNzKSA6IG1fcHJvY2Vzcyhwcm9jZXNzKSB7IH0KIHByaXZhdGU6Ci0gICAgdm9p
ZCBhZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVy
TmFtZSwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImIHJlY2VpdmVyKSBmaW5hbCB7IG1fcHJvY2Vzcy5h
ZGRNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSwgcmVjZWl2ZXIpOyB9Ci0gICAg
dm9pZCByZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJl
Y2VpdmVyTmFtZSkgZmluYWwgeyBtX3Byb2Nlc3MucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKG1lc3Nh
Z2VSZWNlaXZlck5hbWUpOyB9CisgICAgdm9pZCBhZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpSZWNl
aXZlck5hbWUgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImIHJlY2Vp
dmVyKSBmaW5hbCB7IG1fcHJvY2Vzcy5hZGRNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVy
TmFtZSwgcmVjZWl2ZXIpOyB9CisgICAgdm9pZCByZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpS
ZWNlaXZlck5hbWUgbWVzc2FnZVJlY2VpdmVyTmFtZSkgZmluYWwgeyBtX3Byb2Nlc3MucmVtb3Zl
TWVzc2FnZVJlY2VpdmVyKG1lc3NhZ2VSZWNlaXZlck5hbWUpOyB9CiAgICAgSVBDOjpDb25uZWN0
aW9uJiBjb25uZWN0aW9uKCkgZmluYWwgeyByZXR1cm4gKm1fcHJvY2Vzcy5jb25uZWN0aW9uKCk7
IH0KICAgICBMb2dnZXImIGxvZ2dlcigpIGZpbmFsCiAgICAgewpAQCAtMzUyLDcgKzM1Miw3IEBA
IHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpwbGF0Zm9ybUdldExhdW5jaE8KIGJvb2wgV2ViUHJvY2Vz
c1Byb3h5OjpzaG91bGRTZW5kUGVuZGluZ01lc3NhZ2UoY29uc3QgUGVuZGluZ01lc3NhZ2UmIG1l
c3NhZ2UpCiB7CiAjaWYgSEFWRShTQU5EQk9YX0lTU1VFX1JFQURfRVhURU5TSU9OX1RPX1BST0NF
U1NfQllfQVVESVRfVE9LRU4pCi0gICAgaWYgKG1lc3NhZ2UuZW5jb2Rlci0+bWVzc2FnZU5hbWUo
KSA9PSAiTG9hZFJlcXVlc3RXYWl0aW5nRm9yUHJvY2Vzc0xhdW5jaCIpIHsKKyAgICBpZiAobWVz
c2FnZS5lbmNvZGVyLT5tZXNzYWdlTmFtZSgpID09IElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2Vf
TG9hZFJlcXVlc3RXYWl0aW5nRm9yUHJvY2Vzc0xhdW5jaCkgewogICAgICAgICBhdXRvIGJ1ZmZl
ciA9IG1lc3NhZ2UuZW5jb2Rlci0+YnVmZmVyKCk7CiAgICAgICAgIGF1dG8gYnVmZmVyU2l6ZSA9
IG1lc3NhZ2UuZW5jb2Rlci0+YnVmZmVyU2l6ZSgpOwogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8
SVBDOjpEZWNvZGVyPiBkZWNvZGVyID0gbWFrZVVuaXF1ZTxJUEM6OkRlY29kZXI+KGJ1ZmZlciwg
YnVmZmVyU2l6ZSwgbnVsbHB0ciwgVmVjdG9yPElQQzo6QXR0YWNobWVudD4geyB9KTsKQEAgLTg0
MCwxMSArODQwLDExIEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzRGlkVGVybWluYXQK
ICAgICB9CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRSZWNlaXZlSW52YWxpZE1lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNz
YWdlUmVjZWl2ZXJOYW1lLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZSkKK3ZvaWQg
V2ViUHJvY2Vzc1Byb3h5OjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiBjb25uZWN0aW9uLCBJUEM6Ok1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lKQogewotICAgIGxvZ0lu
dmFsaWRNZXNzYWdlKGNvbm5lY3Rpb24sIG1lc3NhZ2VSZWNlaXZlck5hbWUsIG1lc3NhZ2VOYW1l
KTsKKyAgICBsb2dJbnZhbGlkTWVzc2FnZShjb25uZWN0aW9uLCBtZXNzYWdlTmFtZSk7CiAKLSAg
ICBXZWJQcm9jZXNzUG9vbDo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKG1lc3NhZ2VSZWNlaXZl
ck5hbWUsIG1lc3NhZ2VOYW1lKTsKKyAgICBXZWJQcm9jZXNzUG9vbDo6ZGlkUmVjZWl2ZUludmFs
aWRNZXNzYWdlKG1lc3NhZ2VOYW1lKTsKIAogICAgIC8vIFRlcm1pbmF0ZSB0aGUgV2ViQ29udGVu
dCBwcm9jZXNzLgogICAgIHRlcm1pbmF0ZSgpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Byb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Byb3h5LmgJKHJldmlzaW9uIDI2MDc2NCkKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NTUsNyArNDU1
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6
OkVuY29kZXI+Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24m
KSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6OlN0
cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZl
SW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlTmFtZSkgb3ZlcnJp
ZGU7CiAKICAgICAvLyBSZXNwb25zaXZlbmVzc1RpbWVyOjpDbGllbnQKICAgICB2b2lkIGRpZEJl
Y29tZVVucmVzcG9uc2l2ZSgpIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHku
aAkocmV2aXNpb24gMjYwNzY0KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVXNl
ck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw4ICs1MSw4
IEBAIHB1YmxpYzoKICAgICBjbGFzcyBDb25uZWN0aW9uUHJveHkgewogICAgIHB1YmxpYzoKICAg
ICAgICAgdmlydHVhbCB+Q29ubmVjdGlvblByb3h5KCkgPSBkZWZhdWx0OwotICAgICAgICB2aXJ0
dWFsIHZvaWQgYWRkTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlLCBJUEM6Ok1l
c3NhZ2VSZWNlaXZlciYpID0gMDsKLSAgICAgICAgdmlydHVhbCB2b2lkIHJlbW92ZU1lc3NhZ2VS
ZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSkgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQg
YWRkTWVzc2FnZVJlY2VpdmVyKElQQzo6UmVjZWl2ZXJOYW1lLCBJUEM6Ok1lc3NhZ2VSZWNlaXZl
ciYpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihJUEM6
OlJlY2VpdmVyTmFtZSkgPSAwOwogICAgICAgICB2aXJ0dWFsIElQQzo6Q29ubmVjdGlvbiYgY29u
bmVjdGlvbigpID0gMDsKICAgICAgICAgdmlydHVhbCBib29sIHdpbGxTdGFydENhcHR1cmUoV2Vi
Q29yZTo6Q2FwdHVyZURldmljZTo6RGV2aWNlVHlwZSkgY29uc3QgPSAwOwogICAgICAgICB2aXJ0
dWFsIExvZ2dlciYgbG9nZ2VyKCkgPSAwOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0JKHJldmlzaW9uIDI2MDc2NCkKKysr
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOTAsMTYgKzI5MCw2IEBAIGNvbnN0IFN0cmluZyYgV2ViUGFnZVByb3h5
OjpwYXltZW50Q29vcmQKICAgICByZXR1cm4gd2Vic2l0ZURhdGFTdG9yZSgpLmNvbmZpZ3VyYXRp
b24oKS5zb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIoKTsKIH0KIAotdm9pZCBX
ZWJQYWdlUHJveHk6OnBheW1lbnRDb29yZGluYXRvckFkZE1lc3NhZ2VSZWNlaXZlcihXZWJQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eSYsIGNvbnN0IElQQzo6U3RyaW5nUmVmZXJlbmNlJiBtZXNzYWdl
UmVjZWl2ZXJOYW1lLCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYgbWVzc2FnZVJlY2VpdmVyKQotewot
ICAgIHByb2Nlc3MoKS5hZGRNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSwgbV93
ZWJQYWdlSUQsIG1lc3NhZ2VSZWNlaXZlcik7Ci19Ci0KLXZvaWQgV2ViUGFnZVByb3h5OjpwYXlt
ZW50Q29vcmRpbmF0b3JSZW1vdmVNZXNzYWdlUmVjZWl2ZXIoV2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHkmLCBjb25zdCBJUEM6OlN0cmluZ1JlZmVyZW5jZSYgbWVzc2FnZVJlY2VpdmVyTmFtZSkK
LXsKLSAgICBwcm9jZXNzKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKG1lc3NhZ2VSZWNlaXZlck5h
bWUsIG1fd2ViUGFnZUlEKTsKLX0KLQogI2VuZGlmCiAKICNpZiBFTkFCTEUoU1BFRUNIX1NZTlRI
RVNJUykKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHku
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNz
UHJveHkuY3BwCShyZXZpc2lvbiAyNjA3NjQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9H
UFUvR1BVUHJvY2Vzc1Byb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjExLDExICsyMTEsMTEg
QEAgdm9pZCBHUFVQcm9jZXNzUHJveHk6OmRpZENsb3NlKElQQzo6Q29ubgogICAgIGdwdVByb2Nl
c3NDcmFzaGVkKCk7CiB9CiAKLXZvaWQgR1BVUHJvY2Vzc1Byb3h5OjpkaWRSZWNlaXZlSW52YWxp
ZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OlN0cmluZ1JlZmVyZW5j
ZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZSkK
K3ZvaWQgR1BVUHJvY2Vzc1Byb3h5OjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6Ok1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lKQogewotICAg
IGxvZ0ludmFsaWRNZXNzYWdlKGNvbm5lY3Rpb24sIG1lc3NhZ2VSZWNlaXZlck5hbWUsIG1lc3Nh
Z2VOYW1lKTsKKyAgICBsb2dJbnZhbGlkTWVzc2FnZShjb25uZWN0aW9uLCBtZXNzYWdlTmFtZSk7
CiAKLSAgICBXZWJQcm9jZXNzUG9vbDo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKG1lc3NhZ2VS
ZWNlaXZlck5hbWUsIG1lc3NhZ2VOYW1lKTsKKyAgICBXZWJQcm9jZXNzUG9vbDo6ZGlkUmVjZWl2
ZUludmFsaWRNZXNzYWdlKG1lc3NhZ2VOYW1lKTsKIAogICAgIC8vIFRlcm1pbmF0ZSB0aGUgR1BV
IHByb2Nlc3MuCiAgICAgdGVybWluYXRlKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5oCShyZXZpc2lvbiAyNjA3NjQpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmgJKHdvcmtpbmcgY29weSkKQEAg
LTEwMCw3ICsxMDAsNyBAQCBwcml2YXRlOgogICAgIC8vIElQQzo6Q29ubmVjdGlvbjo6Q2xpZW50
CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29k
ZXImKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYpIG92ZXJy
aWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYs
IElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIElQQzo6U3RyaW5nUmVm
ZXJlbmNlIG1lc3NhZ2VOYW1lKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVJbnZhbGlk
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VOYW1lKSBvdmVycmlkZTsKIAog
I2lmIEhBVkUoVklTSUJJTElUWV9QUk9QQUdBVElPTl9WSUVXKQogICAgIHZvaWQgZGlkQ3JlYXRl
Q29udGV4dEZvclZpc2liaWxpdHlQcm9wYWdhdGlvbihMYXllckhvc3RpbmdDb250ZXh0SUQpOwpJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuY3BwCShyZXZpc2lvbiAyNjA3NjQpCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yNzcsOSArMjc3LDkgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRDbG9zZShJUEM6
OgogICAgIG5ldHdvcmtQcm9jZXNzQ3Jhc2hlZCgpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNz
UHJveHk6OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rp
b24sIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIElQQzo6U3RyaW5n
UmVmZXJlbmNlIG1lc3NhZ2VOYW1lKQordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRSZWNl
aXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6Ok1lc3Nh
Z2VOYW1lIG1lc3NhZ2VOYW1lKQogewotICAgIGxvZ0ludmFsaWRNZXNzYWdlKGNvbm5lY3Rpb24s
IG1lc3NhZ2VSZWNlaXZlck5hbWUsIG1lc3NhZ2VOYW1lKTsKKyAgICBsb2dJbnZhbGlkTWVzc2Fn
ZShjb25uZWN0aW9uLCBtZXNzYWdlTmFtZSk7CiAgICAgdGVybWluYXRlKCk7CiB9CiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NQcm94eS5oCShyZXZpc2lvbiAyNjA3NjQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMjQ1LDcgKzI0
NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBD
OjpFbmNvZGVyPiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9u
Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpT
dHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2
ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZU5hbWUpIG92ZXJy
aWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNOZXR3b3JrUHJvY2Vzc1Byb3h5TWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNv
ZGVyPiYpOwogCiAgICAgLy8gTWVzc2FnZSBoYW5kbGVycwpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmNwcAkocmV2
aXNpb24gMjYwNzY0KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Q
cm9jZXNzUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTQsOSArMjE0LDkgQEAgdm9pZCBQ
bHVnaW5Qcm9jZXNzUHJveHk6OmRpZENsb3NlKElQQzo6QwogICAgIHBsdWdpblByb2Nlc3NDcmFz
aGVkT3JGYWlsZWRUb0xhdW5jaCgpOwogfQogCi12b2lkIFBsdWdpblByb2Nlc3NQcm94eTo6ZGlk
UmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpT
dHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpTdHJpbmdSZWZlcmVuY2Ug
bWVzc2FnZU5hbWUpCit2b2lkIFBsdWdpblByb2Nlc3NQcm94eTo6ZGlkUmVjZWl2ZUludmFsaWRN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpNZXNzYWdlTmFtZSBtZXNz
YWdlTmFtZSkKIHsKLSAgICBsb2dJbnZhbGlkTWVzc2FnZShjb25uZWN0aW9uLCBtZXNzYWdlUmVj
ZWl2ZXJOYW1lLCBtZXNzYWdlTmFtZSk7CisgICAgbG9nSW52YWxpZE1lc3NhZ2UoY29ubmVjdGlv
biwgbWVzc2FnZU5hbWUpOwogICAgIHRlcm1pbmF0ZSgpOwogfQogCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmgJKHJl
dmlzaW9uIDI2MDc2NCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
UHJvY2Vzc1Byb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNCw3ICsxMDQsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6
RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jikgb3ZlcnJpZGU7CiAKICAg
ICB2b2lkIGRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlk
UmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6U3RyaW5nUmVmZXJl
bmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1l
KSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mLCBJUEM6Ok1lc3NhZ2VOYW1lKSBvdmVycmlkZTsKIAogICAgIC8vIFByb2Nlc3NMYXVu
Y2hlcjo6Q2xpZW50CiAgICAgdm9pZCBkaWRGaW5pc2hMYXVuY2hpbmcoUHJvY2Vzc0xhdW5jaGVy
KiwgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDI2MDc2NCkKKysrIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzkz
LDcgKzc5Myw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjoKICAg
ICB9CiAjZW5kaWYKIAotICAgIExPR19FUlJPUigiVW5oYW5kbGVkIHdlYiBwcm9jZXNzIG1lc3Nh
Z2UgJyVzOjolcycgKGRlc3RpbmF0aW9uOiAlIiBQUkl1NjQgIiBwaWQ6ICVkKSIsIGRlY29kZXIu
bWVzc2FnZVJlY2VpdmVyTmFtZSgpLnRvU3RyaW5nKCkuZGF0YSgpLCBkZWNvZGVyLm1lc3NhZ2VO
YW1lKCkudG9TdHJpbmcoKS5kYXRhKCksIGRlY29kZXIuZGVzdGluYXRpb25JRCgpLCBzdGF0aWNf
Y2FzdDxpbnQ+KGdldEN1cnJlbnRQcm9jZXNzSUQoKSkpOworICAgIExPR19FUlJPUigiVW5oYW5k
bGVkIHdlYiBwcm9jZXNzIG1lc3NhZ2UgJyVzJyAoZGVzdGluYXRpb246ICUiIFBSSXU2NCAiIHBp
ZDogJWQpIiwgZGVzY3JpcHRpb24oZGVjb2Rlci5tZXNzYWdlTmFtZSgpKSwgZGVjb2Rlci5kZXN0
aW5hdGlvbklEKCksIHN0YXRpY19jYXN0PGludD4oZ2V0Q3VycmVudFByb2Nlc3NJRCgpKSk7CiB9
CiAKIFdlYkZyYW1lKiBXZWJQcm9jZXNzOjp3ZWJGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJ
RCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nv
bm5lY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
R1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCShyZXZpc2lvbiAyNjA3NjQpCisrKyBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNzMsNyArNzMsNyBAQCB2b2lkIEdQVVByb2Nlc3NDb25uZWN0aW9uOjpkaWRDbG9zZShJ
UEM6CiB7CiB9CiAKLXZvaWQgR1BVUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVJbnZhbGlk
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSwgSVBDOjpTdHJp
bmdSZWZlcmVuY2UpCit2b2lkIEdQVVByb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlSW52YWxp
ZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlTmFtZSkKIHsKIH0KIApJbmRl
eDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5l
Y3Rpb24uaAkocmV2aXNpb24gMjYwNzY0KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC04MCw3ICs4MCw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mKSBvdmVycmlkZTsK
ICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2Rl
ciYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JikgZmluYWw7
Ci0gICAgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBD
OjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpTdHJpbmdSZWZlcmVu
Y2UgbWVzc2FnZU5hbWUpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZU5hbWUpIG92ZXJyaWRlOwogCiAgICAg
Ym9vbCBkaXNwYXRjaE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CiAg
ICAgYm9vbCBkaXNwYXRjaFN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2Rl
ciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jik7CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3Rvci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yLmgJKHJldmlzaW9uIDI2
MDc2NCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9y
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogCiAgICAgLy8gSVBD
OjpDb25uZWN0aW9uOjpDbGllbnQKICAgICB2b2lkIGRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYp
IG92ZXJyaWRlIHsgY2xvc2UoKTsgfQotICAgIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYsIElQQzo6U3RyaW5nUmVmZXJlbmNlLCBJUEM6OlN0cmluZ1JlZmVy
ZW5jZSkgb3ZlcnJpZGUgeyBjbG9zZSgpOyB9CisgICAgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlTmFtZSkgb3ZlcnJpZGUgeyBjbG9z
ZSgpOyB9CiAKICAgICB2b2lkIHNob3coKTsKICAgICB2b2lkIGNsb3NlKCk7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSS5o
CShyZXZpc2lvbiAyNjA3NjQpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9y
L1dlYkluc3BlY3RvclVJLmgJKHdvcmtpbmcgY29weSkKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGlj
OgogCiAgICAgLy8gSVBDOjpDb25uZWN0aW9uOjpDbGllbnQKICAgICB2b2lkIGRpZENsb3NlKElQ
Qzo6Q29ubmVjdGlvbiYpIG92ZXJyaWRlIHsgLyogRG8gbm90aGluZywgdGhlIGluc3BlY3RlZCBw
YWdlIHByb2Nlc3MgbWF5IGhhdmUgY3Jhc2hlZCBhbmQgbWF5IGJlIGdldHRpbmcgcmVwbGFjZWQu
ICovIH0KLSAgICB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
LCBJUEM6OlN0cmluZ1JlZmVyZW5jZSwgSVBDOjpTdHJpbmdSZWZlcmVuY2UpIG92ZXJyaWRlIHsg
Y2xvc2VXaW5kb3coKTsgfQorICAgIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZU5hbWUpIG92ZXJyaWRlIHsgY2xvc2VXaW5kb3coKTsg
fQogCiAgICAgLy8gQ2FsbGVkIGJ5IFdlYkluc3BlY3RvclVJIG1lc3NhZ2VzCiAgICAgdm9pZCBl
c3RhYmxpc2hDb25uZWN0aW9uKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgaW5zcGVjdGVkUGFnZUlk
ZW50aWZpZXIsIGNvbnN0IERlYnVnZ2FibGVJbmZvRGF0YSYsIGJvb2wgdW5kZXJUZXN0LCB1bnNp
Z25lZCBpbnNwZWN0aW9uTGV2ZWwpOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCShy
ZXZpc2lvbiAyNjA3NjQpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTksNyArMjE5LDcg
QEAgdm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZENsb3NlKAogI2VuZGlmCiB9CiAK
LXZvaWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiwgSVBDOjpTdHJpbmdSZWZlcmVuY2UsIElQQzo6U3RyaW5nUmVmZXJl
bmNlKQordm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVJbnZhbGlkTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VOYW1lKQogewogfQogCkluZGV4OiBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb24uaAkocmV2aXNpb24gMjYwNzY0KQorKysgU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTk4LDcgKzk4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlk
UmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6
dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRDbG9zZShJ
UEM6OkNvbm5lY3Rpb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2
ZXJOYW1lLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZSkgb3ZlcnJpZGU7CisgICAg
dm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNz
YWdlTmFtZSkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRpZEZpbmlzaFBpbmdMb2FkKHVpbnQ2NF90
IHBpbmdMb2FkSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmLCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiYpOwogICAgIHZvaWQgZGlkRmluaXNoUHJlY29ubmVjdGlvbih1aW50
NjRfdCBwcmVjb25uZWN0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmKTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25u
ZWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi5jcHAJKHJldmlzaW9uIDI2MDc2NCkKKysrIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTI4LDcgKzEyOCw3IEBAIHZvaWQgUGx1Z2luUHJvY2Vzc0Nvbm5l
Y3Rpb246OmRpZENsb3NlKEkKICAgICB9CiB9CiAKLXZvaWQgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rp
b246OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OlN0cmlu
Z1JlZmVyZW5jZSwgSVBDOjpTdHJpbmdSZWZlcmVuY2UpCit2b2lkIFBsdWdpblByb2Nlc3NDb25u
ZWN0aW9uOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpN
ZXNzYWdlTmFtZSkKIHsKIH0KIApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi5oCShyZXZpc2lvbiAy
NjA3NjQpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNz
Q29ubmVjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC02Niw3ICs2Niw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXIm
KSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIG92ZXJy
aWRlOwogICAgIHZvaWQgZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpTdHJp
bmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVz
c2FnZU5hbWUpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZU5hbWUpIG92ZXJyaWRlOwogCiAgICAgLy8gTWVz
c2FnZSBoYW5kbGVycy4KICAgICB2b2lkIGRpZFJlY2VpdmVTeW5jUGx1Z2luUHJvY2Vzc0Nvbm5l
Y3Rpb25NZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVl
X3B0cjxJUEM6OkVuY29kZXI+Jik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVl
L1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tCShyZXZpc2lvbiAyNjA3NjQpCisrKyBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWEubW0JKHdvcmtpbmcgY29weSkKQEAgLTM4NSw3ICszODUsNyBAQCB2b2lk
IFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjp1cGRhdGVSCiAgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6V2lsbENvbW1pdExheWVyVHJlZShsYXll
clRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSUQoKSkpOwogCiAgICAgTWVzc2FnZXM6OlJlbW90ZUxh
eWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OkNvbW1pdExheWVyVHJlZSBtZXNzYWdlKGxheWVyVHJh
bnNhY3Rpb24sIHNjcm9sbGluZ1RyYW5zYWN0aW9uKTsKLSAgICBhdXRvIGNvbW1pdEVuY29kZXIg
PSBtYWtlVW5pcXVlPElQQzo6RW5jb2Rlcj4oTWVzc2FnZXM6OlJlbW90ZUxheWVyVHJlZURyYXdp
bmdBcmVhUHJveHk6OkNvbW1pdExheWVyVHJlZTo6cmVjZWl2ZXJOYW1lKCksIE1lc3NhZ2VzOjpS
ZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5OjpDb21taXRMYXllclRyZWU6Om5hbWUoKSwg
bV9pZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgIGF1dG8gY29tbWl0RW5jb2RlciA9IG1ha2VV
bmlxdWU8SVBDOjpFbmNvZGVyPihNZXNzYWdlczo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQ
cm94eTo6Q29tbWl0TGF5ZXJUcmVlOjpuYW1lKCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsK
ICAgICBjb21taXRFbmNvZGVyLT5lbmNvZGUobWVzc2FnZS5hcmd1bWVudHMoKSk7CiAKICAgICAv
LyBGSVhNRTogTW92ZSBhbGwgYmFja2luZyBzdG9yZSBmbHVzaGluZyBtYW5hZ2VtZW50IHRvIFJl
bW90ZUxheWVyQmFja2luZ1N0b3JlQ29sbGVjdGlvbi4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>397806</attachid>
            <date>2020-04-27 22:13:19 -0700</date>
            <delta_ts>2020-04-27 22:19:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211112-20200427221317.patch</filename>
            <type>text/plain</type>
            <size>349086</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNjA3NjQpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDIwLTA0LTI3ICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVkdWNlIElQQyBvdmVyaGVhZCBm
b3IgbWVzc2FnZSByZWNlaXZlciBuYW1lIGFuZCBtZXNzYWdlIG5hbWUgdG8gMiBieXRlcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjExMTEyCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvRW51bVRy
YWl0cy5oOgorCiAyMDIwLTA0LTI2ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbQ29jb2FdIHN0b3AgdXNpbmcgb3V0IGFyZ3VtZW50cyBmb3IgZG9jdW1lbnQgYXR0
cmlidXRlcyB3aGVuIGNvbnZlcnRpbmcgdG8gYXR0cmlidXRlZCBzdHJpbmdzCkluZGV4OiBTb3Vy
Y2UvV1RGL3d0Zi9FbnVtVHJhaXRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvRW51
bVRyYWl0cy5oCShyZXZpc2lvbiAyNjA3NjQpCisrKyBTb3VyY2UvV1RGL3d0Zi9FbnVtVHJhaXRz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDExIEBACiAKICNpbmNsdWRlIDx0eXBlX3Ry
YWl0cz4KIAorbmFtZXNwYWNlIElQQyB7CisvLyBGSVhNRTogRmluZCBhIGJldHRlciB3YXkgdG8g
ZG8gdGhpcyB3aXRob3V0IGxldHRpbmcgV1RGIGtub3cgYWJvdXQgSVBDLgorZW51bSBjbGFzcyBN
ZXNzYWdlTmFtZSA6IHVpbnQxNl90OworfQorCiBuYW1lc3BhY2UgV1RGIHsKIAogdGVtcGxhdGU8
dHlwZW5hbWU+IHN0cnVjdCBFbnVtVHJhaXRzOwpAQCAtNTEsNyArNTYsNyBAQCBzdHJ1Y3QgRW51
bVZhbHVlQ2hlY2tlcjxULCBFbnVtVmFsdWVzPEU+CiAgICAgfQogfTsKIAotdGVtcGxhdGU8dHlw
ZW5hbWUgRSwgdHlwZW5hbWUgVCwgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2VudW08RT46OnZh
bHVlICYmICFzdGQ6OmlzX3NhbWU8c3RkOjp1bmRlcmx5aW5nX3R5cGVfdDxFPiwgYm9vbD46OnZh
bHVlPiogPSBudWxscHRyPgordGVtcGxhdGU8dHlwZW5hbWUgRSwgdHlwZW5hbWUgVCwgc3RkOjpl
bmFibGVfaWZfdDxzdGQ6OmlzX2VudW08RT46OnZhbHVlICYmICFzdGQ6OmlzX3NhbWU8c3RkOjp1
bmRlcmx5aW5nX3R5cGVfdDxFPiwgYm9vbD46OnZhbHVlICYmICFzdGQ6OmlzX3NhbWU8RSwgSVBD
OjpNZXNzYWdlTmFtZT46OnZhbHVlPiogPSBudWxscHRyPgogY29uc3RleHByIGJvb2wgaXNWYWxp
ZEVudW0oVCB0KQogewogICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFQpID49IHN0ZDo6dW5kZXJs
eWluZ190eXBlX3Q8RT4oKSwgIkludGVncmFsIHR5cGUgbXVzdCBiZSBhdCBsZWFzdCB0aGUgc2l6
ZSBvZiB0aGUgdW5kZXJseWluZyBlbnVtIHR5cGUiKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAy
NjA4MDYpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDI4NiBAQAorMjAyMC0wNC0yNyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3
ZWJraXQub3JnPgorCisgICAgICAgIFJlZHVjZSBJUEMgb3ZlcmhlYWQgZm9yIG1lc3NhZ2UgcmVj
ZWl2ZXIgbmFtZSBhbmQgbWVzc2FnZSBuYW1lIHRvIDIgYnl0ZXMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMTExMgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtb3V0cHV0Lnhj
ZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBHUFVQ
cm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpH
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UpOgorICAg
ICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVNZXNz
YWdlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRp
ZFJlY2VpdmVTeW5jTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UpOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzczo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9p
b3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NJT1MubW06CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpwYXltZW50Q29vcmRpbmF0b3JBZGRNZXNz
YWdlUmVjZWl2ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6cGF5bWVudENvb3JkaW5hdG9yUmVtb3ZlTWVzc2FnZVJlY2VpdmVyKTog
RGVsZXRlZC4KKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHA6CisgICAgICAg
IChJUEM6OkNvbm5lY3Rpb246OldhaXRGb3JNZXNzYWdlU3RhdGU6OldhaXRGb3JNZXNzYWdlU3Rh
dGUpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjphZGRXb3JrUXVldWVNZXNzYWdlUmVjZWl2
ZXIpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpyZW1vdmVXb3JrUXVldWVNZXNzYWdlUmVj
ZWl2ZXIpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpkaXNwYXRjaFdvcmtRdWV1ZU1lc3Nh
Z2VSZWNlaXZlck1lc3NhZ2UpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjphZGRUaHJlYWRN
ZXNzYWdlUmVjZWl2ZXIpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpyZW1vdmVUaHJlYWRN
ZXNzYWdlUmVjZWl2ZXIpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpkaXNwYXRjaFRocmVh
ZE1lc3NhZ2VSZWNlaXZlck1lc3NhZ2UpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpjcmVh
dGVTeW5jTWVzc2FnZUVuY29kZXIpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpzZW5kTWVz
c2FnZSk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OndhaXRGb3JNZXNzYWdlKToKKyAgICAg
ICAgKElQQzo6Q29ubmVjdGlvbjo6c2VuZFN5bmNNZXNzYWdlKToKKyAgICAgICAgKElQQzo6Q29u
bmVjdGlvbjo6d2FpdEZvclN5bmNSZXBseSk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnBy
b2Nlc3NJbmNvbWluZ01lc3NhZ2UpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpkaXNwYXRj
aFN5bmNNZXNzYWdlKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6ZGlzcGF0Y2hEaWRSZWNl
aXZlSW52YWxpZE1lc3NhZ2UpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpkaXNwYXRjaE1l
c3NhZ2UpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpkaXNwYXRjaE1lc3NhZ2VUb1dvcmtR
dWV1ZVJlY2VpdmVyKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6ZGlzcGF0Y2hNZXNzYWdl
VG9UaHJlYWRSZWNlaXZlcik6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OmRpc3BhdGNoSW5j
b21pbmdNZXNzYWdlcyk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaDoKKyAg
ICAgICAgKElQQzo6Q29ubmVjdGlvbjo6c2VuZCk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246
OnNlbmRXaXRoQXN5bmNSZXBseSk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnNlbmRTeW5j
KToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6d2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRl
bHkpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9EZWNvZGVyLmNwcDoKKyAgICAgICAgKiBQbGF0
Zm9ybS9JUEMvRGVjb2Rlci5oOgorICAgICAgICAoSVBDOjpEZWNvZGVyOjptZXNzYWdlUmVjZWl2
ZXJOYW1lIGNvbnN0KToKKyAgICAgICAgKElQQzo6RGVjb2Rlcjo6bWVzc2FnZU5hbWUgY29uc3Qp
OgorICAgICAgICAoSVBDOjpEZWNvZGVyOjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpEZWNvZGVy
OjpvcGVyYXRvcj4+KToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvRW5jb2Rlci5jcHA6CisgICAg
ICAgIChJUEM6OkVuY29kZXI6OkVuY29kZXIpOgorICAgICAgICAoSVBDOjpFbmNvZGVyOjplbmNv
ZGVIZWFkZXIpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9FbmNvZGVyLmg6CisgICAgICAgICog
UGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaDoKKyAgICAgICAgKElQQzo6aGFuZGxlTWVzc2Fn
ZUFzeW5jKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVyTWFwLmNwcDoK
KyAgICAgICAgKElQQzo6TWVzc2FnZVJlY2VpdmVyTWFwOjphZGRNZXNzYWdlUmVjZWl2ZXIpOgor
ICAgICAgICAoSVBDOjpNZXNzYWdlUmVjZWl2ZXJNYXA6OnJlbW92ZU1lc3NhZ2VSZWNlaXZlcik6
CisgICAgICAgIChJUEM6Ok1lc3NhZ2VSZWNlaXZlck1hcDo6ZGlzcGF0Y2hNZXNzYWdlKToKKyAg
ICAgICAgKElQQzo6TWVzc2FnZVJlY2VpdmVyTWFwOjpkaXNwYXRjaFN5bmNNZXNzYWdlKToKKyAg
ICAgICAgKiBQbGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVyTWFwLmg6CisgICAgICAgICogUGxh
dGZvcm0vSVBDL01lc3NhZ2VTZW5kZXIuaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvY29jb2Ev
Q29ubmVjdGlvbkNvY29hLm1tOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpvcGVuKToKKyAg
ICAgICAgKElQQzo6Q29ubmVjdGlvbjo6c2VuZE1lc3NhZ2UpOgorICAgICAgICAoSVBDOjpDb25u
ZWN0aW9uOjpzZW5kT3V0Z29pbmdNZXNzYWdlKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6
cmVjZWl2ZVNvdXJjZUV2ZW50SGFuZGxlcik6CisgICAgICAgICogUGxhdGZvcm0vSVBDL2NvY29h
L01hY2hNZXNzYWdlLmNwcDoKKyAgICAgICAgKElQQzo6TWFjaE1lc3NhZ2U6OmNyZWF0ZSk6Cisg
ICAgICAgIChJUEM6Ok1hY2hNZXNzYWdlOjpNYWNoTWVzc2FnZSk6CisgICAgICAgICogUGxhdGZv
cm0vSVBDL2NvY29hL01hY2hNZXNzYWdlLmg6CisgICAgICAgIChJUEM6Ok1hY2hNZXNzYWdlOjpt
ZXNzYWdlUmVjZWl2ZXJOYW1lIGNvbnN0KToKKyAgICAgICAgKElQQzo6TWFjaE1lc3NhZ2U6Om1l
c3NhZ2VOYW1lIGNvbnN0KToKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25u
ZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJl
Y2VpdmVJbnZhbGlkTWVzc2FnZSk6CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNz
Q29ubmVjdGlvbi5oOgorICAgICAgICAqIFNjcmlwdHMvTWFrZWZpbGU6CisgICAgICAgICogU2Ny
aXB0cy9nZW5lcmF0ZS1tZXNzYWdlLXJlY2VpdmVyLnB5OgorICAgICAgICAobWFpbik6CisgICAg
ICAgICogU2NyaXB0cy93ZWJraXQvTGVnYWN5TWVzc2FnZXMtZXhwZWN0ZWQuaDogUmVtb3ZlZC4K
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9MZWdhY3lNZXNzYWdlc1JlcGxpZXMtZXhwZWN0ZWQu
aDogUmVtb3ZlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9NZXNzYWdlTmFtZXMuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKElQQzo6ZGVzY3JpcHRpb24pOgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0L01lc3NhZ2VOYW1lcy5oOiBBZGRlZC4KKyAgICAgICAgKElQQzo6cmVjZWl2ZXJOYW1lKToK
KyAgICAgICAgKFdURjo6aXNWYWxpZEVudW0pOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L01l
c3NhZ2VSZWNlaXZlci1leHBlY3RlZC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogU2NyaXB0cy93
ZWJraXQvTWVzc2FnZVJlY2VpdmVyU3VwZXJjbGFzcy1leHBlY3RlZC5jcHA6IFJlbW92ZWQuCisg
ICAgICAgICogU2NyaXB0cy93ZWJraXQvTWVzc2FnZXMtZXhwZWN0ZWQuaDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdC9NZXNzYWdlc1JlcGxpZXMtZXhwZWN0ZWQuaDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9NZXNzYWdlc1JlcGxpZXNTdXBlcmNsYXNzUmVw
bGllcy1leHBlY3RlZC5oOiBSZW1vdmVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L01lc3Nh
Z2VzU3VwZXJjbGFzcy1leHBlY3RlZC5oOiBSZW1vdmVkLgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0L21lc3NhZ2VzLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3QtbGVnYWN5LW1l
c3NhZ2VzLmluOiBSZW1vdmVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3QtbGVnYWN5
Lm1lc3NhZ2VzLmluOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rl
c3QtbGVnYWN5LW1lc3NhZ2VzLmluLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3QtbGVn
YWN5TWVzc2FnZVJlY2VpdmVyLmNwcDogQWRkZWQuCisgICAgICAgIChNZXNzYWdlczo6V2ViUGFn
ZTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OnNlbmQpOgorICAgICAgICAoTWVzc2FnZXM6
OldlYlBhZ2U6OlRlc3RNdWx0aXBsZUF0dHJpYnV0ZXM6OnNlbmQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlOjpkaWRSZWNlaXZlV2ViUGFnZU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlOjpkaWRSZWNlaXZlU3luY1dlYlBhZ2VNZXNzYWdlKToKKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdC90ZXN0LWxlZ2FjeU1lc3NhZ2VzLmg6IEFkZGVkLgorICAgICAgICAoTWVzc2FnZXM6
OldlYlBhZ2U6Om1lc3NhZ2VSZWNlaXZlck5hbWUpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBh
Z2U6OkxvYWRVUkw6Om5hbWUpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRVUkw6
OkxvYWRVUkwpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRVUkw6OmFyZ3VtZW50
cyBjb25zdCk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFNvbWV0aGluZzo6bmFt
ZSk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFNvbWV0aGluZzo6TG9hZFNvbWV0
aGluZyk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFNvbWV0aGluZzo6YXJndW1l
bnRzIGNvbnN0KToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUb3VjaEV2ZW50OjpuYW1l
KToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUb3VjaEV2ZW50OjpUb3VjaEV2ZW50KToK
KyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUb3VjaEV2ZW50Ojphcmd1bWVudHMgY29uc3Qp
OgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OkFkZEV2ZW50OjpuYW1lKToKKyAgICAgICAg
KE1lc3NhZ2VzOjpXZWJQYWdlOjpBZGRFdmVudDo6QWRkRXZlbnQpOgorICAgICAgICAoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkFkZEV2ZW50Ojphcmd1bWVudHMgY29uc3QpOgorICAgICAgICAoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkxvYWRTb21ldGhpbmdFbHNlOjpuYW1lKToKKyAgICAgICAgKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpMb2FkU29tZXRoaW5nRWxzZTo6TG9hZFNvbWV0aGluZ0Vsc2UpOgorICAgICAg
ICAoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRTb21ldGhpbmdFbHNlOjphcmd1bWVudHMgY29uc3Qp
OgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbjo6
bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVjZWl2ZVBvbGljeURlY2lz
aW9uOjpEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24pOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBh
Z2U6OkRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbjo6YXJndW1lbnRzIGNvbnN0KToKKyAgICAgICAg
KE1lc3NhZ2VzOjpXZWJQYWdlOjpDbG9zZTo6bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6V2Vi
UGFnZTo6Q2xvc2U6OmFyZ3VtZW50cyBjb25zdCk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFn
ZTo6UHJlZmVyZW5jZXNEaWRDaGFuZ2U6Om5hbWUpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBh
Z2U6OlByZWZlcmVuY2VzRGlkQ2hhbmdlOjpQcmVmZXJlbmNlc0RpZENoYW5nZSk6CisgICAgICAg
IChNZXNzYWdlczo6V2ViUGFnZTo6UHJlZmVyZW5jZXNEaWRDaGFuZ2U6OmFyZ3VtZW50cyBjb25z
dCk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6U2VuZERvdWJsZUFuZEZsb2F0OjpuYW1l
KToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZW5kRG91YmxlQW5kRmxvYXQ6OlNlbmRE
b3VibGVBbmRGbG9hdCk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6U2VuZERvdWJsZUFu
ZEZsb2F0Ojphcmd1bWVudHMgY29uc3QpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlNl
bmRJbnRzOjpuYW1lKToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZW5kSW50czo6U2Vu
ZEludHMpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlNlbmRJbnRzOjphcmd1bWVudHMg
Y29uc3QpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OkNyZWF0ZVBsdWdpbjo6bmFtZSk6
CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6Q3JlYXRlUGx1Z2luOjpDcmVhdGVQbHVnaW4p
OgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OkNyZWF0ZVBsdWdpbjo6YXJndW1lbnRzIGNv
bnN0KToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpSdW5KYXZhU2NyaXB0QWxlcnQ6Om5h
bWUpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlJ1bkphdmFTY3JpcHRBbGVydDo6UnVu
SmF2YVNjcmlwdEFsZXJ0KToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpSdW5KYXZhU2Ny
aXB0QWxlcnQ6OmFyZ3VtZW50cyBjb25zdCk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6
R2V0UGx1Z2luczo6bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6R2V0UGx1Z2lu
czo6R2V0UGx1Z2lucyk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6R2V0UGx1Z2luczo6
YXJndW1lbnRzIGNvbnN0KToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRQbHVnaW5Q
cm9jZXNzQ29ubmVjdGlvbjo6bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6R2V0
UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKToKKyAg
ICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6YXJn
dW1lbnRzIGNvbnN0KToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0TXVsdGlwbGVB
dHRyaWJ1dGVzOjpuYW1lKToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0TXVsdGlw
bGVBdHRyaWJ1dGVzOjphcmd1bWVudHMgY29uc3QpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBh
Z2U6OlRlc3RQYXJhbWV0ZXJBdHRyaWJ1dGVzOjpuYW1lKToKKyAgICAgICAgKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpUZXN0UGFyYW1ldGVyQXR0cmlidXRlczo6VGVzdFBhcmFtZXRlckF0dHJpYnV0ZXMp
OgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RQYXJhbWV0ZXJBdHRyaWJ1dGVzOjph
cmd1bWVudHMgY29uc3QpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlRlbXBsYXRlVGVz
dDo6bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6VGVtcGxhdGVUZXN0OjpUZW1w
bGF0ZVRlc3QpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlRlbXBsYXRlVGVzdDo6YXJn
dW1lbnRzIGNvbnN0KToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRWaWRlb0xheWVy
SUQ6Om5hbWUpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFZpZGVvTGF5ZXJJRDo6
U2V0VmlkZW9MYXllcklEKToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRWaWRlb0xh
eWVySUQ6OmFyZ3VtZW50cyBjb25zdCk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6RGlk
Q3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb246Om5hbWUpOgorICAgICAgICAoTWVzc2FnZXM6Oldl
YlBhZ2U6OkRpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uOjpEaWRDcmVhdGVXZWJQcm9jZXNz
Q29ubmVjdGlvbik6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6RGlkQ3JlYXRlV2ViUHJv
Y2Vzc0Nvbm5lY3Rpb246OmFyZ3VtZW50cyBjb25zdCk6CisgICAgICAgIChNZXNzYWdlczo6V2Vi
UGFnZTo6SW50ZXJwcmV0S2V5RXZlbnQ6Om5hbWUpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBh
Z2U6OkludGVycHJldEtleUV2ZW50OjpJbnRlcnByZXRLZXlFdmVudCk6CisgICAgICAgIChNZXNz
YWdlczo6V2ViUGFnZTo6SW50ZXJwcmV0S2V5RXZlbnQ6OmFyZ3VtZW50cyBjb25zdCk6CisgICAg
ICAgIChNZXNzYWdlczo6V2ViUGFnZTo6RGVwcmVjYXRlZE9wZXJhdGlvbjo6bmFtZSk6CisgICAg
ICAgIChNZXNzYWdlczo6V2ViUGFnZTo6RGVwcmVjYXRlZE9wZXJhdGlvbjo6RGVwcmVjYXRlZE9w
ZXJhdGlvbik6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6RGVwcmVjYXRlZE9wZXJhdGlv
bjo6YXJndW1lbnRzIGNvbnN0KToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpFeHBlcmlt
ZW50YWxPcGVyYXRpb246Om5hbWUpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OkV4cGVy
aW1lbnRhbE9wZXJhdGlvbjo6RXhwZXJpbWVudGFsT3BlcmF0aW9uKToKKyAgICAgICAgKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpFeHBlcmltZW50YWxPcGVyYXRpb246OmFyZ3VtZW50cyBjb25zdCk6Cisg
ICAgICAgICogU2NyaXB0cy93ZWJraXQvdGVzdC1sZWdhY3lNZXNzYWdlc1JlcGxpZXMuaDogQWRk
ZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXQvdGVzdC1tZXNzYWdlcy5pbjogUmVtb3ZlZC4K
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0LXN1cGVyY2xhc3MtbWVzc2FnZXMuaW46IFJl
bW92ZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXQvdGVzdC1zdXBlcmNsYXNzLm1lc3NhZ2Vz
LmluOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3Qtc3VwZXJj
bGFzcy1tZXNzYWdlcy5pbi4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0LXN1cGVyY2xh
c3NNZXNzYWdlUmVjZWl2ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdl
OjpUZXN0QXN5bmNNZXNzYWdlOjpjYWxsUmVwbHkpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBh
Z2U6OlRlc3RBc3luY01lc3NhZ2U6OmNhbmNlbFJlcGx5KToKKyAgICAgICAgKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpUZXN0QXN5bmNNZXNzYWdlOjpzZW5kKToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpUZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJndW1lbnRzOjpjYWxsUmVwbHkpOgorICAgICAg
ICAoTWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RBc3luY01lc3NhZ2VXaXRoTm9Bcmd1bWVudHM6OmNh
bmNlbFJlcGx5KToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0QXN5bmNNZXNzYWdl
V2l0aE5vQXJndW1lbnRzOjpzZW5kKToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0
QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1lbnRzOjpjYWxsUmVwbHkpOgorICAgICAgICAo
TWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RBc3luY01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHM6
OmNhbmNlbFJlcGx5KToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0QXN5bmNNZXNz
YWdlV2l0aE11bHRpcGxlQXJndW1lbnRzOjpzZW5kKToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpUZXN0U3luY01lc3NhZ2U6OnNlbmQpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6
OlRlc3RTeW5jaHJvbm91c01lc3NhZ2U6OnNlbmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRpZFJlY2Vp
dmVTeW5jTWVzc2FnZSk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvdGVzdC1zdXBlcmNsYXNz
TWVzc2FnZXMuaDogQWRkZWQuCisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6bWVzc2FnZVJl
Y2VpdmVyTmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFVSTDo6bmFtZSk6
CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFVSTDo6TG9hZFVSTCk6CisgICAgICAg
IChNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFVSTDo6YXJndW1lbnRzIGNvbnN0KToKKyAgICAgICAg
KE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0QXN5bmNNZXNzYWdlOjpuYW1lKToKKyAgICAgICAgKE1l
c3NhZ2VzOjpXZWJQYWdlOjpUZXN0QXN5bmNNZXNzYWdlOjphc3luY01lc3NhZ2VSZXBseU5hbWUp
OgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RBc3luY01lc3NhZ2U6OlRlc3RBc3lu
Y01lc3NhZ2UpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RBc3luY01lc3NhZ2U6
OmFyZ3VtZW50cyBjb25zdCk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6VGVzdEFzeW5j
TWVzc2FnZVdpdGhOb0FyZ3VtZW50czo6bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFn
ZTo6VGVzdEFzeW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50czo6YXN5bmNNZXNzYWdlUmVwbHlOYW1l
KToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJn
dW1lbnRzOjphcmd1bWVudHMgY29uc3QpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlRl
c3RBc3luY01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHM6Om5hbWUpOgorICAgICAgICAoTWVz
c2FnZXM6OldlYlBhZ2U6OlRlc3RBc3luY01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHM6OmFz
eW5jTWVzc2FnZVJlcGx5TmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6VGVzdEFz
eW5jTWVzc2FnZVdpdGhNdWx0aXBsZUFyZ3VtZW50czo6YXJndW1lbnRzIGNvbnN0KToKKyAgICAg
ICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0U3luY01lc3NhZ2U6Om5hbWUpOgorICAgICAgICAo
TWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RTeW5jTWVzc2FnZTo6VGVzdFN5bmNNZXNzYWdlKToKKyAg
ICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0U3luY01lc3NhZ2U6OmFyZ3VtZW50cyBjb25z
dCk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6VGVzdFN5bmNocm9ub3VzTWVzc2FnZTo6
bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6VGVzdFN5bmNocm9ub3VzTWVzc2Fn
ZTo6VGVzdFN5bmNocm9ub3VzTWVzc2FnZSk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6
VGVzdFN5bmNocm9ub3VzTWVzc2FnZTo6YXJndW1lbnRzIGNvbnN0KToKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdC90ZXN0LXN1cGVyY2xhc3NNZXNzYWdlc1JlcGxpZXMuaDogQWRkZWQuCisgICAg
ICAgICogU2NyaXB0cy93ZWJraXQvdGVzdC5tZXNzYWdlcy5pbjogQWRkZWQuCisgICAgICAgICog
U2NyaXB0cy93ZWJraXQvdGVzdE1lc3NhZ2VSZWNlaXZlci5jcHA6IEFkZGVkLgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0L3Rlc3RNZXNzYWdlcy5oOiBBZGRlZC4KKyAgICAgICAgKE1lc3NhZ2Vz
OjpOb25lOjptZXNzYWdlUmVjZWl2ZXJOYW1lKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC90
ZXN0TWVzc2FnZXNSZXBsaWVzLmg6IEFkZGVkLgorICAgICAgICAqIFNoYXJlZC9BcHBsZVBheS9X
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5oOgorICAgICAgICAqIFNoYXJlZC9BcHBsZVBheS9j
b2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6fldlYlBheW1l
bnRDb29yZGluYXRvclByb3h5KToKKyAgICAgICAgKiBTaGFyZWQvQXV4aWxpYXJ5UHJvY2Vzcy5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkF1eGlsaWFyeVByb2Nlc3M6OmFkZE1lc3NhZ2VSZWNlaXZl
cik6CisgICAgICAgIChXZWJLaXQ6OkF1eGlsaWFyeVByb2Nlc3M6OnJlbW92ZU1lc3NhZ2VSZWNl
aXZlcik6CisgICAgICAgIChXZWJLaXQ6OkF1eGlsaWFyeVByb2Nlc3M6OmRpZFJlY2VpdmVJbnZh
bGlkTWVzc2FnZSk6CisgICAgICAgICogU2hhcmVkL0F1eGlsaWFyeVByb2Nlc3MuaDoKKyAgICAg
ICAgKFdlYktpdDo6QXV4aWxpYXJ5UHJvY2Vzczo6YWRkTWVzc2FnZVJlY2VpdmVyKToKKyAgICAg
ICAgKFdlYktpdDo6QXV4aWxpYXJ5UHJvY2Vzczo6cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKToKKyAg
ICAgICAgKiBTaGFyZWQvQ29jb2EvQXV4aWxpYXJ5UHJvY2Vzc0NvY29hLm1tOgorICAgICAgICAo
V2ViS2l0OjpBdXhpbGlhcnlQcm9jZXNzOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UpOgorICAg
ICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0F1eGlsaWFyeVBy
b2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkF1eGlsaWFyeVByb2Nlc3NQcm94eTo6
YWRkTWVzc2FnZVJlY2VpdmVyKToKKyAgICAgICAgKFdlYktpdDo6QXV4aWxpYXJ5UHJvY2Vzc1By
b3h5OjpyZW1vdmVNZXNzYWdlUmVjZWl2ZXIpOgorICAgICAgICAoV2ViS2l0OjpBdXhpbGlhcnlQ
cm9jZXNzUHJveHk6OmxvZ0ludmFsaWRNZXNzYWdlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV4
aWxpYXJ5UHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OkF1eGlsaWFyeVByb2Nlc3NQ
cm94eTo6YWRkTWVzc2FnZVJlY2VpdmVyKToKKyAgICAgICAgKFdlYktpdDo6QXV4aWxpYXJ5UHJv
Y2Vzc1Byb3h5OjpyZW1vdmVNZXNzYWdlUmVjZWl2ZXIpOgorICAgICAgICAoV2ViS2l0OjpBdXhp
bGlhcnlQcm9jZXNzUHJveHk6OnNlbmQpOgorICAgICAgICAoV2ViS2l0OjpBdXhpbGlhcnlQcm9j
ZXNzUHJveHk6OnNlbmRXaXRoQXN5bmNSZXBseSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29h
L1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29j
b2EvV2ViUGFnZVByb3h5Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
cGF5bWVudENvb3JkaW5hdG9yQWRkTWVzc2FnZVJlY2VpdmVyKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpwYXltZW50Q29vcmRpbmF0b3JSZW1vdmVNZXNzYWdlUmVj
ZWl2ZXIpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6R1BVUHJvY2Vzc1Byb3h5OjpkaWRSZWNlaXZlSW52YWxp
ZE1lc3NhZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5Lmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2Fn
ZSk6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NQcm94eTo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdl
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjptZXNz
YWdlTmFtZXNUb0lnbm9yZVdoaWxlU3VzcGVuZGVkKToKKyAgICAgICAgKFdlYktpdDo6U3VzcGVu
ZGVkUGFnZVByb3h5OjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2Up
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6YWRkTWVzc2FnZVJlY2VpdmVyKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnJlbW92ZU1lc3NhZ2VSZWNlaXZlcik6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94
eTo6c2hvdWxkU2VuZFBlbmRpbmdNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Byb3h5OjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29u
bmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OkdQVVByb2Nlc3NDb25uZWN0aW9uOjpkaWRS
ZWNlaXZlSW52YWxpZE1lc3NhZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL0dQVVByb2Nl
c3NDb25uZWN0aW9uLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVj
dG9yLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUkuaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZl
SW52YWxpZE1lc3NhZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJv
Y2Vzc0Nvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzQ29ubmVj
dGlvbjo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6dXBkYXRlUmVuZGVyaW5n
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZSk6CisKIDIwMjAtMDQtMjcgIEJyZW50IEZ1
bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgRm9sbG93LXVwIGNoYW5nZSBh
ZnRlciByMjYwNzk4LgpJbmRleDogU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQu
eGNmaWxlbGlzdAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91
dHB1dC54Y2ZpbGVsaXN0CShyZXZpc2lvbiAyNjA3NjQpCisrKyBTb3VyY2UvV2ViS2l0L0Rlcml2
ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEsMzkx
IEBACiAjIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQgYnkgdGhlIGdlbmVyYXRlLXhjZmlsZWxpc3Rz
IHNjcmlwdC4KKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9V
c2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3Rl
bnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3NNZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2VzUmVw
bGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNl
cnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvR1BVUHJvY2Vzc01lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291
cmNlL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzTWVzc2FnZXMuaAorJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3Rl
bnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVVByb2Nlc3NN
ZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eU1lc3NhZ2VS
ZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQy
Ly9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHlNZXNzYWdlcy5oCisk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNo
cmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5TWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5z
ZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVB
dWRpb0Rlc3RpbmF0aW9uTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29k
ZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uTWFuYWdlck1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdl
ck1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9TZXNzaW9uUHJveHlNYW5hZ2VyTWVzc2Fn
ZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktp
dDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvblByb3h5TWFuYWdlck1lc3NhZ2VzLmgK
KyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4
Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1hbmFnZXJNZXNzYWdlc1JlcGxpZXMuaAorJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3Rl
bnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUF1ZGlvU2Vzc2lvblByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09w
ZW5Tb3VyY2UvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lv
blByb3h5TWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvblByb3h5TWVzc2FnZXNSZXBsaWVz
LmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9h
bGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVDRE1GYWN0b3J5UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2Vu
L2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RN
RmFjdG9yeVByb3h5TWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUZhY3RvcnlQcm94eU1lc3NhZ2VzUmVw
bGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNl
cnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0
ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVDRE1JbnN0YW5jZVByb3h5TWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2Uv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHlNZXNz
YWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktp
dDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5TWVzc2FnZVJlY2Vp
dmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1Vz
ZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5TWVzc2FnZXMuaAorJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3Rl
bnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5TWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29k
ZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94
eU1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eU1lc3NhZ2VzLmgKKyQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5z
ZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVD
RE1Qcm94eU1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5TWVz
c2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eU1lc3NhZ2VzLmgK
KyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4
Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHlNZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNl
bi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxl
Z2FjeUNETVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3Vy
Y2UvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5TWVz
c2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1Vz
ZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5TWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5z
ZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVM
ZWdhY3lDRE1TZXNzaW9uUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUv
T3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RN
U2Vzc2lvblByb3h5TWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eU1lc3Nh
Z2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0
Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHlNZXNzYWdlUmVjZWl2
ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNl
cnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHlNZXNzYWdlcy5oCiskKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVu
c2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHlNZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2Rl
L09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxh
eWVyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eU1lc3Nh
Z2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vy
cy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5TWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5z
ZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVN
ZWRpYVJlc291cmNlTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9P
cGVuU291cmNlL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291
cmNlTWFuYWdlck1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlck1lc3NhZ2Vz
UmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8v
VXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5TWVzc2FnZVJlY2Vp
dmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1Vz
ZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eU1lc3NhZ2VzLmgKKyQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hy
aXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9p
b3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHlNZXNzYWdlc1JlcGxpZXMuaAorJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3Rl
bnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJX
ZWJSVENDb2RlY3NQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVu
U291cmNlL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJv
eHlNZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0
Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5TWVzc2FnZXNSZXBsaWVzLmgKKyQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hy
aXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMv
UmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyTWVzc2FnZVJlY2VpdmVy
LmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJz
L2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXJNZXNzYWdl
cy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMv
YWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
d2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlck1lc3NhZ2Vz
UmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8v
VXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWVzc2FnZVJl
Y2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIv
L1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1lc3NhZ2Vz
LmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9h
bGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93
ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNZXNzYWdlc1JlcGxpZXMu
aAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2Fs
ZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dl
YnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0
ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVt
b3RlTWVkaWFSZWNvcmRlck1hbmFnZXJNZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNv
dXJjZS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXJN
YW5hZ2VyTWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlck1lc3NhZ2VSZWNl
aXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9V
c2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlck1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29k
ZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFS
ZWNvcmRlck1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
ck1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllck1hbmFnZXJNZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1h
bmFnZXJNZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJN
ZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1lc3Nh
Z2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vy
cy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWVzc2FnZXNSZXBsaWVzLmgK
KyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4
Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Q29va2llcy9XZWJDb29raWVNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9j
b2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Db29raWVzL1dlYkNv
b2tpZU1hbmFnZXJNZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlck1lc3NhZ2VzUmVw
bGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNl
cnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0N1c3RvbVByb3RvY29scy9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJNZXNzYWdl
UmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0
Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJN
ZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8v
VXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJNZXNz
YWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktp
dDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9JbmRleGVkREIvV2ViSURCU2VydmVyTWVzc2FnZVJlY2VpdmVyLmNwcAor
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhj
aHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9J
bmRleGVkREIvV2ViSURCU2VydmVyTWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3Vy
Y2UvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9JbmRleGVkREIvV2ViSURCU2VydmVyTWVz
c2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJL
aXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlUmVjZWl2
ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNl
cnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2FnZXMuaAorJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNl
bi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3Bl
blNvdXJjZS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb250ZW50UnVsZUxp
c3RNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2Uv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdl
ck1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQy
Ly9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXJNZXNzYWdlc1JlcGxpZXMu
aAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2Fs
ZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzc01lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVu
U291cmNlL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NNZXNzYWdl
cy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMv
YWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzTWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVu
U291cmNlL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVy
TWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXJNZXNzYWdlcy5oCiskKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlz
dGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRlck1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNv
dXJjZS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsTWVz
c2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5lbE1lc3NhZ2VzLmgKKyQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5z
ZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nv
Y2tldENoYW5uZWxNZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2Uv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtTWVzc2FnZVJl
Y2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIv
L1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtTWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2Rl
L09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3Ry
ZWFtTWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
TWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2tN
ZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8v
VXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFza01lc3NhZ2VzUmVw
bGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNl
cnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVy
LmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJz
L2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbk1lc3NhZ2VzLmgKKyQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0
ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb25NZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNl
bi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAKKyQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hy
aXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25NZXNzYWdlcy5oCiskKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlz
dGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTWVzc2FnZXNSZXBsaWVzLmgK
KyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4
Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
V2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlclNldE1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5z
ZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFn
ZS9TdG9yYWdlTWFuYWdlclNldE1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNl
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlclNl
dE1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb25NZXNz
YWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
S2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb25NZXNzYWdl
cy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMv
YWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb25NZXNzYWdlc1JlcGxpZXMuaAor
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhj
aHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93
ZWJydGMvTmV0d29ya01ETlNSZWdpc3Rlck1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4v
Y29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdv
cmtNRE5TUmVnaXN0ZXJNZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrTUROU1JlZ2lzdGVyTWVzc2Fn
ZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQy
Ly9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENNb25pdG9yTWVzc2FnZVJlY2VpdmVyLmNwcAor
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhj
aHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93
ZWJydGMvTmV0d29ya1JUQ01vbml0b3JNZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNv
dXJjZS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDTW9uaXRv
ck1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXJNZXNzYWdlUmVjZWl2
ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNl
cnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXJNZXNzYWdlcy5oCiskKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2Nv
ZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3Jr
UlRDUHJvdmlkZXJNZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2Uv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1NvY2tldE1lc3Nh
Z2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJL
aXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENTb2NrZXRNZXNzYWdlcy5oCiskKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVu
c2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9O
ZXR3b3JrUlRDU29ja2V0TWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291
cmNlL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHlNZXNz
YWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
S2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0
L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5TWVzc2FnZXMuaAorJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNl
bi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRy
b2xsZXJQcm94eU1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9T
b3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vzc01lc3NhZ2VSZWNlaXZlci5j
cHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9h
bGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vz
cy9QbHVnaW5Qcm9jZXNzTWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291
cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1BsdWdpblByb2Nlc3NNZXNzYWdlc1JlcGxpZXMuaAor
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhj
aHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1dl
YlByb2Nlc3NDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09w
ZW5Tb3VyY2UvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9u
TWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIv
L1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9QbHVn
aW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uTWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5z
ZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9SZW1vdGVP
YmplY3RSZWdpc3RyeU1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291
cmNlL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9SZW1vdGVPYmplY3RSZWdpc3RyeU1l
c3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9V
c2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FQSS9Db2NvYS9SZW1vdGVPYmplY3RSZWdpc3RyeU1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVu
c2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9P
cGVuU291cmNlL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5TWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dl
YktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlNZXNzYWdlc1Jl
cGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1Vz
ZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9TaGFyZWQv
QXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcAor
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhj
aHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGlj
YXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyTWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09w
ZW5Tb3VyY2UvU291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRp
b25NYW5hZ2VyTWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0F1eGlsaWFyeVByb2Nlc3NNZXNzYWdlUmVjZWl2ZXIuY3BwCisk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNo
cmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXhpbGlhcnlQ
cm9jZXNzTWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktp
dC9TaGFyZWQvQXV4aWxpYXJ5UHJvY2Vzc01lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2Nv
ZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL05QT2JqZWN0TWVzc2Fn
ZVJlY2VpdmVyTWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2Uv
U291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OUE9iamVjdE1lc3NhZ2VSZWNlaXZlck1lc3Nh
Z2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vy
cy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Bs
dWdpbnMvTlBPYmplY3RNZXNzYWdlUmVjZWl2ZXJNZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNl
bi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29ubmVjdGlvbk1lc3Nh
Z2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJL
aXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkNvbm5lY3Rpb25NZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJj
ZS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb25uZWN0aW9uTWVzc2FnZXNSZXBsaWVzLmgKKyQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hy
aXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRp
b24vV2ViQXV0b21hdGlvblNlc3Npb25NZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2Nv
ZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9t
YXRpb25TZXNzaW9uTWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbk1lc3NhZ2Vz
UmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8v
VXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3Bw
CiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxl
eGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHlNZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUv
T3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF5YmFja1Nlc3Npb25N
YW5hZ2VyUHJveHlNZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2Uv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94
eU1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHlNZXNzYWdl
cy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMv
YWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5TWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0
ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVv
RnVsbHNjcmVlbk1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29k
ZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVl
bk1hbmFnZXJQcm94eU1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eU1lc3Nh
Z2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0
Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0
ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9E
b3dubG9hZFByb3h5TWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHlNZXNzYWdlc1JlcGxpZXMu
aAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2Fs
ZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRHJh
d2luZ0FyZWFQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291
cmNlL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHlNZXNzYWdlcy5oCisk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNo
cmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EcmF3aW5n
QXJlYVByb3h5TWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHlNZXNzYWdlUmVjZWl2ZXIu
Y3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMv
YWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9H
UFUvR1BVUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2Uv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eU1lc3NhZ2VzUmVwbGll
cy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMv
YWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9J
bnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlz
dGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Iv
UmVtb3RlV2ViSW5zcGVjdG9yUHJveHlNZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNv
dXJjZS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9y
UHJveHlNZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclByb3h5TWVzc2FnZVJlY2Vp
dmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1Vz
ZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclByb3h5TWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2Rl
L09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3Rv
clByb3h5TWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL01lZGlhL0F1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yUHJv
eHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9NZWRpYS9BdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvclByb3h5
TWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIv
L1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTWVkaWEvQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3JQcm94eU1lc3NhZ2VzUmVw
bGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNl
cnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94
eU1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0xlZ2FjeUN1c3RvbVByb3Rv
Y29sTWFuYWdlclByb3h5TWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9t
UHJvdG9jb2xNYW5hZ2VyUHJveHlNZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09w
ZW5Tb3VyY2UvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5TWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaAor
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhj
aHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5TWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9P
cGVuU291cmNlL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1By
b3h5TWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHlNZXNzYWdlcy5oCisk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNo
cmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblByb2Nlc3NQcm94eU1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3Bl
blNvdXJjZS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5
ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29k
ZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1v
dGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09w
ZW5Tb3VyY2UvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxh
eWVyVHJlZURyYXdpbmdBcmVhUHJveHlNZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2Rl
L09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNv
bnRlbnRDb250cm9sbGVyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUv
T3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29u
dGVudENvbnRyb2xsZXJQcm94eU1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNl
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJv
bGxlclByb3h5TWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlck1lc3NhZ2VSZWNlaXZl
ci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vy
cy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1ZpZXdHZXN0dXJlQ29udHJvbGxlck1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291
cmNlL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlck1lc3NhZ2Vz
UmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8v
VXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9WaXNpdGVkTGlua1N0b3JlTWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2Rl
L09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlzaXRlZExpbmtTdG9yZU1lc3Nh
Z2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vy
cy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1Zpc2l0ZWRMaW5rU3RvcmVNZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5T
b3VyY2UvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVu
dGljYXRvckNvb3JkaW5hdG9yUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2Nv
ZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9X
ZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eU1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29k
ZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dl
YkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5TWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5z
ZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFn
ZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eU1lc3NhZ2VzLmgKKyQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hy
aXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkNvb2tp
ZU1hbmFnZXJQcm94eU1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJj
ZS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5TWVzc2Fn
ZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktp
dDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eU1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4v
Y29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZ1bGxTY3JlZW5NYW5h
Z2VyUHJveHlNZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHlNZXNzYWdlUmVj
ZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8v
VXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eU1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29k
ZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdl
clByb3h5TWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0
ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eU1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQy
Ly9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eU1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3Bl
blNvdXJjZS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHlNZXNzYWdl
UmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0
Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHlNZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3Bl
blNvdXJjZS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHlNZXNzYWdl
c1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIv
L1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Bvb2xNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUv
T3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbE1lc3NhZ2Vz
LmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9h
bGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sTWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNl
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eU1lc3NhZ2VSZWNlaXZlci5j
cHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9h
bGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQcm94eU1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eU1lc3NhZ2VzUmVwbGllcy5oCiskKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlz
dGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRWRpdGFi
bGVJbWFnZUNvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3Bl
blNvdXJjZS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRWRpdGFibGVJbWFnZUNvbnRyb2xs
ZXJNZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0
Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvRWRpdGFibGVJbWFnZUNvbnRyb2xsZXJNZXNzYWdlc1JlcGxpZXMuaAorJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJp
c3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1NtYXJ0
TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2Nv
ZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvU21hcnRNYWduaWZpY2F0
aW9uQ29udHJvbGxlck1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9TbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyTWVzc2Fn
ZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQy
Ly9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyUHJveHlNZXNzYWdl
UmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0
Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlclByb3h5TWVzc2Fn
ZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJz
L2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94eU1lc3NhZ2VzUmVwbGll
cy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMv
YWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9t
YWMvU2VjSXRlbVNoaW1Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9P
cGVuU291cmNlL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9TZWNJdGVtU2hpbVByb3h5TWVz
c2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1Vz
ZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL1NlY0l0ZW1TaGltUHJveHlNZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2Rl
L09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRD
b29yZGluYXRvck1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNl
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JN
ZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8v
VXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yTWVzc2FnZXNSZXBsaWVzLmgKKyQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hy
aXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0
aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVu
c2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9X
ZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5TWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5T
b3VyY2UvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNl
c3Npb25Qcm94eU1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJDb25uZWN0
aW9uVG9TZXJ2ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJj
ZS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJDb25u
ZWN0aW9uVG9TZXJ2ZXJNZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJDb25uZWN0aW9u
VG9TZXJ2ZXJNZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0Z1bGxTY3JlZW4vV2ViRnVsbFNjcmVlbk1hbmFnZXJNZXNz
YWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
S2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvRnVsbFNjcmVlbi9XZWJGdWxsU2NyZWVuTWFuYWdlck1lc3NhZ2VzLmgKKyQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hy
aXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9GdWxsU2Ny
ZWVuL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyTWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29k
ZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5l
Y3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uTWVzc2FnZXMuaAor
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhj
aHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9H
UFVQcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3Bl
blNvdXJjZS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRl
cmluZ0JhY2tlbmRNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJj
ZS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRNZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
S2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRNZXNzYWdlc1Jl
cGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1Vz
ZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGVNZXNzYWdlUmVjZWl2ZXIuY3Bw
CiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxl
eGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZU1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29k
ZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlTWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291
cmNlL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5h
dGlvblByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2Uv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9u
UHJveHlNZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
S2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eU1lc3NhZ2Vz
UmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8v
VXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvbk1lc3NhZ2VSZWNlaXZlci5jcHAKKyQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hy
aXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlQXVkaW9TZXNzaW9uTWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3Vy
Y2UvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb1Nlc3Npb25N
ZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25NZXNzYWdlUmVj
ZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8v
VXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2VzLmgKKyQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0
ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uTWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29k
ZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVn
YWN5Q0RNU2Vzc2lvbk1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291
cmNlL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vz
c2lvbk1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJL
aXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbk1lc3NhZ2VzUmVwbGll
cy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMv
YWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAKKyQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hy
aXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyTWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09w
ZW5Tb3VyY2UvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBs
YXllck1hbmFnZXJNZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2Uv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9u
SGVscGVyTWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVs
cGVyTWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktp
dDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyTWVzc2FnZXNS
ZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9V
c2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjc01lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0
ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRj
L0xpYldlYlJUQ0NvZGVjc01lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjc01lc3NhZ2Vz
UmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8v
VXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL3dlYnJ0Yy9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNZXNzYWdlUmVjZWl2ZXIu
Y3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMv
YWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL3dlYnJ0Yy9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNZXNzYWdlcy5oCiskKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2Vu
L2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXJNZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09w
ZW5Tb3VyY2UvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0
aW9uTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNl
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFn
ZXJNZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0
Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyTWVzc2FnZXNSZXBsaWVz
LmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9h
bGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yVUlNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVu
c2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1Jl
bW90ZVdlYkluc3BlY3RvclVJTWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2Uv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JVSU1l
c3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
S2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvckludGVycnVwdERpc3BhdGNoZXJNZXNz
YWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
S2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvckludGVycnVwdERpc3BhdGNoZXJNZXNz
YWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNl
cnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvckludGVycnVwdERpc3BhdGNoZXJNZXNzYWdlc1JlcGxp
ZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJz
L2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luc3BlY3Rvci9XZWJJbnNwZWN0b3JNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2Nv
ZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3Bl
Y3Rvck1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJL
aXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yTWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0
ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3Iv
V2ViSW5zcGVjdG9yVUlNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNv
dXJjZS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJTWVz
c2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1Vz
ZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSU1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2Vu
L2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3Bl
blNvdXJjZS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb25NZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlc1Jl
cGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1Vz
ZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVu
c2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJS
ZXNvdXJjZUxvYWRlck1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyTWVzc2FnZXNSZXBs
aWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vy
cy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWxNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2Vu
L2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2Nr
ZXRDaGFubmVsTWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbE1lc3NhZ2VzUmVwbGllcy5o
CiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxl
eGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9XZWJTb2NrZXRTdHJlYW1NZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUv
T3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJl
YW1NZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0
Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW1NZXNzYWdlc1JlcGxpZXMuaAorJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3Rl
bnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2Vi
cnRjL1dlYk1ETlNSZWdpc3Rlck1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9P
cGVuU291cmNlL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJNRE5T
UmVnaXN0ZXJNZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvV2ViTUROU1JlZ2lzdGVyTWVzc2FnZXNSZXBs
aWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vy
cy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL3dlYnJ0Yy9XZWJSVENNb25pdG9yTWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3Rl
bnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2Vi
cnRjL1dlYlJUQ01vbml0b3JNZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvV2ViUlRDTW9uaXRvck1lc3Nh
Z2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0
Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay93ZWJydGMvV2ViUlRDUmVzb2x2ZXJNZXNzYWdlUmVjZWl2ZXIuY3Bw
CiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxl
eGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay93ZWJydGMvV2ViUlRDUmVzb2x2ZXJNZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3Bl
blNvdXJjZS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvV2ViUlRDUmVz
b2x2ZXJNZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1dlYlJUQ1NvY2tldE1lc3NhZ2VSZWNl
aXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9V
c2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJSVENTb2NrZXRNZXNzYWdlcy5oCiskKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2Nv
ZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvV2Vi
UlRDU29ja2V0TWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFn
ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVz
c2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1Vz
ZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VzUmVwbGllcy5o
CiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxl
eGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCisk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNo
cmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXJNZXNzYWdlcy5oCiskKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2Nv
ZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9j
ZXNzQ29ubmVjdGlvbk1hbmFnZXJNZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09w
ZW5Tb3VyY2UvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nv
bm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1l
c3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9V
c2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWVzc2FnZXNSZXBsaWVzLmgKKyQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hy
aXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3Vy
Y2UvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHlNZXNzYWdlcy5o
CiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxl
eGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5Qcm94eU1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNv
dXJjZS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rp
b25NZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb25NZXNzYWdlcy5o
CiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxl
eGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb25NZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9j
b2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUv
T3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uTWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJNZXNz
YWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
S2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyTWVzc2FnZXMu
aAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2Fs
ZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Vz
ZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlck1lc3NhZ2VzUmVwbGllcy5oCiskKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlz
dGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlck1lc3NhZ2VSZWNlaXZlci5j
cHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9h
bGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyTWVzc2FnZXMu
aAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2Fs
ZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJNZXNzYWdlc1Jl
cGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1Vz
ZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvQ29jb2EvVGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5TWVzc2FnZVJlY2Vp
dmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1Vz
ZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvQ29jb2EvVGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5TWVzc2FnZXMuaAor
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhj
aHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvQ29jb2EvVGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5TWVzc2FnZXNSZXBsaWVzLmgKKyQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hy
aXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L0RyYXdpbmdBcmVhTWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3Vy
Y2UvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWFNZXNzYWdlcy5o
CiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxl
eGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9EcmF3aW5nQXJlYU1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNv
dXJjZS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXJNZXNz
YWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
S2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXJNZXNzYWdlcy5oCiskKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2Vu
L2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERp
c3BhdGNoZXJNZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9s
bGluZ0Nvb3JkaW5hdG9yTWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5T
b3VyY2UvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1Jl
bW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yTWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5T
b3VyY2UvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1Jl
bW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yTWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29k
ZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJl
R2VvbWV0cnlDb2xsZWN0b3JNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3Bl
blNvdXJjZS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21l
dHJ5Q29sbGVjdG9yTWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvck1l
c3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
S2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3VXBkYXRlRGlzcGF0Y2hlck1lc3NhZ2VSZWNlaXZlci5j
cHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9h
bGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1ZpZXdVcGRhdGVEaXNwYXRjaGVyTWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09w
ZW5Tb3VyY2UvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld1VwZGF0ZURpc3Bh
dGNoZXJNZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXJNZXNz
YWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
S2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9WaXNpdGVkTGlua1RhYmxlQ29udHJvbGxlck1lc3NhZ2VzLmgK
KyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4
Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1Zpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVyTWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5z
ZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2VNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlTWVzc2FnZXMuaAorJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9j
b2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZU1l
c3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
S2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzc01lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29k
ZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzTWVzc2FnZXMu
aAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2Fs
ZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlByb2Nlc3NNZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXBNZXNzYWdlUmVj
ZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8v
VXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcE1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29k
ZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VB
cmVhTWFwTWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJLaXQyLy9Vc2Vycy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyTWVzc2FnZVJl
Y2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIv
L1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2RlL09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL2NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJNZXNzYWdlcy5oCiskKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2Vu
L2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUGxheWJhY2tT
ZXNzaW9uTWFuYWdlck1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJj
ZS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJN
ZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJNZXNzYWdlcy5oCisk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNo
cmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2Ev
VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJNZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvL1VzZXJzL2FsZXhjaHJpc3RlbnNlbi9jb2Rl
L09wZW5Tb3VyY2UvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVl
bk1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViS2l0Mi8vVXNlcnMvYWxleGNocmlzdGVuc2VuL2NvZGUvT3BlblNvdXJjZS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlck1lc3Nh
Z2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyLy9Vc2Vy
cy9hbGV4Y2hyaXN0ZW5zZW4vY29kZS9PcGVuU291cmNlL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyTWVzc2FnZXNSZXBsaWVzLmgKICQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL0F1ZGlvU2Vzc2lvblJvdXRpbmdB
cmJpdHJhdG9yUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9BdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvclByb3h5
TWVzc2FnZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIv
QXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3JQcm94eU1lc3NhZ2VzUmVwbGllcy5oCkBAIC02
Myw2ICs0NTAsNyBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViCiAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9NZWRpYVBsYXllclBy
aXZhdGVSZW1vdGVNZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViS2l0Mi9NZWRpYVBsYXllclByaXZhdGVSZW1vdGVNZXNzYWdlcy5oCiAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9NZWRpYVBsYXllclBy
aXZhdGVSZW1vdGVNZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYktpdDIvTWVzc2FnZU5hbWVzLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvTlBPYmplY3RNZXNzYWdlUmVjZWl2ZXJNZXNzYWdlUmVj
ZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9O
UE9iamVjdE1lc3NhZ2VSZWNlaXZlck1lc3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJLaXQyL05QT2JqZWN0TWVzc2FnZVJlY2VpdmVyTWVzc2FnZXNSZXBs
aWVzLmgKSW5kZXg6IFNvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHJldmlzaW9uIDI2MDc2NCkK
KysrIFNvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQkod29ya2luZyBjb3B5KQpAQCAt
MTEyLDEzNCArMTEyLDEzNSBAQCBlbHNlCiBlbmRpZgogCiBNRVNTQUdFX1JFQ0VJVkVSUyA9IFwK
LQlBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvclByb3h5IFwKLSAgICBBdXRoZW50aWNhdGlv
bk1hbmFnZXIgXAotICAgIEF1eGlsaWFyeVByb2Nlc3MgXAotICAgIENhY2hlU3RvcmFnZUVuZ2lu
ZUNvbm5lY3Rpb24gXAotICAgIERvd25sb2FkUHJveHkgXAotICAgIERyYXdpbmdBcmVhIFwKLSAg
ICBEcmF3aW5nQXJlYVByb3h5IFwKLSAgICBFZGl0YWJsZUltYWdlQ29udHJvbGxlciBcCi0gICAg
RXZlbnREaXNwYXRjaGVyIFwKLSAgICBHUFVQcm9jZXNzIFwKLSAgICBHUFVQcm9jZXNzUHJveHkg
XAotICAgIEdQVVByb2Nlc3NDb25uZWN0aW9uIFwKLSAgICBHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzIFwKLSAgICBMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIgXAotICAgIExlZ2FjeUN1c3Rv
bVByb3RvY29sTWFuYWdlclByb3h5IFwKLSAgICBMaWJXZWJSVENDb2RlY3MgXAotICAgIExpYldl
YlJUQ0NvZGVjc1Byb3h5IFwKLSAgICBNZWRpYVBsYXllclByaXZhdGVSZW1vdGUgXAotICAgIE5Q
T2JqZWN0TWVzc2FnZVJlY2VpdmVyIFwKLSAgICBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cyBcCi0gICAgTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIgXAotICAgIE5ldHdvcmtNRE5T
UmVnaXN0ZXJcCi0gICAgTmV0d29ya1Byb2Nlc3MgXAotICAgIE5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbiBcCi0gICAgTmV0d29ya1Byb2Nlc3NQcm94eSBcCi0gICAgTmV0d29ya1JUQ01vbml0b3Ig
XAotICAgIE5ldHdvcmtSVENQcm92aWRlciBcCi0gICAgTmV0d29ya1JUQ1NvY2tldCBcCi0gICAg
TmV0d29ya1Jlc291cmNlTG9hZGVyIFwKLSAgICBOZXR3b3JrU29ja2V0Q2hhbm5lbCBcCi0gICAg
TmV0d29ya1NvY2tldFN0cmVhbSBcCi0gICAgUGxheWJhY2tTZXNzaW9uTWFuYWdlciBcCi0gICAg
UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5IFwKLSAgICBQbHVnaW5Db250cm9sbGVyUHJveHkg
XAotICAgIFBsdWdpblByb2Nlc3MgXAotICAgIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uIFwKLSAg
ICBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIgXAotICAgIFBsdWdpblByb2Nlc3NQcm94
eSBcCi0gICAgUGx1Z2luUHJveHkgXAotICAgIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2Vy
IFwKLSAgICBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkgXAotICAgIFJlbW90ZUF1ZGlvU2Vz
c2lvbiBcCi0gICAgUmVtb3RlQXVkaW9TZXNzaW9uUHJveHkgXAotICAgIFJlbW90ZUF1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlciBcCi0gICAgUmVtb3RlQXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXIgXAotICAgIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkgXAot
ICAgIFJlbW90ZUNETVByb3h5IFwKLSAgICBSZW1vdGVDRE1GYWN0b3J5UHJveHkgXAotICAgIFJl
bW90ZUNETUluc3RhbmNlUHJveHkgXAotICAgIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbiBcCi0g
ICAgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkgXAotICAgIFJlbW90ZUxlZ2FjeUNETVBy
b3h5IFwKLSAgICBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkgXAotICAgIFJlbW90ZUxlZ2Fj
eUNETVNlc3Npb24gXAotICAgIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eSBcCi0gICAgUmVt
b3RlTWVkaWFQbGF5ZXJNYW5hZ2VyIFwKLSAgICBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94
eSBcCi0gICAgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eSBcCi0gICAgUmVtb3RlTWVkaWFSZWNvcmRl
ciBcCi0gICAgUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXIgXAotICAgIFJlbW90ZU1lZGlhUmVz
b3VyY2VNYW5hZ2VyIFwKLSAgICBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIgXAotICAgIFJlbW90
ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5IFwKLSAgICBSZW1vdGVPYmplY3RSZWdpc3RyeSBcCi0g
ICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZCBcCi0gICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5IFwKLSAgICBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgXAotICAgIFJlbW90ZVNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIgXAotICAgIFJlbW90ZVNjcm9sbGluZ0Nvb3Jk
aW5hdG9yIFwKLSAgICBSZW1vdGVXZWJJbnNwZWN0b3JQcm94eSBcCi0gICAgUmVtb3RlV2ViSW5z
cGVjdG9yVUkgXAotICAgIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciBcCi0gICAgU2VjSXRlbVNo
aW1Qcm94eSBcCi0gICAgU2VydmljZVdvcmtlckZldGNoVGFzayBcCi0gICAgU21hcnRNYWduaWZp
Y2F0aW9uQ29udHJvbGxlciBcCi0gICAgU3RvcmFnZUFyZWFNYXAgXAotICAgIFN0b3JhZ2VNYW5h
Z2VyU2V0IFwKLSAgICBUZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHkgXAotICAgIFVzZXJNZWRp
YUNhcHR1cmVNYW5hZ2VyIFwKLSAgICBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5IFwKLSAg
ICBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyIFwKLSAgICBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJv
eHkgXAotICAgIFZpZXdHZXN0dXJlQ29udHJvbGxlciBcCi0gICAgVmlld0dlc3R1cmVHZW9tZXRy
eUNvbGxlY3RvciBcCi0gICAgVmlld1VwZGF0ZURpc3BhdGNoZXIgXAotICAgIFZpc2l0ZWRMaW5r
U3RvcmUgXAotICAgIFZpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVyIFwKLSAgICBXZWJBdXRoZW50
aWNhdG9yQ29vcmRpbmF0b3JQcm94eSBcCi0gICAgV2ViQXV0b21hdGlvblNlc3Npb24gXAotICAg
IFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkgXAotICAgIFdlYkNvbm5lY3Rpb24gXAotICAgIFdl
YkNvb2tpZU1hbmFnZXIgXAotICAgIFdlYkNvb2tpZU1hbmFnZXJQcm94eSBcCi0gICAgV2ViRnVs
bFNjcmVlbk1hbmFnZXIgXAotICAgIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkgXAotICAgIFdl
Ykdlb2xvY2F0aW9uTWFuYWdlciBcCi0gICAgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkgXAot
ICAgIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlciBcCi0gICAgV2ViSURCU2VydmVyIFwKLSAgICBX
ZWJJbnNwZWN0b3IgXAotICAgIFdlYkluc3BlY3RvckludGVycnVwdERpc3BhdGNoZXIgXAotICAg
IFdlYkluc3BlY3RvclByb3h5IFwKLSAgICBXZWJJbnNwZWN0b3JVSSBcCi0gICAgV2ViTUROU1Jl
Z2lzdGVyXAotICAgIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXIgXAotICAgIFdlYlBhZ2UgXAotICAg
IFdlYlBhZ2VQcm94eSBcCi0gICAgV2ViUGFzdGVib2FyZFByb3h5IFwKLSAgICBXZWJQYXltZW50
Q29vcmRpbmF0b3IgXAotICAgIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5IFwKLSAgICBXZWJQ
cm9jZXNzIFwKLSAgICBXZWJQcm9jZXNzQ29ubmVjdGlvbiBcCi0gICAgV2ViUHJvY2Vzc1Bvb2wg
XAotICAgIFdlYlByb2Nlc3NQcm94eSBcCi0gICAgV2ViUlRDTW9uaXRvciBcCi0gICAgV2ViUlRD
UmVzb2x2ZXIgXAotICAgIFdlYlJUQ1NvY2tldCBcCi0gICAgV2ViUmVzb3VyY2VMb2FkZXIgXAot
ICAgIFdlYlNXQ2xpZW50Q29ubmVjdGlvbiBcCi0gICAgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb24gXAotICAgIFdlYlNXU2VydmVyQ29ubmVjdGlvbiBcCi0gICAgV2ViU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uIFwKLSAgICBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVy
IFwKLSAgICBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyUHJveHkgXAotICAgIFdl
YlNvY2tldENoYW5uZWwgXAotICAgIFdlYlNvY2tldFN0cmVhbSBcCi0gICAgV2ViVXNlckNvbnRl
bnRDb250cm9sbGVyIFwKLSAgICBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSBcCisJJChX
ZWJLaXQyKS9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBcCisJ
JChXZWJLaXQyKS9OZXR3b3JrUHJvY2Vzcy9JbmRleGVkREIvV2ViSURCU2VydmVyIFwKKwkkKFdl
YktpdDIpL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyIFwKKwkk
KFdlYktpdDIpL05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXJTZXQgXAor
CSQoV2ViS2l0MikvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVj
dGlvbiBcCisJJChXZWJLaXQyKS9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvTGVnYWN5
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyIFwKKwkkKFdlYktpdDIpL05ldHdvcmtQcm9jZXNzL05ldHdv
cmtTb2NrZXRDaGFubmVsIFwKKwkkKFdlYktpdDIpL05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uIFwKKwkkKFdlYktpdDIpL05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzayBcCisJJChXZWJLaXQyKS9OZXR3b3Jr
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiBcCisJ
JChXZWJLaXQyKS9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtIFwKKwkkKFdlYktp
dDIpL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzIFwKKwkkKFdlYktpdDIpL05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlciBcCisJJChXZWJLaXQyKS9OZXR3b3JrUHJvY2Vz
cy93ZWJydGMvTmV0d29ya01ETlNSZWdpc3RlciBcCisJJChXZWJLaXQyKS9OZXR3b3JrUHJvY2Vz
cy93ZWJydGMvTmV0d29ya1JUQ1NvY2tldCBcCisJJChXZWJLaXQyKS9OZXR3b3JrUHJvY2Vzcy93
ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyIFwKKwkkKFdlYktpdDIpL05ldHdvcmtQcm9jZXNzL3dl
YnJ0Yy9OZXR3b3JrUlRDTW9uaXRvciBcCisJJChXZWJLaXQyKS9OZXR3b3JrUHJvY2Vzcy9Db29r
aWVzL1dlYkNvb2tpZU1hbmFnZXIgXAorCSQoV2ViS2l0MikvU2hhcmVkL1BsdWdpbnMvTlBPYmpl
Y3RNZXNzYWdlUmVjZWl2ZXIgXAorCSQoV2ViS2l0MikvU2hhcmVkL0F1eGlsaWFyeVByb2Nlc3Mg
XAorCSQoV2ViS2l0MikvU2hhcmVkL0FQSS9Db2NvYS9SZW1vdGVPYmplY3RSZWdpc3RyeSBcCisJ
JChXZWJLaXQyKS9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkgXAor
CSQoV2ViS2l0MikvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlciBc
CisJJChXZWJLaXQyKS9TaGFyZWQvV2ViQ29ubmVjdGlvbiBcCisJJChXZWJLaXQyKS9VSVByb2Nl
c3MvV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eSBcCisJJChXZWJLaXQyKS9VSVByb2Nlc3MvUmVt
b3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkgXAorCSQoV2ViS2l0
MikvVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkgXAorCSQoV2ViS2l0MikvVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5IFwKKwkk
KFdlYktpdDIpL1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkgXAorCSQoV2ViS2l0MikvVUlQ
cm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5IFwKKwkkKFdl
YktpdDIpL1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yUHJveHkgXAorCSQoV2ViS2l0
MikvVUlQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eSBcCisJJChXZWJL
aXQyKS9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkgXAorCSQoV2ViS2l0Mikv
VUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkgXAorCSQoV2ViS2l0MikvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eSBcCisJJChXZWJLaXQyKS9VSVByb2Nlc3MvTmV0d29yay9D
dXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkgXAorCSQoV2Vi
S2l0MikvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eSBcCisJJChXZWJLaXQyKS9VSVByb2Nlc3MvVmlz
aXRlZExpbmtTdG9yZSBcCisJJChXZWJLaXQyKS9VSVByb2Nlc3MvaW9zL1dlYkRldmljZU9yaWVu
dGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94eSBcCisJJChXZWJLaXQyKS9VSVByb2Nlc3MvaW9zL0Vk
aXRhYmxlSW1hZ2VDb250cm9sbGVyIFwKKwkkKFdlYktpdDIpL1VJUHJvY2Vzcy9pb3MvU21hcnRN
YWduaWZpY2F0aW9uQ29udHJvbGxlciBcCisJJChXZWJLaXQyKS9VSVByb2Nlc3MvbWFjL1NlY0l0
ZW1TaGltUHJveHkgXAorCSQoV2ViS2l0MikvVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdl
clByb3h5IFwKKwkkKFdlYktpdDIpL1VJUHJvY2Vzcy9Db2NvYS9QbGF5YmFja1Nlc3Npb25NYW5h
Z2VyUHJveHkgXAorCSQoV2ViS2l0MikvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1h
bmFnZXJQcm94eSBcCisJJChXZWJLaXQyKS9VSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVy
ZU1hbmFnZXJQcm94eSBcCisJJChXZWJLaXQyKS9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclBy
b3h5IFwKKwkkKFdlYktpdDIpL1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIgXAorCSQo
V2ViS2l0MikvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eSBcCisJJChXZWJLaXQyKS9VSVByb2Nl
c3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbiBcCisJJChXZWJLaXQyKS9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wgXAorCSQoV2ViS2l0MikvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3du
bG9hZFByb3h5IFwKKwkkKFdlYktpdDIpL1VJUHJvY2Vzcy9NZWRpYS9BdWRpb1Nlc3Npb25Sb3V0
aW5nQXJiaXRyYXRvclByb3h5IFwKKwkkKFdlYktpdDIpL1dlYlByb2Nlc3MvRGF0YWJhc2VzL0lu
ZGV4ZWREQi9XZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIgXAorCSQoV2ViS2l0MikvV2ViUHJvY2Vz
cy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24gXAorCSQoV2ViS2l0MikvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZCBcCisJJChXZWJLaXQyKS9XZWJQcm9jZXNz
L0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzIFwKKwkkKFdlYktpdDIpL1dlYlByb2Nlc3MvR1BV
L3dlYnJ0Yy9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgXAorCSQoV2ViS2l0MikvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlIFwKKwkkKFdlYktpdDIpL1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbiBcCisJJChXZWJLaXQyKS9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uIFwKKwkkKFdlYktpdDIp
L1dlYlByb2Nlc3MvR1BVL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIgXAorCSQo
V2ViS2l0MikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyIFwK
KwkkKFdlYktpdDIpL1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Q
cm94eSBcCisJJChXZWJLaXQyKS9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb1Nlc3Np
b24gXAorCSQoV2ViS2l0MikvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwIFwK
KwkkKFdlYktpdDIpL1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyIFwKKwkkKFdlYktpdDIpL1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvckludGVy
cnVwdERpc3BhdGNoZXIgXAorCSQoV2ViS2l0MikvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5z
cGVjdG9yVUkgXAorCSQoV2ViS2l0MikvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9y
IFwKKwkkKFdlYktpdDIpL1dlYlByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclVJ
IFwKKwkkKFdlYktpdDIpL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlv
bk1hbmFnZXIgXAorCSQoV2ViS2l0MikvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5IFwK
KwkkKFdlYktpdDIpL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbiBc
CisJJChXZWJLaXQyKS9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbCBcCisJJChX
ZWJLaXQyKS9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uIFwKKwkk
KFdlYktpdDIpL1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0gXAorCSQoV2ViS2l0
MikvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyIFwKKwkkKFdlYktpdDIpL1dl
YlByb2Nlc3MvTmV0d29yay93ZWJydGMvV2ViUlRDU29ja2V0IFwKKwkkKFdlYktpdDIpL1dlYlBy
b2Nlc3MvTmV0d29yay93ZWJydGMvV2ViUlRDTW9uaXRvciBcCisJJChXZWJLaXQyKS9XZWJQcm9j
ZXNzL05ldHdvcmsvd2VicnRjL1dlYk1ETlNSZWdpc3RlciBcCisJJChXZWJLaXQyKS9XZWJQcm9j
ZXNzL05ldHdvcmsvd2VicnRjL1dlYlJUQ1Jlc29sdmVyIFwKKwkkKFdlYktpdDIpL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlciBcCisJ
JChXZWJLaXQyKS9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b24gXAorCSQoV2ViS2l0MikvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlv
biBcCisJJChXZWJLaXQyKS9XZWJQcm9jZXNzL1dlYlByb2Nlc3MgXAorCSQoV2ViS2l0MikvV2Vi
UHJvY2Vzcy9jb2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyIFwKKwkkKFdlYktpdDIpL1dlYlBy
b2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIgXAorCSQoV2ViS2l0MikvV2ViUHJv
Y2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyIFwKKwkkKFdlYktpdDIpL1dlYlByb2Nl
c3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyIFwKKwkkKFdlYktpdDIpL1dlYlBy
b2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5IFwKKwkkKFdlYktpdDIp
L1dlYlByb2Nlc3MvRnVsbFNjcmVlbi9XZWJGdWxsU2NyZWVuTWFuYWdlciBcCisJJChXZWJLaXQy
KS9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvciBcCisJJChXZWJLaXQy
KS9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlciBcCisJJChX
ZWJLaXQyKS9XZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVyIFwKKwkkKFdlYktpdDIp
L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRp
bmF0b3IgXAorCSQoV2ViS2l0MikvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0
cnlDb2xsZWN0b3IgXAorCSQoV2ViS2l0MikvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVh
IFwKKwkkKFdlYktpdDIpL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlIFwKKwkkKFdlYktpdDIp
L1dlYlByb2Nlc3MvV2ViUGFnZS9WaXNpdGVkTGlua1RhYmxlQ29udHJvbGxlciBcCisJJChXZWJL
aXQyKS9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvVGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5
IFwKKwkkKFdlYktpdDIpL1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3VXBkYXRlRGlzcGF0Y2hlciBc
CisJJChXZWJLaXQyKS9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uIFwKKwkkKFdl
YktpdDIpL1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5IFwKKwkkKFdlYktpdDIp
L1BsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2VzcyBcCisJJChXZWJLaXQyKS9HUFVQcm9jZXNzL0dQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgXAorCSQoV2ViS2l0MikvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkgXAorCSQoV2ViS2l0MikvR1BVUHJvY2Vzcy93
ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkgXAorCSQoV2ViS2l0MikvR1BVUHJvY2Vzcy93ZWJy
dGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlciBcCisJJChXZWJLaXQyKS9H
UFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFn
ZXIgXAorCSQoV2ViS2l0MikvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlck1h
bmFnZXIgXAorCSQoV2ViS2l0MikvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyIFwKKwkkKFdlYktpdDIpL0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlh
UmVjb3JkZXIgXAorCSQoV2ViS2l0MikvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlQXVkaW9NZWRp
YVN0cmVhbVRyYWNrUmVuZGVyZXIgXAorCSQoV2ViS2l0MikvR1BVUHJvY2Vzcy9HUFVQcm9jZXNz
IFwKKwkkKFdlYktpdDIpL0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblBy
b3h5IFwKKwkkKFdlYktpdDIpL0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9TZXNzaW9uUHJv
eHlNYW5hZ2VyIFwKKwkkKFdlYktpdDIpL0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RN
RmFjdG9yeVByb3h5IFwKKwkkKFdlYktpdDIpL0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9T
ZXNzaW9uUHJveHkgXAorCSQoV2ViS2l0MikvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb25Qcm94eSBcCisJJChXZWJLaXQyKS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNE
TVByb3h5IFwKKwkkKFdlYktpdDIpL0dQVVByb2Nlc3MvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vz
c2lvbkhlbHBlclByb3h5IFwKKwkkKFdlYktpdDIpL0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVk
aWFQbGF5ZXJQcm94eSBcCisJJChXZWJLaXQyKS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUZh
Y3RvcnlQcm94eSBcCisJJChXZWJLaXQyKS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVz
b3VyY2VNYW5hZ2VyIFwKKwkkKFdlYktpdDIpL0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5z
dGFuY2VQcm94eSBcCisJJChXZWJLaXQyKS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNE
TVByb3h5IFwKKwkkKFdlYktpdDIpL0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyUHJveHkgXAorCSQoV2ViS2l0MikvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uTWFuYWdlciBcCiAjCiAKIFNDUklQVFMgPSBcCkBAIC0yNTUsMTUgKzI1NiwxNSBA
QCBIRUFERVJfRkxBR1MgPSAkKHNoZWxsIGVjaG8gJChCVUlMVF9QUk9ECiAKIC5QSE9OWSA6IGFs
bAogCi1hbGwgOiBcCi0gICAgJChNRVNTQUdFX1JFQ0VJVkVSUzolPSVNZXNzYWdlUmVjZWl2ZXIu
Y3BwKSBcCi0gICAgJChNRVNTQUdFX1JFQ0VJVkVSUzolPSVNZXNzYWdlcy5oKSBcCi0gICAgJChN
RVNTQUdFX1JFQ0VJVkVSUzolPSVNZXNzYWdlc1JlcGxpZXMuaCkgXAorYWxsIDogTWVzc2FnZU5h
bWVzLmggTWVzc2FnZU5hbWVzLmNwcCBcCisgICAgJCgkKG5vdGRpciBNRVNTQUdFX1JFQ0VJVkVS
Uyk6JT0lTWVzc2FnZVJlY2VpdmVyLmNwcCkgXAorICAgICQoJChub3RkaXIgTUVTU0FHRV9SRUNF
SVZFUlMpOiU9JU1lc3NhZ2VzLmgpIFwKKyAgICAkKCQobm90ZGlyIE1FU1NBR0VfUkVDRUlWRVJT
KTolPSVNZXNzYWdlc1JlcGxpZXMuaCkgXAogIwogCi0lTWVzc2FnZVJlY2VpdmVyLmNwcCAlTWVz
c2FnZXMuaCAlTWVzc2FnZXNSZXBsaWVzLmggOiAlLm1lc3NhZ2VzLmluICQoU0NSSVBUUykKLQlA
ZWNobyBHZW5lcmF0aW5nIG1lc3NhZ2UgcmVjZWl2ZXIgZm9yICQqLi4uCi0JQHB5dGhvbiAkKFdl
YktpdDIpL1NjcmlwdHMvZ2VuZXJhdGUtbWVzc2FnZS1yZWNlaXZlci5weSAkPCAtLWltcGxlbWVu
dGF0aW9uICQqTWVzc2FnZVJlY2VpdmVyLmNwcCAtLWhlYWRlciAkKk1lc3NhZ2VzLmggLS1yZXBs
eS1oZWFkZXIgJCpNZXNzYWdlc1JlcGxpZXMuaAorJCgkKG5vdGRpciBNRVNTQUdFX1JFQ0VJVkVS
Uyk6JT0lTWVzc2FnZVJlY2VpdmVyLmNwcCkgJCgkKG5vdGRpciBNRVNTQUdFX1JFQ0VJVkVSUyk6
JT0lTWVzc2FnZXMuaCkgJCgkKG5vdGRpciBNRVNTQUdFX1JFQ0VJVkVSUyk6JT0lTWVzc2FnZXNS
ZXBsaWVzLmgpOiBNZXNzYWdlTmFtZXMuY3BwCitNZXNzYWdlTmFtZXMuY3BwOiAkKGFkZHN1ZmZp
eCAubWVzc2FnZXMuaW4sJChNRVNTQUdFX1JFQ0VJVkVSUykpICQoU0NSSVBUUykKKwlAcHl0aG9u
ICQoV2ViS2l0MikvU2NyaXB0cy9nZW5lcmF0ZS1tZXNzYWdlLXJlY2VpdmVyLnB5ICQoTUVTU0FH
RV9SRUNFSVZFUlMpCiAKIFRFWFRfUFJFUFJPQ0VTU09SX0ZMQUdTPS1FIC1QIC13CiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1NvdXJjZXNDb2NvYS50eHQJKHJldmlzaW9uIDI2MDc2NCkKKysrIFNvdXJjZS9XZWJLaXQv
U291cmNlc0NvY29hLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNjU3LDYgKzY1Nyw3IEBAIEdQVVBy
b2Nlc3NQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKIEdQVVByb2Nlc3NNZXNzYWdlUmVjZWl2ZXIu
Y3BwCiBMaWJXZWJSVENDb2RlY3NQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKIExpYldlYlJUQ0Nv
ZGVjc01lc3NhZ2VSZWNlaXZlci5jcHAKK01lc3NhZ2VOYW1lcy5jcHAKIFJlbW90ZUF1ZGlvRGVz
dGluYXRpb25NYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcAogUmVtb3RlQXVkaW9EZXN0aW5hdGlv
blByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAogUmVtb3RlQXVkaW9TZXNzaW9uTWVzc2FnZVJlY2Vp
dmVyLmNwcApJbmRleDogU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAkocmV2aXNpb24gMjYwNzY0KQorKysgU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMTQsOCArMTE0LDggQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIExvZ2dlciYg
bG9nZ2VyKCkgZmluYWwgeyByZXR1cm4gbV9wcm9jZXNzLmxvZ2dlcigpOyB9Ci0gICAgdm9pZCBh
ZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFt
ZSwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImIHJlY2VpdmVyKSBmaW5hbCB7IH0KLSAgICB2b2lkIHJl
bW92ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJO
YW1lKSBmaW5hbCB7IH0KKyAgICB2b2lkIGFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlJlY2VpdmVy
TmFtZSwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImKSBmaW5hbCB7IH0KKyAgICB2b2lkIHJlbW92ZU1l
c3NhZ2VSZWNlaXZlcihJUEM6OlJlY2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1lKSBmaW5h
bCB7IH0KICAgICBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24oKSBmaW5hbCB7IHJldHVybiBt
X3Byb2Nlc3MuY29ubmVjdGlvbigpOyB9CiAgICAgYm9vbCB3aWxsU3RhcnRDYXB0dXJlKENhcHR1
cmVEZXZpY2U6OkRldmljZVR5cGUgdHlwZSkgY29uc3QgZmluYWwKICAgICB7CkBAIC0xODUsOSAr
MTg1LDkgQEAgTG9nZ2VyJiBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpsb2dnZQogICAgIHJl
dHVybiAqbV9sb2dnZXI7CiB9CiAKLXZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlk
UmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpT
dHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpTdHJpbmdSZWZlcmVuY2Ug
bWVzc2FnZU5hbWUpCit2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVJ
bnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6TWVzc2FnZU5h
bWUgbWVzc2FnZU5hbWUpCiB7Ci0gICAgV1RGTG9nQWx3YXlzKCJSZWNlaXZlZCBhbiBpbnZhbGlk
IG1lc3NhZ2UgXCIlcy4lc1wiIGZyb20gdGhlIHdlYiBwcm9jZXNzLlxuIiwgbWVzc2FnZVJlY2Vp
dmVyTmFtZS50b1N0cmluZygpLmRhdGEoKSwgbWVzc2FnZU5hbWUudG9TdHJpbmcoKS5kYXRhKCkp
OworICAgIFdURkxvZ0Fsd2F5cygiUmVjZWl2ZWQgYW4gaW52YWxpZCBtZXNzYWdlIFwiJXNcIiBm
cm9tIHRoZSB3ZWIgcHJvY2Vzcy5cbiIsIGRlc2NyaXB0aW9uKG1lc3NhZ2VOYW1lKSk7CiAgICAg
Q1JBU0goKTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCShyZXZpc2lvbiAyNjA3NjQpCisrKyBTb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xNDQsNyArMTQ0LDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIElQQzo6Q29ubmVjdGlv
bjo6Q2xpZW50CiAgICAgdm9pZCBkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mKSBmaW5hbDsKLSAg
ICB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OlN0
cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBt
ZXNzYWdlTmFtZSkgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlTmFtZSkgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNl
aXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKICAgICB2
b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXIm
LCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIGZpbmFsOwogCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcAkocmV2aXNpb24gMjYwNzY0KQorKysgU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI2NCw3ICsyNjQsNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpkaWRSCiAgICAgICAgIHJldHVybiBwYXltZW50Q29vcmRpbmF0b3IoKS5kaWRSZWNlaXZl
TWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKICNlbmRpZgogCi0gICAgV1RGTG9nQWx3YXlz
KCJVbmhhbmRsZWQgbmV0d29yayBwcm9jZXNzIG1lc3NhZ2UgJyVzOiVzJyIsIGRlY29kZXIubWVz
c2FnZVJlY2VpdmVyTmFtZSgpLnRvU3RyaW5nKCkuZGF0YSgpLCBkZWNvZGVyLm1lc3NhZ2VOYW1l
KCkudG9TdHJpbmcoKS5kYXRhKCkpOworICAgIFdURkxvZ0Fsd2F5cygiVW5oYW5kbGVkIG5ldHdv
cmsgcHJvY2VzcyBtZXNzYWdlICclcyciLCBkZXNjcmlwdGlvbihkZWNvZGVyLm1lc3NhZ2VOYW1l
KCkpKTsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIApAQCAtMzA3LDcgKzMwNyw3IEBA
IHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFIKICAgICAgICAgcmV0dXJu
IHBheW1lbnRDb29yZGluYXRvcigpLmRpZFJlY2VpdmVTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBk
ZWNvZGVyLCByZXBseSk7CiAjZW5kaWYKIAotICAgIFdURkxvZ0Fsd2F5cygiVW5oYW5kbGVkIG5l
dHdvcmsgcHJvY2VzcyBtZXNzYWdlICclczolcyciLCBkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5h
bWUoKS50b1N0cmluZygpLmRhdGEoKSwgZGVjb2Rlci5tZXNzYWdlTmFtZSgpLnRvU3RyaW5nKCku
ZGF0YSgpKTsKKyAgICBXVEZMb2dBbHdheXMoIlVuaGFuZGxlZCBuZXR3b3JrIHByb2Nlc3MgbWVz
c2FnZSAnJXMnIiwgZGVzY3JpcHRpb24oZGVjb2Rlci5tZXNzYWdlTmFtZSgpKSk7CiAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKQEAgLTM1Niw5ICszNTYsOSBAQCB2b2lkIE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRDCiAjZW5kaWYKIH0KIAotdm9pZCBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIElQQzo6U3Ry
aW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVz
c2FnZU5hbWUgbWVzc2FnZU5hbWUpCiB7Ci0gICAgUkVMRUFTRV9MT0dfRkFVTFQoSVBDLCAiUmVj
ZWl2ZWQgYW4gaW52YWxpZCBtZXNzYWdlICclIiBQVUJMSUNfTE9HX1NUUklORyAiOjolIiBQVUJM
SUNfTE9HX1NUUklORyAiJyBmcm9tIFdlYkNvbnRlbnQgcHJvY2VzcyAlIiBQUkl1NjQgIiwgcmVx
dWVzdGluZyBmb3IgaXQgdG8gYmUgdGVybWluYXRlZC4iLCBtZXNzYWdlUmVjZWl2ZXJOYW1lLnRv
U3RyaW5nKCkuZGF0YSgpLCBtZXNzYWdlTmFtZS50b1N0cmluZygpLmRhdGEoKSwgbV93ZWJQcm9j
ZXNzSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBSRUxFQVNFX0xPR19GQVVMVChJUEMsICJS
ZWNlaXZlZCBhbiBpbnZhbGlkIG1lc3NhZ2UgJyUiIFBVQkxJQ19MT0dfU1RSSU5HICInIGZyb20g
V2ViQ29udGVudCBwcm9jZXNzICUiIFBSSXU2NCAiLCByZXF1ZXN0aW5nIGZvciBpdCB0byBiZSB0
ZXJtaW5hdGVkLiIsIGRlc2NyaXB0aW9uKG1lc3NhZ2VOYW1lKSwgbV93ZWJQcm9jZXNzSWRlbnRp
Zmllci50b1VJbnQ2NCgpKTsKICAgICBtX25ldHdvcmtQcm9jZXNzLT5wYXJlbnRQcm9jZXNzQ29u
bmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpUZXJtaW5hdGVX
ZWJQcm9jZXNzKG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIpLCAwKTsKIH0KIApJbmRleDogU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuaAkocmV2aXNpb24gMjYwNzY0KQorKysgU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xODYsNyArMTg2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlk
UmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6
dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRDbG9zZShJ
UEM6OkNvbm5lY3Rpb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2
ZXJOYW1lLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZSkgb3ZlcnJpZGU7CisgICAg
dm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNz
YWdlTmFtZSkgb3ZlcnJpZGU7CiAKICAgICAvLyBNZXNzYWdlIGhhbmRsZXJzLgogICAgIHZvaWQg
ZGlkUmVjZWl2ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mLCBJUEM6OkRlY29kZXImKTsKQEAgLTMyNiw4ICszMjYsNiBAQCBwcml2YXRlOgogICAg
IGNvbnN0IFN0cmluZyYgcGF5bWVudENvb3JkaW5hdG9yU291cmNlQXBwbGljYXRpb25CdW5kbGVJ
ZGVudGlmaWVyKGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JikgZmluYWw7CiAgICAg
Y29uc3QgU3RyaW5nJiBwYXltZW50Q29vcmRpbmF0b3JTb3VyY2VBcHBsaWNhdGlvblNlY29uZGFy
eUlkZW50aWZpZXIoY29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmKSBmaW5hbDsKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8UGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXI+IHBheW1lbnRD
b29yZGluYXRvckF1dGhvcml6YXRpb25QcmVzZW50ZXIoV2ViUGF5bWVudENvb3JkaW5hdG9yUHJv
eHkmLCBQS1BheW1lbnRSZXF1ZXN0ICopIGZpbmFsOwotICAgIHZvaWQgcGF5bWVudENvb3JkaW5h
dG9yQWRkTWVzc2FnZVJlY2VpdmVyKFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JiwgY29uc3Qg
SVBDOjpTdHJpbmdSZWZlcmVuY2UmLCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYpIGZpbmFsOwotICAg
IHZvaWQgcGF5bWVudENvb3JkaW5hdG9yUmVtb3ZlTWVzc2FnZVJlY2VpdmVyKFdlYlBheW1lbnRD
b29yZGluYXRvclByb3h5JiwgY29uc3QgSVBDOjpTdHJpbmdSZWZlcmVuY2UmKSBmaW5hbDsKICNl
bmRpZgogCiAgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOwpJbmRleDogU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAJKHJldmlz
aW9uIDI2MDc5MSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTcsNyArMjE3LDcgQEAgdm9pZCBOZXR3b3JrUHJv
Y2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSQogewogICAgIEFTU0VSVChwYXJlbnRQcm9jZXNzQ29u
bmVjdGlvbigpID09ICZjb25uZWN0aW9uKTsKICAgICBpZiAocGFyZW50UHJvY2Vzc0Nvbm5lY3Rp
b24oKSAhPSAmY29ubmVjdGlvbikgewotICAgICAgICBXVEZMb2dBbHdheXMoIklnbm9yZWQgbWVz
c2FnZSAnJXM6JXMnIGJlY2F1c2UgaXQgZGlkIG5vdCBjb21lIGZyb20gdGhlIFVJUHJvY2VzcyAo
ZGVzdGluYXRpb246ICUiIFBSSXU2NCAiKSIsIGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgp
LnRvU3RyaW5nKCkuZGF0YSgpLCBkZWNvZGVyLm1lc3NhZ2VOYW1lKCkudG9TdHJpbmcoKS5kYXRh
KCksIGRlY29kZXIuZGVzdGluYXRpb25JRCgpKTsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJJZ25v
cmVkIG1lc3NhZ2UgJyVzJyBiZWNhdXNlIGl0IGRpZCBub3QgY29tZSBmcm9tIHRoZSBVSVByb2Nl
c3MgKGRlc3RpbmF0aW9uOiAlIiBQUkl1NjQgIikiLCBkZXNjcmlwdGlvbihkZWNvZGVyLm1lc3Nh
Z2VOYW1lKCkpLCBkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSk7CiAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjQ0LDcgKzI0NCw3IEBAIHZv
aWQgTmV0d29ya1Byb2Nlc3M6OmRpZFJlY2VpdmVTeW5jTWVzc2EKIHsKICAgICBBU1NFUlQocGFy
ZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKSA9PSAmY29ubmVjdGlvbik7CiAgICAgaWYgKHBhcmVudFBy
b2Nlc3NDb25uZWN0aW9uKCkgIT0gJmNvbm5lY3Rpb24pIHsKLSAgICAgICAgV1RGTG9nQWx3YXlz
KCJJZ25vcmVkIG1lc3NhZ2UgJyVzOiVzJyBiZWNhdXNlIGl0IGRpZCBub3QgY29tZSBmcm9tIHRo
ZSBVSVByb2Nlc3MgKGRlc3RpbmF0aW9uOiAlIiBQUkl1NjQgIikiLCBkZWNvZGVyLm1lc3NhZ2VS
ZWNlaXZlck5hbWUoKS50b1N0cmluZygpLmRhdGEoKSwgZGVjb2Rlci5tZXNzYWdlTmFtZSgpLnRv
U3RyaW5nKCkuZGF0YSgpLCBkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSk7CisgICAgICAgIFdURkxv
Z0Fsd2F5cygiSWdub3JlZCBtZXNzYWdlICclcycgYmVjYXVzZSBpdCBkaWQgbm90IGNvbWUgZnJv
bSB0aGUgVUlQcm9jZXNzIChkZXN0aW5hdGlvbjogJSIgUFJJdTY0ICIpIiwgZGVzY3JpcHRpb24o
ZGVjb2Rlci5tZXNzYWdlTmFtZSgpKSwgZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpOwogICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KSW5kZXg6IFNv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzSU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvaW9z
L05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzSU9TLm1tCShyZXZpc2lvbiAyNjA3NjQpCisr
KyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzc0lPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtODUsMTQgKzg1LDYgQEAgc3RkOjp1bmlx
dWVfcHRyPFBheW1lbnRBdXRob3JpemF0aW9uUHJlcwogICAgIHJldHVybiBtYWtlVW5pcXVlPFBh
eW1lbnRBdXRob3JpemF0aW9uQ29udHJvbGxlcj4oY29vcmRpbmF0b3IsIHJlcXVlc3QpOwogfQog
Ci12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpwYXltZW50Q29vcmRpbmF0b3JB
ZGRNZXNzYWdlUmVjZWl2ZXIoV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmLCBjb25zdCBJUEM6
OlN0cmluZ1JlZmVyZW5jZSYsIElQQzo6TWVzc2FnZVJlY2VpdmVyJikKLXsKLX0KLQotdm9pZCBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cGF5bWVudENvb3JkaW5hdG9yUmVtb3ZlTWVz
c2FnZVJlY2VpdmVyKFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JiwgY29uc3QgSVBDOjpTdHJp
bmdSZWZlcmVuY2UmKQotewotfQotCiAjZW5kaWYgLy8gRU5BQkxFKEFQUExFX1BBWV9SRU1PVEVf
VUkpCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvQ29ubmVjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvQ29ubmVjdGlvbi5jcHAJKHJldmlzaW9uIDI2MDc2NCkKKysrIFNvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NCwyMSArNTQs
MTcgQEAgY29uc3Qgc2l6ZV90IG1heFBlbmRpbmdJbmNvbWluZ01lc3NhZ2VzSwogc3RkOjphdG9t
aWM8dW5zaWduZWQ+IFVuYm91bmRlZFN5bmNocm9ub3VzSVBDU2NvcGU6OnVuYm91bmRlZFN5bmNo
cm9ub3VzSVBDQ291bnQgPSAwOwogCiBzdHJ1Y3QgQ29ubmVjdGlvbjo6V2FpdEZvck1lc3NhZ2VT
dGF0ZSB7Ci0gICAgV2FpdEZvck1lc3NhZ2VTdGF0ZShTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJl
Y2VpdmVyTmFtZSwgU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lLCB1aW50NjRfdCBkZXN0aW5h
dGlvbklELCBPcHRpb25TZXQ8V2FpdEZvck9wdGlvbj4gd2FpdEZvck9wdGlvbnMpCi0gICAgICAg
IDogbWVzc2FnZVJlY2VpdmVyTmFtZShtZXNzYWdlUmVjZWl2ZXJOYW1lKQotICAgICAgICAsIG1l
c3NhZ2VOYW1lKG1lc3NhZ2VOYW1lKQorICAgIFdhaXRGb3JNZXNzYWdlU3RhdGUoTWVzc2FnZU5h
bWUgbWVzc2FnZU5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIE9wdGlvblNldDxXYWl0Rm9y
T3B0aW9uPiB3YWl0Rm9yT3B0aW9ucykKKyAgICAgICAgOiBtZXNzYWdlTmFtZShtZXNzYWdlTmFt
ZSkKICAgICAgICAgLCBkZXN0aW5hdGlvbklEKGRlc3RpbmF0aW9uSUQpCiAgICAgICAgICwgd2Fp
dEZvck9wdGlvbnMod2FpdEZvck9wdGlvbnMpCiAgICAgewogICAgIH0KIAotICAgIFN0cmluZ1Jl
ZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lOwotICAgIFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdl
TmFtZTsKKyAgICBNZXNzYWdlTmFtZSBtZXNzYWdlTmFtZTsKICAgICB1aW50NjRfdCBkZXN0aW5h
dGlvbklEOwotCiAgICAgT3B0aW9uU2V0PFdhaXRGb3JPcHRpb24+IHdhaXRGb3JPcHRpb25zOwog
ICAgIGJvb2wgbWVzc2FnZVdhaXRpbmdJbnRlcnJ1cHRlZCA9IGZhbHNlOwotCiAgICAgc3RkOjp1
bmlxdWVfcHRyPERlY29kZXI+IGRlY29kZXI7CiB9OwogCkBAIC0zMTUsMjMgKzMxMSwyMyBAQCB2
b2lkIENvbm5lY3Rpb246OnNldFNob3VsZEV4aXRPblN5bmNNZXNzCiAgICAgbV9zaG91bGRFeGl0
T25TeW5jTWVzc2FnZVNlbmRGYWlsdXJlID0gc2hvdWxkRXhpdE9uU3luY01lc3NhZ2VTZW5kRmFp
bHVyZTsKIH0KIAotdm9pZCBDb25uZWN0aW9uOjphZGRXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIo
U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIFdvcmtRdWV1ZSYgd29ya1F1ZXVl
LCBXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIqIHdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcikKK3Zv
aWQgQ29ubmVjdGlvbjo6YWRkV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKFJlY2VpdmVyTmFtZSBt
ZXNzYWdlUmVjZWl2ZXJOYW1lLCBXb3JrUXVldWUmIHdvcmtRdWV1ZSwgV29ya1F1ZXVlTWVzc2Fn
ZVJlY2VpdmVyKiB3b3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIpCiB7CiAgICAgQVNTRVJUKFJ1bkxv
b3A6OmlzTWFpbigpKTsKIAogICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV93b3JrUXVldWVN
ZXNzYWdlUmVjZWl2ZXJzTXV0ZXgpOwotICAgIEFTU0VSVCghbV93b3JrUXVldWVNZXNzYWdlUmVj
ZWl2ZXJzLmNvbnRhaW5zKG1lc3NhZ2VSZWNlaXZlck5hbWUpKTsKKyAgICBBU1NFUlQoIW1fd29y
a1F1ZXVlTWVzc2FnZVJlY2VpdmVycy5jb250YWlucyhzdGF0aWNfY2FzdDx1aW50OF90PihtZXNz
YWdlUmVjZWl2ZXJOYW1lKSkpOwogCi0gICAgbV93b3JrUXVldWVNZXNzYWdlUmVjZWl2ZXJzLmFk
ZChtZXNzYWdlUmVjZWl2ZXJOYW1lLCBzdGQ6Om1ha2VfcGFpcigmd29ya1F1ZXVlLCB3b3JrUXVl
dWVNZXNzYWdlUmVjZWl2ZXIpKTsKKyAgICBtX3dvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcnMuYWRk
KHN0YXRpY19jYXN0PHVpbnQ4X3Q+KG1lc3NhZ2VSZWNlaXZlck5hbWUpLCBzdGQ6Om1ha2VfcGFp
cigmd29ya1F1ZXVlLCB3b3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIpKTsKIH0KIAotdm9pZCBDb25u
ZWN0aW9uOjpyZW1vdmVXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIoU3RyaW5nUmVmZXJlbmNlIG1l
c3NhZ2VSZWNlaXZlck5hbWUpCit2b2lkIENvbm5lY3Rpb246OnJlbW92ZVdvcmtRdWV1ZU1lc3Nh
Z2VSZWNlaXZlcihSZWNlaXZlck5hbWUgbWVzc2FnZVJlY2VpdmVyTmFtZSkKIHsKICAgICBBU1NF
UlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3dv
cmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcnNNdXRleCk7Ci0gICAgQVNTRVJUKG1fd29ya1F1ZXVlTWVz
c2FnZVJlY2VpdmVycy5jb250YWlucyhtZXNzYWdlUmVjZWl2ZXJOYW1lKSk7Ci0gICAgbV93b3Jr
UXVldWVNZXNzYWdlUmVjZWl2ZXJzLnJlbW92ZShtZXNzYWdlUmVjZWl2ZXJOYW1lKTsKKyAgICBB
U1NFUlQobV93b3JrUXVldWVNZXNzYWdlUmVjZWl2ZXJzLmNvbnRhaW5zKHN0YXRpY19jYXN0PHVp
bnQ4X3Q+KG1lc3NhZ2VSZWNlaXZlck5hbWUpKSk7CisgICAgbV93b3JrUXVldWVNZXNzYWdlUmVj
ZWl2ZXJzLnJlbW92ZShzdGF0aWNfY2FzdDx1aW50OF90PihtZXNzYWdlUmVjZWl2ZXJOYW1lKSk7
CiB9CiAKIHZvaWQgQ29ubmVjdGlvbjo6ZGlzcGF0Y2hXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXJN
ZXNzYWdlKFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlciYgd29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVy
LCBEZWNvZGVyJiBkZWNvZGVyKQpAQCAtMzQ5LDcgKzM0NSw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6
ZGlzcGF0Y2hXb3JrUXVldWVNZXNzYWcKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1
dG8gcmVwbHlFbmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNvZGVyPigiSVBDIiwgIlN5bmNNZXNzYWdl
UmVwbHkiLCBzeW5jUmVxdWVzdElEKTsKKyAgICBhdXRvIHJlcGx5RW5jb2RlciA9IG1ha2VVbmlx
dWU8RW5jb2Rlcj4oTWVzc2FnZU5hbWU6OlN5bmNNZXNzYWdlUmVwbHksIHN5bmNSZXF1ZXN0SUQp
OwogCiAgICAgLy8gSGFuZCBvZmYgYm90aCB0aGUgZGVjb2RlciBhbmQgZW5jb2RlciB0byB0aGUg
d29yayBxdWV1ZSBtZXNzYWdlIHJlY2VpdmVyLgogICAgIHdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZl
ci5kaWRSZWNlaXZlU3luY01lc3NhZ2UoKnRoaXMsIGRlY29kZXIsIHJlcGx5RW5jb2Rlcik7CkBA
IC0zNjEsMjQgKzM1NywyNCBAQCB2b2lkIENvbm5lY3Rpb246OmRpc3BhdGNoV29ya1F1ZXVlTWVz
c2FnCiAgICAgICAgIHNlbmRTeW5jUmVwbHkoV1RGTW92ZShyZXBseUVuY29kZXIpKTsKIH0KIAot
dm9pZCBDb25uZWN0aW9uOjphZGRUaHJlYWRNZXNzYWdlUmVjZWl2ZXIoU3RyaW5nUmVmZXJlbmNl
IG1lc3NhZ2VSZWNlaXZlck5hbWUsIFRocmVhZE1lc3NhZ2VSZWNlaXZlciogdGhyZWFkTWVzc2Fn
ZVJlY2VpdmVyKQordm9pZCBDb25uZWN0aW9uOjphZGRUaHJlYWRNZXNzYWdlUmVjZWl2ZXIoUmVj
ZWl2ZXJOYW1lIG1lc3NhZ2VSZWNlaXZlck5hbWUsIFRocmVhZE1lc3NhZ2VSZWNlaXZlciogdGhy
ZWFkTWVzc2FnZVJlY2VpdmVyKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAK
ICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fdGhyZWFkTWVzc2FnZVJlY2VpdmVyc0xvY2sp
OwotICAgIEFTU0VSVCghbV90aHJlYWRNZXNzYWdlUmVjZWl2ZXJzLmNvbnRhaW5zKG1lc3NhZ2VS
ZWNlaXZlck5hbWUpKTsKKyAgICBBU1NFUlQoIW1fdGhyZWFkTWVzc2FnZVJlY2VpdmVycy5jb250
YWlucyhzdGF0aWNfY2FzdDx1aW50OF90PihtZXNzYWdlUmVjZWl2ZXJOYW1lKSkpOwogCi0gICAg
bV90aHJlYWRNZXNzYWdlUmVjZWl2ZXJzLmFkZChtZXNzYWdlUmVjZWl2ZXJOYW1lLCB0aHJlYWRN
ZXNzYWdlUmVjZWl2ZXIpOworICAgIG1fdGhyZWFkTWVzc2FnZVJlY2VpdmVycy5hZGQoc3RhdGlj
X2Nhc3Q8dWludDhfdD4obWVzc2FnZVJlY2VpdmVyTmFtZSksIHRocmVhZE1lc3NhZ2VSZWNlaXZl
cik7CiB9CiAKLXZvaWQgQ29ubmVjdGlvbjo6cmVtb3ZlVGhyZWFkTWVzc2FnZVJlY2VpdmVyKFN0
cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lKQordm9pZCBDb25uZWN0aW9uOjpyZW1v
dmVUaHJlYWRNZXNzYWdlUmVjZWl2ZXIoUmVjZWl2ZXJOYW1lIG1lc3NhZ2VSZWNlaXZlck5hbWUp
CiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAgIGF1dG8gbG9ja2VyID0g
aG9sZExvY2sobV90aHJlYWRNZXNzYWdlUmVjZWl2ZXJzTG9jayk7Ci0gICAgQVNTRVJUKG1fdGhy
ZWFkTWVzc2FnZVJlY2VpdmVycy5jb250YWlucyhtZXNzYWdlUmVjZWl2ZXJOYW1lKSk7CisgICAg
QVNTRVJUKG1fdGhyZWFkTWVzc2FnZVJlY2VpdmVycy5jb250YWlucyhzdGF0aWNfY2FzdDx1aW50
OF90PihtZXNzYWdlUmVjZWl2ZXJOYW1lKSkpOwogCi0gICAgbV90aHJlYWRNZXNzYWdlUmVjZWl2
ZXJzLnJlbW92ZShtZXNzYWdlUmVjZWl2ZXJOYW1lKTsKKyAgICBtX3RocmVhZE1lc3NhZ2VSZWNl
aXZlcnMucmVtb3ZlKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KG1lc3NhZ2VSZWNlaXZlck5hbWUpKTsK
IH0KIAogdm9pZCBDb25uZWN0aW9uOjpkaXNwYXRjaFRocmVhZE1lc3NhZ2VSZWNlaXZlck1lc3Nh
Z2UoVGhyZWFkTWVzc2FnZVJlY2VpdmVyJiB0aHJlYWRNZXNzYWdlUmVjZWl2ZXIsIERlY29kZXIm
IGRlY29kZXIpCkBAIC0zOTUsNyArMzkxLDcgQEAgdm9pZCBDb25uZWN0aW9uOjpkaXNwYXRjaFRo
cmVhZE1lc3NhZ2VSZQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byByZXBseUVu
Y29kZXIgPSBtYWtlVW5pcXVlPEVuY29kZXI+KCJJUEMiLCAiU3luY01lc3NhZ2VSZXBseSIsIHN5
bmNSZXF1ZXN0SUQpOworICAgIGF1dG8gcmVwbHlFbmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNvZGVy
PihNZXNzYWdlTmFtZTo6U3luY01lc3NhZ2VSZXBseSwgc3luY1JlcXVlc3RJRCk7CiAgICAgdGhy
ZWFkTWVzc2FnZVJlY2VpdmVyLmRpZFJlY2VpdmVTeW5jTWVzc2FnZSgqdGhpcywgZGVjb2Rlciwg
cmVwbHlFbmNvZGVyKTsKIAogICAgIC8vIEZJWE1FOiBJZiB0aGUgbWVzc2FnZSB3YXMgaW52YWxp
ZCwgd2Ugc2hvdWxkIHNlbmQgYmFjayBhIFN5bmNNZXNzYWdlRXJyb3IuCkBAIC00MzYsOSArNDMy
LDkgQEAgdm9pZCBDb25uZWN0aW9uOjptYXJrQ3VycmVudGx5RGlzcGF0Y2hlZAogICAgIG1fZGlk
UmVjZWl2ZUludmFsaWRNZXNzYWdlID0gdHJ1ZTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEVuY29k
ZXI+IENvbm5lY3Rpb246OmNyZWF0ZVN5bmNNZXNzYWdlRW5jb2RlcihTdHJpbmdSZWZlcmVuY2Ug
bWVzc2FnZVJlY2VpdmVyTmFtZSwgU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lLCB1aW50NjRf
dCBkZXN0aW5hdGlvbklELCB1aW50NjRfdCYgc3luY1JlcXVlc3RJRCkKK3N0ZDo6dW5pcXVlX3B0
cjxFbmNvZGVyPiBDb25uZWN0aW9uOjpjcmVhdGVTeW5jTWVzc2FnZUVuY29kZXIoTWVzc2FnZU5h
bWUgbWVzc2FnZU5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIHVpbnQ2NF90JiBzeW5jUmVx
dWVzdElEKQogewotICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWU8RW5jb2Rlcj4obWVzc2Fn
ZVJlY2VpdmVyTmFtZSwgbWVzc2FnZU5hbWUsIGRlc3RpbmF0aW9uSUQpOworICAgIGF1dG8gZW5j
b2RlciA9IG1ha2VVbmlxdWU8RW5jb2Rlcj4obWVzc2FnZU5hbWUsIGRlc3RpbmF0aW9uSUQpOwog
ICAgIGVuY29kZXItPnNldElzU3luY01lc3NhZ2UodHJ1ZSk7CiAKICAgICAvLyBFbmNvZGUgdGhl
IHN5bmMgcmVxdWVzdCBJRC4KQEAgLTQ1Myw5ICs0NDksOSBAQCBib29sIENvbm5lY3Rpb246OnNl
bmRNZXNzYWdlKHN0ZDo6dW5pcXVlCiAgICAgaWYgKCFpc1ZhbGlkKCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIGlmIChpc01haW5UaHJlYWQoKSAmJiBtX2luRGlzcGF0Y2hNZXNzYWdl
TWFya2VkVG9Vc2VGdWxseVN5bmNocm9ub3VzTW9kZUZvclRlc3RpbmcgJiYgIWVuY29kZXItPmlz
U3luY01lc3NhZ2UoKSAmJiAhKGVuY29kZXItPm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSAiSVBD
IikgJiYgIXNlbmRPcHRpb25zLmNvbnRhaW5zKFNlbmRPcHRpb246Oklnbm9yZUZ1bGx5U3luY2hy
b25vdXNNb2RlKSkgeworICAgIGlmIChpc01haW5UaHJlYWQoKSAmJiBtX2luRGlzcGF0Y2hNZXNz
YWdlTWFya2VkVG9Vc2VGdWxseVN5bmNocm9ub3VzTW9kZUZvclRlc3RpbmcgJiYgIWVuY29kZXIt
PmlzU3luY01lc3NhZ2UoKSAmJiAhKGVuY29kZXItPm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBS
ZWNlaXZlck5hbWU6OklQQykgJiYgIXNlbmRPcHRpb25zLmNvbnRhaW5zKFNlbmRPcHRpb246Okln
bm9yZUZ1bGx5U3luY2hyb25vdXNNb2RlKSkgewogICAgICAgICB1aW50NjRfdCBzeW5jUmVxdWVz
dElEOwotICAgICAgICBhdXRvIHdyYXBwZWRNZXNzYWdlID0gY3JlYXRlU3luY01lc3NhZ2VFbmNv
ZGVyKCJJUEMiLCAiV3JhcHBlZEFzeW5jTWVzc2FnZUZvclRlc3RpbmciLCBlbmNvZGVyLT5kZXN0
aW5hdGlvbklEKCksIHN5bmNSZXF1ZXN0SUQpOworICAgICAgICBhdXRvIHdyYXBwZWRNZXNzYWdl
ID0gY3JlYXRlU3luY01lc3NhZ2VFbmNvZGVyKE1lc3NhZ2VOYW1lOjpXcmFwcGVkQXN5bmNNZXNz
YWdlRm9yVGVzdGluZywgZW5jb2Rlci0+ZGVzdGluYXRpb25JRCgpLCBzeW5jUmVxdWVzdElEKTsK
ICAgICAgICAgd3JhcHBlZE1lc3NhZ2UtPnNldEZ1bGx5U3luY2hyb25vdXNNb2RlRm9yVGVzdGlu
ZygpOwogICAgICAgICB3cmFwcGVkTWVzc2FnZS0+d3JhcEZvclRlc3RpbmcoV1RGTW92ZShlbmNv
ZGVyKSk7CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxib29sPihzZW5kU3luY01lc3NhZ2Uo
c3luY1JlcXVlc3RJRCwgV1RGTW92ZSh3cmFwcGVkTWVzc2FnZSksIFNlY29uZHM6OmluZmluaXR5
KCksIHsgfSkpOwpAQCAtNDkwLDcgKzQ4Niw3IEBAIFNlY29uZHMgQ29ubmVjdGlvbjo6dGltZW91
dFJlc3BlY3RpbmdJZ24KICAgICByZXR1cm4gbV9pZ25vcmVUaW1lb3V0c0ZvclRlc3RpbmcgPyBT
ZWNvbmRzOjppbmZpbml0eSgpIDogdGltZW91dDsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPERlY29k
ZXI+IENvbm5lY3Rpb246OndhaXRGb3JNZXNzYWdlKFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVj
ZWl2ZXJOYW1lLCBTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0
aW9uSUQsIFNlY29uZHMgdGltZW91dCwgT3B0aW9uU2V0PFdhaXRGb3JPcHRpb24+IHdhaXRGb3JP
cHRpb25zKQorc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IENvbm5lY3Rpb246OndhaXRGb3JNZXNz
YWdlKE1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBTZWNv
bmRzIHRpbWVvdXQsIE9wdGlvblNldDxXYWl0Rm9yT3B0aW9uPiB3YWl0Rm9yT3B0aW9ucykKIHsK
ICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIGF1dG8gcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpOwpAQCAtNTA2LDcgKzUwMiw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxEZWNv
ZGVyPiBDb25uZWN0aW9uOjp3YWkKICAgICAgICAgZm9yIChhdXRvIGl0ID0gbV9pbmNvbWluZ01l
c3NhZ2VzLmJlZ2luKCksIGVuZCA9IG1faW5jb21pbmdNZXNzYWdlcy5lbmQoKTsgaXQgIT0gZW5k
OyArK2l0KSB7CiAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4mIG1lc3NhZ2Ug
PSAqaXQ7CiAKLSAgICAgICAgICAgIGlmIChtZXNzYWdlLT5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkg
PT0gbWVzc2FnZVJlY2VpdmVyTmFtZSAmJiBtZXNzYWdlLT5tZXNzYWdlTmFtZSgpID09IG1lc3Nh
Z2VOYW1lICYmIG1lc3NhZ2UtPmRlc3RpbmF0aW9uSUQoKSA9PSBkZXN0aW5hdGlvbklEKSB7Cisg
ICAgICAgICAgICBpZiAobWVzc2FnZS0+bWVzc2FnZU5hbWUoKSA9PSBtZXNzYWdlTmFtZSAmJiBt
ZXNzYWdlLT5kZXN0aW5hdGlvbklEKCkgPT0gZGVzdGluYXRpb25JRCkgewogICAgICAgICAgICAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiByZXR1cm5lZE1lc3NhZ2UgPSBXVEZNb3ZlKG1l
c3NhZ2UpOwogCiAgICAgICAgICAgICAgICAgbV9pbmNvbWluZ01lc3NhZ2VzLnJlbW92ZShpdCk7
CkBAIC01MjgsNyArNTI0LDcgQEAgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IENvbm5lY3Rpb246
OndhaQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBXYWl0Rm9yTWVzc2Fn
ZVN0YXRlIHdhaXRpbmdGb3JNZXNzYWdlKG1lc3NhZ2VSZWNlaXZlck5hbWUsIG1lc3NhZ2VOYW1l
LCBkZXN0aW5hdGlvbklELCB3YWl0Rm9yT3B0aW9ucyk7CisgICAgV2FpdEZvck1lc3NhZ2VTdGF0
ZSB3YWl0aW5nRm9yTWVzc2FnZShtZXNzYWdlTmFtZSwgZGVzdGluYXRpb25JRCwgd2FpdEZvck9w
dGlvbnMpOwogCiAgICAgewogICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fd2FpdEZv
ck1lc3NhZ2VNdXRleCk7CkBAIC02MDAsMTQgKzU5NiwxMyBAQCBzdGQ6OnVuaXF1ZV9wdHI8RGVj
b2Rlcj4gQ29ubmVjdGlvbjo6c2VuCiAgICAgaWYgKHNlbmRTeW5jT3B0aW9ucy5jb250YWlucyhT
ZW5kU3luY09wdGlvbjo6Rm9yY2VEaXNwYXRjaFdoZW5EZXN0aW5hdGlvbklzV2FpdGluZ0ZvclVu
Ym91bmRlZFN5bmNSZXBseSkpCiAgICAgICAgIHNlbmRPcHRpb25zID0gc2VuZE9wdGlvbnMgfCBJ
UEM6OlNlbmRPcHRpb246OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclVuYm91bmRl
ZFN5bmNSZXBseTsKIAotICAgIGF1dG8gbWVzc2FnZVJlY2VpdmVyTmFtZSA9IGVuY29kZXItPm1l
c3NhZ2VSZWNlaXZlck5hbWUoKTsKICAgICBhdXRvIG1lc3NhZ2VOYW1lID0gZW5jb2Rlci0+bWVz
c2FnZU5hbWUoKTsKICAgICBzZW5kTWVzc2FnZShXVEZNb3ZlKGVuY29kZXIpLCBzZW5kT3B0aW9u
cyk7CiAKICAgICAvLyBUaGVuIHdhaXQgZm9yIGEgcmVwbHkuIFdhaXRpbmcgZm9yIGEgcmVwbHkg
Y291bGQgaW52b2x2ZSBkaXNwYXRjaGluZyBpbmNvbWluZyBzeW5jIG1lc3NhZ2VzLCBzbwogICAg
IC8vIGtlZXAgYW4gZXh0cmEgcmVmZXJlbmNlIHRvIHRoZSBjb25uZWN0aW9uIGhlcmUgaW4gY2Fz
ZSBpdCdzIGludmFsaWRhdGVkLgogICAgIFJlZjxDb25uZWN0aW9uPiBwcm90ZWN0KCp0aGlzKTsK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gcmVwbHkgPSB3YWl0Rm9yU3luY1JlcGx5KHN5
bmNSZXF1ZXN0SUQsIG1lc3NhZ2VSZWNlaXZlck5hbWUsIG1lc3NhZ2VOYW1lLCB0aW1lb3V0LCBz
ZW5kU3luY09wdGlvbnMpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiByZXBseSA9IHdh
aXRGb3JTeW5jUmVwbHkoc3luY1JlcXVlc3RJRCwgbWVzc2FnZU5hbWUsIHRpbWVvdXQsIHNlbmRT
eW5jT3B0aW9ucyk7CiAKICAgICAtLW1faW5TZW5kU3luY0NvdW50OwogCkBAIC02MjQsNyArNjE5
LDcgQEAgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IENvbm5lY3Rpb246OnNlbgogICAgIHJldHVy
biByZXBseTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IENvbm5lY3Rpb246OndhaXRG
b3JTeW5jUmVwbHkodWludDY0X3Qgc3luY1JlcXVlc3RJRCwgU3RyaW5nUmVmZXJlbmNlIG1lc3Nh
Z2VSZWNlaXZlck5hbWUsIFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZSwgU2Vjb25kcyB0aW1l
b3V0LCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucykKK3N0ZDo6dW5p
cXVlX3B0cjxEZWNvZGVyPiBDb25uZWN0aW9uOjp3YWl0Rm9yU3luY1JlcGx5KHVpbnQ2NF90IHN5
bmNSZXF1ZXN0SUQsIE1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lLCBTZWNvbmRzIHRpbWVvdXQsIE9w
dGlvblNldDxTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zKQogewogICAgIHRpbWVvdXQg
PSB0aW1lb3V0UmVzcGVjdGluZ0lnbm9yZVRpbWVvdXRzRm9yVGVzdGluZyh0aW1lb3V0KTsKICAg
ICBNb25vdG9uaWNUaW1lIGFic29sdXRlVGltZSA9IE1vbm90b25pY1RpbWU6Om5vdygpICsgdGlt
ZW91dDsKQEAgLTY2OSw5ICs2NjQsOSBAQCBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gQ29ubmVj
dGlvbjo6d2FpCiAgICAgfQogCiAjaWYgT1MoREFSV0lOKQotICAgIFJFTEVBU0VfTE9HX0VSUk9S
KElQQywgIkNvbm5lY3Rpb246OndhaXRGb3JTeW5jUmVwbHk6IFRpbWVkLW91dCB3aGlsZSB3YWl0
aW5nIGZvciByZXBseSBmb3IgJXtwdWJsaWN9czo6JXtwdWJsaWN9cyBmcm9tIHByb2Nlc3MgJWQs
IGlkID0gJSIgUFJJdTY0LCBtZXNzYWdlUmVjZWl2ZXJOYW1lLnRvU3RyaW5nKCkuZGF0YSgpLCBt
ZXNzYWdlTmFtZS50b1N0cmluZygpLmRhdGEoKSwgcmVtb3RlUHJvY2Vzc0lEKCksIHN5bmNSZXF1
ZXN0SUQpOworICAgIFJFTEVBU0VfTE9HX0VSUk9SKElQQywgIkNvbm5lY3Rpb246OndhaXRGb3JT
eW5jUmVwbHk6IFRpbWVkLW91dCB3aGlsZSB3YWl0aW5nIGZvciByZXBseSBmb3IgJXtwdWJsaWN9
cyBmcm9tIHByb2Nlc3MgJWQsIGlkID0gJSIgUFJJdTY0LCBkZXNjcmlwdGlvbihtZXNzYWdlTmFt
ZSksIHJlbW90ZVByb2Nlc3NJRCgpLCBzeW5jUmVxdWVzdElEKTsKICNlbHNlCi0gICAgUkVMRUFT
RV9MT0dfRVJST1IoSVBDLCAiQ29ubmVjdGlvbjo6d2FpdEZvclN5bmNSZXBseTogVGltZWQtb3V0
IHdoaWxlIHdhaXRpbmcgZm9yIHJlcGx5IGZvciAlczo6JXMsIGlkID0gJSIgUFJJdTY0LCBtZXNz
YWdlUmVjZWl2ZXJOYW1lLnRvU3RyaW5nKCkuZGF0YSgpLCBtZXNzYWdlTmFtZS50b1N0cmluZygp
LmRhdGEoKSwgc3luY1JlcXVlc3RJRCk7CisgICAgUkVMRUFTRV9MT0dfRVJST1IoSVBDLCAiQ29u
bmVjdGlvbjo6d2FpdEZvclN5bmNSZXBseTogVGltZWQtb3V0IHdoaWxlIHdhaXRpbmcgZm9yIHJl
cGx5IGZvciAlcywgaWQgPSAlIiBQUkl1NjQsIGRlc2NyaXB0aW9uKG1lc3NhZ2VOYW1lKSwgc3lu
Y1JlcXVlc3RJRCk7CiAjZW5kaWYKIAogICAgIGRpZFJlY2VpdmVTeW5jUmVwbHkoc2VuZFN5bmNP
cHRpb25zKTsKQEAgLTcxMSwyMyArNzA2LDE2IEBAIHZvaWQgQ29ubmVjdGlvbjo6cHJvY2Vzc0lu
Y29taW5nU3luY1JlcGwKIAogdm9pZCBDb25uZWN0aW9uOjpwcm9jZXNzSW5jb21pbmdNZXNzYWdl
KHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiBtZXNzYWdlKQogewotICAgIEFTU0VSVCghbWVzc2Fn
ZS0+bWVzc2FnZVJlY2VpdmVyTmFtZSgpLmlzRW1wdHkoKSk7Ci0gICAgQVNTRVJUKCFtZXNzYWdl
LT5tZXNzYWdlTmFtZSgpLmlzRW1wdHkoKSk7CisgICAgQVNTRVJUKG1lc3NhZ2UtPm1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSAhPSBSZWNlaXZlck5hbWU6OkludmFsaWQpOwogCi0gICAgaWYgKG1lc3Nh
Z2UtPm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSAiSVBDIiAmJiBtZXNzYWdlLT5tZXNzYWdlTmFt
ZSgpID09ICJTeW5jTWVzc2FnZVJlcGx5IikgeworICAgIGlmIChtZXNzYWdlLT5tZXNzYWdlTmFt
ZSgpID09IE1lc3NhZ2VOYW1lOjpTeW5jTWVzc2FnZVJlcGx5KSB7CiAgICAgICAgIHByb2Nlc3NJ
bmNvbWluZ1N5bmNSZXBseShXVEZNb3ZlKG1lc3NhZ2UpKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIGlmICghV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyTWFwOjppc1ZhbGlkS2V5KG1l
c3NhZ2UtPm1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgfHwgIVRocmVhZE1lc3NhZ2VSZWNlaXZlck1h
cDo6aXNWYWxpZEtleShtZXNzYWdlLT5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkpKSB7Ci0gICAgICAg
IFJlZlB0cjxDb25uZWN0aW9uPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwotICAgICAgICBTdHJpbmdS
ZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZVJlZmVyZW5jZSA9IG1lc3NhZ2UtPm1lc3NhZ2VS
ZWNlaXZlck5hbWUoKTsKLSAgICAgICAgU3RyaW5nIG1lc3NhZ2VSZWNlaXZlck5hbWUobWVzc2Fn
ZVJlY2VpdmVyTmFtZVJlZmVyZW5jZS5pc0VtcHR5KCkgPyAiPHVua25vd24gbWVzc2FnZSByZWNl
aXZlcj4iIDogU3RyaW5nKG1lc3NhZ2VSZWNlaXZlck5hbWVSZWZlcmVuY2UuZGF0YSgpLCBtZXNz
YWdlUmVjZWl2ZXJOYW1lUmVmZXJlbmNlLnNpemUoKSkpOwotICAgICAgICBTdHJpbmdSZWZlcmVu
Y2UgbWVzc2FnZU5hbWVSZWZlcmVuY2UgPSBtZXNzYWdlLT5tZXNzYWdlTmFtZSgpOwotICAgICAg
ICBTdHJpbmcgbWVzc2FnZU5hbWUobWVzc2FnZU5hbWVSZWZlcmVuY2UuaXNFbXB0eSgpID8gIjx1
bmtub3duIG1lc3NhZ2U+IiA6IFN0cmluZyhtZXNzYWdlTmFtZVJlZmVyZW5jZS5kYXRhKCksIG1l
c3NhZ2VOYW1lUmVmZXJlbmNlLnNpemUoKSkpOwotCi0gICAgICAgIFJ1bkxvb3A6Om1haW4oKS5k
aXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBtZXNzYWdlUmVjZWl2ZXJO
YW1lID0gV1RGTW92ZShtZXNzYWdlUmVjZWl2ZXJOYW1lKSwgbWVzc2FnZU5hbWUgPSBXVEZNb3Zl
KG1lc3NhZ2VOYW1lKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPmRp
c3BhdGNoRGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKG1lc3NhZ2VSZWNlaXZlck5hbWUudXRmOCgp
LCBtZXNzYWdlTmFtZS51dGY4KCkpOworICAgIGlmICghV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVy
TWFwOjppc1ZhbGlkS2V5KHN0YXRpY19jYXN0PHVpbnQ4X3Q+KG1lc3NhZ2UtPm1lc3NhZ2VSZWNl
aXZlck5hbWUoKSkpIHx8ICFUaHJlYWRNZXNzYWdlUmVjZWl2ZXJNYXA6OmlzVmFsaWRLZXkoc3Rh
dGljX2Nhc3Q8dWludDhfdD4obWVzc2FnZS0+bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSkpIHsKKyAg
ICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyksIG1lc3NhZ2VOYW1lID0gbWVzc2FnZS0+bWVzc2FnZU5hbWUoKV0oKSBtdXRhYmxlIHsK
KyAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPmRpc3BhdGNoRGlkUmVjZWl2ZUludmFsaWRNZXNz
YWdlKG1lc3NhZ2VOYW1lKTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBA
IC03NTksNyArNzQ3LDcgQEAgdm9pZCBDb25uZWN0aW9uOjpwcm9jZXNzSW5jb21pbmdNZXNzYWdl
KAogICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fd2FpdEZvck1lc3NhZ2VNdXRleCk7
CiAKICAgICAgICAgaWYgKG1fd2FpdGluZ0Zvck1lc3NhZ2UgJiYgIW1fd2FpdGluZ0Zvck1lc3Nh
Z2UtPmRlY29kZXIpIHsKLSAgICAgICAgICAgIGlmIChtX3dhaXRpbmdGb3JNZXNzYWdlLT5tZXNz
YWdlUmVjZWl2ZXJOYW1lID09IG1lc3NhZ2UtPm1lc3NhZ2VSZWNlaXZlck5hbWUoKSAmJiBtX3dh
aXRpbmdGb3JNZXNzYWdlLT5tZXNzYWdlTmFtZSA9PSBtZXNzYWdlLT5tZXNzYWdlTmFtZSgpICYm
IG1fd2FpdGluZ0Zvck1lc3NhZ2UtPmRlc3RpbmF0aW9uSUQgPT0gbWVzc2FnZS0+ZGVzdGluYXRp
b25JRCgpKSB7CisgICAgICAgICAgICBpZiAobV93YWl0aW5nRm9yTWVzc2FnZS0+bWVzc2FnZU5h
bWUgPT0gbWVzc2FnZS0+bWVzc2FnZU5hbWUoKSAmJiBtX3dhaXRpbmdGb3JNZXNzYWdlLT5kZXN0
aW5hdGlvbklEID09IG1lc3NhZ2UtPmRlc3RpbmF0aW9uSUQoKSkgewogICAgICAgICAgICAgICAg
IG1fd2FpdGluZ0Zvck1lc3NhZ2UtPmRlY29kZXIgPSBXVEZNb3ZlKG1lc3NhZ2UpOwogICAgICAg
ICAgICAgICAgIEFTU0VSVChtX3dhaXRpbmdGb3JNZXNzYWdlLT5kZWNvZGVyKTsKICAgICAgICAg
ICAgICAgICBtX3dhaXRGb3JNZXNzYWdlQ29uZGl0aW9uLm5vdGlmeU9uZSgpOwpAQCAtOTEyLDkg
KzkwMCw5IEBAIHZvaWQgQ29ubmVjdGlvbjo6ZGlzcGF0Y2hTeW5jTWVzc2FnZShEZWMKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gcmVwbHlFbmNvZGVyID0gbWFrZVVuaXF1ZTxF
bmNvZGVyPigiSVBDIiwgIlN5bmNNZXNzYWdlUmVwbHkiLCBzeW5jUmVxdWVzdElEKTsKKyAgICBh
dXRvIHJlcGx5RW5jb2RlciA9IG1ha2VVbmlxdWU8RW5jb2Rlcj4oTWVzc2FnZU5hbWU6OlN5bmNN
ZXNzYWdlUmVwbHksIHN5bmNSZXF1ZXN0SUQpOwogCi0gICAgaWYgKGRlY29kZXIubWVzc2FnZVJl
Y2VpdmVyTmFtZSgpID09ICJJUEMiICYmIGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSAiV3JhcHBl
ZEFzeW5jTWVzc2FnZUZvclRlc3RpbmciKSB7CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUo
KSA9PSBNZXNzYWdlTmFtZTo6V3JhcHBlZEFzeW5jTWVzc2FnZUZvclRlc3RpbmcpIHsKICAgICAg
ICAgaWYgKCFtX2Z1bGx5U3luY2hyb25vdXNNb2RlSXNBbGxvd2VkRm9yVGVzdGluZykgewogICAg
ICAgICAgICAgZGVjb2Rlci5tYXJrSW52YWxpZCgpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAt
OTM2LDE0ICs5MjQsMTQgQEAgdm9pZCBDb25uZWN0aW9uOjpkaXNwYXRjaFN5bmNNZXNzYWdlKERl
YwogICAgICAgICBzZW5kU3luY1JlcGx5KFdURk1vdmUocmVwbHlFbmNvZGVyKSk7CiB9CiAKLXZv
aWQgQ29ubmVjdGlvbjo6ZGlzcGF0Y2hEaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoY29uc3QgQ1N0
cmluZyYgbWVzc2FnZVJlY2VpdmVyTmFtZVN0cmluZywgY29uc3QgQ1N0cmluZyYgbWVzc2FnZU5h
bWVTdHJpbmcpCit2b2lkIENvbm5lY3Rpb246OmRpc3BhdGNoRGlkUmVjZWl2ZUludmFsaWRNZXNz
YWdlKE1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01h
aW4oKSk7CiAKICAgICBpZiAoIWlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9j
bGllbnQuZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKCp0aGlzLCBTdHJpbmdSZWZlcmVuY2UobWVz
c2FnZVJlY2VpdmVyTmFtZVN0cmluZy5kYXRhKCksIG1lc3NhZ2VSZWNlaXZlck5hbWVTdHJpbmcu
bGVuZ3RoKCkpLCBTdHJpbmdSZWZlcmVuY2UobWVzc2FnZU5hbWVTdHJpbmcuZGF0YSgpLCBtZXNz
YWdlTmFtZVN0cmluZy5sZW5ndGgoKSkpOworICAgIG1fY2xpZW50LmRpZFJlY2VpdmVJbnZhbGlk
TWVzc2FnZSgqdGhpcywgbWVzc2FnZU5hbWUpOwogfQogCiB2b2lkIENvbm5lY3Rpb246OmRpZEZh
aWxUb1NlbmRTeW5jTWVzc2FnZSgpCkBAIC05ODksNyArOTc3LDcgQEAgdm9pZCBDb25uZWN0aW9u
OjplbnF1ZXVlSW5jb21pbmdNZXNzYWdlKAogdm9pZCBDb25uZWN0aW9uOjpkaXNwYXRjaE1lc3Nh
Z2UoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBSRUxFQVNFX0FTU0VSVChpc1ZhbGlkKCkpOwot
ICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSAiQXN5bmNSZXBseSIpIHsK
KyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gUmVjZWl2ZXJOYW1lOjpB
c3luY1JlcGx5KSB7CiAgICAgICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBsaXN0ZW5lcklEOwogICAg
ICAgICBkZWNvZGVyID4+IGxpc3RlbmVySUQ7CiAgICAgICAgIGlmICghbGlzdGVuZXJJRCkgewpA
QCAtMTAxMSw3ICs5OTksNyBAQCB2b2lkIENvbm5lY3Rpb246OmRpc3BhdGNoTWVzc2FnZShEZWNv
ZGVyCiBib29sIENvbm5lY3Rpb246OmRpc3BhdGNoTWVzc2FnZVRvV29ya1F1ZXVlUmVjZWl2ZXIo
c3RkOjp1bmlxdWVfcHRyPERlY29kZXI+JiBtZXNzYWdlKQogewogICAgIGF1dG8gbG9ja2VyID0g
aG9sZExvY2sobV93b3JrUXVldWVNZXNzYWdlUmVjZWl2ZXJzTXV0ZXgpOwotICAgIGF1dG8gaXQg
PSBtX3dvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcnMuZmluZChtZXNzYWdlLT5tZXNzYWdlUmVjZWl2
ZXJOYW1lKCkpOworICAgIGF1dG8gaXQgPSBtX3dvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcnMuZmlu
ZChzdGF0aWNfY2FzdDx1aW50OF90PihtZXNzYWdlLT5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkpKTsK
ICAgICBpZiAoaXQgIT0gbV93b3JrUXVldWVNZXNzYWdlUmVjZWl2ZXJzLmVuZCgpKSB7CiAgICAg
ICAgIGl0LT52YWx1ZS5maXJzdC0+ZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKSwgd29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyID0gaXQtPnZhbHVlLnNlY29uZCwgZGVjb2Rl
ciA9IFdURk1vdmUobWVzc2FnZSldKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBwcm90ZWN0ZWRU
aGlzLT5kaXNwYXRjaFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlck1lc3NhZ2UoKndvcmtRdWV1ZU1l
c3NhZ2VSZWNlaXZlciwgKmRlY29kZXIpOwpAQCAtMTAyNiw3ICsxMDE0LDcgQEAgYm9vbCBDb25u
ZWN0aW9uOjpkaXNwYXRjaE1lc3NhZ2VUb1RocmVhZAogICAgIFJlZlB0cjxUaHJlYWRNZXNzYWdl
UmVjZWl2ZXI+IHByb3RlY3RlZFRocmVhZE1lc3NhZ2VSZWNlaXZlcjsKICAgICB7CiAgICAgICAg
IGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV90aHJlYWRNZXNzYWdlUmVjZWl2ZXJzTG9jayk7Ci0g
ICAgICAgIHByb3RlY3RlZFRocmVhZE1lc3NhZ2VSZWNlaXZlciA9IG1fdGhyZWFkTWVzc2FnZVJl
Y2VpdmVycy5nZXQobWVzc2FnZS0+bWVzc2FnZVJlY2VpdmVyTmFtZSgpKTsKKyAgICAgICAgcHJv
dGVjdGVkVGhyZWFkTWVzc2FnZVJlY2VpdmVyID0gbV90aHJlYWRNZXNzYWdlUmVjZWl2ZXJzLmdl
dChzdGF0aWNfY2FzdDx1aW50OF90PihtZXNzYWdlLT5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkpKTsK
ICAgICB9CiAKICAgICBpZiAocHJvdGVjdGVkVGhyZWFkTWVzc2FnZVJlY2VpdmVyKSB7CkBAIC0x
MDU0LDcgKzEwNDIsNyBAQCB2b2lkIENvbm5lY3Rpb246OmRpc3BhdGNoTWVzc2FnZShzdGQ6OnVu
CiAKICAgICBpZiAobWVzc2FnZS0+c2hvdWxkVXNlRnVsbHlTeW5jaHJvbm91c01vZGVGb3JUZXN0
aW5nKCkpIHsKICAgICAgICAgaWYgKCFtX2Z1bGx5U3luY2hyb25vdXNNb2RlSXNBbGxvd2VkRm9y
VGVzdGluZykgewotICAgICAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdl
KCp0aGlzLCBtZXNzYWdlLT5tZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1lc3NhZ2UtPm1lc3NhZ2VO
YW1lKCkpOworICAgICAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKCp0
aGlzLCBtZXNzYWdlLT5tZXNzYWdlTmFtZSgpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogICAgICAgICBtX2luRGlzcGF0Y2hNZXNzYWdlTWFya2VkVG9Vc2VGdWxseVN5bmNocm9u
b3VzTW9kZUZvclRlc3RpbmcrKzsKQEAgLTEwODgsNyArMTA3Niw3IEBAIHZvaWQgQ29ubmVjdGlv
bjo6ZGlzcGF0Y2hNZXNzYWdlKHN0ZDo6dW4KICAgICAgICAgbV9pbkRpc3BhdGNoTWVzc2FnZU1h
cmtlZFRvVXNlRnVsbHlTeW5jaHJvbm91c01vZGVGb3JUZXN0aW5nLS07CiAKICAgICBpZiAobV9k
aWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UgJiYgaXNWYWxpZCgpKQotICAgICAgICBtX2NsaWVudC5k
aWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoKnRoaXMsIG1lc3NhZ2UtPm1lc3NhZ2VSZWNlaXZlck5h
bWUoKSwgbWVzc2FnZS0+bWVzc2FnZU5hbWUoKSk7CisgICAgICAgIG1fY2xpZW50LmRpZFJlY2Vp
dmVJbnZhbGlkTWVzc2FnZSgqdGhpcywgbWVzc2FnZS0+bWVzc2FnZU5hbWUoKSk7CiAKICAgICBt
X2RpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZSA9IG9sZERpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZTsK
IH0KQEAgLTExNjgsNyArMTE1Niw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6ZGlzcGF0Y2hJbmNvbWlu
Z01lc3NhZ2UKICAgICAgICAgaWYgKG1lc3NhZ2VzVG9Qcm9jZXNzIDwgbV9pbmNvbWluZ01lc3Nh
Z2VzLnNpemUoKSkgewogICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoSVBDLCAiJXAgLSBD
b25uZWN0aW9uOjpkaXNwYXRjaEluY29taW5nTWVzc2FnZXM6IElQQyB0aHJvdHRsaW5nIHdhcyB0
cmlnZ2VyZWQgKGhhcyAlenUgcGVuZGluZyBpbmNvbWluZyBtZXNzYWdlcywgd2lsbCBvbmx5IHBy
b2Nlc3MgJXp1IGJlZm9yZSB5aWVsZGluZykiLCB0aGlzLCBtX2luY29taW5nTWVzc2FnZXMuc2l6
ZSgpLCBtZXNzYWdlc1RvUHJvY2Vzcyk7CiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgICAgICAg
ICBSRUxFQVNFX0xPR19FUlJPUihJUEMsICIlcCAtIENvbm5lY3Rpb246OmRpc3BhdGNoSW5jb21p
bmdNZXNzYWdlczogZmlyc3QgSVBDIG1lc3NhZ2UgaW4gcXVldWUgaXMgJXtwdWJsaWN9czo6JXtw
dWJsaWN9cyIsIHRoaXMsIG1lc3NhZ2UtPm1lc3NhZ2VSZWNlaXZlck5hbWUoKS50b1N0cmluZygp
LmRhdGEoKSwgbWVzc2FnZS0+bWVzc2FnZU5hbWUoKS50b1N0cmluZygpLmRhdGEoKSk7CisgICAg
ICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihJUEMsICIlcCAtIENvbm5lY3Rpb246OmRpc3BhdGNo
SW5jb21pbmdNZXNzYWdlczogZmlyc3QgSVBDIG1lc3NhZ2UgaW4gcXVldWUgaXMgJXtwdWJsaWN9
cyIsIHRoaXMsIGRlc2NyaXB0aW9uKG1lc3NhZ2UtPm1lc3NhZ2VOYW1lKCkpKTsKICNlbmRpZgog
ICAgICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmgJ
KHJldmlzaW9uIDI2MDc2NCkKKysrIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rp
b24uaAkod29ya2luZyBjb3B5KQpAQCAtMTA3LDcgKzEwNyw3IEBAIHB1YmxpYzoKICAgICBjbGFz
cyBDbGllbnQgOiBwdWJsaWMgTWVzc2FnZVJlY2VpdmVyIHsKICAgICBwdWJsaWM6CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBkaWRDbG9zZShDb25uZWN0aW9uJikgPSAwOwotICAgICAgICB2aXJ0dWFs
IHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKENvbm5lY3Rpb24mLCBTdHJpbmdSZWZlcmVu
Y2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lKSA9IDA7
CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoQ29ubmVjdGlv
biYsIE1lc3NhZ2VOYW1lKSA9IDA7CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZpcnR1YWwg
fkNsaWVudCgpIHsgfQpAQCAtMTg5LDExICsxODksMTEgQEAgcHVibGljOgogICAgIHR5cGVkZWYg
dm9pZCAoKkRpZENsb3NlT25Db25uZWN0aW9uV29ya1F1ZXVlQ2FsbGJhY2spKENvbm5lY3Rpb24q
KTsKICAgICB2b2lkIHNldERpZENsb3NlT25Db25uZWN0aW9uV29ya1F1ZXVlQ2FsbGJhY2soRGlk
Q2xvc2VPbkNvbm5lY3Rpb25Xb3JrUXVldWVDYWxsYmFjayk7CiAKLSAgICB2b2lkIGFkZFdvcmtR
dWV1ZU1lc3NhZ2VSZWNlaXZlcihTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwg
V29ya1F1ZXVlJiwgV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKik7Ci0gICAgdm9pZCByZW1vdmVX
b3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIoU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5h
bWUpOworICAgIHZvaWQgYWRkV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKFJlY2VpdmVyTmFtZSwg
V29ya1F1ZXVlJiwgV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKik7CisgICAgdm9pZCByZW1vdmVX
b3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIoUmVjZWl2ZXJOYW1lKTsKIAotICAgIHZvaWQgYWRkVGhy
ZWFkTWVzc2FnZVJlY2VpdmVyKFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBU
aHJlYWRNZXNzYWdlUmVjZWl2ZXIqKTsKLSAgICB2b2lkIHJlbW92ZVRocmVhZE1lc3NhZ2VSZWNl
aXZlcihTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSk7CisgICAgdm9pZCBhZGRU
aHJlYWRNZXNzYWdlUmVjZWl2ZXIoUmVjZWl2ZXJOYW1lLCBUaHJlYWRNZXNzYWdlUmVjZWl2ZXIq
KTsKKyAgICB2b2lkIHJlbW92ZVRocmVhZE1lc3NhZ2VSZWNlaXZlcihSZWNlaXZlck5hbWUpOwog
CiAgICAgYm9vbCBvcGVuKCk7CiAgICAgdm9pZCBpbnZhbGlkYXRlKCk7CkBAIC0yMzUsNyArMjM1
LDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIGJvb2wgc2VuZE1lc3NhZ2Uoc3RkOjp1bmlxdWVf
cHRyPEVuY29kZXI+LCBPcHRpb25TZXQ8U2VuZE9wdGlvbj4gc2VuZE9wdGlvbnMpOwotICAgIHN0
ZDo6dW5pcXVlX3B0cjxFbmNvZGVyPiBjcmVhdGVTeW5jTWVzc2FnZUVuY29kZXIoU3RyaW5nUmVm
ZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZSwg
dWludDY0X3QgZGVzdGluYXRpb25JRCwgdWludDY0X3QmIHN5bmNSZXF1ZXN0SUQpOworICAgIHN0
ZDo6dW5pcXVlX3B0cjxFbmNvZGVyPiBjcmVhdGVTeW5jTWVzc2FnZUVuY29kZXIoTWVzc2FnZU5h
bWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIHVpbnQ2NF90JiBzeW5jUmVxdWVzdElEKTsKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gc2VuZFN5bmNNZXNzYWdlKHVpbnQ2NF90IHN5bmNS
ZXF1ZXN0SUQsIHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVyPiwgU2Vjb25kcyB0aW1lb3V0LCBPcHRp
b25TZXQ8U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucyk7CiAgICAgYm9vbCBzZW5kU3lu
Y1JlcGx5KHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVyPik7CiAKQEAgLTI3NCw5ICsyNzQsOSBAQCBw
cml2YXRlOgogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplKElkZW50aWZpZXIpOwogICAgIHZv
aWQgcGxhdGZvcm1JbnZhbGlkYXRlKCk7CiAgICAgCi0gICAgc3RkOjp1bmlxdWVfcHRyPERlY29k
ZXI+IHdhaXRGb3JNZXNzYWdlKFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBT
dHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIFNlY29u
ZHMgdGltZW91dCwgT3B0aW9uU2V0PFdhaXRGb3JPcHRpb24+KTsKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8RGVjb2Rlcj4gd2FpdEZvck1lc3NhZ2UoTWVzc2FnZU5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0
aW9uSUQsIFNlY29uZHMgdGltZW91dCwgT3B0aW9uU2V0PFdhaXRGb3JPcHRpb24+KTsKICAgICAK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gd2FpdEZvclN5bmNSZXBseSh1aW50NjRfdCBz
eW5jUmVxdWVzdElELCBTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgU3RyaW5n
UmVmZXJlbmNlIG1lc3NhZ2VOYW1lLCBTZWNvbmRzIHRpbWVvdXQsIE9wdGlvblNldDxTZW5kU3lu
Y09wdGlvbj4pOworICAgIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiB3YWl0Rm9yU3luY1JlcGx5
KHVpbnQ2NF90IHN5bmNSZXF1ZXN0SUQsIE1lc3NhZ2VOYW1lLCBTZWNvbmRzIHRpbWVvdXQsIE9w
dGlvblNldDxTZW5kU3luY09wdGlvbj4pOwogCiAgICAgYm9vbCBkaXNwYXRjaE1lc3NhZ2VUb1dv
cmtRdWV1ZVJlY2VpdmVyKHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiYpOwogICAgIGJvb2wgZGlz
cGF0Y2hNZXNzYWdlVG9UaHJlYWRSZWNlaXZlcihzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4mKTsK
QEAgLTMwMCw3ICszMDAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlzcGF0Y2hNZXNzYWdlKHN0
ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPik7CiAgICAgdm9pZCBkaXNwYXRjaE1lc3NhZ2UoRGVjb2Rl
ciYpOwogICAgIHZvaWQgZGlzcGF0Y2hTeW5jTWVzc2FnZShEZWNvZGVyJik7Ci0gICAgdm9pZCBk
aXNwYXRjaERpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShjb25zdCBDU3RyaW5nJiBtZXNzYWdlUmVj
ZWl2ZXJOYW1lU3RyaW5nLCBjb25zdCBDU3RyaW5nJiBtZXNzYWdlTmFtZVN0cmluZyk7CisgICAg
dm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShNZXNzYWdlTmFtZSk7CiAgICAg
dm9pZCBkaWRGYWlsVG9TZW5kU3luY01lc3NhZ2UoKTsKIAogICAgIC8vIENhbiBiZSBjYWxsZWQg
b24gYW55IHRocmVhZC4KQEAgLTM0NiwxMSArMzQ2LDExIEBAIHByaXZhdGU6CiAgICAgUmVmPFdv
cmtRdWV1ZT4gbV9jb25uZWN0aW9uUXVldWU7CiAKICAgICBMb2NrIG1fd29ya1F1ZXVlTWVzc2Fn
ZVJlY2VpdmVyc011dGV4OwotICAgIHVzaW5nIFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlck1hcCA9
IEhhc2hNYXA8U3RyaW5nUmVmZXJlbmNlLCBzdGQ6OnBhaXI8UmVmUHRyPFdvcmtRdWV1ZT4sIFJl
ZlB0cjxXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXI+Pj47CisgICAgdXNpbmcgV29ya1F1ZXVlTWVz
c2FnZVJlY2VpdmVyTWFwID0gSGFzaE1hcDx1aW50OF90LCBzdGQ6OnBhaXI8UmVmUHRyPFdvcmtR
dWV1ZT4sIFJlZlB0cjxXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXI+Pj47CiAgICAgV29ya1F1ZXVl
TWVzc2FnZVJlY2VpdmVyTWFwIG1fd29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyczsKIAogICAgIExv
Y2sgbV90aHJlYWRNZXNzYWdlUmVjZWl2ZXJzTG9jazsKLSAgICB1c2luZyBUaHJlYWRNZXNzYWdl
UmVjZWl2ZXJNYXAgPSBIYXNoTWFwPFN0cmluZ1JlZmVyZW5jZSwgUmVmUHRyPFRocmVhZE1lc3Nh
Z2VSZWNlaXZlcj4+OworICAgIHVzaW5nIFRocmVhZE1lc3NhZ2VSZWNlaXZlck1hcCA9IEhhc2hN
YXA8dWludDhfdCwgUmVmUHRyPFRocmVhZE1lc3NhZ2VSZWNlaXZlcj4+OwogICAgIFRocmVhZE1l
c3NhZ2VSZWNlaXZlck1hcCBtX3RocmVhZE1lc3NhZ2VSZWNlaXZlcnM7CiAKICAgICB1bnNpZ25l
ZCBtX2luU2VuZFN5bmNDb3VudDsKQEAgLTQ2Miw3ICs0NjIsNyBAQCBib29sIENvbm5lY3Rpb246
OnNlbmQoVCYmIG1lc3NhZ2UsIHVpbnQ2CiB7CiAgICAgQ09NUElMRV9BU1NFUlQoIVQ6OmlzU3lu
YywgQXN5bmNNZXNzYWdlRXhwZWN0ZWQpOwogCi0gICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1
ZTxFbmNvZGVyPihUOjpyZWNlaXZlck5hbWUoKSwgVDo6bmFtZSgpLCBkZXN0aW5hdGlvbklEKTsK
KyAgICBhdXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlPEVuY29kZXI+KFQ6Om5hbWUoKSwgZGVzdGlu
YXRpb25JRCk7CiAgICAgZW5jb2Rlci0+ZW5jb2RlKG1lc3NhZ2UuYXJndW1lbnRzKCkpOwogICAg
IAogICAgIHJldHVybiBzZW5kTWVzc2FnZShXVEZNb3ZlKGVuY29kZXIpLCBzZW5kT3B0aW9ucyk7
CkBAIC00NzcsNyArNDc3LDcgQEAgdm9pZCBDb25uZWN0aW9uOjpzZW5kV2l0aEFzeW5jUmVwbHko
VCYmIAogewogICAgIENPTVBJTEVfQVNTRVJUKCFUOjppc1N5bmMsIEFzeW5jTWVzc2FnZUV4cGVj
dGVkKTsKIAotICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWU8RW5jb2Rlcj4oVDo6cmVjZWl2
ZXJOYW1lKCksIFQ6Om5hbWUoKSwgZGVzdGluYXRpb25JRCk7CisgICAgYXV0byBlbmNvZGVyID0g
bWFrZVVuaXF1ZTxFbmNvZGVyPihUOjpuYW1lKCksIGRlc3RpbmF0aW9uSUQpOwogICAgIHVpbnQ2
NF90IGxpc3RlbmVySUQgPSBuZXh0QXN5bmNSZXBseUhhbmRsZXJJRCgpOwogICAgIGVuY29kZXIt
PmVuY29kZShsaXN0ZW5lcklEKTsKICAgICBlbmNvZGVyLT5lbmNvZGUobWVzc2FnZS5hcmd1bWVu
dHMoKSk7CkBAIC01MTUsNyArNTE1LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9vbCBDb25u
ZWN0aW9uOjpzZQogICAgIFJFTEVBU0VfQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAg
IHVpbnQ2NF90IHN5bmNSZXF1ZXN0SUQgPSAwOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVy
PiBlbmNvZGVyID0gY3JlYXRlU3luY01lc3NhZ2VFbmNvZGVyKFQ6OnJlY2VpdmVyTmFtZSgpLCBU
OjpuYW1lKCksIGRlc3RpbmF0aW9uSUQsIHN5bmNSZXF1ZXN0SUQpOworICAgIHN0ZDo6dW5pcXVl
X3B0cjxFbmNvZGVyPiBlbmNvZGVyID0gY3JlYXRlU3luY01lc3NhZ2VFbmNvZGVyKFQ6Om5hbWUo
KSwgZGVzdGluYXRpb25JRCwgc3luY1JlcXVlc3RJRCk7CiAKICAgICBpZiAoc2VuZFN5bmNPcHRp
b25zLmNvbnRhaW5zKFNlbmRTeW5jT3B0aW9uOjpVc2VGdWxseVN5bmNocm9ub3VzTW9kZUZvclRl
c3RpbmcpKSB7CiAgICAgICAgIGVuY29kZXItPnNldEZ1bGx5U3luY2hyb25vdXNNb2RlRm9yVGVz
dGluZygpOwpAQCAtNTQyLDcgKzU0Miw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgQ29u
bmVjdGlvbjo6c2UKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgQ29ubmVjdGlvbjo6d2FpdEZv
ckFuZERpc3BhdGNoSW1tZWRpYXRlbHkodWludDY0X3QgZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0
aW1lb3V0LCBPcHRpb25TZXQ8V2FpdEZvck9wdGlvbj4gd2FpdEZvck9wdGlvbnMpCiB7CiAgICAg
UkVMRUFTRV9BU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxE
ZWNvZGVyPiBkZWNvZGVyID0gd2FpdEZvck1lc3NhZ2UoVDo6cmVjZWl2ZXJOYW1lKCksIFQ6Om5h
bWUoKSwgZGVzdGluYXRpb25JRCwgdGltZW91dCwgd2FpdEZvck9wdGlvbnMpOworICAgIHN0ZDo6
dW5pcXVlX3B0cjxEZWNvZGVyPiBkZWNvZGVyID0gd2FpdEZvck1lc3NhZ2UoVDo6bmFtZSgpLCBk
ZXN0aW5hdGlvbklELCB0aW1lb3V0LCB3YWl0Rm9yT3B0aW9ucyk7CiAgICAgaWYgKCFkZWNvZGVy
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL0RlY29kZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L0RlY29kZXIuY3BwCShyZXZpc2lvbiAyNjA3NjQpCisrKyBTb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9EZWNvZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjYsOSArNjYsNiBAQCBEZWNvZGVy
OjpEZWNvZGVyKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgCiAgICAgaWYgKCFkZWNvZGUobV9tZXNz
YWdlRmxhZ3MpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIWRlY29kZShtX21lc3NhZ2VS
ZWNlaXZlck5hbWUpKQotICAgICAgICByZXR1cm47Ci0KICAgICBpZiAoIWRlY29kZShtX21lc3Nh
Z2VOYW1lKSkKICAgICAgICAgcmV0dXJuOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9EZWNvZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
RGVjb2Rlci5oCShyZXZpc2lvbiAyNjA3NjQpCisrKyBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9EZWNvZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUg
IkFyZ3VtZW50Q29kZXIuaCIKICNpbmNsdWRlICJBdHRhY2htZW50LmgiCisjaW5jbHVkZSAiTWVz
c2FnZU5hbWVzLmgiCiAjaW5jbHVkZSAiU3RyaW5nUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSA8d3Rm
L0VudW1UcmFpdHMuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC01MSw4ICs1Miw4IEBA
IHB1YmxpYzoKICAgICBEZWNvZGVyKGNvbnN0IERlY29kZXImKSA9IGRlbGV0ZTsKICAgICBEZWNv
ZGVyKERlY29kZXImJikgPSBkZWxldGU7CiAKLSAgICBTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJl
Y2VpdmVyTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWVzc2FnZVJlY2VpdmVyTmFtZTsgfQotICAg
IFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWVzc2FnZU5h
bWU7IH0KKyAgICBSZWNlaXZlck5hbWUgbWVzc2FnZVJlY2VpdmVyTmFtZSgpIGNvbnN0IHsgcmV0
dXJuIHJlY2VpdmVyTmFtZShtX21lc3NhZ2VOYW1lKTsgfQorICAgIE1lc3NhZ2VOYW1lIG1lc3Nh
Z2VOYW1lKCkgY29uc3QgeyByZXR1cm4gbV9tZXNzYWdlTmFtZTsgfQogICAgIHVpbnQ2NF90IGRl
c3RpbmF0aW9uSUQoKSBjb25zdCB7IHJldHVybiBtX2Rlc3RpbmF0aW9uSUQ7IH0KIAogICAgIGJv
b2wgaXNTeW5jTWVzc2FnZSgpIGNvbnN0OwpAQCAtMTExLDcgKzExMiw3IEBAIHB1YmxpYzoKICAg
ICAgICAgdHlwZW5hbWUgc3RkOjp1bmRlcmx5aW5nX3R5cGU8RT46OnR5cGUgdmFsdWU7CiAgICAg
ICAgIGlmICghZGVjb2RlKHZhbHVlKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgaWYgKCFpc1ZhbGlkRW51bTxFPih2YWx1ZSkpCisgICAgICAgIGlmICghV1RGOjppc1ZhbGlk
RW51bTxFPih2YWx1ZSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgZSA9
IHN0YXRpY19jYXN0PEU+KHZhbHVlKTsKQEAgLTEyMyw3ICsxMjQsNyBAQCBwdWJsaWM6CiAgICAg
ewogICAgICAgICBPcHRpb25hbDx0eXBlbmFtZSBzdGQ6OnVuZGVybHlpbmdfdHlwZTxFPjo6dHlw
ZT4gdmFsdWU7CiAgICAgICAgICp0aGlzID4+IHZhbHVlOwotICAgICAgICBpZiAodmFsdWUgJiYg
aXNWYWxpZEVudW08RT4oKnZhbHVlKSkKKyAgICAgICAgaWYgKHZhbHVlICYmIFdURjo6aXNWYWxp
ZEVudW08RT4oKnZhbHVlKSkKICAgICAgICAgICAgIG9wdGlvbmFsID0gc3RhdGljX2Nhc3Q8RT4o
KnZhbHVlKTsKICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0KQEAgLTIwMyw4ICsyMDQsNyBA
QCBwcml2YXRlOgogICAgIFZlY3RvcjxBdHRhY2htZW50PiBtX2F0dGFjaG1lbnRzOwogCiAgICAg
dWludDhfdCBtX21lc3NhZ2VGbGFnczsKLSAgICBTdHJpbmdSZWZlcmVuY2UgbV9tZXNzYWdlUmVj
ZWl2ZXJOYW1lOwotICAgIFN0cmluZ1JlZmVyZW5jZSBtX21lc3NhZ2VOYW1lOworICAgIE1lc3Nh
Z2VOYW1lIG1fbWVzc2FnZU5hbWU7CiAKICAgICB1aW50NjRfdCBtX2Rlc3RpbmF0aW9uSUQ7CiAK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0VuY29kZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0VuY29kZXIuY3BwCShyZXZpc2lvbiAyNjA3
NjQpCisrKyBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9FbmNvZGVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNjEsOSArNjEsOCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZnJlZUJ1ZmZlcih2b2lk
KiBhZGRyCiAjZW5kaWYKIH0KIAotRW5jb2Rlcjo6RW5jb2RlcihTdHJpbmdSZWZlcmVuY2UgbWVz
c2FnZVJlY2VpdmVyTmFtZSwgU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lLCB1aW50NjRfdCBk
ZXN0aW5hdGlvbklEKQotICAgIDogbV9tZXNzYWdlUmVjZWl2ZXJOYW1lKG1lc3NhZ2VSZWNlaXZl
ck5hbWUpCi0gICAgLCBtX21lc3NhZ2VOYW1lKG1lc3NhZ2VOYW1lKQorRW5jb2Rlcjo6RW5jb2Rl
cihNZXNzYWdlTmFtZSBtZXNzYWdlTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCkKKyAgICA6
IG1fbWVzc2FnZU5hbWUobWVzc2FnZU5hbWUpCiAgICAgLCBtX2Rlc3RpbmF0aW9uSUQoZGVzdGlu
YXRpb25JRCkKICAgICAsIG1fYnVmZmVyKG1faW5saW5lQnVmZmVyKQogICAgICwgbV9idWZmZXJQ
b2ludGVyKG1faW5saW5lQnVmZmVyKQpAQCAtMTY4LDEwICsxNjcsNyBAQCB2b2lkIEVuY29kZXI6
OnJlc2VydmUoc2l6ZV90IHNpemUpCiAKIHZvaWQgRW5jb2Rlcjo6ZW5jb2RlSGVhZGVyKCkKIHsK
LSAgICBBU1NFUlQoIW1fbWVzc2FnZVJlY2VpdmVyTmFtZS5pc0VtcHR5KCkpOwotCiAgICAgKnRo
aXMgPDwgZGVmYXVsdE1lc3NhZ2VGbGFnczsKLSAgICAqdGhpcyA8PCBtX21lc3NhZ2VSZWNlaXZl
ck5hbWU7CiAgICAgKnRoaXMgPDwgbV9tZXNzYWdlTmFtZTsKICAgICAqdGhpcyA8PCBtX2Rlc3Rp
bmF0aW9uSUQ7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9FbmNvZGVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRW5jb2Rlci5oCShyZXZp
c2lvbiAyNjA3NjQpCisrKyBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9FbmNvZGVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXIu
aCIKICNpbmNsdWRlICJBdHRhY2htZW50LmgiCisjaW5jbHVkZSAiTWVzc2FnZU5hbWVzLmgiCiAj
aW5jbHVkZSAiU3RyaW5nUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSA8d3RmL0VudW1UcmFpdHMuaD4K
ICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC0zNSwxNSArMzYsMTYgQEAgbmFtZXNwYWNlIElQ
QyB7CiAKIGNsYXNzIERhdGFSZWZlcmVuY2U7CiBlbnVtIGNsYXNzIFNob3VsZERpc3BhdGNoV2hl
bldhaXRpbmdGb3JTeW5jUmVwbHk7CitlbnVtIGNsYXNzIE1lc3NhZ2VOYW1lIDogdWludDE2X3Q7
CiAKIGNsYXNzIEVuY29kZXIgZmluYWwgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgotICAgIEVuY29kZXIoU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUs
IFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCk7Cisg
ICAgRW5jb2RlcihNZXNzYWdlTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCk7CiAgICAgfkVu
Y29kZXIoKTsKIAotICAgIFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lKCkgY29u
c3QgeyByZXR1cm4gbV9tZXNzYWdlUmVjZWl2ZXJOYW1lOyB9Ci0gICAgU3RyaW5nUmVmZXJlbmNl
IG1lc3NhZ2VOYW1lKCkgY29uc3QgeyByZXR1cm4gbV9tZXNzYWdlTmFtZTsgfQorICAgIFJlY2Vp
dmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gcmVjZWl2ZXJOYW1l
KG1fbWVzc2FnZU5hbWUpOyB9CisgICAgTWVzc2FnZU5hbWUgbWVzc2FnZU5hbWUoKSBjb25zdCB7
IHJldHVybiBtX21lc3NhZ2VOYW1lOyB9CiAgICAgdWludDY0X3QgZGVzdGluYXRpb25JRCgpIGNv
bnN0IHsgcmV0dXJuIG1fZGVzdGluYXRpb25JRDsgfQogCiAgICAgdm9pZCBzZXRJc1N5bmNNZXNz
YWdlKGJvb2wpOwpAQCAtMTEyLDE0ICsxMTQsMTMgQEAgcHJpdmF0ZToKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBFPgogICAgIGF1dG8gZW5jb2RlKEUgdmFsdWUpIC0+IHN0ZDo6ZW5hYmxlX2lmX3Q8
c3RkOjppc19lbnVtPEU+Ojp2YWx1ZT4KICAgICB7Ci0gICAgICAgIEFTU0VSVChpc1ZhbGlkRW51
bTxFPihzdGF0aWNfY2FzdDx0eXBlbmFtZSBzdGQ6OnVuZGVybHlpbmdfdHlwZTxFPjo6dHlwZT4o
dmFsdWUpKSk7CisgICAgICAgIEFTU0VSVChXVEY6OmlzVmFsaWRFbnVtPEU+KHN0YXRpY19jYXN0
PHR5cGVuYW1lIHN0ZDo6dW5kZXJseWluZ190eXBlPEU+Ojp0eXBlPih2YWx1ZSkpKTsKICAgICAg
ICAgZW5jb2RlKHN0YXRpY19jYXN0PHR5cGVuYW1lIHN0ZDo6dW5kZXJseWluZ190eXBlPEU+Ojp0
eXBlPih2YWx1ZSkpOwogICAgIH0KIAogICAgIHZvaWQgZW5jb2RlSGVhZGVyKCk7CiAKLSAgICBT
dHJpbmdSZWZlcmVuY2UgbV9tZXNzYWdlUmVjZWl2ZXJOYW1lOwotICAgIFN0cmluZ1JlZmVyZW5j
ZSBtX21lc3NhZ2VOYW1lOworICAgIE1lc3NhZ2VOYW1lIG1fbWVzc2FnZU5hbWU7CiAgICAgdWlu
dDY0X3QgbV9kZXN0aW5hdGlvbklEOwogCiAgICAgdWludDhfdCBtX2lubGluZUJ1ZmZlcls1MTJd
OwpJbmRleDogU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaAkocmV2
aXNpb24gMjYwNzY0KQorKysgU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2Fn
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzYsNyArMTc2LDcgQEAgdm9pZCBoYW5kbGVNZXNzYWdl
QXN5bmMoQ29ubmVjdGlvbiYgY29ubgogICAgIH0KIAogICAgIHR5cGVuYW1lIFQ6OkFzeW5jUmVw
bHkgY29tcGxldGlvbkhhbmRsZXIgPSBbbGlzdGVuZXJJRCA9ICpsaXN0ZW5lcklELCBjb25uZWN0
aW9uID0gbWFrZVJlZihjb25uZWN0aW9uKV0gKGF1dG8mJi4uLiBhcmdzKSBtdXRhYmxlIHsKLSAg
ICAgICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNvZGVyPigiQXN5bmNSZXBseSIsIFQ6
OmFzeW5jTWVzc2FnZVJlcGx5TmFtZSgpLCAwKTsKKyAgICAgICAgYXV0byBlbmNvZGVyID0gbWFr
ZVVuaXF1ZTxFbmNvZGVyPihUOjphc3luY01lc3NhZ2VSZXBseU5hbWUoKSwgMCk7CiAgICAgICAg
ICplbmNvZGVyIDw8IGxpc3RlbmVySUQ7CiAgICAgICAgIFQ6OnNlbmQoV1RGTW92ZShlbmNvZGVy
KSwgV1RGTW92ZShjb25uZWN0aW9uKSwgYXJncy4uLik7CiAgICAgfTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VSZWNlaXZlck1hcC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVyTWFwLmNwcAkocmV2aXNp
b24gMjYwNzY0KQorKysgU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVy
TWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksMzkgKzM5LDM5IEBAIE1lc3NhZ2VSZWNlaXZl
ck1hcDo6fk1lc3NhZ2VSZWNlaXZlck1hcCgKIHsKIH0KIAotdm9pZCBNZXNzYWdlUmVjZWl2ZXJN
YXA6OmFkZE1lc3NhZ2VSZWNlaXZlcihTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFt
ZSwgTWVzc2FnZVJlY2VpdmVyJiBtZXNzYWdlUmVjZWl2ZXIpCit2b2lkIE1lc3NhZ2VSZWNlaXZl
ck1hcDo6YWRkTWVzc2FnZVJlY2VpdmVyKFJlY2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1l
LCBNZXNzYWdlUmVjZWl2ZXImIG1lc3NhZ2VSZWNlaXZlcikKIHsKLSAgICBBU1NFUlQoIW1fZ2xv
YmFsTWVzc2FnZVJlY2VpdmVycy5jb250YWlucyhtZXNzYWdlUmVjZWl2ZXJOYW1lKSk7CisgICAg
QVNTRVJUKCFtX2dsb2JhbE1lc3NhZ2VSZWNlaXZlcnMuY29udGFpbnMoc3RhdGljX2Nhc3Q8dWlu
dDhfdD4obWVzc2FnZVJlY2VpdmVyTmFtZSkpKTsKIAogICAgIG1lc3NhZ2VSZWNlaXZlci53aWxs
QmVBZGRlZFRvTWVzc2FnZVJlY2VpdmVyTWFwKCk7Ci0gICAgbV9nbG9iYWxNZXNzYWdlUmVjZWl2
ZXJzLnNldChtZXNzYWdlUmVjZWl2ZXJOYW1lLCAmbWVzc2FnZVJlY2VpdmVyKTsKKyAgICBtX2ds
b2JhbE1lc3NhZ2VSZWNlaXZlcnMuc2V0KHN0YXRpY19jYXN0PHVpbnQ4X3Q+KG1lc3NhZ2VSZWNl
aXZlck5hbWUpLCAmbWVzc2FnZVJlY2VpdmVyKTsKIH0KIAotdm9pZCBNZXNzYWdlUmVjZWl2ZXJN
YXA6OmFkZE1lc3NhZ2VSZWNlaXZlcihTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFt
ZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgTWVzc2FnZVJlY2VpdmVyJiBtZXNzYWdlUmVjZWl2
ZXIpCit2b2lkIE1lc3NhZ2VSZWNlaXZlck1hcDo6YWRkTWVzc2FnZVJlY2VpdmVyKFJlY2VpdmVy
TmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBNZXNzYWdl
UmVjZWl2ZXImIG1lc3NhZ2VSZWNlaXZlcikKIHsKICAgICBBU1NFUlQoZGVzdGluYXRpb25JRCk7
Ci0gICAgQVNTRVJUKCFtX21lc3NhZ2VSZWNlaXZlcnMuY29udGFpbnMoc3RkOjptYWtlX3BhaXIo
bWVzc2FnZVJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRCkpKTsKLSAgICBBU1NFUlQoIW1fZ2xv
YmFsTWVzc2FnZVJlY2VpdmVycy5jb250YWlucyhtZXNzYWdlUmVjZWl2ZXJOYW1lKSk7CisgICAg
QVNTRVJUKCFtX21lc3NhZ2VSZWNlaXZlcnMuY29udGFpbnMoc3RkOjptYWtlX3BhaXIoc3RhdGlj
X2Nhc3Q8dWludDhfdD4obWVzc2FnZVJlY2VpdmVyTmFtZSksIGRlc3RpbmF0aW9uSUQpKSk7Cisg
ICAgQVNTRVJUKCFtX2dsb2JhbE1lc3NhZ2VSZWNlaXZlcnMuY29udGFpbnMoc3RhdGljX2Nhc3Q8
dWludDhfdD4obWVzc2FnZVJlY2VpdmVyTmFtZSkpKTsKIAogICAgIG1lc3NhZ2VSZWNlaXZlci53
aWxsQmVBZGRlZFRvTWVzc2FnZVJlY2VpdmVyTWFwKCk7Ci0gICAgbV9tZXNzYWdlUmVjZWl2ZXJz
LnNldChzdGQ6Om1ha2VfcGFpcihtZXNzYWdlUmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklEKSwg
Jm1lc3NhZ2VSZWNlaXZlcik7CisgICAgbV9tZXNzYWdlUmVjZWl2ZXJzLnNldChzdGQ6Om1ha2Vf
cGFpcihzdGF0aWNfY2FzdDx1aW50OF90PihtZXNzYWdlUmVjZWl2ZXJOYW1lKSwgZGVzdGluYXRp
b25JRCksICZtZXNzYWdlUmVjZWl2ZXIpOwogfQogCi12b2lkIE1lc3NhZ2VSZWNlaXZlck1hcDo6
cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1l
KQordm9pZCBNZXNzYWdlUmVjZWl2ZXJNYXA6OnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihSZWNlaXZl
ck5hbWUgbWVzc2FnZVJlY2VpdmVyTmFtZSkKIHsKLSAgICBBU1NFUlQobV9nbG9iYWxNZXNzYWdl
UmVjZWl2ZXJzLmNvbnRhaW5zKG1lc3NhZ2VSZWNlaXZlck5hbWUpKTsKKyAgICBBU1NFUlQobV9n
bG9iYWxNZXNzYWdlUmVjZWl2ZXJzLmNvbnRhaW5zKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KG1lc3Nh
Z2VSZWNlaXZlck5hbWUpKSk7CiAKLSAgICBhdXRvIGl0ID0gbV9nbG9iYWxNZXNzYWdlUmVjZWl2
ZXJzLmZpbmQobWVzc2FnZVJlY2VpdmVyTmFtZSk7CisgICAgYXV0byBpdCA9IG1fZ2xvYmFsTWVz
c2FnZVJlY2VpdmVycy5maW5kKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KG1lc3NhZ2VSZWNlaXZlck5h
bWUpKTsKICAgICBpdC0+dmFsdWUtPndpbGxCZVJlbW92ZWRGcm9tTWVzc2FnZVJlY2VpdmVyTWFw
KCk7CiAKICAgICBtX2dsb2JhbE1lc3NhZ2VSZWNlaXZlcnMucmVtb3ZlKGl0KTsKIH0KIAotdm9p
ZCBNZXNzYWdlUmVjZWl2ZXJNYXA6OnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihTdHJpbmdSZWZlcmVu
Y2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCkKK3ZvaWQgTWVz
c2FnZVJlY2VpdmVyTWFwOjpyZW1vdmVNZXNzYWdlUmVjZWl2ZXIoUmVjZWl2ZXJOYW1lIG1lc3Nh
Z2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpCiB7Ci0gICAgQVNTRVJUKG1f
bWVzc2FnZVJlY2VpdmVycy5jb250YWlucyhzdGQ6Om1ha2VfcGFpcihtZXNzYWdlUmVjZWl2ZXJO
YW1lLCBkZXN0aW5hdGlvbklEKSkpOworICAgIEFTU0VSVChtX21lc3NhZ2VSZWNlaXZlcnMuY29u
dGFpbnMoc3RkOjptYWtlX3BhaXIoc3RhdGljX2Nhc3Q8dWludDhfdD4obWVzc2FnZVJlY2VpdmVy
TmFtZSksIGRlc3RpbmF0aW9uSUQpKSk7CiAKLSAgICBhdXRvIGl0ID0gbV9tZXNzYWdlUmVjZWl2
ZXJzLmZpbmQoc3RkOjptYWtlX3BhaXIobWVzc2FnZVJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25J
RCkpOworICAgIGF1dG8gaXQgPSBtX21lc3NhZ2VSZWNlaXZlcnMuZmluZChzdGQ6Om1ha2VfcGFp
cihzdGF0aWNfY2FzdDx1aW50OF90PihtZXNzYWdlUmVjZWl2ZXJOYW1lKSwgZGVzdGluYXRpb25J
RCkpOwogICAgIGl0LT52YWx1ZS0+d2lsbEJlUmVtb3ZlZEZyb21NZXNzYWdlUmVjZWl2ZXJNYXAo
KTsKIAogICAgIG1fbWVzc2FnZVJlY2VpdmVycy5yZW1vdmUoaXQpOwpAQCAtNzksMjMgKzc5LDIz
IEBAIHZvaWQgTWVzc2FnZVJlY2VpdmVyTWFwOjpyZW1vdmVNZXNzYWdlUmUKIAogdm9pZCBNZXNz
YWdlUmVjZWl2ZXJNYXA6OnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlUmVjZWl2ZXImIG1l
c3NhZ2VSZWNlaXZlcikKIHsKLSAgICBWZWN0b3I8U3RyaW5nUmVmZXJlbmNlPiBnbG9iYWxSZWNl
aXZlcnNUb1JlbW92ZTsKKyAgICBWZWN0b3I8UmVjZWl2ZXJOYW1lPiBnbG9iYWxSZWNlaXZlcnNU
b1JlbW92ZTsKICAgICBmb3IgKGF1dG8mIFtuYW1lLCByZWNlaXZlcl0gOiBtX2dsb2JhbE1lc3Nh
Z2VSZWNlaXZlcnMpIHsKICAgICAgICAgaWYgKHJlY2VpdmVyID09ICZtZXNzYWdlUmVjZWl2ZXIp
Ci0gICAgICAgICAgICBnbG9iYWxSZWNlaXZlcnNUb1JlbW92ZS5hcHBlbmQobmFtZSk7CisgICAg
ICAgICAgICBnbG9iYWxSZWNlaXZlcnNUb1JlbW92ZS5hcHBlbmQoc3RhdGljX2Nhc3Q8UmVjZWl2
ZXJOYW1lPihuYW1lKSk7CiAgICAgfQogCiAgICAgZm9yIChhdXRvJiBnbG9iYWxSZWNlaXZlclRv
UmVtb3ZlIDogZ2xvYmFsUmVjZWl2ZXJzVG9SZW1vdmUpCiAgICAgICAgIHJlbW92ZU1lc3NhZ2VS
ZWNlaXZlcihnbG9iYWxSZWNlaXZlclRvUmVtb3ZlKTsKIAotICAgIFZlY3RvcjxzdGQ6OnBhaXI8
U3RyaW5nUmVmZXJlbmNlLCB1aW50NjRfdD4+IHJlY2VpdmVyc1RvUmVtb3ZlOworICAgIFZlY3Rv
cjxzdGQ6OnBhaXI8dWludDhfdCwgdWludDY0X3Q+PiByZWNlaXZlcnNUb1JlbW92ZTsKICAgICBm
b3IgKGF1dG8mIFtuYW1lQW5kRGVzdGluYXRpb25JRCwgcmVjZWl2ZXJdIDogbV9tZXNzYWdlUmVj
ZWl2ZXJzKSB7CiAgICAgICAgIGlmIChyZWNlaXZlciA9PSAmbWVzc2FnZVJlY2VpdmVyKQotICAg
ICAgICAgICAgcmVjZWl2ZXJzVG9SZW1vdmUuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKG5hbWVBbmRE
ZXN0aW5hdGlvbklELmZpcnN0LCBuYW1lQW5kRGVzdGluYXRpb25JRC5zZWNvbmQpKTsKKyAgICAg
ICAgICAgIHJlY2VpdmVyc1RvUmVtb3ZlLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihzdGF0aWNfY2Fz
dDx1aW50OF90PihuYW1lQW5kRGVzdGluYXRpb25JRC5maXJzdCksIG5hbWVBbmREZXN0aW5hdGlv
bklELnNlY29uZCkpOwogICAgIH0KIAogICAgIGZvciAoYXV0byYgW25hbWUsIGRlc3RpbmF0aW9u
SURdIDogcmVjZWl2ZXJzVG9SZW1vdmUpCi0gICAgICAgIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihu
YW1lLCBkZXN0aW5hdGlvbklEKTsKKyAgICAgICAgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKHN0YXRp
Y19jYXN0PFJlY2VpdmVyTmFtZT4obmFtZSksIGRlc3RpbmF0aW9uSUQpOwogfQogCiB2b2lkIE1l
c3NhZ2VSZWNlaXZlck1hcDo6aW52YWxpZGF0ZSgpCkBAIC0xMTIsMTQgKzExMiwxNCBAQCB2b2lk
IE1lc3NhZ2VSZWNlaXZlck1hcDo6aW52YWxpZGF0ZSgpCiAKIGJvb2wgTWVzc2FnZVJlY2VpdmVy
TWFwOjpkaXNwYXRjaE1lc3NhZ2UoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgRGVjb2RlciYgZGVj
b2RlcikKIHsKLSAgICBpZiAoTWVzc2FnZVJlY2VpdmVyKiBtZXNzYWdlUmVjZWl2ZXIgPSBtX2ds
b2JhbE1lc3NhZ2VSZWNlaXZlcnMuZ2V0KGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpKSkg
eworICAgIGlmIChNZXNzYWdlUmVjZWl2ZXIqIG1lc3NhZ2VSZWNlaXZlciA9IG1fZ2xvYmFsTWVz
c2FnZVJlY2VpdmVycy5nZXQoc3RhdGljX2Nhc3Q8dWludDhfdD4oZGVjb2Rlci5tZXNzYWdlUmVj
ZWl2ZXJOYW1lKCkpKSkgewogICAgICAgICBBU1NFUlQoIWRlY29kZXIuZGVzdGluYXRpb25JRCgp
KTsKIAogICAgICAgICBtZXNzYWdlUmVjZWl2ZXItPmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rp
b24sIGRlY29kZXIpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBpZiAoTWVz
c2FnZVJlY2VpdmVyKiBtZXNzYWdlUmVjZWl2ZXIgPSBtX21lc3NhZ2VSZWNlaXZlcnMuZ2V0KHN0
ZDo6bWFrZV9wYWlyKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBkZWNvZGVyLmRlc3Rp
bmF0aW9uSUQoKSkpKSB7CisgICAgaWYgKE1lc3NhZ2VSZWNlaXZlciogbWVzc2FnZVJlY2VpdmVy
ID0gbV9tZXNzYWdlUmVjZWl2ZXJzLmdldChzdGQ6Om1ha2VfcGFpcihzdGF0aWNfY2FzdDx1aW50
OF90PihkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSksIGRlY29kZXIuZGVzdGluYXRpb25J
RCgpKSkpIHsKICAgICAgICAgbWVzc2FnZVJlY2VpdmVyLT5kaWRSZWNlaXZlTWVzc2FnZShjb25u
ZWN0aW9uLCBkZWNvZGVyKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMTI5LDE0
ICsxMjksMTQgQEAgYm9vbCBNZXNzYWdlUmVjZWl2ZXJNYXA6OmRpc3BhdGNoTWVzc2FnZQogCiBi
b29sIE1lc3NhZ2VSZWNlaXZlck1hcDo6ZGlzcGF0Y2hTeW5jTWVzc2FnZShDb25uZWN0aW9uJiBj
b25uZWN0aW9uLCBEZWNvZGVyJiBkZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8RW5jb2Rlcj4mIHJl
cGx5RW5jb2RlcikKIHsKLSAgICBpZiAoTWVzc2FnZVJlY2VpdmVyKiBtZXNzYWdlUmVjZWl2ZXIg
PSBtX2dsb2JhbE1lc3NhZ2VSZWNlaXZlcnMuZ2V0KGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFt
ZSgpKSkgeworICAgIGlmIChNZXNzYWdlUmVjZWl2ZXIqIG1lc3NhZ2VSZWNlaXZlciA9IG1fZ2xv
YmFsTWVzc2FnZVJlY2VpdmVycy5nZXQoc3RhdGljX2Nhc3Q8dWludDhfdD4oZGVjb2Rlci5tZXNz
YWdlUmVjZWl2ZXJOYW1lKCkpKSkgewogICAgICAgICBBU1NFUlQoIWRlY29kZXIuZGVzdGluYXRp
b25JRCgpKTsKIAogICAgICAgICBtZXNzYWdlUmVjZWl2ZXItPmRpZFJlY2VpdmVTeW5jTWVzc2Fn
ZShjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIpOwogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9CiAKLSAgICBpZiAoTWVzc2FnZVJlY2VpdmVyKiBtZXNzYWdlUmVjZWl2ZXIgPSBt
X21lc3NhZ2VSZWNlaXZlcnMuZ2V0KHN0ZDo6bWFrZV9wYWlyKGRlY29kZXIubWVzc2FnZVJlY2Vp
dmVyTmFtZSgpLCBkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSkpKSB7CisgICAgaWYgKE1lc3NhZ2VS
ZWNlaXZlciogbWVzc2FnZVJlY2VpdmVyID0gbV9tZXNzYWdlUmVjZWl2ZXJzLmdldChzdGQ6Om1h
a2VfcGFpcihzdGF0aWNfY2FzdDx1aW50OF90PihkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUo
KSksIGRlY29kZXIuZGVzdGluYXRpb25JRCgpKSkpIHsKICAgICAgICAgbWVzc2FnZVJlY2VpdmVy
LT5kaWRSZWNlaXZlU3luY01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVy
KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpJbmRleDogU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVyTWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVyTWFwLmgJKHJldmlzaW9uIDI2MDc2NCkKKysr
IFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VSZWNlaXZlck1hcC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yMyw4ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAgKi8KIAotI2lmbmRlZiBNZXNzYWdlUmVjZWl2ZXJNYXBfaAotI2RlZmluZSBNZXNzYWdl
UmVjZWl2ZXJNYXBfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJTdHJpbmdSZWZlcmVuY2Uu
aCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAtMzYsMTcgKzM1LDE4IEBAIGNsYXNzIENv
bm5lY3Rpb247CiBjbGFzcyBFbmNvZGVyOwogY2xhc3MgRGVjb2RlcjsKIGNsYXNzIE1lc3NhZ2VS
ZWNlaXZlcjsKK2VudW0gY2xhc3MgUmVjZWl2ZXJOYW1lIDogdWludDhfdDsKIAogY2xhc3MgTWVz
c2FnZVJlY2VpdmVyTWFwIHsKIHB1YmxpYzoKICAgICBNZXNzYWdlUmVjZWl2ZXJNYXAoKTsKICAg
ICB+TWVzc2FnZVJlY2VpdmVyTWFwKCk7CiAKLSAgICB2b2lkIGFkZE1lc3NhZ2VSZWNlaXZlcihT
dHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgTWVzc2FnZVJlY2VpdmVyJik7Ci0g
ICAgdm9pZCBhZGRNZXNzYWdlUmVjZWl2ZXIoU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZl
ck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIE1lc3NhZ2VSZWNlaXZlciYpOworICAgIHZv
aWQgYWRkTWVzc2FnZVJlY2VpdmVyKFJlY2VpdmVyTmFtZSwgTWVzc2FnZVJlY2VpdmVyJik7Cisg
ICAgdm9pZCBhZGRNZXNzYWdlUmVjZWl2ZXIoUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5h
dGlvbklELCBNZXNzYWdlUmVjZWl2ZXImKTsKIAotICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2Vp
dmVyKFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lKTsKLSAgICB2b2lkIHJlbW92
ZU1lc3NhZ2VSZWNlaXZlcihTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgdWlu
dDY0X3QgZGVzdGluYXRpb25JRCk7CisgICAgdm9pZCByZW1vdmVNZXNzYWdlUmVjZWl2ZXIoUmVj
ZWl2ZXJOYW1lKTsKKyAgICB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihSZWNlaXZlck5hbWUs
IHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpOwogICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVy
KE1lc3NhZ2VSZWNlaXZlciYpOwogCiAgICAgdm9pZCBpbnZhbGlkYXRlKCk7CkBAIC01NiwxMSAr
NTYsOSBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgLy8gTWVzc2FnZSByZWNlaXZlcnMgdGhh
dCBkb24ndCByZXF1aXJlIGEgZGVzdGluYXRpb24gSUQuCi0gICAgSGFzaE1hcDxTdHJpbmdSZWZl
cmVuY2UsIE1lc3NhZ2VSZWNlaXZlcio+IG1fZ2xvYmFsTWVzc2FnZVJlY2VpdmVyczsKKyAgICBI
YXNoTWFwPHVpbnQ4X3QsIE1lc3NhZ2VSZWNlaXZlcio+IG1fZ2xvYmFsTWVzc2FnZVJlY2VpdmVy
czsKIAotICAgIEhhc2hNYXA8c3RkOjpwYWlyPFN0cmluZ1JlZmVyZW5jZSwgdWludDY0X3Q+LCBN
ZXNzYWdlUmVjZWl2ZXIqPiBtX21lc3NhZ2VSZWNlaXZlcnM7CisgICAgSGFzaE1hcDxzdGQ6OnBh
aXI8dWludDhfdCwgdWludDY0X3Q+LCBNZXNzYWdlUmVjZWl2ZXIqPiBtX21lc3NhZ2VSZWNlaXZl
cnM7CiB9OwogCiB9OwotCi0jZW5kaWYgLy8gTWVzc2FnZVJlY2VpdmVyTWFwX2gKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VTZW5kZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVyLmgJKHJldmlzaW9uIDI2MDc2
NCkKKysrIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VTZW5kZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBzdGF0aWNf
YXNzZXJ0KCFVOjppc1N5bmMsICJNZXNzYWdlIGlzIHN5bmMhIik7CiAKLSAgICAgICAgYXV0byBl
bmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNvZGVyPihVOjpyZWNlaXZlck5hbWUoKSwgVTo6bmFtZSgp
LCBkZXN0aW5hdGlvbklEKTsKKyAgICAgICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNv
ZGVyPihVOjpuYW1lKCksIGRlc3RpbmF0aW9uSUQpOwogICAgICAgICBlbmNvZGVyLT5lbmNvZGUo
bWVzc2FnZS5hcmd1bWVudHMoKSk7CiAgICAgICAgIAogICAgICAgICByZXR1cm4gc2VuZE1lc3Nh
Z2UoV1RGTW92ZShlbmNvZGVyKSwgc2VuZE9wdGlvbnMpOwpAQCAtODgsNyArODgsNyBAQCBwdWJs
aWM6CiAgICAgewogICAgICAgICBDT01QSUxFX0FTU0VSVCghVDo6aXNTeW5jLCBBc3luY01lc3Nh
Z2VFeHBlY3RlZCk7CiAKLSAgICAgICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZTxJUEM6OkVu
Y29kZXI+KFQ6OnJlY2VpdmVyTmFtZSgpLCBUOjpuYW1lKCksIGRlc3RpbmF0aW9uSUQpOworICAg
ICAgICBhdXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlPElQQzo6RW5jb2Rlcj4oVDo6bmFtZSgpLCBk
ZXN0aW5hdGlvbklEKTsKICAgICAgICAgdWludDY0X3QgbGlzdGVuZXJJRCA9IElQQzo6bmV4dEFz
eW5jUmVwbHlIYW5kbGVySUQoKTsKICAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKGxpc3RlbmVySUQp
OwogICAgICAgICBlbmNvZGVyLT5lbmNvZGUobWVzc2FnZS5hcmd1bWVudHMoKSk7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9Db25uZWN0aW9uQ29jb2EubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvQ29ubmVjdGlvbkNvY29h
Lm1tCShyZXZpc2lvbiAyNjA4MDcpCisrKyBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2Nv
YS9Db25uZWN0aW9uQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTIxNCw3ICsyMTQsNyBAQCBi
b29sIENvbm5lY3Rpb246Om9wZW4oKQogICAgICAgICBtX2lzQ29ubmVjdGVkID0gdHJ1ZTsKICAg
ICAgICAgCiAgICAgICAgIC8vIFNlbmQgdGhlIGluaXRpYWxpemUgbWVzc2FnZSwgd2hpY2ggY29u
dGFpbnMgYSBzZW5kIHJpZ2h0IGZvciB0aGUgc2VydmVyIHRvIHVzZS4KLSAgICAgICAgYXV0byBl
bmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNvZGVyPigiSVBDIiwgIkluaXRpYWxpemVDb25uZWN0aW9u
IiwgMCk7CisgICAgICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWU8RW5jb2Rlcj4oTWVzc2Fn
ZU5hbWU6OkluaXRpYWxpemVDb25uZWN0aW9uLCAwKTsKICAgICAgICAgZW5jb2Rlci0+ZW5jb2Rl
KE1hY2hQb3J0KG1fcmVjZWl2ZVBvcnQsIE1BQ0hfTVNHX1RZUEVfTUFLRV9TRU5EKSk7CiAKICAg
ICAgICAgaW5pdGlhbGl6ZVNlbmRTb3VyY2UoKTsKQEAgLTI3Myw3ICsyNzMsNyBAQCBib29sIENv
bm5lY3Rpb246OnNlbmRNZXNzYWdlKHN0ZDo6dW5pcXVlCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgIGRlZmF1bHQ6Ci0gICAgICAgIENTdHJpbmcgbWVzc2FnZU5hbWUgPSBtYWtlU3RyaW5n
KG1lc3NhZ2UtPm1lc3NhZ2VSZWNlaXZlck5hbWUoKS5kYXRhKCksICI6OiIsIG1lc3NhZ2UtPm1l
c3NhZ2VOYW1lKCkuZGF0YSgpKS51dGY4KCk7CisgICAgICAgIENTdHJpbmcgbWVzc2FnZU5hbWUo
ZGVzY3JpcHRpb24obWVzc2FnZS0+bWVzc2FnZU5hbWUoKSkpOwogICAgICAgICBXZWJLaXQ6OnNl
dENyYXNoUmVwb3J0QXBwbGljYXRpb25TcGVjaWZpY0luZm9ybWF0aW9uKChfX2JyaWRnZSBDRlN0
cmluZ1JlZilbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIlVuaGFuZGxlZCBlcnJvciBjb2Rl
ICV4LCBtZXNzYWdlICclcycsIGhhc2ggJWQiLCBrciwgbWVzc2FnZU5hbWUuZGF0YSgpLCBtZXNz
YWdlTmFtZS5oYXNoKCldKTsKICAgICAgICAgQ1JBU0hfV0lUSF9JTkZPKGtyLCBtZXNzYWdlTmFt
ZS5oYXNoKCkpOwogICAgIH0KQEAgLTMwOCw3ICszMDgsNyBAQCBib29sIENvbm5lY3Rpb246OnNl
bmRPdXRnb2luZ01lc3NhZ2Uoc3RkCiAgICAgfQogCiAgICAgc2l6ZV90IHNhZmVNZXNzYWdlU2l6
ZSA9IG1lc3NhZ2VTaXplLnVuc2FmZUdldCgpOwotICAgIGF1dG8gbWVzc2FnZSA9IE1hY2hNZXNz
YWdlOjpjcmVhdGUoZW5jb2Rlci0+bWVzc2FnZVJlY2VpdmVyTmFtZSgpLnRvU3RyaW5nKCksIGVu
Y29kZXItPm1lc3NhZ2VOYW1lKCkudG9TdHJpbmcoKSwgc2FmZU1lc3NhZ2VTaXplKTsKKyAgICBh
dXRvIG1lc3NhZ2UgPSBNYWNoTWVzc2FnZTo6Y3JlYXRlKGVuY29kZXItPm1lc3NhZ2VOYW1lKCks
IHNhZmVNZXNzYWdlU2l6ZSk7CiAgICAgaWYgKCFtZXNzYWdlKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKQEAgLTUzMiw3ICs1MzIsNyBAQCB2b2lkIENvbm5lY3Rpb246OnJlY2VpdmVTb3VyY2VF
dmVudEhhbmRsCiAgICAgZGVjb2Rlci0+c2V0SW1wb3J0YW5jZUFzc2VydGlvbihtYWtlVW5pcXVl
PEltcG9ydGFuY2VBc3NlcnRpb24+KGhlYWRlcikpOwogI2VuZGlmCiAKLSAgICBpZiAoZGVjb2Rl
ci0+bWVzc2FnZVJlY2VpdmVyTmFtZSgpID09ICJJUEMiICYmIGRlY29kZXItPm1lc3NhZ2VOYW1l
KCkgPT0gIkluaXRpYWxpemVDb25uZWN0aW9uIikgeworICAgIGlmIChkZWNvZGVyLT5tZXNzYWdl
TmFtZSgpID09IE1lc3NhZ2VOYW1lOjpJbml0aWFsaXplQ29ubmVjdGlvbikgewogICAgICAgICBB
U1NFUlQobV9pc1NlcnZlcik7CiAgICAgICAgIEFTU0VSVCghbV9pc0Nvbm5lY3RlZCk7CiAgICAg
ICAgIEFTU0VSVCghbV9zZW5kUG9ydCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9jb2NvYS9NYWNoTWVzc2FnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvY29jb2EvTWFjaE1lc3NhZ2UuY3BwCShyZXZpc2lvbiAyNjA3NjQpCisrKyBTb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9NYWNoTWVzc2FnZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM5LDE4ICszOSwxNyBAQCBzdGF0aWMgaW5saW5lIENoZWNrZWRTaXplIHNhZmVSb3Vu
ZE1zZyhDCiAgICAgcmV0dXJuICgodmFsdWUgKyAoYWxpZ25tZW50IC0gMSkpIC8gYWxpZ25tZW50
KSAqIGFsaWdubWVudDsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPE1hY2hNZXNzYWdlPiBNYWNoTWVz
c2FnZTo6Y3JlYXRlKENTdHJpbmcmJiBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBDU3RyaW5nJiYgbWVz
c2FnZU5hbWUsIHNpemVfdCBzaXplKQorc3RkOjp1bmlxdWVfcHRyPE1hY2hNZXNzYWdlPiBNYWNo
TWVzc2FnZTo6Y3JlYXRlKE1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lLCBzaXplX3Qgc2l6ZSkKIHsK
ICAgICBhdXRvIGJ1ZmZlclNpemUgPSBDaGVja2VkU2l6ZShzaXplb2YoTWFjaE1lc3NhZ2UpKSAr
IHNpemU7CiAgICAgaWYgKGJ1ZmZlclNpemUuaGFzT3ZlcmZsb3dlZCgpKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICB2b2lkKiBtZW1vcnkgPSBXVEY6OmZhc3RaZXJvZWRNYWxsb2MoYnVm
ZmVyU2l6ZS51bnNhZmVHZXQoKSk7Ci0gICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxNYWNoTWVz
c2FnZT4geyBuZXcgKE5vdE51bGwsIG1lbW9yeSkgTWFjaE1lc3NhZ2UgeyBXVEZNb3ZlKG1lc3Nh
Z2VSZWNlaXZlck5hbWUpLCBXVEZNb3ZlKG1lc3NhZ2VOYW1lKSwgc2l6ZSB9IH07CisgICAgcmV0
dXJuIHN0ZDo6dW5pcXVlX3B0cjxNYWNoTWVzc2FnZT4geyBuZXcgKE5vdE51bGwsIG1lbW9yeSkg
TWFjaE1lc3NhZ2UgeyBtZXNzYWdlTmFtZSwgc2l6ZSB9IH07CiB9CiAKLU1hY2hNZXNzYWdlOjpN
YWNoTWVzc2FnZShDU3RyaW5nJiYgbWVzc2FnZVJlY2VpdmVyTmFtZSwgQ1N0cmluZyYmIG1lc3Nh
Z2VOYW1lLCBzaXplX3Qgc2l6ZSkKLSAgICA6IG1fbWVzc2FnZVJlY2VpdmVyTmFtZShXVEZNb3Zl
KG1lc3NhZ2VSZWNlaXZlck5hbWUpKQotICAgICwgbV9tZXNzYWdlTmFtZShXVEZNb3ZlKG1lc3Nh
Z2VOYW1lKSkKK01hY2hNZXNzYWdlOjpNYWNoTWVzc2FnZShNZXNzYWdlTmFtZSBtZXNzYWdlTmFt
ZSwgc2l6ZV90IHNpemUpCisgICAgOiBtX21lc3NhZ2VOYW1lIHsgbWVzc2FnZU5hbWUgfQogICAg
ICwgbV9zaXplIHsgc2l6ZSB9CiB7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9jb2NvYS9NYWNoTWVzc2FnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL2NvY29hL01hY2hNZXNzYWdlLmgJKHJldmlzaW9uIDI2MDc2NCkKKysrIFNvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL01hY2hNZXNzYWdlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI3LDYgKzI3LDcgQEAKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogCisjaW5jbHVkZSAiTWVzc2Fn
ZU5hbWVzLmgiCiAjaW5jbHVkZSA8bWFjaC9tZXNzYWdlLmg+CiAjaW5jbHVkZSA8bWVtb3J5Pgog
I2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgpAQCAtMzcsNyArMzgsNyBAQCBuYW1l
c3BhY2UgSVBDIHsKIGNsYXNzIE1hY2hNZXNzYWdlIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPE1hY2hNZXNzYWdlPiBj
cmVhdGUoQ1N0cmluZyYmIG1lc3NhZ2VSZWNlaXZlck5hbWUsIENTdHJpbmcmJiBtZXNzYWdlTmFt
ZSwgc2l6ZV90KTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPE1hY2hNZXNzYWdlPiBjcmVh
dGUoTWVzc2FnZU5hbWUsIHNpemVfdCk7CiAgICAgfk1hY2hNZXNzYWdlKCk7CiAKICAgICBzdGF0
aWMgQ2hlY2tlZFNpemUgbWVzc2FnZVNpemUoc2l6ZV90IGJvZHlTaXplLCBzaXplX3QgcG9ydERl
c2NyaXB0b3JDb3VudCwgc2l6ZV90IG1lbW9yeURlc2NyaXB0b3JDb3VudCk7CkBAIC00NywxNCAr
NDgsMTMgQEAgcHVibGljOgogCiAgICAgdm9pZCBsZWFrRGVzY3JpcHRvcnMoKTsKIAotICAgIGNv
bnN0IENTdHJpbmcmIG1lc3NhZ2VSZWNlaXZlck5hbWUoKSBjb25zdCB7IHJldHVybiBtX21lc3Nh
Z2VSZWNlaXZlck5hbWU7IH0KLSAgICBjb25zdCBDU3RyaW5nJiBtZXNzYWdlTmFtZSgpIGNvbnN0
IHsgcmV0dXJuIG1fbWVzc2FnZU5hbWU7IH0KKyAgICBSZWNlaXZlck5hbWUgbWVzc2FnZVJlY2Vp
dmVyTmFtZSgpIGNvbnN0IHsgcmV0dXJuIHJlY2VpdmVyTmFtZShtX21lc3NhZ2VOYW1lKTsgfQor
ICAgIE1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lKCkgY29uc3QgeyByZXR1cm4gbV9tZXNzYWdlTmFt
ZTsgfQogCiBwcml2YXRlOgotICAgIE1hY2hNZXNzYWdlKENTdHJpbmcmJiBtZXNzYWdlUmVjZWl2
ZXJOYW1lLCBDU3RyaW5nJiYgbWVzc2FnZU5hbWUsIHNpemVfdCk7CisgICAgTWFjaE1lc3NhZ2Uo
TWVzc2FnZU5hbWUsIHNpemVfdCk7CiAKLSAgICBDU3RyaW5nIG1fbWVzc2FnZVJlY2VpdmVyTmFt
ZTsKLSAgICBDU3RyaW5nIG1fbWVzc2FnZU5hbWU7CisgICAgTWVzc2FnZU5hbWUgbV9tZXNzYWdl
TmFtZTsKICAgICBzaXplX3QgbV9zaXplOwogICAgIGJvb2wgbV9zaG91bGRGcmVlRGVzY3JpcHRv
cnMgeyB0cnVlIH07CiAgICAgbWFjaF9tc2dfaGVhZGVyX3QgbV9tZXNzYWdlSGVhZGVyW107Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29u
bmVjdGlvbi5jcHAJKHJldmlzaW9uIDI2MDc2NCkKKysrIFNvdXJjZS9XZWJLaXQvUGx1Z2luUHJv
Y2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwNSw3ICsy
MDUsNyBAQCB2b2lkIFdlYlByb2Nlc3NDb25uZWN0aW9uOjpkZXN0cm95UGx1Z2luCiAgICAgZGVz
dHJveVBsdWdpbkNvbnRyb2xsZXJQcm94eShwbHVnaW5Db250cm9sbGVyUHJveHkpOwogfQogCi12
b2lkIFdlYlByb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSVBDOjpTdHJpbmdSZWZlcmVuY2UsIElQQzo6U3RyaW5nUmVmZXJlbmNlKQor
dm9pZCBXZWJQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZU5hbWUpCiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVu
dC4KIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVj
dGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9XZWJQcm9j
ZXNzQ29ubmVjdGlvbi5oCShyZXZpc2lvbiAyNjA3NjQpCisrKyBTb3VyY2UvV2ViS2l0L1BsdWdp
blByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNjQsNyAr
NjQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlU3luY01l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQ
Qzo6RW5jb2Rlcj4mKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZENsb3NlKElQQzo6Q29ubmVjdGlv
biYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIElQQzo6
U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2Vp
dmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VOYW1lKSBvdmVy
cmlkZTsKIAogICAgIC8vIE1lc3NhZ2UgaGFuZGxlcnMuCiAgICAgdm9pZCBkaWRSZWNlaXZlV2Vi
UHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYp
OwpJbmRleDogU291cmNlL1dlYktpdC9TY3JpcHRzL01ha2VmaWxlCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvU2NyaXB0cy9NYWtlZmlsZQkocmV2aXNpb24gMjYwNzY0KQorKysgU291cmNl
L1dlYktpdC9TY3JpcHRzL01ha2VmaWxlCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsMiBAQAog
YWxsOgotCXB5dGhvbiAuL2dlbmVyYXRlLW1lc3NhZ2UtcmVjZWl2ZXIucHkgd2Via2l0L3Rlc3Qt
c3VwZXJjbGFzcy1tZXNzYWdlcy5pbiAtLWltcGxlbWVudGF0aW9uIHdlYmtpdC9NZXNzYWdlUmVj
ZWl2ZXJTdXBlcmNsYXNzLWV4cGVjdGVkLmNwcCAtLWhlYWRlciB3ZWJraXQvTWVzc2FnZXNTdXBl
cmNsYXNzLWV4cGVjdGVkLmggLS1yZXBseS1oZWFkZXIgd2Via2l0L01lc3NhZ2VzUmVwbGllc1N1
cGVyY2xhc3NSZXBsaWVzLWV4cGVjdGVkLmgKLQlweXRob24gLi9nZW5lcmF0ZS1tZXNzYWdlLXJl
Y2VpdmVyLnB5IHdlYmtpdC90ZXN0LWxlZ2FjeS1tZXNzYWdlcy5pbiAtLWltcGxlbWVudGF0aW9u
IHdlYmtpdC9MZWdhY3lNZXNzYWdlUmVjZWl2ZXItZXhwZWN0ZWQuY3BwIC0taGVhZGVyIHdlYmtp
dC9MZWdhY3lNZXNzYWdlcy1leHBlY3RlZC5oIC0tcmVwbHktaGVhZGVyIHdlYmtpdC9MZWdhY3lN
ZXNzYWdlc1JlcGxpZXMtZXhwZWN0ZWQuaAotCXB5dGhvbiAuL2dlbmVyYXRlLW1lc3NhZ2UtcmVj
ZWl2ZXIucHkgd2Via2l0L3Rlc3QtbWVzc2FnZXMuaW4gLS1pbXBsZW1lbnRhdGlvbiB3ZWJraXQv
TWVzc2FnZVJlY2VpdmVyLWV4cGVjdGVkLmNwcCAtLWhlYWRlciB3ZWJraXQvTWVzc2FnZXMtZXhw
ZWN0ZWQuaCAtLXJlcGx5LWhlYWRlciB3ZWJraXQvTWVzc2FnZXNSZXBsaWVzLWV4cGVjdGVkLmgK
LQorCWNkIHdlYmtpdCAmJiBweXRob24gLi4vZ2VuZXJhdGUtbWVzc2FnZS1yZWNlaXZlci5weSB0
ZXN0LXN1cGVyY2xhc3MgdGVzdC1sZWdhY3kgdGVzdCAmJiBjZCAuLgpJbmRleDogU291cmNlL1dl
YktpdC9TY3JpcHRzL2dlbmVyYXRlLW1lc3NhZ2UtcmVjZWl2ZXIucHkKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9TY3JpcHRzL2dlbmVyYXRlLW1lc3NhZ2UtcmVjZWl2ZXIucHkJKHJldmlz
aW9uIDI2MDc2NCkKKysrIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy9nZW5lcmF0ZS1tZXNzYWdlLXJl
Y2VpdmVyLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yMywzMyArMjMsNDIgQEAKICMgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KIAogZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCB3aXRoX3N0YXRlbWVudAotaW1wb3J0IGFyZ3Bh
cnNlCiBpbXBvcnQgc3lzCiAKIGltcG9ydCB3ZWJraXQubWVzc2FnZXMKIGltcG9ydCB3ZWJraXQu
cGFyc2VyCiAKIAotZGVmIG1haW4oYXJndj1Ob25lKToKLSAgICBwYXJzZXIgPSBhcmdwYXJzZS5B
cmd1bWVudFBhcnNlcigpCi0gICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnc291cmNlJykKLSAgICBw
YXJzZXIuYWRkX2FyZ3VtZW50KCctLWltcGxlbWVudGF0aW9uJywgcmVxdWlyZWQ9VHJ1ZSkKLSAg
ICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLWhlYWRlcicsIHJlcXVpcmVkPVRydWUpCi0gICAgcGFy
c2VyLmFkZF9hcmd1bWVudCgnLS1yZXBseS1oZWFkZXInLCByZXF1aXJlZD1UcnVlKQotCi0gICAg
YXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKCkKLQotICAgIHdpdGggb3BlbihhcmdzLnNvdXJjZSkg
YXMgc291cmNlX2ZpbGU6Ci0gICAgICAgIHJlY2VpdmVyID0gd2Via2l0LnBhcnNlci5wYXJzZShz
b3VyY2VfZmlsZSkKK2RlZiBtYWluKGFyZ3YpOgorICAgIHJlY2VpdmVycyA9IFtdCiAKLSAgICB3
aXRoIG9wZW4oYXJncy5pbXBsZW1lbnRhdGlvbiwgIncrIikgYXMgaW1wbGVtZW50YXRpb25fb3V0
cHV0OgotICAgICAgICBpbXBsZW1lbnRhdGlvbl9vdXRwdXQud3JpdGUod2Via2l0Lm1lc3NhZ2Vz
LmdlbmVyYXRlX21lc3NhZ2VfaGFuZGxlcihyZWNlaXZlcikpCisgICAgZmlyc3RfYXJnID0gVHJ1
ZQorICAgIGZvciBwYXRoX3dpdGhvdXRfbWVzc2FnZXNfaW5fc3VmZml4IGluIGFyZ3Y6CisgICAg
ICAgIGlmIGZpcnN0X2FyZzoKKyAgICAgICAgICAgIGZpcnN0X2FyZyA9IEZhbHNlCisgICAgICAg
ICAgICBjb250aW51ZQogCi0gICAgd2l0aCBvcGVuKGFyZ3MuaGVhZGVyLCAidysiKSBhcyBoZWFk
ZXJfb3V0cHV0OgotICAgICAgICBoZWFkZXJfb3V0cHV0LndyaXRlKHdlYmtpdC5tZXNzYWdlcy5n
ZW5lcmF0ZV9tZXNzYWdlc19oZWFkZXIocmVjZWl2ZXIpKQorICAgICAgICByZWNlaXZlcl9uYW1l
ID0gcGF0aF93aXRob3V0X21lc3NhZ2VzX2luX3N1ZmZpeC5yc3BsaXQoJy8nLCAxKS5wb3AoKQor
ICAgICAgICBwcmludCAnR2VuZXJhdGluZyBtZXNzYWdlIHJlY2VpdmVyIGZvciAlcycgJSByZWNl
aXZlcl9uYW1lCiAKLSAgICB3aXRoIG9wZW4oYXJncy5yZXBseV9oZWFkZXIsICJ3KyIpIGFzIHJl
cGx5X2hlYWRlcl9vdXRwdXQ6Ci0gICAgICAgIHJlcGx5X2hlYWRlcl9vdXRwdXQud3JpdGUod2Vi
a2l0Lm1lc3NhZ2VzLmdlbmVyYXRlX21lc3NhZ2VzX3JlcGx5X2hlYWRlcihyZWNlaXZlcikpCisg
ICAgICAgIHdpdGggb3BlbignJXMubWVzc2FnZXMuaW4nICUgcGF0aF93aXRob3V0X21lc3NhZ2Vz
X2luX3N1ZmZpeCkgYXMgc291cmNlX2ZpbGU6CisgICAgICAgICAgICByZWNlaXZlciA9IHdlYmtp
dC5wYXJzZXIucGFyc2Uoc291cmNlX2ZpbGUpCisgICAgICAgIHJlY2VpdmVycy5hcHBlbmQocmVj
ZWl2ZXIpCisKKyAgICAgICAgd2l0aCBvcGVuKCclc01lc3NhZ2VSZWNlaXZlci5jcHAnICUgcmVj
ZWl2ZXJfbmFtZSwgIncrIikgYXMgaW1wbGVtZW50YXRpb25fb3V0cHV0OgorICAgICAgICAgICAg
aW1wbGVtZW50YXRpb25fb3V0cHV0LndyaXRlKHdlYmtpdC5tZXNzYWdlcy5nZW5lcmF0ZV9tZXNz
YWdlX2hhbmRsZXIocmVjZWl2ZXIpKQorCisgICAgICAgIHdpdGggb3BlbignJXNNZXNzYWdlcy5o
JyAlIHJlY2VpdmVyX25hbWUsICJ3KyIpIGFzIGhlYWRlcl9vdXRwdXQ6CisgICAgICAgICAgICBo
ZWFkZXJfb3V0cHV0LndyaXRlKHdlYmtpdC5tZXNzYWdlcy5nZW5lcmF0ZV9tZXNzYWdlc19oZWFk
ZXIocmVjZWl2ZXIpKQorCisgICAgICAgIHdpdGggb3BlbignJXNNZXNzYWdlc1JlcGxpZXMuaCcg
JSByZWNlaXZlcl9uYW1lLCAidysiKSBhcyByZXBseV9oZWFkZXJfb3V0cHV0OgorICAgICAgICAg
ICAgcmVwbHlfaGVhZGVyX291dHB1dC53cml0ZSh3ZWJraXQubWVzc2FnZXMuZ2VuZXJhdGVfbWVz
c2FnZXNfcmVwbHlfaGVhZGVyKHJlY2VpdmVyKSkKKworICAgIHdpdGggb3BlbignTWVzc2FnZU5h
bWVzLmgnLCAidysiKSBhcyBtZXNzYWdlX25hbWVzX2hlYWRlcl9vdXRwdXQ6CisgICAgICAgIG1l
c3NhZ2VfbmFtZXNfaGVhZGVyX291dHB1dC53cml0ZSh3ZWJraXQubWVzc2FnZXMuZ2VuZXJhdGVf
bWVzc2FnZV9uYW1lc19oZWFkZXIocmVjZWl2ZXJzKSkKKworICAgIHdpdGggb3BlbignTWVzc2Fn
ZU5hbWVzLmNwcCcsICJ3KyIpIGFzIG1lc3NhZ2VfbmFtZXNfaW1wbGVtZW50YXRpb25fb3V0cHV0
OgorICAgICAgICBtZXNzYWdlX25hbWVzX2ltcGxlbWVudGF0aW9uX291dHB1dC53cml0ZSh3ZWJr
aXQubWVzc2FnZXMuZ2VuZXJhdGVfbWVzc2FnZV9uYW1lc19pbXBsZW1lbnRhdGlvbihyZWNlaXZl
cnMpKQogCiAgICAgcmV0dXJuIDAKIApJbmRleDogU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtp
dC9MZWdhY3lNZXNzYWdlcy1leHBlY3RlZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
U2NyaXB0cy93ZWJraXQvTGVnYWN5TWVzc2FnZXMtZXhwZWN0ZWQuaAkocmV2aXNpb24gMjYwNzY0
KQorKysgU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9MZWdhY3lNZXNzYWdlcy1leHBlY3Rl
ZC5oCShub25leGlzdGVudCkKQEAgLTEsNTcwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTAtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnIEFORAotICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0gKiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0gKiBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUgotICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSAqIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksCi0gKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
cHJhZ21hIG9uY2UKLQotI2lmIChFTkFCTEUoV0VCS0lUMikgJiYgKE5FU1RFRF9NQVNURVJfQ09O
RElUSU9OIHx8IE1BU1RFUl9PUiAmJiBNQVNURVJfQU5EKSkKLQotI2luY2x1ZGUgIkFyZ3VtZW50
Q29kZXJzLmgiCi0jaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgotI2luY2x1ZGUgIlBsdWdpbi5oIgot
I2luY2x1ZGUgIldlYlBhZ2VNZXNzYWdlc1JlcGxpZXMuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0dy
YXBoaWNzTGF5ZXIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0tleWJvYXJkRXZlbnQuaD4KLSNpbmNs
dWRlIDxXZWJDb3JlL1BsdWdpbkRhdGEuaD4KLSNpbmNsdWRlIDx1dGlsaXR5PgotI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYv
VGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0jaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBJUEMgewotY2xhc3MgRHVtbXlU
eXBlOwotY2xhc3MgTWFjaFBvcnQ7Ci19Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotY2xhc3MgV2Vi
UHJlZmVyZW5jZXNTdG9yZTsKLWNsYXNzIFdlYlRvdWNoRXZlbnQ7Ci19Ci0KLW5hbWVzcGFjZSBN
ZXNzYWdlcyB7Ci1uYW1lc3BhY2UgV2ViUGFnZSB7Ci0KLXN0YXRpYyBpbmxpbmUgSVBDOjpTdHJp
bmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSgpCi17Ci0gICAgcmV0dXJuIElQQzo6U3Ry
aW5nUmVmZXJlbmNlKCJXZWJQYWdlIik7Ci19Ci0KLWNsYXNzIExvYWRVUkwgewotcHVibGljOgot
ICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBTdHJpbmcmPiBBcmd1bWVudHM7Ci0KLSAgICBz
dGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUo
KSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiTG9hZFVSTCIpOyB9Ci0gICAgc3RhdGlj
IGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7Ci0KLSAgICBleHBsaWNpdCBMb2FkVVJMKGNvbnN0
IFN0cmluZyYgdXJsKQotICAgICAgICA6IG1fYXJndW1lbnRzKHVybCkKLSAgICB7Ci0gICAgfQot
Ci0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsKLSAgICAgICAg
cmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1bWVudHMgbV9h
cmd1bWVudHM7Ci19OwotCi0jaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLWNsYXNzIExvYWRTb21l
dGhpbmcgewotcHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBTdHJpbmcmPiBB
cmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1l
KCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6U3Ry
aW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiTG9hZFNv
bWV0aGluZyIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7Ci0KLSAg
ICBleHBsaWNpdCBMb2FkU29tZXRoaW5nKGNvbnN0IFN0cmluZyYgdXJsKQotICAgICAgICA6IG1f
YXJndW1lbnRzKHVybCkKLSAgICB7Ci0gICAgfQotCi0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1
bWVudHMoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0K
LQotcHJpdmF0ZToKLSAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19OwotI2VuZGlmCi0KLSNp
ZiAoRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgKE5FU1RFRF9NRVNTQUdFX0NPTkRJVElPTiB8fCBT
T01FX09USEVSX01FU1NBR0VfQ09ORElUSU9OKSkKLWNsYXNzIFRvdWNoRXZlbnQgewotcHVibGlj
OgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBXZWJLaXQ6OldlYlRvdWNoRXZlbnQmPiBB
cmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1l
KCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6U3Ry
aW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiVG91Y2hF
dmVudCIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7Ci0KLSAgICBl
eHBsaWNpdCBUb3VjaEV2ZW50KGNvbnN0IFdlYktpdDo6V2ViVG91Y2hFdmVudCYgZXZlbnQpCi0g
ICAgICAgIDogbV9hcmd1bWVudHMoZXZlbnQpCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0IEFy
Z3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3Vt
ZW50czsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsK
LSNlbmRpZgotCi0jaWYgKEVOQUJMRShUT1VDSF9FVkVOVFMpICYmIChORVNURURfTUVTU0FHRV9D
T05ESVRJT04gJiYgU09NRV9PVEhFUl9NRVNTQUdFX0NPTkRJVElPTikpCi1jbGFzcyBBZGRFdmVu
dCB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGNvbnN0IFdlYktpdDo6V2ViVG91
Y2hFdmVudCY+IEFyZ3VtZW50czsKLQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBy
ZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0
aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJl
bmNlKCJBZGRFdmVudCIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7
Ci0KLSAgICBleHBsaWNpdCBBZGRFdmVudChjb25zdCBXZWJLaXQ6OldlYlRvdWNoRXZlbnQmIGV2
ZW50KQotICAgICAgICA6IG1fYXJndW1lbnRzKGV2ZW50KQotICAgIHsKLSAgICB9Ci0KLSAgICBj
b25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4g
bV9hcmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50
czsKLX07Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCi1jbGFzcyBMb2FkU29t
ZXRoaW5nRWxzZSB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGNvbnN0IFN0cmlu
ZyY+IEFyZ3VtZW50czsKLQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZl
ck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMgSVBD
OjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJM
b2FkU29tZXRoaW5nRWxzZSIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFs
c2U7Ci0KLSAgICBleHBsaWNpdCBMb2FkU29tZXRoaW5nRWxzZShjb25zdCBTdHJpbmcmIHVybCkK
LSAgICAgICAgOiBtX2FyZ3VtZW50cyh1cmwpCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0IEFy
Z3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3Vt
ZW50czsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsK
LSNlbmRpZgotCi1jbGFzcyBEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24gewotcHVibGljOgotICAg
IHR5cGVkZWYgc3RkOjp0dXBsZTx1aW50NjRfdCwgdWludDY0X3QsIHVpbnQzMl90PiBBcmd1bWVu
dHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyBy
ZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVm
ZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiRGlkUmVjZWl2ZVBv
bGljeURlY2lzaW9uIik7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsK
LQotICAgIERpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbih1aW50NjRfdCBmcmFtZUlELCB1aW50NjRf
dCBsaXN0ZW5lcklELCB1aW50MzJfdCBwb2xpY3lBY3Rpb24pCi0gICAgICAgIDogbV9hcmd1bWVu
dHMoZnJhbWVJRCwgbGlzdGVuZXJJRCwgcG9saWN5QWN0aW9uKQotICAgIHsKLSAgICB9Ci0KLSAg
ICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1
cm4gbV9hcmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3Vt
ZW50czsKLX07Ci0KLWNsYXNzIENsb3NlIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVw
bGU8PiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2
ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGljIElQ
Qzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgi
Q2xvc2UiKTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOwotCi0gICAg
Y29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJu
IG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1bWVudHMgbV9hcmd1bWVu
dHM7Ci19OwotCi1jbGFzcyBQcmVmZXJlbmNlc0RpZENoYW5nZSB7Ci1wdWJsaWM6Ci0gICAgdHlw
ZWRlZiBzdGQ6OnR1cGxlPGNvbnN0IFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZSY+IEFyZ3Vt
ZW50czsKLQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7
IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdS
ZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJQcmVmZXJlbmNl
c0RpZENoYW5nZSIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7Ci0K
LSAgICBleHBsaWNpdCBQcmVmZXJlbmNlc0RpZENoYW5nZShjb25zdCBXZWJLaXQ6OldlYlByZWZl
cmVuY2VzU3RvcmUmIHN0b3JlKQotICAgICAgICA6IG1fYXJndW1lbnRzKHN0b3JlKQotICAgIHsK
LSAgICB9Ci0KLSAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewot
ICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3Vt
ZW50cyBtX2FyZ3VtZW50czsKLX07Ci0KLWNsYXNzIFNlbmREb3VibGVBbmRGbG9hdCB7Ci1wdWJs
aWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGRvdWJsZSwgZmxvYXQ+IEFyZ3VtZW50czsKLQot
ICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVybiBt
ZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2Ug
bmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJTZW5kRG91YmxlQW5kRmxvYXQi
KTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOwotCi0gICAgU2VuZERv
dWJsZUFuZEZsb2F0KGRvdWJsZSBkLCBmbG9hdCBmKQotICAgICAgICA6IG1fYXJndW1lbnRzKGQs
IGYpCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29u
c3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0KLXByaXZhdGU6
Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLQotY2xhc3MgU2VuZEludHMgewotcHVi
bGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBWZWN0b3I8dWludDY0X3Q+JiwgY29u
c3QgVmVjdG9yPFZlY3Rvcjx1aW50NjRfdD4+Jj4gQXJndW1lbnRzOwotCi0gICAgc3RhdGljIElQ
Qzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZl
ck5hbWUoKTsgfQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1
cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIlNlbmRJbnRzIik7IH0KLSAgICBzdGF0aWMgY29uc3Qg
Ym9vbCBpc1N5bmMgPSBmYWxzZTsKLQotICAgIFNlbmRJbnRzKGNvbnN0IFZlY3Rvcjx1aW50NjRf
dD4mIGludHMsIGNvbnN0IFZlY3RvcjxWZWN0b3I8dWludDY0X3Q+PiYgaW50VmVjdG9ycykKLSAg
ICAgICAgOiBtX2FyZ3VtZW50cyhpbnRzLCBpbnRWZWN0b3JzKQotICAgIHsKLSAgICB9Ci0KLSAg
ICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1
cm4gbV9hcmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3Vt
ZW50czsKLX07Ci0KLWNsYXNzIENyZWF0ZVBsdWdpbiB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBz
dGQ6OnR1cGxlPHVpbnQ2NF90LCBjb25zdCBXZWJLaXQ6OlBsdWdpbjo6UGFyYW1ldGVycyY+IEFy
Z3VtZW50czsKLQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUo
KSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJp
bmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJDcmVhdGVQ
bHVnaW4iKTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IHRydWU7Ci0KLSAgICB1
c2luZyBSZXBseSA9IHN0ZDo6dHVwbGU8Ym9vbCY+OwotICAgIHVzaW5nIFJlcGx5QXJndW1lbnRz
ID0gc3RkOjp0dXBsZTxib29sPjsKLSAgICBDcmVhdGVQbHVnaW4odWludDY0X3QgcGx1Z2luSW5z
dGFuY2VJRCwgY29uc3QgV2ViS2l0OjpQbHVnaW46OlBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCi0g
ICAgICAgIDogbV9hcmd1bWVudHMocGx1Z2luSW5zdGFuY2VJRCwgcGFyYW1ldGVycykKLSAgICB7
Ci0gICAgfQotCi0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsK
LSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1
bWVudHMgbV9hcmd1bWVudHM7Ci19OwotCi1jbGFzcyBSdW5KYXZhU2NyaXB0QWxlcnQgewotcHVi
bGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTx1aW50NjRfdCwgY29uc3QgU3RyaW5nJj4gQXJn
dW1lbnRzOwotCi0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgp
IHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsgfQotICAgIHN0YXRpYyBJUEM6OlN0cmlu
Z1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIlJ1bkphdmFT
Y3JpcHRBbGVydCIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gdHJ1ZTsKLQot
ICAgIHVzaW5nIFJlcGx5ID0gc3RkOjp0dXBsZTw+OwotICAgIHVzaW5nIFJlcGx5QXJndW1lbnRz
ID0gc3RkOjp0dXBsZTw+OwotICAgIFJ1bkphdmFTY3JpcHRBbGVydCh1aW50NjRfdCBmcmFtZUlE
LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCi0gICAgICAgIDogbV9hcmd1bWVudHMoZnJhbWVJRCwg
bWVzc2FnZSkKLSAgICB7Ci0gICAgfQotCi0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMo
KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJp
dmF0ZToKLSAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19OwotCi1jbGFzcyBHZXRQbHVnaW5z
IHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8Ym9vbD4gQXJndW1lbnRzOwotCi0g
ICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1l
c3NhZ2VSZWNlaXZlck5hbWUoKTsgfQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBu
YW1lKCkgeyByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIkdldFBsdWdpbnMiKTsgfQotICAg
IHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IHRydWU7Ci0KLSAgICB1c2luZyBSZXBseSA9IHN0
ZDo6dHVwbGU8VmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+Jj47Ci0gICAgdXNpbmcgUmVwbHlB
cmd1bWVudHMgPSBzdGQ6OnR1cGxlPFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPj47Ci0gICAg
ZXhwbGljaXQgR2V0UGx1Z2lucyhib29sIHJlZnJlc2gpCi0gICAgICAgIDogbV9hcmd1bWVudHMo
cmVmcmVzaCkKLSAgICB7Ci0gICAgfQotCi0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMo
KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJp
dmF0ZToKLSAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19OwotCi1jbGFzcyBHZXRQbHVnaW5Q
cm9jZXNzQ29ubmVjdGlvbiB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGNvbnN0
IFN0cmluZyY+IEFyZ3VtZW50czsKLQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBy
ZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0
aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJl
bmNlKCJHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbiIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJv
b2wgaXNTeW5jID0gdHJ1ZTsKLQotICAgIHVzaW5nIERlbGF5ZWRSZXBseSA9IEdldFBsdWdpblBy
b2Nlc3NDb25uZWN0aW9uRGVsYXllZFJlcGx5OwotICAgIHN0YXRpYyB2b2lkIHNlbmQoc3RkOjp1
bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mJiwgSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgSVBDOjpD
b25uZWN0aW9uOjpIYW5kbGUmIGNvbm5lY3Rpb25IYW5kbGUpOwotICAgIHVzaW5nIFJlcGx5ID0g
c3RkOjp0dXBsZTxJUEM6OkNvbm5lY3Rpb246OkhhbmRsZSY+OwotICAgIHVzaW5nIFJlcGx5QXJn
dW1lbnRzID0gc3RkOjp0dXBsZTxJUEM6OkNvbm5lY3Rpb246OkhhbmRsZT47Ci0gICAgZXhwbGlj
aXQgR2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24oY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoKQot
ICAgICAgICA6IG1fYXJndW1lbnRzKHBsdWdpblBhdGgpCi0gICAgewotICAgIH0KLQotICAgIGNv
bnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBt
X2FyZ3VtZW50czsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRz
OwotfTsKLQotY2xhc3MgVGVzdE11bHRpcGxlQXR0cmlidXRlcyB7Ci1wdWJsaWM6Ci0gICAgdHlw
ZWRlZiBzdGQ6OnR1cGxlPD4gQXJndW1lbnRzOwotCi0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVm
ZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsgfQot
ICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpTdHJp
bmdSZWZlcmVuY2UoIlRlc3RNdWx0aXBsZUF0dHJpYnV0ZXMiKTsgfQotICAgIHN0YXRpYyBjb25z
dCBib29sIGlzU3luYyA9IHRydWU7Ci0KLSAgICB1c2luZyBEZWxheWVkUmVwbHkgPSBUZXN0TXVs
dGlwbGVBdHRyaWJ1dGVzRGVsYXllZFJlcGx5OwotICAgIHN0YXRpYyB2b2lkIHNlbmQoc3RkOjp1
bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mJiwgSVBDOjpDb25uZWN0aW9uJik7Ci0gICAgdXNpbmcg
UmVwbHkgPSBzdGQ6OnR1cGxlPD47Ci0gICAgdXNpbmcgUmVwbHlBcmd1bWVudHMgPSBzdGQ6OnR1
cGxlPD47Ci0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsKLSAg
ICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1bWVu
dHMgbV9hcmd1bWVudHM7Ci19OwotCi1jbGFzcyBUZXN0UGFyYW1ldGVyQXR0cmlidXRlcyB7Ci1w
dWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPHVpbnQ2NF90LCBkb3VibGUsIGRvdWJsZT4g
QXJndW1lbnRzOwotCi0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFt
ZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsgfQotICAgIHN0YXRpYyBJUEM6OlN0
cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIlRlc3RQ
YXJhbWV0ZXJBdHRyaWJ1dGVzIik7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBm
YWxzZTsKLQotICAgIFRlc3RQYXJhbWV0ZXJBdHRyaWJ1dGVzKHVpbnQ2NF90IGZvbywgZG91Ymxl
IGJhciwgZG91YmxlIGJheikKLSAgICAgICAgOiBtX2FyZ3VtZW50cyhmb28sIGJhciwgYmF6KQot
ICAgIHsKLSAgICB9Ci0KLSAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0g
ICAgewotICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRlOgotICAg
IEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKLX07Ci0KLWNsYXNzIFRlbXBsYXRlVGVzdCB7Ci1wdWJs
aWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBzdGQ6OnBh
aXI8U3RyaW5nLCB1aW50NjRfdD4+Jj4gQXJndW1lbnRzOwotCi0gICAgc3RhdGljIElQQzo6U3Ry
aW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUo
KTsgfQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBD
OjpTdHJpbmdSZWZlcmVuY2UoIlRlbXBsYXRlVGVzdCIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJv
b2wgaXNTeW5jID0gZmFsc2U7Ci0KLSAgICBleHBsaWNpdCBUZW1wbGF0ZVRlc3QoY29uc3QgSGFz
aE1hcDxTdHJpbmcsIHN0ZDo6cGFpcjxTdHJpbmcsIHVpbnQ2NF90Pj4mIGEpCi0gICAgICAgIDog
bV9hcmd1bWVudHMoYSkKLSAgICB7Ci0gICAgfQotCi0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1
bWVudHMoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0K
LQotcHJpdmF0ZToKLSAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19OwotCi1jbGFzcyBTZXRW
aWRlb0xheWVySUQgewotcHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBXZWJD
b3JlOjpHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQmPiBBcmd1bWVudHM7Ci0KLSAgICBz
dGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUo
KSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiU2V0VmlkZW9MYXllcklEIik7IH0KLSAg
ICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKLQotICAgIGV4cGxpY2l0IFNldFZp
ZGVvTGF5ZXJJRChjb25zdCBXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQm
IHZpZGVvTGF5ZXJJRCkKLSAgICAgICAgOiBtX2FyZ3VtZW50cyh2aWRlb0xheWVySUQpCi0gICAg
ewotICAgIH0KLQotICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKLSAgICB7
Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJn
dW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLQotI2lmIFBMQVRGT1JNKE1BQykKLWNsYXNzIERpZENy
ZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVw
bGU8Y29uc3QgSVBDOjpNYWNoUG9ydCY+IEFyZ3VtZW50czsKLQotICAgIHN0YXRpYyBJUEM6OlN0
cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1l
KCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQ
Qzo6U3RyaW5nUmVmZXJlbmNlKCJEaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbiIpOyB9Ci0g
ICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7Ci0KLSAgICBleHBsaWNpdCBEaWRD
cmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbihjb25zdCBJUEM6Ok1hY2hQb3J0JiBjb25uZWN0aW9u
SWRlbnRpZmllcikKLSAgICAgICAgOiBtX2FyZ3VtZW50cyhjb25uZWN0aW9uSWRlbnRpZmllcikK
LSAgICB7Ci0gICAgfQotCi0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAot
ICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAg
ICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19OwotI2VuZGlmCi0KLSNpZiBQTEFURk9STShNQUMp
Ci1jbGFzcyBJbnRlcnByZXRLZXlFdmVudCB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1
cGxlPHVpbnQzMl90PiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVu
Y2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAg
c3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1Jl
ZmVyZW5jZSgiSW50ZXJwcmV0S2V5RXZlbnQiKTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlz
U3luYyA9IHRydWU7Ci0KLSAgICB1c2luZyBSZXBseSA9IHN0ZDo6dHVwbGU8VmVjdG9yPFdlYkNv
cmU6OktleXByZXNzQ29tbWFuZD4mPjsKLSAgICB1c2luZyBSZXBseUFyZ3VtZW50cyA9IHN0ZDo6
dHVwbGU8VmVjdG9yPFdlYkNvcmU6OktleXByZXNzQ29tbWFuZD4+OwotICAgIGV4cGxpY2l0IElu
dGVycHJldEtleUV2ZW50KHVpbnQzMl90IHR5cGUpCi0gICAgICAgIDogbV9hcmd1bWVudHModHlw
ZSkKLSAgICB7Ci0gICAgfQotCi0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25z
dAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToK
LSAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19OwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoREVQ
UkVDQVRFRF9GRUFUVVJFKQotY2xhc3MgRGVwcmVjYXRlZE9wZXJhdGlvbiB7Ci1wdWJsaWM6Ci0g
ICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGNvbnN0IElQQzo6RHVtbXlUeXBlJj4gQXJndW1lbnRzOwot
Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJu
IG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsgfQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5j
ZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIkRlcHJlY2F0ZWRPcGVyYXRp
b24iKTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOwotCi0gICAgZXhw
bGljaXQgRGVwcmVjYXRlZE9wZXJhdGlvbihjb25zdCBJUEM6OkR1bW15VHlwZSYgZHVtbXkpCi0g
ICAgICAgIDogbV9hcmd1bWVudHMoZHVtbXkpCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0IEFy
Z3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3Vt
ZW50czsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsK
LSNlbmRpZgotCi0jaWYgRU5BQkxFKEVYUEVSSU1FTlRBTF9GRUFUVVJFKQotY2xhc3MgRXhwZXJp
bWVudGFsT3BlcmF0aW9uIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8Y29uc3Qg
SVBDOjpEdW1teVR5cGUmPiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZl
cmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0g
ICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmlu
Z1JlZmVyZW5jZSgiRXhwZXJpbWVudGFsT3BlcmF0aW9uIik7IH0KLSAgICBzdGF0aWMgY29uc3Qg
Ym9vbCBpc1N5bmMgPSBmYWxzZTsKLQotICAgIGV4cGxpY2l0IEV4cGVyaW1lbnRhbE9wZXJhdGlv
bihjb25zdCBJUEM6OkR1bW15VHlwZSYgZHVtbXkpCi0gICAgICAgIDogbV9hcmd1bWVudHMoZHVt
bXkpCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29u
c3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0KLXByaXZhdGU6
Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFj
ZSBXZWJQYWdlCi19IC8vIG5hbWVzcGFjZSBNZXNzYWdlcwotCi0jZW5kaWYgLy8gKEVOQUJMRShX
RUJLSVQyKSAmJiAoTkVTVEVEX01BU1RFUl9DT05ESVRJT04gfHwgTUFTVEVSX09SICYmIE1BU1RF
Ul9BTkQpKQoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtp
dC9MZWdhY3lNZXNzYWdlcy1leHBlY3RlZC5oCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOmVvbC1z
dHlsZQojIyAtMSArMCwwICMjCi1uYXRpdmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0
eQpJbmRleDogU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9MZWdhY3lNZXNzYWdlc1JlcGxp
ZXMtZXhwZWN0ZWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0
L0xlZ2FjeU1lc3NhZ2VzUmVwbGllcy1leHBlY3RlZC5oCShyZXZpc2lvbiAyNjA3NjQpCisrKyBT
b3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L0xlZ2FjeU1lc3NhZ2VzUmVwbGllcy1leHBlY3Rl
ZC5oCShub25leGlzdGVudCkKQEAgLTEsNDMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECi0gKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSAqIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSAqIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SCi0gKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotICogQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwKLSAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNw
cmFnbWEgb25jZQotCi0jaWYgKEVOQUJMRShXRUJLSVQyKSAmJiAoTkVTVEVEX01BU1RFUl9DT05E
SVRJT04gfHwgTUFTVEVSX09SICYmIE1BU1RFUl9BTkQpKQotCi0jaW5jbHVkZSAiQ29ubmVjdGlv
bi5oIgotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0KLQotbmFtZXNwYWNlIE1lc3NhZ2VzIHsK
LW5hbWVzcGFjZSBXZWJQYWdlIHsKLQotdXNpbmcgR2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25E
ZWxheWVkUmVwbHkgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6Q29ubmVjdGlv
bjo6SGFuZGxlJiBjb25uZWN0aW9uSGFuZGxlKT47Ci0KLXVzaW5nIFRlc3RNdWx0aXBsZUF0dHJp
YnV0ZXNEZWxheWVkUmVwbHkgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+OwotCi19IC8vIG5h
bWVzcGFjZSBXZWJQYWdlCi19IC8vIG5hbWVzcGFjZSBNZXNzYWdlcwotCi0jZW5kaWYgLy8gKEVO
QUJMRShXRUJLSVQyKSAmJiAoTkVTVEVEX01BU1RFUl9DT05ESVRJT04gfHwgTUFTVEVSX09SICYm
IE1BU1RFUl9BTkQpKQpJbmRleDogU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9NZXNzYWdl
TmFtZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvTWVz
c2FnZU5hbWVzLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Vi
a2l0L01lc3NhZ2VOYW1lcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMjggQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIK
KyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTWVzc2FnZU5h
bWVzLmgiCisKK25hbWVzcGFjZSBJUEMgeworCitjb25zdCBjaGFyKiBkZXNjcmlwdGlvbihNZXNz
YWdlTmFtZSBuYW1lKQoreworICAgIHN3aXRjaCAobmFtZSkgeworICAgIGNhc2UgTWVzc2FnZU5h
bWU6OldlYlBhZ2VfTG9hZFVSTDoKKyAgICAgICAgcmV0dXJuICJXZWJQYWdlOjpMb2FkVVJMIjsK
KyNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQorICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2Vf
VGVzdEFzeW5jTWVzc2FnZToKKyAgICAgICAgcmV0dXJuICJXZWJQYWdlOjpUZXN0QXN5bmNNZXNz
YWdlIjsKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX1Rlc3RBc3luY01lc3NhZ2VSZXBs
eToKKyAgICAgICAgcmV0dXJuICJXZWJQYWdlOjpUZXN0QXN5bmNNZXNzYWdlUmVwbHkiOworI2Vu
ZGlmCisjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQ
YWdlX1Rlc3RBc3luY01lc3NhZ2VXaXRoTm9Bcmd1bWVudHM6CisgICAgICAgIHJldHVybiAiV2Vi
UGFnZTo6VGVzdEFzeW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50cyI7CisgICAgY2FzZSBNZXNzYWdl
TmFtZTo6V2ViUGFnZV9UZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJndW1lbnRzUmVwbHk6CisgICAg
ICAgIHJldHVybiAiV2ViUGFnZTo6VGVzdEFzeW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50c1JlcGx5
IjsKKyNlbmRpZgorI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCisgICAgY2FzZSBNZXNzYWdlTmFt
ZTo6V2ViUGFnZV9UZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1lbnRzOgorICAgICAg
ICByZXR1cm4gIldlYlBhZ2U6OlRlc3RBc3luY01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHMi
OworICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVzdEFzeW5jTWVzc2FnZVdpdGhNdWx0
aXBsZUFyZ3VtZW50c1JlcGx5OgorICAgICAgICByZXR1cm4gIldlYlBhZ2U6OlRlc3RBc3luY01l
c3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHNSZXBseSI7CisjZW5kaWYKKyAgICBjYXNlIE1lc3Nh
Z2VOYW1lOjpXZWJQYWdlX1Rlc3RTeW5jTWVzc2FnZToKKyAgICAgICAgcmV0dXJuICJXZWJQYWdl
OjpUZXN0U3luY01lc3NhZ2UiOworICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVzdFN5
bmNocm9ub3VzTWVzc2FnZToKKyAgICAgICAgcmV0dXJuICJXZWJQYWdlOjpUZXN0U3luY2hyb25v
dXNNZXNzYWdlIjsKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX0xvYWRVUkw6CisgICAg
ICAgIHJldHVybiAiV2ViUGFnZTo6TG9hZFVSTCI7CisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykK
KyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX0xvYWRTb21ldGhpbmc6CisgICAgICAgIHJl
dHVybiAiV2ViUGFnZTo6TG9hZFNvbWV0aGluZyI7CisjZW5kaWYKKyNpZiAoRU5BQkxFKFRPVUNI
X0VWRU5UUykgJiYgKE5FU1RFRF9NRVNTQUdFX0NPTkRJVElPTiB8fCBTT01FX09USEVSX01FU1NB
R0VfQ09ORElUSU9OKSkKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX1RvdWNoRXZlbnQ6
CisgICAgICAgIHJldHVybiAiV2ViUGFnZTo6VG91Y2hFdmVudCI7CisjZW5kaWYKKyNpZiAoRU5B
QkxFKFRPVUNIX0VWRU5UUykgJiYgKE5FU1RFRF9NRVNTQUdFX0NPTkRJVElPTiAmJiBTT01FX09U
SEVSX01FU1NBR0VfQ09ORElUSU9OKSkKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX0Fk
ZEV2ZW50OgorICAgICAgICByZXR1cm4gIldlYlBhZ2U6OkFkZEV2ZW50IjsKKyNlbmRpZgorI2lm
IEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9Mb2Fk
U29tZXRoaW5nRWxzZToKKyAgICAgICAgcmV0dXJuICJXZWJQYWdlOjpMb2FkU29tZXRoaW5nRWxz
ZSI7CisjZW5kaWYKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX0RpZFJlY2VpdmVQb2xp
Y3lEZWNpc2lvbjoKKyAgICAgICAgcmV0dXJuICJXZWJQYWdlOjpEaWRSZWNlaXZlUG9saWN5RGVj
aXNpb24iOworICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfQ2xvc2U6CisgICAgICAgIHJl
dHVybiAiV2ViUGFnZTo6Q2xvc2UiOworICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfUHJl
ZmVyZW5jZXNEaWRDaGFuZ2U6CisgICAgICAgIHJldHVybiAiV2ViUGFnZTo6UHJlZmVyZW5jZXNE
aWRDaGFuZ2UiOworICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfU2VuZERvdWJsZUFuZEZs
b2F0OgorICAgICAgICByZXR1cm4gIldlYlBhZ2U6OlNlbmREb3VibGVBbmRGbG9hdCI7CisgICAg
Y2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9TZW5kSW50czoKKyAgICAgICAgcmV0dXJuICJXZWJQ
YWdlOjpTZW5kSW50cyI7CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9DcmVhdGVQbHVn
aW46CisgICAgICAgIHJldHVybiAiV2ViUGFnZTo6Q3JlYXRlUGx1Z2luIjsKKyAgICBjYXNlIE1l
c3NhZ2VOYW1lOjpXZWJQYWdlX1J1bkphdmFTY3JpcHRBbGVydDoKKyAgICAgICAgcmV0dXJuICJX
ZWJQYWdlOjpSdW5KYXZhU2NyaXB0QWxlcnQiOworICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBh
Z2VfR2V0UGx1Z2luczoKKyAgICAgICAgcmV0dXJuICJXZWJQYWdlOjpHZXRQbHVnaW5zIjsKKyAg
ICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX0dldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOgor
ICAgICAgICByZXR1cm4gIldlYlBhZ2U6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uIjsKKyAg
ICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX1Rlc3RNdWx0aXBsZUF0dHJpYnV0ZXM6CisgICAg
ICAgIHJldHVybiAiV2ViUGFnZTo6VGVzdE11bHRpcGxlQXR0cmlidXRlcyI7CisgICAgY2FzZSBN
ZXNzYWdlTmFtZTo6V2ViUGFnZV9UZXN0UGFyYW1ldGVyQXR0cmlidXRlczoKKyAgICAgICAgcmV0
dXJuICJXZWJQYWdlOjpUZXN0UGFyYW1ldGVyQXR0cmlidXRlcyI7CisgICAgY2FzZSBNZXNzYWdl
TmFtZTo6V2ViUGFnZV9UZW1wbGF0ZVRlc3Q6CisgICAgICAgIHJldHVybiAiV2ViUGFnZTo6VGVt
cGxhdGVUZXN0IjsKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX1NldFZpZGVvTGF5ZXJJ
RDoKKyAgICAgICAgcmV0dXJuICJXZWJQYWdlOjpTZXRWaWRlb0xheWVySUQiOworI2lmIFBMQVRG
T1JNKE1BQykKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX0RpZENyZWF0ZVdlYlByb2Nl
c3NDb25uZWN0aW9uOgorICAgICAgICByZXR1cm4gIldlYlBhZ2U6OkRpZENyZWF0ZVdlYlByb2Nl
c3NDb25uZWN0aW9uIjsKKyNlbmRpZgorI2lmIFBMQVRGT1JNKE1BQykKKyAgICBjYXNlIE1lc3Nh
Z2VOYW1lOjpXZWJQYWdlX0ludGVycHJldEtleUV2ZW50OgorICAgICAgICByZXR1cm4gIldlYlBh
Z2U6OkludGVycHJldEtleUV2ZW50IjsKKyNlbmRpZgorI2lmIEVOQUJMRShERVBSRUNBVEVEX0ZF
QVRVUkUpCisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9EZXByZWNhdGVkT3BlcmF0aW9u
OgorICAgICAgICByZXR1cm4gIldlYlBhZ2U6OkRlcHJlY2F0ZWRPcGVyYXRpb24iOworI2VuZGlm
CisjaWYgRU5BQkxFKEVYUEVSSU1FTlRBTF9GRUFUVVJFKQorICAgIGNhc2UgTWVzc2FnZU5hbWU6
OldlYlBhZ2VfRXhwZXJpbWVudGFsT3BlcmF0aW9uOgorICAgICAgICByZXR1cm4gIldlYlBhZ2U6
OkV4cGVyaW1lbnRhbE9wZXJhdGlvbiI7CisjZW5kaWYKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpX
cmFwcGVkQXN5bmNNZXNzYWdlRm9yVGVzdGluZzoKKyAgICAgICAgcmV0dXJuICJJUEM6OldyYXBw
ZWRBc3luY01lc3NhZ2VGb3JUZXN0aW5nIjsKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpTeW5jTWVz
c2FnZVJlcGx5OgorICAgICAgICByZXR1cm4gIklQQzo6U3luY01lc3NhZ2VSZXBseSI7CisgICAg
Y2FzZSBNZXNzYWdlTmFtZTo6SW5pdGlhbGl6ZUNvbm5lY3Rpb246CisgICAgICAgIHJldHVybiAi
SVBDOjpJbml0aWFsaXplQ29ubmVjdGlvbiI7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgIHJldHVybiAiPGludmFsaWQgbWVzc2FnZSBuYW1lPiI7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIElQQwpJbmRleDogU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9NZXNzYWdlTmFt
ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L01lc3NhZ2VO
YW1lcy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvTWVz
c2FnZU5hbWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyNzYgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTAtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+CisKK25h
bWVzcGFjZSBJUEMgeworCitlbnVtIGNsYXNzIFJlY2VpdmVyTmFtZSA6IHVpbnQ4X3QgeworICAg
IFdlYlBhZ2UgPSAxCisgICAgLCBXZWJQYWdlID0gMgorICAgICwgTm9uZSA9IDMKKyAgICAsIElQ
QyA9IDQKKyAgICAsIEFzeW5jUmVwbHkgPSA1CisgICAgLCBJbnZhbGlkID0gNgorfTsKKworZW51
bSBjbGFzcyBNZXNzYWdlTmFtZSA6IHVpbnQxNl90IHsKKyAgICBXZWJQYWdlX0xvYWRVUkwgPSAx
CisjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKKyAgICAsIFdlYlBhZ2VfVGVzdEFzeW5jTWVzc2Fn
ZSA9IDIKKyAgICAsIFdlYlBhZ2VfVGVzdEFzeW5jTWVzc2FnZVJlcGx5ID0gMworI2VuZGlmCisj
aWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKKyAgICAsIFdlYlBhZ2VfVGVzdEFzeW5jTWVzc2FnZVdp
dGhOb0FyZ3VtZW50cyA9IDQKKyAgICAsIFdlYlBhZ2VfVGVzdEFzeW5jTWVzc2FnZVdpdGhOb0Fy
Z3VtZW50c1JlcGx5ID0gNQorI2VuZGlmCisjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKKyAgICAs
IFdlYlBhZ2VfVGVzdEFzeW5jTWVzc2FnZVdpdGhNdWx0aXBsZUFyZ3VtZW50cyA9IDYKKyAgICAs
IFdlYlBhZ2VfVGVzdEFzeW5jTWVzc2FnZVdpdGhNdWx0aXBsZUFyZ3VtZW50c1JlcGx5ID0gNwor
I2VuZGlmCisgICAgLCBXZWJQYWdlX1Rlc3RTeW5jTWVzc2FnZSA9IDgKKyAgICAsIFdlYlBhZ2Vf
VGVzdFN5bmNocm9ub3VzTWVzc2FnZSA9IDkKKyAgICAsIFdlYlBhZ2VfTG9hZFVSTCA9IDEwCisj
aWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAgICAsIFdlYlBhZ2VfTG9hZFNvbWV0aGluZyA9IDEx
CisjZW5kaWYKKyNpZiAoRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgKE5FU1RFRF9NRVNTQUdFX0NP
TkRJVElPTiB8fCBTT01FX09USEVSX01FU1NBR0VfQ09ORElUSU9OKSkKKyAgICAsIFdlYlBhZ2Vf
VG91Y2hFdmVudCA9IDEyCisjZW5kaWYKKyNpZiAoRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgKE5F
U1RFRF9NRVNTQUdFX0NPTkRJVElPTiAmJiBTT01FX09USEVSX01FU1NBR0VfQ09ORElUSU9OKSkK
KyAgICAsIFdlYlBhZ2VfQWRkRXZlbnQgPSAxMworI2VuZGlmCisjaWYgRU5BQkxFKFRPVUNIX0VW
RU5UUykKKyAgICAsIFdlYlBhZ2VfTG9hZFNvbWV0aGluZ0Vsc2UgPSAxNAorI2VuZGlmCisgICAg
LCBXZWJQYWdlX0RpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbiA9IDE1CisgICAgLCBXZWJQYWdlX0Ns
b3NlID0gMTYKKyAgICAsIFdlYlBhZ2VfUHJlZmVyZW5jZXNEaWRDaGFuZ2UgPSAxNworICAgICwg
V2ViUGFnZV9TZW5kRG91YmxlQW5kRmxvYXQgPSAxOAorICAgICwgV2ViUGFnZV9TZW5kSW50cyA9
IDE5CisgICAgLCBXZWJQYWdlX0NyZWF0ZVBsdWdpbiA9IDIwCisgICAgLCBXZWJQYWdlX1J1bkph
dmFTY3JpcHRBbGVydCA9IDIxCisgICAgLCBXZWJQYWdlX0dldFBsdWdpbnMgPSAyMgorICAgICwg
V2ViUGFnZV9HZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbiA9IDIzCisgICAgLCBXZWJQYWdlX1Rl
c3RNdWx0aXBsZUF0dHJpYnV0ZXMgPSAyNAorICAgICwgV2ViUGFnZV9UZXN0UGFyYW1ldGVyQXR0
cmlidXRlcyA9IDI1CisgICAgLCBXZWJQYWdlX1RlbXBsYXRlVGVzdCA9IDI2CisgICAgLCBXZWJQ
YWdlX1NldFZpZGVvTGF5ZXJJRCA9IDI3CisjaWYgUExBVEZPUk0oTUFDKQorICAgICwgV2ViUGFn
ZV9EaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbiA9IDI4CisjZW5kaWYKKyNpZiBQTEFURk9S
TShNQUMpCisgICAgLCBXZWJQYWdlX0ludGVycHJldEtleUV2ZW50ID0gMjkKKyNlbmRpZgorI2lm
IEVOQUJMRShERVBSRUNBVEVEX0ZFQVRVUkUpCisgICAgLCBXZWJQYWdlX0RlcHJlY2F0ZWRPcGVy
YXRpb24gPSAzMAorI2VuZGlmCisjaWYgRU5BQkxFKEVYUEVSSU1FTlRBTF9GRUFUVVJFKQorICAg
ICwgV2ViUGFnZV9FeHBlcmltZW50YWxPcGVyYXRpb24gPSAzMQorI2VuZGlmCisgICAgLCBXcmFw
cGVkQXN5bmNNZXNzYWdlRm9yVGVzdGluZyA9IDMyCisgICAgLCBTeW5jTWVzc2FnZVJlcGx5ID0g
MzMKKyAgICAsIEluaXRpYWxpemVDb25uZWN0aW9uID0gMzQKK307CisKK2lubGluZSBSZWNlaXZl
ck5hbWUgcmVjZWl2ZXJOYW1lKE1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lKQoreworICAgIHN3aXRj
aCAobWVzc2FnZU5hbWUpIHsKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX0xvYWRVUkw6
CisjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdl
X1Rlc3RBc3luY01lc3NhZ2U6CisjZW5kaWYKKyNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQorICAg
IGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVzdEFzeW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50
czoKKyNlbmRpZgorI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCisgICAgY2FzZSBNZXNzYWdlTmFt
ZTo6V2ViUGFnZV9UZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1lbnRzOgorI2VuZGlm
CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9UZXN0U3luY01lc3NhZ2U6CisgICAgY2Fz
ZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9UZXN0U3luY2hyb25vdXNNZXNzYWdlOgorICAgICAgICBy
ZXR1cm4gUmVjZWl2ZXJOYW1lOjpXZWJQYWdlOworICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBh
Z2VfTG9hZFVSTDoKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgIGNhc2UgTWVzc2FnZU5h
bWU6OldlYlBhZ2VfTG9hZFNvbWV0aGluZzoKKyNlbmRpZgorI2lmIChFTkFCTEUoVE9VQ0hfRVZF
TlRTKSAmJiAoTkVTVEVEX01FU1NBR0VfQ09ORElUSU9OIHx8IFNPTUVfT1RIRVJfTUVTU0FHRV9D
T05ESVRJT04pKQorICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfVG91Y2hFdmVudDoKKyNl
bmRpZgorI2lmIChFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiAoTkVTVEVEX01FU1NBR0VfQ09ORElU
SU9OICYmIFNPTUVfT1RIRVJfTUVTU0FHRV9DT05ESVRJT04pKQorICAgIGNhc2UgTWVzc2FnZU5h
bWU6OldlYlBhZ2VfQWRkRXZlbnQ6CisjZW5kaWYKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQor
ICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfTG9hZFNvbWV0aGluZ0Vsc2U6CisjZW5kaWYK
KyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX0RpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbjoK
KyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX0Nsb3NlOgorICAgIGNhc2UgTWVzc2FnZU5h
bWU6OldlYlBhZ2VfUHJlZmVyZW5jZXNEaWRDaGFuZ2U6CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6
V2ViUGFnZV9TZW5kRG91YmxlQW5kRmxvYXQ6CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFn
ZV9TZW5kSW50czoKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX0NyZWF0ZVBsdWdpbjoK
KyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX1J1bkphdmFTY3JpcHRBbGVydDoKKyAgICBj
YXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX0dldFBsdWdpbnM6CisgICAgY2FzZSBNZXNzYWdlTmFt
ZTo6V2ViUGFnZV9HZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjoKKyAgICBjYXNlIE1lc3NhZ2VO
YW1lOjpXZWJQYWdlX1Rlc3RNdWx0aXBsZUF0dHJpYnV0ZXM6CisgICAgY2FzZSBNZXNzYWdlTmFt
ZTo6V2ViUGFnZV9UZXN0UGFyYW1ldGVyQXR0cmlidXRlczoKKyAgICBjYXNlIE1lc3NhZ2VOYW1l
OjpXZWJQYWdlX1RlbXBsYXRlVGVzdDoKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX1Nl
dFZpZGVvTGF5ZXJJRDoKKyNpZiBQTEFURk9STShNQUMpCisgICAgY2FzZSBNZXNzYWdlTmFtZTo6
V2ViUGFnZV9EaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbjoKKyNlbmRpZgorI2lmIFBMQVRG
T1JNKE1BQykKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX0ludGVycHJldEtleUV2ZW50
OgorI2VuZGlmCisjaWYgRU5BQkxFKERFUFJFQ0FURURfRkVBVFVSRSkKKyAgICBjYXNlIE1lc3Nh
Z2VOYW1lOjpXZWJQYWdlX0RlcHJlY2F0ZWRPcGVyYXRpb246CisjZW5kaWYKKyNpZiBFTkFCTEUo
RVhQRVJJTUVOVEFMX0ZFQVRVUkUpCisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9FeHBl
cmltZW50YWxPcGVyYXRpb246CisjZW5kaWYKKyAgICAgICAgcmV0dXJuIFJlY2VpdmVyTmFtZTo6
V2ViUGFnZTsKKyAgICAgICAgcmV0dXJuIFJlY2VpdmVyTmFtZTo6Tm9uZTsKKyNpZiBFTkFCTEUo
VEVTVF9GRUFUVVJFKQorICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVzdEFzeW5jTWVz
c2FnZVJlcGx5OgorI2VuZGlmCisjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKKyAgICBjYXNlIE1l
c3NhZ2VOYW1lOjpXZWJQYWdlX1Rlc3RBc3luY01lc3NhZ2VXaXRoTm9Bcmd1bWVudHNSZXBseToK
KyNlbmRpZgorI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCisgICAgY2FzZSBNZXNzYWdlTmFtZTo6
V2ViUGFnZV9UZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1lbnRzUmVwbHk6CisjZW5k
aWYKKyAgICAgICAgcmV0dXJuIFJlY2VpdmVyTmFtZTo6QXN5bmNSZXBseTsKKyAgICBjYXNlIE1l
c3NhZ2VOYW1lOjpXcmFwcGVkQXN5bmNNZXNzYWdlRm9yVGVzdGluZzoKKyAgICBjYXNlIE1lc3Nh
Z2VOYW1lOjpTeW5jTWVzc2FnZVJlcGx5OgorICAgIGNhc2UgTWVzc2FnZU5hbWU6OkluaXRpYWxp
emVDb25uZWN0aW9uOgorICAgICAgICByZXR1cm4gUmVjZWl2ZXJOYW1lOjpJUEM7CisgICAgfQor
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBSZWNlaXZlck5hbWU6OkludmFs
aWQ7Cit9CisKK2NvbnN0IGNoYXIqIGRlc2NyaXB0aW9uKE1lc3NhZ2VOYW1lKTsKKworfSAvLyBu
YW1lc3BhY2UgSVBDCisKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBFLCB0
eXBlbmFtZSBULCBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfc2FtZTxFLCBJUEM6Ok1lc3NhZ2VO
YW1lPjo6dmFsdWU+KiA9IG51bGxwdHI+Citjb25zdGV4cHIgYm9vbCBpc1ZhbGlkRW51bShUIG1l
c3NhZ2VOYW1lKQoreworICAgIGlmIChzdGF0aWNfY2FzdDxJUEM6Ok1lc3NhZ2VOYW1lPihtZXNz
YWdlTmFtZSkgPT0gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9Mb2FkVVJMKQorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQorICAgIGlmIChzdGF0aWNfY2Fz
dDxJUEM6Ok1lc3NhZ2VOYW1lPihtZXNzYWdlTmFtZSkgPT0gSVBDOjpNZXNzYWdlTmFtZTo6V2Vi
UGFnZV9UZXN0QXN5bmNNZXNzYWdlKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAoc3Rh
dGljX2Nhc3Q8SVBDOjpNZXNzYWdlTmFtZT4obWVzc2FnZU5hbWUpID09IElQQzo6TWVzc2FnZU5h
bWU6OldlYlBhZ2VfVGVzdEFzeW5jTWVzc2FnZVJlcGx5KQorICAgICAgICByZXR1cm4gdHJ1ZTsK
KyNlbmRpZgorI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCisgICAgaWYgKHN0YXRpY19jYXN0PElQ
Qzo6TWVzc2FnZU5hbWU+KG1lc3NhZ2VOYW1lKSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdl
X1Rlc3RBc3luY01lc3NhZ2VXaXRoTm9Bcmd1bWVudHMpCisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIGlmIChzdGF0aWNfY2FzdDxJUEM6Ok1lc3NhZ2VOYW1lPihtZXNzYWdlTmFtZSkgPT0gSVBD
OjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9UZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJndW1lbnRzUmVw
bHkpCisgICAgICAgIHJldHVybiB0cnVlOworI2VuZGlmCisjaWYgRU5BQkxFKFRFU1RfRkVBVFVS
RSkKKyAgICBpZiAoc3RhdGljX2Nhc3Q8SVBDOjpNZXNzYWdlTmFtZT4obWVzc2FnZU5hbWUpID09
IElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVzdEFzeW5jTWVzc2FnZVdpdGhNdWx0aXBsZUFy
Z3VtZW50cykKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHN0YXRpY19jYXN0PElQQzo6
TWVzc2FnZU5hbWU+KG1lc3NhZ2VOYW1lKSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX1Rl
c3RBc3luY01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHNSZXBseSkKKyAgICAgICAgcmV0dXJu
IHRydWU7CisjZW5kaWYKKyAgICBpZiAoc3RhdGljX2Nhc3Q8SVBDOjpNZXNzYWdlTmFtZT4obWVz
c2FnZU5hbWUpID09IElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVzdFN5bmNNZXNzYWdlKQor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAoc3RhdGljX2Nhc3Q8SVBDOjpNZXNzYWdlTmFt
ZT4obWVzc2FnZU5hbWUpID09IElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVzdFN5bmNocm9u
b3VzTWVzc2FnZSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHN0YXRpY19jYXN0PElQ
Qzo6TWVzc2FnZU5hbWU+KG1lc3NhZ2VOYW1lKSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdl
X0xvYWRVUkwpCisgICAgICAgIHJldHVybiB0cnVlOworI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMp
CisgICAgaWYgKHN0YXRpY19jYXN0PElQQzo6TWVzc2FnZU5hbWU+KG1lc3NhZ2VOYW1lKSA9PSBJ
UEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX0xvYWRTb21ldGhpbmcpCisgICAgICAgIHJldHVybiB0
cnVlOworI2VuZGlmCisjaWYgKEVOQUJMRShUT1VDSF9FVkVOVFMpICYmIChORVNURURfTUVTU0FH
RV9DT05ESVRJT04gfHwgU09NRV9PVEhFUl9NRVNTQUdFX0NPTkRJVElPTikpCisgICAgaWYgKHN0
YXRpY19jYXN0PElQQzo6TWVzc2FnZU5hbWU+KG1lc3NhZ2VOYW1lKSA9PSBJUEM6Ok1lc3NhZ2VO
YW1lOjpXZWJQYWdlX1RvdWNoRXZlbnQpCisgICAgICAgIHJldHVybiB0cnVlOworI2VuZGlmCisj
aWYgKEVOQUJMRShUT1VDSF9FVkVOVFMpICYmIChORVNURURfTUVTU0FHRV9DT05ESVRJT04gJiYg
U09NRV9PVEhFUl9NRVNTQUdFX0NPTkRJVElPTikpCisgICAgaWYgKHN0YXRpY19jYXN0PElQQzo6
TWVzc2FnZU5hbWU+KG1lc3NhZ2VOYW1lKSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX0Fk
ZEV2ZW50KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyNlbmRpZgorI2lmIEVOQUJMRShUT1VDSF9F
VkVOVFMpCisgICAgaWYgKHN0YXRpY19jYXN0PElQQzo6TWVzc2FnZU5hbWU+KG1lc3NhZ2VOYW1l
KSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX0xvYWRTb21ldGhpbmdFbHNlKQorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyNlbmRpZgorICAgIGlmIChzdGF0aWNfY2FzdDxJUEM6Ok1lc3NhZ2VO
YW1lPihtZXNzYWdlTmFtZSkgPT0gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9EaWRSZWNlaXZl
UG9saWN5RGVjaXNpb24pCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmIChzdGF0aWNfY2Fz
dDxJUEM6Ok1lc3NhZ2VOYW1lPihtZXNzYWdlTmFtZSkgPT0gSVBDOjpNZXNzYWdlTmFtZTo6V2Vi
UGFnZV9DbG9zZSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHN0YXRpY19jYXN0PElQ
Qzo6TWVzc2FnZU5hbWU+KG1lc3NhZ2VOYW1lKSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdl
X1ByZWZlcmVuY2VzRGlkQ2hhbmdlKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAoc3Rh
dGljX2Nhc3Q8SVBDOjpNZXNzYWdlTmFtZT4obWVzc2FnZU5hbWUpID09IElQQzo6TWVzc2FnZU5h
bWU6OldlYlBhZ2VfU2VuZERvdWJsZUFuZEZsb2F0KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICBpZiAoc3RhdGljX2Nhc3Q8SVBDOjpNZXNzYWdlTmFtZT4obWVzc2FnZU5hbWUpID09IElQQzo6
TWVzc2FnZU5hbWU6OldlYlBhZ2VfU2VuZEludHMpCisgICAgICAgIHJldHVybiB0cnVlOworICAg
IGlmIChzdGF0aWNfY2FzdDxJUEM6Ok1lc3NhZ2VOYW1lPihtZXNzYWdlTmFtZSkgPT0gSVBDOjpN
ZXNzYWdlTmFtZTo6V2ViUGFnZV9DcmVhdGVQbHVnaW4pCisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIGlmIChzdGF0aWNfY2FzdDxJUEM6Ok1lc3NhZ2VOYW1lPihtZXNzYWdlTmFtZSkgPT0gSVBD
OjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9SdW5KYXZhU2NyaXB0QWxlcnQpCisgICAgICAgIHJldHVy
biB0cnVlOworICAgIGlmIChzdGF0aWNfY2FzdDxJUEM6Ok1lc3NhZ2VOYW1lPihtZXNzYWdlTmFt
ZSkgPT0gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9HZXRQbHVnaW5zKQorICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICBpZiAoc3RhdGljX2Nhc3Q8SVBDOjpNZXNzYWdlTmFtZT4obWVzc2FnZU5h
bWUpID09IElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfR2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rp
b24pCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmIChzdGF0aWNfY2FzdDxJUEM6Ok1lc3Nh
Z2VOYW1lPihtZXNzYWdlTmFtZSkgPT0gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9UZXN0TXVs
dGlwbGVBdHRyaWJ1dGVzKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAoc3RhdGljX2Nh
c3Q8SVBDOjpNZXNzYWdlTmFtZT4obWVzc2FnZU5hbWUpID09IElQQzo6TWVzc2FnZU5hbWU6Oldl
YlBhZ2VfVGVzdFBhcmFtZXRlckF0dHJpYnV0ZXMpCisgICAgICAgIHJldHVybiB0cnVlOworICAg
IGlmIChzdGF0aWNfY2FzdDxJUEM6Ok1lc3NhZ2VOYW1lPihtZXNzYWdlTmFtZSkgPT0gSVBDOjpN
ZXNzYWdlTmFtZTo6V2ViUGFnZV9UZW1wbGF0ZVRlc3QpCisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIGlmIChzdGF0aWNfY2FzdDxJUEM6Ok1lc3NhZ2VOYW1lPihtZXNzYWdlTmFtZSkgPT0gSVBD
OjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9TZXRWaWRlb0xheWVySUQpCisgICAgICAgIHJldHVybiB0
cnVlOworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBpZiAoc3RhdGljX2Nhc3Q8SVBDOjpNZXNzYWdl
TmFtZT4obWVzc2FnZU5hbWUpID09IElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfRGlkQ3JlYXRl
V2ViUHJvY2Vzc0Nvbm5lY3Rpb24pCisgICAgICAgIHJldHVybiB0cnVlOworI2VuZGlmCisjaWYg
UExBVEZPUk0oTUFDKQorICAgIGlmIChzdGF0aWNfY2FzdDxJUEM6Ok1lc3NhZ2VOYW1lPihtZXNz
YWdlTmFtZSkgPT0gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9JbnRlcnByZXRLZXlFdmVudCkK
KyAgICAgICAgcmV0dXJuIHRydWU7CisjZW5kaWYKKyNpZiBFTkFCTEUoREVQUkVDQVRFRF9GRUFU
VVJFKQorICAgIGlmIChzdGF0aWNfY2FzdDxJUEM6Ok1lc3NhZ2VOYW1lPihtZXNzYWdlTmFtZSkg
PT0gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9EZXByZWNhdGVkT3BlcmF0aW9uKQorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyNlbmRpZgorI2lmIEVOQUJMRShFWFBFUklNRU5UQUxfRkVBVFVSRSkK
KyAgICBpZiAoc3RhdGljX2Nhc3Q8SVBDOjpNZXNzYWdlTmFtZT4obWVzc2FnZU5hbWUpID09IElQ
Qzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfRXhwZXJpbWVudGFsT3BlcmF0aW9uKQorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyNlbmRpZgorICAgIGlmIChzdGF0aWNfY2FzdDxJUEM6Ok1lc3NhZ2VOYW1l
PihtZXNzYWdlTmFtZSkgPT0gSVBDOjpNZXNzYWdlTmFtZTo6V3JhcHBlZEFzeW5jTWVzc2FnZUZv
clRlc3RpbmcpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmIChzdGF0aWNfY2FzdDxJUEM6
Ok1lc3NhZ2VOYW1lPihtZXNzYWdlTmFtZSkgPT0gSVBDOjpNZXNzYWdlTmFtZTo6U3luY01lc3Nh
Z2VSZXBseSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHN0YXRpY19jYXN0PElQQzo6
TWVzc2FnZU5hbWU+KG1lc3NhZ2VOYW1lKSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpJbml0aWFsaXpl
Q29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIGZhbHNlOworfTsK
KworfSAvLyBuYW1lc3BhY2UgV1RGCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0
L01lc3NhZ2VSZWNlaXZlci1leHBlY3RlZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9TY3JpcHRzL3dlYmtpdC9NZXNzYWdlUmVjZWl2ZXItZXhwZWN0ZWQuY3BwCShyZXZpc2lvbiAy
NjA3NjQpCisrKyBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L01lc3NhZ2VSZWNlaXZlci1l
eHBlY3RlZC5jcHAJKG5vbmV4aXN0ZW50KQpAQCAtMSwyMDMgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECi0gKiBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSAqIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwKLSAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0gKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotICogQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwKLSAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lmIChFTkFCTEUoV0VCS0lUMikgJiYgKE5F
U1RFRF9NQVNURVJfQ09ORElUSU9OIHx8IE1BU1RFUl9PUiAmJiBNQVNURVJfQU5EKSkKLQotI2lu
Y2x1ZGUgIldlYlBhZ2UuaCIKLQotI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCi0jaW5jbHVk
ZSAiQ29ubmVjdGlvbi5oIgotI2luY2x1ZGUgIkRlY29kZXIuaCIKLSNpZiBFTkFCTEUoREVQUkVD
QVRFRF9GRUFUVVJFKSB8fCBFTkFCTEUoRVhQRVJJTUVOVEFMX0ZFQVRVUkUpCi0jaW5jbHVkZSAi
RHVtbXlUeXBlLmgiCi0jZW5kaWYKLSNpbmNsdWRlICJIYW5kbGVNZXNzYWdlLmgiCi0jaWYgUExB
VEZPUk0oTUFDKQotI2luY2x1ZGUgIk1hY2hQb3J0LmgiCi0jZW5kaWYKLSNpbmNsdWRlICJQbHVn
aW4uaCIKLSNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKLSNpZiAoRU5BQkxFKFRP
VUNIX0VWRU5UUykgJiYgKE5FU1RFRF9NRVNTQUdFX0NPTkRJVElPTiAmJiBTT01FX09USEVSX01F
U1NBR0VfQ09ORElUSU9OKSkgfHwgKEVOQUJMRShUT1VDSF9FVkVOVFMpICYmIChORVNURURfTUVT
U0FHRV9DT05ESVRJT04gfHwgU09NRV9PVEhFUl9NRVNTQUdFX0NPTkRJVElPTikpCi0jaW5jbHVk
ZSAiV2ViRXZlbnQuaCIKLSNlbmRpZgotI2luY2x1ZGUgIldlYlBhZ2VNZXNzYWdlcy5oIgotI2lu
Y2x1ZGUgIldlYlByZWZlcmVuY2VzU3RvcmUuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNz
TGF5ZXIuaD4KLSNpZiBQTEFURk9STShNQUMpCi0jaW5jbHVkZSA8V2ViQ29yZS9LZXlib2FyZEV2
ZW50Lmg+Ci0jZW5kaWYKLSNpbmNsdWRlIDxXZWJDb3JlL1BsdWdpbkRhdGEuaD4KLSNpbmNsdWRl
IDx1dGlsaXR5PgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgTWVzc2Fn
ZXMgewotCi1uYW1lc3BhY2UgV2ViUGFnZSB7Ci0KLXZvaWQgR2V0UGx1Z2luUHJvY2Vzc0Nvbm5l
Y3Rpb246OnNlbmQoc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mJiBlbmNvZGVyLCBJUEM6
OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IElQQzo6Q29ubmVjdGlvbjo6SGFuZGxlJiBj
b25uZWN0aW9uSGFuZGxlKQotewotICAgICplbmNvZGVyIDw8IGNvbm5lY3Rpb25IYW5kbGU7Ci0g
ICAgY29ubmVjdGlvbi5zZW5kU3luY1JlcGx5KFdURk1vdmUoZW5jb2RlcikpOwotfQotCi12b2lk
IFRlc3RNdWx0aXBsZUF0dHJpYnV0ZXM6OnNlbmQoc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rl
cj4mJiBlbmNvZGVyLCBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCi17Ci0gICAgY29ubmVj
dGlvbi5zZW5kU3luY1JlcGx5KFdURk1vdmUoZW5jb2RlcikpOwotfQotCi19IC8vIG5hbWVzcGFj
ZSBXZWJQYWdlCi0KLX0gLy8gbmFtZXNwYWNlIE1lc3NhZ2VzCi0KLW5hbWVzcGFjZSBXZWJLaXQg
ewotCi12b2lkIFdlYlBhZ2U6OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29u
bmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQotewotICAgIGF1dG8gcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpOwotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVz
c2FnZXM6OldlYlBhZ2U6OkxvYWRVUkw6Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1l
c3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRVUkw+KGRlY29kZXIsIHRoaXMsICZXZWJQYWdl
Ojpsb2FkVVJMKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNpZiBFTkFCTEUoVE9VQ0hfRVZF
TlRTKQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6
OkxvYWRTb21ldGhpbmc6Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVz
c2FnZXM6OldlYlBhZ2U6OkxvYWRTb21ldGhpbmc+KGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjps
b2FkU29tZXRoaW5nKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNlbmRpZgotI2lmIChFTkFC
TEUoVE9VQ0hfRVZFTlRTKSAmJiAoTkVTVEVEX01FU1NBR0VfQ09ORElUSU9OIHx8IFNPTUVfT1RI
RVJfTUVTU0FHRV9DT05ESVRJT04pKQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0g
TWVzc2FnZXM6OldlYlBhZ2U6OlRvdWNoRXZlbnQ6Om5hbWUoKSkgewotICAgICAgICBJUEM6Omhh
bmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OlRvdWNoRXZlbnQ+KGRlY29kZXIsIHRoaXMs
ICZXZWJQYWdlOjp0b3VjaEV2ZW50KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNlbmRpZgot
I2lmIChFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiAoTkVTVEVEX01FU1NBR0VfQ09ORElUSU9OICYm
IFNPTUVfT1RIRVJfTUVTU0FHRV9DT05ESVRJT04pKQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VO
YW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OkFkZEV2ZW50OjpuYW1lKCkpIHsKLSAgICAgICAg
SVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpBZGRFdmVudD4oZGVjb2Rlciwg
dGhpcywgJldlYlBhZ2U6OmFkZEV2ZW50KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNlbmRp
ZgotI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCi0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUo
KSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFNvbWV0aGluZ0Vsc2U6Om5hbWUoKSkgewotICAg
ICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRTb21ldGhpbmdF
bHNlPihkZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6bG9hZFNvbWV0aGluZ0Vsc2UpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotI2VuZGlmCi0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9
PSBNZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uOjpuYW1lKCkpIHsK
LSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZWNlaXZl
UG9saWN5RGVjaXNpb24+KGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjpkaWRSZWNlaXZlUG9saWN5
RGVjaXNpb24pOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChkZWNvZGVyLm1lc3Nh
Z2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OkNsb3NlOjpuYW1lKCkpIHsKLSAgICAgICAg
SVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpDbG9zZT4oZGVjb2RlciwgdGhp
cywgJldlYlBhZ2U6OmNsb3NlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoZGVj
b2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpQcmVmZXJlbmNlc0RpZENo
YW5nZTo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2Vi
UGFnZTo6UHJlZmVyZW5jZXNEaWRDaGFuZ2U+KGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjpwcmVm
ZXJlbmNlc0RpZENoYW5nZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKGRlY29k
ZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6U2VuZERvdWJsZUFuZEZsb2F0
OjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdl
OjpTZW5kRG91YmxlQW5kRmxvYXQ+KGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjpzZW5kRG91Ymxl
QW5kRmxvYXQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChkZWNvZGVyLm1lc3Nh
Z2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OlNlbmRJbnRzOjpuYW1lKCkpIHsKLSAgICAg
ICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpTZW5kSW50cz4oZGVjb2Rl
ciwgdGhpcywgJldlYlBhZ2U6OnNlbmRJbnRzKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAg
ICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0UGFy
YW1ldGVyQXR0cmlidXRlczo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxN
ZXNzYWdlczo6V2ViUGFnZTo6VGVzdFBhcmFtZXRlckF0dHJpYnV0ZXM+KGRlY29kZXIsIHRoaXMs
ICZXZWJQYWdlOjp0ZXN0UGFyYW1ldGVyQXR0cmlidXRlcyk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6
VGVtcGxhdGVUZXN0OjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3Nh
Z2VzOjpXZWJQYWdlOjpUZW1wbGF0ZVRlc3Q+KGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjp0ZW1w
bGF0ZVRlc3QpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChkZWNvZGVyLm1lc3Nh
Z2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OlNldFZpZGVvTGF5ZXJJRDo6bmFtZSgpKSB7
Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6U2V0VmlkZW9M
YXllcklEPihkZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6c2V0VmlkZW9MYXllcklEKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLSNpZiBQTEFURk9STShNQUMpCi0gICAgaWYgKGRlY29kZXIubWVz
c2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6RGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5l
Y3Rpb246Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6Oldl
YlBhZ2U6OkRpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uPihkZWNvZGVyLCB0aGlzLCAmV2Vi
UGFnZTo6ZGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24pOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotI2VuZGlmCi0jaWYgRU5BQkxFKERFUFJFQ0FURURfRkVBVFVSRSkKLSAgICBpZiAoZGVj
b2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpEZXByZWNhdGVkT3BlcmF0
aW9uOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQ
YWdlOjpEZXByZWNhdGVkT3BlcmF0aW9uPihkZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6ZGVwcmVj
YXRlZE9wZXJhdGlvbik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYKLSNpZiBFTkFC
TEUoRVhQRVJJTUVOVEFMX0ZFQVRVUkUpCi0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9
PSBNZXNzYWdlczo6V2ViUGFnZTo6RXhwZXJpbWVudGFsT3BlcmF0aW9uOjpuYW1lKCkpIHsKLSAg
ICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpFeHBlcmltZW50YWxP
cGVyYXRpb24+KGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjpleHBlcmltZW50YWxPcGVyYXRpb24p
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlmCi0gICAgVU5VU0VEX1BBUkFNKGNvbm5l
Y3Rpb24pOwotICAgIFVOVVNFRF9QQVJBTShkZWNvZGVyKTsKLSAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLX0KLQotdm9pZCBXZWJQYWdlOjpkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0
cjxJUEM6OkVuY29kZXI+JiByZXBseUVuY29kZXIpCi17Ci0gICAgYXV0byBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyk7Ci0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNz
YWdlczo6V2ViUGFnZTo6Q3JlYXRlUGx1Z2luOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5k
bGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpDcmVhdGVQbHVnaW4+KGRlY29kZXIsICpyZXBs
eUVuY29kZXIsIHRoaXMsICZXZWJQYWdlOjpjcmVhdGVQbHVnaW4pOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBh
Z2U6OlJ1bkphdmFTY3JpcHRBbGVydDo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVz
c2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6UnVuSmF2YVNjcmlwdEFsZXJ0PihkZWNvZGVyLCAqcmVw
bHlFbmNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6cnVuSmF2YVNjcmlwdEFsZXJ0KTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2Vz
OjpXZWJQYWdlOjpHZXRQbHVnaW5zOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNz
YWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRQbHVnaW5zPihkZWNvZGVyLCAqcmVwbHlFbmNvZGVy
LCB0aGlzLCAmV2ViUGFnZTo6Z2V0UGx1Z2lucyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0g
ICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6R2V0UGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb246Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3Nh
Z2VTeW5jaHJvbm91czxNZXNzYWdlczo6V2ViUGFnZTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rp
b24+KGNvbm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5RW5jb2RlciwgdGhpcywgJldlYlBhZ2U6Omdl
dFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBp
ZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0TXVsdGlw
bGVBdHRyaWJ1dGVzOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlU3luY2hy
b25vdXNXYW50c0Nvbm5lY3Rpb248TWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RNdWx0aXBsZUF0dHJp
YnV0ZXM+KGNvbm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5RW5jb2RlciwgdGhpcywgJldlYlBhZ2U6
OnRlc3RNdWx0aXBsZUF0dHJpYnV0ZXMpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2lmIFBM
QVRGT1JNKE1BQykKLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpX
ZWJQYWdlOjpJbnRlcnByZXRLZXlFdmVudDo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxl
TWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6SW50ZXJwcmV0S2V5RXZlbnQ+KGRlY29kZXIsICpy
ZXBseUVuY29kZXIsIHRoaXMsICZXZWJQYWdlOjppbnRlcnByZXRLZXlFdmVudCk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0jZW5kaWYKLSAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7Ci0g
ICAgVU5VU0VEX1BBUkFNKGRlY29kZXIpOwotICAgIFVOVVNFRF9QQVJBTShyZXBseUVuY29kZXIp
OwotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQK
LQotCi0jZW5kaWYgLy8gKEVOQUJMRShXRUJLSVQyKSAmJiAoTkVTVEVEX01BU1RFUl9DT05ESVRJ
T04gfHwgTUFTVEVSX09SICYmIE1BU1RFUl9BTkQpKQoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291
cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9NZXNzYWdlUmVjZWl2ZXItZXhwZWN0ZWQuY3BwCl9f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX18KRGVsZXRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMSArMCwwICMjCi1uYXRpdmUKXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogU291cmNlL1dlYktpdC9TY3JpcHRz
L3dlYmtpdC9NZXNzYWdlUmVjZWl2ZXJTdXBlcmNsYXNzLWV4cGVjdGVkLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L01lc3NhZ2VSZWNlaXZlclN1cGVyY2xh
c3MtZXhwZWN0ZWQuY3BwCShyZXZpc2lvbiAyNjA3NjQpCisrKyBTb3VyY2UvV2ViS2l0L1Njcmlw
dHMvd2Via2l0L01lc3NhZ2VSZWNlaXZlclN1cGVyY2xhc3MtZXhwZWN0ZWQuY3BwCShub25leGlz
dGVudCkKQEAgLTEsMTg5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnIEFORAotICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
LSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0gKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0gKiBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUgotICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0gKiBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0KLSNpbmNsdWRlICJXZWJQYWdlLmgiCi0KLSNpbmNsdWRlICJBcmd1bWVudENvZGVy
cy5oIgotI2luY2x1ZGUgIkRlY29kZXIuaCIKLSNpbmNsdWRlICJIYW5kbGVNZXNzYWdlLmgiCi0j
aW5jbHVkZSAiVGVzdENsYXNzTmFtZS5oIgotI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCi0jaW5j
bHVkZSAiVGVzdFR3b1N0YXRlRW51bS5oIgotI2VuZGlmCi0jaW5jbHVkZSAiV2ViUGFnZU1lc3Nh
Z2VzLmgiCi0jaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBNZXNzYWdlcyB7Ci0KLW5hbWVzcGFjZSBXZWJQYWdlIHsK
LQotI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCi0KLXZvaWQgVGVzdEFzeW5jTWVzc2FnZTo6Y2Fs
bFJlcGx5KElQQzo6RGVjb2RlciYgZGVjb2RlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50
NjRfdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAgICBPcHRpb25hbDx1aW50NjRfdD4g
cmVzdWx0OwotICAgIGRlY29kZXIgPj4gcmVzdWx0OwotICAgIGlmICghcmVzdWx0KSB7Ci0gICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICBjYW5jZWxSZXBseShXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY29tcGxldGlv
bkhhbmRsZXIoV1RGTW92ZSgqcmVzdWx0KSk7Ci19Ci0KLXZvaWQgVGVzdEFzeW5jTWVzc2FnZTo6
Y2FuY2VsUmVwbHkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCYmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKLXsKLSAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkFzeW5jUmVwbHlFcnJv
cjx1aW50NjRfdD46OmNyZWF0ZSgpKTsKLX0KLQotdm9pZCBUZXN0QXN5bmNNZXNzYWdlOjpzZW5k
KHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiYgZW5jb2RlciwgSVBDOjpDb25uZWN0aW9u
JiBjb25uZWN0aW9uLCB1aW50NjRfdCByZXN1bHQpCi17Ci0gICAgKmVuY29kZXIgPDwgcmVzdWx0
OwotICAgIGNvbm5lY3Rpb24uc2VuZFN5bmNSZXBseShXVEZNb3ZlKGVuY29kZXIpKTsKLX0KLQot
I2VuZGlmCi0KLSNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQotCi12b2lkIFRlc3RBc3luY01lc3Nh
Z2VXaXRoTm9Bcmd1bWVudHM6OmNhbGxSZXBseShJUEM6OkRlY29kZXImIGRlY29kZXIsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAgICBjb21wbGV0
aW9uSGFuZGxlcigpOwotfQotCi12b2lkIFRlc3RBc3luY01lc3NhZ2VXaXRoTm9Bcmd1bWVudHM6
OmNhbmNlbFJlcGx5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKLXsKLSAgICBjb21wbGV0aW9uSGFuZGxlcigpOwotfQotCi12b2lkIFRlc3RBc3luY01lc3Nh
Z2VXaXRoTm9Bcmd1bWVudHM6OnNlbmQoc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mJiBl
bmNvZGVyLCBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCi17Ci0gICAgY29ubmVjdGlvbi5z
ZW5kU3luY1JlcGx5KFdURk1vdmUoZW5jb2RlcikpOwotfQotCi0jZW5kaWYKLQotI2lmIEVOQUJM
RShURVNUX0ZFQVRVUkUpCi0KLXZvaWQgVGVzdEFzeW5jTWVzc2FnZVdpdGhNdWx0aXBsZUFyZ3Vt
ZW50czo6Y2FsbFJlcGx5KElQQzo6RGVjb2RlciYgZGVjb2RlciwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sJiYsIHVpbnQ2NF90JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIE9w
dGlvbmFsPGJvb2w+IGZsYWc7Ci0gICAgZGVjb2RlciA+PiBmbGFnOwotICAgIGlmICghZmxhZykg
ewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgY2FuY2VsUmVwbHkoV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIE9w
dGlvbmFsPHVpbnQ2NF90PiB2YWx1ZTsKLSAgICBkZWNvZGVyID4+IHZhbHVlOwotICAgIGlmICgh
dmFsdWUpIHsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIGNhbmNlbFJl
cGx5KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LSAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKCpmbGFnKSwgV1RGTW92ZSgqdmFsdWUpKTsK
LX0KLQotdm9pZCBUZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1lbnRzOjpjYW5jZWxS
ZXBseShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wmJiwgdWludDY0X3QmJik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCi17Ci0gICAgY29tcGxldGlvbkhhbmRsZXIoSVBDOjpBc3luY1JlcGx5RXJy
b3I8Ym9vbD46OmNyZWF0ZSgpLCBJUEM6OkFzeW5jUmVwbHlFcnJvcjx1aW50NjRfdD46OmNyZWF0
ZSgpKTsKLX0KLQotdm9pZCBUZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1lbnRzOjpz
ZW5kKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiYgZW5jb2RlciwgSVBDOjpDb25uZWN0
aW9uJiBjb25uZWN0aW9uLCBib29sIGZsYWcsIHVpbnQ2NF90IHZhbHVlKQotewotICAgICplbmNv
ZGVyIDw8IGZsYWc7Ci0gICAgKmVuY29kZXIgPDwgdmFsdWU7Ci0gICAgY29ubmVjdGlvbi5zZW5k
U3luY1JlcGx5KFdURk1vdmUoZW5jb2RlcikpOwotfQotCi0jZW5kaWYKLQotdm9pZCBUZXN0U3lu
Y01lc3NhZ2U6OnNlbmQoc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mJiBlbmNvZGVyLCBJ
UEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIHVpbnQ4X3QgcmVwbHkpCi17Ci0gICAgKmVuY29k
ZXIgPDwgcmVwbHk7Ci0gICAgY29ubmVjdGlvbi5zZW5kU3luY1JlcGx5KFdURk1vdmUoZW5jb2Rl
cikpOwotfQotCi12b2lkIFRlc3RTeW5jaHJvbm91c01lc3NhZ2U6OnNlbmQoc3RkOjp1bmlxdWVf
cHRyPElQQzo6RW5jb2Rlcj4mJiBlbmNvZGVyLCBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24s
IGNvbnN0IE9wdGlvbmFsPFdlYktpdDo6VGVzdENsYXNzTmFtZT4mIG9wdGlvbmFsUmVwbHkpCi17
Ci0gICAgKmVuY29kZXIgPDwgb3B0aW9uYWxSZXBseTsKLSAgICBjb25uZWN0aW9uLnNlbmRTeW5j
UmVwbHkoV1RGTW92ZShlbmNvZGVyKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYlBhZ2UKLQot
fSAvLyBuYW1lc3BhY2UgTWVzc2FnZXMKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLXZvaWQgV2Vi
UGFnZTo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6
OkRlY29kZXImIGRlY29kZXIpCi17Ci0gICAgYXV0byBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyk7Ci0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFn
ZTo6TG9hZFVSTDo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdl
czo6V2ViUGFnZTo6TG9hZFVSTD4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OmxvYWRVUkwpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCi0gICAgaWYg
KGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6VGVzdEFzeW5jTWVz
c2FnZTo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZUFzeW5jPE1lc3NhZ2Vz
OjpXZWJQYWdlOjpUZXN0QXN5bmNNZXNzYWdlPihjb25uZWN0aW9uLCBkZWNvZGVyLCB0aGlzLCAm
V2ViUGFnZTo6dGVzdEFzeW5jTWVzc2FnZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5k
aWYKLSNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1l
KCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RBc3luY01lc3NhZ2VXaXRoTm9Bcmd1bWVudHM6
Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2VBc3luYzxNZXNzYWdlczo6V2Vi
UGFnZTo6VGVzdEFzeW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50cz4oY29ubmVjdGlvbiwgZGVjb2Rl
ciwgdGhpcywgJldlYlBhZ2U6OnRlc3RBc3luY01lc3NhZ2VXaXRoTm9Bcmd1bWVudHMpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlmCi0jaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKLSAg
ICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0QXN5
bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1lbnRzOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpo
YW5kbGVNZXNzYWdlQXN5bmM8TWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RBc3luY01lc3NhZ2VXaXRo
TXVsdGlwbGVBcmd1bWVudHM+KGNvbm5lY3Rpb24sIGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjp0
ZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1lbnRzKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLSNlbmRpZgotICAgIFdlYlBhZ2VCYXNlOjpkaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0
aW9uLCBkZWNvZGVyKTsKLX0KLQotdm9pZCBXZWJQYWdlOjpkaWRSZWNlaXZlU3luY01lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIHN0ZDo6
dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiByZXBseUVuY29kZXIpCi17Ci0gICAgYXV0byBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyk7Ci0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUo
KSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6VGVzdFN5bmNNZXNzYWdlOjpuYW1lKCkpIHsKLSAgICAg
ICAgSVBDOjpoYW5kbGVNZXNzYWdlU3luY2hyb25vdXM8TWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RT
eW5jTWVzc2FnZT4oY29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyLCB0aGlzLCAmV2Vi
UGFnZTo6dGVzdFN5bmNNZXNzYWdlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAo
ZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0U3luY2hyb25v
dXNNZXNzYWdlOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlU3luY2hyb25v
dXM8TWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RTeW5jaHJvbm91c01lc3NhZ2U+KGNvbm5lY3Rpb24s
IGRlY29kZXIsIHJlcGx5RW5jb2RlciwgdGhpcywgJldlYlBhZ2U6OnRlc3RTeW5jaHJvbm91c01l
c3NhZ2UpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIFVOVVNFRF9QQVJBTShjb25uZWN0
aW9uKTsKLSAgICBVTlVTRURfUEFSQU0oZGVjb2Rlcik7Ci0gICAgVU5VU0VEX1BBUkFNKHJlcGx5
RW5jb2Rlcik7Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYktpdAotCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Vi
a2l0L01lc3NhZ2VSZWNlaXZlclN1cGVyY2xhc3MtZXhwZWN0ZWQuY3BwCl9fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVs
ZXRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMSArMCwwICMjCi1uYXRpdmUKXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9NZXNz
YWdlcy1leHBlY3RlZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJr
aXQvTWVzc2FnZXMtZXhwZWN0ZWQuaAkocmV2aXNpb24gMjYwNzY0KQorKysgU291cmNlL1dlYktp
dC9TY3JpcHRzL3dlYmtpdC9NZXNzYWdlcy1leHBlY3RlZC5oCShub25leGlzdGVudCkKQEAgLTEs
NTcwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFO
RAotICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SCi0gKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0gKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgotICogU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIKLSAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0gKiBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIChFTkFC
TEUoV0VCS0lUMikgJiYgKE5FU1RFRF9NQVNURVJfQ09ORElUSU9OIHx8IE1BU1RFUl9PUiAmJiBN
QVNURVJfQU5EKSkKLQotI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCi0jaW5jbHVkZSAiQ29u
bmVjdGlvbi5oIgotI2luY2x1ZGUgIlBsdWdpbi5oIgotI2luY2x1ZGUgIldlYlBhZ2VNZXNzYWdl
c1JlcGxpZXMuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXIuaD4KLSNpbmNsdWRl
IDxXZWJDb3JlL0tleWJvYXJkRXZlbnQuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1BsdWdpbkRhdGEu
aD4KLSNpbmNsdWRlIDx1dGlsaXR5PgotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4K
LSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
Ci0KLW5hbWVzcGFjZSBJUEMgewotY2xhc3MgRHVtbXlUeXBlOwotY2xhc3MgTWFjaFBvcnQ7Ci19
Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotY2xhc3MgV2ViUHJlZmVyZW5jZXNTdG9yZTsKLWNsYXNz
IFdlYlRvdWNoRXZlbnQ7Ci19Ci0KLW5hbWVzcGFjZSBNZXNzYWdlcyB7Ci1uYW1lc3BhY2UgV2Vi
UGFnZSB7Ci0KLXN0YXRpYyBpbmxpbmUgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2Vp
dmVyTmFtZSgpCi17Ci0gICAgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJXZWJQYWdlIik7
Ci19Ci0KLWNsYXNzIExvYWRVUkwgewotcHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxj
b25zdCBTdHJpbmcmPiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVu
Y2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAg
c3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1Jl
ZmVyZW5jZSgiTG9hZFVSTCIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFs
c2U7Ci0KLSAgICBleHBsaWNpdCBMb2FkVVJMKGNvbnN0IFN0cmluZyYgdXJsKQotICAgICAgICA6
IG1fYXJndW1lbnRzKHVybCkKLSAgICB7Ci0gICAgfQotCi0gICAgY29uc3QgQXJndW1lbnRzJiBh
cmd1bWVudHMoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAg
IH0KLQotcHJpdmF0ZToKLSAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19OwotCi0jaWYgRU5B
QkxFKFRPVUNIX0VWRU5UUykKLWNsYXNzIExvYWRTb21ldGhpbmcgewotcHVibGljOgotICAgIHR5
cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBTdHJpbmcmPiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0aWMg
SVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2Vp
dmVyTmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJl
dHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiTG9hZFNvbWV0aGluZyIpOyB9Ci0gICAgc3RhdGlj
IGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7Ci0KLSAgICBleHBsaWNpdCBMb2FkU29tZXRoaW5n
KGNvbnN0IFN0cmluZyYgdXJsKQotICAgICAgICA6IG1fYXJndW1lbnRzKHVybCkKLSAgICB7Ci0g
ICAgfQotCi0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsKLSAg
ICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1bWVu
dHMgbV9hcmd1bWVudHM7Ci19OwotI2VuZGlmCi0KLSNpZiAoRU5BQkxFKFRPVUNIX0VWRU5UUykg
JiYgKE5FU1RFRF9NRVNTQUdFX0NPTkRJVElPTiB8fCBTT01FX09USEVSX01FU1NBR0VfQ09ORElU
SU9OKSkKLWNsYXNzIFRvdWNoRXZlbnQgewotcHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBs
ZTxjb25zdCBXZWJLaXQ6OldlYlRvdWNoRXZlbnQmPiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0aWMg
SVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2Vp
dmVyTmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJl
dHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiVG91Y2hFdmVudCIpOyB9Ci0gICAgc3RhdGljIGNv
bnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7Ci0KLSAgICBleHBsaWNpdCBUb3VjaEV2ZW50KGNvbnN0
IFdlYktpdDo6V2ViVG91Y2hFdmVudCYgZXZlbnQpCi0gICAgICAgIDogbV9hcmd1bWVudHMoZXZl
bnQpCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29u
c3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0KLXByaXZhdGU6
Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLSNlbmRpZgotCi0jaWYgKEVOQUJMRShU
T1VDSF9FVkVOVFMpICYmIChORVNURURfTUVTU0FHRV9DT05ESVRJT04gJiYgU09NRV9PVEhFUl9N
RVNTQUdFX0NPTkRJVElPTikpCi1jbGFzcyBBZGRFdmVudCB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRl
ZiBzdGQ6OnR1cGxlPGNvbnN0IFdlYktpdDo6V2ViVG91Y2hFdmVudCY+IEFyZ3VtZW50czsKLQot
ICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVybiBt
ZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2Ug
bmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJBZGRFdmVudCIpOyB9Ci0gICAg
c3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7Ci0KLSAgICBleHBsaWNpdCBBZGRFdmVu
dChjb25zdCBXZWJLaXQ6OldlYlRvdWNoRXZlbnQmIGV2ZW50KQotICAgICAgICA6IG1fYXJndW1l
bnRzKGV2ZW50KQotICAgIHsKLSAgICB9Ci0KLSAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50
cygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7Ci0gICAgfQotCi1w
cml2YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKLX07Ci0jZW5kaWYKLQotI2lmIEVO
QUJMRShUT1VDSF9FVkVOVFMpCi1jbGFzcyBMb2FkU29tZXRoaW5nRWxzZSB7Ci1wdWJsaWM6Ci0g
ICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGNvbnN0IFN0cmluZyY+IEFyZ3VtZW50czsKLQotICAgIHN0
YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNzYWdl
UmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgp
IHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJMb2FkU29tZXRoaW5nRWxzZSIpOyB9Ci0g
ICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7Ci0KLSAgICBleHBsaWNpdCBMb2Fk
U29tZXRoaW5nRWxzZShjb25zdCBTdHJpbmcmIHVybCkKLSAgICAgICAgOiBtX2FyZ3VtZW50cyh1
cmwpCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29u
c3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0KLXByaXZhdGU6
Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLSNlbmRpZgotCi1jbGFzcyBEaWRSZWNl
aXZlUG9saWN5RGVjaXNpb24gewotcHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTx1aW50
NjRfdCwgdWludDY0X3QsIHVpbnQzMl90PiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpT
dHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFt
ZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJ
UEM6OlN0cmluZ1JlZmVyZW5jZSgiRGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uIik7IH0KLSAgICBz
dGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKLQotICAgIERpZFJlY2VpdmVQb2xpY3lE
ZWNpc2lvbih1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBsaXN0ZW5lcklELCB1aW50MzJfdCBw
b2xpY3lBY3Rpb24pCi0gICAgICAgIDogbV9hcmd1bWVudHMoZnJhbWVJRCwgbGlzdGVuZXJJRCwg
cG9saWN5QWN0aW9uKQotICAgIHsKLSAgICB9Ci0KLSAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3Vt
ZW50cygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7Ci0gICAgfQot
Ci1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKLX07Ci0KLWNsYXNzIENsb3Nl
IHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8PiBBcmd1bWVudHM7Ci0KLSAgICBz
dGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUo
KSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiQ2xvc2UiKTsgfQotICAgIHN0YXRpYyBj
b25zdCBib29sIGlzU3luYyA9IGZhbHNlOwotCi0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVu
dHMoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQot
cHJpdmF0ZToKLSAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19OwotCi1jbGFzcyBQcmVmZXJl
bmNlc0RpZENoYW5nZSB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGNvbnN0IFdl
YktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZSY+IEFyZ3VtZW50czsKLQotICAgIHN0YXRpYyBJUEM6
OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJO
YW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJu
IElQQzo6U3RyaW5nUmVmZXJlbmNlKCJQcmVmZXJlbmNlc0RpZENoYW5nZSIpOyB9Ci0gICAgc3Rh
dGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7Ci0KLSAgICBleHBsaWNpdCBQcmVmZXJlbmNl
c0RpZENoYW5nZShjb25zdCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlKQotICAg
ICAgICA6IG1fYXJndW1lbnRzKHN0b3JlKQotICAgIHsKLSAgICB9Ci0KLSAgICBjb25zdCBBcmd1
bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9hcmd1bWVu
dHM7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKLX07Ci0K
LWNsYXNzIFNlbmREb3VibGVBbmRGbG9hdCB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1
cGxlPGRvdWJsZSwgZmxvYXQ+IEFyZ3VtZW50czsKLQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1Jl
ZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0K
LSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3Ry
aW5nUmVmZXJlbmNlKCJTZW5kRG91YmxlQW5kRmxvYXQiKTsgfQotICAgIHN0YXRpYyBjb25zdCBi
b29sIGlzU3luYyA9IGZhbHNlOwotCi0gICAgU2VuZERvdWJsZUFuZEZsb2F0KGRvdWJsZSBkLCBm
bG9hdCBmKQotICAgICAgICA6IG1fYXJndW1lbnRzKGQsIGYpCi0gICAgewotICAgIH0KLQotICAg
IGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVy
biBtX2FyZ3VtZW50czsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJndW1l
bnRzOwotfTsKLQotY2xhc3MgU2VuZEludHMgewotcHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0
dXBsZTxjb25zdCBWZWN0b3I8dWludDY0X3Q+JiwgY29uc3QgVmVjdG9yPFZlY3Rvcjx1aW50NjRf
dD4+Jj4gQXJndW1lbnRzOwotCi0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2Vp
dmVyTmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsgfQotICAgIHN0YXRpYyBJ
UEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2Uo
IlNlbmRJbnRzIik7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKLQot
ICAgIFNlbmRJbnRzKGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIGludHMsIGNvbnN0IFZlY3RvcjxW
ZWN0b3I8dWludDY0X3Q+PiYgaW50VmVjdG9ycykKLSAgICAgICAgOiBtX2FyZ3VtZW50cyhpbnRz
LCBpbnRWZWN0b3JzKQotICAgIHsKLSAgICB9Ci0KLSAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3Vt
ZW50cygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7Ci0gICAgfQot
Ci1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKLX07Ci0KLWNsYXNzIENyZWF0
ZVBsdWdpbiB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPHVpbnQ2NF90LCBjb25z
dCBXZWJLaXQ6OlBsdWdpbjo6UGFyYW1ldGVycyY+IEFyZ3VtZW50czsKLQotICAgIHN0YXRpYyBJ
UEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2
ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0
dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJDcmVhdGVQbHVnaW4iKTsgfQotICAgIHN0YXRpYyBj
b25zdCBib29sIGlzU3luYyA9IHRydWU7Ci0KLSAgICB1c2luZyBSZXBseSA9IHN0ZDo6dHVwbGU8
Ym9vbCY+OwotICAgIHVzaW5nIFJlcGx5QXJndW1lbnRzID0gc3RkOjp0dXBsZTxib29sPjsKLSAg
ICBDcmVhdGVQbHVnaW4odWludDY0X3QgcGx1Z2luSW5zdGFuY2VJRCwgY29uc3QgV2ViS2l0OjpQ
bHVnaW46OlBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCi0gICAgICAgIDogbV9hcmd1bWVudHMocGx1
Z2luSW5zdGFuY2VJRCwgcGFyYW1ldGVycykKLSAgICB7Ci0gICAgfQotCi0gICAgY29uc3QgQXJn
dW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1l
bnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19Owot
Ci1jbGFzcyBSdW5KYXZhU2NyaXB0QWxlcnQgewotcHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0
dXBsZTx1aW50NjRfdCwgY29uc3QgU3RyaW5nJj4gQXJndW1lbnRzOwotCi0gICAgc3RhdGljIElQ
Qzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZl
ck5hbWUoKTsgfQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1
cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIlJ1bkphdmFTY3JpcHRBbGVydCIpOyB9Ci0gICAgc3Rh
dGljIGNvbnN0IGJvb2wgaXNTeW5jID0gdHJ1ZTsKLQotICAgIHVzaW5nIFJlcGx5ID0gc3RkOjp0
dXBsZTw+OwotICAgIHVzaW5nIFJlcGx5QXJndW1lbnRzID0gc3RkOjp0dXBsZTw+OwotICAgIFJ1
bkphdmFTY3JpcHRBbGVydCh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2Up
Ci0gICAgICAgIDogbV9hcmd1bWVudHMoZnJhbWVJRCwgbWVzc2FnZSkKLSAgICB7Ci0gICAgfQot
Ci0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsKLSAgICAgICAg
cmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1bWVudHMgbV9h
cmd1bWVudHM7Ci19OwotCi1jbGFzcyBHZXRQbHVnaW5zIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVm
IHN0ZDo6dHVwbGU8Ym9vbD4gQXJndW1lbnRzOwotCi0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVm
ZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsgfQot
ICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpTdHJp
bmdSZWZlcmVuY2UoIkdldFBsdWdpbnMiKTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3lu
YyA9IHRydWU7Ci0KLSAgICB1c2luZyBSZXBseSA9IHN0ZDo6dHVwbGU8VmVjdG9yPFdlYkNvcmU6
OlBsdWdpbkluZm8+Jj47Ci0gICAgdXNpbmcgUmVwbHlBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPFZl
Y3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPj47Ci0gICAgZXhwbGljaXQgR2V0UGx1Z2lucyhib29s
IHJlZnJlc2gpCi0gICAgICAgIDogbV9hcmd1bWVudHMocmVmcmVzaCkKLSAgICB7Ci0gICAgfQot
Ci0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsKLSAgICAgICAg
cmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1bWVudHMgbV9h
cmd1bWVudHM7Ci19OwotCi1jbGFzcyBHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbiB7Ci1wdWJs
aWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGNvbnN0IFN0cmluZyY+IEFyZ3VtZW50czsKLQot
ICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVybiBt
ZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2Ug
bmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJHZXRQbHVnaW5Qcm9jZXNzQ29u
bmVjdGlvbiIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gdHJ1ZTsKLQotICAg
IHVzaW5nIERlbGF5ZWRSZXBseSA9IEdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uRGVsYXllZFJl
cGx5OwotICAgIHN0YXRpYyB2b2lkIHNlbmQoc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4m
JiwgSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgSVBDOjpDb25uZWN0aW9uOjpIYW5kbGUmIGNvbm5l
Y3Rpb25IYW5kbGUpOwotICAgIHVzaW5nIFJlcGx5ID0gc3RkOjp0dXBsZTxJUEM6OkNvbm5lY3Rp
b246OkhhbmRsZSY+OwotICAgIHVzaW5nIFJlcGx5QXJndW1lbnRzID0gc3RkOjp0dXBsZTxJUEM6
OkNvbm5lY3Rpb246OkhhbmRsZT47Ci0gICAgZXhwbGljaXQgR2V0UGx1Z2luUHJvY2Vzc0Nvbm5l
Y3Rpb24oY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoKQotICAgICAgICA6IG1fYXJndW1lbnRzKHBs
dWdpblBhdGgpCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRz
KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0KLXBy
aXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLQotY2xhc3MgVGVzdE11bHRp
cGxlQXR0cmlidXRlcyB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPD4gQXJndW1l
bnRzOwotCi0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsg
cmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsgfQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1Jl
ZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIlRlc3RNdWx0aXBs
ZUF0dHJpYnV0ZXMiKTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IHRydWU7Ci0K
LSAgICB1c2luZyBEZWxheWVkUmVwbHkgPSBUZXN0TXVsdGlwbGVBdHRyaWJ1dGVzRGVsYXllZFJl
cGx5OwotICAgIHN0YXRpYyB2b2lkIHNlbmQoc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4m
JiwgSVBDOjpDb25uZWN0aW9uJik7Ci0gICAgdXNpbmcgUmVwbHkgPSBzdGQ6OnR1cGxlPD47Ci0g
ICAgdXNpbmcgUmVwbHlBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPD47Ci0gICAgY29uc3QgQXJndW1l
bnRzJiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRz
OwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19OwotCi1j
bGFzcyBUZXN0UGFyYW1ldGVyQXR0cmlidXRlcyB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6
OnR1cGxlPHVpbnQ2NF90LCBkb3VibGUsIGRvdWJsZT4gQXJndW1lbnRzOwotCi0gICAgc3RhdGlj
IElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNl
aXZlck5hbWUoKTsgfQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyBy
ZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIlRlc3RQYXJhbWV0ZXJBdHRyaWJ1dGVzIik7IH0K
LSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKLQotICAgIFRlc3RQYXJhbWV0
ZXJBdHRyaWJ1dGVzKHVpbnQ2NF90IGZvbywgZG91YmxlIGJhciwgZG91YmxlIGJheikKLSAgICAg
ICAgOiBtX2FyZ3VtZW50cyhmb28sIGJhciwgYmF6KQotICAgIHsKLSAgICB9Ci0KLSAgICBjb25z
dCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9h
cmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsK
LX07Ci0KLWNsYXNzIFRlbXBsYXRlVGVzdCB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1
cGxlPGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBzdGQ6OnBhaXI8U3RyaW5nLCB1aW50NjRfdD4+Jj4g
QXJndW1lbnRzOwotCi0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFt
ZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsgfQotICAgIHN0YXRpYyBJUEM6OlN0
cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIlRlbXBs
YXRlVGVzdCIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7Ci0KLSAg
ICBleHBsaWNpdCBUZW1wbGF0ZVRlc3QoY29uc3QgSGFzaE1hcDxTdHJpbmcsIHN0ZDo6cGFpcjxT
dHJpbmcsIHVpbnQ2NF90Pj4mIGEpCi0gICAgICAgIDogbV9hcmd1bWVudHMoYSkKLSAgICB7Ci0g
ICAgfQotCi0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsKLSAg
ICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1bWVu
dHMgbV9hcmd1bWVudHM7Ci19OwotCi1jbGFzcyBTZXRWaWRlb0xheWVySUQgewotcHVibGljOgot
ICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpQbGF0
Zm9ybUxheWVySUQmPiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVu
Y2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAg
c3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1Jl
ZmVyZW5jZSgiU2V0VmlkZW9MYXllcklEIik7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5
bmMgPSBmYWxzZTsKLQotICAgIGV4cGxpY2l0IFNldFZpZGVvTGF5ZXJJRChjb25zdCBXZWJDb3Jl
OjpHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQmIHZpZGVvTGF5ZXJJRCkKLSAgICAgICAg
OiBtX2FyZ3VtZW50cyh2aWRlb0xheWVySUQpCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0IEFy
Z3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3Vt
ZW50czsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsK
LQotI2lmIFBMQVRGT1JNKE1BQykKLWNsYXNzIERpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9u
IHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8Y29uc3QgSVBDOjpNYWNoUG9ydCY+
IEFyZ3VtZW50czsKLQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5h
bWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpT
dHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJEaWRD
cmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbiIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNT
eW5jID0gZmFsc2U7Ci0KLSAgICBleHBsaWNpdCBEaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlv
bihjb25zdCBJUEM6Ok1hY2hQb3J0JiBjb25uZWN0aW9uSWRlbnRpZmllcikKLSAgICAgICAgOiBt
X2FyZ3VtZW50cyhjb25uZWN0aW9uSWRlbnRpZmllcikKLSAgICB7Ci0gICAgfQotCi0gICAgY29u
c3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1f
YXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7
Ci19OwotI2VuZGlmCi0KLSNpZiBQTEFURk9STShNQUMpCi1jbGFzcyBJbnRlcnByZXRLZXlFdmVu
dCB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPHVpbnQzMl90PiBBcmd1bWVudHM7
Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1
cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJl
bmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiSW50ZXJwcmV0S2V5RXZl
bnQiKTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IHRydWU7Ci0KLSAgICB1c2lu
ZyBSZXBseSA9IHN0ZDo6dHVwbGU8VmVjdG9yPFdlYkNvcmU6OktleXByZXNzQ29tbWFuZD4mPjsK
LSAgICB1c2luZyBSZXBseUFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8VmVjdG9yPFdlYkNvcmU6Oktl
eXByZXNzQ29tbWFuZD4+OwotICAgIGV4cGxpY2l0IEludGVycHJldEtleUV2ZW50KHVpbnQzMl90
IHR5cGUpCi0gICAgICAgIDogbV9hcmd1bWVudHModHlwZSkKLSAgICB7Ci0gICAgfQotCi0gICAg
Y29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJu
IG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1bWVudHMgbV9hcmd1bWVu
dHM7Ci19OwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoREVQUkVDQVRFRF9GRUFUVVJFKQotY2xhc3Mg
RGVwcmVjYXRlZE9wZXJhdGlvbiB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGNv
bnN0IElQQzo6RHVtbXlUeXBlJj4gQXJndW1lbnRzOwotCi0gICAgc3RhdGljIElQQzo6U3RyaW5n
UmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsg
fQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpT
dHJpbmdSZWZlcmVuY2UoIkRlcHJlY2F0ZWRPcGVyYXRpb24iKTsgfQotICAgIHN0YXRpYyBjb25z
dCBib29sIGlzU3luYyA9IGZhbHNlOwotCi0gICAgZXhwbGljaXQgRGVwcmVjYXRlZE9wZXJhdGlv
bihjb25zdCBJUEM6OkR1bW15VHlwZSYgZHVtbXkpCi0gICAgICAgIDogbV9hcmd1bWVudHMoZHVt
bXkpCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29u
c3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0KLXByaXZhdGU6
Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLSNlbmRpZgotCi0jaWYgRU5BQkxFKEVY
UEVSSU1FTlRBTF9GRUFUVVJFKQotY2xhc3MgRXhwZXJpbWVudGFsT3BlcmF0aW9uIHsKLXB1Ymxp
YzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8Y29uc3QgSVBDOjpEdW1teVR5cGUmPiBBcmd1bWVu
dHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyBy
ZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVm
ZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiRXhwZXJpbWVudGFs
T3BlcmF0aW9uIik7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKLQot
ICAgIGV4cGxpY2l0IEV4cGVyaW1lbnRhbE9wZXJhdGlvbihjb25zdCBJUEM6OkR1bW15VHlwZSYg
ZHVtbXkpCi0gICAgICAgIDogbV9hcmd1bWVudHMoZHVtbXkpCi0gICAgewotICAgIH0KLQotICAg
IGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVy
biBtX2FyZ3VtZW50czsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJndW1l
bnRzOwotfTsKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBXZWJQYWdlCi19IC8vIG5hbWVzcGFj
ZSBNZXNzYWdlcwotCi0jZW5kaWYgLy8gKEVOQUJMRShXRUJLSVQyKSAmJiAoTkVTVEVEX01BU1RF
Ul9DT05ESVRJT04gfHwgTUFTVEVSX09SICYmIE1BU1RFUl9BTkQpKQoKUHJvcGVydHkgY2hhbmdl
cyBvbjogU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9NZXNzYWdlcy1leHBlY3RlZC5oCl9f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX18KRGVsZXRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMSArMCwwICMjCi1uYXRpdmUKXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogU291cmNlL1dlYktpdC9TY3JpcHRz
L3dlYmtpdC9NZXNzYWdlc1JlcGxpZXMtZXhwZWN0ZWQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvd2Via2l0L01lc3NhZ2VzUmVwbGllcy1leHBlY3RlZC5oCShyZXZpc2lv
biAyNjA3NjQpCisrKyBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L01lc3NhZ2VzUmVwbGll
cy1leHBlY3RlZC5oCShub25leGlzdGVudCkKQEAgLTEsNDMgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECi0gKiBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSAqIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwKLSAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0gKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotICogQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwKLSAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgKEVOQUJMRShXRUJLSVQyKSAmJiAoTkVTVEVEX01B
U1RFUl9DT05ESVRJT04gfHwgTUFTVEVSX09SICYmIE1BU1RFUl9BTkQpKQotCi0jaW5jbHVkZSAi
Q29ubmVjdGlvbi5oIgotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0KLQotbmFtZXNwYWNlIE1l
c3NhZ2VzIHsKLW5hbWVzcGFjZSBXZWJQYWdlIHsKLQotdXNpbmcgR2V0UGx1Z2luUHJvY2Vzc0Nv
bm5lY3Rpb25EZWxheWVkUmVwbHkgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6
Q29ubmVjdGlvbjo6SGFuZGxlJiBjb25uZWN0aW9uSGFuZGxlKT47Ci0KLXVzaW5nIFRlc3RNdWx0
aXBsZUF0dHJpYnV0ZXNEZWxheWVkUmVwbHkgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+Owot
Ci19IC8vIG5hbWVzcGFjZSBXZWJQYWdlCi19IC8vIG5hbWVzcGFjZSBNZXNzYWdlcwotCi0jZW5k
aWYgLy8gKEVOQUJMRShXRUJLSVQyKSAmJiAoTkVTVEVEX01BU1RFUl9DT05ESVRJT04gfHwgTUFT
VEVSX09SICYmIE1BU1RFUl9BTkQpKQpJbmRleDogU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtp
dC9NZXNzYWdlc1JlcGxpZXNTdXBlcmNsYXNzUmVwbGllcy1leHBlY3RlZC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvTWVzc2FnZXNSZXBsaWVzU3VwZXJjbGFz
c1JlcGxpZXMtZXhwZWN0ZWQuaAkocmV2aXNpb24gMjYwNzY0KQorKysgU291cmNlL1dlYktpdC9T
Y3JpcHRzL3dlYmtpdC9NZXNzYWdlc1JlcGxpZXNTdXBlcmNsYXNzUmVwbGllcy1leHBlY3RlZC5o
CShub25leGlzdGVudCkKQEAgLTEsNTIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycgQU5ECi0gKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSAqIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SCi0gKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotICogQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwKLSAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFn
bWEgb25jZQotCi0jaW5jbHVkZSAiVGVzdENsYXNzTmFtZS5oIgotI2luY2x1ZGUgPHd0Zi9Gb3J3
YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+Ci0KLQotbmFtZXNwYWNlIE1lc3NhZ2Vz
IHsKLW5hbWVzcGFjZSBXZWJQYWdlIHsKLQotI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCi11c2lu
ZyBUZXN0QXN5bmNNZXNzYWdlQXN5bmNSZXBseSA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWlu
dDY0X3QgcmVzdWx0KT47Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCi11c2lu
ZyBUZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJndW1lbnRzQXN5bmNSZXBseSA9IENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT47Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCi11c2lu
ZyBUZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1lbnRzQXN5bmNSZXBseSA9IENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBmbGFnLCB1aW50NjRfdCB2YWx1ZSk+OwotI2VuZGlmCi0K
LXVzaW5nIFRlc3RTeW5jTWVzc2FnZURlbGF5ZWRSZXBseSA9IENvbXBsZXRpb25IYW5kbGVyPHZv
aWQodWludDhfdCByZXBseSk+OwotCi11c2luZyBUZXN0U3luY2hyb25vdXNNZXNzYWdlRGVsYXll
ZFJlcGx5ID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBPcHRpb25hbDxXZWJLaXQ6OlRl
c3RDbGFzc05hbWU+JiBvcHRpb25hbFJlcGx5KT47Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYlBhZ2UK
LX0gLy8gbmFtZXNwYWNlIE1lc3NhZ2VzCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Vi
a2l0L01lc3NhZ2VzU3VwZXJjbGFzcy1leHBlY3RlZC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvU2NyaXB0cy93ZWJraXQvTWVzc2FnZXNTdXBlcmNsYXNzLWV4cGVjdGVkLmgJKHJldmlz
aW9uIDI2MDc2NCkKKysrIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvTWVzc2FnZXNTdXBl
cmNsYXNzLWV4cGVjdGVkLmgJKG5vbmV4aXN0ZW50KQpAQCAtMSwyMDYgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECi0gKiBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSAqIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwKLSAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0gKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotICog
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwKLSAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIK
LSNpbmNsdWRlICJDb25uZWN0aW9uLmgiCi0jaW5jbHVkZSAiVGVzdENsYXNzTmFtZS5oIgotI2lu
Y2x1ZGUgIldlYlBhZ2VNZXNzYWdlc1JlcGxpZXMuaCIKLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgotI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgotI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVm
Q291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2Ug
V2ViS2l0IHsKLWVudW0gY2xhc3MgVGVzdFR3b1N0YXRlRW51bSA6IGJvb2w7Ci19Ci0KLW5hbWVz
cGFjZSBNZXNzYWdlcyB7Ci1uYW1lc3BhY2UgV2ViUGFnZSB7Ci0KLXN0YXRpYyBpbmxpbmUgSVBD
OjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSgpCi17Ci0gICAgcmV0dXJuIElQ
Qzo6U3RyaW5nUmVmZXJlbmNlKCJXZWJQYWdlIik7Ci19Ci0KLWNsYXNzIExvYWRVUkwgewotcHVi
bGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBTdHJpbmcmPiBBcmd1bWVudHM7Ci0K
LSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4g
bWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNl
IG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiTG9hZFVSTCIpOyB9Ci0gICAg
c3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7Ci0KLSAgICBleHBsaWNpdCBMb2FkVVJM
KGNvbnN0IFN0cmluZyYgdXJsKQotICAgICAgICA6IG1fYXJndW1lbnRzKHVybCkKLSAgICB7Ci0g
ICAgfQotCi0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsKLSAg
ICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1bWVu
dHMgbV9hcmd1bWVudHM7Ci19OwotCi0jaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKLWNsYXNzIFRl
c3RBc3luY01lc3NhZ2UgewotcHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxXZWJLaXQ6
OlRlc3RUd29TdGF0ZUVudW0+IEFyZ3VtZW50czsKLQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1Jl
ZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0K
LSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3Ry
aW5nUmVmZXJlbmNlKCJUZXN0QXN5bmNNZXNzYWdlIik7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9v
bCBpc1N5bmMgPSBmYWxzZTsKLQotICAgIHN0YXRpYyB2b2lkIGNhbGxSZXBseShJUEM6OkRlY29k
ZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90JiYpPiYmKTsKLSAgICBzdGF0aWMg
dm9pZCBjYW5jZWxSZXBseShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90JiYpPiYmKTsK
LSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgYXN5bmNNZXNzYWdlUmVwbHlOYW1lKCkg
eyByZXR1cm4geyAiVGVzdEFzeW5jTWVzc2FnZVJlcGx5IiB9OyB9Ci0gICAgdXNpbmcgQXN5bmNS
ZXBseSA9IFRlc3RBc3luY01lc3NhZ2VBc3luY1JlcGx5OwotICAgIHN0YXRpYyB2b2lkIHNlbmQo
c3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mJiwgSVBDOjpDb25uZWN0aW9uJiwgdWludDY0
X3QgcmVzdWx0KTsKLSAgICB1c2luZyBSZXBseSA9IHN0ZDo6dHVwbGU8dWludDY0X3QmPjsKLSAg
ICB1c2luZyBSZXBseUFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8dWludDY0X3Q+OwotICAgIGV4cGxp
Y2l0IFRlc3RBc3luY01lc3NhZ2UoV2ViS2l0OjpUZXN0VHdvU3RhdGVFbnVtIHR3b1N0YXRlRW51
bSkKLSAgICAgICAgOiBtX2FyZ3VtZW50cyh0d29TdGF0ZUVudW0pCi0gICAgewotICAgIH0KLQot
ICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJn
dW1lbnRzOwotfTsKLSNlbmRpZgotCi0jaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKLWNsYXNzIFRl
c3RBc3luY01lc3NhZ2VXaXRoTm9Bcmd1bWVudHMgewotcHVibGljOgotICAgIHR5cGVkZWYgc3Rk
Ojp0dXBsZTw+IEFyZ3VtZW50czsKLQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBy
ZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0
aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJl
bmNlKCJUZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJndW1lbnRzIik7IH0KLSAgICBzdGF0aWMgY29u
c3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKLQotICAgIHN0YXRpYyB2b2lkIGNhbGxSZXBseShJUEM6
OkRlY29kZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHN0YXRpYyB2b2lk
IGNhbmNlbFJlcGx5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgc3RhdGljIElQ
Qzo6U3RyaW5nUmVmZXJlbmNlIGFzeW5jTWVzc2FnZVJlcGx5TmFtZSgpIHsgcmV0dXJuIHsgIlRl
c3RBc3luY01lc3NhZ2VXaXRoTm9Bcmd1bWVudHNSZXBseSIgfTsgfQotICAgIHVzaW5nIEFzeW5j
UmVwbHkgPSBUZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJndW1lbnRzQXN5bmNSZXBseTsKLSAgICBz
dGF0aWMgdm9pZCBzZW5kKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiYsIElQQzo6Q29u
bmVjdGlvbiYpOwotICAgIHVzaW5nIFJlcGx5ID0gc3RkOjp0dXBsZTw+OwotICAgIHVzaW5nIFJl
cGx5QXJndW1lbnRzID0gc3RkOjp0dXBsZTw+OwotICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1l
bnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0K
LXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLSNlbmRpZgotCi0jaWYg
RU5BQkxFKFRFU1RfRkVBVFVSRSkKLWNsYXNzIFRlc3RBc3luY01lc3NhZ2VXaXRoTXVsdGlwbGVB
cmd1bWVudHMgewotcHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTw+IEFyZ3VtZW50czsK
LQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVy
biBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVu
Y2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJUZXN0QXN5bmNNZXNzYWdl
V2l0aE11bHRpcGxlQXJndW1lbnRzIik7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMg
PSBmYWxzZTsKLQotICAgIHN0YXRpYyB2b2lkIGNhbGxSZXBseShJUEM6OkRlY29kZXImLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wmJiwgdWludDY0X3QmJik+JiYpOwotICAgIHN0YXRpYyB2
b2lkIGNhbmNlbFJlcGx5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCYmLCB1aW50NjRfdCYm
KT4mJik7Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIGFzeW5jTWVzc2FnZVJlcGx5
TmFtZSgpIHsgcmV0dXJuIHsgIlRlc3RBc3luY01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHNS
ZXBseSIgfTsgfQotICAgIHVzaW5nIEFzeW5jUmVwbHkgPSBUZXN0QXN5bmNNZXNzYWdlV2l0aE11
bHRpcGxlQXJndW1lbnRzQXN5bmNSZXBseTsKLSAgICBzdGF0aWMgdm9pZCBzZW5kKHN0ZDo6dW5p
cXVlX3B0cjxJUEM6OkVuY29kZXI+JiYsIElQQzo6Q29ubmVjdGlvbiYsIGJvb2wgZmxhZywgdWlu
dDY0X3QgdmFsdWUpOwotICAgIHVzaW5nIFJlcGx5ID0gc3RkOjp0dXBsZTxib29sJiwgdWludDY0
X3QmPjsKLSAgICB1c2luZyBSZXBseUFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8Ym9vbCwgdWludDY0
X3Q+OwotICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1lbnRz
IG1fYXJndW1lbnRzOwotfTsKLSNlbmRpZgotCi1jbGFzcyBUZXN0U3luY01lc3NhZ2UgewotcHVi
bGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTx1aW50MzJfdD4gQXJndW1lbnRzOwotCi0gICAg
c3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3Nh
Z2VSZWNlaXZlck5hbWUoKTsgfQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1l
KCkgeyByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIlRlc3RTeW5jTWVzc2FnZSIpOyB9Ci0g
ICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gdHJ1ZTsKLQotICAgIHVzaW5nIERlbGF5ZWRS
ZXBseSA9IFRlc3RTeW5jTWVzc2FnZURlbGF5ZWRSZXBseTsKLSAgICBzdGF0aWMgdm9pZCBzZW5k
KHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiYsIElQQzo6Q29ubmVjdGlvbiYsIHVpbnQ4
X3QgcmVwbHkpOwotICAgIHVzaW5nIFJlcGx5ID0gc3RkOjp0dXBsZTx1aW50OF90Jj47Ci0gICAg
dXNpbmcgUmVwbHlBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPHVpbnQ4X3Q+OwotICAgIGV4cGxpY2l0
IFRlc3RTeW5jTWVzc2FnZSh1aW50MzJfdCBwYXJhbSkKLSAgICAgICAgOiBtX2FyZ3VtZW50cyhw
YXJhbSkKLSAgICB7Ci0gICAgfQotCi0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBj
b25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0
ZToKLSAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19OwotCi1jbGFzcyBUZXN0U3luY2hyb25v
dXNNZXNzYWdlIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8Ym9vbD4gQXJndW1l
bnRzOwotCi0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsg
cmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsgfQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1Jl
ZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIlRlc3RTeW5jaHJv
bm91c01lc3NhZ2UiKTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IHRydWU7Ci0K
LSAgICB1c2luZyBEZWxheWVkUmVwbHkgPSBUZXN0U3luY2hyb25vdXNNZXNzYWdlRGVsYXllZFJl
cGx5OwotICAgIHN0YXRpYyB2b2lkIHNlbmQoc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4m
JiwgSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgT3B0aW9uYWw8V2ViS2l0OjpUZXN0Q2xhc3NOYW1l
PiYgb3B0aW9uYWxSZXBseSk7Ci0gICAgdXNpbmcgUmVwbHkgPSBzdGQ6OnR1cGxlPE9wdGlvbmFs
PFdlYktpdDo6VGVzdENsYXNzTmFtZT4mPjsKLSAgICB1c2luZyBSZXBseUFyZ3VtZW50cyA9IHN0
ZDo6dHVwbGU8T3B0aW9uYWw8V2ViS2l0OjpUZXN0Q2xhc3NOYW1lPj47Ci0gICAgZXhwbGljaXQg
VGVzdFN5bmNocm9ub3VzTWVzc2FnZShib29sIHZhbHVlKQotICAgICAgICA6IG1fYXJndW1lbnRz
KHZhbHVlKQotICAgIHsKLSAgICB9Ci0KLSAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygp
IGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7Ci0gICAgfQotCi1wcml2
YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YlBhZ2UKLX0gLy8gbmFtZXNwYWNlIE1lc3NhZ2VzCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3Vy
Y2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L01lc3NhZ2VzU3VwZXJjbGFzcy1leHBlY3RlZC5oCl9f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX18KRGVsZXRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMSArMCwwICMjCi1uYXRpdmUKXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogU291cmNlL1dlYktpdC9TY3JpcHRz
L3dlYmtpdC9tZXNzYWdlcy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMv
d2Via2l0L21lc3NhZ2VzLnB5CShyZXZpc2lvbiAyNjA3NjQpCisrKyBTb3VyY2UvV2ViS2l0L1Nj
cmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBA
IFNZTkNIUk9OT1VTX0FUVFJJQlVURSA9ICdTeW5jaHJvbm91cycKIEFTWU5DX0FUVFJJQlVURSA9
ICdBc3luYycKIAogX2xpY2Vuc2VfaGVhZGVyID0gIiIiLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMTM0LDcgKzEzNCw3IEBAIGRlZiBtZXNzYWdlX3RvX3JlcGx5
X2ZvcndhcmRfZGVjbGFyYXRpb24KICAgICByZXR1cm4gc3Vycm91bmRfaW5fY29uZGl0aW9uKCcn
LmpvaW4ocmVzdWx0KSwgbWVzc2FnZS5jb25kaXRpb24pCiAKIAotZGVmIG1lc3NhZ2VfdG9fc3Ry
dWN0X2RlY2xhcmF0aW9uKG1lc3NhZ2UpOgorZGVmIG1lc3NhZ2VfdG9fc3RydWN0X2RlY2xhcmF0
aW9uKHJlY2VpdmVyLCBtZXNzYWdlKToKICAgICByZXN1bHQgPSBbXQogICAgIGZ1bmN0aW9uX3Bh
cmFtZXRlcnMgPSBbKGZ1bmN0aW9uX3BhcmFtZXRlcl90eXBlKHgudHlwZSwgeC5raW5kKSwgeC5u
YW1lKSBmb3IgeCBpbiBtZXNzYWdlLnBhcmFtZXRlcnNdCiAKQEAgLTE0Miw4ICsxNDIsNyBAQCBk
ZWYgbWVzc2FnZV90b19zdHJ1Y3RfZGVjbGFyYXRpb24obWVzc2FnCiAgICAgcmVzdWx0LmFwcGVu
ZCgncHVibGljOlxuJykKICAgICByZXN1bHQuYXBwZW5kKCcgICAgdHlwZWRlZiAlcyBBcmd1bWVu
dHM7XG4nICUgYXJndW1lbnRzX3R5cGUobWVzc2FnZSkpCiAgICAgcmVzdWx0LmFwcGVuZCgnXG4n
KQotICAgIHJlc3VsdC5hcHBlbmQoJyAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVj
ZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9XG4nKQotICAgIHJl
c3VsdC5hcHBlbmQoJyAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0
dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCIlcyIpOyB9XG4nICUgbWVzc2FnZS5uYW1lKQorICAg
IHJlc3VsdC5hcHBlbmQoJyAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1
cm4gSVBDOjpNZXNzYWdlTmFtZTo6JXNfJXM7IH1cbicgJSAocmVjZWl2ZXIubmFtZSwgbWVzc2Fn
ZS5uYW1lKSkKICAgICByZXN1bHQuYXBwZW5kKCcgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5j
ID0gJXM7XG4nICUgKCdmYWxzZScsICd0cnVlJylbbWVzc2FnZS5yZXBseV9wYXJhbWV0ZXJzICE9
IE5vbmUgYW5kIG5vdCBtZXNzYWdlLmhhc19hdHRyaWJ1dGUoQVNZTkNfQVRUUklCVVRFKV0pCiAg
ICAgcmVzdWx0LmFwcGVuZCgnXG4nKQogICAgIGlmIG1lc3NhZ2UucmVwbHlfcGFyYW1ldGVycyAh
PSBOb25lOgpAQCAtMTUzLDcgKzE1Miw3IEBAIGRlZiBtZXNzYWdlX3RvX3N0cnVjdF9kZWNsYXJh
dGlvbihtZXNzYWcKICAgICAgICAgICAgIG1vdmVfcGFyYW1ldGVycyA9ICcsICcuam9pbihbbW92
ZV90eXBlKHgudHlwZSkgZm9yIHggaW4gbWVzc2FnZS5yZXBseV9wYXJhbWV0ZXJzXSkKICAgICAg
ICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBzdGF0aWMgdm9pZCBjYWxsUmVwbHkoSVBDOjpEZWNv
ZGVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCglcyk+JiYpO1xuJyAlIG1vdmVfcGFyYW1ldGVy
cykKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBzdGF0aWMgdm9pZCBjYW5jZWxSZXBs
eShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCVzKT4mJik7XG4nICUgbW92ZV9wYXJhbWV0ZXJzKQot
ICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5j
ZSBhc3luY01lc3NhZ2VSZXBseU5hbWUoKSB7IHJldHVybiB7ICIlc1JlcGx5IiB9OyB9XG4nICUg
bWVzc2FnZS5uYW1lKQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIHN0YXRpYyBJUEM6
Ok1lc3NhZ2VOYW1lIGFzeW5jTWVzc2FnZVJlcGx5TmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2Fn
ZU5hbWU6OiVzXyVzUmVwbHk7IH1cbicgJSAocmVjZWl2ZXIubmFtZSwgbWVzc2FnZS5uYW1lKSkK
ICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICB1c2luZyBBc3luY1JlcGx5ID0gJXNBc3lu
Y1JlcGx5O1xuJyAlIG1lc3NhZ2UubmFtZSkKICAgICAgICAgZWxpZiBtZXNzYWdlLmhhc19hdHRy
aWJ1dGUoU1lOQ0hST05PVVNfQVRUUklCVVRFKToKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQo
JyAgICB1c2luZyBEZWxheWVkUmVwbHkgPSAlc0RlbGF5ZWRSZXBseTtcbicgJSBtZXNzYWdlLm5h
bWUpCkBAIC0yNzcsOCArMjc2LDkgQEAgZGVmIGZvcndhcmRfZGVjbGFyYXRpb25zX2FuZF9oZWFk
ZXJzKHJlYwogCiAgICAgaGVhZGVycyA9IHNldChbCiAgICAgICAgICciQXJndW1lbnRDb2RlcnMu
aCInLAotICAgICAgICAnPHd0Zi9Gb3J3YXJkLmg+JywKICAgICAgICAgJyJDb25uZWN0aW9uLmgi
JywKKyAgICAgICAgJyJNZXNzYWdlTmFtZXMuaCInLAorICAgICAgICAnPHd0Zi9Gb3J3YXJkLmg+
JywKICAgICAgICAgJzx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4nLAogICAgICAgICAnIiVz
TWVzc2FnZXNSZXBsaWVzLmgiJyAlIHJlY2VpdmVyLm5hbWUsCiAgICAgXSkKQEAgLTMzNSw2ICsz
MzUsNyBAQCBkZWYgZm9yd2FyZF9kZWNsYXJhdGlvbnNfYW5kX2hlYWRlcnNfZm9yCiAKICAgICBo
ZWFkZXJzID0gc2V0KFsKICAgICAgICAgJzx3dGYvRm9yd2FyZC5oPicsCisgICAgICAgICciTWVz
c2FnZU5hbWVzLmgiJywKICAgICBdKQogCiAgICAgbm9uX3RlbXBsYXRlX3d0Zl90eXBlcyA9IGZy
b3plbnNldChbCkBAIC00NDAsMTIgKzQ0MSwxMiBAQCBkZWYgZ2VuZXJhdGVfbWVzc2FnZXNfaGVh
ZGVyKHJlY2VpdmVyKToKIAogICAgIHJlc3VsdC5hcHBlbmQoJ25hbWVzcGFjZSBNZXNzYWdlcyB7
XG5uYW1lc3BhY2UgJXMge1xuJyAlIHJlY2VpdmVyLm5hbWUpCiAgICAgcmVzdWx0LmFwcGVuZCgn
XG4nKQotICAgIHJlc3VsdC5hcHBlbmQoJ3N0YXRpYyBpbmxpbmUgSVBDOjpTdHJpbmdSZWZlcmVu
Y2UgbWVzc2FnZVJlY2VpdmVyTmFtZSgpXG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJ3N0YXRpYyBp
bmxpbmUgSVBDOjpSZWNlaXZlck5hbWUgbWVzc2FnZVJlY2VpdmVyTmFtZSgpXG4nKQogICAgIHJl
c3VsdC5hcHBlbmQoJ3tcbicpCi0gICAgcmVzdWx0LmFwcGVuZCgnICAgIHJldHVybiBJUEM6OlN0
cmluZ1JlZmVyZW5jZSgiJXMiKTtcbicgJSByZWNlaXZlci5uYW1lKQorICAgIHJlc3VsdC5hcHBl
bmQoJyAgICByZXR1cm4gSVBDOjpSZWNlaXZlck5hbWU6OiVzO1xuJyAlIHJlY2VpdmVyLm5hbWUp
CiAgICAgcmVzdWx0LmFwcGVuZCgnfVxuJykKICAgICByZXN1bHQuYXBwZW5kKCdcbicpCi0gICAg
cmVzdWx0LmFwcGVuZCgnXG4nLmpvaW4oW21lc3NhZ2VfdG9fc3RydWN0X2RlY2xhcmF0aW9uKHgp
IGZvciB4IGluIHJlY2VpdmVyLm1lc3NhZ2VzXSkpCisgICAgcmVzdWx0LmFwcGVuZCgnXG4nLmpv
aW4oW21lc3NhZ2VfdG9fc3RydWN0X2RlY2xhcmF0aW9uKHJlY2VpdmVyLCB4KSBmb3IgeCBpbiBy
ZWNlaXZlci5tZXNzYWdlc10pKQogICAgIHJlc3VsdC5hcHBlbmQoJ1xuJykKICAgICByZXN1bHQu
YXBwZW5kKCd9IC8vIG5hbWVzcGFjZSAlc1xufSAvLyBuYW1lc3BhY2UgTWVzc2FnZXNcbicgJSBy
ZWNlaXZlci5uYW1lKQogCkBAIC04NDcsMyArODQ4LDE1OCBAQCBkZWYgZ2VuZXJhdGVfbWVzc2Fn
ZV9oYW5kbGVyKHJlY2VpdmVyKToKICAgICAgICAgcmVzdWx0LmFwcGVuZCgnXG4jZW5kaWYgLy8g
JXNcbicgJSByZWNlaXZlci5jb25kaXRpb24pCiAKICAgICByZXR1cm4gJycuam9pbihyZXN1bHQp
CisKKworZGVmIGdlbmVyYXRlX21lc3NhZ2VfbmFtZXNfaGVhZGVyKHJlY2VpdmVycyk6CisgICAg
cmVzdWx0ID0gW10KKyAgICByZXN1bHQuYXBwZW5kKF9saWNlbnNlX2hlYWRlcikKKyAgICByZXN1
bHQuYXBwZW5kKCcjcHJhZ21hIG9uY2VcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnXG4nKQorICAg
IHJlc3VsdC5hcHBlbmQoJyNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPlxuJykKKyAgICByZXN1
bHQuYXBwZW5kKCdcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnbmFtZXNwYWNlIElQQyB7XG4nKQor
ICAgIHJlc3VsdC5hcHBlbmQoJ1xuJykKKyAgICByZXN1bHQuYXBwZW5kKCdlbnVtIGNsYXNzIFJl
Y2VpdmVyTmFtZSA6IHVpbnQ4X3QgeycpCisKKyAgICBlbnVtX3ZhbHVlID0gMQorICAgIGZpcnN0
X3JlY2VpdmVyID0gVHJ1ZQorICAgIGZvciByZWNlaXZlciBpbiByZWNlaXZlcnM6CisgICAgICAg
IHJlc3VsdC5hcHBlbmQoJ1xuJykKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgICcpCisgICAg
ICAgIGlmIG5vdCBmaXJzdF9yZWNlaXZlcjoKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJywg
JykKKyAgICAgICAgZmlyc3RfcmVjZWl2ZXIgPSBGYWxzZQorICAgICAgICByZXN1bHQuYXBwZW5k
KCclcyA9ICVkJyAlIChyZWNlaXZlci5uYW1lLCBlbnVtX3ZhbHVlKSkKKyAgICAgICAgZW51bV92
YWx1ZSA9IGVudW1fdmFsdWUgKyAxCisgICAgcmVzdWx0LmFwcGVuZCgnXG4gICAgLCBJUEMgPSAl
ZCcgJSBlbnVtX3ZhbHVlKQorICAgIGVudW1fdmFsdWUgPSBlbnVtX3ZhbHVlICsgMQorICAgIHJl
c3VsdC5hcHBlbmQoJ1xuICAgICwgQXN5bmNSZXBseSA9ICVkJyAlIGVudW1fdmFsdWUpCisgICAg
ZW51bV92YWx1ZSA9IGVudW1fdmFsdWUgKyAxCisgICAgcmVzdWx0LmFwcGVuZCgnXG4gICAgLCBJ
bnZhbGlkID0gJWQnICUgZW51bV92YWx1ZSkKKyAgICByZXN1bHQuYXBwZW5kKCdcbn07XG4nKQor
ICAgIHJlc3VsdC5hcHBlbmQoJ1xuJykKKyAgICByZXN1bHQuYXBwZW5kKCdlbnVtIGNsYXNzIE1l
c3NhZ2VOYW1lIDogdWludDE2X3QgeycpCisKKyAgICBlbnVtX3ZhbHVlID0gMQorICAgIGZpcnN0
X21lc3NhZ2UgPSBUcnVlCisgICAgZm9yIHJlY2VpdmVyIGluIHJlY2VpdmVyczoKKyAgICAgICAg
Zm9yIG1lc3NhZ2UgaW4gcmVjZWl2ZXIubWVzc2FnZXM6CisgICAgICAgICAgICByZXN1bHQuYXBw
ZW5kKCdcbicpCisgICAgICAgICAgICBpZiBtZXNzYWdlLmNvbmRpdGlvbjoKKyAgICAgICAgICAg
ICAgICByZXN1bHQuYXBwZW5kKCcjaWYgJXNcbicgJSBtZXNzYWdlLmNvbmRpdGlvbikKKyAgICAg
ICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICAnKQorICAgICAgICAgICAgaWYgbm90IGZpcnN0X21l
c3NhZ2U6CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnLCAnKQorICAgICAgICAgICAg
Zmlyc3RfbWVzc2FnZSA9IEZhbHNlCisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCclc18lcyA9
ICVkJyAlIChyZWNlaXZlci5uYW1lLCBtZXNzYWdlLm5hbWUsIGVudW1fdmFsdWUpKQorICAgICAg
ICAgICAgZW51bV92YWx1ZSA9IGVudW1fdmFsdWUgKyAxCisgICAgICAgICAgICBpZiBtZXNzYWdl
Lmhhc19hdHRyaWJ1dGUoQVNZTkNfQVRUUklCVVRFKToKKyAgICAgICAgICAgICAgICByZXN1bHQu
YXBwZW5kKCdcbiAgICAsICVzXyVzUmVwbHkgPSAlZCcgJSAocmVjZWl2ZXIubmFtZSwgbWVzc2Fn
ZS5uYW1lLCBlbnVtX3ZhbHVlKSkKKyAgICAgICAgICAgICAgICBlbnVtX3ZhbHVlID0gZW51bV92
YWx1ZSArIDEKKyAgICAgICAgICAgIGlmIG1lc3NhZ2UuY29uZGl0aW9uOgorICAgICAgICAgICAg
ICAgIHJlc3VsdC5hcHBlbmQoJ1xuI2VuZGlmJykKKyAgICByZXN1bHQuYXBwZW5kKCdcbiAgICAs
IFdyYXBwZWRBc3luY01lc3NhZ2VGb3JUZXN0aW5nID0gJWQnICUgZW51bV92YWx1ZSkKKyAgICBl
bnVtX3ZhbHVlID0gZW51bV92YWx1ZSArIDEKKyAgICByZXN1bHQuYXBwZW5kKCdcbiAgICAsIFN5
bmNNZXNzYWdlUmVwbHkgPSAlZCcgJSBlbnVtX3ZhbHVlKQorICAgIGVudW1fdmFsdWUgPSBlbnVt
X3ZhbHVlICsgMQorICAgIHJlc3VsdC5hcHBlbmQoJ1xuICAgICwgSW5pdGlhbGl6ZUNvbm5lY3Rp
b24gPSAlZCcgJSBlbnVtX3ZhbHVlKQorICAgIHJlc3VsdC5hcHBlbmQoJ1xufTtcbicpCisgICAg
cmVzdWx0LmFwcGVuZCgnXG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJ2lubGluZSBSZWNlaXZlck5h
bWUgcmVjZWl2ZXJOYW1lKE1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lKVxuJykKKyAgICByZXN1bHQu
YXBwZW5kKCd7XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJyAgICBzd2l0Y2ggKG1lc3NhZ2VOYW1l
KSB7XG4nKQorICAgIGZvciByZWNlaXZlciBpbiByZWNlaXZlcnM6CisgICAgICAgIGZvciBtZXNz
YWdlIGluIHJlY2VpdmVyLm1lc3NhZ2VzOgorICAgICAgICAgICAgaWYgbWVzc2FnZS5jb25kaXRp
b246CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnI2lmICVzXG4nICUgbWVzc2FnZS5j
b25kaXRpb24pCisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgY2FzZSBNZXNzYWdlTmFt
ZTo6JXNfJXM6XG4nICUgKHJlY2VpdmVyLm5hbWUsIG1lc3NhZ2UubmFtZSkpCisgICAgICAgICAg
ICBpZiBtZXNzYWdlLmNvbmRpdGlvbjoKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcj
ZW5kaWZcbicpCisgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICAgICAgcmV0dXJuIFJlY2VpdmVy
TmFtZTo6JXM7XG4nICUgcmVjZWl2ZXIubmFtZSkKKyAgICBmb3IgcmVjZWl2ZXIgaW4gcmVjZWl2
ZXJzOgorICAgICAgICBmb3IgbWVzc2FnZSBpbiByZWNlaXZlci5tZXNzYWdlczoKKyAgICAgICAg
ICAgIGlmIG1lc3NhZ2UuaGFzX2F0dHJpYnV0ZShBU1lOQ19BVFRSSUJVVEUpOgorICAgICAgICAg
ICAgICAgIGlmIG1lc3NhZ2UuY29uZGl0aW9uOgorICAgICAgICAgICAgICAgICAgICByZXN1bHQu
YXBwZW5kKCcjaWYgJXNcbicgJSBtZXNzYWdlLmNvbmRpdGlvbikKKyAgICAgICAgICAgICAgICBy
ZXN1bHQuYXBwZW5kKCcgICAgY2FzZSBNZXNzYWdlTmFtZTo6JXNfJXNSZXBseTpcbicgJSAocmVj
ZWl2ZXIubmFtZSwgbWVzc2FnZS5uYW1lKSkKKyAgICAgICAgICAgICAgICBpZiBtZXNzYWdlLmNv
bmRpdGlvbjoKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnI2VuZGlmXG4nKQor
ICAgIHJlc3VsdC5hcHBlbmQoJyAgICAgICAgcmV0dXJuIFJlY2VpdmVyTmFtZTo6QXN5bmNSZXBs
eTtcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnICAgIGNhc2UgTWVzc2FnZU5hbWU6OldyYXBwZWRB
c3luY01lc3NhZ2VGb3JUZXN0aW5nOlxuJykKKyAgICByZXN1bHQuYXBwZW5kKCcgICAgY2FzZSBN
ZXNzYWdlTmFtZTo6U3luY01lc3NhZ2VSZXBseTpcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnICAg
IGNhc2UgTWVzc2FnZU5hbWU6OkluaXRpYWxpemVDb25uZWN0aW9uOlxuJykKKyAgICByZXN1bHQu
YXBwZW5kKCcgICAgICAgIHJldHVybiBSZWNlaXZlck5hbWU6OklQQztcbicpCisgICAgcmVzdWx0
LmFwcGVuZCgnICAgIH1cbicpCisgICAgcmVzdWx0LmFwcGVuZCgnICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpO1xuJykKKyAgICByZXN1bHQuYXBwZW5kKCcgICAgcmV0dXJuIFJlY2VpdmVyTmFtZTo6
SW52YWxpZDtcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnfVxuJykKKyAgICByZXN1bHQuYXBwZW5k
KCdcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnY29uc3QgY2hhciogZGVzY3JpcHRpb24oTWVzc2Fn
ZU5hbWUpO1xuJykKKyAgICByZXN1bHQuYXBwZW5kKCdcbicpCisgICAgcmVzdWx0LmFwcGVuZCgn
fSAvLyBuYW1lc3BhY2UgSVBDXG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJ1xuJykKKworICAgIHJl
c3VsdC5hcHBlbmQoJ25hbWVzcGFjZSBXVEYge1xuJykKKyAgICByZXN1bHQuYXBwZW5kKCdcbicp
CisgICAgcmVzdWx0LmFwcGVuZCgndGVtcGxhdGU8dHlwZW5hbWUgRSwgdHlwZW5hbWUgVCwgc3Rk
OjplbmFibGVfaWZfdDxzdGQ6OmlzX3NhbWU8RSwgSVBDOjpNZXNzYWdlTmFtZT46OnZhbHVlPiog
PSBudWxscHRyPlxuJykKKyAgICByZXN1bHQuYXBwZW5kKCdjb25zdGV4cHIgYm9vbCBpc1ZhbGlk
RW51bShUIG1lc3NhZ2VOYW1lKVxuJykKKyAgICByZXN1bHQuYXBwZW5kKCd7XG4nKQorICAgIGZv
ciByZWNlaXZlciBpbiByZWNlaXZlcnM6CisgICAgICAgIGZvciBtZXNzYWdlIGluIHJlY2VpdmVy
Lm1lc3NhZ2VzOgorICAgICAgICAgICAgaWYgbWVzc2FnZS5jb25kaXRpb246CisgICAgICAgICAg
ICAgICAgcmVzdWx0LmFwcGVuZCgnI2lmICVzXG4nICUgbWVzc2FnZS5jb25kaXRpb24pCisgICAg
ICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgaWYgKHN0YXRpY19jYXN0PElQQzo6TWVzc2FnZU5h
bWU+KG1lc3NhZ2VOYW1lKSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjolc18lcylcbicgJSAocmVjZWl2
ZXIubmFtZSwgbWVzc2FnZS5uYW1lKSkKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICAg
ICAgcmV0dXJuIHRydWU7XG4nKQorICAgICAgICAgICAgaWYgbWVzc2FnZS5oYXNfYXR0cmlidXRl
KEFTWU5DX0FUVFJJQlVURSk6CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIGlm
IChzdGF0aWNfY2FzdDxJUEM6Ok1lc3NhZ2VOYW1lPihtZXNzYWdlTmFtZSkgPT0gSVBDOjpNZXNz
YWdlTmFtZTo6JXNfJXNSZXBseSlcbicgJSAocmVjZWl2ZXIubmFtZSwgbWVzc2FnZS5uYW1lKSkK
KyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgICAgIHJldHVybiB0cnVlO1xuJykK
KyAgICAgICAgICAgIGlmIG1lc3NhZ2UuY29uZGl0aW9uOgorICAgICAgICAgICAgICAgIHJlc3Vs
dC5hcHBlbmQoJyNlbmRpZlxuJykKKyAgICByZXN1bHQuYXBwZW5kKCcgICAgaWYgKHN0YXRpY19j
YXN0PElQQzo6TWVzc2FnZU5hbWU+KG1lc3NhZ2VOYW1lKSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpX
cmFwcGVkQXN5bmNNZXNzYWdlRm9yVGVzdGluZylcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnICAg
ICAgICByZXR1cm4gdHJ1ZTtcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnICAgIGlmIChzdGF0aWNf
Y2FzdDxJUEM6Ok1lc3NhZ2VOYW1lPihtZXNzYWdlTmFtZSkgPT0gSVBDOjpNZXNzYWdlTmFtZTo6
U3luY01lc3NhZ2VSZXBseSlcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnICAgICAgICByZXR1cm4g
dHJ1ZTtcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnICAgIGlmIChzdGF0aWNfY2FzdDxJUEM6Ok1l
c3NhZ2VOYW1lPihtZXNzYWdlTmFtZSkgPT0gSVBDOjpNZXNzYWdlTmFtZTo6SW5pdGlhbGl6ZUNv
bm5lY3Rpb24pXG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJyAgICAgICAgcmV0dXJuIHRydWU7XG4n
KQorICAgIHJlc3VsdC5hcHBlbmQoJyAgICByZXR1cm4gZmFsc2U7XG4nKQorICAgIHJlc3VsdC5h
cHBlbmQoJ307XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJ1xuJykKKyAgICByZXN1bHQuYXBwZW5k
KCd9IC8vIG5hbWVzcGFjZSBXVEZcbicpCisgICAgcmV0dXJuICcnLmpvaW4ocmVzdWx0KQorCisK
K2RlZiBnZW5lcmF0ZV9tZXNzYWdlX25hbWVzX2ltcGxlbWVudGF0aW9uKHJlY2VpdmVycyk6Cisg
ICAgcmVzdWx0ID0gW10KKyAgICByZXN1bHQuYXBwZW5kKF9saWNlbnNlX2hlYWRlcikKKyAgICBy
ZXN1bHQuYXBwZW5kKCcjaW5jbHVkZSAiY29uZmlnLmgiXG4nKQorICAgIHJlc3VsdC5hcHBlbmQo
JyNpbmNsdWRlICJNZXNzYWdlTmFtZXMuaCJcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnXG4nKQor
ICAgIHJlc3VsdC5hcHBlbmQoJ25hbWVzcGFjZSBJUEMge1xuJykKKyAgICByZXN1bHQuYXBwZW5k
KCdcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnY29uc3QgY2hhciogZGVzY3JpcHRpb24oTWVzc2Fn
ZU5hbWUgbmFtZSlcbicpCisgICAgcmVzdWx0LmFwcGVuZCgne1xuJykKKyAgICByZXN1bHQuYXBw
ZW5kKCcgICAgc3dpdGNoIChuYW1lKSB7XG4nKQorICAgIGZvciByZWNlaXZlciBpbiByZWNlaXZl
cnM6CisgICAgICAgIGZvciBtZXNzYWdlIGluIHJlY2VpdmVyLm1lc3NhZ2VzOgorICAgICAgICAg
ICAgaWYgbWVzc2FnZS5jb25kaXRpb246CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgn
I2lmICVzXG4nICUgbWVzc2FnZS5jb25kaXRpb24pCisgICAgICAgICAgICByZXN1bHQuYXBwZW5k
KCcgICAgY2FzZSBNZXNzYWdlTmFtZTo6JXNfJXM6XG4nICUgKHJlY2VpdmVyLm5hbWUsIG1lc3Nh
Z2UubmFtZSkpCisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgICAgIHJldHVybiAiJXM6
OiVzIjtcbicgJSAocmVjZWl2ZXIubmFtZSwgbWVzc2FnZS5uYW1lKSkKKyAgICAgICAgICAgIGlm
IG1lc3NhZ2UuaGFzX2F0dHJpYnV0ZShBU1lOQ19BVFRSSUJVVEUpOgorICAgICAgICAgICAgICAg
IHJlc3VsdC5hcHBlbmQoJyAgICBjYXNlIE1lc3NhZ2VOYW1lOjolc18lc1JlcGx5OlxuJyAlIChy
ZWNlaXZlci5uYW1lLCBtZXNzYWdlLm5hbWUpKQorICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBl
bmQoJyAgICAgICAgcmV0dXJuICIlczo6JXNSZXBseSI7XG4nICUgKHJlY2VpdmVyLm5hbWUsIG1l
c3NhZ2UubmFtZSkpCisgICAgICAgICAgICBpZiBtZXNzYWdlLmNvbmRpdGlvbjoKKyAgICAgICAg
ICAgICAgICByZXN1bHQuYXBwZW5kKCcjZW5kaWZcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnICAg
IGNhc2UgTWVzc2FnZU5hbWU6OldyYXBwZWRBc3luY01lc3NhZ2VGb3JUZXN0aW5nOlxuJykKKyAg
ICByZXN1bHQuYXBwZW5kKCcgICAgICAgIHJldHVybiAiSVBDOjpXcmFwcGVkQXN5bmNNZXNzYWdl
Rm9yVGVzdGluZyI7XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJyAgICBjYXNlIE1lc3NhZ2VOYW1l
OjpTeW5jTWVzc2FnZVJlcGx5OlxuJykKKyAgICByZXN1bHQuYXBwZW5kKCcgICAgICAgIHJldHVy
biAiSVBDOjpTeW5jTWVzc2FnZVJlcGx5IjtcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnICAgIGNh
c2UgTWVzc2FnZU5hbWU6OkluaXRpYWxpemVDb25uZWN0aW9uOlxuJykKKyAgICByZXN1bHQuYXBw
ZW5kKCcgICAgICAgIHJldHVybiAiSVBDOjpJbml0aWFsaXplQ29ubmVjdGlvbiI7XG4nKQorICAg
IHJlc3VsdC5hcHBlbmQoJyAgICB9XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJyAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTtcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnICAgIHJldHVybiAiPGludmFs
aWQgbWVzc2FnZSBuYW1lPiI7XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJ31cbicpCisgICAgcmVz
dWx0LmFwcGVuZCgnXG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJ30gLy8gbmFtZXNwYWNlIElQQ1xu
JykKKyAgICByZXR1cm4gJycuam9pbihyZXN1bHQpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1Njcmlw
dHMvd2Via2l0L3Rlc3QtbGVnYWN5LW1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdC1sZWdhY3ktbWVzc2FnZXMuaW4JKHJldmlzaW9uIDI2
MDc2NCkKKysrIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdC1sZWdhY3ktbWVzc2Fn
ZXMuaW4JKG5vbmV4aXN0ZW50KQpAQCAtMSw3NyArMCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAx
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JyBBTkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotIyBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUgotIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0jIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSCi0jIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0jIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0KLSNpZiBFTkFCTEUoV0VCS0lUMikKLSNpZiBORVNURURfTUFT
VEVSX0NPTkRJVElPTiB8fCBNQVNURVJfT1IgJiYgTUFTVEVSX0FORAotCi1tZXNzYWdlcyAtPiBX
ZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsKLSAgICBMb2FkVVJMKFN0cmluZyB1cmwpCi0jaWYgRU5B
QkxFKFRPVUNIX0VWRU5UUykKLSAgICBMb2FkU29tZXRoaW5nKFN0cmluZyB1cmwpCi0jaWYgTkVT
VEVEX01FU1NBR0VfQ09ORElUSU9OIHx8IFNPTUVfT1RIRVJfTUVTU0FHRV9DT05ESVRJT04KLSAg
ICBUb3VjaEV2ZW50KFdlYktpdDo6V2ViVG91Y2hFdmVudCBldmVudCkKLSNlbmRpZgotI2lmIE5F
U1RFRF9NRVNTQUdFX0NPTkRJVElPTiAmJiBTT01FX09USEVSX01FU1NBR0VfQ09ORElUSU9OCi0g
ICAgQWRkRXZlbnQoV2ViS2l0OjpXZWJUb3VjaEV2ZW50IGV2ZW50KQotI2VuZGlmCi0gICAgTG9h
ZFNvbWV0aGluZ0Vsc2UoU3RyaW5nIHVybCkKLSNlbmRpZgotICAgIERpZFJlY2VpdmVQb2xpY3lE
ZWNpc2lvbih1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBsaXN0ZW5lcklELCB1aW50MzJfdCBw
b2xpY3lBY3Rpb24pCi0gICAgQ2xvc2UoKQotCi0gICAgUHJlZmVyZW5jZXNEaWRDaGFuZ2UoV2Vi
S2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlIHN0b3JlKQotICAgIFNlbmREb3VibGVBbmRGbG9hdChk
b3VibGUgZCwgZmxvYXQgZikKLSAgICBTZW5kSW50cyhWZWN0b3I8dWludDY0X3Q+IGludHMsIFZl
Y3RvcjxWZWN0b3I8dWludDY0X3Q+PiBpbnRWZWN0b3JzKQotCi0gICAgQ3JlYXRlUGx1Z2luKHVp
bnQ2NF90IHBsdWdpbkluc3RhbmNlSUQsIFdlYktpdDo6UGx1Z2luOjpQYXJhbWV0ZXJzIHBhcmFt
ZXRlcnMpIC0+IChib29sIHJlc3VsdCkKLSAgICBSdW5KYXZhU2NyaXB0QWxlcnQodWludDY0X3Qg
ZnJhbWVJRCwgU3RyaW5nIG1lc3NhZ2UpIC0+ICgpCi0gICAgR2V0UGx1Z2lucyhib29sIHJlZnJl
c2gpIC0+IChWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4gcGx1Z2lucykKLSAgICBHZXRQbHVn
aW5Qcm9jZXNzQ29ubmVjdGlvbihTdHJpbmcgcGx1Z2luUGF0aCkgLT4gKElQQzo6Q29ubmVjdGlv
bjo6SGFuZGxlIGNvbm5lY3Rpb25IYW5kbGUpIFN5bmNocm9ub3VzCi0KLSAgICBUZXN0TXVsdGlw
bGVBdHRyaWJ1dGVzKCkgLT4gKCkgV2FudHNDb25uZWN0aW9uIFN5bmNocm9ub3VzCi0KLSAgICBU
ZXN0UGFyYW1ldGVyQXR0cmlidXRlcyhbQXR0cmlidXRlT25lIEF0dHJpYnV0ZVR3b10gdWludDY0
X3QgZm9vLCBkb3VibGUgYmFyLCBbQXR0cmlidXRlVGhyZWVdIGRvdWJsZSBiYXopCi0KLSAgICBU
ZW1wbGF0ZVRlc3QoSGFzaE1hcDxTdHJpbmcsIHN0ZDo6cGFpcjxTdHJpbmcsIHVpbnQ2NF90Pj4g
YSkKLQotICAgIFNldFZpZGVvTGF5ZXJJRChXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpQbGF0Zm9y
bUxheWVySUQgdmlkZW9MYXllcklEKQotCi0jaWYgUExBVEZPUk0oTUFDKQotICAgIERpZENyZWF0
ZVdlYlByb2Nlc3NDb25uZWN0aW9uKElQQzo6TWFjaFBvcnQgY29ubmVjdGlvbklkZW50aWZpZXIp
Ci0jZW5kaWYKLQotI2lmIFBMQVRGT1JNKE1BQykKLSAgICAjIEtleWJvYXJkIHN1cHBvcnQKLSAg
ICBJbnRlcnByZXRLZXlFdmVudCh1aW50MzJfdCB0eXBlKSAtPiAoVmVjdG9yPFdlYkNvcmU6Oktl
eXByZXNzQ29tbWFuZD4gY29tbWFuZE5hbWUpCi0jZW5kaWYKLQotI2lmIEVOQUJMRShERVBSRUNB
VEVEX0ZFQVRVUkUpCi0gICAgRGVwcmVjYXRlZE9wZXJhdGlvbihJUEM6OkR1bW15VHlwZSBkdW1t
eSkKLSNlbmRpZgotCi0jaWYgRU5BQkxFKEVYUEVSSU1FTlRBTF9GRUFUVVJFKQotICAgIEV4cGVy
aW1lbnRhbE9wZXJhdGlvbihJUEM6OkR1bW15VHlwZSBkdW1teSkKLSNlbmRpZgotfQotCi0jZW5k
aWYKLSNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0LWxlZ2Fj
eS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0
L3Rlc3QtbGVnYWN5Lm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyNjA3NjQpCShmcm9tIFNvdXJjZS9X
ZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdC1sZWdhY3ktbWVzc2FnZXMuaW46MjYwNzY0KQorKysg
U291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0LWxlZ2FjeS5tZXNzYWdlcy5pbgkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDc3IEBACisjIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMg
YXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyMg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisKKyNpZiBFTkFCTEUoV0VCS0lUMikKKyNpZiBORVNURURfTUFTVEVSX0NPTkRJ
VElPTiB8fCBNQVNURVJfT1IgJiYgTUFTVEVSX0FORAorCittZXNzYWdlcyAtPiBXZWJQYWdlIExl
Z2FjeVJlY2VpdmVyIHsKKyAgICBMb2FkVVJMKFN0cmluZyB1cmwpCisjaWYgRU5BQkxFKFRPVUNI
X0VWRU5UUykKKyAgICBMb2FkU29tZXRoaW5nKFN0cmluZyB1cmwpCisjaWYgTkVTVEVEX01FU1NB
R0VfQ09ORElUSU9OIHx8IFNPTUVfT1RIRVJfTUVTU0FHRV9DT05ESVRJT04KKyAgICBUb3VjaEV2
ZW50KFdlYktpdDo6V2ViVG91Y2hFdmVudCBldmVudCkKKyNlbmRpZgorI2lmIE5FU1RFRF9NRVNT
QUdFX0NPTkRJVElPTiAmJiBTT01FX09USEVSX01FU1NBR0VfQ09ORElUSU9OCisgICAgQWRkRXZl
bnQoV2ViS2l0OjpXZWJUb3VjaEV2ZW50IGV2ZW50KQorI2VuZGlmCisgICAgTG9hZFNvbWV0aGlu
Z0Vsc2UoU3RyaW5nIHVybCkKKyNlbmRpZgorICAgIERpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbih1
aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBsaXN0ZW5lcklELCB1aW50MzJfdCBwb2xpY3lBY3Rp
b24pCisgICAgQ2xvc2UoKQorCisgICAgUHJlZmVyZW5jZXNEaWRDaGFuZ2UoV2ViS2l0OjpXZWJQ
cmVmZXJlbmNlc1N0b3JlIHN0b3JlKQorICAgIFNlbmREb3VibGVBbmRGbG9hdChkb3VibGUgZCwg
ZmxvYXQgZikKKyAgICBTZW5kSW50cyhWZWN0b3I8dWludDY0X3Q+IGludHMsIFZlY3RvcjxWZWN0
b3I8dWludDY0X3Q+PiBpbnRWZWN0b3JzKQorCisgICAgQ3JlYXRlUGx1Z2luKHVpbnQ2NF90IHBs
dWdpbkluc3RhbmNlSUQsIFdlYktpdDo6UGx1Z2luOjpQYXJhbWV0ZXJzIHBhcmFtZXRlcnMpIC0+
IChib29sIHJlc3VsdCkKKyAgICBSdW5KYXZhU2NyaXB0QWxlcnQodWludDY0X3QgZnJhbWVJRCwg
U3RyaW5nIG1lc3NhZ2UpIC0+ICgpCisgICAgR2V0UGx1Z2lucyhib29sIHJlZnJlc2gpIC0+IChW
ZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4gcGx1Z2lucykKKyAgICBHZXRQbHVnaW5Qcm9jZXNz
Q29ubmVjdGlvbihTdHJpbmcgcGx1Z2luUGF0aCkgLT4gKElQQzo6Q29ubmVjdGlvbjo6SGFuZGxl
IGNvbm5lY3Rpb25IYW5kbGUpIFN5bmNocm9ub3VzCisKKyAgICBUZXN0TXVsdGlwbGVBdHRyaWJ1
dGVzKCkgLT4gKCkgV2FudHNDb25uZWN0aW9uIFN5bmNocm9ub3VzCisKKyAgICBUZXN0UGFyYW1l
dGVyQXR0cmlidXRlcyhbQXR0cmlidXRlT25lIEF0dHJpYnV0ZVR3b10gdWludDY0X3QgZm9vLCBk
b3VibGUgYmFyLCBbQXR0cmlidXRlVGhyZWVdIGRvdWJsZSBiYXopCisKKyAgICBUZW1wbGF0ZVRl
c3QoSGFzaE1hcDxTdHJpbmcsIHN0ZDo6cGFpcjxTdHJpbmcsIHVpbnQ2NF90Pj4gYSkKKworICAg
IFNldFZpZGVvTGF5ZXJJRChXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQg
dmlkZW9MYXllcklEKQorCisjaWYgUExBVEZPUk0oTUFDKQorICAgIERpZENyZWF0ZVdlYlByb2Nl
c3NDb25uZWN0aW9uKElQQzo6TWFjaFBvcnQgY29ubmVjdGlvbklkZW50aWZpZXIpCisjZW5kaWYK
KworI2lmIFBMQVRGT1JNKE1BQykKKyAgICAjIEtleWJvYXJkIHN1cHBvcnQKKyAgICBJbnRlcnBy
ZXRLZXlFdmVudCh1aW50MzJfdCB0eXBlKSAtPiAoVmVjdG9yPFdlYkNvcmU6OktleXByZXNzQ29t
bWFuZD4gY29tbWFuZE5hbWUpCisjZW5kaWYKKworI2lmIEVOQUJMRShERVBSRUNBVEVEX0ZFQVRV
UkUpCisgICAgRGVwcmVjYXRlZE9wZXJhdGlvbihJUEM6OkR1bW15VHlwZSBkdW1teSkKKyNlbmRp
ZgorCisjaWYgRU5BQkxFKEVYUEVSSU1FTlRBTF9GRUFUVVJFKQorICAgIEV4cGVyaW1lbnRhbE9w
ZXJhdGlvbihJUEM6OkR1bW15VHlwZSBkdW1teSkKKyNlbmRpZgorfQorCisjZW5kaWYKKyNlbmRp
ZgpJbmRleDogU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0LWxlZ2FjeU1lc3NhZ2VS
ZWNlaXZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90
ZXN0LWxlZ2FjeU1lc3NhZ2VSZWNlaXZlci5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dl
YktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0LWxlZ2FjeU1lc3NhZ2VSZWNlaXZlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwyMDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisg
KiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisKKyNpZiAoRU5BQkxFKFdFQktJVDIpICYmIChORVNURURfTUFTVEVSX0NPTkRJ
VElPTiB8fCBNQVNURVJfT1IgJiYgTUFTVEVSX0FORCkpCisKKyNpbmNsdWRlICJXZWJQYWdlLmgi
CisKKyNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIK
KyNpbmNsdWRlICJEZWNvZGVyLmgiCisjaWYgRU5BQkxFKERFUFJFQ0FURURfRkVBVFVSRSkgfHwg
RU5BQkxFKEVYUEVSSU1FTlRBTF9GRUFUVVJFKQorI2luY2x1ZGUgIkR1bW15VHlwZS5oIgorI2Vu
ZGlmCisjaW5jbHVkZSAiSGFuZGxlTWVzc2FnZS5oIgorI2lmIFBMQVRGT1JNKE1BQykKKyNpbmNs
dWRlICJNYWNoUG9ydC5oIgorI2VuZGlmCisjaW5jbHVkZSAiUGx1Z2luLmgiCisjaW5jbHVkZSAi
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaWYgKEVOQUJMRShUT1VDSF9FVkVOVFMpICYmIChO
RVNURURfTUVTU0FHRV9DT05ESVRJT04gJiYgU09NRV9PVEhFUl9NRVNTQUdFX0NPTkRJVElPTikp
IHx8IChFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiAoTkVTVEVEX01FU1NBR0VfQ09ORElUSU9OIHx8
IFNPTUVfT1RIRVJfTUVTU0FHRV9DT05ESVRJT04pKQorI2luY2x1ZGUgIldlYkV2ZW50LmgiCisj
ZW5kaWYKKyNpbmNsdWRlICJXZWJQYWdlTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJQcmVmZXJl
bmNlc1N0b3JlLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0xheWVyLmg+CisjaWYgUExB
VEZPUk0oTUFDKQorI2luY2x1ZGUgPFdlYkNvcmUvS2V5Ym9hcmRFdmVudC5oPgorI2VuZGlmCisj
aW5jbHVkZSA8V2ViQ29yZS9QbHVnaW5EYXRhLmg+CisjaW5jbHVkZSA8dXRpbGl0eT4KKyNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIE1lc3NhZ2VzIHsKKworbmFtZXNwYWNl
IFdlYlBhZ2UgeworCit2b2lkIEdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpzZW5kKHN0ZDo6
dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiYgZW5jb2RlciwgSVBDOjpDb25uZWN0aW9uJiBjb25u
ZWN0aW9uLCBjb25zdCBJUEM6OkNvbm5lY3Rpb246OkhhbmRsZSYgY29ubmVjdGlvbkhhbmRsZSkK
K3sKKyAgICAqZW5jb2RlciA8PCBjb25uZWN0aW9uSGFuZGxlOworICAgIGNvbm5lY3Rpb24uc2Vu
ZFN5bmNSZXBseShXVEZNb3ZlKGVuY29kZXIpKTsKK30KKwordm9pZCBUZXN0TXVsdGlwbGVBdHRy
aWJ1dGVzOjpzZW5kKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiYgZW5jb2RlciwgSVBD
OjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQoreworICAgIGNvbm5lY3Rpb24uc2VuZFN5bmNSZXBs
eShXVEZNb3ZlKGVuY29kZXIpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViUGFnZQorCit9IC8v
IG5hbWVzcGFjZSBNZXNzYWdlcworCituYW1lc3BhY2UgV2ViS2l0IHsKKwordm9pZCBXZWJQYWdl
OjpkaWRSZWNlaXZlV2ViUGFnZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJ
UEM6OkRlY29kZXImIGRlY29kZXIpCit7CisgICAgYXV0byBwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyk7CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2Vi
UGFnZTo6TG9hZFVSTDo6bmFtZSgpKSB7CisgICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNz
YWdlczo6V2ViUGFnZTo6TG9hZFVSTD4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OmxvYWRVUkwp
OworICAgICAgICByZXR1cm47CisgICAgfQorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAg
aWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFNvbWV0
aGluZzo6bmFtZSgpKSB7CisgICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2Vi
UGFnZTo6TG9hZFNvbWV0aGluZz4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OmxvYWRTb21ldGhp
bmcpOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisjaWYgKEVOQUJMRShUT1VDSF9F
VkVOVFMpICYmIChORVNURURfTUVTU0FHRV9DT05ESVRJT04gfHwgU09NRV9PVEhFUl9NRVNTQUdF
X0NPTkRJVElPTikpCisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6
V2ViUGFnZTo6VG91Y2hFdmVudDo6bmFtZSgpKSB7CisgICAgICAgIElQQzo6aGFuZGxlTWVzc2Fn
ZTxNZXNzYWdlczo6V2ViUGFnZTo6VG91Y2hFdmVudD4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6
OnRvdWNoRXZlbnQpOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisjaWYgKEVOQUJM
RShUT1VDSF9FVkVOVFMpICYmIChORVNURURfTUVTU0FHRV9DT05ESVRJT04gJiYgU09NRV9PVEhF
Ul9NRVNTQUdFX0NPTkRJVElPTikpCisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBN
ZXNzYWdlczo6V2ViUGFnZTo6QWRkRXZlbnQ6Om5hbWUoKSkgeworICAgICAgICBJUEM6OmhhbmRs
ZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OkFkZEV2ZW50PihkZWNvZGVyLCB0aGlzLCAmV2Vi
UGFnZTo6YWRkRXZlbnQpOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisjaWYgRU5B
QkxFKFRPVUNIX0VWRU5UUykKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3Nh
Z2VzOjpXZWJQYWdlOjpMb2FkU29tZXRoaW5nRWxzZTo6bmFtZSgpKSB7CisgICAgICAgIElQQzo6
aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFNvbWV0aGluZ0Vsc2U+KGRlY29k
ZXIsIHRoaXMsICZXZWJQYWdlOjpsb2FkU29tZXRoaW5nRWxzZSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisjZW5kaWYKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2Vz
OjpXZWJQYWdlOjpEaWRSZWNlaXZlUG9saWN5RGVjaXNpb246Om5hbWUoKSkgeworICAgICAgICBJ
UEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJlY2VpdmVQb2xpY3lEZWNp
c2lvbj4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbik7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9
PSBNZXNzYWdlczo6V2ViUGFnZTo6Q2xvc2U6Om5hbWUoKSkgeworICAgICAgICBJUEM6OmhhbmRs
ZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OkNsb3NlPihkZWNvZGVyLCB0aGlzLCAmV2ViUGFn
ZTo6Y2xvc2UpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChkZWNvZGVyLm1lc3Nh
Z2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OlByZWZlcmVuY2VzRGlkQ2hhbmdlOjpuYW1l
KCkpIHsKKyAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpQcmVm
ZXJlbmNlc0RpZENoYW5nZT4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OnByZWZlcmVuY2VzRGlk
Q2hhbmdlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdl
TmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpTZW5kRG91YmxlQW5kRmxvYXQ6Om5hbWUoKSkg
eworICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OlNlbmREb3Vi
bGVBbmRGbG9hdD4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OnNlbmREb3VibGVBbmRGbG9hdCk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9
PSBNZXNzYWdlczo6V2ViUGFnZTo6U2VuZEludHM6Om5hbWUoKSkgeworICAgICAgICBJUEM6Omhh
bmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OlNlbmRJbnRzPihkZWNvZGVyLCB0aGlzLCAm
V2ViUGFnZTo6c2VuZEludHMpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChkZWNv
ZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RQYXJhbWV0ZXJBdHRy
aWJ1dGVzOjpuYW1lKCkpIHsKKyAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpX
ZWJQYWdlOjpUZXN0UGFyYW1ldGVyQXR0cmlidXRlcz4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6
OnRlc3RQYXJhbWV0ZXJBdHRyaWJ1dGVzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBp
ZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpUZW1wbGF0ZVRl
c3Q6Om5hbWUoKSkgeworICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBh
Z2U6OlRlbXBsYXRlVGVzdD4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OnRlbXBsYXRlVGVzdCk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9
PSBNZXNzYWdlczo6V2ViUGFnZTo6U2V0VmlkZW9MYXllcklEOjpuYW1lKCkpIHsKKyAgICAgICAg
SVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRWaWRlb0xheWVySUQ+KGRl
Y29kZXIsIHRoaXMsICZXZWJQYWdlOjpzZXRWaWRlb0xheWVySUQpOworICAgICAgICByZXR1cm47
CisgICAgfQorI2lmIFBMQVRGT1JNKE1BQykKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgp
ID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbjo6bmFt
ZSgpKSB7CisgICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6RGlk
Q3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24+KGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjpkaWRD
cmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5k
aWYKKyNpZiBFTkFCTEUoREVQUkVDQVRFRF9GRUFUVVJFKQorICAgIGlmIChkZWNvZGVyLm1lc3Nh
Z2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OkRlcHJlY2F0ZWRPcGVyYXRpb246Om5hbWUo
KSkgeworICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OkRlcHJl
Y2F0ZWRPcGVyYXRpb24+KGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjpkZXByZWNhdGVkT3BlcmF0
aW9uKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorI2lmIEVOQUJMRShFWFBFUklN
RU5UQUxfRkVBVFVSRSkKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2Vz
OjpXZWJQYWdlOjpFeHBlcmltZW50YWxPcGVyYXRpb246Om5hbWUoKSkgeworICAgICAgICBJUEM6
OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OkV4cGVyaW1lbnRhbE9wZXJhdGlvbj4o
ZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OmV4cGVyaW1lbnRhbE9wZXJhdGlvbik7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisjZW5kaWYKKyAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7Cisg
ICAgVU5VU0VEX1BBUkFNKGRlY29kZXIpOworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQor
Cit2b2lkIFdlYlBhZ2U6OmRpZFJlY2VpdmVTeW5jV2ViUGFnZU1lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0cjxJ
UEM6OkVuY29kZXI+JiByZXBseUVuY29kZXIpCit7CisgICAgYXV0byBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyk7CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdl
czo6V2ViUGFnZTo6Q3JlYXRlUGx1Z2luOjpuYW1lKCkpIHsKKyAgICAgICAgSVBDOjpoYW5kbGVN
ZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpDcmVhdGVQbHVnaW4+KGRlY29kZXIsICpyZXBseUVu
Y29kZXIsIHRoaXMsICZXZWJQYWdlOjpjcmVhdGVQbHVnaW4pOworICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6
OlJ1bkphdmFTY3JpcHRBbGVydDo6bmFtZSgpKSB7CisgICAgICAgIElQQzo6aGFuZGxlTWVzc2Fn
ZTxNZXNzYWdlczo6V2ViUGFnZTo6UnVuSmF2YVNjcmlwdEFsZXJ0PihkZWNvZGVyLCAqcmVwbHlF
bmNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6cnVuSmF2YVNjcmlwdEFsZXJ0KTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpX
ZWJQYWdlOjpHZXRQbHVnaW5zOjpuYW1lKCkpIHsKKyAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdl
PE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRQbHVnaW5zPihkZWNvZGVyLCAqcmVwbHlFbmNvZGVyLCB0
aGlzLCAmV2ViUGFnZTo6Z2V0UGx1Z2lucyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAg
aWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6R2V0UGx1Z2lu
UHJvY2Vzc0Nvbm5lY3Rpb246Om5hbWUoKSkgeworICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2VT
eW5jaHJvbm91czxNZXNzYWdlczo6V2ViUGFnZTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24+
KGNvbm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5RW5jb2RlciwgdGhpcywgJldlYlBhZ2U6OmdldFBs
dWdpblByb2Nlc3NDb25uZWN0aW9uKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAo
ZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0TXVsdGlwbGVB
dHRyaWJ1dGVzOjpuYW1lKCkpIHsKKyAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlU3luY2hyb25v
dXNXYW50c0Nvbm5lY3Rpb248TWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RNdWx0aXBsZUF0dHJpYnV0
ZXM+KGNvbm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5RW5jb2RlciwgdGhpcywgJldlYlBhZ2U6OnRl
c3RNdWx0aXBsZUF0dHJpYnV0ZXMpOworICAgICAgICByZXR1cm47CisgICAgfQorI2lmIFBMQVRG
T1JNKE1BQykKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQ
YWdlOjpJbnRlcnByZXRLZXlFdmVudDo6bmFtZSgpKSB7CisgICAgICAgIElQQzo6aGFuZGxlTWVz
c2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6SW50ZXJwcmV0S2V5RXZlbnQ+KGRlY29kZXIsICpyZXBs
eUVuY29kZXIsIHRoaXMsICZXZWJQYWdlOjppbnRlcnByZXRLZXlFdmVudCk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisjZW5kaWYKKyAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7CisgICAg
VU5VU0VEX1BBUkFNKGRlY29kZXIpOworICAgIFVOVVNFRF9QQVJBTShyZXBseUVuY29kZXIpOwor
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKwor
CisjZW5kaWYgLy8gKEVOQUJMRShXRUJLSVQyKSAmJiAoTkVTVEVEX01BU1RFUl9DT05ESVRJT04g
fHwgTUFTVEVSX09SICYmIE1BU1RFUl9BTkQpKQpJbmRleDogU291cmNlL1dlYktpdC9TY3JpcHRz
L3dlYmtpdC90ZXN0LWxlZ2FjeU1lc3NhZ2VzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9TY3JpcHRzL3dlYmtpdC90ZXN0LWxlZ2FjeU1lc3NhZ2VzLmgJKG5vbmV4aXN0ZW50KQorKysg
U291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0LWxlZ2FjeU1lc3NhZ2VzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw1NDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisg
KiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2lmIChFTkFCTEUoV0VCS0lUMikgJiYgKE5FU1RFRF9NQVNURVJfQ09ORElUSU9OIHx8
IE1BU1RFUl9PUiAmJiBNQVNURVJfQU5EKSkKKworI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgi
CisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIk1lc3NhZ2VOYW1lcy5oIgorI2lu
Y2x1ZGUgIlBsdWdpbi5oIgorI2luY2x1ZGUgIldlYlBhZ2VNZXNzYWdlc1JlcGxpZXMuaCIKKyNp
bmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0tleWJv
YXJkRXZlbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BsdWdpbkRhdGEuaD4KKyNpbmNsdWRlIDx1
dGlsaXR5PgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBJ
UEMgeworY2xhc3MgRHVtbXlUeXBlOworY2xhc3MgTWFjaFBvcnQ7Cit9CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworY2xhc3MgV2ViUHJlZmVyZW5jZXNTdG9yZTsKK2NsYXNzIFdlYlRvdWNoRXZlbnQ7
Cit9CisKK25hbWVzcGFjZSBNZXNzYWdlcyB7CituYW1lc3BhY2UgV2ViUGFnZSB7CisKK3N0YXRp
YyBpbmxpbmUgSVBDOjpSZWNlaXZlck5hbWUgbWVzc2FnZVJlY2VpdmVyTmFtZSgpCit7CisgICAg
cmV0dXJuIElQQzo6UmVjZWl2ZXJOYW1lOjpXZWJQYWdlOworfQorCitjbGFzcyBMb2FkVVJMIHsK
K3B1YmxpYzoKKyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8Y29uc3QgU3RyaW5nJj4gQXJndW1lbnRz
OworCisgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVz
c2FnZU5hbWU6OldlYlBhZ2VfTG9hZFVSTDsgfQorICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3lu
YyA9IGZhbHNlOworCisgICAgZXhwbGljaXQgTG9hZFVSTChjb25zdCBTdHJpbmcmIHVybCkKKyAg
ICAgICAgOiBtX2FyZ3VtZW50cyh1cmwpCisgICAgeworICAgIH0KKworICAgIGNvbnN0IEFyZ3Vt
ZW50cyYgYXJndW1lbnRzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2FyZ3VtZW50
czsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOworfTsKKwor
I2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCitjbGFzcyBMb2FkU29tZXRoaW5nIHsKK3B1YmxpYzoK
KyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8Y29uc3QgU3RyaW5nJj4gQXJndW1lbnRzOworCisgICAg
c3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6
OldlYlBhZ2VfTG9hZFNvbWV0aGluZzsgfQorICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9
IGZhbHNlOworCisgICAgZXhwbGljaXQgTG9hZFNvbWV0aGluZyhjb25zdCBTdHJpbmcmIHVybCkK
KyAgICAgICAgOiBtX2FyZ3VtZW50cyh1cmwpCisgICAgeworICAgIH0KKworICAgIGNvbnN0IEFy
Z3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2FyZ3Vt
ZW50czsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOworfTsK
KyNlbmRpZgorCisjaWYgKEVOQUJMRShUT1VDSF9FVkVOVFMpICYmIChORVNURURfTUVTU0FHRV9D
T05ESVRJT04gfHwgU09NRV9PVEhFUl9NRVNTQUdFX0NPTkRJVElPTikpCitjbGFzcyBUb3VjaEV2
ZW50IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8Y29uc3QgV2ViS2l0OjpXZWJU
b3VjaEV2ZW50Jj4gQXJndW1lbnRzOworCisgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFt
ZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfVG91Y2hFdmVudDsgfQorICAg
IHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOworCisgICAgZXhwbGljaXQgVG91Y2hF
dmVudChjb25zdCBXZWJLaXQ6OldlYlRvdWNoRXZlbnQmIGV2ZW50KQorICAgICAgICA6IG1fYXJn
dW1lbnRzKGV2ZW50KQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3Vt
ZW50cygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7CisgICAgfQor
Citwcml2YXRlOgorICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKK307CisjZW5kaWYKKworI2lm
IChFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiAoTkVTVEVEX01FU1NBR0VfQ09ORElUSU9OICYmIFNP
TUVfT1RIRVJfTUVTU0FHRV9DT05ESVRJT04pKQorY2xhc3MgQWRkRXZlbnQgeworcHVibGljOgor
ICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBXZWJLaXQ6OldlYlRvdWNoRXZlbnQmPiBBcmd1
bWVudHM7CisKKyAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBD
OjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9BZGRFdmVudDsgfQorICAgIHN0YXRpYyBjb25zdCBib29s
IGlzU3luYyA9IGZhbHNlOworCisgICAgZXhwbGljaXQgQWRkRXZlbnQoY29uc3QgV2ViS2l0OjpX
ZWJUb3VjaEV2ZW50JiBldmVudCkKKyAgICAgICAgOiBtX2FyZ3VtZW50cyhldmVudCkKKyAgICB7
CisgICAgfQorCisgICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAorICAgIHsK
KyAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOworICAgIH0KKworcHJpdmF0ZToKKyAgICBBcmd1
bWVudHMgbV9hcmd1bWVudHM7Cit9OworI2VuZGlmCisKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRT
KQorY2xhc3MgTG9hZFNvbWV0aGluZ0Vsc2UgeworcHVibGljOgorICAgIHR5cGVkZWYgc3RkOjp0
dXBsZTxjb25zdCBTdHJpbmcmPiBBcmd1bWVudHM7CisKKyAgICBzdGF0aWMgSVBDOjpNZXNzYWdl
TmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9Mb2FkU29tZXRo
aW5nRWxzZTsgfQorICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOworCisgICAg
ZXhwbGljaXQgTG9hZFNvbWV0aGluZ0Vsc2UoY29uc3QgU3RyaW5nJiB1cmwpCisgICAgICAgIDog
bV9hcmd1bWVudHModXJsKQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdCBBcmd1bWVudHMmIGFy
Z3VtZW50cygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7CisgICAg
fQorCitwcml2YXRlOgorICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKK307CisjZW5kaWYKKwor
Y2xhc3MgRGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIHN0
ZDo6dHVwbGU8dWludDY0X3QsIHVpbnQ2NF90LCB1aW50MzJfdD4gQXJndW1lbnRzOworCisgICAg
c3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6
OldlYlBhZ2VfRGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uOyB9CisgICAgc3RhdGljIGNvbnN0IGJv
b2wgaXNTeW5jID0gZmFsc2U7CisKKyAgICBEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24odWludDY0
X3QgZnJhbWVJRCwgdWludDY0X3QgbGlzdGVuZXJJRCwgdWludDMyX3QgcG9saWN5QWN0aW9uKQor
ICAgICAgICA6IG1fYXJndW1lbnRzKGZyYW1lSUQsIGxpc3RlbmVySUQsIHBvbGljeUFjdGlvbikK
KyAgICB7CisgICAgfQorCisgICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAor
ICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOworICAgIH0KKworcHJpdmF0ZToKKyAg
ICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Cit9OworCitjbGFzcyBDbG9zZSB7CitwdWJsaWM6Cisg
ICAgdHlwZWRlZiBzdGQ6OnR1cGxlPD4gQXJndW1lbnRzOworCisgICAgc3RhdGljIElQQzo6TWVz
c2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfQ2xvc2U7
IH0KKyAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKKworICAgIGNvbnN0IEFy
Z3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2FyZ3Vt
ZW50czsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOworfTsK
KworY2xhc3MgUHJlZmVyZW5jZXNEaWRDaGFuZ2UgeworcHVibGljOgorICAgIHR5cGVkZWYgc3Rk
Ojp0dXBsZTxjb25zdCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmUmPiBBcmd1bWVudHM7CisK
KyAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdl
TmFtZTo6V2ViUGFnZV9QcmVmZXJlbmNlc0RpZENoYW5nZTsgfQorICAgIHN0YXRpYyBjb25zdCBi
b29sIGlzU3luYyA9IGZhbHNlOworCisgICAgZXhwbGljaXQgUHJlZmVyZW5jZXNEaWRDaGFuZ2Uo
Y29uc3QgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSkKKyAgICAgICAgOiBtX2Fy
Z3VtZW50cyhzdG9yZSkKKyAgICB7CisgICAgfQorCisgICAgY29uc3QgQXJndW1lbnRzJiBhcmd1
bWVudHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOworICAgIH0K
KworcHJpdmF0ZToKKyAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Cit9OworCitjbGFzcyBTZW5k
RG91YmxlQW5kRmxvYXQgeworcHVibGljOgorICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxkb3VibGUs
IGZsb2F0PiBBcmd1bWVudHM7CisKKyAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkg
eyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9TZW5kRG91YmxlQW5kRmxvYXQ7IH0K
KyAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKKworICAgIFNlbmREb3VibGVB
bmRGbG9hdChkb3VibGUgZCwgZmxvYXQgZikKKyAgICAgICAgOiBtX2FyZ3VtZW50cyhkLCBmKQor
ICAgIHsKKyAgICB9CisKKyAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Cisg
ICAgeworICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7CisgICAgfQorCitwcml2YXRlOgorICAg
IEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKK307CisKK2NsYXNzIFNlbmRJbnRzIHsKK3B1YmxpYzoK
KyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8Y29uc3QgVmVjdG9yPHVpbnQ2NF90PiYsIGNvbnN0IFZl
Y3RvcjxWZWN0b3I8dWludDY0X3Q+PiY+IEFyZ3VtZW50czsKKworICAgIHN0YXRpYyBJUEM6Ok1l
c3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX1NlbmRJ
bnRzOyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7CisKKyAgICBTZW5k
SW50cyhjb25zdCBWZWN0b3I8dWludDY0X3Q+JiBpbnRzLCBjb25zdCBWZWN0b3I8VmVjdG9yPHVp
bnQ2NF90Pj4mIGludFZlY3RvcnMpCisgICAgICAgIDogbV9hcmd1bWVudHMoaW50cywgaW50VmVj
dG9ycykKKyAgICB7CisgICAgfQorCisgICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBj
b25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOworICAgIH0KKworcHJpdmF0
ZToKKyAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Cit9OworCitjbGFzcyBDcmVhdGVQbHVnaW4g
eworcHVibGljOgorICAgIHR5cGVkZWYgc3RkOjp0dXBsZTx1aW50NjRfdCwgY29uc3QgV2ViS2l0
OjpQbHVnaW46OlBhcmFtZXRlcnMmPiBBcmd1bWVudHM7CisKKyAgICBzdGF0aWMgSVBDOjpNZXNz
YWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9DcmVhdGVQ
bHVnaW47IH0KKyAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSB0cnVlOworCisgICAgdXNp
bmcgUmVwbHkgPSBzdGQ6OnR1cGxlPGJvb2wmPjsKKyAgICB1c2luZyBSZXBseUFyZ3VtZW50cyA9
IHN0ZDo6dHVwbGU8Ym9vbD47CisgICAgQ3JlYXRlUGx1Z2luKHVpbnQ2NF90IHBsdWdpbkluc3Rh
bmNlSUQsIGNvbnN0IFdlYktpdDo6UGx1Z2luOjpQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQorICAg
ICAgICA6IG1fYXJndW1lbnRzKHBsdWdpbkluc3RhbmNlSUQsIHBhcmFtZXRlcnMpCisgICAgewor
ICAgIH0KKworICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKKyAgICB7Cisg
ICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQXJndW1l
bnRzIG1fYXJndW1lbnRzOworfTsKKworY2xhc3MgUnVuSmF2YVNjcmlwdEFsZXJ0IHsKK3B1Ymxp
YzoKKyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8dWludDY0X3QsIGNvbnN0IFN0cmluZyY+IEFyZ3Vt
ZW50czsKKworICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6
Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX1J1bkphdmFTY3JpcHRBbGVydDsgfQorICAgIHN0YXRpYyBj
b25zdCBib29sIGlzU3luYyA9IHRydWU7CisKKyAgICB1c2luZyBSZXBseSA9IHN0ZDo6dHVwbGU8
PjsKKyAgICB1c2luZyBSZXBseUFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8PjsKKyAgICBSdW5KYXZh
U2NyaXB0QWxlcnQodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQorICAg
ICAgICA6IG1fYXJndW1lbnRzKGZyYW1lSUQsIG1lc3NhZ2UpCisgICAgeworICAgIH0KKworICAg
IGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVy
biBtX2FyZ3VtZW50czsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQXJndW1lbnRzIG1fYXJndW1l
bnRzOworfTsKKworY2xhc3MgR2V0UGx1Z2lucyB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBzdGQ6
OnR1cGxlPGJvb2w+IEFyZ3VtZW50czsKKworICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5h
bWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX0dldFBsdWdpbnM7IH0KKyAg
ICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSB0cnVlOworCisgICAgdXNpbmcgUmVwbHkgPSBz
dGQ6OnR1cGxlPFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiY+OworICAgIHVzaW5nIFJlcGx5
QXJndW1lbnRzID0gc3RkOjp0dXBsZTxWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4+OworICAg
IGV4cGxpY2l0IEdldFBsdWdpbnMoYm9vbCByZWZyZXNoKQorICAgICAgICA6IG1fYXJndW1lbnRz
KHJlZnJlc2gpCisgICAgeworICAgIH0KKworICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRz
KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKKyAgICB9CisKK3By
aXZhdGU6CisgICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOworfTsKKworY2xhc3MgR2V0UGx1Z2lu
UHJvY2Vzc0Nvbm5lY3Rpb24geworcHVibGljOgorICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxjb25z
dCBTdHJpbmcmPiBBcmd1bWVudHM7CisKKyAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1l
KCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9HZXRQbHVnaW5Qcm9jZXNzQ29u
bmVjdGlvbjsgfQorICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IHRydWU7CisKKyAgICB1
c2luZyBEZWxheWVkUmVwbHkgPSBHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbkRlbGF5ZWRSZXBs
eTsKKyAgICBzdGF0aWMgdm9pZCBzZW5kKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiYs
IElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IElQQzo6Q29ubmVjdGlvbjo6SGFuZGxlJiBjb25uZWN0
aW9uSGFuZGxlKTsKKyAgICB1c2luZyBSZXBseSA9IHN0ZDo6dHVwbGU8SVBDOjpDb25uZWN0aW9u
OjpIYW5kbGUmPjsKKyAgICB1c2luZyBSZXBseUFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8SVBDOjpD
b25uZWN0aW9uOjpIYW5kbGU+OworICAgIGV4cGxpY2l0IEdldFBsdWdpblByb2Nlc3NDb25uZWN0
aW9uKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCkKKyAgICAgICAgOiBtX2FyZ3VtZW50cyhwbHVn
aW5QYXRoKQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygp
IGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7CisgICAgfQorCitwcml2
YXRlOgorICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKK307CisKK2NsYXNzIFRlc3RNdWx0aXBs
ZUF0dHJpYnV0ZXMgeworcHVibGljOgorICAgIHR5cGVkZWYgc3RkOjp0dXBsZTw+IEFyZ3VtZW50
czsKKworICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1l
c3NhZ2VOYW1lOjpXZWJQYWdlX1Rlc3RNdWx0aXBsZUF0dHJpYnV0ZXM7IH0KKyAgICBzdGF0aWMg
Y29uc3QgYm9vbCBpc1N5bmMgPSB0cnVlOworCisgICAgdXNpbmcgRGVsYXllZFJlcGx5ID0gVGVz
dE11bHRpcGxlQXR0cmlidXRlc0RlbGF5ZWRSZXBseTsKKyAgICBzdGF0aWMgdm9pZCBzZW5kKHN0
ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiYsIElQQzo6Q29ubmVjdGlvbiYpOworICAgIHVz
aW5nIFJlcGx5ID0gc3RkOjp0dXBsZTw+OworICAgIHVzaW5nIFJlcGx5QXJndW1lbnRzID0gc3Rk
Ojp0dXBsZTw+OworICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKKyAgICB7
CisgICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQXJn
dW1lbnRzIG1fYXJndW1lbnRzOworfTsKKworY2xhc3MgVGVzdFBhcmFtZXRlckF0dHJpYnV0ZXMg
eworcHVibGljOgorICAgIHR5cGVkZWYgc3RkOjp0dXBsZTx1aW50NjRfdCwgZG91YmxlLCBkb3Vi
bGU+IEFyZ3VtZW50czsKKworICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJl
dHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX1Rlc3RQYXJhbWV0ZXJBdHRyaWJ1dGVzOyB9
CisgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7CisKKyAgICBUZXN0UGFyYW1l
dGVyQXR0cmlidXRlcyh1aW50NjRfdCBmb28sIGRvdWJsZSBiYXIsIGRvdWJsZSBiYXopCisgICAg
ICAgIDogbV9hcmd1bWVudHMoZm9vLCBiYXIsIGJheikKKyAgICB7CisgICAgfQorCisgICAgY29u
c3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1f
YXJndW1lbnRzOworICAgIH0KKworcHJpdmF0ZToKKyAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7
Cit9OworCitjbGFzcyBUZW1wbGF0ZVRlc3QgeworcHVibGljOgorICAgIHR5cGVkZWYgc3RkOjp0
dXBsZTxjb25zdCBIYXNoTWFwPFN0cmluZywgc3RkOjpwYWlyPFN0cmluZywgdWludDY0X3Q+PiY+
IEFyZ3VtZW50czsKKworICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVy
biBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX1RlbXBsYXRlVGVzdDsgfQorICAgIHN0YXRpYyBj
b25zdCBib29sIGlzU3luYyA9IGZhbHNlOworCisgICAgZXhwbGljaXQgVGVtcGxhdGVUZXN0KGNv
bnN0IEhhc2hNYXA8U3RyaW5nLCBzdGQ6OnBhaXI8U3RyaW5nLCB1aW50NjRfdD4+JiBhKQorICAg
ICAgICA6IG1fYXJndW1lbnRzKGEpCisgICAgeworICAgIH0KKworICAgIGNvbnN0IEFyZ3VtZW50
cyYgYXJndW1lbnRzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsK
KyAgICB9CisKK3ByaXZhdGU6CisgICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOworfTsKKworY2xh
c3MgU2V0VmlkZW9MYXllcklEIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8Y29u
c3QgV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklEJj4gQXJndW1lbnRzOwor
CisgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2Fn
ZU5hbWU6OldlYlBhZ2VfU2V0VmlkZW9MYXllcklEOyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wg
aXNTeW5jID0gZmFsc2U7CisKKyAgICBleHBsaWNpdCBTZXRWaWRlb0xheWVySUQoY29uc3QgV2Vi
Q29yZTo6R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklEJiB2aWRlb0xheWVySUQpCisgICAg
ICAgIDogbV9hcmd1bWVudHModmlkZW9MYXllcklEKQorICAgIHsKKyAgICB9CisKKyAgICBjb25z
dCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9h
cmd1bWVudHM7CisgICAgfQorCitwcml2YXRlOgorICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsK
K307CisKKyNpZiBQTEFURk9STShNQUMpCitjbGFzcyBEaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVj
dGlvbiB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGNvbnN0IElQQzo6TWFjaFBv
cnQmPiBBcmd1bWVudHM7CisKKyAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyBy
ZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9EaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVj
dGlvbjsgfQorICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOworCisgICAgZXhw
bGljaXQgRGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oY29uc3QgSVBDOjpNYWNoUG9ydCYg
Y29ubmVjdGlvbklkZW50aWZpZXIpCisgICAgICAgIDogbV9hcmd1bWVudHMoY29ubmVjdGlvbklk
ZW50aWZpZXIpCisgICAgeworICAgIH0KKworICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRz
KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKKyAgICB9CisKK3By
aXZhdGU6CisgICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOworfTsKKyNlbmRpZgorCisjaWYgUExB
VEZPUk0oTUFDKQorY2xhc3MgSW50ZXJwcmV0S2V5RXZlbnQgeworcHVibGljOgorICAgIHR5cGVk
ZWYgc3RkOjp0dXBsZTx1aW50MzJfdD4gQXJndW1lbnRzOworCisgICAgc3RhdGljIElQQzo6TWVz
c2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfSW50ZXJw
cmV0S2V5RXZlbnQ7IH0KKyAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSB0cnVlOworCisg
ICAgdXNpbmcgUmVwbHkgPSBzdGQ6OnR1cGxlPFZlY3RvcjxXZWJDb3JlOjpLZXlwcmVzc0NvbW1h
bmQ+Jj47CisgICAgdXNpbmcgUmVwbHlBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPFZlY3RvcjxXZWJD
b3JlOjpLZXlwcmVzc0NvbW1hbmQ+PjsKKyAgICBleHBsaWNpdCBJbnRlcnByZXRLZXlFdmVudCh1
aW50MzJfdCB0eXBlKQorICAgICAgICA6IG1fYXJndW1lbnRzKHR5cGUpCisgICAgeworICAgIH0K
KworICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKKyAgICB7CisgICAgICAg
IHJldHVybiBtX2FyZ3VtZW50czsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQXJndW1lbnRzIG1f
YXJndW1lbnRzOworfTsKKyNlbmRpZgorCisjaWYgRU5BQkxFKERFUFJFQ0FURURfRkVBVFVSRSkK
K2NsYXNzIERlcHJlY2F0ZWRPcGVyYXRpb24geworcHVibGljOgorICAgIHR5cGVkZWYgc3RkOjp0
dXBsZTxjb25zdCBJUEM6OkR1bW15VHlwZSY+IEFyZ3VtZW50czsKKworICAgIHN0YXRpYyBJUEM6
Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX0Rl
cHJlY2F0ZWRPcGVyYXRpb247IH0KKyAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxz
ZTsKKworICAgIGV4cGxpY2l0IERlcHJlY2F0ZWRPcGVyYXRpb24oY29uc3QgSVBDOjpEdW1teVR5
cGUmIGR1bW15KQorICAgICAgICA6IG1fYXJndW1lbnRzKGR1bW15KQorICAgIHsKKyAgICB9CisK
KyAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0CisgICAgeworICAgICAgICBy
ZXR1cm4gbV9hcmd1bWVudHM7CisgICAgfQorCitwcml2YXRlOgorICAgIEFyZ3VtZW50cyBtX2Fy
Z3VtZW50czsKK307CisjZW5kaWYKKworI2lmIEVOQUJMRShFWFBFUklNRU5UQUxfRkVBVFVSRSkK
K2NsYXNzIEV4cGVyaW1lbnRhbE9wZXJhdGlvbiB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBzdGQ6
OnR1cGxlPGNvbnN0IElQQzo6RHVtbXlUeXBlJj4gQXJndW1lbnRzOworCisgICAgc3RhdGljIElQ
Qzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2Vf
RXhwZXJpbWVudGFsT3BlcmF0aW9uOyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0g
ZmFsc2U7CisKKyAgICBleHBsaWNpdCBFeHBlcmltZW50YWxPcGVyYXRpb24oY29uc3QgSVBDOjpE
dW1teVR5cGUmIGR1bW15KQorICAgICAgICA6IG1fYXJndW1lbnRzKGR1bW15KQorICAgIHsKKyAg
ICB9CisKKyAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0CisgICAgeworICAg
ICAgICByZXR1cm4gbV9hcmd1bWVudHM7CisgICAgfQorCitwcml2YXRlOgorICAgIEFyZ3VtZW50
cyBtX2FyZ3VtZW50czsKK307CisjZW5kaWYKKworfSAvLyBuYW1lc3BhY2UgV2ViUGFnZQorfSAv
LyBuYW1lc3BhY2UgTWVzc2FnZXMKKworI2VuZGlmIC8vIChFTkFCTEUoV0VCS0lUMikgJiYgKE5F
U1RFRF9NQVNURVJfQ09ORElUSU9OIHx8IE1BU1RFUl9PUiAmJiBNQVNURVJfQU5EKSkKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdC1sZWdhY3lNZXNzYWdlc1JlcGxpZXMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3QtbGVnYWN5
TWVzc2FnZXNSZXBsaWVzLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9TY3JpcHRz
L3dlYmtpdC90ZXN0LWxlZ2FjeU1lc3NhZ2VzUmVwbGllcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFO
RAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIChFTkFC
TEUoV0VCS0lUMikgJiYgKE5FU1RFRF9NQVNURVJfQ09ORElUSU9OIHx8IE1BU1RFUl9PUiAmJiBN
QVNURVJfQU5EKSkKKworI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJNZXNzYWdl
TmFtZXMuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCisKK25hbWVzcGFjZSBNZXNzYWdl
cyB7CituYW1lc3BhY2UgV2ViUGFnZSB7CisKK3VzaW5nIEdldFBsdWdpblByb2Nlc3NDb25uZWN0
aW9uRGVsYXllZFJlcGx5ID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkNvbm5l
Y3Rpb246OkhhbmRsZSYgY29ubmVjdGlvbkhhbmRsZSk+OworCit1c2luZyBUZXN0TXVsdGlwbGVB
dHRyaWJ1dGVzRGVsYXllZFJlcGx5ID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPjsKKworfSAv
LyBuYW1lc3BhY2UgV2ViUGFnZQorfSAvLyBuYW1lc3BhY2UgTWVzc2FnZXMKKworI2VuZGlmIC8v
IChFTkFCTEUoV0VCS0lUMikgJiYgKE5FU1RFRF9NQVNURVJfQ09ORElUSU9OIHx8IE1BU1RFUl9P
UiAmJiBNQVNURVJfQU5EKSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVz
dC1tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0
L3Rlc3QtbWVzc2FnZXMuaW4JKHJldmlzaW9uIDI2MDc2NCkKKysrIFNvdXJjZS9XZWJLaXQvU2Ny
aXB0cy93ZWJraXQvdGVzdC1tZXNzYWdlcy5pbgkobm9uZXhpc3RlbnQpCkBAIC0xLDg0ICswLDAg
QEAKLSMgQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMg
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotIyBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCi0jIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0jIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSMgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IKLSMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSMgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwKLSMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotI2lmIEVOQUJMRShX
RUJLSVQyKQotI2lmIE5FU1RFRF9NQVNURVJfQ09ORElUSU9OIHx8IE1BU1RFUl9PUiAmJiBNQVNU
RVJfQU5ECi0KLQotIyBUaGUgcGFyc2VyIHNob3VsZCB0cmVhdCBhbGwgb2YgdGhlc2UgYXMgY29t
bWVudHMKLSNGYWtlTG9hZFVSTEEoU3RyaW5nIHVybCkKLSMgRmFrZUxvYWRVUkxCKFN0cmluZyB1
cmwpCi0gICAgI0Zha2VMb2FkVVJMQyhTdHJpbmcgdXJsKQotICAgICMgRmFrZUxvYWRVUkxEKFN0
cmluZyB1cmwpCi0KLW1lc3NhZ2VzIC0+IFdlYlBhZ2UgewotICAgIExvYWRVUkwoU3RyaW5nIHVy
bCkKLSNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQotICAgIExvYWRTb21ldGhpbmcoU3RyaW5nIHVy
bCkKLSNpZiBORVNURURfTUVTU0FHRV9DT05ESVRJT04gfHwgU09NRV9PVEhFUl9NRVNTQUdFX0NP
TkRJVElPTgotICAgIFRvdWNoRXZlbnQoV2ViS2l0OjpXZWJUb3VjaEV2ZW50IGV2ZW50KQotI2Vu
ZGlmCi0jaWYgTkVTVEVEX01FU1NBR0VfQ09ORElUSU9OICYmIFNPTUVfT1RIRVJfTUVTU0FHRV9D
T05ESVRJT04KLSAgICBBZGRFdmVudChXZWJLaXQ6OldlYlRvdWNoRXZlbnQgZXZlbnQpCi0jZW5k
aWYKLSAgICBMb2FkU29tZXRoaW5nRWxzZShTdHJpbmcgdXJsKQotI2VuZGlmCi0gICAgRGlkUmVj
ZWl2ZVBvbGljeURlY2lzaW9uKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IGxpc3RlbmVySUQs
IHVpbnQzMl90IHBvbGljeUFjdGlvbikKLSAgICBDbG9zZSgpCi0KLSAgICBQcmVmZXJlbmNlc0Rp
ZENoYW5nZShXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmUgc3RvcmUpCi0gICAgU2VuZERvdWJs
ZUFuZEZsb2F0KGRvdWJsZSBkLCBmbG9hdCBmKQotICAgIFNlbmRJbnRzKFZlY3Rvcjx1aW50NjRf
dD4gaW50cywgVmVjdG9yPFZlY3Rvcjx1aW50NjRfdD4+IGludFZlY3RvcnMpCi0KLSAgICBDcmVh
dGVQbHVnaW4odWludDY0X3QgcGx1Z2luSW5zdGFuY2VJRCwgV2ViS2l0OjpQbHVnaW46OlBhcmFt
ZXRlcnMgcGFyYW1ldGVycykgLT4gKGJvb2wgcmVzdWx0KQotICAgIFJ1bkphdmFTY3JpcHRBbGVy
dCh1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgbWVzc2FnZSkgLT4gKCkKLSAgICBHZXRQbHVnaW5z
KGJvb2wgcmVmcmVzaCkgLT4gKFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiBwbHVnaW5zKQot
ICAgIEdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKFN0cmluZyBwbHVnaW5QYXRoKSAtPiAoSVBD
OjpDb25uZWN0aW9uOjpIYW5kbGUgY29ubmVjdGlvbkhhbmRsZSkgU3luY2hyb25vdXMKLQotICAg
IFRlc3RNdWx0aXBsZUF0dHJpYnV0ZXMoKSAtPiAoKSBXYW50c0Nvbm5lY3Rpb24gU3luY2hyb25v
dXMKLQotICAgIFRlc3RQYXJhbWV0ZXJBdHRyaWJ1dGVzKFtBdHRyaWJ1dGVPbmUgQXR0cmlidXRl
VHdvXSB1aW50NjRfdCBmb28sIGRvdWJsZSBiYXIsIFtBdHRyaWJ1dGVUaHJlZV0gZG91YmxlIGJh
eikKLQotICAgIFRlbXBsYXRlVGVzdChIYXNoTWFwPFN0cmluZywgc3RkOjpwYWlyPFN0cmluZywg
dWludDY0X3Q+PiBhKQotCi0gICAgU2V0VmlkZW9MYXllcklEKFdlYkNvcmU6OkdyYXBoaWNzTGF5
ZXI6OlBsYXRmb3JtTGF5ZXJJRCB2aWRlb0xheWVySUQpCi0KLSNpZiBQTEFURk9STShNQUMpCi0g
ICAgRGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oSVBDOjpNYWNoUG9ydCBjb25uZWN0aW9u
SWRlbnRpZmllcikKLSNlbmRpZgotCi0jaWYgUExBVEZPUk0oTUFDKQotICAgICMgS2V5Ym9hcmQg
c3VwcG9ydAotICAgIEludGVycHJldEtleUV2ZW50KHVpbnQzMl90IHR5cGUpIC0+IChWZWN0b3I8
V2ViQ29yZTo6S2V5cHJlc3NDb21tYW5kPiBjb21tYW5kTmFtZSkKLSNlbmRpZgotCi0jaWYgRU5B
QkxFKERFUFJFQ0FURURfRkVBVFVSRSkKLSAgICBEZXByZWNhdGVkT3BlcmF0aW9uKElQQzo6RHVt
bXlUeXBlIGR1bW15KQotI2VuZGlmCi0KLSNpZiBFTkFCTEUoRVhQRVJJTUVOVEFMX0ZFQVRVUkUp
Ci0gICAgRXhwZXJpbWVudGFsT3BlcmF0aW9uKElQQzo6RHVtbXlUeXBlIGR1bW15KQotI2VuZGlm
Ci19Ci0KLSNlbmRpZgotI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0
L3Rlc3Qtc3VwZXJjbGFzcy1tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1NjcmlwdHMvd2Via2l0L3Rlc3Qtc3VwZXJjbGFzcy1tZXNzYWdlcy5pbgkocmV2aXNpb24gMjYw
NzY0KQorKysgU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0LXN1cGVyY2xhc3MtbWVz
c2FnZXMuaW4JKG5vbmV4aXN0ZW50KQpAQCAtMSwzMiArMCwwIEBACi0jIENvcHlyaWdodCAoQykg
MjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJyBBTkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSMgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotIyBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUgotIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0jIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSCi0jIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0jIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLW1lc3NhZ2VzIC0+IFdlYlBhZ2UgOiBXZWJQYWdlQmFz
ZSB7Ci0gICAgTG9hZFVSTChTdHJpbmcgdXJsKQotI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCi0g
ICAgVGVzdEFzeW5jTWVzc2FnZShlbnVtOmJvb2wgV2ViS2l0OjpUZXN0VHdvU3RhdGVFbnVtIHR3
b1N0YXRlRW51bSkgLT4gKHVpbnQ2NF90IHJlc3VsdCkgQXN5bmMKLSAgICBUZXN0QXN5bmNNZXNz
YWdlV2l0aE5vQXJndW1lbnRzKCkgLT4gKCkgQXN5bmMKLSAgICBUZXN0QXN5bmNNZXNzYWdlV2l0
aE11bHRpcGxlQXJndW1lbnRzKCkgLT4gKGJvb2wgZmxhZywgdWludDY0X3QgdmFsdWUpIEFzeW5j
Ci0jZW5kaWYKLSAgICBUZXN0U3luY01lc3NhZ2UodWludDMyX3QgcGFyYW0pIC0+ICh1aW50OF90
IHJlcGx5KSBTeW5jaHJvbm91cwotICAgIFRlc3RTeW5jaHJvbm91c01lc3NhZ2UoYm9vbCB2YWx1
ZSkgLT4gKE9wdGlvbmFsPFdlYktpdDo6VGVzdENsYXNzTmFtZT4gb3B0aW9uYWxSZXBseSkgU3lu
Y2hyb25vdXMKLX0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdC1zdXBl
cmNsYXNzLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93
ZWJraXQvdGVzdC1zdXBlcmNsYXNzLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyNjA3NjQpCShmcm9t
IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdC1zdXBlcmNsYXNzLW1lc3NhZ2VzLmlu
OjI2MDc2NCkKKysrIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdC1zdXBlcmNsYXNz
Lm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzIgQEAKKyMgQ29weXJpZ2h0
IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisj
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IK
KyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworbWVzc2FnZXMgLT4gV2ViUGFnZSA6IFdlYlBh
Z2VCYXNlIHsKKyAgICBMb2FkVVJMKFN0cmluZyB1cmwpCisjaWYgRU5BQkxFKFRFU1RfRkVBVFVS
RSkKKyAgICBUZXN0QXN5bmNNZXNzYWdlKGVudW06Ym9vbCBXZWJLaXQ6OlRlc3RUd29TdGF0ZUVu
dW0gdHdvU3RhdGVFbnVtKSAtPiAodWludDY0X3QgcmVzdWx0KSBBc3luYworICAgIFRlc3RBc3lu
Y01lc3NhZ2VXaXRoTm9Bcmd1bWVudHMoKSAtPiAoKSBBc3luYworICAgIFRlc3RBc3luY01lc3Nh
Z2VXaXRoTXVsdGlwbGVBcmd1bWVudHMoKSAtPiAoYm9vbCBmbGFnLCB1aW50NjRfdCB2YWx1ZSkg
QXN5bmMKKyNlbmRpZgorICAgIFRlc3RTeW5jTWVzc2FnZSh1aW50MzJfdCBwYXJhbSkgLT4gKHVp
bnQ4X3QgcmVwbHkpIFN5bmNocm9ub3VzCisgICAgVGVzdFN5bmNocm9ub3VzTWVzc2FnZShib29s
IHZhbHVlKSAtPiAoT3B0aW9uYWw8V2ViS2l0OjpUZXN0Q2xhc3NOYW1lPiBvcHRpb25hbFJlcGx5
KSBTeW5jaHJvbm91cworfQpJbmRleDogU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0
LXN1cGVyY2xhc3NNZXNzYWdlUmVjZWl2ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvU2NyaXB0cy93ZWJraXQvdGVzdC1zdXBlcmNsYXNzTWVzc2FnZVJlY2VpdmVyLmNwcAkobm9u
ZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3Qtc3VwZXJjbGFz
c01lc3NhZ2VSZWNlaXZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxODkgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIK
KyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJXZWJQYWdl
LmgiCisKKyNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgIkRlY29kZXIuaCIK
KyNpbmNsdWRlICJIYW5kbGVNZXNzYWdlLmgiCisjaW5jbHVkZSAiVGVzdENsYXNzTmFtZS5oIgor
I2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCisjaW5jbHVkZSAiVGVzdFR3b1N0YXRlRW51bS5oIgor
I2VuZGlmCisjaW5jbHVkZSAiV2ViUGFnZU1lc3NhZ2VzLmgiCisjaW5jbHVkZSA8d3RmL09wdGlv
bmFsLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBNZXNz
YWdlcyB7CisKK25hbWVzcGFjZSBXZWJQYWdlIHsKKworI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUp
CisKK3ZvaWQgVGVzdEFzeW5jTWVzc2FnZTo6Y2FsbFJlcGx5KElQQzo6RGVjb2RlciYgZGVjb2Rl
ciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKK3sKKyAgICBPcHRpb25hbDx1aW50NjRfdD4gcmVzdWx0OworICAgIGRlY29kZXIgPj4gcmVz
dWx0OworICAgIGlmICghcmVzdWx0KSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgICAgICBjYW5jZWxSZXBseShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZSgqcmVzdWx0KSk7
Cit9CisKK3ZvaWQgVGVzdEFzeW5jTWVzc2FnZTo6Y2FuY2VsUmVwbHkoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCh1aW50NjRfdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBjb21wbGV0
aW9uSGFuZGxlcihJUEM6OkFzeW5jUmVwbHlFcnJvcjx1aW50NjRfdD46OmNyZWF0ZSgpKTsKK30K
Kwordm9pZCBUZXN0QXN5bmNNZXNzYWdlOjpzZW5kKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29k
ZXI+JiYgZW5jb2RlciwgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCB1aW50NjRfdCByZXN1
bHQpCit7CisgICAgKmVuY29kZXIgPDwgcmVzdWx0OworICAgIGNvbm5lY3Rpb24uc2VuZFN5bmNS
ZXBseShXVEZNb3ZlKGVuY29kZXIpKTsKK30KKworI2VuZGlmCisKKyNpZiBFTkFCTEUoVEVTVF9G
RUFUVVJFKQorCit2b2lkIFRlc3RBc3luY01lc3NhZ2VXaXRoTm9Bcmd1bWVudHM6OmNhbGxSZXBs
eShJUEM6OkRlY29kZXImIGRlY29kZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKK3sKKyAgICBjb21wbGV0aW9uSGFuZGxlcigpOworfQorCit2b2lkIFRl
c3RBc3luY01lc3NhZ2VXaXRoTm9Bcmd1bWVudHM6OmNhbmNlbFJlcGx5KENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBjb21wbGV0aW9uSGFuZGxl
cigpOworfQorCit2b2lkIFRlc3RBc3luY01lc3NhZ2VXaXRoTm9Bcmd1bWVudHM6OnNlbmQoc3Rk
Ojp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mJiBlbmNvZGVyLCBJUEM6OkNvbm5lY3Rpb24mIGNv
bm5lY3Rpb24pCit7CisgICAgY29ubmVjdGlvbi5zZW5kU3luY1JlcGx5KFdURk1vdmUoZW5jb2Rl
cikpOworfQorCisjZW5kaWYKKworI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCisKK3ZvaWQgVGVz
dEFzeW5jTWVzc2FnZVdpdGhNdWx0aXBsZUFyZ3VtZW50czo6Y2FsbFJlcGx5KElQQzo6RGVjb2Rl
ciYgZGVjb2RlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sJiYsIHVpbnQ2NF90JiYpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIE9wdGlvbmFsPGJvb2w+IGZsYWc7CisgICAgZGVj
b2RlciA+PiBmbGFnOworICAgIGlmICghZmxhZykgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgY2FuY2VsUmVwbHkoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIE9wdGlvbmFsPHVpbnQ2NF90PiB2YWx1ZTsKKyAg
ICBkZWNvZGVyID4+IHZhbHVlOworICAgIGlmICghdmFsdWUpIHsKKyAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgICAgIGNhbmNlbFJlcGx5KFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZN
b3ZlKCpmbGFnKSwgV1RGTW92ZSgqdmFsdWUpKTsKK30KKwordm9pZCBUZXN0QXN5bmNNZXNzYWdl
V2l0aE11bHRpcGxlQXJndW1lbnRzOjpjYW5jZWxSZXBseShDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wmJiwgdWludDY0X3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgY29tcGxl
dGlvbkhhbmRsZXIoSVBDOjpBc3luY1JlcGx5RXJyb3I8Ym9vbD46OmNyZWF0ZSgpLCBJUEM6OkFz
eW5jUmVwbHlFcnJvcjx1aW50NjRfdD46OmNyZWF0ZSgpKTsKK30KKwordm9pZCBUZXN0QXN5bmNN
ZXNzYWdlV2l0aE11bHRpcGxlQXJndW1lbnRzOjpzZW5kKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVu
Y29kZXI+JiYgZW5jb2RlciwgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBib29sIGZsYWcs
IHVpbnQ2NF90IHZhbHVlKQoreworICAgICplbmNvZGVyIDw8IGZsYWc7CisgICAgKmVuY29kZXIg
PDwgdmFsdWU7CisgICAgY29ubmVjdGlvbi5zZW5kU3luY1JlcGx5KFdURk1vdmUoZW5jb2Rlcikp
OworfQorCisjZW5kaWYKKwordm9pZCBUZXN0U3luY01lc3NhZ2U6OnNlbmQoc3RkOjp1bmlxdWVf
cHRyPElQQzo6RW5jb2Rlcj4mJiBlbmNvZGVyLCBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24s
IHVpbnQ4X3QgcmVwbHkpCit7CisgICAgKmVuY29kZXIgPDwgcmVwbHk7CisgICAgY29ubmVjdGlv
bi5zZW5kU3luY1JlcGx5KFdURk1vdmUoZW5jb2RlcikpOworfQorCit2b2lkIFRlc3RTeW5jaHJv
bm91c01lc3NhZ2U6OnNlbmQoc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mJiBlbmNvZGVy
LCBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IE9wdGlvbmFsPFdlYktpdDo6VGVz
dENsYXNzTmFtZT4mIG9wdGlvbmFsUmVwbHkpCit7CisgICAgKmVuY29kZXIgPDwgb3B0aW9uYWxS
ZXBseTsKKyAgICBjb25uZWN0aW9uLnNlbmRTeW5jUmVwbHkoV1RGTW92ZShlbmNvZGVyKSk7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYlBhZ2UKKworfSAvLyBuYW1lc3BhY2UgTWVzc2FnZXMKKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgV2ViUGFnZTo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpCit7CisgICAg
YXV0byBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyk7CisgICAgaWYgKGRlY29kZXIubWVz
c2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFVSTDo6bmFtZSgpKSB7CisgICAg
ICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFVSTD4oZGVjb2Rl
ciwgdGhpcywgJldlYlBhZ2U6OmxvYWRVUkwpOworICAgICAgICByZXR1cm47CisgICAgfQorI2lm
IEVOQUJMRShURVNUX0ZFQVRVUkUpCisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBN
ZXNzYWdlczo6V2ViUGFnZTo6VGVzdEFzeW5jTWVzc2FnZTo6bmFtZSgpKSB7CisgICAgICAgIElQ
Qzo6aGFuZGxlTWVzc2FnZUFzeW5jPE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0QXN5bmNNZXNzYWdl
Pihjb25uZWN0aW9uLCBkZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6dGVzdEFzeW5jTWVzc2FnZSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKyNpZiBFTkFCTEUoVEVTVF9GRUFUVVJF
KQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OlRl
c3RBc3luY01lc3NhZ2VXaXRoTm9Bcmd1bWVudHM6Om5hbWUoKSkgeworICAgICAgICBJUEM6Omhh
bmRsZU1lc3NhZ2VBc3luYzxNZXNzYWdlczo6V2ViUGFnZTo6VGVzdEFzeW5jTWVzc2FnZVdpdGhO
b0FyZ3VtZW50cz4oY29ubmVjdGlvbiwgZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OnRlc3RBc3lu
Y01lc3NhZ2VXaXRoTm9Bcmd1bWVudHMpOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlm
CisjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgp
ID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1l
bnRzOjpuYW1lKCkpIHsKKyAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlQXN5bmM8TWVzc2FnZXM6
OldlYlBhZ2U6OlRlc3RBc3luY01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHM+KGNvbm5lY3Rp
b24sIGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjp0ZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxl
QXJndW1lbnRzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorICAgIFdlYlBhZ2VC
YXNlOjpkaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKK30KKwordm9pZCBX
ZWJQYWdlOjpkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9u
LCBJUEM6OkRlY29kZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiBy
ZXBseUVuY29kZXIpCit7CisgICAgYXV0byBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyk7
CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6VGVz
dFN5bmNNZXNzYWdlOjpuYW1lKCkpIHsKKyAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlU3luY2hy
b25vdXM8TWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RTeW5jTWVzc2FnZT4oY29ubmVjdGlvbiwgZGVj
b2RlciwgcmVwbHlFbmNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6dGVzdFN5bmNNZXNzYWdlKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1l
c3NhZ2VzOjpXZWJQYWdlOjpUZXN0U3luY2hyb25vdXNNZXNzYWdlOjpuYW1lKCkpIHsKKyAgICAg
ICAgSVBDOjpoYW5kbGVNZXNzYWdlU3luY2hyb25vdXM8TWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RT
eW5jaHJvbm91c01lc3NhZ2U+KGNvbm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5RW5jb2RlciwgdGhp
cywgJldlYlBhZ2U6OnRlc3RTeW5jaHJvbm91c01lc3NhZ2UpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsKKyAgICBVTlVTRURfUEFSQU0oZGVj
b2Rlcik7CisgICAgVU5VU0VEX1BBUkFNKHJlcGx5RW5jb2Rlcik7CisgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1NjcmlwdHMvd2Via2l0L3Rlc3Qtc3VwZXJjbGFzc01lc3NhZ2VzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0LXN1cGVyY2xhc3NNZXNzYWdlcy5o
CShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdC1zdXBl
cmNsYXNzTWVzc2FnZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDIwMSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorICog
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIK
KyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiTWVzc2FnZU5hbWVzLmgiCisjaW5j
bHVkZSAiVGVzdENsYXNzTmFtZS5oIgorI2luY2x1ZGUgIldlYlBhZ2VNZXNzYWdlc1JlcGxpZXMu
aCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgor
I2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKK2VudW0gY2xhc3MgVGVzdFR3b1N0
YXRlRW51bSA6IGJvb2w7Cit9CisKK25hbWVzcGFjZSBNZXNzYWdlcyB7CituYW1lc3BhY2UgV2Vi
UGFnZSB7CisKK3N0YXRpYyBpbmxpbmUgSVBDOjpSZWNlaXZlck5hbWUgbWVzc2FnZVJlY2VpdmVy
TmFtZSgpCit7CisgICAgcmV0dXJuIElQQzo6UmVjZWl2ZXJOYW1lOjpXZWJQYWdlOworfQorCitj
bGFzcyBMb2FkVVJMIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8Y29uc3QgU3Ry
aW5nJj4gQXJndW1lbnRzOworCisgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsg
cmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfTG9hZFVSTDsgfQorICAgIHN0YXRpYyBj
b25zdCBib29sIGlzU3luYyA9IGZhbHNlOworCisgICAgZXhwbGljaXQgTG9hZFVSTChjb25zdCBT
dHJpbmcmIHVybCkKKyAgICAgICAgOiBtX2FyZ3VtZW50cyh1cmwpCisgICAgeworICAgIH0KKwor
ICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJl
dHVybiBtX2FyZ3VtZW50czsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQXJndW1lbnRzIG1fYXJn
dW1lbnRzOworfTsKKworI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCitjbGFzcyBUZXN0QXN5bmNN
ZXNzYWdlIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8V2ViS2l0OjpUZXN0VHdv
U3RhdGVFbnVtPiBBcmd1bWVudHM7CisKKyAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1l
KCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9UZXN0QXN5bmNNZXNzYWdlOyB9
CisgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7CisKKyAgICBzdGF0aWMgdm9p
ZCBjYWxsUmVwbHkoSVBDOjpEZWNvZGVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRf
dCYmKT4mJik7CisgICAgc3RhdGljIHZvaWQgY2FuY2VsUmVwbHkoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCh1aW50NjRfdCYmKT4mJik7CisgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgYXN5bmNN
ZXNzYWdlUmVwbHlOYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9UZXN0
QXN5bmNNZXNzYWdlUmVwbHk7IH0KKyAgICB1c2luZyBBc3luY1JlcGx5ID0gVGVzdEFzeW5jTWVz
c2FnZUFzeW5jUmVwbHk7CisgICAgc3RhdGljIHZvaWQgc2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBD
OjpFbmNvZGVyPiYmLCBJUEM6OkNvbm5lY3Rpb24mLCB1aW50NjRfdCByZXN1bHQpOworICAgIHVz
aW5nIFJlcGx5ID0gc3RkOjp0dXBsZTx1aW50NjRfdCY+OworICAgIHVzaW5nIFJlcGx5QXJndW1l
bnRzID0gc3RkOjp0dXBsZTx1aW50NjRfdD47CisgICAgZXhwbGljaXQgVGVzdEFzeW5jTWVzc2Fn
ZShXZWJLaXQ6OlRlc3RUd29TdGF0ZUVudW0gdHdvU3RhdGVFbnVtKQorICAgICAgICA6IG1fYXJn
dW1lbnRzKHR3b1N0YXRlRW51bSkKKyAgICB7CisgICAgfQorCisgICAgY29uc3QgQXJndW1lbnRz
JiBhcmd1bWVudHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwor
ICAgIH0KKworcHJpdmF0ZToKKyAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Cit9OworI2VuZGlm
CisKKyNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQorY2xhc3MgVGVzdEFzeW5jTWVzc2FnZVdpdGhO
b0FyZ3VtZW50cyB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBzdGQ6OnR1cGxlPD4gQXJndW1lbnRz
OworCisgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVz
c2FnZU5hbWU6OldlYlBhZ2VfVGVzdEFzeW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50czsgfQorICAg
IHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOworCisgICAgc3RhdGljIHZvaWQgY2Fs
bFJlcGx5KElQQzo6RGVjb2RlciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAg
c3RhdGljIHZvaWQgY2FuY2VsUmVwbHkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAg
ICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBhc3luY01lc3NhZ2VSZXBseU5hbWUoKSB7IHJldHVy
biBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX1Rlc3RBc3luY01lc3NhZ2VXaXRoTm9Bcmd1bWVu
dHNSZXBseTsgfQorICAgIHVzaW5nIEFzeW5jUmVwbHkgPSBUZXN0QXN5bmNNZXNzYWdlV2l0aE5v
QXJndW1lbnRzQXN5bmNSZXBseTsKKyAgICBzdGF0aWMgdm9pZCBzZW5kKHN0ZDo6dW5pcXVlX3B0
cjxJUEM6OkVuY29kZXI+JiYsIElQQzo6Q29ubmVjdGlvbiYpOworICAgIHVzaW5nIFJlcGx5ID0g
c3RkOjp0dXBsZTw+OworICAgIHVzaW5nIFJlcGx5QXJndW1lbnRzID0gc3RkOjp0dXBsZTw+Owor
ICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJl
dHVybiBtX2FyZ3VtZW50czsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQXJndW1lbnRzIG1fYXJn
dW1lbnRzOworfTsKKyNlbmRpZgorCisjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKK2NsYXNzIFRl
c3RBc3luY01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHMgeworcHVibGljOgorICAgIHR5cGVk
ZWYgc3RkOjp0dXBsZTw+IEFyZ3VtZW50czsKKworICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1l
IG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX1Rlc3RBc3luY01lc3Nh
Z2VXaXRoTXVsdGlwbGVBcmd1bWVudHM7IH0KKyAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMg
PSBmYWxzZTsKKworICAgIHN0YXRpYyB2b2lkIGNhbGxSZXBseShJUEM6OkRlY29kZXImLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wmJiwgdWludDY0X3QmJik+JiYpOworICAgIHN0YXRpYyB2
b2lkIGNhbmNlbFJlcGx5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCYmLCB1aW50NjRfdCYm
KT4mJik7CisgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgYXN5bmNNZXNzYWdlUmVwbHlOYW1l
KCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9UZXN0QXN5bmNNZXNzYWdlV2l0
aE11bHRpcGxlQXJndW1lbnRzUmVwbHk7IH0KKyAgICB1c2luZyBBc3luY1JlcGx5ID0gVGVzdEFz
eW5jTWVzc2FnZVdpdGhNdWx0aXBsZUFyZ3VtZW50c0FzeW5jUmVwbHk7CisgICAgc3RhdGljIHZv
aWQgc2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYmLCBJUEM6OkNvbm5lY3Rpb24m
LCBib29sIGZsYWcsIHVpbnQ2NF90IHZhbHVlKTsKKyAgICB1c2luZyBSZXBseSA9IHN0ZDo6dHVw
bGU8Ym9vbCYsIHVpbnQ2NF90Jj47CisgICAgdXNpbmcgUmVwbHlBcmd1bWVudHMgPSBzdGQ6OnR1
cGxlPGJvb2wsIHVpbnQ2NF90PjsKKyAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNv
bnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7CisgICAgfQorCitwcml2YXRl
OgorICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKK307CisjZW5kaWYKKworY2xhc3MgVGVzdFN5
bmNNZXNzYWdlIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8dWludDMyX3Q+IEFy
Z3VtZW50czsKKworICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJ
UEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX1Rlc3RTeW5jTWVzc2FnZTsgfQorICAgIHN0YXRpYyBj
b25zdCBib29sIGlzU3luYyA9IHRydWU7CisKKyAgICB1c2luZyBEZWxheWVkUmVwbHkgPSBUZXN0
U3luY01lc3NhZ2VEZWxheWVkUmVwbHk7CisgICAgc3RhdGljIHZvaWQgc2VuZChzdGQ6OnVuaXF1
ZV9wdHI8SVBDOjpFbmNvZGVyPiYmLCBJUEM6OkNvbm5lY3Rpb24mLCB1aW50OF90IHJlcGx5KTsK
KyAgICB1c2luZyBSZXBseSA9IHN0ZDo6dHVwbGU8dWludDhfdCY+OworICAgIHVzaW5nIFJlcGx5
QXJndW1lbnRzID0gc3RkOjp0dXBsZTx1aW50OF90PjsKKyAgICBleHBsaWNpdCBUZXN0U3luY01l
c3NhZ2UodWludDMyX3QgcGFyYW0pCisgICAgICAgIDogbV9hcmd1bWVudHMocGFyYW0pCisgICAg
eworICAgIH0KKworICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKKyAgICB7
CisgICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQXJn
dW1lbnRzIG1fYXJndW1lbnRzOworfTsKKworY2xhc3MgVGVzdFN5bmNocm9ub3VzTWVzc2FnZSB7
CitwdWJsaWM6CisgICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGJvb2w+IEFyZ3VtZW50czsKKworICAg
IHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1l
OjpXZWJQYWdlX1Rlc3RTeW5jaHJvbm91c01lc3NhZ2U7IH0KKyAgICBzdGF0aWMgY29uc3QgYm9v
bCBpc1N5bmMgPSB0cnVlOworCisgICAgdXNpbmcgRGVsYXllZFJlcGx5ID0gVGVzdFN5bmNocm9u
b3VzTWVzc2FnZURlbGF5ZWRSZXBseTsKKyAgICBzdGF0aWMgdm9pZCBzZW5kKHN0ZDo6dW5pcXVl
X3B0cjxJUEM6OkVuY29kZXI+JiYsIElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IE9wdGlvbmFsPFdl
YktpdDo6VGVzdENsYXNzTmFtZT4mIG9wdGlvbmFsUmVwbHkpOworICAgIHVzaW5nIFJlcGx5ID0g
c3RkOjp0dXBsZTxPcHRpb25hbDxXZWJLaXQ6OlRlc3RDbGFzc05hbWU+Jj47CisgICAgdXNpbmcg
UmVwbHlBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPE9wdGlvbmFsPFdlYktpdDo6VGVzdENsYXNzTmFt
ZT4+OworICAgIGV4cGxpY2l0IFRlc3RTeW5jaHJvbm91c01lc3NhZ2UoYm9vbCB2YWx1ZSkKKyAg
ICAgICAgOiBtX2FyZ3VtZW50cyh2YWx1ZSkKKyAgICB7CisgICAgfQorCisgICAgY29uc3QgQXJn
dW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYXJndW1l
bnRzOworICAgIH0KKworcHJpdmF0ZToKKyAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJQYWdlCit9IC8vIG5hbWVzcGFjZSBNZXNzYWdlcwpJbmRleDog
U291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0LXN1cGVyY2xhc3NNZXNzYWdlc1JlcGxp
ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3Qtc3Vw
ZXJjbGFzc01lc3NhZ2VzUmVwbGllcy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQv
U2NyaXB0cy93ZWJraXQvdGVzdC1zdXBlcmNsYXNzTWVzc2FnZXNSZXBsaWVzLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQor
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaW5jbHVkZSAiTWVzc2FnZU5hbWVzLmgiCisjaW5jbHVkZSAiVGVzdENsYXNzTmFtZS5oIgor
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisKKwor
bmFtZXNwYWNlIE1lc3NhZ2VzIHsKK25hbWVzcGFjZSBXZWJQYWdlIHsKKworI2lmIEVOQUJMRShU
RVNUX0ZFQVRVUkUpCit1c2luZyBUZXN0QXN5bmNNZXNzYWdlQXN5bmNSZXBseSA9IENvbXBsZXRp
b25IYW5kbGVyPHZvaWQodWludDY0X3QgcmVzdWx0KT47CisjZW5kaWYKKworI2lmIEVOQUJMRShU
RVNUX0ZFQVRVUkUpCit1c2luZyBUZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJndW1lbnRzQXN5bmNS
ZXBseSA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT47CisjZW5kaWYKKworI2lmIEVOQUJMRShU
RVNUX0ZFQVRVUkUpCit1c2luZyBUZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1lbnRz
QXN5bmNSZXBseSA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBmbGFnLCB1aW50NjRfdCB2
YWx1ZSk+OworI2VuZGlmCisKK3VzaW5nIFRlc3RTeW5jTWVzc2FnZURlbGF5ZWRSZXBseSA9IENv
bXBsZXRpb25IYW5kbGVyPHZvaWQodWludDhfdCByZXBseSk+OworCit1c2luZyBUZXN0U3luY2hy
b25vdXNNZXNzYWdlRGVsYXllZFJlcGx5ID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBP
cHRpb25hbDxXZWJLaXQ6OlRlc3RDbGFzc05hbWU+JiBvcHRpb25hbFJlcGx5KT47CisKK30gLy8g
bmFtZXNwYWNlIFdlYlBhZ2UKK30gLy8gbmFtZXNwYWNlIE1lc3NhZ2VzCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3QubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJbmRleDog
U291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0TWVzc2FnZVJlY2VpdmVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RNZXNzYWdlUmVjZWl2
ZXIuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVz
dE1lc3NhZ2VSZWNlaXZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyAqIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgor
ICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIk5vbmUuaCIK
KworI2luY2x1ZGUgIkRlY29kZXIuaCIKKyNpbmNsdWRlICJIYW5kbGVNZXNzYWdlLmgiCisjaW5j
bHVkZSAiTm9uZU1lc3NhZ2VzLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCisKK30gLy8gbmFt
ZXNwYWNlIFdlYktpdAorCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RN
ZXNzYWdlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVz
dE1lc3NhZ2VzLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtp
dC90ZXN0TWVzc2FnZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ1IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEwLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorICogQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisgKiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLAorICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgor
I2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJNZXNzYWdlTmFtZXMuaCIKKyNpbmNs
dWRlICJOb25lTWVzc2FnZXNSZXBsaWVzLmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNp
bmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKworCituYW1lc3BhY2UgTWVzc2Fn
ZXMgeworbmFtZXNwYWNlIE5vbmUgeworCitzdGF0aWMgaW5saW5lIElQQzo6UmVjZWl2ZXJOYW1l
IG1lc3NhZ2VSZWNlaXZlck5hbWUoKQoreworICAgIHJldHVybiBJUEM6OlJlY2VpdmVyTmFtZTo6
Tm9uZTsKK30KKworCit9IC8vIG5hbWVzcGFjZSBOb25lCit9IC8vIG5hbWVzcGFjZSBNZXNzYWdl
cwpJbmRleDogU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0TWVzc2FnZXNSZXBsaWVz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0TWVzc2Fn
ZXNSZXBsaWVzLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtp
dC90ZXN0TWVzc2FnZXNSZXBsaWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyAq
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTWVzc2FnZU5hbWVz
LmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKworCituYW1lc3BhY2UgTWVzc2FnZXMgewor
bmFtZXNwYWNlIE5vbmUgeworCisKK30gLy8gbmFtZXNwYWNlIE5vbmUKK30gLy8gbmFtZXNwYWNl
IE1lc3NhZ2VzCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXhpbGlhcnlQcm9jZXNzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXhpbGlhcnlQcm9jZXNzLmNw
cAkocmV2aXNpb24gMjYwNzY0KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvQXV4aWxpYXJ5UHJv
Y2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNywyMiArMTA3LDIyIEBAIHZvaWQgQXV4aWxp
YXJ5UHJvY2Vzczo6aW5pdGlhbGl6ZUNvbm5lY3QKIHsKIH0KIAotdm9pZCBBdXhpbGlhcnlQcm9j
ZXNzOjphZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2Vp
dmVyTmFtZSwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImIG1lc3NhZ2VSZWNlaXZlcikKK3ZvaWQgQXV4
aWxpYXJ5UHJvY2Vzczo6YWRkTWVzc2FnZVJlY2VpdmVyKElQQzo6UmVjZWl2ZXJOYW1lIG1lc3Nh
Z2VSZWNlaXZlck5hbWUsIElQQzo6TWVzc2FnZVJlY2VpdmVyJiBtZXNzYWdlUmVjZWl2ZXIpCiB7
CiAgICAgbV9tZXNzYWdlUmVjZWl2ZXJNYXAuYWRkTWVzc2FnZVJlY2VpdmVyKG1lc3NhZ2VSZWNl
aXZlck5hbWUsIG1lc3NhZ2VSZWNlaXZlcik7CiB9CiAKLXZvaWQgQXV4aWxpYXJ5UHJvY2Vzczo6
YWRkTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5h
bWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIElQQzo6TWVzc2FnZVJlY2VpdmVyJiBtZXNzYWdl
UmVjZWl2ZXIpCit2b2lkIEF1eGlsaWFyeVByb2Nlc3M6OmFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6
OlJlY2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklE
LCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYgbWVzc2FnZVJlY2VpdmVyKQogewogICAgIG1fbWVzc2Fn
ZVJlY2VpdmVyTWFwLmFkZE1lc3NhZ2VSZWNlaXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1lLCBkZXN0
aW5hdGlvbklELCBtZXNzYWdlUmVjZWl2ZXIpOwogfQogCi12b2lkIEF1eGlsaWFyeVByb2Nlc3M6
OnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2
ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKQordm9pZCBBdXhpbGlhcnlQcm9jZXNzOjpy
ZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpSZWNlaXZlck5hbWUgbWVzc2FnZVJlY2VpdmVyTmFt
ZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCkKIHsKICAgICBtX21lc3NhZ2VSZWNlaXZlck1hcC5y
ZW1vdmVNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRCk7
CiB9CiAKLXZvaWQgQXV4aWxpYXJ5UHJvY2Vzczo6cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6
U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUpCit2b2lkIEF1eGlsaWFyeVByb2Nl
c3M6OnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlJlY2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2
ZXJOYW1lKQogewogICAgIG1fbWVzc2FnZVJlY2VpdmVyTWFwLnJlbW92ZU1lc3NhZ2VSZWNlaXZl
cihtZXNzYWdlUmVjZWl2ZXJOYW1lKTsKIH0KQEAgLTIzNiw5ICsyMzYsOSBAQCB2b2lkIEF1eGls
aWFyeVByb2Nlc3M6OmluaXRpYWxpemVTYW5kYm94CiB7CiB9CiAKLXZvaWQgQXV4aWxpYXJ5UHJv
Y2Vzczo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6U3Ry
aW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1l
c3NhZ2VOYW1lKQordm9pZCBBdXhpbGlhcnlQcm9jZXNzOjpkaWRSZWNlaXZlSW52YWxpZE1lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlTmFtZSBtZXNzYWdlTmFtZSkKIHsKLSAg
ICBXVEZMb2dBbHdheXMoIlJlY2VpdmVkIGludmFsaWQgbWVzc2FnZTogJyVzOjolcyciLCBtZXNz
YWdlUmVjZWl2ZXJOYW1lLnRvU3RyaW5nKCkuZGF0YSgpLCBtZXNzYWdlTmFtZS50b1N0cmluZygp
LmRhdGEoKSk7CisgICAgV1RGTG9nQWx3YXlzKCJSZWNlaXZlZCBpbnZhbGlkIG1lc3NhZ2U6ICcl
cyciLCBkZXNjcmlwdGlvbihtZXNzYWdlTmFtZSkpOwogICAgIENSQVNIKCk7CiB9CiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0F1eGlsaWFyeVByb2Nlc3MuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1NoYXJlZC9BdXhpbGlhcnlQcm9jZXNzLmgJKHJldmlzaW9uIDI2MDc2NCkK
KysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0F1eGlsaWFyeVByb2Nlc3MuaAkod29ya2luZyBjb3B5
KQpAQCAtNjAsMjAgKzYwLDIwIEBAIHB1YmxpYzoKICAgICB2b2lkIGRpc2FibGVUZXJtaW5hdGlv
bigpOwogICAgIHZvaWQgZW5hYmxlVGVybWluYXRpb24oKTsKIAotICAgIHZvaWQgYWRkTWVzc2Fn
ZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIElQQzo6
TWVzc2FnZVJlY2VpdmVyJik7Ci0gICAgdm9pZCBhZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJp
bmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwg
SVBDOjpNZXNzYWdlUmVjZWl2ZXImKTsKLSAgICB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihJ
UEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5h
dGlvbklEKTsKLSAgICB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVy
ZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lKTsKKyAgICB2b2lkIGFkZE1lc3NhZ2VSZWNlaXZlcihJ
UEM6OlJlY2VpdmVyTmFtZSwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImKTsKKyAgICB2b2lkIGFkZE1l
c3NhZ2VSZWNlaXZlcihJUEM6OlJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwg
SVBDOjpNZXNzYWdlUmVjZWl2ZXImKTsKKyAgICB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihJ
UEM6OlJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCk7CisgICAgdm9pZCByZW1v
dmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpSZWNlaXZlck5hbWUpOwogICAgIHZvaWQgcmVtb3ZlTWVz
c2FnZVJlY2VpdmVyKElQQzo6TWVzc2FnZVJlY2VpdmVyJik7CiAgICAgCiAgICAgdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+Ci0gICAgdm9pZCBhZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZl
cmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgT2JqZWN0SWRlbnRpZmllcjxUPiBkZXN0aW5hdGlv
bklELCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYgcmVjZWl2ZXIpCisgICAgdm9pZCBhZGRNZXNzYWdl
UmVjZWl2ZXIoSVBDOjpSZWNlaXZlck5hbWUgbWVzc2FnZVJlY2VpdmVyTmFtZSwgT2JqZWN0SWRl
bnRpZmllcjxUPiBkZXN0aW5hdGlvbklELCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYgcmVjZWl2ZXIp
CiAgICAgewogICAgICAgICBhZGRNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSwg
ZGVzdGluYXRpb25JRC50b1VJbnQ2NCgpLCByZWNlaXZlcik7CiAgICAgfQogICAgIAogICAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBUPgotICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6
U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIE9iamVjdElkZW50aWZpZXI8VD4g
ZGVzdGluYXRpb25JRCkKKyAgICB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlJlY2Vp
dmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBPYmplY3RJZGVudGlmaWVyPFQ+IGRlc3RpbmF0
aW9uSUQpCiAgICAgewogICAgICAgICByZW1vdmVNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2Vp
dmVyTmFtZSwgZGVzdGluYXRpb25JRC50b1VJbnQ2NCgpKTsKICAgICB9CkBAIC0xMzgsNyArMTM4
LDcgQEAgcHJpdmF0ZToKICAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgp
IGNvbnN0IG92ZXJyaWRlOwogCiAgICAgLy8gSVBDOjpDb25uZWN0aW9uOjpDbGllbnQuCi0gICAg
dm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpTdHJp
bmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVz
c2FnZU5hbWUpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZU5hbWUpIGZpbmFsOwogICAgIHZvaWQgZGlkQ2xvc2Uo
SVBDOjpDb25uZWN0aW9uJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHNodXREb3duKCk7CkluZGV4
OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94
eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1l
bnRDb29yZGluYXRvclByb3h5LmgJKHJldmlzaW9uIDI2MDc2NCkKKysrIFNvdXJjZS9XZWJLaXQv
U2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTg2LDggKzg2LDYgQEAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIGNvbnN0IFN0cmlu
ZyYgcGF5bWVudENvb3JkaW5hdG9yQm91bmRJbnRlcmZhY2VJZGVudGlmaWVyKGNvbnN0IFdlYlBh
eW1lbnRDb29yZGluYXRvclByb3h5JikgPSAwOwogICAgICAgICB2aXJ0dWFsIGNvbnN0IFN0cmlu
ZyYgcGF5bWVudENvb3JkaW5hdG9yU291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKGNv
bnN0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JikgPSAwOwogICAgICAgICB2aXJ0dWFsIGNv
bnN0IFN0cmluZyYgcGF5bWVudENvb3JkaW5hdG9yU291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJ
ZGVudGlmaWVyKGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JikgPSAwOwotICAgICAg
ICB2aXJ0dWFsIHZvaWQgcGF5bWVudENvb3JkaW5hdG9yQWRkTWVzc2FnZVJlY2VpdmVyKFdlYlBh
eW1lbnRDb29yZGluYXRvclByb3h5JiwgY29uc3QgSVBDOjpTdHJpbmdSZWZlcmVuY2UmLCBJUEM6
Ok1lc3NhZ2VSZWNlaXZlciYpID0gMDsKLSAgICAgICAgdmlydHVhbCB2b2lkIHBheW1lbnRDb29y
ZGluYXRvclJlbW92ZU1lc3NhZ2VSZWNlaXZlcihXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYs
IGNvbnN0IElQQzo6U3RyaW5nUmVmZXJlbmNlJikgPSAwOwogI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAgICAgICAgIHZpcnR1YWwgVUlWaWV3Q29udHJvbGxlciAqcGF5bWVudENvb3JkaW5hdG9y
UHJlc2VudGluZ1ZpZXdDb250cm9sbGVyKGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5
JikgPSAwOwogICAgICAgICB2aXJ0dWFsIGNvbnN0IFN0cmluZyYgcGF5bWVudENvb3JkaW5hdG9y
Q1REYXRhQ29ubmVjdGlvblNlcnZpY2VUeXBlKGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclBy
b3h5JikgPSAwOwpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvY29jb2EvV2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29h
Lm1tCShyZXZpc2lvbiAyNjA3NjQpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9j
b2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC03OSwxNSArNzksMTIgQEAgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OldlYlBheW1lbnRD
bwogICAgIDogbV9jbGllbnQoY2xpZW50KQogICAgICwgbV9jYW5NYWtlUGF5bWVudHNRdWV1ZShX
b3JrUXVldWU6OmNyZWF0ZSgiY29tLmFwcGxlLldlYktpdC5DYW5NYWtlUGF5bWVudHMiKSkKIHsK
LSAgICBtX2NsaWVudC5wYXltZW50Q29vcmRpbmF0b3JBZGRNZXNzYWdlUmVjZWl2ZXIoKnRoaXMs
IE1lc3NhZ2VzOjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFt
ZSgpLCAqdGhpcyk7CiB9CiAKIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5Ojp+V2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHkoKQogewogICAgIGlmIChtX3N0YXRlICE9IFN0YXRlOjpJZGxlKQog
ICAgICAgICBoaWRlUGF5bWVudFVJKCk7Ci0KLSAgICBtX2NsaWVudC5wYXltZW50Q29vcmRpbmF0
b3JSZW1vdmVNZXNzYWdlUmVjZWl2ZXIoKnRoaXMsIE1lc3NhZ2VzOjpXZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKTsKIH0KIAogdm9pZCBXZWJQYXltZW50
Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1DYW5NYWtlUGF5bWVudHNXaXRoQWN0aXZlQ2FyZChj
b25zdCBTdHJpbmcmIG1lcmNoYW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkb21haW5OYW1l
LCBXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCkluZGV4OiBT
b3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9BdXhpbGlhcnlQcm9jZXNzQ29jb2EubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQXV4aWxpYXJ5UHJvY2Vzc0NvY29h
Lm1tCShyZXZpc2lvbiAyNjA3NjQpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9BdXhp
bGlhcnlQcm9jZXNzQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTMyLDkgKzMyLDkgQEAKIAog
bmFtZXNwYWNlIFdlYktpdCB7CiAKLXZvaWQgQXV4aWxpYXJ5UHJvY2Vzczo6ZGlkUmVjZWl2ZUlu
dmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3Nh
Z2VSZWNlaXZlck5hbWUsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lKQordm9pZCBB
dXhpbGlhcnlQcm9jZXNzOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiwgSVBDOjpNZXNzYWdlTmFtZSBtZXNzYWdlTmFtZSkKIHsKLSAgICBzZXRDcmFzaFJlcG9ydEFw
cGxpY2F0aW9uU3BlY2lmaWNJbmZvcm1hdGlvbigoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpW05TU3Ry
aW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJSZWNlaXZlZCBpbnZhbGlkIG1lc3NhZ2U6ICclczo6JXMn
IiwgbWVzc2FnZVJlY2VpdmVyTmFtZS50b1N0cmluZygpLmRhdGEoKSwgbWVzc2FnZU5hbWUudG9T
dHJpbmcoKS5kYXRhKCldKTsKKyAgICBzZXRDcmFzaFJlcG9ydEFwcGxpY2F0aW9uU3BlY2lmaWNJ
bmZvcm1hdGlvbigoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpW05TU3RyaW5nIHN0cmluZ1dpdGhGb3Jt
YXQ6QCJSZWNlaXZlZCBpbnZhbGlkIG1lc3NhZ2U6ICclcyciLCBkZXNjcmlwdGlvbihtZXNzYWdl
TmFtZSldKTsKICAgICBDUkFTSCgpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5jcHAJKHJldmlzaW9uIDI2MDc5MCkKKysr
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE3OCwyMiArMTc4LDIyIEBAIGJvb2wgQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5
OjpzZW5kTWVzc2FnZSgKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgQXV4aWxpYXJ5UHJv
Y2Vzc1Byb3h5OjphZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2Fn
ZVJlY2VpdmVyTmFtZSwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImIG1lc3NhZ2VSZWNlaXZlcikKK3Zv
aWQgQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjphZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpSZWNlaXZl
ck5hbWUgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImIG1lc3NhZ2VS
ZWNlaXZlcikKIHsKICAgICBtX21lc3NhZ2VSZWNlaXZlck1hcC5hZGRNZXNzYWdlUmVjZWl2ZXIo
bWVzc2FnZVJlY2VpdmVyTmFtZSwgbWVzc2FnZVJlY2VpdmVyKTsKIH0KIAotdm9pZCBBdXhpbGlh
cnlQcm9jZXNzUHJveHk6OmFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBt
ZXNzYWdlUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBJUEM6Ok1lc3NhZ2VS
ZWNlaXZlciYgbWVzc2FnZVJlY2VpdmVyKQordm9pZCBBdXhpbGlhcnlQcm9jZXNzUHJveHk6OmFk
ZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlJlY2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCB1
aW50NjRfdCBkZXN0aW5hdGlvbklELCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYgbWVzc2FnZVJlY2Vp
dmVyKQogewogICAgIG1fbWVzc2FnZVJlY2VpdmVyTWFwLmFkZE1lc3NhZ2VSZWNlaXZlcihtZXNz
YWdlUmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklELCBtZXNzYWdlUmVjZWl2ZXIpOwogfQogCi12
b2lkIEF1eGlsaWFyeVByb2Nlc3NQcm94eTo6cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6U3Ry
aW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQp
Cit2b2lkIEF1eGlsaWFyeVByb2Nlc3NQcm94eTo6cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6
UmVjZWl2ZXJOYW1lIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQp
CiB7CiAgICAgbV9tZXNzYWdlUmVjZWl2ZXJNYXAucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKG1lc3Nh
Z2VSZWNlaXZlck5hbWUsIGRlc3RpbmF0aW9uSUQpOwogfQogCi12b2lkIEF1eGlsaWFyeVByb2Nl
c3NQcm94eTo6cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3Nh
Z2VSZWNlaXZlck5hbWUpCit2b2lkIEF1eGlsaWFyeVByb2Nlc3NQcm94eTo6cmVtb3ZlTWVzc2Fn
ZVJlY2VpdmVyKElQQzo6UmVjZWl2ZXJOYW1lIG1lc3NhZ2VSZWNlaXZlck5hbWUpCiB7CiAgICAg
bV9tZXNzYWdlUmVjZWl2ZXJNYXAucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKG1lc3NhZ2VSZWNlaXZl
ck5hbWUpOwogfQpAQCAtMjc4LDkgKzI3OCw5IEBAIHZvaWQgQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5
Ojpjb25uZWN0aW9uV2kKIHsKIH0KIAotdm9pZCBBdXhpbGlhcnlQcm9jZXNzUHJveHk6OmxvZ0lu
dmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpTdHJpbmdSZWZl
cmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5h
bWUpCit2b2lkIEF1eGlsaWFyeVByb2Nlc3NQcm94eTo6bG9nSW52YWxpZE1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6Ok1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lKQogewot
ICAgIFJFTEVBU0VfTE9HX0ZBVUxUKElQQywgIlJlY2VpdmVkIGFuIGludmFsaWQgbWVzc2FnZSAn
JSIgUFVCTElDX0xPR19TVFJJTkcgIjo6JSIgUFVCTElDX0xPR19TVFJJTkcgIicgZnJvbSB0aGUg
JSIgUFVCTElDX0xPR19TVFJJTkcgIiBwcm9jZXNzLiIsIG1lc3NhZ2VSZWNlaXZlck5hbWUudG9T
dHJpbmcoKS5kYXRhKCksIG1lc3NhZ2VOYW1lLnRvU3RyaW5nKCkuZGF0YSgpLCBwcm9jZXNzTmFt
ZSgpLmNoYXJhY3RlcnMoKSk7CisgICAgUkVMRUFTRV9MT0dfRkFVTFQoSVBDLCAiUmVjZWl2ZWQg
YW4gaW52YWxpZCBtZXNzYWdlICclIiBQVUJMSUNfTE9HX1NUUklORyAiJyBmcm9tIHRoZSAlIiBQ
VUJMSUNfTE9HX1NUUklORyAiIHByb2Nlc3MuIiwgZGVzY3JpcHRpb24obWVzc2FnZU5hbWUpLCBw
cm9jZXNzTmFtZSgpLmNoYXJhY3RlcnMoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5
LmgJKHJldmlzaW9uIDI2MDc2NCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFy
eVByb2Nlc3NQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC03NSwxOSArNzUsMTkgQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gbV9jb25uZWN0aW9uID09ICZjb25uZWN0aW9uOwogICAgIH0KIAot
ICAgIHZvaWQgYWRkTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VS
ZWNlaXZlck5hbWUsIElQQzo6TWVzc2FnZVJlY2VpdmVyJik7Ci0gICAgdm9pZCBhZGRNZXNzYWdl
UmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgdWludDY0
X3QgZGVzdGluYXRpb25JRCwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImKTsKLSAgICB2b2lkIHJlbW92
ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1l
LCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKTsKLSAgICB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZl
cihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lKTsKKyAgICB2b2lkIGFk
ZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlJlY2VpdmVyTmFtZSwgSVBDOjpNZXNzYWdlUmVjZWl2ZXIm
KTsKKyAgICB2b2lkIGFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlJlY2VpdmVyTmFtZSwgdWludDY0
X3QgZGVzdGluYXRpb25JRCwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImKTsKKyAgICB2b2lkIHJlbW92
ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25J
RCk7CisgICAgdm9pZCByZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpSZWNlaXZlck5hbWUpOwog
ICAgIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgIHZvaWQgYWRkTWVzc2FnZVJlY2Vp
dmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIE9iamVjdElkZW50
aWZpZXI8VD4gZGVzdGluYXRpb25JRCwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImIHJlY2VpdmVyKQor
ICAgIHZvaWQgYWRkTWVzc2FnZVJlY2VpdmVyKElQQzo6UmVjZWl2ZXJOYW1lIG1lc3NhZ2VSZWNl
aXZlck5hbWUsIE9iamVjdElkZW50aWZpZXI8VD4gZGVzdGluYXRpb25JRCwgSVBDOjpNZXNzYWdl
UmVjZWl2ZXImIHJlY2VpdmVyKQogICAgIHsKICAgICAgICAgYWRkTWVzc2FnZVJlY2VpdmVyKG1l
c3NhZ2VSZWNlaXZlck5hbWUsIGRlc3RpbmF0aW9uSUQudG9VSW50NjQoKSwgcmVjZWl2ZXIpOwog
ICAgIH0KICAgICAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgICB2b2lkIHJlbW92ZU1l
c3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBP
YmplY3RJZGVudGlmaWVyPFQ+IGRlc3RpbmF0aW9uSUQpCisgICAgdm9pZCByZW1vdmVNZXNzYWdl
UmVjZWl2ZXIoSVBDOjpSZWNlaXZlck5hbWUgbWVzc2FnZVJlY2VpdmVyTmFtZSwgT2JqZWN0SWRl
bnRpZmllcjxUPiBkZXN0aW5hdGlvbklEKQogICAgIHsKICAgICAgICAgcmVtb3ZlTWVzc2FnZVJl
Y2VpdmVyKG1lc3NhZ2VSZWNlaXZlck5hbWUsIGRlc3RpbmF0aW9uSUQudG9VSW50NjQoKSk7CiAg
ICAgfQpAQCAtMTE5LDcgKzExOSw3IEBAIHByb3RlY3RlZDoKICAgICBib29sIGRpc3BhdGNoTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKICAgICBib29sIGRpc3BhdGNo
U3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVf
cHRyPElQQzo6RW5jb2Rlcj4mKTsKIAotICAgIHZvaWQgbG9nSW52YWxpZE1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBD
OjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUpOworICAgIHZvaWQgbG9nSW52YWxpZE1lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlTmFtZSk7CiAgICAgdmlydHVhbCBBU0NJ
SUxpdGVyYWwgcHJvY2Vzc05hbWUoKSBjb25zdCA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgZ2V0
TGF1bmNoT3B0aW9ucyhQcm9jZXNzTGF1bmNoZXI6OkxhdW5jaE9wdGlvbnMmKTsKQEAgLTE1MCw3
ICsxNTAsNyBAQCBib29sIEF1eGlsaWFyeVByb2Nlc3NQcm94eTo6c2VuZChUJiYgbWVzCiB7CiAg
ICAgQ09NUElMRV9BU1NFUlQoIVQ6OmlzU3luYywgQXN5bmNNZXNzYWdlRXhwZWN0ZWQpOwogCi0g
ICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZTxJUEM6OkVuY29kZXI+KFQ6OnJlY2VpdmVyTmFt
ZSgpLCBUOjpuYW1lKCksIGRlc3RpbmF0aW9uSUQpOworICAgIGF1dG8gZW5jb2RlciA9IG1ha2VV
bmlxdWU8SVBDOjpFbmNvZGVyPihUOjpuYW1lKCksIGRlc3RpbmF0aW9uSUQpOwogICAgIGVuY29k
ZXItPmVuY29kZShtZXNzYWdlLmFyZ3VtZW50cygpKTsKIAogICAgIHJldHVybiBzZW5kTWVzc2Fn
ZShXVEZNb3ZlKGVuY29kZXIpLCBzZW5kT3B0aW9ucyk7CkBAIC0xNzQsNyArMTc0LDcgQEAgdm9p
ZCBBdXhpbGlhcnlQcm9jZXNzUHJveHk6OnNlbmRXaXRoQXN5bgogewogICAgIENPTVBJTEVfQVNT
RVJUKCFUOjppc1N5bmMsIEFzeW5jTWVzc2FnZUV4cGVjdGVkKTsKIAotICAgIGF1dG8gZW5jb2Rl
ciA9IG1ha2VVbmlxdWU8SVBDOjpFbmNvZGVyPihUOjpyZWNlaXZlck5hbWUoKSwgVDo6bmFtZSgp
LCBkZXN0aW5hdGlvbklEKTsKKyAgICBhdXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlPElQQzo6RW5j
b2Rlcj4oVDo6bmFtZSgpLCBkZXN0aW5hdGlvbklEKTsKICAgICB1aW50NjRfdCBsaXN0ZW5lcklE
ID0gSVBDOjpuZXh0QXN5bmNSZXBseUhhbmRsZXJJRCgpOwogICAgIGVuY29kZXItPmVuY29kZShs
aXN0ZW5lcklEKTsKICAgICBlbmNvZGVyLT5lbmNvZGUobWVzc2FnZS5hcmd1bWVudHMoKSk7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHku
Y3BwCShyZXZpc2lvbiAyNjA3NjQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNp
b25hbFBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxOSw3ICs1MTksNyBAQCB2b2lk
IFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRSZWNlaXZlTWVzCiAgICAgfQogI2VuZGlmCiAKLSAg
ICBMT0coUHJvY2Vzc1N3YXBwaW5nLCAiVW5oYW5kbGVkIG1lc3NhZ2UgJXM6OiVzIGZyb20gcHJv
dmlzaW9uYWwgcHJvY2VzcyIsIGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpLnRvU3RyaW5n
KCkuZGF0YSgpLCBkZWNvZGVyLm1lc3NhZ2VOYW1lKCkudG9TdHJpbmcoKS5kYXRhKCkpOworICAg
IExPRyhQcm9jZXNzU3dhcHBpbmcsICJVbmhhbmRsZWQgbWVzc2FnZSAlcyBmcm9tIHByb3Zpc2lv
bmFsIHByb2Nlc3MiLCBkZXNjcmlwdGlvbihkZWNvZGVyLm1lc3NhZ2VOYW1lKCkpKTsKIH0KIAog
dm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBzdGQ6OnVuaXF1ZV9w
dHI8SVBDOjpFbmNvZGVyPiYgcmVwbHlFbmNvZGVyKQpJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwCShyZXZpc2lvbiAyNjA3NjQpCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC02MSwzMyArNjEsMzIgQEAgUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gU3VzcGVuZGVk
UGFnZVBybwogfQogCiAjaWYgIUxPR19ESVNBQkxFRAotc3RhdGljIGNvbnN0IEhhc2hTZXQ8SVBD
OjpTdHJpbmdSZWZlcmVuY2U+JiBtZXNzYWdlTmFtZXNUb0lnbm9yZVdoaWxlU3VzcGVuZGVkKCkK
K3N0YXRpYyBjb25zdCBIYXNoU2V0PHVpbnQxNl90PiYgbWVzc2FnZU5hbWVzVG9JZ25vcmVXaGls
ZVN1c3BlbmRlZCgpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8SVBDOjpT
dHJpbmdSZWZlcmVuY2U+PiBtZXNzYWdlTmFtZXM7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PEhhc2hTZXQ8dWludDE2X3Q+PiBtZXNzYWdlTmFtZXM7CiAgICAgc3RhdGljIHN0ZDo6b25jZV9m
bGFnIG9uY2VGbGFnOwogICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7Ci0gICAgICAg
IG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoIkJhY2tGb3J3YXJkQWRkSXRlbSIpOwotICAgICAgICBt
ZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJDbGVhckFsbEVkaXRDb21tYW5kcyIpOwotICAgICAgICBt
ZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJEaWRDaGFuZ2VDb250ZW50U2l6ZSIpOwotICAgICAgICBt
ZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJEaWRDaGFuZ2VNYWluRG9jdW1lbnQiKTsKLSAgICAgICAg
bWVzc2FnZU5hbWVzLmdldCgpLmFkZCgiRGlkQ2hhbmdlUHJvZ3Jlc3MiKTsKLSAgICAgICAgbWVz
c2FnZU5hbWVzLmdldCgpLmFkZCgiRGlkQ29tbWl0TG9hZEZvckZyYW1lIik7Ci0gICAgICAgIG1l
c3NhZ2VOYW1lcy5nZXQoKS5hZGQoIkRpZERlc3Ryb3lOYXZpZ2F0aW9uIik7Ci0gICAgICAgIG1l
c3NhZ2VOYW1lcy5nZXQoKS5hZGQoIkRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lIik7Ci0g
ICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoIkRpZEZpbmlzaFByb2dyZXNzIik7Ci0gICAg
ICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoIkRpZENvbXBsZXRlUGFnZVRyYW5zaXRpb24iKTsK
LSAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZCgiRGlkRmlyc3RMYXlvdXRGb3JGcmFtZSIp
OwotICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJEaWRGaXJzdFZpc3VhbGx5Tm9uRW1w
dHlMYXlvdXRGb3JGcmFtZSIpOwotICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJEaWRO
YXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YSIpOwotICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCku
YWRkKCJEaWRSZWFjaExheW91dE1pbGVzdG9uZSIpOwotICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0
KCkuYWRkKCJEaWRSZXN0b3JlU2Nyb2xsUG9zaXRpb24iKTsKLSAgICAgICAgbWVzc2FnZU5hbWVz
LmdldCgpLmFkZCgiRGlkU3RhcnRQcm9ncmVzcyIpOwotICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0
KCkuYWRkKCJEaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lIik7Ci0gICAgICAgIG1lc3Nh
Z2VOYW1lcy5nZXQoKS5hZGQoIkVkaXRvclN0YXRlQ2hhbmdlZCIpOwotICAgICAgICBtZXNzYWdl
TmFtZXMuZ2V0KCkuYWRkKCJQYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3JEaWRDaGFuZ2UiKTsK
LSAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZCgiU2V0UmVuZGVyVHJlZVNpemUiKTsKLSAg
ICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZCgiU2V0U3RhdHVzVGV4dCIpOwotICAgICAgICBt
ZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJTZXROZXR3b3JrUmVxdWVzdHNJblByb2dyZXNzIik7Cisg
ICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoc3RhdGljX2Nhc3Q8dWludDE2X3Q+KElQQzo6
TWVzc2FnZU5hbWU6OldlYlBhZ2VQcm94eV9CYWNrRm9yd2FyZEFkZEl0ZW0pKTsKKyAgICAgICAg
bWVzc2FnZU5hbWVzLmdldCgpLmFkZChzdGF0aWNfY2FzdDx1aW50MTZfdD4oSVBDOjpNZXNzYWdl
TmFtZTo6V2ViUGFnZVByb3h5X0NsZWFyQWxsRWRpdENvbW1hbmRzKSk7CisgICAgICAgIG1lc3Nh
Z2VOYW1lcy5nZXQoKS5hZGQoc3RhdGljX2Nhc3Q8dWludDE2X3Q+KElQQzo6TWVzc2FnZU5hbWU6
OldlYlBhZ2VQcm94eV9EaWRDaGFuZ2VDb250ZW50U2l6ZSkpOworICAgICAgICBtZXNzYWdlTmFt
ZXMuZ2V0KCkuYWRkKHN0YXRpY19jYXN0PHVpbnQxNl90PihJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQ
YWdlUHJveHlfRGlkQ2hhbmdlTWFpbkRvY3VtZW50KSk7CisgICAgICAgIG1lc3NhZ2VOYW1lcy5n
ZXQoKS5hZGQoc3RhdGljX2Nhc3Q8dWludDE2X3Q+KElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VQ
cm94eV9EaWRDaGFuZ2VQcm9ncmVzcykpOworICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRk
KHN0YXRpY19jYXN0PHVpbnQxNl90PihJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlUHJveHlfRGlk
Q29tbWl0TG9hZEZvckZyYW1lKSk7CisgICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoc3Rh
dGljX2Nhc3Q8dWludDE2X3Q+KElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VQcm94eV9EaWREZXN0
cm95TmF2aWdhdGlvbikpOworICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKHN0YXRpY19j
YXN0PHVpbnQxNl90PihJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlUHJveHlfRGlkRmluaXNoRG9j
dW1lbnRMb2FkRm9yRnJhbWUpKTsKKyAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZChzdGF0
aWNfY2FzdDx1aW50MTZfdD4oSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZVByb3h5X0RpZEZpbmlz
aFByb2dyZXNzKSk7CisgICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoc3RhdGljX2Nhc3Q8
dWludDE2X3Q+KElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VQcm94eV9EaWRGaXJzdExheW91dEZv
ckZyYW1lKSk7CisgICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoc3RhdGljX2Nhc3Q8dWlu
dDE2X3Q+KElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VQcm94eV9EaWRGaXJzdFZpc3VhbGx5Tm9u
RW1wdHlMYXlvdXRGb3JGcmFtZSkpOworICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKHN0
YXRpY19jYXN0PHVpbnQxNl90PihJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlUHJveHlfRGlkTmF2
aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGEpKTsKKyAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFk
ZChzdGF0aWNfY2FzdDx1aW50MTZfdD4oSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZVByb3h5X0Rp
ZFJlYWNoTGF5b3V0TWlsZXN0b25lKSk7CisgICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQo
c3RhdGljX2Nhc3Q8dWludDE2X3Q+KElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VQcm94eV9EaWRS
ZXN0b3JlU2Nyb2xsUG9zaXRpb24pKTsKKyAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZChz
dGF0aWNfY2FzdDx1aW50MTZfdD4oSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZVByb3h5X0RpZFN0
YXJ0UHJvZ3Jlc3MpKTsKKyAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZChzdGF0aWNfY2Fz
dDx1aW50MTZfdD4oSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZVByb3h5X0RpZFN0YXJ0UHJvdmlz
aW9uYWxMb2FkRm9yRnJhbWUpKTsKKyAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZChzdGF0
aWNfY2FzdDx1aW50MTZfdD4oSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZVByb3h5X0VkaXRvclN0
YXRlQ2hhbmdlZCkpOworICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKHN0YXRpY19jYXN0
PHVpbnQxNl90PihJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlUHJveHlfUGFnZUV4dGVuZGVkQmFj
a2dyb3VuZENvbG9yRGlkQ2hhbmdlKSk7CisgICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQo
c3RhdGljX2Nhc3Q8dWludDE2X3Q+KElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VQcm94eV9TZXRS
ZW5kZXJUcmVlU2l6ZSkpOworICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKHN0YXRpY19j
YXN0PHVpbnQxNl90PihJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlUHJveHlfU2V0U3RhdHVzVGV4
dCkpOworICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKHN0YXRpY19jYXN0PHVpbnQxNl90
PihJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlUHJveHlfU2V0TmV0d29ya1JlcXVlc3RzSW5Qcm9n
cmVzcykpOwogICAgIH0pOwogCiAgICAgcmV0dXJuIG1lc3NhZ2VOYW1lczsKQEAgLTI1NCw4ICsy
NTMsOCBAQCB2b2lkIFN1c3BlbmRlZFBhZ2VQcm94eTo6ZGlkUmVjZWl2ZU1lc3NhCiAgICAgfQog
CiAjaWYgIUxPR19ESVNBQkxFRAotICAgIGlmICghbWVzc2FnZU5hbWVzVG9JZ25vcmVXaGlsZVN1
c3BlbmRlZCgpLmNvbnRhaW5zKGRlY29kZXIubWVzc2FnZU5hbWUoKSkpCi0gICAgICAgIExPRyhQ
cm9jZXNzU3dhcHBpbmcsICJTdXNwZW5kZWRQYWdlUHJveHkgcmVjZWl2ZWQgdW5leHBlY3RlZCBX
ZWJQYWdlUHJveHkgbWVzc2FnZSAnJXMnIiwgZGVjb2Rlci5tZXNzYWdlTmFtZSgpLnRvU3RyaW5n
KCkuZGF0YSgpKTsKKyAgICBpZiAoIW1lc3NhZ2VOYW1lc1RvSWdub3JlV2hpbGVTdXNwZW5kZWQo
KS5jb250YWlucyhzdGF0aWNfY2FzdDx1aW50MTZfdD4oZGVjb2Rlci5tZXNzYWdlTmFtZSgpKSkp
CisgICAgICAgIExPRyhQcm9jZXNzU3dhcHBpbmcsICJTdXNwZW5kZWRQYWdlUHJveHkgcmVjZWl2
ZWQgdW5leHBlY3RlZCBXZWJQYWdlUHJveHkgbWVzc2FnZSAnJXMnIiwgZGVzY3JpcHRpb24oZGVj
b2Rlci5tZXNzYWdlTmFtZSgpKSk7CiAjZW5kaWYKIH0KIApJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJldmlzaW9uIDI2MDc2NCkKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMjc3LDggKzIyNzcs
NiBAQCBwcml2YXRlOgogICAgIGNvbnN0IFN0cmluZyYgcGF5bWVudENvb3JkaW5hdG9yQm91bmRJ
bnRlcmZhY2VJZGVudGlmaWVyKGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JikgZmlu
YWw7CiAgICAgY29uc3QgU3RyaW5nJiBwYXltZW50Q29vcmRpbmF0b3JTb3VyY2VBcHBsaWNhdGlv
bkJ1bmRsZUlkZW50aWZpZXIoY29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmKSBmaW5h
bDsKICAgICBjb25zdCBTdHJpbmcmIHBheW1lbnRDb29yZGluYXRvclNvdXJjZUFwcGxpY2F0aW9u
U2Vjb25kYXJ5SWRlbnRpZmllcihjb25zdCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYpIGZp
bmFsOwotICAgIHZvaWQgcGF5bWVudENvb3JkaW5hdG9yQWRkTWVzc2FnZVJlY2VpdmVyKFdlYlBh
eW1lbnRDb29yZGluYXRvclByb3h5JiwgY29uc3QgSVBDOjpTdHJpbmdSZWZlcmVuY2UmLCBJUEM6
Ok1lc3NhZ2VSZWNlaXZlciYpIGZpbmFsOwotICAgIHZvaWQgcGF5bWVudENvb3JkaW5hdG9yUmVt
b3ZlTWVzc2FnZVJlY2VpdmVyKFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JiwgY29uc3QgSVBD
OjpTdHJpbmdSZWZlcmVuY2UmKSBmaW5hbDsKICNlbmRpZgogI2lmIEVOQUJMRShBUFBMRV9QQVkp
ICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgVUlWaWV3Q29udHJvbGxlciAqcGF5bWVudENv
b3JkaW5hdG9yUHJlc2VudGluZ1ZpZXdDb250cm9sbGVyKGNvbnN0IFdlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5JikgZmluYWw7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuY3BwCShyZXZpc2lvbiAyNjA3NjQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg1MiwxNyArODUyLDEyIEBA
IHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldEludmFsaWRNZXNzYWdlQ2EKICAgICBzX2ludmFsaWRN
ZXNzYWdlQ2FsbGJhY2sgPSBpbnZhbGlkTWVzc2FnZUNhbGxiYWNrOwogfQogCi12b2lkIFdlYlBy
b2Nlc3NQb29sOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoY29uc3QgSVBDOjpTdHJpbmdSZWZl
cmVuY2UmIG1lc3NhZ2VSZWNlaXZlck5hbWUsIGNvbnN0IElQQzo6U3RyaW5nUmVmZXJlbmNlJiBt
ZXNzYWdlTmFtZSkKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2Fn
ZShJUEM6Ok1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lKQogewogICAgIGlmICghc19pbnZhbGlkTWVz
c2FnZUNhbGxiYWNrKQogICAgICAgICByZXR1cm47CiAKLSAgICBTdHJpbmdCdWlsZGVyIG1lc3Nh
Z2VOYW1lU3RyaW5nQnVpbGRlcjsKLSAgICBtZXNzYWdlTmFtZVN0cmluZ0J1aWxkZXIuYXBwZW5k
Q2hhcmFjdGVycyhtZXNzYWdlUmVjZWl2ZXJOYW1lLmRhdGEoKSwgbWVzc2FnZVJlY2VpdmVyTmFt
ZS5zaXplKCkpOwotICAgIG1lc3NhZ2VOYW1lU3RyaW5nQnVpbGRlci5hcHBlbmQoJy4nKTsKLSAg
ICBtZXNzYWdlTmFtZVN0cmluZ0J1aWxkZXIuYXBwZW5kQ2hhcmFjdGVycyhtZXNzYWdlTmFtZS5k
YXRhKCksIG1lc3NhZ2VOYW1lLnNpemUoKSk7Ci0KLSAgICBzX2ludmFsaWRNZXNzYWdlQ2FsbGJh
Y2sodG9BUEkoQVBJOjpTdHJpbmc6OmNyZWF0ZShtZXNzYWdlTmFtZVN0cmluZ0J1aWxkZXIudG9T
dHJpbmcoKSkucHRyKCkpKTsKKyAgICBzX2ludmFsaWRNZXNzYWdlQ2FsbGJhY2sodG9BUEkoQVBJ
OjpTdHJpbmc6OmNyZWF0ZShkZXNjcmlwdGlvbihtZXNzYWdlTmFtZSkpLnB0cigpKSk7CiB9CiAK
IHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlc29sdmVQYXRoc0ZvclNhbmRib3hFeHRlbnNpb25zKCkK
QEAgLTE2NzMsMjIgKzE2NjgsMjIgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6c3ludGhlc2l6ZUFw
cElzQmFjawogICAgIGVuc3VyZU5ldHdvcmtQcm9jZXNzKCkuc3ludGhlc2l6ZUFwcElzQmFja2dy
b3VuZChiYWNrZ3JvdW5kKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzUG9vbDo6YWRkTWVzc2FnZVJl
Y2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIElQQzo6TWVz
c2FnZVJlY2VpdmVyJiBtZXNzYWdlUmVjZWl2ZXIpCit2b2lkIFdlYlByb2Nlc3NQb29sOjphZGRN
ZXNzYWdlUmVjZWl2ZXIoSVBDOjpSZWNlaXZlck5hbWUgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBD
OjpNZXNzYWdlUmVjZWl2ZXImIG1lc3NhZ2VSZWNlaXZlcikKIHsKICAgICBtX21lc3NhZ2VSZWNl
aXZlck1hcC5hZGRNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSwgbWVzc2FnZVJl
Y2VpdmVyKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzUG9vbDo6YWRkTWVzc2FnZVJlY2VpdmVyKElQ
Qzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0
aW9uSUQsIElQQzo6TWVzc2FnZVJlY2VpdmVyJiBtZXNzYWdlUmVjZWl2ZXIpCit2b2lkIFdlYlBy
b2Nlc3NQb29sOjphZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpSZWNlaXZlck5hbWUgbWVzc2FnZVJl
Y2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgSVBDOjpNZXNzYWdlUmVjZWl2ZXIm
IG1lc3NhZ2VSZWNlaXZlcikKIHsKICAgICBtX21lc3NhZ2VSZWNlaXZlck1hcC5hZGRNZXNzYWdl
UmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRCwgbWVzc2FnZVJlY2Vp
dmVyKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQ
Qzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUpCit2b2lkIFdlYlByb2Nlc3NQ
b29sOjpyZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpSZWNlaXZlck5hbWUgbWVzc2FnZVJlY2Vp
dmVyTmFtZSkKIHsKICAgICBtX21lc3NhZ2VSZWNlaXZlck1hcC5yZW1vdmVNZXNzYWdlUmVjZWl2
ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlbW92
ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1l
LCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKQordm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVtb3ZlTWVz
c2FnZVJlY2VpdmVyKElQQzo6UmVjZWl2ZXJOYW1lIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2
NF90IGRlc3RpbmF0aW9uSUQpCiB7CiAgICAgbV9tZXNzYWdlUmVjZWl2ZXJNYXAucmVtb3ZlTWVz
c2FnZVJlY2VpdmVyKG1lc3NhZ2VSZWNlaXZlck5hbWUsIGRlc3RpbmF0aW9uSUQpOwogfQpJbmRl
eDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCShyZXZpc2lvbiAyNjA3
NjQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xNDgsMjEgKzE0OCwyMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fc3VwcGxlbWVu
dHMuYWRkKFQ6OnN1cHBsZW1lbnROYW1lKCksIFQ6OmNyZWF0ZSh0aGlzKSk7CiAgICAgfQogCi0g
ICAgdm9pZCBhZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJl
Y2VpdmVyTmFtZSwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImKTsKLSAgICB2b2lkIGFkZE1lc3NhZ2VS
ZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCB1aW50NjRf
dCBkZXN0aW5hdGlvbklELCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYpOwotICAgIHZvaWQgcmVtb3Zl
TWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUp
OwotICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1l
c3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpOworICAgIHZvaWQgYWRk
TWVzc2FnZVJlY2VpdmVyKElQQzo6UmVjZWl2ZXJOYW1lLCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYp
OworICAgIHZvaWQgYWRkTWVzc2FnZVJlY2VpdmVyKElQQzo6UmVjZWl2ZXJOYW1lLCB1aW50NjRf
dCBkZXN0aW5hdGlvbklELCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYpOworICAgIHZvaWQgcmVtb3Zl
TWVzc2FnZVJlY2VpdmVyKElQQzo6UmVjZWl2ZXJOYW1lKTsKKyAgICB2b2lkIHJlbW92ZU1lc3Nh
Z2VSZWNlaXZlcihJUEM6OlJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCk7CiAK
ICAgICBXZWJCYWNrRm9yd2FyZENhY2hlJiBiYWNrRm9yd2FyZENhY2hlKCkgeyByZXR1cm4gbV9i
YWNrRm9yd2FyZENhY2hlLmdldCgpOyB9CiAgICAgCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
Ci0gICAgdm9pZCBhZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2Fn
ZVJlY2VpdmVyTmFtZSwgT2JqZWN0SWRlbnRpZmllcjxUPiBkZXN0aW5hdGlvbklELCBJUEM6Ok1l
c3NhZ2VSZWNlaXZlciYgcmVjZWl2ZXIpCisgICAgdm9pZCBhZGRNZXNzYWdlUmVjZWl2ZXIoSVBD
OjpSZWNlaXZlck5hbWUgbWVzc2FnZVJlY2VpdmVyTmFtZSwgT2JqZWN0SWRlbnRpZmllcjxUPiBk
ZXN0aW5hdGlvbklELCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYgcmVjZWl2ZXIpCiAgICAgewogICAg
ICAgICBhZGRNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25J
RC50b1VJbnQ2NCgpLCByZWNlaXZlcik7CiAgICAgfQogICAgIAogICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPgotICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJl
bmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIE9iamVjdElkZW50aWZpZXI8VD4gZGVzdGluYXRpb25J
RCkKKyAgICB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlJlY2VpdmVyTmFtZSBtZXNz
YWdlUmVjZWl2ZXJOYW1lLCBPYmplY3RJZGVudGlmaWVyPFQ+IGRlc3RpbmF0aW9uSUQpCiAgICAg
ewogICAgICAgICByZW1vdmVNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSwgZGVz
dGluYXRpb25JRC50b1VJbnQ2NCgpKTsKICAgICB9CkBAIC00MTcsNyArNDE3LDcgQEAgcHVibGlj
OgogI2VuZGlmCiAKICAgICBzdGF0aWMgdm9pZCBzZXRJbnZhbGlkTWVzc2FnZUNhbGxiYWNrKHZv
aWQgKCopKFdLU3RyaW5nUmVmKSk7Ci0gICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRN
ZXNzYWdlKGNvbnN0IElQQzo6U3RyaW5nUmVmZXJlbmNlJiBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBj
b25zdCBJUEM6OlN0cmluZ1JlZmVyZW5jZSYgbWVzc2FnZU5hbWUpOworICAgIHN0YXRpYyB2b2lk
IGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6Ok1lc3NhZ2VOYW1lKTsKIAogICAgIGJvb2wg
aXNVUkxLbm93bkhTVFNIb3N0KGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKSBjb25zdDsKICAgICB2
b2lkIHJlc2V0SFNUU0hvc3RzKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQcm94eS5jcHAJKHJldmlzaW9uIDI2MDc2NCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2MSw4ICsxNjEs
OCBAQCBjbGFzcyBVSVByb3h5Rm9yQ2FwdHVyZSBmaW5hbCA6IHB1YmxpYyBVCiBwdWJsaWM6CiAg
ICAgZXhwbGljaXQgVUlQcm94eUZvckNhcHR1cmUoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzKSA6
IG1fcHJvY2Vzcyhwcm9jZXNzKSB7IH0KIHByaXZhdGU6Ci0gICAgdm9pZCBhZGRNZXNzYWdlUmVj
ZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpNZXNz
YWdlUmVjZWl2ZXImIHJlY2VpdmVyKSBmaW5hbCB7IG1fcHJvY2Vzcy5hZGRNZXNzYWdlUmVjZWl2
ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSwgcmVjZWl2ZXIpOyB9Ci0gICAgdm9pZCByZW1vdmVNZXNz
YWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSkgZmlu
YWwgeyBtX3Byb2Nlc3MucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKG1lc3NhZ2VSZWNlaXZlck5hbWUp
OyB9CisgICAgdm9pZCBhZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpSZWNlaXZlck5hbWUgbWVzc2Fn
ZVJlY2VpdmVyTmFtZSwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImIHJlY2VpdmVyKSBmaW5hbCB7IG1f
cHJvY2Vzcy5hZGRNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSwgcmVjZWl2ZXIp
OyB9CisgICAgdm9pZCByZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpSZWNlaXZlck5hbWUgbWVz
c2FnZVJlY2VpdmVyTmFtZSkgZmluYWwgeyBtX3Byb2Nlc3MucmVtb3ZlTWVzc2FnZVJlY2VpdmVy
KG1lc3NhZ2VSZWNlaXZlck5hbWUpOyB9CiAgICAgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9u
KCkgZmluYWwgeyByZXR1cm4gKm1fcHJvY2Vzcy5jb25uZWN0aW9uKCk7IH0KICAgICBMb2dnZXIm
IGxvZ2dlcigpIGZpbmFsCiAgICAgewpAQCAtMzUyLDcgKzM1Miw3IEBAIHZvaWQgV2ViUHJvY2Vz
c1Byb3h5OjpwbGF0Zm9ybUdldExhdW5jaE8KIGJvb2wgV2ViUHJvY2Vzc1Byb3h5OjpzaG91bGRT
ZW5kUGVuZGluZ01lc3NhZ2UoY29uc3QgUGVuZGluZ01lc3NhZ2UmIG1lc3NhZ2UpCiB7CiAjaWYg
SEFWRShTQU5EQk9YX0lTU1VFX1JFQURfRVhURU5TSU9OX1RPX1BST0NFU1NfQllfQVVESVRfVE9L
RU4pCi0gICAgaWYgKG1lc3NhZ2UuZW5jb2Rlci0+bWVzc2FnZU5hbWUoKSA9PSAiTG9hZFJlcXVl
c3RXYWl0aW5nRm9yUHJvY2Vzc0xhdW5jaCIpIHsKKyAgICBpZiAobWVzc2FnZS5lbmNvZGVyLT5t
ZXNzYWdlTmFtZSgpID09IElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfTG9hZFJlcXVlc3RXYWl0
aW5nRm9yUHJvY2Vzc0xhdW5jaCkgewogICAgICAgICBhdXRvIGJ1ZmZlciA9IG1lc3NhZ2UuZW5j
b2Rlci0+YnVmZmVyKCk7CiAgICAgICAgIGF1dG8gYnVmZmVyU2l6ZSA9IG1lc3NhZ2UuZW5jb2Rl
ci0+YnVmZmVyU2l6ZSgpOwogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpEZWNvZGVyPiBk
ZWNvZGVyID0gbWFrZVVuaXF1ZTxJUEM6OkRlY29kZXI+KGJ1ZmZlciwgYnVmZmVyU2l6ZSwgbnVs
bHB0ciwgVmVjdG9yPElQQzo6QXR0YWNobWVudD4geyB9KTsKQEAgLTg0MCwxMSArODQwLDExIEBA
IHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzRGlkVGVybWluYXQKICAgICB9CiB9CiAKLXZv
aWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiBjb25uZWN0aW9uLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1l
LCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZSkKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5
OjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJ
UEM6Ok1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lKQogewotICAgIGxvZ0ludmFsaWRNZXNzYWdlKGNv
bm5lY3Rpb24sIG1lc3NhZ2VSZWNlaXZlck5hbWUsIG1lc3NhZ2VOYW1lKTsKKyAgICBsb2dJbnZh
bGlkTWVzc2FnZShjb25uZWN0aW9uLCBtZXNzYWdlTmFtZSk7CiAKLSAgICBXZWJQcm9jZXNzUG9v
bDo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKG1lc3NhZ2VSZWNlaXZlck5hbWUsIG1lc3NhZ2VO
YW1lKTsKKyAgICBXZWJQcm9jZXNzUG9vbDo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKG1lc3Nh
Z2VOYW1lKTsKIAogICAgIC8vIFRlcm1pbmF0ZSB0aGUgV2ViQ29udGVudCBwcm9jZXNzLgogICAg
IHRlcm1pbmF0ZSgpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1By
b3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1By
b3h5LmgJKHJldmlzaW9uIDI2MDc2NCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NTUsNyArNDU1LDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2Rl
ciYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mKSBvdmVycmlkZTsKLSAg
ICB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OlN0
cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBt
ZXNzYWdlTmFtZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlTmFtZSkgb3ZlcnJpZGU7CiAKICAgICAvLyBS
ZXNwb25zaXZlbmVzc1RpbWVyOjpDbGllbnQKICAgICB2b2lkIGRpZEJlY29tZVVucmVzcG9uc2l2
ZSgpIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVXNlck1l
ZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuaAkocmV2aXNpb24gMjYw
NzY0KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1h
bmFnZXJQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw4ICs1MSw4IEBAIHB1YmxpYzoKICAg
ICBjbGFzcyBDb25uZWN0aW9uUHJveHkgewogICAgIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB+
Q29ubmVjdGlvblByb3h5KCkgPSBkZWZhdWx0OwotICAgICAgICB2aXJ0dWFsIHZvaWQgYWRkTWVz
c2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlLCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYp
ID0gMDsKLSAgICAgICAgdmlydHVhbCB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0
cmluZ1JlZmVyZW5jZSkgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgYWRkTWVzc2FnZVJlY2Vp
dmVyKElQQzo6UmVjZWl2ZXJOYW1lLCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYpID0gMDsKKyAgICAg
ICAgdmlydHVhbCB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlJlY2VpdmVyTmFtZSkg
PSAwOwogICAgICAgICB2aXJ0dWFsIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbigpID0gMDsK
ICAgICAgICAgdmlydHVhbCBib29sIHdpbGxTdGFydENhcHR1cmUoV2ViQ29yZTo6Q2FwdHVyZURl
dmljZTo6RGV2aWNlVHlwZSkgY29uc3QgPSAwOwogICAgICAgICB2aXJ0dWFsIExvZ2dlciYgbG9n
Z2VyKCkgPSAwOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVBy
b3h5Q29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViUGFnZVByb3h5Q29jb2EubW0JKHJldmlzaW9uIDI2MDc2NCkKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0y
OTAsMTYgKzI5MCw2IEBAIGNvbnN0IFN0cmluZyYgV2ViUGFnZVByb3h5OjpwYXltZW50Q29vcmQK
ICAgICByZXR1cm4gd2Vic2l0ZURhdGFTdG9yZSgpLmNvbmZpZ3VyYXRpb24oKS5zb3VyY2VBcHBs
aWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIoKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnBh
eW1lbnRDb29yZGluYXRvckFkZE1lc3NhZ2VSZWNlaXZlcihXZWJQYXltZW50Q29vcmRpbmF0b3JQ
cm94eSYsIGNvbnN0IElQQzo6U3RyaW5nUmVmZXJlbmNlJiBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBJ
UEM6Ok1lc3NhZ2VSZWNlaXZlciYgbWVzc2FnZVJlY2VpdmVyKQotewotICAgIHByb2Nlc3MoKS5h
ZGRNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSwgbV93ZWJQYWdlSUQsIG1lc3Nh
Z2VSZWNlaXZlcik7Ci19Ci0KLXZvaWQgV2ViUGFnZVByb3h5OjpwYXltZW50Q29vcmRpbmF0b3JS
ZW1vdmVNZXNzYWdlUmVjZWl2ZXIoV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmLCBjb25zdCBJ
UEM6OlN0cmluZ1JlZmVyZW5jZSYgbWVzc2FnZVJlY2VpdmVyTmFtZSkKLXsKLSAgICBwcm9jZXNz
KCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKG1lc3NhZ2VSZWNlaXZlck5hbWUsIG1fd2ViUGFnZUlE
KTsKLX0KLQogI2VuZGlmCiAKICNpZiBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkuY3BwCShyZXZp
c2lvbiAyNjA3NjQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1By
b3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjExLDExICsyMTEsMTEgQEAgdm9pZCBHUFVQcm9j
ZXNzUHJveHk6OmRpZENsb3NlKElQQzo6Q29ubgogICAgIGdwdVByb2Nlc3NDcmFzaGVkKCk7CiB9
CiAKLXZvaWQgR1BVUHJvY2Vzc1Byb3h5OjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2
ZXJOYW1lLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZSkKK3ZvaWQgR1BVUHJvY2Vz
c1Byb3h5OjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0
aW9uLCBJUEM6Ok1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lKQogewotICAgIGxvZ0ludmFsaWRNZXNz
YWdlKGNvbm5lY3Rpb24sIG1lc3NhZ2VSZWNlaXZlck5hbWUsIG1lc3NhZ2VOYW1lKTsKKyAgICBs
b2dJbnZhbGlkTWVzc2FnZShjb25uZWN0aW9uLCBtZXNzYWdlTmFtZSk7CiAKLSAgICBXZWJQcm9j
ZXNzUG9vbDo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKG1lc3NhZ2VSZWNlaXZlck5hbWUsIG1l
c3NhZ2VOYW1lKTsKKyAgICBXZWJQcm9jZXNzUG9vbDo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdl
KG1lc3NhZ2VOYW1lKTsKIAogICAgIC8vIFRlcm1pbmF0ZSB0aGUgR1BVIHByb2Nlc3MuCiAgICAg
dGVybWluYXRlKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vz
c1Byb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR1BVL0dQVVBy
b2Nlc3NQcm94eS5oCShyZXZpc2lvbiAyNjA3NjQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMCw3ICsxMDAsNyBA
QCBwcml2YXRlOgogICAgIC8vIElQQzo6Q29ubmVjdGlvbjo6Q2xpZW50CiAgICAgdm9pZCBkaWRS
ZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsK
ICAgICB2b2lkIGRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQg
ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6U3RyaW5nUmVm
ZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VO
YW1lKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VOYW1lKSBvdmVycmlkZTsKIAogI2lmIEhBVkUoVklTSUJJ
TElUWV9QUk9QQUdBVElPTl9WSUVXKQogICAgIHZvaWQgZGlkQ3JlYXRlQ29udGV4dEZvclZpc2li
aWxpdHlQcm9wYWdhdGlvbihMYXllckhvc3RpbmdDb250ZXh0SUQpOwpJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
Y3BwCShyZXZpc2lvbiAyNjA3NjQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzcsOSArMjc3LDkg
QEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRDbG9zZShJUEM6OgogICAgIG5ldHdvcmtQ
cm9jZXNzQ3Jhc2hlZCgpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZFJlY2Vp
dmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6U3RyaW5n
UmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3Nh
Z2VOYW1lKQordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRSZWNlaXZlSW52YWxpZE1lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6Ok1lc3NhZ2VOYW1lIG1lc3NhZ2VO
YW1lKQogewotICAgIGxvZ0ludmFsaWRNZXNzYWdlKGNvbm5lY3Rpb24sIG1lc3NhZ2VSZWNlaXZl
ck5hbWUsIG1lc3NhZ2VOYW1lKTsKKyAgICBsb2dJbnZhbGlkTWVzc2FnZShjb25uZWN0aW9uLCBt
ZXNzYWdlTmFtZSk7CiAgICAgdGVybWluYXRlKCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCShyZXZp
c2lvbiAyNjA3NjQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMjQ1LDcgKzI0NSw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29k
ZXImKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIG92
ZXJyaWRlOwogICAgIHZvaWQgZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJikgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpT
dHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpTdHJpbmdSZWZlcmVuY2Ug
bWVzc2FnZU5hbWUpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZU5hbWUpIG92ZXJyaWRlOwogICAgIHZvaWQg
ZGlkUmVjZWl2ZVN5bmNOZXR3b3JrUHJvY2Vzc1Byb3h5TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
LCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpOwogCiAgICAg
Ly8gTWVzc2FnZSBoYW5kbGVycwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5Qcm9jZXNzUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmNwcAkocmV2aXNpb24gMjYwNzY0KQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yMTQsOSArMjE0LDkgQEAgdm9pZCBQbHVnaW5Qcm9jZXNzUHJv
eHk6OmRpZENsb3NlKElQQzo6QwogICAgIHBsdWdpblByb2Nlc3NDcmFzaGVkT3JGYWlsZWRUb0xh
dW5jaCgpOwogfQogCi12b2lkIFBsdWdpblByb2Nlc3NQcm94eTo6ZGlkUmVjZWl2ZUludmFsaWRN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpTdHJpbmdSZWZlcmVuY2Ug
bWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUpCit2
b2lkIFBsdWdpblByb2Nlc3NQcm94eTo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpNZXNzYWdlTmFtZSBtZXNzYWdlTmFtZSkKIHsKLSAg
ICBsb2dJbnZhbGlkTWVzc2FnZShjb25uZWN0aW9uLCBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBtZXNz
YWdlTmFtZSk7CisgICAgbG9nSW52YWxpZE1lc3NhZ2UoY29ubmVjdGlvbiwgbWVzc2FnZU5hbWUp
OwogICAgIHRlcm1pbmF0ZSgpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmgJKHJldmlzaW9uIDI2MDc2NCkK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEwNCw3ICsxMDQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlk
UmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6
dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRpZENsb3Nl
KElQQzo6Q29ubmVjdGlvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNl
aXZlck5hbWUsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lKSBvdmVycmlkZTsKKyAg
ICB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1l
c3NhZ2VOYW1lKSBvdmVycmlkZTsKIAogICAgIC8vIFByb2Nlc3NMYXVuY2hlcjo6Q2xpZW50CiAg
ICAgdm9pZCBkaWRGaW5pc2hMYXVuY2hpbmcoUHJvY2Vzc0xhdW5jaGVyKiwgSVBDOjpDb25uZWN0
aW9uOjpJZGVudGlmaWVyKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDI2MDc2NCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzkzLDcgKzc5Myw3IEBAIHZv
aWQgV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjoKICAgICB9CiAjZW5kaWYKIAot
ICAgIExPR19FUlJPUigiVW5oYW5kbGVkIHdlYiBwcm9jZXNzIG1lc3NhZ2UgJyVzOjolcycgKGRl
c3RpbmF0aW9uOiAlIiBQUkl1NjQgIiBwaWQ6ICVkKSIsIGRlY29kZXIubWVzc2FnZVJlY2VpdmVy
TmFtZSgpLnRvU3RyaW5nKCkuZGF0YSgpLCBkZWNvZGVyLm1lc3NhZ2VOYW1lKCkudG9TdHJpbmco
KS5kYXRhKCksIGRlY29kZXIuZGVzdGluYXRpb25JRCgpLCBzdGF0aWNfY2FzdDxpbnQ+KGdldEN1
cnJlbnRQcm9jZXNzSUQoKSkpOworICAgIExPR19FUlJPUigiVW5oYW5kbGVkIHdlYiBwcm9jZXNz
IG1lc3NhZ2UgJyVzJyAoZGVzdGluYXRpb246ICUiIFBSSXU2NCAiIHBpZDogJWQpIiwgZGVzY3Jp
cHRpb24oZGVjb2Rlci5tZXNzYWdlTmFtZSgpKSwgZGVjb2Rlci5kZXN0aW5hdGlvbklEKCksIHN0
YXRpY19jYXN0PGludD4oZ2V0Q3VycmVudFByb2Nlc3NJRCgpKSk7CiB9CiAKIFdlYkZyYW1lKiBX
ZWJQcm9jZXNzOjp3ZWJGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCkgY29uc3QKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5l
Y3Rpb24uY3BwCShyZXZpc2lvbiAyNjA3NjQpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzMsNyArNzMs
NyBAQCB2b2lkIEdQVVByb2Nlc3NDb25uZWN0aW9uOjpkaWRDbG9zZShJUEM6CiB7CiB9CiAKLXZv
aWQgR1BVUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSwgSVBDOjpTdHJpbmdSZWZlcmVuY2UpCit2
b2lkIEdQVVByb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlTmFtZSkKIHsKIH0KIApJbmRleDogU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaAkocmV2aXNp
b24gMjYwNzY0KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29u
bmVjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC04MCw3ICs4MCw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJl
Y2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwogICAg
IHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2Rl
ciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JikgZmluYWw7Ci0gICAgdm9pZCBkaWRS
ZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpTdHJpbmdSZWZlcmVu
Y2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUp
IG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYsIElQQzo6TWVzc2FnZU5hbWUpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBkaXNwYXRjaE1l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CiAgICAgYm9vbCBkaXNwYXRj
aFN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVl
X3B0cjxJUEM6OkVuY29kZXI+Jik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5z
cGVjdG9yL1dlYkluc3BlY3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yLmgJKHJldmlzaW9uIDI2MDc2NCkKKysrIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogCiAgICAgLy8gSVBDOjpDb25uZWN0aW9uOjpD
bGllbnQKICAgICB2b2lkIGRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYpIG92ZXJyaWRlIHsgY2xv
c2UoKTsgfQotICAgIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYsIElQQzo6U3RyaW5nUmVmZXJlbmNlLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSkgb3ZlcnJpZGUg
eyBjbG9zZSgpOyB9CisgICAgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiwgSVBDOjpNZXNzYWdlTmFtZSkgb3ZlcnJpZGUgeyBjbG9zZSgpOyB9CiAKICAgICB2
b2lkIHNob3coKTsKICAgICB2b2lkIGNsb3NlKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSS5oCShyZXZpc2lvbiAyNjA3
NjQpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJ
LmgJKHdvcmtpbmcgY29weSkKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogCiAgICAgLy8gSVBD
OjpDb25uZWN0aW9uOjpDbGllbnQKICAgICB2b2lkIGRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYp
IG92ZXJyaWRlIHsgLyogRG8gbm90aGluZywgdGhlIGluc3BlY3RlZCBwYWdlIHByb2Nlc3MgbWF5
IGhhdmUgY3Jhc2hlZCBhbmQgbWF5IGJlIGdldHRpbmcgcmVwbGFjZWQuICovIH0KLSAgICB2b2lk
IGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OlN0cmluZ1Jl
ZmVyZW5jZSwgSVBDOjpTdHJpbmdSZWZlcmVuY2UpIG92ZXJyaWRlIHsgY2xvc2VXaW5kb3coKTsg
fQorICAgIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQ
Qzo6TWVzc2FnZU5hbWUpIG92ZXJyaWRlIHsgY2xvc2VXaW5kb3coKTsgfQogCiAgICAgLy8gQ2Fs
bGVkIGJ5IFdlYkluc3BlY3RvclVJIG1lc3NhZ2VzCiAgICAgdm9pZCBlc3RhYmxpc2hDb25uZWN0
aW9uKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgaW5zcGVjdGVkUGFnZUlkZW50aWZpZXIsIGNvbnN0
IERlYnVnZ2FibGVJbmZvRGF0YSYsIGJvb2wgdW5kZXJUZXN0LCB1bnNpZ25lZCBpbnNwZWN0aW9u
TGV2ZWwpOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCShyZXZpc2lvbiAyNjA3NjQp
CisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTksNyArMjE5LDcgQEAgdm9pZCBOZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb246OmRpZENsb3NlKAogI2VuZGlmCiB9CiAKLXZvaWQgTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiwgSVBDOjpTdHJpbmdSZWZlcmVuY2UsIElQQzo6U3RyaW5nUmVmZXJlbmNlKQordm9pZCBOZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mLCBJUEM6Ok1lc3NhZ2VOYW1lKQogewogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24uaAkocmV2aXNpb24gMjYwNzY0KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTk4LDcgKzk4
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6
OkVuY29kZXI+Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24m
KSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6OlN0
cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZl
SW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlTmFtZSkgb3ZlcnJp
ZGU7CiAKICAgICB2b2lkIGRpZEZpbmlzaFBpbmdMb2FkKHVpbnQ2NF90IHBpbmdMb2FkSWRlbnRp
ZmllciwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiYpOwogICAgIHZvaWQgZGlkRmluaXNoUHJlY29ubmVjdGlvbih1aW50NjRfdCBwcmVjb25uZWN0
aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmKTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNz
Q29ubmVjdGlvbi5jcHAJKHJldmlzaW9uIDI2MDc2NCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTI4LDcgKzEyOCw3IEBAIHZvaWQgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZENsb3Nl
KEkKICAgICB9CiB9CiAKLXZvaWQgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVJ
bnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSwgSVBD
OjpTdHJpbmdSZWZlcmVuY2UpCit2b2lkIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNl
aXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlTmFtZSkKIHsK
IH0KIApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vz
c0Nvbm5lY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi5oCShyZXZpc2lvbiAyNjA3NjQpCisrKyBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi5oCSh3
b3JraW5nIGNvcHkpCkBAIC02Niw3ICs2Niw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNl
aXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKICAg
ICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29k
ZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIG92ZXJyaWRlOwogICAgIHZvaWQg
ZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZl
SW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVz
c2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUpIG92ZXJy
aWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYs
IElQQzo6TWVzc2FnZU5hbWUpIG92ZXJyaWRlOwogCiAgICAgLy8gTWVzc2FnZSBoYW5kbGVycy4K
ICAgICB2b2lkIGRpZFJlY2VpdmVTeW5jUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29k
ZXI+Jik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXll
clRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJl
ZURyYXdpbmdBcmVhLm1tCShyZXZpc2lvbiAyNjA3NjQpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTM4NSw3ICszODUsNyBAQCB2b2lkIFJlbW90ZUxheWVyVHJl
ZURyYXdpbmdBcmVhOjp1cGRhdGVSCiAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlTGF5ZXJUcmVl
RHJhd2luZ0FyZWFQcm94eTo6V2lsbENvbW1pdExheWVyVHJlZShsYXllclRyYW5zYWN0aW9uLnRy
YW5zYWN0aW9uSUQoKSkpOwogCiAgICAgTWVzc2FnZXM6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdB
cmVhUHJveHk6OkNvbW1pdExheWVyVHJlZSBtZXNzYWdlKGxheWVyVHJhbnNhY3Rpb24sIHNjcm9s
bGluZ1RyYW5zYWN0aW9uKTsKLSAgICBhdXRvIGNvbW1pdEVuY29kZXIgPSBtYWtlVW5pcXVlPElQ
Qzo6RW5jb2Rlcj4oTWVzc2FnZXM6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OkNv
bW1pdExheWVyVHJlZTo6cmVjZWl2ZXJOYW1lKCksIE1lc3NhZ2VzOjpSZW1vdGVMYXllclRyZWVE
cmF3aW5nQXJlYVByb3h5OjpDb21taXRMYXllclRyZWU6Om5hbWUoKSwgbV9pZGVudGlmaWVyLnRv
VUludDY0KCkpOworICAgIGF1dG8gY29tbWl0RW5jb2RlciA9IG1ha2VVbmlxdWU8SVBDOjpFbmNv
ZGVyPihNZXNzYWdlczo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6Q29tbWl0TGF5
ZXJUcmVlOjpuYW1lKCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsKICAgICBjb21taXRFbmNv
ZGVyLT5lbmNvZGUobWVzc2FnZS5hcmd1bWVudHMoKSk7CiAKICAgICAvLyBGSVhNRTogTW92ZSBh
bGwgYmFja2luZyBzdG9yZSBmbHVzaGluZyBtYW5hZ2VtZW50IHRvIFJlbW90ZUxheWVyQmFja2lu
Z1N0b3JlQ29sbGVjdGlvbi4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>397807</attachid>
            <date>2020-04-27 22:19:40 -0700</date>
            <delta_ts>2020-04-27 23:57:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211112-20200427221937.patch</filename>
            <type>text/plain</type>
            <size>288314</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNjA3NjQpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDIwLTA0LTI3ICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVkdWNlIElQQyBvdmVyaGVhZCBm
b3IgbWVzc2FnZSByZWNlaXZlciBuYW1lIGFuZCBtZXNzYWdlIG5hbWUgdG8gMiBieXRlcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjExMTEyCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvRW51bVRy
YWl0cy5oOgorCiAyMDIwLTA0LTI2ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbQ29jb2FdIHN0b3AgdXNpbmcgb3V0IGFyZ3VtZW50cyBmb3IgZG9jdW1lbnQgYXR0
cmlidXRlcyB3aGVuIGNvbnZlcnRpbmcgdG8gYXR0cmlidXRlZCBzdHJpbmdzCkluZGV4OiBTb3Vy
Y2UvV1RGL3d0Zi9FbnVtVHJhaXRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvRW51
bVRyYWl0cy5oCShyZXZpc2lvbiAyNjA3NjQpCisrKyBTb3VyY2UvV1RGL3d0Zi9FbnVtVHJhaXRz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDExIEBACiAKICNpbmNsdWRlIDx0eXBlX3Ry
YWl0cz4KIAorbmFtZXNwYWNlIElQQyB7CisvLyBGSVhNRTogRmluZCBhIGJldHRlciB3YXkgdG8g
ZG8gdGhpcyB3aXRob3V0IGxldHRpbmcgV1RGIGtub3cgYWJvdXQgSVBDLgorZW51bSBjbGFzcyBN
ZXNzYWdlTmFtZSA6IHVpbnQxNl90OworfQorCiBuYW1lc3BhY2UgV1RGIHsKIAogdGVtcGxhdGU8
dHlwZW5hbWU+IHN0cnVjdCBFbnVtVHJhaXRzOwpAQCAtNTEsNyArNTYsNyBAQCBzdHJ1Y3QgRW51
bVZhbHVlQ2hlY2tlcjxULCBFbnVtVmFsdWVzPEU+CiAgICAgfQogfTsKIAotdGVtcGxhdGU8dHlw
ZW5hbWUgRSwgdHlwZW5hbWUgVCwgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2VudW08RT46OnZh
bHVlICYmICFzdGQ6OmlzX3NhbWU8c3RkOjp1bmRlcmx5aW5nX3R5cGVfdDxFPiwgYm9vbD46OnZh
bHVlPiogPSBudWxscHRyPgordGVtcGxhdGU8dHlwZW5hbWUgRSwgdHlwZW5hbWUgVCwgc3RkOjpl
bmFibGVfaWZfdDxzdGQ6OmlzX2VudW08RT46OnZhbHVlICYmICFzdGQ6OmlzX3NhbWU8c3RkOjp1
bmRlcmx5aW5nX3R5cGVfdDxFPiwgYm9vbD46OnZhbHVlICYmICFzdGQ6OmlzX3NhbWU8RSwgSVBD
OjpNZXNzYWdlTmFtZT46OnZhbHVlPiogPSBudWxscHRyPgogY29uc3RleHByIGJvb2wgaXNWYWxp
ZEVudW0oVCB0KQogewogICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFQpID49IHN0ZDo6dW5kZXJs
eWluZ190eXBlX3Q8RT4oKSwgIkludGVncmFsIHR5cGUgbXVzdCBiZSBhdCBsZWFzdCB0aGUgc2l6
ZSBvZiB0aGUgdW5kZXJseWluZyBlbnVtIHR5cGUiKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAy
NjA4MDYpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDI4NiBAQAorMjAyMC0wNC0yNyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3
ZWJraXQub3JnPgorCisgICAgICAgIFJlZHVjZSBJUEMgb3ZlcmhlYWQgZm9yIG1lc3NhZ2UgcmVj
ZWl2ZXIgbmFtZSBhbmQgbWVzc2FnZSBuYW1lIHRvIDIgYnl0ZXMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMTExMgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtb3V0cHV0Lnhj
ZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBHUFVQ
cm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpH
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UpOgorICAg
ICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVNZXNz
YWdlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRp
ZFJlY2VpdmVTeW5jTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UpOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzczo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9p
b3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NJT1MubW06CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpwYXltZW50Q29vcmRpbmF0b3JBZGRNZXNz
YWdlUmVjZWl2ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6cGF5bWVudENvb3JkaW5hdG9yUmVtb3ZlTWVzc2FnZVJlY2VpdmVyKTog
RGVsZXRlZC4KKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHA6CisgICAgICAg
IChJUEM6OkNvbm5lY3Rpb246OldhaXRGb3JNZXNzYWdlU3RhdGU6OldhaXRGb3JNZXNzYWdlU3Rh
dGUpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjphZGRXb3JrUXVldWVNZXNzYWdlUmVjZWl2
ZXIpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpyZW1vdmVXb3JrUXVldWVNZXNzYWdlUmVj
ZWl2ZXIpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpkaXNwYXRjaFdvcmtRdWV1ZU1lc3Nh
Z2VSZWNlaXZlck1lc3NhZ2UpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjphZGRUaHJlYWRN
ZXNzYWdlUmVjZWl2ZXIpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpyZW1vdmVUaHJlYWRN
ZXNzYWdlUmVjZWl2ZXIpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpkaXNwYXRjaFRocmVh
ZE1lc3NhZ2VSZWNlaXZlck1lc3NhZ2UpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpjcmVh
dGVTeW5jTWVzc2FnZUVuY29kZXIpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpzZW5kTWVz
c2FnZSk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OndhaXRGb3JNZXNzYWdlKToKKyAgICAg
ICAgKElQQzo6Q29ubmVjdGlvbjo6c2VuZFN5bmNNZXNzYWdlKToKKyAgICAgICAgKElQQzo6Q29u
bmVjdGlvbjo6d2FpdEZvclN5bmNSZXBseSk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnBy
b2Nlc3NJbmNvbWluZ01lc3NhZ2UpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpkaXNwYXRj
aFN5bmNNZXNzYWdlKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6ZGlzcGF0Y2hEaWRSZWNl
aXZlSW52YWxpZE1lc3NhZ2UpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpkaXNwYXRjaE1l
c3NhZ2UpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpkaXNwYXRjaE1lc3NhZ2VUb1dvcmtR
dWV1ZVJlY2VpdmVyKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6ZGlzcGF0Y2hNZXNzYWdl
VG9UaHJlYWRSZWNlaXZlcik6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OmRpc3BhdGNoSW5j
b21pbmdNZXNzYWdlcyk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaDoKKyAg
ICAgICAgKElQQzo6Q29ubmVjdGlvbjo6c2VuZCk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246
OnNlbmRXaXRoQXN5bmNSZXBseSk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnNlbmRTeW5j
KToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6d2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRl
bHkpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9EZWNvZGVyLmNwcDoKKyAgICAgICAgKiBQbGF0
Zm9ybS9JUEMvRGVjb2Rlci5oOgorICAgICAgICAoSVBDOjpEZWNvZGVyOjptZXNzYWdlUmVjZWl2
ZXJOYW1lIGNvbnN0KToKKyAgICAgICAgKElQQzo6RGVjb2Rlcjo6bWVzc2FnZU5hbWUgY29uc3Qp
OgorICAgICAgICAoSVBDOjpEZWNvZGVyOjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpEZWNvZGVy
OjpvcGVyYXRvcj4+KToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvRW5jb2Rlci5jcHA6CisgICAg
ICAgIChJUEM6OkVuY29kZXI6OkVuY29kZXIpOgorICAgICAgICAoSVBDOjpFbmNvZGVyOjplbmNv
ZGVIZWFkZXIpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9FbmNvZGVyLmg6CisgICAgICAgICog
UGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaDoKKyAgICAgICAgKElQQzo6aGFuZGxlTWVzc2Fn
ZUFzeW5jKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVyTWFwLmNwcDoK
KyAgICAgICAgKElQQzo6TWVzc2FnZVJlY2VpdmVyTWFwOjphZGRNZXNzYWdlUmVjZWl2ZXIpOgor
ICAgICAgICAoSVBDOjpNZXNzYWdlUmVjZWl2ZXJNYXA6OnJlbW92ZU1lc3NhZ2VSZWNlaXZlcik6
CisgICAgICAgIChJUEM6Ok1lc3NhZ2VSZWNlaXZlck1hcDo6ZGlzcGF0Y2hNZXNzYWdlKToKKyAg
ICAgICAgKElQQzo6TWVzc2FnZVJlY2VpdmVyTWFwOjpkaXNwYXRjaFN5bmNNZXNzYWdlKToKKyAg
ICAgICAgKiBQbGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVyTWFwLmg6CisgICAgICAgICogUGxh
dGZvcm0vSVBDL01lc3NhZ2VTZW5kZXIuaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvY29jb2Ev
Q29ubmVjdGlvbkNvY29hLm1tOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpvcGVuKToKKyAg
ICAgICAgKElQQzo6Q29ubmVjdGlvbjo6c2VuZE1lc3NhZ2UpOgorICAgICAgICAoSVBDOjpDb25u
ZWN0aW9uOjpzZW5kT3V0Z29pbmdNZXNzYWdlKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6
cmVjZWl2ZVNvdXJjZUV2ZW50SGFuZGxlcik6CisgICAgICAgICogUGxhdGZvcm0vSVBDL2NvY29h
L01hY2hNZXNzYWdlLmNwcDoKKyAgICAgICAgKElQQzo6TWFjaE1lc3NhZ2U6OmNyZWF0ZSk6Cisg
ICAgICAgIChJUEM6Ok1hY2hNZXNzYWdlOjpNYWNoTWVzc2FnZSk6CisgICAgICAgICogUGxhdGZv
cm0vSVBDL2NvY29hL01hY2hNZXNzYWdlLmg6CisgICAgICAgIChJUEM6Ok1hY2hNZXNzYWdlOjpt
ZXNzYWdlUmVjZWl2ZXJOYW1lIGNvbnN0KToKKyAgICAgICAgKElQQzo6TWFjaE1lc3NhZ2U6Om1l
c3NhZ2VOYW1lIGNvbnN0KToKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25u
ZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJl
Y2VpdmVJbnZhbGlkTWVzc2FnZSk6CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNz
Q29ubmVjdGlvbi5oOgorICAgICAgICAqIFNjcmlwdHMvTWFrZWZpbGU6CisgICAgICAgICogU2Ny
aXB0cy9nZW5lcmF0ZS1tZXNzYWdlLXJlY2VpdmVyLnB5OgorICAgICAgICAobWFpbik6CisgICAg
ICAgICogU2NyaXB0cy93ZWJraXQvTGVnYWN5TWVzc2FnZXMtZXhwZWN0ZWQuaDogUmVtb3ZlZC4K
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9MZWdhY3lNZXNzYWdlc1JlcGxpZXMtZXhwZWN0ZWQu
aDogUmVtb3ZlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9NZXNzYWdlTmFtZXMuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKElQQzo6ZGVzY3JpcHRpb24pOgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0L01lc3NhZ2VOYW1lcy5oOiBBZGRlZC4KKyAgICAgICAgKElQQzo6cmVjZWl2ZXJOYW1lKToK
KyAgICAgICAgKFdURjo6aXNWYWxpZEVudW0pOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L01l
c3NhZ2VSZWNlaXZlci1leHBlY3RlZC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogU2NyaXB0cy93
ZWJraXQvTWVzc2FnZVJlY2VpdmVyU3VwZXJjbGFzcy1leHBlY3RlZC5jcHA6IFJlbW92ZWQuCisg
ICAgICAgICogU2NyaXB0cy93ZWJraXQvTWVzc2FnZXMtZXhwZWN0ZWQuaDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdC9NZXNzYWdlc1JlcGxpZXMtZXhwZWN0ZWQuaDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9NZXNzYWdlc1JlcGxpZXNTdXBlcmNsYXNzUmVw
bGllcy1leHBlY3RlZC5oOiBSZW1vdmVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L01lc3Nh
Z2VzU3VwZXJjbGFzcy1leHBlY3RlZC5oOiBSZW1vdmVkLgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0L21lc3NhZ2VzLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3QtbGVnYWN5LW1l
c3NhZ2VzLmluOiBSZW1vdmVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3QtbGVnYWN5
Lm1lc3NhZ2VzLmluOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rl
c3QtbGVnYWN5LW1lc3NhZ2VzLmluLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3QtbGVn
YWN5TWVzc2FnZVJlY2VpdmVyLmNwcDogQWRkZWQuCisgICAgICAgIChNZXNzYWdlczo6V2ViUGFn
ZTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OnNlbmQpOgorICAgICAgICAoTWVzc2FnZXM6
OldlYlBhZ2U6OlRlc3RNdWx0aXBsZUF0dHJpYnV0ZXM6OnNlbmQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlOjpkaWRSZWNlaXZlV2ViUGFnZU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlOjpkaWRSZWNlaXZlU3luY1dlYlBhZ2VNZXNzYWdlKToKKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdC90ZXN0LWxlZ2FjeU1lc3NhZ2VzLmg6IEFkZGVkLgorICAgICAgICAoTWVzc2FnZXM6
OldlYlBhZ2U6Om1lc3NhZ2VSZWNlaXZlck5hbWUpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBh
Z2U6OkxvYWRVUkw6Om5hbWUpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRVUkw6
OkxvYWRVUkwpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRVUkw6OmFyZ3VtZW50
cyBjb25zdCk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFNvbWV0aGluZzo6bmFt
ZSk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFNvbWV0aGluZzo6TG9hZFNvbWV0
aGluZyk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFNvbWV0aGluZzo6YXJndW1l
bnRzIGNvbnN0KToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUb3VjaEV2ZW50OjpuYW1l
KToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUb3VjaEV2ZW50OjpUb3VjaEV2ZW50KToK
KyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUb3VjaEV2ZW50Ojphcmd1bWVudHMgY29uc3Qp
OgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OkFkZEV2ZW50OjpuYW1lKToKKyAgICAgICAg
KE1lc3NhZ2VzOjpXZWJQYWdlOjpBZGRFdmVudDo6QWRkRXZlbnQpOgorICAgICAgICAoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkFkZEV2ZW50Ojphcmd1bWVudHMgY29uc3QpOgorICAgICAgICAoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkxvYWRTb21ldGhpbmdFbHNlOjpuYW1lKToKKyAgICAgICAgKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpMb2FkU29tZXRoaW5nRWxzZTo6TG9hZFNvbWV0aGluZ0Vsc2UpOgorICAgICAg
ICAoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRTb21ldGhpbmdFbHNlOjphcmd1bWVudHMgY29uc3Qp
OgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbjo6
bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVjZWl2ZVBvbGljeURlY2lz
aW9uOjpEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24pOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBh
Z2U6OkRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbjo6YXJndW1lbnRzIGNvbnN0KToKKyAgICAgICAg
KE1lc3NhZ2VzOjpXZWJQYWdlOjpDbG9zZTo6bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6V2Vi
UGFnZTo6Q2xvc2U6OmFyZ3VtZW50cyBjb25zdCk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFn
ZTo6UHJlZmVyZW5jZXNEaWRDaGFuZ2U6Om5hbWUpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBh
Z2U6OlByZWZlcmVuY2VzRGlkQ2hhbmdlOjpQcmVmZXJlbmNlc0RpZENoYW5nZSk6CisgICAgICAg
IChNZXNzYWdlczo6V2ViUGFnZTo6UHJlZmVyZW5jZXNEaWRDaGFuZ2U6OmFyZ3VtZW50cyBjb25z
dCk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6U2VuZERvdWJsZUFuZEZsb2F0OjpuYW1l
KToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZW5kRG91YmxlQW5kRmxvYXQ6OlNlbmRE
b3VibGVBbmRGbG9hdCk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6U2VuZERvdWJsZUFu
ZEZsb2F0Ojphcmd1bWVudHMgY29uc3QpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlNl
bmRJbnRzOjpuYW1lKToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZW5kSW50czo6U2Vu
ZEludHMpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlNlbmRJbnRzOjphcmd1bWVudHMg
Y29uc3QpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OkNyZWF0ZVBsdWdpbjo6bmFtZSk6
CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6Q3JlYXRlUGx1Z2luOjpDcmVhdGVQbHVnaW4p
OgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OkNyZWF0ZVBsdWdpbjo6YXJndW1lbnRzIGNv
bnN0KToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpSdW5KYXZhU2NyaXB0QWxlcnQ6Om5h
bWUpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlJ1bkphdmFTY3JpcHRBbGVydDo6UnVu
SmF2YVNjcmlwdEFsZXJ0KToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpSdW5KYXZhU2Ny
aXB0QWxlcnQ6OmFyZ3VtZW50cyBjb25zdCk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6
R2V0UGx1Z2luczo6bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6R2V0UGx1Z2lu
czo6R2V0UGx1Z2lucyk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6R2V0UGx1Z2luczo6
YXJndW1lbnRzIGNvbnN0KToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRQbHVnaW5Q
cm9jZXNzQ29ubmVjdGlvbjo6bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6R2V0
UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKToKKyAg
ICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6YXJn
dW1lbnRzIGNvbnN0KToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0TXVsdGlwbGVB
dHRyaWJ1dGVzOjpuYW1lKToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0TXVsdGlw
bGVBdHRyaWJ1dGVzOjphcmd1bWVudHMgY29uc3QpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBh
Z2U6OlRlc3RQYXJhbWV0ZXJBdHRyaWJ1dGVzOjpuYW1lKToKKyAgICAgICAgKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpUZXN0UGFyYW1ldGVyQXR0cmlidXRlczo6VGVzdFBhcmFtZXRlckF0dHJpYnV0ZXMp
OgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RQYXJhbWV0ZXJBdHRyaWJ1dGVzOjph
cmd1bWVudHMgY29uc3QpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlRlbXBsYXRlVGVz
dDo6bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6VGVtcGxhdGVUZXN0OjpUZW1w
bGF0ZVRlc3QpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlRlbXBsYXRlVGVzdDo6YXJn
dW1lbnRzIGNvbnN0KToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRWaWRlb0xheWVy
SUQ6Om5hbWUpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFZpZGVvTGF5ZXJJRDo6
U2V0VmlkZW9MYXllcklEKToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRWaWRlb0xh
eWVySUQ6OmFyZ3VtZW50cyBjb25zdCk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6RGlk
Q3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb246Om5hbWUpOgorICAgICAgICAoTWVzc2FnZXM6Oldl
YlBhZ2U6OkRpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uOjpEaWRDcmVhdGVXZWJQcm9jZXNz
Q29ubmVjdGlvbik6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6RGlkQ3JlYXRlV2ViUHJv
Y2Vzc0Nvbm5lY3Rpb246OmFyZ3VtZW50cyBjb25zdCk6CisgICAgICAgIChNZXNzYWdlczo6V2Vi
UGFnZTo6SW50ZXJwcmV0S2V5RXZlbnQ6Om5hbWUpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBh
Z2U6OkludGVycHJldEtleUV2ZW50OjpJbnRlcnByZXRLZXlFdmVudCk6CisgICAgICAgIChNZXNz
YWdlczo6V2ViUGFnZTo6SW50ZXJwcmV0S2V5RXZlbnQ6OmFyZ3VtZW50cyBjb25zdCk6CisgICAg
ICAgIChNZXNzYWdlczo6V2ViUGFnZTo6RGVwcmVjYXRlZE9wZXJhdGlvbjo6bmFtZSk6CisgICAg
ICAgIChNZXNzYWdlczo6V2ViUGFnZTo6RGVwcmVjYXRlZE9wZXJhdGlvbjo6RGVwcmVjYXRlZE9w
ZXJhdGlvbik6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6RGVwcmVjYXRlZE9wZXJhdGlv
bjo6YXJndW1lbnRzIGNvbnN0KToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpFeHBlcmlt
ZW50YWxPcGVyYXRpb246Om5hbWUpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OkV4cGVy
aW1lbnRhbE9wZXJhdGlvbjo6RXhwZXJpbWVudGFsT3BlcmF0aW9uKToKKyAgICAgICAgKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpFeHBlcmltZW50YWxPcGVyYXRpb246OmFyZ3VtZW50cyBjb25zdCk6Cisg
ICAgICAgICogU2NyaXB0cy93ZWJraXQvdGVzdC1sZWdhY3lNZXNzYWdlc1JlcGxpZXMuaDogQWRk
ZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXQvdGVzdC1tZXNzYWdlcy5pbjogUmVtb3ZlZC4K
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0LXN1cGVyY2xhc3MtbWVzc2FnZXMuaW46IFJl
bW92ZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXQvdGVzdC1zdXBlcmNsYXNzLm1lc3NhZ2Vz
LmluOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3Qtc3VwZXJj
bGFzcy1tZXNzYWdlcy5pbi4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0LXN1cGVyY2xh
c3NNZXNzYWdlUmVjZWl2ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdl
OjpUZXN0QXN5bmNNZXNzYWdlOjpjYWxsUmVwbHkpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBh
Z2U6OlRlc3RBc3luY01lc3NhZ2U6OmNhbmNlbFJlcGx5KToKKyAgICAgICAgKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpUZXN0QXN5bmNNZXNzYWdlOjpzZW5kKToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpUZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJndW1lbnRzOjpjYWxsUmVwbHkpOgorICAgICAg
ICAoTWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RBc3luY01lc3NhZ2VXaXRoTm9Bcmd1bWVudHM6OmNh
bmNlbFJlcGx5KToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0QXN5bmNNZXNzYWdl
V2l0aE5vQXJndW1lbnRzOjpzZW5kKToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0
QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1lbnRzOjpjYWxsUmVwbHkpOgorICAgICAgICAo
TWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RBc3luY01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHM6
OmNhbmNlbFJlcGx5KToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0QXN5bmNNZXNz
YWdlV2l0aE11bHRpcGxlQXJndW1lbnRzOjpzZW5kKToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpUZXN0U3luY01lc3NhZ2U6OnNlbmQpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6
OlRlc3RTeW5jaHJvbm91c01lc3NhZ2U6OnNlbmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRpZFJlY2Vp
dmVTeW5jTWVzc2FnZSk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvdGVzdC1zdXBlcmNsYXNz
TWVzc2FnZXMuaDogQWRkZWQuCisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6bWVzc2FnZVJl
Y2VpdmVyTmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFVSTDo6bmFtZSk6
CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFVSTDo6TG9hZFVSTCk6CisgICAgICAg
IChNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFVSTDo6YXJndW1lbnRzIGNvbnN0KToKKyAgICAgICAg
KE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0QXN5bmNNZXNzYWdlOjpuYW1lKToKKyAgICAgICAgKE1l
c3NhZ2VzOjpXZWJQYWdlOjpUZXN0QXN5bmNNZXNzYWdlOjphc3luY01lc3NhZ2VSZXBseU5hbWUp
OgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RBc3luY01lc3NhZ2U6OlRlc3RBc3lu
Y01lc3NhZ2UpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RBc3luY01lc3NhZ2U6
OmFyZ3VtZW50cyBjb25zdCk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6VGVzdEFzeW5j
TWVzc2FnZVdpdGhOb0FyZ3VtZW50czo6bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFn
ZTo6VGVzdEFzeW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50czo6YXN5bmNNZXNzYWdlUmVwbHlOYW1l
KToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJn
dW1lbnRzOjphcmd1bWVudHMgY29uc3QpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlRl
c3RBc3luY01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHM6Om5hbWUpOgorICAgICAgICAoTWVz
c2FnZXM6OldlYlBhZ2U6OlRlc3RBc3luY01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHM6OmFz
eW5jTWVzc2FnZVJlcGx5TmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6VGVzdEFz
eW5jTWVzc2FnZVdpdGhNdWx0aXBsZUFyZ3VtZW50czo6YXJndW1lbnRzIGNvbnN0KToKKyAgICAg
ICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0U3luY01lc3NhZ2U6Om5hbWUpOgorICAgICAgICAo
TWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RTeW5jTWVzc2FnZTo6VGVzdFN5bmNNZXNzYWdlKToKKyAg
ICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0U3luY01lc3NhZ2U6OmFyZ3VtZW50cyBjb25z
dCk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6VGVzdFN5bmNocm9ub3VzTWVzc2FnZTo6
bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6VGVzdFN5bmNocm9ub3VzTWVzc2Fn
ZTo6VGVzdFN5bmNocm9ub3VzTWVzc2FnZSk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6
VGVzdFN5bmNocm9ub3VzTWVzc2FnZTo6YXJndW1lbnRzIGNvbnN0KToKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdC90ZXN0LXN1cGVyY2xhc3NNZXNzYWdlc1JlcGxpZXMuaDogQWRkZWQuCisgICAg
ICAgICogU2NyaXB0cy93ZWJraXQvdGVzdC5tZXNzYWdlcy5pbjogQWRkZWQuCisgICAgICAgICog
U2NyaXB0cy93ZWJraXQvdGVzdE1lc3NhZ2VSZWNlaXZlci5jcHA6IEFkZGVkLgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0L3Rlc3RNZXNzYWdlcy5oOiBBZGRlZC4KKyAgICAgICAgKE1lc3NhZ2Vz
OjpOb25lOjptZXNzYWdlUmVjZWl2ZXJOYW1lKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC90
ZXN0TWVzc2FnZXNSZXBsaWVzLmg6IEFkZGVkLgorICAgICAgICAqIFNoYXJlZC9BcHBsZVBheS9X
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5oOgorICAgICAgICAqIFNoYXJlZC9BcHBsZVBheS9j
b2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6fldlYlBheW1l
bnRDb29yZGluYXRvclByb3h5KToKKyAgICAgICAgKiBTaGFyZWQvQXV4aWxpYXJ5UHJvY2Vzcy5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkF1eGlsaWFyeVByb2Nlc3M6OmFkZE1lc3NhZ2VSZWNlaXZl
cik6CisgICAgICAgIChXZWJLaXQ6OkF1eGlsaWFyeVByb2Nlc3M6OnJlbW92ZU1lc3NhZ2VSZWNl
aXZlcik6CisgICAgICAgIChXZWJLaXQ6OkF1eGlsaWFyeVByb2Nlc3M6OmRpZFJlY2VpdmVJbnZh
bGlkTWVzc2FnZSk6CisgICAgICAgICogU2hhcmVkL0F1eGlsaWFyeVByb2Nlc3MuaDoKKyAgICAg
ICAgKFdlYktpdDo6QXV4aWxpYXJ5UHJvY2Vzczo6YWRkTWVzc2FnZVJlY2VpdmVyKToKKyAgICAg
ICAgKFdlYktpdDo6QXV4aWxpYXJ5UHJvY2Vzczo6cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKToKKyAg
ICAgICAgKiBTaGFyZWQvQ29jb2EvQXV4aWxpYXJ5UHJvY2Vzc0NvY29hLm1tOgorICAgICAgICAo
V2ViS2l0OjpBdXhpbGlhcnlQcm9jZXNzOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UpOgorICAg
ICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0F1eGlsaWFyeVBy
b2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkF1eGlsaWFyeVByb2Nlc3NQcm94eTo6
YWRkTWVzc2FnZVJlY2VpdmVyKToKKyAgICAgICAgKFdlYktpdDo6QXV4aWxpYXJ5UHJvY2Vzc1By
b3h5OjpyZW1vdmVNZXNzYWdlUmVjZWl2ZXIpOgorICAgICAgICAoV2ViS2l0OjpBdXhpbGlhcnlQ
cm9jZXNzUHJveHk6OmxvZ0ludmFsaWRNZXNzYWdlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV4
aWxpYXJ5UHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OkF1eGlsaWFyeVByb2Nlc3NQ
cm94eTo6YWRkTWVzc2FnZVJlY2VpdmVyKToKKyAgICAgICAgKFdlYktpdDo6QXV4aWxpYXJ5UHJv
Y2Vzc1Byb3h5OjpyZW1vdmVNZXNzYWdlUmVjZWl2ZXIpOgorICAgICAgICAoV2ViS2l0OjpBdXhp
bGlhcnlQcm9jZXNzUHJveHk6OnNlbmQpOgorICAgICAgICAoV2ViS2l0OjpBdXhpbGlhcnlQcm9j
ZXNzUHJveHk6OnNlbmRXaXRoQXN5bmNSZXBseSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29h
L1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29j
b2EvV2ViUGFnZVByb3h5Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
cGF5bWVudENvb3JkaW5hdG9yQWRkTWVzc2FnZVJlY2VpdmVyKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpwYXltZW50Q29vcmRpbmF0b3JSZW1vdmVNZXNzYWdlUmVj
ZWl2ZXIpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6R1BVUHJvY2Vzc1Byb3h5OjpkaWRSZWNlaXZlSW52YWxp
ZE1lc3NhZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5Lmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2Fn
ZSk6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NQcm94eTo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdl
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjptZXNz
YWdlTmFtZXNUb0lnbm9yZVdoaWxlU3VzcGVuZGVkKToKKyAgICAgICAgKFdlYktpdDo6U3VzcGVu
ZGVkUGFnZVByb3h5OjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2Up
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6YWRkTWVzc2FnZVJlY2VpdmVyKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnJlbW92ZU1lc3NhZ2VSZWNlaXZlcik6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94
eTo6c2hvdWxkU2VuZFBlbmRpbmdNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Byb3h5OjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29u
bmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OkdQVVByb2Nlc3NDb25uZWN0aW9uOjpkaWRS
ZWNlaXZlSW52YWxpZE1lc3NhZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL0dQVVByb2Nl
c3NDb25uZWN0aW9uLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVj
dG9yLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUkuaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZl
SW52YWxpZE1lc3NhZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJv
Y2Vzc0Nvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzQ29ubmVj
dGlvbjo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6dXBkYXRlUmVuZGVyaW5n
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZSk6CisKIDIwMjAtMDQtMjcgIEJyZW50IEZ1
bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgRm9sbG93LXVwIGNoYW5nZSBh
ZnRlciByMjYwNzk4LgpJbmRleDogU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQu
eGNmaWxlbGlzdAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91
dHB1dC54Y2ZpbGVsaXN0CShyZXZpc2lvbiAyNjA3NjQpCisrKyBTb3VyY2UvV2ViS2l0L0Rlcml2
ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CSh3b3JraW5nIGNvcHkpCkBAIC02Myw2ICs2Myw3
IEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWIKICQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZU1lc3NhZ2VSZWNlaXZlci5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJLaXQyL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZU1lc3NhZ2VzLmgKICQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZU1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViS2l0Mi9NZXNzYWdlTmFtZXMuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViS2l0Mi9OUE9iamVjdE1lc3NhZ2VSZWNlaXZlck1lc3NhZ2VSZWNlaXZlci5jcHAK
ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL05QT2JqZWN0TWVz
c2FnZVJlY2VpdmVyTWVzc2FnZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYktpdDIvTlBPYmplY3RNZXNzYWdlUmVjZWl2ZXJNZXNzYWdlc1JlcGxpZXMuaApJbmRl
eDogU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQkocmV2aXNpb24gMjYwNzY0KQorKysgU291cmNl
L1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0xMTIsMTM0ICsx
MTIsMTM1IEBAIGVsc2UKIGVuZGlmCiAKIE1FU1NBR0VfUkVDRUlWRVJTID0gXAotCUF1ZGlvU2Vz
c2lvblJvdXRpbmdBcmJpdHJhdG9yUHJveHkgXAotICAgIEF1dGhlbnRpY2F0aW9uTWFuYWdlciBc
Ci0gICAgQXV4aWxpYXJ5UHJvY2VzcyBcCi0gICAgQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlv
biBcCi0gICAgRG93bmxvYWRQcm94eSBcCi0gICAgRHJhd2luZ0FyZWEgXAotICAgIERyYXdpbmdB
cmVhUHJveHkgXAotICAgIEVkaXRhYmxlSW1hZ2VDb250cm9sbGVyIFwKLSAgICBFdmVudERpc3Bh
dGNoZXIgXAotICAgIEdQVVByb2Nlc3MgXAotICAgIEdQVVByb2Nlc3NQcm94eSBcCi0gICAgR1BV
UHJvY2Vzc0Nvbm5lY3Rpb24gXAotICAgIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgXAotICAg
IExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlciBcCi0gICAgTGVnYWN5Q3VzdG9tUHJvdG9jb2xN
YW5hZ2VyUHJveHkgXAotICAgIExpYldlYlJUQ0NvZGVjcyBcCi0gICAgTGliV2ViUlRDQ29kZWNz
UHJveHkgXAotICAgIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZSBcCi0gICAgTlBPYmplY3RNZXNz
YWdlUmVjZWl2ZXIgXAotICAgIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzIFwKLSAgICBO
ZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlciBcCi0gICAgTmV0d29ya01ETlNSZWdpc3RlclwK
LSAgICBOZXR3b3JrUHJvY2VzcyBcCi0gICAgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uIFwKLSAg
ICBOZXR3b3JrUHJvY2Vzc1Byb3h5IFwKLSAgICBOZXR3b3JrUlRDTW9uaXRvciBcCi0gICAgTmV0
d29ya1JUQ1Byb3ZpZGVyIFwKLSAgICBOZXR3b3JrUlRDU29ja2V0IFwKLSAgICBOZXR3b3JrUmVz
b3VyY2VMb2FkZXIgXAotICAgIE5ldHdvcmtTb2NrZXRDaGFubmVsIFwKLSAgICBOZXR3b3JrU29j
a2V0U3RyZWFtIFwKLSAgICBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyIFwKLSAgICBQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyUHJveHkgXAotICAgIFBsdWdpbkNvbnRyb2xsZXJQcm94eSBcCi0gICAgUGx1
Z2luUHJvY2VzcyBcCi0gICAgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24gXAotICAgIFBsdWdpblBy
b2Nlc3NDb25uZWN0aW9uTWFuYWdlciBcCi0gICAgUGx1Z2luUHJvY2Vzc1Byb3h5IFwKLSAgICBQ
bHVnaW5Qcm94eSBcCi0gICAgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIgXAotICAgIFJl
bW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eSBcCi0gICAgUmVtb3RlQXVkaW9TZXNzaW9uIFwKLSAg
ICBSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eSBcCi0gICAgUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRy
YWNrUmVuZGVyZXJNYW5hZ2VyIFwKLSAgICBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5k
ZXJlciBcCi0gICAgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eSBcCi0gICAgUmVtb3Rl
Q0RNUHJveHkgXAotICAgIFJlbW90ZUNETUZhY3RvcnlQcm94eSBcCi0gICAgUmVtb3RlQ0RNSW5z
dGFuY2VQcm94eSBcCi0gICAgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uIFwKLSAgICBSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb25Qcm94eSBcCi0gICAgUmVtb3RlTGVnYWN5Q0RNUHJveHkgXAotICAg
IFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eSBcCi0gICAgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lv
biBcCi0gICAgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5IFwKLSAgICBSZW1vdGVNZWRpYVBs
YXllck1hbmFnZXIgXAotICAgIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5IFwKLSAgICBS
ZW1vdGVNZWRpYVBsYXllclByb3h5IFwKLSAgICBSZW1vdGVNZWRpYVJlY29yZGVyIFwKLSAgICBS
ZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlciBcCi0gICAgUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFn
ZXIgXAotICAgIFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlciBcCi0gICAgUmVtb3RlTWVkaWFTZXNz
aW9uSGVscGVyUHJveHkgXAotICAgIFJlbW90ZU9iamVjdFJlZ2lzdHJ5IFwKLSAgICBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kIFwKLSAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkgXAotICAg
IFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciBcCi0gICAgUmVtb3RlU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyTWFuYWdlciBcCi0gICAgUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3IgXAot
ICAgIFJlbW90ZVdlYkluc3BlY3RvclByb3h5IFwKLSAgICBSZW1vdGVXZWJJbnNwZWN0b3JVSSBc
Ci0gICAgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIFwKLSAgICBTZWNJdGVtU2hpbVByb3h5IFwK
LSAgICBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrIFwKLSAgICBTbWFydE1hZ25pZmljYXRpb25Db250
cm9sbGVyIFwKLSAgICBTdG9yYWdlQXJlYU1hcCBcCi0gICAgU3RvcmFnZU1hbmFnZXJTZXQgXAot
ICAgIFRleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94eSBcCi0gICAgVXNlck1lZGlhQ2FwdHVyZU1h
bmFnZXIgXAotICAgIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkgXAotICAgIFZpZGVvRnVs
bHNjcmVlbk1hbmFnZXIgXAotICAgIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eSBcCi0gICAg
Vmlld0dlc3R1cmVDb250cm9sbGVyIFwKLSAgICBWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9y
IFwKLSAgICBWaWV3VXBkYXRlRGlzcGF0Y2hlciBcCi0gICAgVmlzaXRlZExpbmtTdG9yZSBcCi0g
ICAgVmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXIgXAotICAgIFdlYkF1dGhlbnRpY2F0b3JDb29y
ZGluYXRvclByb3h5IFwKLSAgICBXZWJBdXRvbWF0aW9uU2Vzc2lvbiBcCi0gICAgV2ViQXV0b21h
dGlvblNlc3Npb25Qcm94eSBcCi0gICAgV2ViQ29ubmVjdGlvbiBcCi0gICAgV2ViQ29va2llTWFu
YWdlciBcCi0gICAgV2ViQ29va2llTWFuYWdlclByb3h5IFwKLSAgICBXZWJGdWxsU2NyZWVuTWFu
YWdlciBcCi0gICAgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eSBcCi0gICAgV2ViR2VvbG9jYXRp
b25NYW5hZ2VyIFwKLSAgICBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eSBcCi0gICAgV2ViSURC
Q29ubmVjdGlvblRvU2VydmVyIFwKLSAgICBXZWJJREJTZXJ2ZXIgXAotICAgIFdlYkluc3BlY3Rv
ciBcCi0gICAgV2ViSW5zcGVjdG9ySW50ZXJydXB0RGlzcGF0Y2hlciBcCi0gICAgV2ViSW5zcGVj
dG9yUHJveHkgXAotICAgIFdlYkluc3BlY3RvclVJIFwKLSAgICBXZWJNRE5TUmVnaXN0ZXJcCi0g
ICAgV2ViTm90aWZpY2F0aW9uTWFuYWdlciBcCi0gICAgV2ViUGFnZSBcCi0gICAgV2ViUGFnZVBy
b3h5IFwKLSAgICBXZWJQYXN0ZWJvYXJkUHJveHkgXAotICAgIFdlYlBheW1lbnRDb29yZGluYXRv
ciBcCi0gICAgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkgXAotICAgIFdlYlByb2Nlc3MgXAot
ICAgIFdlYlByb2Nlc3NDb25uZWN0aW9uIFwKLSAgICBXZWJQcm9jZXNzUG9vbCBcCi0gICAgV2Vi
UHJvY2Vzc1Byb3h5IFwKLSAgICBXZWJSVENNb25pdG9yIFwKLSAgICBXZWJSVENSZXNvbHZlciBc
Ci0gICAgV2ViUlRDU29ja2V0IFwKLSAgICBXZWJSZXNvdXJjZUxvYWRlciBcCi0gICAgV2ViU1dD
bGllbnRDb25uZWN0aW9uIFwKLSAgICBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiBcCi0g
ICAgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uIFwKLSAgICBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24gXAotICAgIFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIgXAotICAgIFdl
YkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94eSBcCi0gICAgV2ViU29ja2V0Q2hh
bm5lbCBcCi0gICAgV2ViU29ja2V0U3RyZWFtIFwKLSAgICBXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXIgXAotICAgIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5IFwKKwkkKFdlYktpdDIpL05l
dHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzIFwKKwkkKFdlYktpdDIp
L05ldHdvcmtQcm9jZXNzL0luZGV4ZWREQi9XZWJJREJTZXJ2ZXIgXAorCSQoV2ViS2l0MikvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIgXAorCSQoV2ViS2l0Mikv
TmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlclNldCBcCisJJChXZWJLaXQy
KS9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uIFwKKwkk
KFdlYktpdDIpL05ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9MZWdhY3lDdXN0b21Qcm90
b2NvbE1hbmFnZXIgXAorCSQoV2ViS2l0MikvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENo
YW5uZWwgXAorCSQoV2ViS2l0MikvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1Nl
cnZlckNvbm5lY3Rpb24gXAorCSQoV2ViS2l0MikvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrIFwKKwkkKFdlYktpdDIpL05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uIFwKKwkkKFdlYktpdDIp
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0gXAorCSQoV2ViS2l0MikvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MgXAorCSQoV2ViS2l0MikvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Jlc291cmNlTG9hZGVyIFwKKwkkKFdlYktpdDIpL05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9O
ZXR3b3JrTUROU1JlZ2lzdGVyIFwKKwkkKFdlYktpdDIpL05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9O
ZXR3b3JrUlRDU29ja2V0IFwKKwkkKFdlYktpdDIpL05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3
b3JrUlRDUHJvdmlkZXIgXAorCSQoV2ViS2l0MikvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdv
cmtSVENNb25pdG9yIFwKKwkkKFdlYktpdDIpL05ldHdvcmtQcm9jZXNzL0Nvb2tpZXMvV2ViQ29v
a2llTWFuYWdlciBcCisJJChXZWJLaXQyKS9TaGFyZWQvUGx1Z2lucy9OUE9iamVjdE1lc3NhZ2VS
ZWNlaXZlciBcCisJJChXZWJLaXQyKS9TaGFyZWQvQXV4aWxpYXJ5UHJvY2VzcyBcCisJJChXZWJL
aXQyKS9TaGFyZWQvQVBJL0NvY29hL1JlbW90ZU9iamVjdFJlZ2lzdHJ5IFwKKwkkKFdlYktpdDIp
L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSBcCisJJChXZWJLaXQy
KS9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyIFwKKwkkKFdlYktp
dDIpL1NoYXJlZC9XZWJDb25uZWN0aW9uIFwKKwkkKFdlYktpdDIpL1VJUHJvY2Vzcy9XZWJGdWxs
U2NyZWVuTWFuYWdlclByb3h5IFwKKwkkKFdlYktpdDIpL1VJUHJvY2Vzcy9SZW1vdGVMYXllclRy
ZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eSBcCisJJChXZWJLaXQyKS9VSVByb2Nl
c3MvR1BVL0dQVVByb2Nlc3NQcm94eSBcCisJJChXZWJLaXQyKS9VSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkgXAorCSQoV2ViS2l0Mikv
VUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eSBcCisJJChXZWJLaXQyKS9VSVByb2Nlc3MvVXNl
ckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkgXAorCSQoV2ViS2l0MikvVUlQ
cm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JQcm94eSBcCisJJChXZWJLaXQyKS9VSVByb2Nl
c3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclByb3h5IFwKKwkkKFdlYktpdDIpL1VJUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eSBcCisJJChXZWJLaXQyKS9VSVByb2Nlc3Mv
RHJhd2luZ0FyZWFQcm94eSBcCisJJChXZWJLaXQyKS9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5IFwKKwkkKFdlYktpdDIpL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3Rv
Y29scy9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSBcCisJJChXZWJLaXQyKS9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5IFwKKwkkKFdlYktpdDIpL1VJUHJvY2Vzcy9WaXNpdGVkTGlua1N0
b3JlIFwKKwkkKFdlYktpdDIpL1VJUHJvY2Vzcy9pb3MvV2ViRGV2aWNlT3JpZW50YXRpb25VcGRh
dGVQcm92aWRlclByb3h5IFwKKwkkKFdlYktpdDIpL1VJUHJvY2Vzcy9pb3MvRWRpdGFibGVJbWFn
ZUNvbnRyb2xsZXIgXAorCSQoV2ViS2l0MikvVUlQcm9jZXNzL2lvcy9TbWFydE1hZ25pZmljYXRp
b25Db250cm9sbGVyIFwKKwkkKFdlYktpdDIpL1VJUHJvY2Vzcy9tYWMvU2VjSXRlbVNoaW1Qcm94
eSBcCisJJChXZWJLaXQyKS9VSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkgXAor
CSQoV2ViS2l0MikvVUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eSBc
CisJJChXZWJLaXQyKS9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5
IFwKKwkkKFdlYktpdDIpL1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclBy
b3h5IFwKKwkkKFdlYktpdDIpL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkgXAorCSQo
V2ViS2l0MikvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlciBcCisJJChXZWJLaXQyKS9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5IFwKKwkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BdXRvbWF0
aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uIFwKKwkkKFdlYktpdDIpL1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbCBcCisJJChXZWJLaXQyKS9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkg
XAorCSQoV2ViS2l0MikvVUlQcm9jZXNzL01lZGlhL0F1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJh
dG9yUHJveHkgXAorCSQoV2ViS2l0MikvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dl
YklEQkNvbm5lY3Rpb25Ub1NlcnZlciBcCisJJChXZWJLaXQyKS9XZWJQcm9jZXNzL0dQVS9HUFVQ
cm9jZXNzQ29ubmVjdGlvbiBcCisJJChXZWJLaXQyKS9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9S
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kIFwKKwkkKFdlYktpdDIpL1dlYlByb2Nlc3MvR1BVL3dlYnJ0
Yy9MaWJXZWJSVENDb2RlY3MgXAorCSQoV2ViS2l0MikvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1Nh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllciBcCisJJChXZWJLaXQyKS9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUgXAorCSQoV2ViS2l0MikvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uIFwKKwkkKFdlYktpdDIpL1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb24gXAorCSQoV2ViS2l0MikvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlciBcCisJJChXZWJLaXQyKS9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIgXAorCSQoV2ViS2l0
MikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5IFwKKwkk
KFdlYktpdDIpL1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvbiBcCisJJChX
ZWJLaXQyKS9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAgXAorCSQoV2ViS2l0
MikvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIgXAorCSQo
V2ViS2l0MikvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9ySW50ZXJydXB0RGlzcGF0
Y2hlciBcCisJJChXZWJLaXQyKS9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSSBc
CisJJChXZWJLaXQyKS9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3IgXAorCSQoV2Vi
S2l0MikvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yVUkgXAorCSQoV2Vi
S2l0MikvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlciBc
CisJJChXZWJLaXQyKS9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkgXAorCSQoV2ViS2l0
MikvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uIFwKKwkkKFdlYktp
dDIpL1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsIFwKKwkkKFdlYktpdDIpL1dl
YlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24gXAorCSQoV2ViS2l0Mikv
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0cmVhbSBcCisJJChXZWJLaXQyKS9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIgXAorCSQoV2ViS2l0MikvV2ViUHJvY2Vzcy9O
ZXR3b3JrL3dlYnJ0Yy9XZWJSVENTb2NrZXQgXAorCSQoV2ViS2l0MikvV2ViUHJvY2Vzcy9OZXR3
b3JrL3dlYnJ0Yy9XZWJSVENNb25pdG9yIFwKKwkkKFdlYktpdDIpL1dlYlByb2Nlc3MvTmV0d29y
ay93ZWJydGMvV2ViTUROU1JlZ2lzdGVyIFwKKwkkKFdlYktpdDIpL1dlYlByb2Nlc3MvTmV0d29y
ay93ZWJydGMvV2ViUlRDUmVzb2x2ZXIgXAorCSQoV2ViS2l0MikvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyIFwKKwkkKFdlYktpdDIp
L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiBcCisJJChX
ZWJLaXQyKS9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uIFwKKwkkKFdl
YktpdDIpL1dlYlByb2Nlc3MvV2ViUHJvY2VzcyBcCisJJChXZWJLaXQyKS9XZWJQcm9jZXNzL2Nv
Y29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXIgXAorCSQoV2ViS2l0MikvV2ViUHJvY2Vzcy9jb2Nv
YS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlciBcCisJJChXZWJLaXQyKS9XZWJQcm9jZXNzL2NvY29h
L1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIgXAorCSQoV2ViS2l0MikvV2ViUHJvY2Vzcy9HZW9sb2Nh
dGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIgXAorCSQoV2ViS2l0MikvV2ViUHJvY2Vzcy9BdXRv
bWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkgXAorCSQoV2ViS2l0MikvV2ViUHJvY2Vz
cy9GdWxsU2NyZWVuL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyIFwKKwkkKFdlYktpdDIpL1dlYlByb2Nl
c3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yIFwKKwkkKFdlYktpdDIpL1dlYlByb2Nl
c3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyIFwKKwkkKFdlYktpdDIpL1dl
YlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIgXAorCSQoV2ViS2l0MikvV2ViUHJvY2Vz
cy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvciBcCisJ
JChXZWJLaXQyKS9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rv
ciBcCisJJChXZWJLaXQyKS9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEgXAorCSQoV2Vi
S2l0MikvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UgXAorCSQoV2ViS2l0MikvV2ViUHJvY2Vz
cy9XZWJQYWdlL1Zpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVyIFwKKwkkKFdlYktpdDIpL1dlYlBy
b2Nlc3MvV2ViUGFnZS9Db2NvYS9UZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHkgXAorCSQoV2Vi
S2l0MikvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdVcGRhdGVEaXNwYXRjaGVyIFwKKwkkKFdlYktp
dDIpL1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24gXAorCSQoV2ViS2l0MikvUGx1
Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkgXAorCSQoV2ViS2l0MikvUGx1Z2luUHJv
Y2Vzcy9QbHVnaW5Qcm9jZXNzIFwKKwkkKFdlYktpdDIpL0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyBcCisJJChXZWJLaXQyKS9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eSBcCisJJChXZWJLaXQyKS9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJX
ZWJSVENDb2RlY3NQcm94eSBcCisJJChXZWJLaXQyKS9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyIFwKKwkkKFdlYktpdDIpL0dQVVByb2Nlc3Mv
d2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlciBcCisJJChX
ZWJLaXQyKS9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlciBcCisJ
JChXZWJLaXQyKS9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXIgXAorCSQoV2ViS2l0MikvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlciBc
CisJJChXZWJLaXQyKS9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlciBcCisJJChXZWJLaXQyKS9HUFVQcm9jZXNzL0dQVVByb2Nlc3MgXAorCSQoV2Vi
S2l0MikvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkgXAorCSQo
V2ViS2l0MikvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1hbmFnZXIg
XAorCSQoV2ViS2l0MikvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJv
eHkgXAorCSQoV2ViS2l0MikvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1Nlc3Npb25Qcm94
eSBcCisJJChXZWJLaXQyKS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lv
blByb3h5IFwKKwkkKFdlYktpdDIpL0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkgXAor
CSQoV2ViS2l0MikvR1BVUHJvY2Vzcy9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVy
UHJveHkgXAorCSQoV2ViS2l0MikvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclBy
b3h5IFwKKwkkKFdlYktpdDIpL0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5
IFwKKwkkKFdlYktpdDIpL0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFn
ZXIgXAorCSQoV2ViS2l0MikvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5
IFwKKwkkKFdlYktpdDIpL0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkgXAor
CSQoV2ViS2l0MikvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94
eSBcCisJJChXZWJLaXQyKS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25N
YW5hZ2VyIFwKICMKIAogU0NSSVBUUyA9IFwKQEAgLTI1NSwxNSArMjU2LDE1IEBAIEhFQURFUl9G
TEFHUyA9ICQoc2hlbGwgZWNobyAkKEJVSUxUX1BST0QKIAogLlBIT05ZIDogYWxsCiAKLWFsbCA6
IFwKLSAgICAkKE1FU1NBR0VfUkVDRUlWRVJTOiU9JU1lc3NhZ2VSZWNlaXZlci5jcHApIFwKLSAg
ICAkKE1FU1NBR0VfUkVDRUlWRVJTOiU9JU1lc3NhZ2VzLmgpIFwKLSAgICAkKE1FU1NBR0VfUkVD
RUlWRVJTOiU9JU1lc3NhZ2VzUmVwbGllcy5oKSBcCithbGwgOiBNZXNzYWdlTmFtZXMuaCBNZXNz
YWdlTmFtZXMuY3BwIFwKKyAgICAkKCQobm90ZGlyIE1FU1NBR0VfUkVDRUlWRVJTKTolPSVNZXNz
YWdlUmVjZWl2ZXIuY3BwKSBcCisgICAgJCgkKG5vdGRpciBNRVNTQUdFX1JFQ0VJVkVSUyk6JT0l
TWVzc2FnZXMuaCkgXAorICAgICQoJChub3RkaXIgTUVTU0FHRV9SRUNFSVZFUlMpOiU9JU1lc3Nh
Z2VzUmVwbGllcy5oKSBcCiAjCiAKLSVNZXNzYWdlUmVjZWl2ZXIuY3BwICVNZXNzYWdlcy5oICVN
ZXNzYWdlc1JlcGxpZXMuaCA6ICUubWVzc2FnZXMuaW4gJChTQ1JJUFRTKQotCUBlY2hvIEdlbmVy
YXRpbmcgbWVzc2FnZSByZWNlaXZlciBmb3IgJCouLi4KLQlAcHl0aG9uICQoV2ViS2l0MikvU2Ny
aXB0cy9nZW5lcmF0ZS1tZXNzYWdlLXJlY2VpdmVyLnB5ICQ8IC0taW1wbGVtZW50YXRpb24gJCpN
ZXNzYWdlUmVjZWl2ZXIuY3BwIC0taGVhZGVyICQqTWVzc2FnZXMuaCAtLXJlcGx5LWhlYWRlciAk
Kk1lc3NhZ2VzUmVwbGllcy5oCiskKCQobm90ZGlyIE1FU1NBR0VfUkVDRUlWRVJTKTolPSVNZXNz
YWdlUmVjZWl2ZXIuY3BwKSAkKCQobm90ZGlyIE1FU1NBR0VfUkVDRUlWRVJTKTolPSVNZXNzYWdl
cy5oKSAkKCQobm90ZGlyIE1FU1NBR0VfUkVDRUlWRVJTKTolPSVNZXNzYWdlc1JlcGxpZXMuaCk6
IE1lc3NhZ2VOYW1lcy5jcHAKK01lc3NhZ2VOYW1lcy5jcHA6ICQoYWRkc3VmZml4IC5tZXNzYWdl
cy5pbiwkKE1FU1NBR0VfUkVDRUlWRVJTKSkgJChTQ1JJUFRTKQorCUBweXRob24gJChXZWJLaXQy
KS9TY3JpcHRzL2dlbmVyYXRlLW1lc3NhZ2UtcmVjZWl2ZXIucHkgJChNRVNTQUdFX1JFQ0VJVkVS
UykKIAogVEVYVF9QUkVQUk9DRVNTT1JfRkxBR1M9LUUgLVAgLXcKIApJbmRleDogU291cmNlL1dl
YktpdC9Tb3VyY2VzQ29jb2EudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU291cmNl
c0NvY29hLnR4dAkocmV2aXNpb24gMjYwNzY0KQorKysgU291cmNlL1dlYktpdC9Tb3VyY2VzQ29j
b2EudHh0CSh3b3JraW5nIGNvcHkpCkBAIC02NTcsNiArNjU3LDcgQEAgR1BVUHJvY2Vzc1Byb3h5
TWVzc2FnZVJlY2VpdmVyLmNwcAogR1BVUHJvY2Vzc01lc3NhZ2VSZWNlaXZlci5jcHAKIExpYldl
YlJUQ0NvZGVjc1Byb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAogTGliV2ViUlRDQ29kZWNzTWVzc2Fn
ZVJlY2VpdmVyLmNwcAorTWVzc2FnZU5hbWVzLmNwcAogUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1h
bmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHlNZXNz
YWdlUmVjZWl2ZXIuY3BwCiBSZW1vdGVBdWRpb1Nlc3Npb25NZXNzYWdlUmVjZWl2ZXIuY3BwCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuY3BwCShyZXZpc2lvbiAyNjA3NjQpCisrKyBTb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEx
NCw4ICsxMTQsOCBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgTG9nZ2VyJiBsb2dnZXIoKSBm
aW5hbCB7IHJldHVybiBtX3Byb2Nlc3MubG9nZ2VyKCk7IH0KLSAgICB2b2lkIGFkZE1lc3NhZ2VS
ZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6Ok1l
c3NhZ2VSZWNlaXZlciYgcmVjZWl2ZXIpIGZpbmFsIHsgfQotICAgIHZvaWQgcmVtb3ZlTWVzc2Fn
ZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUpIGZpbmFs
IHsgfQorICAgIHZvaWQgYWRkTWVzc2FnZVJlY2VpdmVyKElQQzo6UmVjZWl2ZXJOYW1lLCBJUEM6
Ok1lc3NhZ2VSZWNlaXZlciYpIGZpbmFsIHsgfQorICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2Vp
dmVyKElQQzo6UmVjZWl2ZXJOYW1lIG1lc3NhZ2VSZWNlaXZlck5hbWUpIGZpbmFsIHsgfQogICAg
IElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbigpIGZpbmFsIHsgcmV0dXJuIG1fcHJvY2Vzcy5j
b25uZWN0aW9uKCk7IH0KICAgICBib29sIHdpbGxTdGFydENhcHR1cmUoQ2FwdHVyZURldmljZTo6
RGV2aWNlVHlwZSB0eXBlKSBjb25zdCBmaW5hbAogICAgIHsKQEAgLTE4NSw5ICsxODUsOSBAQCBM
b2dnZXImIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmxvZ2dlCiAgICAgcmV0dXJuICptX2xv
Z2dlcjsKIH0KIAotdm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlSW52
YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OlN0cmluZ1JlZmVy
ZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFt
ZSkKK3ZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZUludmFsaWRNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpNZXNzYWdlTmFtZSBtZXNzYWdl
TmFtZSkKIHsKLSAgICBXVEZMb2dBbHdheXMoIlJlY2VpdmVkIGFuIGludmFsaWQgbWVzc2FnZSBc
IiVzLiVzXCIgZnJvbSB0aGUgd2ViIHByb2Nlc3MuXG4iLCBtZXNzYWdlUmVjZWl2ZXJOYW1lLnRv
U3RyaW5nKCkuZGF0YSgpLCBtZXNzYWdlTmFtZS50b1N0cmluZygpLmRhdGEoKSk7CisgICAgV1RG
TG9nQWx3YXlzKCJSZWNlaXZlZCBhbiBpbnZhbGlkIG1lc3NhZ2UgXCIlc1wiIGZyb20gdGhlIHdl
YiBwcm9jZXNzLlxuIiwgZGVzY3JpcHRpb24obWVzc2FnZU5hbWUpKTsKICAgICBDUkFTSCgpOwog
fQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmgJKHJldmlzaW9uIDI2MDc2NCkKKysrIFNvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0
NCw3ICsxNDQsNyBAQCBwcml2YXRlOgogCiAgICAgLy8gSVBDOjpDb25uZWN0aW9uOjpDbGllbnQK
ICAgICB2b2lkIGRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYpIGZpbmFsOwotICAgIHZvaWQgZGlk
UmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6U3RyaW5nUmVmZXJl
bmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1l
KSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mLCBJUEM6Ok1lc3NhZ2VOYW1lKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVj
ZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5p
cXVlX3B0cjxJUEM6OkVuY29kZXI+JikgZmluYWw7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuY3BwCShyZXZpc2lvbiAyNjA3NjQpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjY0LDcgKzI2NCw3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFIK
ICAgICAgICAgcmV0dXJuIHBheW1lbnRDb29yZGluYXRvcigpLmRpZFJlY2VpdmVNZXNzYWdlKGNv
bm5lY3Rpb24sIGRlY29kZXIpOwogI2VuZGlmCiAKLSAgICBXVEZMb2dBbHdheXMoIlVuaGFuZGxl
ZCBuZXR3b3JrIHByb2Nlc3MgbWVzc2FnZSAnJXM6JXMnIiwgZGVjb2Rlci5tZXNzYWdlUmVjZWl2
ZXJOYW1lKCkudG9TdHJpbmcoKS5kYXRhKCksIGRlY29kZXIubWVzc2FnZU5hbWUoKS50b1N0cmlu
ZygpLmRhdGEoKSk7CisgICAgV1RGTG9nQWx3YXlzKCJVbmhhbmRsZWQgbmV0d29yayBwcm9jZXNz
IG1lc3NhZ2UgJyVzJyIsIGRlc2NyaXB0aW9uKGRlY29kZXIubWVzc2FnZU5hbWUoKSkpOwogICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCkBAIC0zMDcsNyArMzA3LDcgQEAgdm9pZCBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkUgogICAgICAgICByZXR1cm4gcGF5bWVudENv
b3JkaW5hdG9yKCkuZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIHJl
cGx5KTsKICNlbmRpZgogCi0gICAgV1RGTG9nQWx3YXlzKCJVbmhhbmRsZWQgbmV0d29yayBwcm9j
ZXNzIG1lc3NhZ2UgJyVzOiVzJyIsIGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpLnRvU3Ry
aW5nKCkuZGF0YSgpLCBkZWNvZGVyLm1lc3NhZ2VOYW1lKCkudG9TdHJpbmcoKS5kYXRhKCkpOwor
ICAgIFdURkxvZ0Fsd2F5cygiVW5oYW5kbGVkIG5ldHdvcmsgcHJvY2VzcyBtZXNzYWdlICclcyci
LCBkZXNjcmlwdGlvbihkZWNvZGVyLm1lc3NhZ2VOYW1lKCkpKTsKICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKIH0KIApAQCAtMzU2LDkgKzM1Niw5IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OmRpZEMKICNlbmRpZgogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBD
OjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpTdHJpbmdSZWZlcmVu
Y2UgbWVzc2FnZU5hbWUpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRS
ZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlTmFtZSBt
ZXNzYWdlTmFtZSkKIHsKLSAgICBSRUxFQVNFX0xPR19GQVVMVChJUEMsICJSZWNlaXZlZCBhbiBp
bnZhbGlkIG1lc3NhZ2UgJyUiIFBVQkxJQ19MT0dfU1RSSU5HICI6OiUiIFBVQkxJQ19MT0dfU1RS
SU5HICInIGZyb20gV2ViQ29udGVudCBwcm9jZXNzICUiIFBSSXU2NCAiLCByZXF1ZXN0aW5nIGZv
ciBpdCB0byBiZSB0ZXJtaW5hdGVkLiIsIG1lc3NhZ2VSZWNlaXZlck5hbWUudG9TdHJpbmcoKS5k
YXRhKCksIG1lc3NhZ2VOYW1lLnRvU3RyaW5nKCkuZGF0YSgpLCBtX3dlYlByb2Nlc3NJZGVudGlm
aWVyLnRvVUludDY0KCkpOworICAgIFJFTEVBU0VfTE9HX0ZBVUxUKElQQywgIlJlY2VpdmVkIGFu
IGludmFsaWQgbWVzc2FnZSAnJSIgUFVCTElDX0xPR19TVFJJTkcgIicgZnJvbSBXZWJDb250ZW50
IHByb2Nlc3MgJSIgUFJJdTY0ICIsIHJlcXVlc3RpbmcgZm9yIGl0IHRvIGJlIHRlcm1pbmF0ZWQu
IiwgZGVzY3JpcHRpb24obWVzc2FnZU5hbWUpLCBtX3dlYlByb2Nlc3NJZGVudGlmaWVyLnRvVUlu
dDY0KCkpOwogICAgIG1fbmV0d29ya1Byb2Nlc3MtPnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkt
PnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OlRlcm1pbmF0ZVdlYlByb2Nlc3Mo
bV93ZWJQcm9jZXNzSWRlbnRpZmllciksIDApOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5oCShyZXZpc2lvbiAyNjA3NjQpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgJKHdvcmtpbmcgY29weSkKQEAgLTE4Niw3
ICsxODYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlU3lu
Y01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRy
PElQQzo6RW5jb2Rlcj4mKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZENsb3NlKElQQzo6Q29ubmVj
dGlvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIElQ
Qzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJl
Y2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VOYW1lKSBv
dmVycmlkZTsKIAogICAgIC8vIE1lc3NhZ2UgaGFuZGxlcnMuCiAgICAgdm9pZCBkaWRSZWNlaXZl
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQ
Qzo6RGVjb2RlciYpOwpAQCAtMzI2LDggKzMyNiw2IEBAIHByaXZhdGU6CiAgICAgY29uc3QgU3Ry
aW5nJiBwYXltZW50Q29vcmRpbmF0b3JTb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIo
Y29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmKSBmaW5hbDsKICAgICBjb25zdCBTdHJp
bmcmIHBheW1lbnRDb29yZGluYXRvclNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmll
cihjb25zdCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYpIGZpbmFsOwogICAgIHN0ZDo6dW5p
cXVlX3B0cjxQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlcj4gcGF5bWVudENvb3JkaW5hdG9y
QXV0aG9yaXphdGlvblByZXNlbnRlcihXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYsIFBLUGF5
bWVudFJlcXVlc3QgKikgZmluYWw7Ci0gICAgdm9pZCBwYXltZW50Q29vcmRpbmF0b3JBZGRNZXNz
YWdlUmVjZWl2ZXIoV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmLCBjb25zdCBJUEM6OlN0cmlu
Z1JlZmVyZW5jZSYsIElQQzo6TWVzc2FnZVJlY2VpdmVyJikgZmluYWw7Ci0gICAgdm9pZCBwYXlt
ZW50Q29vcmRpbmF0b3JSZW1vdmVNZXNzYWdlUmVjZWl2ZXIoV2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHkmLCBjb25zdCBJUEM6OlN0cmluZ1JlZmVyZW5jZSYpIGZpbmFsOwogI2VuZGlmCiAKICAg
ICBSZWY8SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247CkluZGV4OiBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAkocmV2aXNpb24gMjYwNzkx
KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTIxNyw3ICsyMTcsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkaWRS
ZWNlaXZlTWVzc2FnZShJCiB7CiAgICAgQVNTRVJUKHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkg
PT0gJmNvbm5lY3Rpb24pOwogICAgIGlmIChwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpICE9ICZj
b25uZWN0aW9uKSB7Ci0gICAgICAgIFdURkxvZ0Fsd2F5cygiSWdub3JlZCBtZXNzYWdlICclczol
cycgYmVjYXVzZSBpdCBkaWQgbm90IGNvbWUgZnJvbSB0aGUgVUlQcm9jZXNzIChkZXN0aW5hdGlv
bjogJSIgUFJJdTY0ICIpIiwgZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkudG9TdHJpbmco
KS5kYXRhKCksIGRlY29kZXIubWVzc2FnZU5hbWUoKS50b1N0cmluZygpLmRhdGEoKSwgZGVjb2Rl
ci5kZXN0aW5hdGlvbklEKCkpOworICAgICAgICBXVEZMb2dBbHdheXMoIklnbm9yZWQgbWVzc2Fn
ZSAnJXMnIGJlY2F1c2UgaXQgZGlkIG5vdCBjb21lIGZyb20gdGhlIFVJUHJvY2VzcyAoZGVzdGlu
YXRpb246ICUiIFBSSXU2NCAiKSIsIGRlc2NyaXB0aW9uKGRlY29kZXIubWVzc2FnZU5hbWUoKSks
IGRlY29kZXIuZGVzdGluYXRpb25JRCgpKTsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yNDQsNyArMjQ0LDcgQEAgdm9pZCBOZXR3b3Jr
UHJvY2Vzczo6ZGlkUmVjZWl2ZVN5bmNNZXNzYQogewogICAgIEFTU0VSVChwYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpID09ICZjb25uZWN0aW9uKTsKICAgICBpZiAocGFyZW50UHJvY2Vzc0Nvbm5l
Y3Rpb24oKSAhPSAmY29ubmVjdGlvbikgewotICAgICAgICBXVEZMb2dBbHdheXMoIklnbm9yZWQg
bWVzc2FnZSAnJXM6JXMnIGJlY2F1c2UgaXQgZGlkIG5vdCBjb21lIGZyb20gdGhlIFVJUHJvY2Vz
cyAoZGVzdGluYXRpb246ICUiIFBSSXU2NCAiKSIsIGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFt
ZSgpLnRvU3RyaW5nKCkuZGF0YSgpLCBkZWNvZGVyLm1lc3NhZ2VOYW1lKCkudG9TdHJpbmcoKS5k
YXRhKCksIGRlY29kZXIuZGVzdGluYXRpb25JRCgpKTsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJJ
Z25vcmVkIG1lc3NhZ2UgJyVzJyBiZWNhdXNlIGl0IGRpZCBub3QgY29tZSBmcm9tIHRoZSBVSVBy
b2Nlc3MgKGRlc3RpbmF0aW9uOiAlIiBQUkl1NjQgIikiLCBkZXNjcmlwdGlvbihkZWNvZGVyLm1l
c3NhZ2VOYW1lKCkpLCBkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSk7CiAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpJbmRleDogU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9pb3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NJT1MubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9pb3MvTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3NJT1MubW0JKHJldmlzaW9uIDI2MDc2NCkKKysrIFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzSU9T
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC04NSwxNCArODUsNiBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGF5
bWVudEF1dGhvcml6YXRpb25QcmVzCiAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGF5bWVudEF1dGhv
cml6YXRpb25Db250cm9sbGVyPihjb29yZGluYXRvciwgcmVxdWVzdCk7CiB9CiAKLXZvaWQgTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnBheW1lbnRDb29yZGluYXRvckFkZE1lc3NhZ2VS
ZWNlaXZlcihXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYsIGNvbnN0IElQQzo6U3RyaW5nUmVm
ZXJlbmNlJiwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImKQotewotfQotCi12b2lkIE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpwYXltZW50Q29vcmRpbmF0b3JSZW1vdmVNZXNzYWdlUmVjZWl2
ZXIoV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmLCBjb25zdCBJUEM6OlN0cmluZ1JlZmVyZW5j
ZSYpCi17Ci19Ci0KICNlbmRpZiAvLyBFTkFCTEUoQVBQTEVfUEFZX1JFTU9URV9VSSkKIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25u
ZWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25u
ZWN0aW9uLmNwcAkocmV2aXNpb24gMjYwNzY0KQorKysgU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvQ29ubmVjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0LDIxICs1NCwxNyBAQCBjb25z
dCBzaXplX3QgbWF4UGVuZGluZ0luY29taW5nTWVzc2FnZXNLCiBzdGQ6OmF0b21pYzx1bnNpZ25l
ZD4gVW5ib3VuZGVkU3luY2hyb25vdXNJUENTY29wZTo6dW5ib3VuZGVkU3luY2hyb25vdXNJUEND
b3VudCA9IDA7CiAKIHN0cnVjdCBDb25uZWN0aW9uOjpXYWl0Rm9yTWVzc2FnZVN0YXRlIHsKLSAg
ICBXYWl0Rm9yTWVzc2FnZVN0YXRlKFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1l
LCBTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIE9w
dGlvblNldDxXYWl0Rm9yT3B0aW9uPiB3YWl0Rm9yT3B0aW9ucykKLSAgICAgICAgOiBtZXNzYWdl
UmVjZWl2ZXJOYW1lKG1lc3NhZ2VSZWNlaXZlck5hbWUpCi0gICAgICAgICwgbWVzc2FnZU5hbWUo
bWVzc2FnZU5hbWUpCisgICAgV2FpdEZvck1lc3NhZ2VTdGF0ZShNZXNzYWdlTmFtZSBtZXNzYWdl
TmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgT3B0aW9uU2V0PFdhaXRGb3JPcHRpb24+IHdh
aXRGb3JPcHRpb25zKQorICAgICAgICA6IG1lc3NhZ2VOYW1lKG1lc3NhZ2VOYW1lKQogICAgICAg
ICAsIGRlc3RpbmF0aW9uSUQoZGVzdGluYXRpb25JRCkKICAgICAgICAgLCB3YWl0Rm9yT3B0aW9u
cyh3YWl0Rm9yT3B0aW9ucykKICAgICB7CiAgICAgfQogCi0gICAgU3RyaW5nUmVmZXJlbmNlIG1l
c3NhZ2VSZWNlaXZlck5hbWU7Ci0gICAgU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lOworICAg
IE1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lOwogICAgIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQ7Ci0K
ICAgICBPcHRpb25TZXQ8V2FpdEZvck9wdGlvbj4gd2FpdEZvck9wdGlvbnM7CiAgICAgYm9vbCBt
ZXNzYWdlV2FpdGluZ0ludGVycnVwdGVkID0gZmFsc2U7Ci0KICAgICBzdGQ6OnVuaXF1ZV9wdHI8
RGVjb2Rlcj4gZGVjb2RlcjsKIH07CiAKQEAgLTMxNSwyMyArMzExLDIzIEBAIHZvaWQgQ29ubmVj
dGlvbjo6c2V0U2hvdWxkRXhpdE9uU3luY01lc3MKICAgICBtX3Nob3VsZEV4aXRPblN5bmNNZXNz
YWdlU2VuZEZhaWx1cmUgPSBzaG91bGRFeGl0T25TeW5jTWVzc2FnZVNlbmRGYWlsdXJlOwogfQog
Ci12b2lkIENvbm5lY3Rpb246OmFkZFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcihTdHJpbmdSZWZl
cmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgV29ya1F1ZXVlJiB3b3JrUXVldWUsIFdvcmtRdWV1
ZU1lc3NhZ2VSZWNlaXZlciogd29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKQordm9pZCBDb25uZWN0
aW9uOjphZGRXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIoUmVjZWl2ZXJOYW1lIG1lc3NhZ2VSZWNl
aXZlck5hbWUsIFdvcmtRdWV1ZSYgd29ya1F1ZXVlLCBXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIq
IHdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcikKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWlu
KCkpOwogCiAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3dvcmtRdWV1ZU1lc3NhZ2VSZWNl
aXZlcnNNdXRleCk7Ci0gICAgQVNTRVJUKCFtX3dvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcnMuY29u
dGFpbnMobWVzc2FnZVJlY2VpdmVyTmFtZSkpOworICAgIEFTU0VSVCghbV93b3JrUXVldWVNZXNz
YWdlUmVjZWl2ZXJzLmNvbnRhaW5zKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KG1lc3NhZ2VSZWNlaXZl
ck5hbWUpKSk7CiAKLSAgICBtX3dvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcnMuYWRkKG1lc3NhZ2VS
ZWNlaXZlck5hbWUsIHN0ZDo6bWFrZV9wYWlyKCZ3b3JrUXVldWUsIHdvcmtRdWV1ZU1lc3NhZ2VS
ZWNlaXZlcikpOworICAgIG1fd29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVycy5hZGQoc3RhdGljX2Nh
c3Q8dWludDhfdD4obWVzc2FnZVJlY2VpdmVyTmFtZSksIHN0ZDo6bWFrZV9wYWlyKCZ3b3JrUXVl
dWUsIHdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcikpOwogfQogCi12b2lkIENvbm5lY3Rpb246OnJl
bW92ZVdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcihTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2Vp
dmVyTmFtZSkKK3ZvaWQgQ29ubmVjdGlvbjo6cmVtb3ZlV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVy
KFJlY2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1lKQogewogICAgIEFTU0VSVChSdW5Mb29w
Ojppc01haW4oKSk7CiAKICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fd29ya1F1ZXVlTWVz
c2FnZVJlY2VpdmVyc011dGV4KTsKLSAgICBBU1NFUlQobV93b3JrUXVldWVNZXNzYWdlUmVjZWl2
ZXJzLmNvbnRhaW5zKG1lc3NhZ2VSZWNlaXZlck5hbWUpKTsKLSAgICBtX3dvcmtRdWV1ZU1lc3Nh
Z2VSZWNlaXZlcnMucmVtb3ZlKG1lc3NhZ2VSZWNlaXZlck5hbWUpOworICAgIEFTU0VSVChtX3dv
cmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcnMuY29udGFpbnMoc3RhdGljX2Nhc3Q8dWludDhfdD4obWVz
c2FnZVJlY2VpdmVyTmFtZSkpKTsKKyAgICBtX3dvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcnMucmVt
b3ZlKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KG1lc3NhZ2VSZWNlaXZlck5hbWUpKTsKIH0KIAogdm9p
ZCBDb25uZWN0aW9uOjpkaXNwYXRjaFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlck1lc3NhZ2UoV29y
a1F1ZXVlTWVzc2FnZVJlY2VpdmVyJiB3b3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIsIERlY29kZXIm
IGRlY29kZXIpCkBAIC0zNDksNyArMzQ1LDcgQEAgdm9pZCBDb25uZWN0aW9uOjpkaXNwYXRjaFdv
cmtRdWV1ZU1lc3NhZwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byByZXBseUVu
Y29kZXIgPSBtYWtlVW5pcXVlPEVuY29kZXI+KCJJUEMiLCAiU3luY01lc3NhZ2VSZXBseSIsIHN5
bmNSZXF1ZXN0SUQpOworICAgIGF1dG8gcmVwbHlFbmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNvZGVy
PihNZXNzYWdlTmFtZTo6U3luY01lc3NhZ2VSZXBseSwgc3luY1JlcXVlc3RJRCk7CiAKICAgICAv
LyBIYW5kIG9mZiBib3RoIHRoZSBkZWNvZGVyIGFuZCBlbmNvZGVyIHRvIHRoZSB3b3JrIHF1ZXVl
IG1lc3NhZ2UgcmVjZWl2ZXIuCiAgICAgd29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyLmRpZFJlY2Vp
dmVTeW5jTWVzc2FnZSgqdGhpcywgZGVjb2RlciwgcmVwbHlFbmNvZGVyKTsKQEAgLTM2MSwyNCAr
MzU3LDI0IEBAIHZvaWQgQ29ubmVjdGlvbjo6ZGlzcGF0Y2hXb3JrUXVldWVNZXNzYWcKICAgICAg
ICAgc2VuZFN5bmNSZXBseShXVEZNb3ZlKHJlcGx5RW5jb2RlcikpOwogfQogCi12b2lkIENvbm5l
Y3Rpb246OmFkZFRocmVhZE1lc3NhZ2VSZWNlaXZlcihTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJl
Y2VpdmVyTmFtZSwgVGhyZWFkTWVzc2FnZVJlY2VpdmVyKiB0aHJlYWRNZXNzYWdlUmVjZWl2ZXIp
Cit2b2lkIENvbm5lY3Rpb246OmFkZFRocmVhZE1lc3NhZ2VSZWNlaXZlcihSZWNlaXZlck5hbWUg
bWVzc2FnZVJlY2VpdmVyTmFtZSwgVGhyZWFkTWVzc2FnZVJlY2VpdmVyKiB0aHJlYWRNZXNzYWdl
UmVjZWl2ZXIpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAgIGF1dG8g
bG9ja2VyID0gaG9sZExvY2sobV90aHJlYWRNZXNzYWdlUmVjZWl2ZXJzTG9jayk7Ci0gICAgQVNT
RVJUKCFtX3RocmVhZE1lc3NhZ2VSZWNlaXZlcnMuY29udGFpbnMobWVzc2FnZVJlY2VpdmVyTmFt
ZSkpOworICAgIEFTU0VSVCghbV90aHJlYWRNZXNzYWdlUmVjZWl2ZXJzLmNvbnRhaW5zKHN0YXRp
Y19jYXN0PHVpbnQ4X3Q+KG1lc3NhZ2VSZWNlaXZlck5hbWUpKSk7CiAKLSAgICBtX3RocmVhZE1l
c3NhZ2VSZWNlaXZlcnMuYWRkKG1lc3NhZ2VSZWNlaXZlck5hbWUsIHRocmVhZE1lc3NhZ2VSZWNl
aXZlcik7CisgICAgbV90aHJlYWRNZXNzYWdlUmVjZWl2ZXJzLmFkZChzdGF0aWNfY2FzdDx1aW50
OF90PihtZXNzYWdlUmVjZWl2ZXJOYW1lKSwgdGhyZWFkTWVzc2FnZVJlY2VpdmVyKTsKIH0KIAot
dm9pZCBDb25uZWN0aW9uOjpyZW1vdmVUaHJlYWRNZXNzYWdlUmVjZWl2ZXIoU3RyaW5nUmVmZXJl
bmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUpCit2b2lkIENvbm5lY3Rpb246OnJlbW92ZVRocmVhZE1l
c3NhZ2VSZWNlaXZlcihSZWNlaXZlck5hbWUgbWVzc2FnZVJlY2VpdmVyTmFtZSkKIHsKICAgICBB
U1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayht
X3RocmVhZE1lc3NhZ2VSZWNlaXZlcnNMb2NrKTsKLSAgICBBU1NFUlQobV90aHJlYWRNZXNzYWdl
UmVjZWl2ZXJzLmNvbnRhaW5zKG1lc3NhZ2VSZWNlaXZlck5hbWUpKTsKKyAgICBBU1NFUlQobV90
aHJlYWRNZXNzYWdlUmVjZWl2ZXJzLmNvbnRhaW5zKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KG1lc3Nh
Z2VSZWNlaXZlck5hbWUpKSk7CiAKLSAgICBtX3RocmVhZE1lc3NhZ2VSZWNlaXZlcnMucmVtb3Zl
KG1lc3NhZ2VSZWNlaXZlck5hbWUpOworICAgIG1fdGhyZWFkTWVzc2FnZVJlY2VpdmVycy5yZW1v
dmUoc3RhdGljX2Nhc3Q8dWludDhfdD4obWVzc2FnZVJlY2VpdmVyTmFtZSkpOwogfQogCiB2b2lk
IENvbm5lY3Rpb246OmRpc3BhdGNoVGhyZWFkTWVzc2FnZVJlY2VpdmVyTWVzc2FnZShUaHJlYWRN
ZXNzYWdlUmVjZWl2ZXImIHRocmVhZE1lc3NhZ2VSZWNlaXZlciwgRGVjb2RlciYgZGVjb2RlcikK
QEAgLTM5NSw3ICszOTEsNyBAQCB2b2lkIENvbm5lY3Rpb246OmRpc3BhdGNoVGhyZWFkTWVzc2Fn
ZVJlCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIHJlcGx5RW5jb2RlciA9IG1h
a2VVbmlxdWU8RW5jb2Rlcj4oIklQQyIsICJTeW5jTWVzc2FnZVJlcGx5Iiwgc3luY1JlcXVlc3RJ
RCk7CisgICAgYXV0byByZXBseUVuY29kZXIgPSBtYWtlVW5pcXVlPEVuY29kZXI+KE1lc3NhZ2VO
YW1lOjpTeW5jTWVzc2FnZVJlcGx5LCBzeW5jUmVxdWVzdElEKTsKICAgICB0aHJlYWRNZXNzYWdl
UmVjZWl2ZXIuZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKCp0aGlzLCBkZWNvZGVyLCByZXBseUVuY29k
ZXIpOwogCiAgICAgLy8gRklYTUU6IElmIHRoZSBtZXNzYWdlIHdhcyBpbnZhbGlkLCB3ZSBzaG91
bGQgc2VuZCBiYWNrIGEgU3luY01lc3NhZ2VFcnJvci4KQEAgLTQzNiw5ICs0MzIsOSBAQCB2b2lk
IENvbm5lY3Rpb246Om1hcmtDdXJyZW50bHlEaXNwYXRjaGVkCiAgICAgbV9kaWRSZWNlaXZlSW52
YWxpZE1lc3NhZ2UgPSB0cnVlOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8RW5jb2Rlcj4gQ29ubmVj
dGlvbjo6Y3JlYXRlU3luY01lc3NhZ2VFbmNvZGVyKFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVj
ZWl2ZXJOYW1lLCBTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0
aW9uSUQsIHVpbnQ2NF90JiBzeW5jUmVxdWVzdElEKQorc3RkOjp1bmlxdWVfcHRyPEVuY29kZXI+
IENvbm5lY3Rpb246OmNyZWF0ZVN5bmNNZXNzYWdlRW5jb2RlcihNZXNzYWdlTmFtZSBtZXNzYWdl
TmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgdWludDY0X3QmIHN5bmNSZXF1ZXN0SUQpCiB7
Ci0gICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNvZGVyPihtZXNzYWdlUmVjZWl2ZXJO
YW1lLCBtZXNzYWdlTmFtZSwgZGVzdGluYXRpb25JRCk7CisgICAgYXV0byBlbmNvZGVyID0gbWFr
ZVVuaXF1ZTxFbmNvZGVyPihtZXNzYWdlTmFtZSwgZGVzdGluYXRpb25JRCk7CiAgICAgZW5jb2Rl
ci0+c2V0SXNTeW5jTWVzc2FnZSh0cnVlKTsKIAogICAgIC8vIEVuY29kZSB0aGUgc3luYyByZXF1
ZXN0IElELgpAQCAtNDUzLDkgKzQ0OSw5IEBAIGJvb2wgQ29ubmVjdGlvbjo6c2VuZE1lc3NhZ2Uo
c3RkOjp1bmlxdWUKICAgICBpZiAoIWlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgaWYgKGlzTWFpblRocmVhZCgpICYmIG1faW5EaXNwYXRjaE1lc3NhZ2VNYXJrZWRUb1Vz
ZUZ1bGx5U3luY2hyb25vdXNNb2RlRm9yVGVzdGluZyAmJiAhZW5jb2Rlci0+aXNTeW5jTWVzc2Fn
ZSgpICYmICEoZW5jb2Rlci0+bWVzc2FnZVJlY2VpdmVyTmFtZSgpID09ICJJUEMiKSAmJiAhc2Vu
ZE9wdGlvbnMuY29udGFpbnMoU2VuZE9wdGlvbjo6SWdub3JlRnVsbHlTeW5jaHJvbm91c01vZGUp
KSB7CisgICAgaWYgKGlzTWFpblRocmVhZCgpICYmIG1faW5EaXNwYXRjaE1lc3NhZ2VNYXJrZWRU
b1VzZUZ1bGx5U3luY2hyb25vdXNNb2RlRm9yVGVzdGluZyAmJiAhZW5jb2Rlci0+aXNTeW5jTWVz
c2FnZSgpICYmICEoZW5jb2Rlci0+bWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IFJlY2VpdmVyTmFt
ZTo6SVBDKSAmJiAhc2VuZE9wdGlvbnMuY29udGFpbnMoU2VuZE9wdGlvbjo6SWdub3JlRnVsbHlT
eW5jaHJvbm91c01vZGUpKSB7CiAgICAgICAgIHVpbnQ2NF90IHN5bmNSZXF1ZXN0SUQ7Ci0gICAg
ICAgIGF1dG8gd3JhcHBlZE1lc3NhZ2UgPSBjcmVhdGVTeW5jTWVzc2FnZUVuY29kZXIoIklQQyIs
ICJXcmFwcGVkQXN5bmNNZXNzYWdlRm9yVGVzdGluZyIsIGVuY29kZXItPmRlc3RpbmF0aW9uSUQo
KSwgc3luY1JlcXVlc3RJRCk7CisgICAgICAgIGF1dG8gd3JhcHBlZE1lc3NhZ2UgPSBjcmVhdGVT
eW5jTWVzc2FnZUVuY29kZXIoTWVzc2FnZU5hbWU6OldyYXBwZWRBc3luY01lc3NhZ2VGb3JUZXN0
aW5nLCBlbmNvZGVyLT5kZXN0aW5hdGlvbklEKCksIHN5bmNSZXF1ZXN0SUQpOwogICAgICAgICB3
cmFwcGVkTWVzc2FnZS0+c2V0RnVsbHlTeW5jaHJvbm91c01vZGVGb3JUZXN0aW5nKCk7CiAgICAg
ICAgIHdyYXBwZWRNZXNzYWdlLT53cmFwRm9yVGVzdGluZyhXVEZNb3ZlKGVuY29kZXIpKTsKICAg
ICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KHNlbmRTeW5jTWVzc2FnZShzeW5jUmVxdWVz
dElELCBXVEZNb3ZlKHdyYXBwZWRNZXNzYWdlKSwgU2Vjb25kczo6aW5maW5pdHkoKSwgeyB9KSk7
CkBAIC00OTAsNyArNDg2LDcgQEAgU2Vjb25kcyBDb25uZWN0aW9uOjp0aW1lb3V0UmVzcGVjdGlu
Z0lnbgogICAgIHJldHVybiBtX2lnbm9yZVRpbWVvdXRzRm9yVGVzdGluZyA/IFNlY29uZHM6Omlu
ZmluaXR5KCkgOiB0aW1lb3V0OwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gQ29ubmVj
dGlvbjo6d2FpdEZvck1lc3NhZ2UoU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUs
IFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgU2Vj
b25kcyB0aW1lb3V0LCBPcHRpb25TZXQ8V2FpdEZvck9wdGlvbj4gd2FpdEZvck9wdGlvbnMpCitz
dGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gQ29ubmVjdGlvbjo6d2FpdEZvck1lc3NhZ2UoTWVzc2Fn
ZU5hbWUgbWVzc2FnZU5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91
dCwgT3B0aW9uU2V0PFdhaXRGb3JPcHRpb24+IHdhaXRGb3JPcHRpb25zKQogewogICAgIEFTU0VS
VChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgYXV0byBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyk7CkBAIC01MDYsNyArNTAyLDcgQEAgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IENvbm5l
Y3Rpb246OndhaQogICAgICAgICBmb3IgKGF1dG8gaXQgPSBtX2luY29taW5nTWVzc2FnZXMuYmVn
aW4oKSwgZW5kID0gbV9pbmNvbWluZ01lc3NhZ2VzLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsK
ICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiYgbWVzc2FnZSA9ICppdDsKIAot
ICAgICAgICAgICAgaWYgKG1lc3NhZ2UtPm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBtZXNzYWdl
UmVjZWl2ZXJOYW1lICYmIG1lc3NhZ2UtPm1lc3NhZ2VOYW1lKCkgPT0gbWVzc2FnZU5hbWUgJiYg
bWVzc2FnZS0+ZGVzdGluYXRpb25JRCgpID09IGRlc3RpbmF0aW9uSUQpIHsKKyAgICAgICAgICAg
IGlmIChtZXNzYWdlLT5tZXNzYWdlTmFtZSgpID09IG1lc3NhZ2VOYW1lICYmIG1lc3NhZ2UtPmRl
c3RpbmF0aW9uSUQoKSA9PSBkZXN0aW5hdGlvbklEKSB7CiAgICAgICAgICAgICAgICAgc3RkOjp1
bmlxdWVfcHRyPERlY29kZXI+IHJldHVybmVkTWVzc2FnZSA9IFdURk1vdmUobWVzc2FnZSk7CiAK
ICAgICAgICAgICAgICAgICBtX2luY29taW5nTWVzc2FnZXMucmVtb3ZlKGl0KTsKQEAgLTUyOCw3
ICs1MjQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gQ29ubmVjdGlvbjo6d2FpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIFdhaXRGb3JNZXNzYWdlU3RhdGUgd2Fp
dGluZ0Zvck1lc3NhZ2UobWVzc2FnZVJlY2VpdmVyTmFtZSwgbWVzc2FnZU5hbWUsIGRlc3RpbmF0
aW9uSUQsIHdhaXRGb3JPcHRpb25zKTsKKyAgICBXYWl0Rm9yTWVzc2FnZVN0YXRlIHdhaXRpbmdG
b3JNZXNzYWdlKG1lc3NhZ2VOYW1lLCBkZXN0aW5hdGlvbklELCB3YWl0Rm9yT3B0aW9ucyk7CiAK
ICAgICB7CiAgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV93YWl0Rm9yTWVzc2FnZU11
dGV4KTsKQEAgLTYwMCwxNCArNTk2LDEzIEBAIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiBDb25u
ZWN0aW9uOjpzZW4KICAgICBpZiAoc2VuZFN5bmNPcHRpb25zLmNvbnRhaW5zKFNlbmRTeW5jT3B0
aW9uOjpGb3JjZURpc3BhdGNoV2hlbkRlc3RpbmF0aW9uSXNXYWl0aW5nRm9yVW5ib3VuZGVkU3lu
Y1JlcGx5KSkKICAgICAgICAgc2VuZE9wdGlvbnMgPSBzZW5kT3B0aW9ucyB8IElQQzo6U2VuZE9w
dGlvbjo6RGlzcGF0Y2hNZXNzYWdlRXZlbldoZW5XYWl0aW5nRm9yVW5ib3VuZGVkU3luY1JlcGx5
OwogCi0gICAgYXV0byBtZXNzYWdlUmVjZWl2ZXJOYW1lID0gZW5jb2Rlci0+bWVzc2FnZVJlY2Vp
dmVyTmFtZSgpOwogICAgIGF1dG8gbWVzc2FnZU5hbWUgPSBlbmNvZGVyLT5tZXNzYWdlTmFtZSgp
OwogICAgIHNlbmRNZXNzYWdlKFdURk1vdmUoZW5jb2RlciksIHNlbmRPcHRpb25zKTsKIAogICAg
IC8vIFRoZW4gd2FpdCBmb3IgYSByZXBseS4gV2FpdGluZyBmb3IgYSByZXBseSBjb3VsZCBpbnZv
bHZlIGRpc3BhdGNoaW5nIGluY29taW5nIHN5bmMgbWVzc2FnZXMsIHNvCiAgICAgLy8ga2VlcCBh
biBleHRyYSByZWZlcmVuY2UgdG8gdGhlIGNvbm5lY3Rpb24gaGVyZSBpbiBjYXNlIGl0J3MgaW52
YWxpZGF0ZWQuCiAgICAgUmVmPENvbm5lY3Rpb24+IHByb3RlY3QoKnRoaXMpOwotICAgIHN0ZDo6
dW5pcXVlX3B0cjxEZWNvZGVyPiByZXBseSA9IHdhaXRGb3JTeW5jUmVwbHkoc3luY1JlcXVlc3RJ
RCwgbWVzc2FnZVJlY2VpdmVyTmFtZSwgbWVzc2FnZU5hbWUsIHRpbWVvdXQsIHNlbmRTeW5jT3B0
aW9ucyk7CisgICAgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IHJlcGx5ID0gd2FpdEZvclN5bmNS
ZXBseShzeW5jUmVxdWVzdElELCBtZXNzYWdlTmFtZSwgdGltZW91dCwgc2VuZFN5bmNPcHRpb25z
KTsKIAogICAgIC0tbV9pblNlbmRTeW5jQ291bnQ7CiAKQEAgLTYyNCw3ICs2MTksNyBAQCBzdGQ6
OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gQ29ubmVjdGlvbjo6c2VuCiAgICAgcmV0dXJuIHJlcGx5Owog
fQogCi1zdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gQ29ubmVjdGlvbjo6d2FpdEZvclN5bmNSZXBs
eSh1aW50NjRfdCBzeW5jUmVxdWVzdElELCBTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVy
TmFtZSwgU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lLCBTZWNvbmRzIHRpbWVvdXQsIE9wdGlv
blNldDxTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zKQorc3RkOjp1bmlxdWVfcHRyPERl
Y29kZXI+IENvbm5lY3Rpb246OndhaXRGb3JTeW5jUmVwbHkodWludDY0X3Qgc3luY1JlcXVlc3RJ
RCwgTWVzc2FnZU5hbWUgbWVzc2FnZU5hbWUsIFNlY29uZHMgdGltZW91dCwgT3B0aW9uU2V0PFNl
bmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMpCiB7CiAgICAgdGltZW91dCA9IHRpbWVvdXRS
ZXNwZWN0aW5nSWdub3JlVGltZW91dHNGb3JUZXN0aW5nKHRpbWVvdXQpOwogICAgIE1vbm90b25p
Y1RpbWUgYWJzb2x1dGVUaW1lID0gTW9ub3RvbmljVGltZTo6bm93KCkgKyB0aW1lb3V0OwpAQCAt
NjY5LDkgKzY2NCw5IEBAIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiBDb25uZWN0aW9uOjp3YWkK
ICAgICB9CiAKICNpZiBPUyhEQVJXSU4pCi0gICAgUkVMRUFTRV9MT0dfRVJST1IoSVBDLCAiQ29u
bmVjdGlvbjo6d2FpdEZvclN5bmNSZXBseTogVGltZWQtb3V0IHdoaWxlIHdhaXRpbmcgZm9yIHJl
cGx5IGZvciAle3B1YmxpY31zOjole3B1YmxpY31zIGZyb20gcHJvY2VzcyAlZCwgaWQgPSAlIiBQ
Ukl1NjQsIG1lc3NhZ2VSZWNlaXZlck5hbWUudG9TdHJpbmcoKS5kYXRhKCksIG1lc3NhZ2VOYW1l
LnRvU3RyaW5nKCkuZGF0YSgpLCByZW1vdGVQcm9jZXNzSUQoKSwgc3luY1JlcXVlc3RJRCk7Cisg
ICAgUkVMRUFTRV9MT0dfRVJST1IoSVBDLCAiQ29ubmVjdGlvbjo6d2FpdEZvclN5bmNSZXBseTog
VGltZWQtb3V0IHdoaWxlIHdhaXRpbmcgZm9yIHJlcGx5IGZvciAle3B1YmxpY31zIGZyb20gcHJv
Y2VzcyAlZCwgaWQgPSAlIiBQUkl1NjQsIGRlc2NyaXB0aW9uKG1lc3NhZ2VOYW1lKSwgcmVtb3Rl
UHJvY2Vzc0lEKCksIHN5bmNSZXF1ZXN0SUQpOwogI2Vsc2UKLSAgICBSRUxFQVNFX0xPR19FUlJP
UihJUEMsICJDb25uZWN0aW9uOjp3YWl0Rm9yU3luY1JlcGx5OiBUaW1lZC1vdXQgd2hpbGUgd2Fp
dGluZyBmb3IgcmVwbHkgZm9yICVzOjolcywgaWQgPSAlIiBQUkl1NjQsIG1lc3NhZ2VSZWNlaXZl
ck5hbWUudG9TdHJpbmcoKS5kYXRhKCksIG1lc3NhZ2VOYW1lLnRvU3RyaW5nKCkuZGF0YSgpLCBz
eW5jUmVxdWVzdElEKTsKKyAgICBSRUxFQVNFX0xPR19FUlJPUihJUEMsICJDb25uZWN0aW9uOjp3
YWl0Rm9yU3luY1JlcGx5OiBUaW1lZC1vdXQgd2hpbGUgd2FpdGluZyBmb3IgcmVwbHkgZm9yICVz
LCBpZCA9ICUiIFBSSXU2NCwgZGVzY3JpcHRpb24obWVzc2FnZU5hbWUpLCBzeW5jUmVxdWVzdElE
KTsKICNlbmRpZgogCiAgICAgZGlkUmVjZWl2ZVN5bmNSZXBseShzZW5kU3luY09wdGlvbnMpOwpA
QCAtNzExLDIzICs3MDYsMTYgQEAgdm9pZCBDb25uZWN0aW9uOjpwcm9jZXNzSW5jb21pbmdTeW5j
UmVwbAogCiB2b2lkIENvbm5lY3Rpb246OnByb2Nlc3NJbmNvbWluZ01lc3NhZ2Uoc3RkOjp1bmlx
dWVfcHRyPERlY29kZXI+IG1lc3NhZ2UpCiB7Ci0gICAgQVNTRVJUKCFtZXNzYWdlLT5tZXNzYWdl
UmVjZWl2ZXJOYW1lKCkuaXNFbXB0eSgpKTsKLSAgICBBU1NFUlQoIW1lc3NhZ2UtPm1lc3NhZ2VO
YW1lKCkuaXNFbXB0eSgpKTsKKyAgICBBU1NFUlQobWVzc2FnZS0+bWVzc2FnZVJlY2VpdmVyTmFt
ZSgpICE9IFJlY2VpdmVyTmFtZTo6SW52YWxpZCk7CiAKLSAgICBpZiAobWVzc2FnZS0+bWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpID09ICJJUEMiICYmIG1lc3NhZ2UtPm1lc3NhZ2VOYW1lKCkgPT0gIlN5
bmNNZXNzYWdlUmVwbHkiKSB7CisgICAgaWYgKG1lc3NhZ2UtPm1lc3NhZ2VOYW1lKCkgPT0gTWVz
c2FnZU5hbWU6OlN5bmNNZXNzYWdlUmVwbHkpIHsKICAgICAgICAgcHJvY2Vzc0luY29taW5nU3lu
Y1JlcGx5KFdURk1vdmUobWVzc2FnZSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
aWYgKCFXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXJNYXA6OmlzVmFsaWRLZXkobWVzc2FnZS0+bWVz
c2FnZVJlY2VpdmVyTmFtZSgpKSB8fCAhVGhyZWFkTWVzc2FnZVJlY2VpdmVyTWFwOjppc1ZhbGlk
S2V5KG1lc3NhZ2UtPm1lc3NhZ2VSZWNlaXZlck5hbWUoKSkpIHsKLSAgICAgICAgUmVmUHRyPENv
bm5lY3Rpb24+IHByb3RlY3RlZFRoaXModGhpcyk7Ci0gICAgICAgIFN0cmluZ1JlZmVyZW5jZSBt
ZXNzYWdlUmVjZWl2ZXJOYW1lUmVmZXJlbmNlID0gbWVzc2FnZS0+bWVzc2FnZVJlY2VpdmVyTmFt
ZSgpOwotICAgICAgICBTdHJpbmcgbWVzc2FnZVJlY2VpdmVyTmFtZShtZXNzYWdlUmVjZWl2ZXJO
YW1lUmVmZXJlbmNlLmlzRW1wdHkoKSA/ICI8dW5rbm93biBtZXNzYWdlIHJlY2VpdmVyPiIgOiBT
dHJpbmcobWVzc2FnZVJlY2VpdmVyTmFtZVJlZmVyZW5jZS5kYXRhKCksIG1lc3NhZ2VSZWNlaXZl
ck5hbWVSZWZlcmVuY2Uuc2l6ZSgpKSk7Ci0gICAgICAgIFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdl
TmFtZVJlZmVyZW5jZSA9IG1lc3NhZ2UtPm1lc3NhZ2VOYW1lKCk7Ci0gICAgICAgIFN0cmluZyBt
ZXNzYWdlTmFtZShtZXNzYWdlTmFtZVJlZmVyZW5jZS5pc0VtcHR5KCkgPyAiPHVua25vd24gbWVz
c2FnZT4iIDogU3RyaW5nKG1lc3NhZ2VOYW1lUmVmZXJlbmNlLmRhdGEoKSwgbWVzc2FnZU5hbWVS
ZWZlcmVuY2Uuc2l6ZSgpKSk7Ci0KLSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIG1lc3NhZ2VSZWNlaXZlck5hbWUgPSBXVEZN
b3ZlKG1lc3NhZ2VSZWNlaXZlck5hbWUpLCBtZXNzYWdlTmFtZSA9IFdURk1vdmUobWVzc2FnZU5h
bWUpXSgpIG11dGFibGUgewotICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+ZGlzcGF0Y2hEaWRS
ZWNlaXZlSW52YWxpZE1lc3NhZ2UobWVzc2FnZVJlY2VpdmVyTmFtZS51dGY4KCksIG1lc3NhZ2VO
YW1lLnV0ZjgoKSk7CisgICAgaWYgKCFXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXJNYXA6OmlzVmFs
aWRLZXkoc3RhdGljX2Nhc3Q8dWludDhfdD4obWVzc2FnZS0+bWVzc2FnZVJlY2VpdmVyTmFtZSgp
KSkgfHwgIVRocmVhZE1lc3NhZ2VSZWNlaXZlck1hcDo6aXNWYWxpZEtleShzdGF0aWNfY2FzdDx1
aW50OF90PihtZXNzYWdlLT5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkpKSkgeworICAgICAgICBSdW5M
b29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgbWVz
c2FnZU5hbWUgPSBtZXNzYWdlLT5tZXNzYWdlTmFtZSgpXSgpIG11dGFibGUgeworICAgICAgICAg
ICAgcHJvdGVjdGVkVGhpcy0+ZGlzcGF0Y2hEaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UobWVzc2Fn
ZU5hbWUpOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTc1OSw3ICs3
NDcsNyBAQCB2b2lkIENvbm5lY3Rpb246OnByb2Nlc3NJbmNvbWluZ01lc3NhZ2UoCiAgICAgICAg
IGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV93YWl0Rm9yTWVzc2FnZU11dGV4KTsKIAogICAgICAg
ICBpZiAobV93YWl0aW5nRm9yTWVzc2FnZSAmJiAhbV93YWl0aW5nRm9yTWVzc2FnZS0+ZGVjb2Rl
cikgewotICAgICAgICAgICAgaWYgKG1fd2FpdGluZ0Zvck1lc3NhZ2UtPm1lc3NhZ2VSZWNlaXZl
ck5hbWUgPT0gbWVzc2FnZS0+bWVzc2FnZVJlY2VpdmVyTmFtZSgpICYmIG1fd2FpdGluZ0Zvck1l
c3NhZ2UtPm1lc3NhZ2VOYW1lID09IG1lc3NhZ2UtPm1lc3NhZ2VOYW1lKCkgJiYgbV93YWl0aW5n
Rm9yTWVzc2FnZS0+ZGVzdGluYXRpb25JRCA9PSBtZXNzYWdlLT5kZXN0aW5hdGlvbklEKCkpIHsK
KyAgICAgICAgICAgIGlmIChtX3dhaXRpbmdGb3JNZXNzYWdlLT5tZXNzYWdlTmFtZSA9PSBtZXNz
YWdlLT5tZXNzYWdlTmFtZSgpICYmIG1fd2FpdGluZ0Zvck1lc3NhZ2UtPmRlc3RpbmF0aW9uSUQg
PT0gbWVzc2FnZS0+ZGVzdGluYXRpb25JRCgpKSB7CiAgICAgICAgICAgICAgICAgbV93YWl0aW5n
Rm9yTWVzc2FnZS0+ZGVjb2RlciA9IFdURk1vdmUobWVzc2FnZSk7CiAgICAgICAgICAgICAgICAg
QVNTRVJUKG1fd2FpdGluZ0Zvck1lc3NhZ2UtPmRlY29kZXIpOwogICAgICAgICAgICAgICAgIG1f
d2FpdEZvck1lc3NhZ2VDb25kaXRpb24ubm90aWZ5T25lKCk7CkBAIC05MTIsOSArOTAwLDkgQEAg
dm9pZCBDb25uZWN0aW9uOjpkaXNwYXRjaFN5bmNNZXNzYWdlKERlYwogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgYXV0byByZXBseUVuY29kZXIgPSBtYWtlVW5pcXVlPEVuY29kZXI+KCJJ
UEMiLCAiU3luY01lc3NhZ2VSZXBseSIsIHN5bmNSZXF1ZXN0SUQpOworICAgIGF1dG8gcmVwbHlF
bmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNvZGVyPihNZXNzYWdlTmFtZTo6U3luY01lc3NhZ2VSZXBs
eSwgc3luY1JlcXVlc3RJRCk7CiAKLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1l
KCkgPT0gIklQQyIgJiYgZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09ICJXcmFwcGVkQXN5bmNNZXNz
YWdlRm9yVGVzdGluZyIpIHsKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3Nh
Z2VOYW1lOjpXcmFwcGVkQXN5bmNNZXNzYWdlRm9yVGVzdGluZykgewogICAgICAgICBpZiAoIW1f
ZnVsbHlTeW5jaHJvbm91c01vZGVJc0FsbG93ZWRGb3JUZXN0aW5nKSB7CiAgICAgICAgICAgICBk
ZWNvZGVyLm1hcmtJbnZhbGlkKCk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC05MzYsMTQgKzky
NCwxNCBAQCB2b2lkIENvbm5lY3Rpb246OmRpc3BhdGNoU3luY01lc3NhZ2UoRGVjCiAgICAgICAg
IHNlbmRTeW5jUmVwbHkoV1RGTW92ZShyZXBseUVuY29kZXIpKTsKIH0KIAotdm9pZCBDb25uZWN0
aW9uOjpkaXNwYXRjaERpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShjb25zdCBDU3RyaW5nJiBtZXNz
YWdlUmVjZWl2ZXJOYW1lU3RyaW5nLCBjb25zdCBDU3RyaW5nJiBtZXNzYWdlTmFtZVN0cmluZykK
K3ZvaWQgQ29ubmVjdGlvbjo6ZGlzcGF0Y2hEaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoTWVzc2Fn
ZU5hbWUgbWVzc2FnZU5hbWUpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAog
ICAgIGlmICghaXNWYWxpZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2NsaWVudC5kaWRS
ZWNlaXZlSW52YWxpZE1lc3NhZ2UoKnRoaXMsIFN0cmluZ1JlZmVyZW5jZShtZXNzYWdlUmVjZWl2
ZXJOYW1lU3RyaW5nLmRhdGEoKSwgbWVzc2FnZVJlY2VpdmVyTmFtZVN0cmluZy5sZW5ndGgoKSks
IFN0cmluZ1JlZmVyZW5jZShtZXNzYWdlTmFtZVN0cmluZy5kYXRhKCksIG1lc3NhZ2VOYW1lU3Ry
aW5nLmxlbmd0aCgpKSk7CisgICAgbV9jbGllbnQuZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKCp0
aGlzLCBtZXNzYWdlTmFtZSk7CiB9CiAKIHZvaWQgQ29ubmVjdGlvbjo6ZGlkRmFpbFRvU2VuZFN5
bmNNZXNzYWdlKCkKQEAgLTk4OSw3ICs5NzcsNyBAQCB2b2lkIENvbm5lY3Rpb246OmVucXVldWVJ
bmNvbWluZ01lc3NhZ2UoCiB2b2lkIENvbm5lY3Rpb246OmRpc3BhdGNoTWVzc2FnZShEZWNvZGVy
JiBkZWNvZGVyKQogewogICAgIFJFTEVBU0VfQVNTRVJUKGlzVmFsaWQoKSk7Ci0gICAgaWYgKGRl
Y29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09ICJBc3luY1JlcGx5IikgeworICAgIGlmIChk
ZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBSZWNlaXZlck5hbWU6OkFzeW5jUmVwbHkp
IHsKICAgICAgICAgT3B0aW9uYWw8dWludDY0X3Q+IGxpc3RlbmVySUQ7CiAgICAgICAgIGRlY29k
ZXIgPj4gbGlzdGVuZXJJRDsKICAgICAgICAgaWYgKCFsaXN0ZW5lcklEKSB7CkBAIC0xMDExLDcg
Kzk5OSw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6ZGlzcGF0Y2hNZXNzYWdlKERlY29kZXIKIGJvb2wg
Q29ubmVjdGlvbjo6ZGlzcGF0Y2hNZXNzYWdlVG9Xb3JrUXVldWVSZWNlaXZlcihzdGQ6OnVuaXF1
ZV9wdHI8RGVjb2Rlcj4mIG1lc3NhZ2UpCiB7CiAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayht
X3dvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcnNNdXRleCk7Ci0gICAgYXV0byBpdCA9IG1fd29ya1F1
ZXVlTWVzc2FnZVJlY2VpdmVycy5maW5kKG1lc3NhZ2UtPm1lc3NhZ2VSZWNlaXZlck5hbWUoKSk7
CisgICAgYXV0byBpdCA9IG1fd29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVycy5maW5kKHN0YXRpY19j
YXN0PHVpbnQ4X3Q+KG1lc3NhZ2UtPm1lc3NhZ2VSZWNlaXZlck5hbWUoKSkpOwogICAgIGlmIChp
dCAhPSBtX3dvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcnMuZW5kKCkpIHsKICAgICAgICAgaXQtPnZh
bHVlLmZpcnN0LT5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCB3b3Jr
UXVldWVNZXNzYWdlUmVjZWl2ZXIgPSBpdC0+dmFsdWUuc2Vjb25kLCBkZWNvZGVyID0gV1RGTW92
ZShtZXNzYWdlKV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPmRpc3Bh
dGNoV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyTWVzc2FnZSgqd29ya1F1ZXVlTWVzc2FnZVJlY2Vp
dmVyLCAqZGVjb2Rlcik7CkBAIC0xMDI2LDcgKzEwMTQsNyBAQCBib29sIENvbm5lY3Rpb246OmRp
c3BhdGNoTWVzc2FnZVRvVGhyZWFkCiAgICAgUmVmUHRyPFRocmVhZE1lc3NhZ2VSZWNlaXZlcj4g
cHJvdGVjdGVkVGhyZWFkTWVzc2FnZVJlY2VpdmVyOwogICAgIHsKICAgICAgICAgYXV0byBsb2Nr
ZXIgPSBob2xkTG9jayhtX3RocmVhZE1lc3NhZ2VSZWNlaXZlcnNMb2NrKTsKLSAgICAgICAgcHJv
dGVjdGVkVGhyZWFkTWVzc2FnZVJlY2VpdmVyID0gbV90aHJlYWRNZXNzYWdlUmVjZWl2ZXJzLmdl
dChtZXNzYWdlLT5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkpOworICAgICAgICBwcm90ZWN0ZWRUaHJl
YWRNZXNzYWdlUmVjZWl2ZXIgPSBtX3RocmVhZE1lc3NhZ2VSZWNlaXZlcnMuZ2V0KHN0YXRpY19j
YXN0PHVpbnQ4X3Q+KG1lc3NhZ2UtPm1lc3NhZ2VSZWNlaXZlck5hbWUoKSkpOwogICAgIH0KIAog
ICAgIGlmIChwcm90ZWN0ZWRUaHJlYWRNZXNzYWdlUmVjZWl2ZXIpIHsKQEAgLTEwNTQsNyArMTA0
Miw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6ZGlzcGF0Y2hNZXNzYWdlKHN0ZDo6dW4KIAogICAgIGlm
IChtZXNzYWdlLT5zaG91bGRVc2VGdWxseVN5bmNocm9ub3VzTW9kZUZvclRlc3RpbmcoKSkgewog
ICAgICAgICBpZiAoIW1fZnVsbHlTeW5jaHJvbm91c01vZGVJc0FsbG93ZWRGb3JUZXN0aW5nKSB7
Ci0gICAgICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoKnRoaXMsIG1l
c3NhZ2UtPm1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbWVzc2FnZS0+bWVzc2FnZU5hbWUoKSk7Cisg
ICAgICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoKnRoaXMsIG1lc3Nh
Z2UtPm1lc3NhZ2VOYW1lKCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAg
ICAgIG1faW5EaXNwYXRjaE1lc3NhZ2VNYXJrZWRUb1VzZUZ1bGx5U3luY2hyb25vdXNNb2RlRm9y
VGVzdGluZysrOwpAQCAtMTA4OCw3ICsxMDc2LDcgQEAgdm9pZCBDb25uZWN0aW9uOjpkaXNwYXRj
aE1lc3NhZ2Uoc3RkOjp1bgogICAgICAgICBtX2luRGlzcGF0Y2hNZXNzYWdlTWFya2VkVG9Vc2VG
dWxseVN5bmNocm9ub3VzTW9kZUZvclRlc3RpbmctLTsKIAogICAgIGlmIChtX2RpZFJlY2VpdmVJ
bnZhbGlkTWVzc2FnZSAmJiBpc1ZhbGlkKCkpCi0gICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVJ
bnZhbGlkTWVzc2FnZSgqdGhpcywgbWVzc2FnZS0+bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtZXNz
YWdlLT5tZXNzYWdlTmFtZSgpKTsKKyAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZUludmFsaWRN
ZXNzYWdlKCp0aGlzLCBtZXNzYWdlLT5tZXNzYWdlTmFtZSgpKTsKIAogICAgIG1fZGlkUmVjZWl2
ZUludmFsaWRNZXNzYWdlID0gb2xkRGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlOwogfQpAQCAtMTE2
OCw3ICsxMTU2LDcgQEAgdm9pZCBDb25uZWN0aW9uOjpkaXNwYXRjaEluY29taW5nTWVzc2FnZQog
ICAgICAgICBpZiAobWVzc2FnZXNUb1Byb2Nlc3MgPCBtX2luY29taW5nTWVzc2FnZXMuc2l6ZSgp
KSB7CiAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihJUEMsICIlcCAtIENvbm5lY3Rpb246
OmRpc3BhdGNoSW5jb21pbmdNZXNzYWdlczogSVBDIHRocm90dGxpbmcgd2FzIHRyaWdnZXJlZCAo
aGFzICV6dSBwZW5kaW5nIGluY29taW5nIG1lc3NhZ2VzLCB3aWxsIG9ubHkgcHJvY2VzcyAlenUg
YmVmb3JlIHlpZWxkaW5nKSIsIHRoaXMsIG1faW5jb21pbmdNZXNzYWdlcy5zaXplKCksIG1lc3Nh
Z2VzVG9Qcm9jZXNzKTsKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICAgICAgICAgIFJFTEVBU0Vf
TE9HX0VSUk9SKElQQywgIiVwIC0gQ29ubmVjdGlvbjo6ZGlzcGF0Y2hJbmNvbWluZ01lc3NhZ2Vz
OiBmaXJzdCBJUEMgbWVzc2FnZSBpbiBxdWV1ZSBpcyAle3B1YmxpY31zOjole3B1YmxpY31zIiwg
dGhpcywgbWVzc2FnZS0+bWVzc2FnZVJlY2VpdmVyTmFtZSgpLnRvU3RyaW5nKCkuZGF0YSgpLCBt
ZXNzYWdlLT5tZXNzYWdlTmFtZSgpLnRvU3RyaW5nKCkuZGF0YSgpKTsKKyAgICAgICAgICAgIFJF
TEVBU0VfTE9HX0VSUk9SKElQQywgIiVwIC0gQ29ubmVjdGlvbjo6ZGlzcGF0Y2hJbmNvbWluZ01l
c3NhZ2VzOiBmaXJzdCBJUEMgbWVzc2FnZSBpbiBxdWV1ZSBpcyAle3B1YmxpY31zIiwgdGhpcywg
ZGVzY3JpcHRpb24obWVzc2FnZS0+bWVzc2FnZU5hbWUoKSkpOwogI2VuZGlmCiAgICAgICAgIH0K
IApJbmRleDogU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaAkocmV2aXNpb24g
MjYwNzY0KQorKysgU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDcsNyArMTA3LDcgQEAgcHVibGljOgogICAgIGNsYXNzIENsaWVudCA6
IHB1YmxpYyBNZXNzYWdlUmVjZWl2ZXIgewogICAgIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB2
b2lkIGRpZENsb3NlKENvbm5lY3Rpb24mKSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWRS
ZWNlaXZlSW52YWxpZE1lc3NhZ2UoQ29ubmVjdGlvbiYsIFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdl
UmVjZWl2ZXJOYW1lLCBTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUpID0gMDsKKyAgICAgICAg
dmlydHVhbCB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShDb25uZWN0aW9uJiwgTWVzc2Fn
ZU5hbWUpID0gMDsKIAogICAgIHByb3RlY3RlZDoKICAgICAgICAgdmlydHVhbCB+Q2xpZW50KCkg
eyB9CkBAIC0xODksMTEgKzE4OSwxMSBAQCBwdWJsaWM6CiAgICAgdHlwZWRlZiB2b2lkICgqRGlk
Q2xvc2VPbkNvbm5lY3Rpb25Xb3JrUXVldWVDYWxsYmFjaykoQ29ubmVjdGlvbiopOwogICAgIHZv
aWQgc2V0RGlkQ2xvc2VPbkNvbm5lY3Rpb25Xb3JrUXVldWVDYWxsYmFjayhEaWRDbG9zZU9uQ29u
bmVjdGlvbldvcmtRdWV1ZUNhbGxiYWNrKTsKIAotICAgIHZvaWQgYWRkV29ya1F1ZXVlTWVzc2Fn
ZVJlY2VpdmVyKFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBXb3JrUXVldWUm
LCBXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIqKTsKLSAgICB2b2lkIHJlbW92ZVdvcmtRdWV1ZU1l
c3NhZ2VSZWNlaXZlcihTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSk7CisgICAg
dm9pZCBhZGRXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIoUmVjZWl2ZXJOYW1lLCBXb3JrUXVldWUm
LCBXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIqKTsKKyAgICB2b2lkIHJlbW92ZVdvcmtRdWV1ZU1l
c3NhZ2VSZWNlaXZlcihSZWNlaXZlck5hbWUpOwogCi0gICAgdm9pZCBhZGRUaHJlYWRNZXNzYWdl
UmVjZWl2ZXIoU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIFRocmVhZE1lc3Nh
Z2VSZWNlaXZlciopOwotICAgIHZvaWQgcmVtb3ZlVGhyZWFkTWVzc2FnZVJlY2VpdmVyKFN0cmlu
Z1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lKTsKKyAgICB2b2lkIGFkZFRocmVhZE1lc3Nh
Z2VSZWNlaXZlcihSZWNlaXZlck5hbWUsIFRocmVhZE1lc3NhZ2VSZWNlaXZlciopOworICAgIHZv
aWQgcmVtb3ZlVGhyZWFkTWVzc2FnZVJlY2VpdmVyKFJlY2VpdmVyTmFtZSk7CiAKICAgICBib29s
IG9wZW4oKTsKICAgICB2b2lkIGludmFsaWRhdGUoKTsKQEAgLTIzNSw3ICsyMzUsNyBAQCBwdWJs
aWM6CiAgICAgfQogCiAgICAgYm9vbCBzZW5kTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8RW5jb2Rl
cj4sIE9wdGlvblNldDxTZW5kT3B0aW9uPiBzZW5kT3B0aW9ucyk7Ci0gICAgc3RkOjp1bmlxdWVf
cHRyPEVuY29kZXI+IGNyZWF0ZVN5bmNNZXNzYWdlRW5jb2RlcihTdHJpbmdSZWZlcmVuY2UgbWVz
c2FnZVJlY2VpdmVyTmFtZSwgU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lLCB1aW50NjRfdCBk
ZXN0aW5hdGlvbklELCB1aW50NjRfdCYgc3luY1JlcXVlc3RJRCk7CisgICAgc3RkOjp1bmlxdWVf
cHRyPEVuY29kZXI+IGNyZWF0ZVN5bmNNZXNzYWdlRW5jb2RlcihNZXNzYWdlTmFtZSwgdWludDY0
X3QgZGVzdGluYXRpb25JRCwgdWludDY0X3QmIHN5bmNSZXF1ZXN0SUQpOwogICAgIHN0ZDo6dW5p
cXVlX3B0cjxEZWNvZGVyPiBzZW5kU3luY01lc3NhZ2UodWludDY0X3Qgc3luY1JlcXVlc3RJRCwg
c3RkOjp1bmlxdWVfcHRyPEVuY29kZXI+LCBTZWNvbmRzIHRpbWVvdXQsIE9wdGlvblNldDxTZW5k
U3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zKTsKICAgICBib29sIHNlbmRTeW5jUmVwbHkoc3Rk
Ojp1bmlxdWVfcHRyPEVuY29kZXI+KTsKIApAQCAtMjc0LDkgKzI3NCw5IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemUoSWRlbnRpZmllcik7CiAgICAgdm9pZCBwbGF0Zm9y
bUludmFsaWRhdGUoKTsKICAgICAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gd2FpdEZv
ck1lc3NhZ2UoU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIFN0cmluZ1JlZmVy
ZW5jZSBtZXNzYWdlTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0
LCBPcHRpb25TZXQ8V2FpdEZvck9wdGlvbj4pOworICAgIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVy
PiB3YWl0Rm9yTWVzc2FnZShNZXNzYWdlTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgU2Vj
b25kcyB0aW1lb3V0LCBPcHRpb25TZXQ8V2FpdEZvck9wdGlvbj4pOwogICAgIAotICAgIHN0ZDo6
dW5pcXVlX3B0cjxEZWNvZGVyPiB3YWl0Rm9yU3luY1JlcGx5KHVpbnQ2NF90IHN5bmNSZXF1ZXN0
SUQsIFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBTdHJpbmdSZWZlcmVuY2Ug
bWVzc2FnZU5hbWUsIFNlY29uZHMgdGltZW91dCwgT3B0aW9uU2V0PFNlbmRTeW5jT3B0aW9uPik7
CisgICAgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IHdhaXRGb3JTeW5jUmVwbHkodWludDY0X3Qg
c3luY1JlcXVlc3RJRCwgTWVzc2FnZU5hbWUsIFNlY29uZHMgdGltZW91dCwgT3B0aW9uU2V0PFNl
bmRTeW5jT3B0aW9uPik7CiAKICAgICBib29sIGRpc3BhdGNoTWVzc2FnZVRvV29ya1F1ZXVlUmVj
ZWl2ZXIoc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+Jik7CiAgICAgYm9vbCBkaXNwYXRjaE1lc3Nh
Z2VUb1RocmVhZFJlY2VpdmVyKHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiYpOwpAQCAtMzAwLDcg
KzMwMCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaXNwYXRjaE1lc3NhZ2Uoc3RkOjp1bmlxdWVf
cHRyPERlY29kZXI+KTsKICAgICB2b2lkIGRpc3BhdGNoTWVzc2FnZShEZWNvZGVyJik7CiAgICAg
dm9pZCBkaXNwYXRjaFN5bmNNZXNzYWdlKERlY29kZXImKTsKLSAgICB2b2lkIGRpc3BhdGNoRGlk
UmVjZWl2ZUludmFsaWRNZXNzYWdlKGNvbnN0IENTdHJpbmcmIG1lc3NhZ2VSZWNlaXZlck5hbWVT
dHJpbmcsIGNvbnN0IENTdHJpbmcmIG1lc3NhZ2VOYW1lU3RyaW5nKTsKKyAgICB2b2lkIGRpc3Bh
dGNoRGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKE1lc3NhZ2VOYW1lKTsKICAgICB2b2lkIGRpZEZh
aWxUb1NlbmRTeW5jTWVzc2FnZSgpOwogCiAgICAgLy8gQ2FuIGJlIGNhbGxlZCBvbiBhbnkgdGhy
ZWFkLgpAQCAtMzQ2LDExICszNDYsMTEgQEAgcHJpdmF0ZToKICAgICBSZWY8V29ya1F1ZXVlPiBt
X2Nvbm5lY3Rpb25RdWV1ZTsKIAogICAgIExvY2sgbV93b3JrUXVldWVNZXNzYWdlUmVjZWl2ZXJz
TXV0ZXg7Ci0gICAgdXNpbmcgV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyTWFwID0gSGFzaE1hcDxT
dHJpbmdSZWZlcmVuY2UsIHN0ZDo6cGFpcjxSZWZQdHI8V29ya1F1ZXVlPiwgUmVmUHRyPFdvcmtR
dWV1ZU1lc3NhZ2VSZWNlaXZlcj4+PjsKKyAgICB1c2luZyBXb3JrUXVldWVNZXNzYWdlUmVjZWl2
ZXJNYXAgPSBIYXNoTWFwPHVpbnQ4X3QsIHN0ZDo6cGFpcjxSZWZQdHI8V29ya1F1ZXVlPiwgUmVm
UHRyPFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcj4+PjsKICAgICBXb3JrUXVldWVNZXNzYWdlUmVj
ZWl2ZXJNYXAgbV93b3JrUXVldWVNZXNzYWdlUmVjZWl2ZXJzOwogCiAgICAgTG9jayBtX3RocmVh
ZE1lc3NhZ2VSZWNlaXZlcnNMb2NrOwotICAgIHVzaW5nIFRocmVhZE1lc3NhZ2VSZWNlaXZlck1h
cCA9IEhhc2hNYXA8U3RyaW5nUmVmZXJlbmNlLCBSZWZQdHI8VGhyZWFkTWVzc2FnZVJlY2VpdmVy
Pj47CisgICAgdXNpbmcgVGhyZWFkTWVzc2FnZVJlY2VpdmVyTWFwID0gSGFzaE1hcDx1aW50OF90
LCBSZWZQdHI8VGhyZWFkTWVzc2FnZVJlY2VpdmVyPj47CiAgICAgVGhyZWFkTWVzc2FnZVJlY2Vp
dmVyTWFwIG1fdGhyZWFkTWVzc2FnZVJlY2VpdmVyczsKIAogICAgIHVuc2lnbmVkIG1faW5TZW5k
U3luY0NvdW50OwpAQCAtNDYyLDcgKzQ2Miw3IEBAIGJvb2wgQ29ubmVjdGlvbjo6c2VuZChUJiYg
bWVzc2FnZSwgdWludDYKIHsKICAgICBDT01QSUxFX0FTU0VSVCghVDo6aXNTeW5jLCBBc3luY01l
c3NhZ2VFeHBlY3RlZCk7CiAKLSAgICBhdXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlPEVuY29kZXI+
KFQ6OnJlY2VpdmVyTmFtZSgpLCBUOjpuYW1lKCksIGRlc3RpbmF0aW9uSUQpOworICAgIGF1dG8g
ZW5jb2RlciA9IG1ha2VVbmlxdWU8RW5jb2Rlcj4oVDo6bmFtZSgpLCBkZXN0aW5hdGlvbklEKTsK
ICAgICBlbmNvZGVyLT5lbmNvZGUobWVzc2FnZS5hcmd1bWVudHMoKSk7CiAgICAgCiAgICAgcmV0
dXJuIHNlbmRNZXNzYWdlKFdURk1vdmUoZW5jb2RlciksIHNlbmRPcHRpb25zKTsKQEAgLTQ3Nyw3
ICs0NzcsNyBAQCB2b2lkIENvbm5lY3Rpb246OnNlbmRXaXRoQXN5bmNSZXBseShUJiYgCiB7CiAg
ICAgQ09NUElMRV9BU1NFUlQoIVQ6OmlzU3luYywgQXN5bmNNZXNzYWdlRXhwZWN0ZWQpOwogCi0g
ICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNvZGVyPihUOjpyZWNlaXZlck5hbWUoKSwg
VDo6bmFtZSgpLCBkZXN0aW5hdGlvbklEKTsKKyAgICBhdXRvIGVuY29kZXIgPSBtYWtlVW5pcXVl
PEVuY29kZXI+KFQ6Om5hbWUoKSwgZGVzdGluYXRpb25JRCk7CiAgICAgdWludDY0X3QgbGlzdGVu
ZXJJRCA9IG5leHRBc3luY1JlcGx5SGFuZGxlcklEKCk7CiAgICAgZW5jb2Rlci0+ZW5jb2RlKGxp
c3RlbmVySUQpOwogICAgIGVuY29kZXItPmVuY29kZShtZXNzYWdlLmFyZ3VtZW50cygpKTsKQEAg
LTUxNSw3ICs1MTUsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29sIENvbm5lY3Rpb246OnNl
CiAgICAgUkVMRUFTRV9BU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAgdWludDY0X3Qg
c3luY1JlcXVlc3RJRCA9IDA7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEVuY29kZXI+IGVuY29kZXIg
PSBjcmVhdGVTeW5jTWVzc2FnZUVuY29kZXIoVDo6cmVjZWl2ZXJOYW1lKCksIFQ6Om5hbWUoKSwg
ZGVzdGluYXRpb25JRCwgc3luY1JlcXVlc3RJRCk7CisgICAgc3RkOjp1bmlxdWVfcHRyPEVuY29k
ZXI+IGVuY29kZXIgPSBjcmVhdGVTeW5jTWVzc2FnZUVuY29kZXIoVDo6bmFtZSgpLCBkZXN0aW5h
dGlvbklELCBzeW5jUmVxdWVzdElEKTsKIAogICAgIGlmIChzZW5kU3luY09wdGlvbnMuY29udGFp
bnMoU2VuZFN5bmNPcHRpb246OlVzZUZ1bGx5U3luY2hyb25vdXNNb2RlRm9yVGVzdGluZykpIHsK
ICAgICAgICAgZW5jb2Rlci0+c2V0RnVsbHlTeW5jaHJvbm91c01vZGVGb3JUZXN0aW5nKCk7CkBA
IC01NDIsNyArNTQyLDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9vbCBDb25uZWN0aW9uOjpz
ZQogdGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9vbCBDb25uZWN0aW9uOjp3YWl0Rm9yQW5kRGlzcGF0
Y2hJbW1lZGlhdGVseSh1aW50NjRfdCBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQsIE9w
dGlvblNldDxXYWl0Rm9yT3B0aW9uPiB3YWl0Rm9yT3B0aW9ucykKIHsKICAgICBSRUxFQVNFX0FT
U0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IGRl
Y29kZXIgPSB3YWl0Rm9yTWVzc2FnZShUOjpyZWNlaXZlck5hbWUoKSwgVDo6bmFtZSgpLCBkZXN0
aW5hdGlvbklELCB0aW1lb3V0LCB3YWl0Rm9yT3B0aW9ucyk7CisgICAgc3RkOjp1bmlxdWVfcHRy
PERlY29kZXI+IGRlY29kZXIgPSB3YWl0Rm9yTWVzc2FnZShUOjpuYW1lKCksIGRlc3RpbmF0aW9u
SUQsIHRpbWVvdXQsIHdhaXRGb3JPcHRpb25zKTsKICAgICBpZiAoIWRlY29kZXIpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIApJbmRleDogU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5j
cHAJKHJldmlzaW9uIDI2MDc2NCkKKysrIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29k
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Niw5ICs2Niw2IEBAIERlY29kZXI6OkRlY29kZXIo
Y29uc3QgdWludDhfdCogYnVmZmVyLCAKICAgICBpZiAoIWRlY29kZShtX21lc3NhZ2VGbGFncykp
CiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghZGVjb2RlKG1fbWVzc2FnZVJlY2VpdmVyTmFt
ZSkpCi0gICAgICAgIHJldHVybjsKLQogICAgIGlmICghZGVjb2RlKG1fbWVzc2FnZU5hbWUpKQog
ICAgICAgICByZXR1cm47CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29k
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmgJ
KHJldmlzaW9uIDI2MDc2NCkKKysrIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiQXJndW1lbnRD
b2Rlci5oIgogI2luY2x1ZGUgIkF0dGFjaG1lbnQuaCIKKyNpbmNsdWRlICJNZXNzYWdlTmFtZXMu
aCIKICNpbmNsdWRlICJTdHJpbmdSZWZlcmVuY2UuaCIKICNpbmNsdWRlIDx3dGYvRW51bVRyYWl0
cy5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTUxLDggKzUyLDggQEAgcHVibGljOgog
ICAgIERlY29kZXIoY29uc3QgRGVjb2RlciYpID0gZGVsZXRlOwogICAgIERlY29kZXIoRGVjb2Rl
ciYmKSA9IGRlbGV0ZTsKIAotICAgIFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1l
KCkgY29uc3QgeyByZXR1cm4gbV9tZXNzYWdlUmVjZWl2ZXJOYW1lOyB9Ci0gICAgU3RyaW5nUmVm
ZXJlbmNlIG1lc3NhZ2VOYW1lKCkgY29uc3QgeyByZXR1cm4gbV9tZXNzYWdlTmFtZTsgfQorICAg
IFJlY2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gcmVjZWl2
ZXJOYW1lKG1fbWVzc2FnZU5hbWUpOyB9CisgICAgTWVzc2FnZU5hbWUgbWVzc2FnZU5hbWUoKSBj
b25zdCB7IHJldHVybiBtX21lc3NhZ2VOYW1lOyB9CiAgICAgdWludDY0X3QgZGVzdGluYXRpb25J
RCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVzdGluYXRpb25JRDsgfQogCiAgICAgYm9vbCBpc1N5bmNN
ZXNzYWdlKCkgY29uc3Q7CkBAIC0xMTEsNyArMTEyLDcgQEAgcHVibGljOgogICAgICAgICB0eXBl
bmFtZSBzdGQ6OnVuZGVybHlpbmdfdHlwZTxFPjo6dHlwZSB2YWx1ZTsKICAgICAgICAgaWYgKCFk
ZWNvZGUodmFsdWUpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBpZiAoIWlz
VmFsaWRFbnVtPEU+KHZhbHVlKSkKKyAgICAgICAgaWYgKCFXVEY6OmlzVmFsaWRFbnVtPEU+KHZh
bHVlKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICBlID0gc3RhdGljX2Nh
c3Q8RT4odmFsdWUpOwpAQCAtMTIzLDcgKzEyNCw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAg
IE9wdGlvbmFsPHR5cGVuYW1lIHN0ZDo6dW5kZXJseWluZ190eXBlPEU+Ojp0eXBlPiB2YWx1ZTsK
ICAgICAgICAgKnRoaXMgPj4gdmFsdWU7Ci0gICAgICAgIGlmICh2YWx1ZSAmJiBpc1ZhbGlkRW51
bTxFPigqdmFsdWUpKQorICAgICAgICBpZiAodmFsdWUgJiYgV1RGOjppc1ZhbGlkRW51bTxFPigq
dmFsdWUpKQogICAgICAgICAgICAgb3B0aW9uYWwgPSBzdGF0aWNfY2FzdDxFPigqdmFsdWUpOwog
ICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQpAQCAtMjAzLDggKzIwNCw3IEBAIHByaXZhdGU6
CiAgICAgVmVjdG9yPEF0dGFjaG1lbnQ+IG1fYXR0YWNobWVudHM7CiAKICAgICB1aW50OF90IG1f
bWVzc2FnZUZsYWdzOwotICAgIFN0cmluZ1JlZmVyZW5jZSBtX21lc3NhZ2VSZWNlaXZlck5hbWU7
Ci0gICAgU3RyaW5nUmVmZXJlbmNlIG1fbWVzc2FnZU5hbWU7CisgICAgTWVzc2FnZU5hbWUgbV9t
ZXNzYWdlTmFtZTsKIAogICAgIHVpbnQ2NF90IG1fZGVzdGluYXRpb25JRDsKIApJbmRleDogU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRW5jb2Rlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvRW5jb2Rlci5jcHAJKHJldmlzaW9uIDI2MDc2NCkKKysrIFNv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0VuY29kZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02
MSw5ICs2MSw4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBmcmVlQnVmZmVyKHZvaWQqIGFkZHIKICNl
bmRpZgogfQogCi1FbmNvZGVyOjpFbmNvZGVyKFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2
ZXJOYW1lLCBTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9u
SUQpCi0gICAgOiBtX21lc3NhZ2VSZWNlaXZlck5hbWUobWVzc2FnZVJlY2VpdmVyTmFtZSkKLSAg
ICAsIG1fbWVzc2FnZU5hbWUobWVzc2FnZU5hbWUpCitFbmNvZGVyOjpFbmNvZGVyKE1lc3NhZ2VO
YW1lIG1lc3NhZ2VOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKQorICAgIDogbV9tZXNzYWdl
TmFtZShtZXNzYWdlTmFtZSkKICAgICAsIG1fZGVzdGluYXRpb25JRChkZXN0aW5hdGlvbklEKQog
ICAgICwgbV9idWZmZXIobV9pbmxpbmVCdWZmZXIpCiAgICAgLCBtX2J1ZmZlclBvaW50ZXIobV9p
bmxpbmVCdWZmZXIpCkBAIC0xNjgsMTAgKzE2Nyw3IEBAIHZvaWQgRW5jb2Rlcjo6cmVzZXJ2ZShz
aXplX3Qgc2l6ZSkKIAogdm9pZCBFbmNvZGVyOjplbmNvZGVIZWFkZXIoKQogewotICAgIEFTU0VS
VCghbV9tZXNzYWdlUmVjZWl2ZXJOYW1lLmlzRW1wdHkoKSk7Ci0KICAgICAqdGhpcyA8PCBkZWZh
dWx0TWVzc2FnZUZsYWdzOwotICAgICp0aGlzIDw8IG1fbWVzc2FnZVJlY2VpdmVyTmFtZTsKICAg
ICAqdGhpcyA8PCBtX21lc3NhZ2VOYW1lOwogICAgICp0aGlzIDw8IG1fZGVzdGluYXRpb25JRDsK
IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0VuY29kZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9FbmNvZGVyLmgJKHJldmlzaW9uIDI2MDc2
NCkKKysrIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0VuY29kZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiQXJndW1lbnRDb2Rlci5oIgogI2luY2x1
ZGUgIkF0dGFjaG1lbnQuaCIKKyNpbmNsdWRlICJNZXNzYWdlTmFtZXMuaCIKICNpbmNsdWRlICJT
dHJpbmdSZWZlcmVuY2UuaCIKICNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgogI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KQEAgLTM1LDE1ICszNiwxNiBAQCBuYW1lc3BhY2UgSVBDIHsKIAogY2xh
c3MgRGF0YVJlZmVyZW5jZTsKIGVudW0gY2xhc3MgU2hvdWxkRGlzcGF0Y2hXaGVuV2FpdGluZ0Zv
clN5bmNSZXBseTsKK2VudW0gY2xhc3MgTWVzc2FnZU5hbWUgOiB1aW50MTZfdDsKIAogY2xhc3Mg
RW5jb2RlciBmaW5hbCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0g
ICAgRW5jb2RlcihTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgU3RyaW5nUmVm
ZXJlbmNlIG1lc3NhZ2VOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKTsKKyAgICBFbmNvZGVy
KE1lc3NhZ2VOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKTsKICAgICB+RW5jb2RlcigpOwog
Ci0gICAgU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUoKSBjb25zdCB7IHJldHVy
biBtX21lc3NhZ2VSZWNlaXZlck5hbWU7IH0KLSAgICBTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5h
bWUoKSBjb25zdCB7IHJldHVybiBtX21lc3NhZ2VOYW1lOyB9CisgICAgUmVjZWl2ZXJOYW1lIG1l
c3NhZ2VSZWNlaXZlck5hbWUoKSBjb25zdCB7IHJldHVybiByZWNlaXZlck5hbWUobV9tZXNzYWdl
TmFtZSk7IH0KKyAgICBNZXNzYWdlTmFtZSBtZXNzYWdlTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1f
bWVzc2FnZU5hbWU7IH0KICAgICB1aW50NjRfdCBkZXN0aW5hdGlvbklEKCkgY29uc3QgeyByZXR1
cm4gbV9kZXN0aW5hdGlvbklEOyB9CiAKICAgICB2b2lkIHNldElzU3luY01lc3NhZ2UoYm9vbCk7
CkBAIC0xMTIsMTQgKzExNCwxMyBAQCBwcml2YXRlOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEU+
CiAgICAgYXV0byBlbmNvZGUoRSB2YWx1ZSkgLT4gc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2Vu
dW08RT46OnZhbHVlPgogICAgIHsKLSAgICAgICAgQVNTRVJUKGlzVmFsaWRFbnVtPEU+KHN0YXRp
Y19jYXN0PHR5cGVuYW1lIHN0ZDo6dW5kZXJseWluZ190eXBlPEU+Ojp0eXBlPih2YWx1ZSkpKTsK
KyAgICAgICAgQVNTRVJUKFdURjo6aXNWYWxpZEVudW08RT4oc3RhdGljX2Nhc3Q8dHlwZW5hbWUg
c3RkOjp1bmRlcmx5aW5nX3R5cGU8RT46OnR5cGU+KHZhbHVlKSkpOwogICAgICAgICBlbmNvZGUo
c3RhdGljX2Nhc3Q8dHlwZW5hbWUgc3RkOjp1bmRlcmx5aW5nX3R5cGU8RT46OnR5cGU+KHZhbHVl
KSk7CiAgICAgfQogCiAgICAgdm9pZCBlbmNvZGVIZWFkZXIoKTsKIAotICAgIFN0cmluZ1JlZmVy
ZW5jZSBtX21lc3NhZ2VSZWNlaXZlck5hbWU7Ci0gICAgU3RyaW5nUmVmZXJlbmNlIG1fbWVzc2Fn
ZU5hbWU7CisgICAgTWVzc2FnZU5hbWUgbV9tZXNzYWdlTmFtZTsKICAgICB1aW50NjRfdCBtX2Rl
c3RpbmF0aW9uSUQ7CiAKICAgICB1aW50OF90IG1faW5saW5lQnVmZmVyWzUxMl07CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9IYW5kbGVNZXNzYWdlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oCShyZXZpc2lvbiAyNjA3
NjQpCisrKyBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9IYW5kbGVNZXNzYWdlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTE3Niw3ICsxNzYsNyBAQCB2b2lkIGhhbmRsZU1lc3NhZ2VBc3luYyhDb25u
ZWN0aW9uJiBjb25uCiAgICAgfQogCiAgICAgdHlwZW5hbWUgVDo6QXN5bmNSZXBseSBjb21wbGV0
aW9uSGFuZGxlciA9IFtsaXN0ZW5lcklEID0gKmxpc3RlbmVySUQsIGNvbm5lY3Rpb24gPSBtYWtl
UmVmKGNvbm5lY3Rpb24pXSAoYXV0byYmLi4uIGFyZ3MpIG11dGFibGUgewotICAgICAgICBhdXRv
IGVuY29kZXIgPSBtYWtlVW5pcXVlPEVuY29kZXI+KCJBc3luY1JlcGx5IiwgVDo6YXN5bmNNZXNz
YWdlUmVwbHlOYW1lKCksIDApOworICAgICAgICBhdXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlPEVu
Y29kZXI+KFQ6OmFzeW5jTWVzc2FnZVJlcGx5TmFtZSgpLCAwKTsKICAgICAgICAgKmVuY29kZXIg
PDwgbGlzdGVuZXJJRDsKICAgICAgICAgVDo6c2VuZChXVEZNb3ZlKGVuY29kZXIpLCBXVEZNb3Zl
KGNvbm5lY3Rpb24pLCBhcmdzLi4uKTsKICAgICB9OwpJbmRleDogU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVyTWFwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlUmVjZWl2ZXJNYXAuY3BwCShyZXZpc2lvbiAyNjA3NjQp
CisrKyBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlUmVjZWl2ZXJNYXAuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zOSwzOSArMzksMzkgQEAgTWVzc2FnZVJlY2VpdmVyTWFwOjp+TWVz
c2FnZVJlY2VpdmVyTWFwKAogewogfQogCi12b2lkIE1lc3NhZ2VSZWNlaXZlck1hcDo6YWRkTWVz
c2FnZVJlY2VpdmVyKFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBNZXNzYWdl
UmVjZWl2ZXImIG1lc3NhZ2VSZWNlaXZlcikKK3ZvaWQgTWVzc2FnZVJlY2VpdmVyTWFwOjphZGRN
ZXNzYWdlUmVjZWl2ZXIoUmVjZWl2ZXJOYW1lIG1lc3NhZ2VSZWNlaXZlck5hbWUsIE1lc3NhZ2VS
ZWNlaXZlciYgbWVzc2FnZVJlY2VpdmVyKQogewotICAgIEFTU0VSVCghbV9nbG9iYWxNZXNzYWdl
UmVjZWl2ZXJzLmNvbnRhaW5zKG1lc3NhZ2VSZWNlaXZlck5hbWUpKTsKKyAgICBBU1NFUlQoIW1f
Z2xvYmFsTWVzc2FnZVJlY2VpdmVycy5jb250YWlucyhzdGF0aWNfY2FzdDx1aW50OF90PihtZXNz
YWdlUmVjZWl2ZXJOYW1lKSkpOwogCiAgICAgbWVzc2FnZVJlY2VpdmVyLndpbGxCZUFkZGVkVG9N
ZXNzYWdlUmVjZWl2ZXJNYXAoKTsKLSAgICBtX2dsb2JhbE1lc3NhZ2VSZWNlaXZlcnMuc2V0KG1l
c3NhZ2VSZWNlaXZlck5hbWUsICZtZXNzYWdlUmVjZWl2ZXIpOworICAgIG1fZ2xvYmFsTWVzc2Fn
ZVJlY2VpdmVycy5zZXQoc3RhdGljX2Nhc3Q8dWludDhfdD4obWVzc2FnZVJlY2VpdmVyTmFtZSks
ICZtZXNzYWdlUmVjZWl2ZXIpOwogfQogCi12b2lkIE1lc3NhZ2VSZWNlaXZlck1hcDo6YWRkTWVz
c2FnZVJlY2VpdmVyKFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCB1aW50NjRf
dCBkZXN0aW5hdGlvbklELCBNZXNzYWdlUmVjZWl2ZXImIG1lc3NhZ2VSZWNlaXZlcikKK3ZvaWQg
TWVzc2FnZVJlY2VpdmVyTWFwOjphZGRNZXNzYWdlUmVjZWl2ZXIoUmVjZWl2ZXJOYW1lIG1lc3Nh
Z2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIE1lc3NhZ2VSZWNlaXZlciYg
bWVzc2FnZVJlY2VpdmVyKQogewogICAgIEFTU0VSVChkZXN0aW5hdGlvbklEKTsKLSAgICBBU1NF
UlQoIW1fbWVzc2FnZVJlY2VpdmVycy5jb250YWlucyhzdGQ6Om1ha2VfcGFpcihtZXNzYWdlUmVj
ZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklEKSkpOwotICAgIEFTU0VSVCghbV9nbG9iYWxNZXNzYWdl
UmVjZWl2ZXJzLmNvbnRhaW5zKG1lc3NhZ2VSZWNlaXZlck5hbWUpKTsKKyAgICBBU1NFUlQoIW1f
bWVzc2FnZVJlY2VpdmVycy5jb250YWlucyhzdGQ6Om1ha2VfcGFpcihzdGF0aWNfY2FzdDx1aW50
OF90PihtZXNzYWdlUmVjZWl2ZXJOYW1lKSwgZGVzdGluYXRpb25JRCkpKTsKKyAgICBBU1NFUlQo
IW1fZ2xvYmFsTWVzc2FnZVJlY2VpdmVycy5jb250YWlucyhzdGF0aWNfY2FzdDx1aW50OF90Piht
ZXNzYWdlUmVjZWl2ZXJOYW1lKSkpOwogCiAgICAgbWVzc2FnZVJlY2VpdmVyLndpbGxCZUFkZGVk
VG9NZXNzYWdlUmVjZWl2ZXJNYXAoKTsKLSAgICBtX21lc3NhZ2VSZWNlaXZlcnMuc2V0KHN0ZDo6
bWFrZV9wYWlyKG1lc3NhZ2VSZWNlaXZlck5hbWUsIGRlc3RpbmF0aW9uSUQpLCAmbWVzc2FnZVJl
Y2VpdmVyKTsKKyAgICBtX21lc3NhZ2VSZWNlaXZlcnMuc2V0KHN0ZDo6bWFrZV9wYWlyKHN0YXRp
Y19jYXN0PHVpbnQ4X3Q+KG1lc3NhZ2VSZWNlaXZlck5hbWUpLCBkZXN0aW5hdGlvbklEKSwgJm1l
c3NhZ2VSZWNlaXZlcik7CiB9CiAKLXZvaWQgTWVzc2FnZVJlY2VpdmVyTWFwOjpyZW1vdmVNZXNz
YWdlUmVjZWl2ZXIoU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUpCit2b2lkIE1l
c3NhZ2VSZWNlaXZlck1hcDo6cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKFJlY2VpdmVyTmFtZSBtZXNz
YWdlUmVjZWl2ZXJOYW1lKQogewotICAgIEFTU0VSVChtX2dsb2JhbE1lc3NhZ2VSZWNlaXZlcnMu
Y29udGFpbnMobWVzc2FnZVJlY2VpdmVyTmFtZSkpOworICAgIEFTU0VSVChtX2dsb2JhbE1lc3Nh
Z2VSZWNlaXZlcnMuY29udGFpbnMoc3RhdGljX2Nhc3Q8dWludDhfdD4obWVzc2FnZVJlY2VpdmVy
TmFtZSkpKTsKIAotICAgIGF1dG8gaXQgPSBtX2dsb2JhbE1lc3NhZ2VSZWNlaXZlcnMuZmluZCht
ZXNzYWdlUmVjZWl2ZXJOYW1lKTsKKyAgICBhdXRvIGl0ID0gbV9nbG9iYWxNZXNzYWdlUmVjZWl2
ZXJzLmZpbmQoc3RhdGljX2Nhc3Q8dWludDhfdD4obWVzc2FnZVJlY2VpdmVyTmFtZSkpOwogICAg
IGl0LT52YWx1ZS0+d2lsbEJlUmVtb3ZlZEZyb21NZXNzYWdlUmVjZWl2ZXJNYXAoKTsKIAogICAg
IG1fZ2xvYmFsTWVzc2FnZVJlY2VpdmVycy5yZW1vdmUoaXQpOwogfQogCi12b2lkIE1lc3NhZ2VS
ZWNlaXZlck1hcDo6cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdl
UmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKQordm9pZCBNZXNzYWdlUmVjZWl2
ZXJNYXA6OnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihSZWNlaXZlck5hbWUgbWVzc2FnZVJlY2VpdmVy
TmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCkKIHsKLSAgICBBU1NFUlQobV9tZXNzYWdlUmVj
ZWl2ZXJzLmNvbnRhaW5zKHN0ZDo6bWFrZV9wYWlyKG1lc3NhZ2VSZWNlaXZlck5hbWUsIGRlc3Rp
bmF0aW9uSUQpKSk7CisgICAgQVNTRVJUKG1fbWVzc2FnZVJlY2VpdmVycy5jb250YWlucyhzdGQ6
Om1ha2VfcGFpcihzdGF0aWNfY2FzdDx1aW50OF90PihtZXNzYWdlUmVjZWl2ZXJOYW1lKSwgZGVz
dGluYXRpb25JRCkpKTsKIAotICAgIGF1dG8gaXQgPSBtX21lc3NhZ2VSZWNlaXZlcnMuZmluZChz
dGQ6Om1ha2VfcGFpcihtZXNzYWdlUmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklEKSk7CisgICAg
YXV0byBpdCA9IG1fbWVzc2FnZVJlY2VpdmVycy5maW5kKHN0ZDo6bWFrZV9wYWlyKHN0YXRpY19j
YXN0PHVpbnQ4X3Q+KG1lc3NhZ2VSZWNlaXZlck5hbWUpLCBkZXN0aW5hdGlvbklEKSk7CiAgICAg
aXQtPnZhbHVlLT53aWxsQmVSZW1vdmVkRnJvbU1lc3NhZ2VSZWNlaXZlck1hcCgpOwogCiAgICAg
bV9tZXNzYWdlUmVjZWl2ZXJzLnJlbW92ZShpdCk7CkBAIC03OSwyMyArNzksMjMgQEAgdm9pZCBN
ZXNzYWdlUmVjZWl2ZXJNYXA6OnJlbW92ZU1lc3NhZ2VSZQogCiB2b2lkIE1lc3NhZ2VSZWNlaXZl
ck1hcDo6cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VSZWNlaXZlciYgbWVzc2FnZVJlY2Vp
dmVyKQogewotICAgIFZlY3RvcjxTdHJpbmdSZWZlcmVuY2U+IGdsb2JhbFJlY2VpdmVyc1RvUmVt
b3ZlOworICAgIFZlY3RvcjxSZWNlaXZlck5hbWU+IGdsb2JhbFJlY2VpdmVyc1RvUmVtb3ZlOwog
ICAgIGZvciAoYXV0byYgW25hbWUsIHJlY2VpdmVyXSA6IG1fZ2xvYmFsTWVzc2FnZVJlY2VpdmVy
cykgewogICAgICAgICBpZiAocmVjZWl2ZXIgPT0gJm1lc3NhZ2VSZWNlaXZlcikKLSAgICAgICAg
ICAgIGdsb2JhbFJlY2VpdmVyc1RvUmVtb3ZlLmFwcGVuZChuYW1lKTsKKyAgICAgICAgICAgIGds
b2JhbFJlY2VpdmVyc1RvUmVtb3ZlLmFwcGVuZChzdGF0aWNfY2FzdDxSZWNlaXZlck5hbWU+KG5h
bWUpKTsKICAgICB9CiAKICAgICBmb3IgKGF1dG8mIGdsb2JhbFJlY2VpdmVyVG9SZW1vdmUgOiBn
bG9iYWxSZWNlaXZlcnNUb1JlbW92ZSkKICAgICAgICAgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKGds
b2JhbFJlY2VpdmVyVG9SZW1vdmUpOwogCi0gICAgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmdSZWZl
cmVuY2UsIHVpbnQ2NF90Pj4gcmVjZWl2ZXJzVG9SZW1vdmU7CisgICAgVmVjdG9yPHN0ZDo6cGFp
cjx1aW50OF90LCB1aW50NjRfdD4+IHJlY2VpdmVyc1RvUmVtb3ZlOwogICAgIGZvciAoYXV0byYg
W25hbWVBbmREZXN0aW5hdGlvbklELCByZWNlaXZlcl0gOiBtX21lc3NhZ2VSZWNlaXZlcnMpIHsK
ICAgICAgICAgaWYgKHJlY2VpdmVyID09ICZtZXNzYWdlUmVjZWl2ZXIpCi0gICAgICAgICAgICBy
ZWNlaXZlcnNUb1JlbW92ZS5hcHBlbmQoc3RkOjptYWtlX3BhaXIobmFtZUFuZERlc3RpbmF0aW9u
SUQuZmlyc3QsIG5hbWVBbmREZXN0aW5hdGlvbklELnNlY29uZCkpOworICAgICAgICAgICAgcmVj
ZWl2ZXJzVG9SZW1vdmUuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKHN0YXRpY19jYXN0PHVpbnQ4X3Q+
KG5hbWVBbmREZXN0aW5hdGlvbklELmZpcnN0KSwgbmFtZUFuZERlc3RpbmF0aW9uSUQuc2Vjb25k
KSk7CiAgICAgfQogCiAgICAgZm9yIChhdXRvJiBbbmFtZSwgZGVzdGluYXRpb25JRF0gOiByZWNl
aXZlcnNUb1JlbW92ZSkKLSAgICAgICAgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKG5hbWUsIGRlc3Rp
bmF0aW9uSUQpOworICAgICAgICByZW1vdmVNZXNzYWdlUmVjZWl2ZXIoc3RhdGljX2Nhc3Q8UmVj
ZWl2ZXJOYW1lPihuYW1lKSwgZGVzdGluYXRpb25JRCk7CiB9CiAKIHZvaWQgTWVzc2FnZVJlY2Vp
dmVyTWFwOjppbnZhbGlkYXRlKCkKQEAgLTExMiwxNCArMTEyLDE0IEBAIHZvaWQgTWVzc2FnZVJl
Y2VpdmVyTWFwOjppbnZhbGlkYXRlKCkKIAogYm9vbCBNZXNzYWdlUmVjZWl2ZXJNYXA6OmRpc3Bh
dGNoTWVzc2FnZShDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBEZWNvZGVyJiBkZWNvZGVyKQogewot
ICAgIGlmIChNZXNzYWdlUmVjZWl2ZXIqIG1lc3NhZ2VSZWNlaXZlciA9IG1fZ2xvYmFsTWVzc2Fn
ZVJlY2VpdmVycy5nZXQoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkpKSB7CisgICAgaWYg
KE1lc3NhZ2VSZWNlaXZlciogbWVzc2FnZVJlY2VpdmVyID0gbV9nbG9iYWxNZXNzYWdlUmVjZWl2
ZXJzLmdldChzdGF0aWNfY2FzdDx1aW50OF90PihkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUo
KSkpKSB7CiAgICAgICAgIEFTU0VSVCghZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpOwogCiAgICAg
ICAgIG1lc3NhZ2VSZWNlaXZlci0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rl
cik7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIGlmIChNZXNzYWdlUmVjZWl2
ZXIqIG1lc3NhZ2VSZWNlaXZlciA9IG1fbWVzc2FnZVJlY2VpdmVycy5nZXQoc3RkOjptYWtlX3Bh
aXIoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCksIGRlY29kZXIuZGVzdGluYXRpb25JRCgp
KSkpIHsKKyAgICBpZiAoTWVzc2FnZVJlY2VpdmVyKiBtZXNzYWdlUmVjZWl2ZXIgPSBtX21lc3Nh
Z2VSZWNlaXZlcnMuZ2V0KHN0ZDo6bWFrZV9wYWlyKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGRlY29k
ZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpKSwgZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpKSkgewog
ICAgICAgICBtZXNzYWdlUmVjZWl2ZXItPmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRl
Y29kZXIpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0xMjksMTQgKzEyOSwxNCBA
QCBib29sIE1lc3NhZ2VSZWNlaXZlck1hcDo6ZGlzcGF0Y2hNZXNzYWdlCiAKIGJvb2wgTWVzc2Fn
ZVJlY2VpdmVyTWFwOjpkaXNwYXRjaFN5bmNNZXNzYWdlKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24s
IERlY29kZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVyPiYgcmVwbHlFbmNvZGVy
KQogewotICAgIGlmIChNZXNzYWdlUmVjZWl2ZXIqIG1lc3NhZ2VSZWNlaXZlciA9IG1fZ2xvYmFs
TWVzc2FnZVJlY2VpdmVycy5nZXQoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkpKSB7Cisg
ICAgaWYgKE1lc3NhZ2VSZWNlaXZlciogbWVzc2FnZVJlY2VpdmVyID0gbV9nbG9iYWxNZXNzYWdl
UmVjZWl2ZXJzLmdldChzdGF0aWNfY2FzdDx1aW50OF90PihkZWNvZGVyLm1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSkpKSB7CiAgICAgICAgIEFTU0VSVCghZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpOwog
CiAgICAgICAgIG1lc3NhZ2VSZWNlaXZlci0+ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKGNvbm5lY3Rp
b24sIGRlY29kZXIsIHJlcGx5RW5jb2Rlcik7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0K
IAotICAgIGlmIChNZXNzYWdlUmVjZWl2ZXIqIG1lc3NhZ2VSZWNlaXZlciA9IG1fbWVzc2FnZVJl
Y2VpdmVycy5nZXQoc3RkOjptYWtlX3BhaXIoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCks
IGRlY29kZXIuZGVzdGluYXRpb25JRCgpKSkpIHsKKyAgICBpZiAoTWVzc2FnZVJlY2VpdmVyKiBt
ZXNzYWdlUmVjZWl2ZXIgPSBtX21lc3NhZ2VSZWNlaXZlcnMuZ2V0KHN0ZDo6bWFrZV9wYWlyKHN0
YXRpY19jYXN0PHVpbnQ4X3Q+KGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpKSwgZGVjb2Rl
ci5kZXN0aW5hdGlvbklEKCkpKSkgewogICAgICAgICBtZXNzYWdlUmVjZWl2ZXItPmRpZFJlY2Vp
dmVTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIpOwogICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9N
ZXNzYWdlUmVjZWl2ZXJNYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9NZXNzYWdlUmVjZWl2ZXJNYXAuaAkocmV2aXNpb24gMjYwNzY0KQorKysgU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVyTWFwLmgJKHdvcmtpbmcgY29weSkKQEAg
LTIzLDggKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwog
Ci0jaWZuZGVmIE1lc3NhZ2VSZWNlaXZlck1hcF9oCi0jZGVmaW5lIE1lc3NhZ2VSZWNlaXZlck1h
cF9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIlN0cmluZ1JlZmVyZW5jZS5oIgogI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC0zNiwxNyArMzUsMTggQEAgY2xhc3MgQ29ubmVjdGlvbjsK
IGNsYXNzIEVuY29kZXI7CiBjbGFzcyBEZWNvZGVyOwogY2xhc3MgTWVzc2FnZVJlY2VpdmVyOwor
ZW51bSBjbGFzcyBSZWNlaXZlck5hbWUgOiB1aW50OF90OwogCiBjbGFzcyBNZXNzYWdlUmVjZWl2
ZXJNYXAgewogcHVibGljOgogICAgIE1lc3NhZ2VSZWNlaXZlck1hcCgpOwogICAgIH5NZXNzYWdl
UmVjZWl2ZXJNYXAoKTsKIAotICAgIHZvaWQgYWRkTWVzc2FnZVJlY2VpdmVyKFN0cmluZ1JlZmVy
ZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBNZXNzYWdlUmVjZWl2ZXImKTsKLSAgICB2b2lkIGFk
ZE1lc3NhZ2VSZWNlaXZlcihTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgdWlu
dDY0X3QgZGVzdGluYXRpb25JRCwgTWVzc2FnZVJlY2VpdmVyJik7CisgICAgdm9pZCBhZGRNZXNz
YWdlUmVjZWl2ZXIoUmVjZWl2ZXJOYW1lLCBNZXNzYWdlUmVjZWl2ZXImKTsKKyAgICB2b2lkIGFk
ZE1lc3NhZ2VSZWNlaXZlcihSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIE1l
c3NhZ2VSZWNlaXZlciYpOwogCi0gICAgdm9pZCByZW1vdmVNZXNzYWdlUmVjZWl2ZXIoU3RyaW5n
UmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUpOwotICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJl
Y2VpdmVyKFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0
aW5hdGlvbklEKTsKKyAgICB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihSZWNlaXZlck5hbWUp
OworICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKFJlY2VpdmVyTmFtZSwgdWludDY0X3Qg
ZGVzdGluYXRpb25JRCk7CiAgICAgdm9pZCByZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZVJl
Y2VpdmVyJik7CiAKICAgICB2b2lkIGludmFsaWRhdGUoKTsKQEAgLTU2LDExICs1Niw5IEBAIHB1
YmxpYzoKIAogcHJpdmF0ZToKICAgICAvLyBNZXNzYWdlIHJlY2VpdmVycyB0aGF0IGRvbid0IHJl
cXVpcmUgYSBkZXN0aW5hdGlvbiBJRC4KLSAgICBIYXNoTWFwPFN0cmluZ1JlZmVyZW5jZSwgTWVz
c2FnZVJlY2VpdmVyKj4gbV9nbG9iYWxNZXNzYWdlUmVjZWl2ZXJzOworICAgIEhhc2hNYXA8dWlu
dDhfdCwgTWVzc2FnZVJlY2VpdmVyKj4gbV9nbG9iYWxNZXNzYWdlUmVjZWl2ZXJzOwogCi0gICAg
SGFzaE1hcDxzdGQ6OnBhaXI8U3RyaW5nUmVmZXJlbmNlLCB1aW50NjRfdD4sIE1lc3NhZ2VSZWNl
aXZlcio+IG1fbWVzc2FnZVJlY2VpdmVyczsKKyAgICBIYXNoTWFwPHN0ZDo6cGFpcjx1aW50OF90
LCB1aW50NjRfdD4sIE1lc3NhZ2VSZWNlaXZlcio+IG1fbWVzc2FnZVJlY2VpdmVyczsKIH07CiAK
IH07Ci0KLSNlbmRpZiAvLyBNZXNzYWdlUmVjZWl2ZXJNYXBfaApJbmRleDogU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VTZW5kZXIuaAkocmV2aXNpb24gMjYwNzY0KQorKysgU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHN0YXRpY19hc3NlcnQoIVU6
OmlzU3luYywgIk1lc3NhZ2UgaXMgc3luYyEiKTsKIAotICAgICAgICBhdXRvIGVuY29kZXIgPSBt
YWtlVW5pcXVlPEVuY29kZXI+KFU6OnJlY2VpdmVyTmFtZSgpLCBVOjpuYW1lKCksIGRlc3RpbmF0
aW9uSUQpOworICAgICAgICBhdXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlPEVuY29kZXI+KFU6Om5h
bWUoKSwgZGVzdGluYXRpb25JRCk7CiAgICAgICAgIGVuY29kZXItPmVuY29kZShtZXNzYWdlLmFy
Z3VtZW50cygpKTsKICAgICAgICAgCiAgICAgICAgIHJldHVybiBzZW5kTWVzc2FnZShXVEZNb3Zl
KGVuY29kZXIpLCBzZW5kT3B0aW9ucyk7CkBAIC04OCw3ICs4OCw3IEBAIHB1YmxpYzoKICAgICB7
CiAgICAgICAgIENPTVBJTEVfQVNTRVJUKCFUOjppc1N5bmMsIEFzeW5jTWVzc2FnZUV4cGVjdGVk
KTsKIAotICAgICAgICBhdXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlPElQQzo6RW5jb2Rlcj4oVDo6
cmVjZWl2ZXJOYW1lKCksIFQ6Om5hbWUoKSwgZGVzdGluYXRpb25JRCk7CisgICAgICAgIGF1dG8g
ZW5jb2RlciA9IG1ha2VVbmlxdWU8SVBDOjpFbmNvZGVyPihUOjpuYW1lKCksIGRlc3RpbmF0aW9u
SUQpOwogICAgICAgICB1aW50NjRfdCBsaXN0ZW5lcklEID0gSVBDOjpuZXh0QXN5bmNSZXBseUhh
bmRsZXJJRCgpOwogICAgICAgICBlbmNvZGVyLT5lbmNvZGUobGlzdGVuZXJJRCk7CiAgICAgICAg
IGVuY29kZXItPmVuY29kZShtZXNzYWdlLmFyZ3VtZW50cygpKTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL2NvY29hL0Nvbm5lY3Rpb25Db2NvYS5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9Db25uZWN0aW9uQ29jb2EubW0JKHJldmlz
aW9uIDI2MDgwNykKKysrIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL0Nvbm5lY3Rp
b25Db2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjE0LDcgKzIxNCw3IEBAIGJvb2wgQ29ubmVj
dGlvbjo6b3BlbigpCiAgICAgICAgIG1faXNDb25uZWN0ZWQgPSB0cnVlOwogICAgICAgICAKICAg
ICAgICAgLy8gU2VuZCB0aGUgaW5pdGlhbGl6ZSBtZXNzYWdlLCB3aGljaCBjb250YWlucyBhIHNl
bmQgcmlnaHQgZm9yIHRoZSBzZXJ2ZXIgdG8gdXNlLgotICAgICAgICBhdXRvIGVuY29kZXIgPSBt
YWtlVW5pcXVlPEVuY29kZXI+KCJJUEMiLCAiSW5pdGlhbGl6ZUNvbm5lY3Rpb24iLCAwKTsKKyAg
ICAgICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNvZGVyPihNZXNzYWdlTmFtZTo6SW5p
dGlhbGl6ZUNvbm5lY3Rpb24sIDApOwogICAgICAgICBlbmNvZGVyLT5lbmNvZGUoTWFjaFBvcnQo
bV9yZWNlaXZlUG9ydCwgTUFDSF9NU0dfVFlQRV9NQUtFX1NFTkQpKTsKIAogICAgICAgICBpbml0
aWFsaXplU2VuZFNvdXJjZSgpOwpAQCAtMjczLDcgKzI3Myw3IEBAIGJvb2wgQ29ubmVjdGlvbjo6
c2VuZE1lc3NhZ2Uoc3RkOjp1bmlxdWUKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgZGVm
YXVsdDoKLSAgICAgICAgQ1N0cmluZyBtZXNzYWdlTmFtZSA9IG1ha2VTdHJpbmcobWVzc2FnZS0+
bWVzc2FnZVJlY2VpdmVyTmFtZSgpLmRhdGEoKSwgIjo6IiwgbWVzc2FnZS0+bWVzc2FnZU5hbWUo
KS5kYXRhKCkpLnV0ZjgoKTsKKyAgICAgICAgQ1N0cmluZyBtZXNzYWdlTmFtZShkZXNjcmlwdGlv
bihtZXNzYWdlLT5tZXNzYWdlTmFtZSgpKSk7CiAgICAgICAgIFdlYktpdDo6c2V0Q3Jhc2hSZXBv
cnRBcHBsaWNhdGlvblNwZWNpZmljSW5mb3JtYXRpb24oKF9fYnJpZGdlIENGU3RyaW5nUmVmKVtO
U1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiVW5oYW5kbGVkIGVycm9yIGNvZGUgJXgsIG1lc3Nh
Z2UgJyVzJywgaGFzaCAlZCIsIGtyLCBtZXNzYWdlTmFtZS5kYXRhKCksIG1lc3NhZ2VOYW1lLmhh
c2goKV0pOwogICAgICAgICBDUkFTSF9XSVRIX0lORk8oa3IsIG1lc3NhZ2VOYW1lLmhhc2goKSk7
CiAgICAgfQpAQCAtMzA4LDcgKzMwOCw3IEBAIGJvb2wgQ29ubmVjdGlvbjo6c2VuZE91dGdvaW5n
TWVzc2FnZShzdGQKICAgICB9CiAKICAgICBzaXplX3Qgc2FmZU1lc3NhZ2VTaXplID0gbWVzc2Fn
ZVNpemUudW5zYWZlR2V0KCk7Ci0gICAgYXV0byBtZXNzYWdlID0gTWFjaE1lc3NhZ2U6OmNyZWF0
ZShlbmNvZGVyLT5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkudG9TdHJpbmcoKSwgZW5jb2Rlci0+bWVz
c2FnZU5hbWUoKS50b1N0cmluZygpLCBzYWZlTWVzc2FnZVNpemUpOworICAgIGF1dG8gbWVzc2Fn
ZSA9IE1hY2hNZXNzYWdlOjpjcmVhdGUoZW5jb2Rlci0+bWVzc2FnZU5hbWUoKSwgc2FmZU1lc3Nh
Z2VTaXplKTsKICAgICBpZiAoIW1lc3NhZ2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAt
NTMyLDcgKzUzMiw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6cmVjZWl2ZVNvdXJjZUV2ZW50SGFuZGwK
ICAgICBkZWNvZGVyLT5zZXRJbXBvcnRhbmNlQXNzZXJ0aW9uKG1ha2VVbmlxdWU8SW1wb3J0YW5j
ZUFzc2VydGlvbj4oaGVhZGVyKSk7CiAjZW5kaWYKIAotICAgIGlmIChkZWNvZGVyLT5tZXNzYWdl
UmVjZWl2ZXJOYW1lKCkgPT0gIklQQyIgJiYgZGVjb2Rlci0+bWVzc2FnZU5hbWUoKSA9PSAiSW5p
dGlhbGl6ZUNvbm5lY3Rpb24iKSB7CisgICAgaWYgKGRlY29kZXItPm1lc3NhZ2VOYW1lKCkgPT0g
TWVzc2FnZU5hbWU6OkluaXRpYWxpemVDb25uZWN0aW9uKSB7CiAgICAgICAgIEFTU0VSVChtX2lz
U2VydmVyKTsKICAgICAgICAgQVNTRVJUKCFtX2lzQ29ubmVjdGVkKTsKICAgICAgICAgQVNTRVJU
KCFtX3NlbmRQb3J0KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL01h
Y2hNZXNzYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9j
b2NvYS9NYWNoTWVzc2FnZS5jcHAJKHJldmlzaW9uIDI2MDc2NCkKKysrIFNvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL2NvY29hL01hY2hNZXNzYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzks
MTggKzM5LDE3IEBAIHN0YXRpYyBpbmxpbmUgQ2hlY2tlZFNpemUgc2FmZVJvdW5kTXNnKEMKICAg
ICByZXR1cm4gKCh2YWx1ZSArIChhbGlnbm1lbnQgLSAxKSkgLyBhbGlnbm1lbnQpICogYWxpZ25t
ZW50OwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8TWFjaE1lc3NhZ2U+IE1hY2hNZXNzYWdlOjpjcmVh
dGUoQ1N0cmluZyYmIG1lc3NhZ2VSZWNlaXZlck5hbWUsIENTdHJpbmcmJiBtZXNzYWdlTmFtZSwg
c2l6ZV90IHNpemUpCitzdGQ6OnVuaXF1ZV9wdHI8TWFjaE1lc3NhZ2U+IE1hY2hNZXNzYWdlOjpj
cmVhdGUoTWVzc2FnZU5hbWUgbWVzc2FnZU5hbWUsIHNpemVfdCBzaXplKQogewogICAgIGF1dG8g
YnVmZmVyU2l6ZSA9IENoZWNrZWRTaXplKHNpemVvZihNYWNoTWVzc2FnZSkpICsgc2l6ZTsKICAg
ICBpZiAoYnVmZmVyU2l6ZS5oYXNPdmVyZmxvd2VkKCkpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIHZvaWQqIG1lbW9yeSA9IFdURjo6ZmFzdFplcm9lZE1hbGxvYyhidWZmZXJTaXplLnVu
c2FmZUdldCgpKTsKLSAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPE1hY2hNZXNzYWdlPiB7IG5l
dyAoTm90TnVsbCwgbWVtb3J5KSBNYWNoTWVzc2FnZSB7IFdURk1vdmUobWVzc2FnZVJlY2VpdmVy
TmFtZSksIFdURk1vdmUobWVzc2FnZU5hbWUpLCBzaXplIH0gfTsKKyAgICByZXR1cm4gc3RkOjp1
bmlxdWVfcHRyPE1hY2hNZXNzYWdlPiB7IG5ldyAoTm90TnVsbCwgbWVtb3J5KSBNYWNoTWVzc2Fn
ZSB7IG1lc3NhZ2VOYW1lLCBzaXplIH0gfTsKIH0KIAotTWFjaE1lc3NhZ2U6Ok1hY2hNZXNzYWdl
KENTdHJpbmcmJiBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBDU3RyaW5nJiYgbWVzc2FnZU5hbWUsIHNp
emVfdCBzaXplKQotICAgIDogbV9tZXNzYWdlUmVjZWl2ZXJOYW1lKFdURk1vdmUobWVzc2FnZVJl
Y2VpdmVyTmFtZSkpCi0gICAgLCBtX21lc3NhZ2VOYW1lKFdURk1vdmUobWVzc2FnZU5hbWUpKQor
TWFjaE1lc3NhZ2U6Ok1hY2hNZXNzYWdlKE1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lLCBzaXplX3Qg
c2l6ZSkKKyAgICA6IG1fbWVzc2FnZU5hbWUgeyBtZXNzYWdlTmFtZSB9CiAgICAgLCBtX3NpemUg
eyBzaXplIH0KIHsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL01h
Y2hNZXNzYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvY29j
b2EvTWFjaE1lc3NhZ2UuaAkocmV2aXNpb24gMjYwNzY0KQorKysgU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvY29jb2EvTWFjaE1lc3NhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcs
NyBAQAogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAKKyNpbmNsdWRlICJNZXNzYWdlTmFtZXMuaCIK
ICNpbmNsdWRlIDxtYWNoL21lc3NhZ2UuaD4KICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8
d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+CkBAIC0zNyw3ICszOCw3IEBAIG5hbWVzcGFjZSBJUEMg
ewogY2xhc3MgTWFjaE1lc3NhZ2UgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TWFjaE1lc3NhZ2U+IGNyZWF0ZShDU3Ry
aW5nJiYgbWVzc2FnZVJlY2VpdmVyTmFtZSwgQ1N0cmluZyYmIG1lc3NhZ2VOYW1lLCBzaXplX3Qp
OworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TWFjaE1lc3NhZ2U+IGNyZWF0ZShNZXNzYWdl
TmFtZSwgc2l6ZV90KTsKICAgICB+TWFjaE1lc3NhZ2UoKTsKIAogICAgIHN0YXRpYyBDaGVja2Vk
U2l6ZSBtZXNzYWdlU2l6ZShzaXplX3QgYm9keVNpemUsIHNpemVfdCBwb3J0RGVzY3JpcHRvckNv
dW50LCBzaXplX3QgbWVtb3J5RGVzY3JpcHRvckNvdW50KTsKQEAgLTQ3LDE0ICs0OCwxMyBAQCBw
dWJsaWM6CiAKICAgICB2b2lkIGxlYWtEZXNjcmlwdG9ycygpOwogCi0gICAgY29uc3QgQ1N0cmlu
ZyYgbWVzc2FnZVJlY2VpdmVyTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWVzc2FnZVJlY2VpdmVy
TmFtZTsgfQotICAgIGNvbnN0IENTdHJpbmcmIG1lc3NhZ2VOYW1lKCkgY29uc3QgeyByZXR1cm4g
bV9tZXNzYWdlTmFtZTsgfQorICAgIFJlY2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1lKCkg
Y29uc3QgeyByZXR1cm4gcmVjZWl2ZXJOYW1lKG1fbWVzc2FnZU5hbWUpOyB9CisgICAgTWVzc2Fn
ZU5hbWUgbWVzc2FnZU5hbWUoKSBjb25zdCB7IHJldHVybiBtX21lc3NhZ2VOYW1lOyB9CiAKIHBy
aXZhdGU6Ci0gICAgTWFjaE1lc3NhZ2UoQ1N0cmluZyYmIG1lc3NhZ2VSZWNlaXZlck5hbWUsIENT
dHJpbmcmJiBtZXNzYWdlTmFtZSwgc2l6ZV90KTsKKyAgICBNYWNoTWVzc2FnZShNZXNzYWdlTmFt
ZSwgc2l6ZV90KTsKIAotICAgIENTdHJpbmcgbV9tZXNzYWdlUmVjZWl2ZXJOYW1lOwotICAgIENT
dHJpbmcgbV9tZXNzYWdlTmFtZTsKKyAgICBNZXNzYWdlTmFtZSBtX21lc3NhZ2VOYW1lOwogICAg
IHNpemVfdCBtX3NpemU7CiAgICAgYm9vbCBtX3Nob3VsZEZyZWVEZXNjcmlwdG9ycyB7IHRydWUg
fTsKICAgICBtYWNoX21zZ19oZWFkZXJfdCBtX21lc3NhZ2VIZWFkZXJbXTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmNw
cAkocmV2aXNpb24gMjYwNzY0KQorKysgU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1dlYlBy
b2Nlc3NDb25uZWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjA1LDcgKzIwNSw3IEBAIHZv
aWQgV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmRlc3Ryb3lQbHVnaW4KICAgICBkZXN0cm95UGx1Z2lu
Q29udHJvbGxlclByb3h5KHBsdWdpbkNvbnRyb2xsZXJQcm94eSk7CiB9CiAKLXZvaWQgV2ViUHJv
Y2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
LCBJUEM6OlN0cmluZ1JlZmVyZW5jZSwgSVBDOjpTdHJpbmdSZWZlcmVuY2UpCit2b2lkIFdlYlBy
b2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiwgSVBDOjpNZXNzYWdlTmFtZSkKIHsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50LgogfQpJbmRl
eDogU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0
aW9uLmgJKHJldmlzaW9uIDI2MDc2NCkKKysrIFNvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9X
ZWJQcm9jZXNzQ29ubmVjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC02NCw3ICs2NCw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6
OkRlY29kZXImKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVy
PiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJikgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwg
SVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpTdHJpbmdSZWZl
cmVuY2UgbWVzc2FnZU5hbWUpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZU5hbWUpIG92ZXJyaWRlOwogCiAg
ICAgLy8gTWVzc2FnZSBoYW5kbGVycy4KICAgICB2b2lkIGRpZFJlY2VpdmVXZWJQcm9jZXNzQ29u
bmVjdGlvbk1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1NjcmlwdHMvTWFrZWZpbGUKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9TY3JpcHRzL01ha2VmaWxlCShyZXZpc2lvbiAyNjA3NjQpCisrKyBTb3VyY2UvV2ViS2l0L1Nj
cmlwdHMvTWFrZWZpbGUJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSwyIEBACiBhbGw6Ci0JcHl0
aG9uIC4vZ2VuZXJhdGUtbWVzc2FnZS1yZWNlaXZlci5weSB3ZWJraXQvdGVzdC1zdXBlcmNsYXNz
LW1lc3NhZ2VzLmluIC0taW1wbGVtZW50YXRpb24gd2Via2l0L01lc3NhZ2VSZWNlaXZlclN1cGVy
Y2xhc3MtZXhwZWN0ZWQuY3BwIC0taGVhZGVyIHdlYmtpdC9NZXNzYWdlc1N1cGVyY2xhc3MtZXhw
ZWN0ZWQuaCAtLXJlcGx5LWhlYWRlciB3ZWJraXQvTWVzc2FnZXNSZXBsaWVzU3VwZXJjbGFzc1Jl
cGxpZXMtZXhwZWN0ZWQuaAotCXB5dGhvbiAuL2dlbmVyYXRlLW1lc3NhZ2UtcmVjZWl2ZXIucHkg
d2Via2l0L3Rlc3QtbGVnYWN5LW1lc3NhZ2VzLmluIC0taW1wbGVtZW50YXRpb24gd2Via2l0L0xl
Z2FjeU1lc3NhZ2VSZWNlaXZlci1leHBlY3RlZC5jcHAgLS1oZWFkZXIgd2Via2l0L0xlZ2FjeU1l
c3NhZ2VzLWV4cGVjdGVkLmggLS1yZXBseS1oZWFkZXIgd2Via2l0L0xlZ2FjeU1lc3NhZ2VzUmVw
bGllcy1leHBlY3RlZC5oCi0JcHl0aG9uIC4vZ2VuZXJhdGUtbWVzc2FnZS1yZWNlaXZlci5weSB3
ZWJraXQvdGVzdC1tZXNzYWdlcy5pbiAtLWltcGxlbWVudGF0aW9uIHdlYmtpdC9NZXNzYWdlUmVj
ZWl2ZXItZXhwZWN0ZWQuY3BwIC0taGVhZGVyIHdlYmtpdC9NZXNzYWdlcy1leHBlY3RlZC5oIC0t
cmVwbHktaGVhZGVyIHdlYmtpdC9NZXNzYWdlc1JlcGxpZXMtZXhwZWN0ZWQuaAotCisJY2Qgd2Vi
a2l0ICYmIHB5dGhvbiAuLi9nZW5lcmF0ZS1tZXNzYWdlLXJlY2VpdmVyLnB5IHRlc3Qtc3VwZXJj
bGFzcyB0ZXN0LWxlZ2FjeSB0ZXN0ICYmIGNkIC4uCkluZGV4OiBTb3VyY2UvV2ViS2l0L1Njcmlw
dHMvZ2VuZXJhdGUtbWVzc2FnZS1yZWNlaXZlci5weQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1NjcmlwdHMvZ2VuZXJhdGUtbWVzc2FnZS1yZWNlaXZlci5weQkocmV2aXNpb24gMjYwNzY0
KQorKysgU291cmNlL1dlYktpdC9TY3JpcHRzL2dlbmVyYXRlLW1lc3NhZ2UtcmVjZWl2ZXIucHkJ
KHdvcmtpbmcgY29weSkKQEAgLTIzLDMzICsyMyw0MiBAQAogIyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiBmcm9t
IF9fZnV0dXJlX18gaW1wb3J0IHdpdGhfc3RhdGVtZW50Ci1pbXBvcnQgYXJncGFyc2UKIGltcG9y
dCBzeXMKIAogaW1wb3J0IHdlYmtpdC5tZXNzYWdlcwogaW1wb3J0IHdlYmtpdC5wYXJzZXIKIAog
Ci1kZWYgbWFpbihhcmd2PU5vbmUpOgotICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFy
c2VyKCkKLSAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCdzb3VyY2UnKQotICAgIHBhcnNlci5hZGRf
YXJndW1lbnQoJy0taW1wbGVtZW50YXRpb24nLCByZXF1aXJlZD1UcnVlKQotICAgIHBhcnNlci5h
ZGRfYXJndW1lbnQoJy0taGVhZGVyJywgcmVxdWlyZWQ9VHJ1ZSkKLSAgICBwYXJzZXIuYWRkX2Fy
Z3VtZW50KCctLXJlcGx5LWhlYWRlcicsIHJlcXVpcmVkPVRydWUpCi0KLSAgICBhcmdzID0gcGFy
c2VyLnBhcnNlX2FyZ3MoKQotCi0gICAgd2l0aCBvcGVuKGFyZ3Muc291cmNlKSBhcyBzb3VyY2Vf
ZmlsZToKLSAgICAgICAgcmVjZWl2ZXIgPSB3ZWJraXQucGFyc2VyLnBhcnNlKHNvdXJjZV9maWxl
KQorZGVmIG1haW4oYXJndik6CisgICAgcmVjZWl2ZXJzID0gW10KIAotICAgIHdpdGggb3Blbihh
cmdzLmltcGxlbWVudGF0aW9uLCAidysiKSBhcyBpbXBsZW1lbnRhdGlvbl9vdXRwdXQ6Ci0gICAg
ICAgIGltcGxlbWVudGF0aW9uX291dHB1dC53cml0ZSh3ZWJraXQubWVzc2FnZXMuZ2VuZXJhdGVf
bWVzc2FnZV9oYW5kbGVyKHJlY2VpdmVyKSkKKyAgICBmaXJzdF9hcmcgPSBUcnVlCisgICAgZm9y
IHBhdGhfd2l0aG91dF9tZXNzYWdlc19pbl9zdWZmaXggaW4gYXJndjoKKyAgICAgICAgaWYgZmly
c3RfYXJnOgorICAgICAgICAgICAgZmlyc3RfYXJnID0gRmFsc2UKKyAgICAgICAgICAgIGNvbnRp
bnVlCiAKLSAgICB3aXRoIG9wZW4oYXJncy5oZWFkZXIsICJ3KyIpIGFzIGhlYWRlcl9vdXRwdXQ6
Ci0gICAgICAgIGhlYWRlcl9vdXRwdXQud3JpdGUod2Via2l0Lm1lc3NhZ2VzLmdlbmVyYXRlX21l
c3NhZ2VzX2hlYWRlcihyZWNlaXZlcikpCisgICAgICAgIHJlY2VpdmVyX25hbWUgPSBwYXRoX3dp
dGhvdXRfbWVzc2FnZXNfaW5fc3VmZml4LnJzcGxpdCgnLycsIDEpLnBvcCgpCisgICAgICAgIHBy
aW50ICdHZW5lcmF0aW5nIG1lc3NhZ2UgcmVjZWl2ZXIgZm9yICVzJyAlIHJlY2VpdmVyX25hbWUK
IAotICAgIHdpdGggb3BlbihhcmdzLnJlcGx5X2hlYWRlciwgIncrIikgYXMgcmVwbHlfaGVhZGVy
X291dHB1dDoKLSAgICAgICAgcmVwbHlfaGVhZGVyX291dHB1dC53cml0ZSh3ZWJraXQubWVzc2Fn
ZXMuZ2VuZXJhdGVfbWVzc2FnZXNfcmVwbHlfaGVhZGVyKHJlY2VpdmVyKSkKKyAgICAgICAgd2l0
aCBvcGVuKCclcy5tZXNzYWdlcy5pbicgJSBwYXRoX3dpdGhvdXRfbWVzc2FnZXNfaW5fc3VmZml4
KSBhcyBzb3VyY2VfZmlsZToKKyAgICAgICAgICAgIHJlY2VpdmVyID0gd2Via2l0LnBhcnNlci5w
YXJzZShzb3VyY2VfZmlsZSkKKyAgICAgICAgcmVjZWl2ZXJzLmFwcGVuZChyZWNlaXZlcikKKwor
ICAgICAgICB3aXRoIG9wZW4oJyVzTWVzc2FnZVJlY2VpdmVyLmNwcCcgJSByZWNlaXZlcl9uYW1l
LCAidysiKSBhcyBpbXBsZW1lbnRhdGlvbl9vdXRwdXQ6CisgICAgICAgICAgICBpbXBsZW1lbnRh
dGlvbl9vdXRwdXQud3JpdGUod2Via2l0Lm1lc3NhZ2VzLmdlbmVyYXRlX21lc3NhZ2VfaGFuZGxl
cihyZWNlaXZlcikpCisKKyAgICAgICAgd2l0aCBvcGVuKCclc01lc3NhZ2VzLmgnICUgcmVjZWl2
ZXJfbmFtZSwgIncrIikgYXMgaGVhZGVyX291dHB1dDoKKyAgICAgICAgICAgIGhlYWRlcl9vdXRw
dXQud3JpdGUod2Via2l0Lm1lc3NhZ2VzLmdlbmVyYXRlX21lc3NhZ2VzX2hlYWRlcihyZWNlaXZl
cikpCisKKyAgICAgICAgd2l0aCBvcGVuKCclc01lc3NhZ2VzUmVwbGllcy5oJyAlIHJlY2VpdmVy
X25hbWUsICJ3KyIpIGFzIHJlcGx5X2hlYWRlcl9vdXRwdXQ6CisgICAgICAgICAgICByZXBseV9o
ZWFkZXJfb3V0cHV0LndyaXRlKHdlYmtpdC5tZXNzYWdlcy5nZW5lcmF0ZV9tZXNzYWdlc19yZXBs
eV9oZWFkZXIocmVjZWl2ZXIpKQorCisgICAgd2l0aCBvcGVuKCdNZXNzYWdlTmFtZXMuaCcsICJ3
KyIpIGFzIG1lc3NhZ2VfbmFtZXNfaGVhZGVyX291dHB1dDoKKyAgICAgICAgbWVzc2FnZV9uYW1l
c19oZWFkZXJfb3V0cHV0LndyaXRlKHdlYmtpdC5tZXNzYWdlcy5nZW5lcmF0ZV9tZXNzYWdlX25h
bWVzX2hlYWRlcihyZWNlaXZlcnMpKQorCisgICAgd2l0aCBvcGVuKCdNZXNzYWdlTmFtZXMuY3Bw
JywgIncrIikgYXMgbWVzc2FnZV9uYW1lc19pbXBsZW1lbnRhdGlvbl9vdXRwdXQ6CisgICAgICAg
IG1lc3NhZ2VfbmFtZXNfaW1wbGVtZW50YXRpb25fb3V0cHV0LndyaXRlKHdlYmtpdC5tZXNzYWdl
cy5nZW5lcmF0ZV9tZXNzYWdlX25hbWVzX2ltcGxlbWVudGF0aW9uKHJlY2VpdmVycykpCiAKICAg
ICByZXR1cm4gMAogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L0xlZ2FjeU1l
c3NhZ2VzLWV4cGVjdGVkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TY3JpcHRzL3dl
YmtpdC9MZWdhY3lNZXNzYWdlcy1leHBlY3RlZC5oCShyZXZpc2lvbiAyNjA3NjQpCisrKyBTb3Vy
Y2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L0xlZ2FjeU1lc3NhZ2VzLWV4cGVjdGVkLmgJKG5vbmV4
aXN0ZW50KQpAQCAtMSw1NzAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMC0yMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycgQU5ECi0gKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSAqIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SCi0gKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSAq
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25j
ZQotCi0jaWYgKEVOQUJMRShXRUJLSVQyKSAmJiAoTkVTVEVEX01BU1RFUl9DT05ESVRJT04gfHwg
TUFTVEVSX09SICYmIE1BU1RFUl9BTkQpKQotCi0jaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIK
LSNpbmNsdWRlICJDb25uZWN0aW9uLmgiCi0jaW5jbHVkZSAiUGx1Z2luLmgiCi0jaW5jbHVkZSAi
V2ViUGFnZU1lc3NhZ2VzUmVwbGllcy5oIgotI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NMYXll
ci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvS2V5Ym9hcmRFdmVudC5oPgotI2luY2x1ZGUgPFdlYkNv
cmUvUGx1Z2luRGF0YS5oPgotI2luY2x1ZGUgPHV0aWxpdHk+Ci0jaW5jbHVkZSA8d3RmL0Zvcndh
cmQuaD4KLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZl
UmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIElQQyB7Ci1jbGFzcyBEdW1teVR5cGU7Ci1jbGFz
cyBNYWNoUG9ydDsKLX0KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci1jbGFzcyBXZWJQcmVmZXJlbmNl
c1N0b3JlOwotY2xhc3MgV2ViVG91Y2hFdmVudDsKLX0KLQotbmFtZXNwYWNlIE1lc3NhZ2VzIHsK
LW5hbWVzcGFjZSBXZWJQYWdlIHsKLQotc3RhdGljIGlubGluZSBJUEM6OlN0cmluZ1JlZmVyZW5j
ZSBtZXNzYWdlUmVjZWl2ZXJOYW1lKCkKLXsKLSAgICByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVu
Y2UoIldlYlBhZ2UiKTsKLX0KLQotY2xhc3MgTG9hZFVSTCB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRl
ZiBzdGQ6OnR1cGxlPGNvbnN0IFN0cmluZyY+IEFyZ3VtZW50czsKLQotICAgIHN0YXRpYyBJUEM6
OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJO
YW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJu
IElQQzo6U3RyaW5nUmVmZXJlbmNlKCJMb2FkVVJMIik7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9v
bCBpc1N5bmMgPSBmYWxzZTsKLQotICAgIGV4cGxpY2l0IExvYWRVUkwoY29uc3QgU3RyaW5nJiB1
cmwpCi0gICAgICAgIDogbV9hcmd1bWVudHModXJsKQotICAgIHsKLSAgICB9Ci0KLSAgICBjb25z
dCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9h
cmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsK
LX07Ci0KLSNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQotY2xhc3MgTG9hZFNvbWV0aGluZyB7Ci1w
dWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGNvbnN0IFN0cmluZyY+IEFyZ3VtZW50czsK
LQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVy
biBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVu
Y2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJMb2FkU29tZXRoaW5nIik7
IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKLQotICAgIGV4cGxpY2l0
IExvYWRTb21ldGhpbmcoY29uc3QgU3RyaW5nJiB1cmwpCi0gICAgICAgIDogbV9hcmd1bWVudHMo
dXJsKQotICAgIHsKLSAgICB9Ci0KLSAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNv
bnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRl
OgotICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKLX07Ci0jZW5kaWYKLQotI2lmIChFTkFCTEUo
VE9VQ0hfRVZFTlRTKSAmJiAoTkVTVEVEX01FU1NBR0VfQ09ORElUSU9OIHx8IFNPTUVfT1RIRVJf
TUVTU0FHRV9DT05ESVRJT04pKQotY2xhc3MgVG91Y2hFdmVudCB7Ci1wdWJsaWM6Ci0gICAgdHlw
ZWRlZiBzdGQ6OnR1cGxlPGNvbnN0IFdlYktpdDo6V2ViVG91Y2hFdmVudCY+IEFyZ3VtZW50czsK
LQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVy
biBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVu
Y2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJUb3VjaEV2ZW50Iik7IH0K
LSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKLQotICAgIGV4cGxpY2l0IFRv
dWNoRXZlbnQoY29uc3QgV2ViS2l0OjpXZWJUb3VjaEV2ZW50JiBldmVudCkKLSAgICAgICAgOiBt
X2FyZ3VtZW50cyhldmVudCkKLSAgICB7Ci0gICAgfQotCi0gICAgY29uc3QgQXJndW1lbnRzJiBh
cmd1bWVudHMoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAg
IH0KLQotcHJpdmF0ZToKLSAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19OwotI2VuZGlmCi0K
LSNpZiAoRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgKE5FU1RFRF9NRVNTQUdFX0NPTkRJVElPTiAm
JiBTT01FX09USEVSX01FU1NBR0VfQ09ORElUSU9OKSkKLWNsYXNzIEFkZEV2ZW50IHsKLXB1Ymxp
YzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8Y29uc3QgV2ViS2l0OjpXZWJUb3VjaEV2ZW50Jj4g
QXJndW1lbnRzOwotCi0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFt
ZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsgfQotICAgIHN0YXRpYyBJUEM6OlN0
cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIkFkZEV2
ZW50Iik7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKLQotICAgIGV4
cGxpY2l0IEFkZEV2ZW50KGNvbnN0IFdlYktpdDo6V2ViVG91Y2hFdmVudCYgZXZlbnQpCi0gICAg
ICAgIDogbV9hcmd1bWVudHMoZXZlbnQpCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0IEFyZ3Vt
ZW50cyYgYXJndW1lbnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50
czsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLSNl
bmRpZgotCi0jaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLWNsYXNzIExvYWRTb21ldGhpbmdFbHNl
IHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8Y29uc3QgU3RyaW5nJj4gQXJndW1l
bnRzOwotCi0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsg
cmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsgfQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1Jl
ZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIkxvYWRTb21ldGhp
bmdFbHNlIik7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKLQotICAg
IGV4cGxpY2l0IExvYWRTb21ldGhpbmdFbHNlKGNvbnN0IFN0cmluZyYgdXJsKQotICAgICAgICA6
IG1fYXJndW1lbnRzKHVybCkKLSAgICB7Ci0gICAgfQotCi0gICAgY29uc3QgQXJndW1lbnRzJiBh
cmd1bWVudHMoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAg
IH0KLQotcHJpdmF0ZToKLSAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19OwotI2VuZGlmCi0K
LWNsYXNzIERpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbiB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBz
dGQ6OnR1cGxlPHVpbnQ2NF90LCB1aW50NjRfdCwgdWludDMyX3Q+IEFyZ3VtZW50czsKLQotICAg
IHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNz
YWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFt
ZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJEaWRSZWNlaXZlUG9saWN5RGVjaXNp
b24iKTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOwotCi0gICAgRGlk
UmVjZWl2ZVBvbGljeURlY2lzaW9uKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IGxpc3RlbmVy
SUQsIHVpbnQzMl90IHBvbGljeUFjdGlvbikKLSAgICAgICAgOiBtX2FyZ3VtZW50cyhmcmFtZUlE
LCBsaXN0ZW5lcklELCBwb2xpY3lBY3Rpb24pCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0IEFy
Z3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3Vt
ZW50czsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsK
LQotY2xhc3MgQ2xvc2UgewotcHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTw+IEFyZ3Vt
ZW50czsKLQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7
IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdS
ZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJDbG9zZSIpOyB9
Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7Ci0KLSAgICBjb25zdCBBcmd1
bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9hcmd1bWVu
dHM7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKLX07Ci0K
LWNsYXNzIFByZWZlcmVuY2VzRGlkQ2hhbmdlIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6
dHVwbGU8Y29uc3QgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlJj4gQXJndW1lbnRzOwotCi0g
ICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1l
c3NhZ2VSZWNlaXZlck5hbWUoKTsgfQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBu
YW1lKCkgeyByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIlByZWZlcmVuY2VzRGlkQ2hhbmdl
Iik7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKLQotICAgIGV4cGxp
Y2l0IFByZWZlcmVuY2VzRGlkQ2hhbmdlKGNvbnN0IFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9y
ZSYgc3RvcmUpCi0gICAgICAgIDogbV9hcmd1bWVudHMoc3RvcmUpCi0gICAgewotICAgIH0KLQot
ICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJn
dW1lbnRzOwotfTsKLQotY2xhc3MgU2VuZERvdWJsZUFuZEZsb2F0IHsKLXB1YmxpYzoKLSAgICB0
eXBlZGVmIHN0ZDo6dHVwbGU8ZG91YmxlLCBmbG9hdD4gQXJndW1lbnRzOwotCi0gICAgc3RhdGlj
IElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNl
aXZlck5hbWUoKTsgfQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyBy
ZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIlNlbmREb3VibGVBbmRGbG9hdCIpOyB9Ci0gICAg
c3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7Ci0KLSAgICBTZW5kRG91YmxlQW5kRmxv
YXQoZG91YmxlIGQsIGZsb2F0IGYpCi0gICAgICAgIDogbV9hcmd1bWVudHMoZCwgZikKLSAgICB7
Ci0gICAgfQotCi0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsK
LSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1
bWVudHMgbV9hcmd1bWVudHM7Ci19OwotCi1jbGFzcyBTZW5kSW50cyB7Ci1wdWJsaWM6Ci0gICAg
dHlwZWRlZiBzdGQ6OnR1cGxlPGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mLCBjb25zdCBWZWN0b3I8
VmVjdG9yPHVpbnQ2NF90Pj4mPiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdS
ZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9
Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0
cmluZ1JlZmVyZW5jZSgiU2VuZEludHMiKTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3lu
YyA9IGZhbHNlOwotCi0gICAgU2VuZEludHMoY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgaW50cywg
Y29uc3QgVmVjdG9yPFZlY3Rvcjx1aW50NjRfdD4+JiBpbnRWZWN0b3JzKQotICAgICAgICA6IG1f
YXJndW1lbnRzKGludHMsIGludFZlY3RvcnMpCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0IEFy
Z3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3Vt
ZW50czsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsK
LQotY2xhc3MgQ3JlYXRlUGx1Z2luIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8
dWludDY0X3QsIGNvbnN0IFdlYktpdDo6UGx1Z2luOjpQYXJhbWV0ZXJzJj4gQXJndW1lbnRzOwot
Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJu
IG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsgfQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5j
ZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIkNyZWF0ZVBsdWdpbiIpOyB9
Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gdHJ1ZTsKLQotICAgIHVzaW5nIFJlcGx5
ID0gc3RkOjp0dXBsZTxib29sJj47Ci0gICAgdXNpbmcgUmVwbHlBcmd1bWVudHMgPSBzdGQ6OnR1
cGxlPGJvb2w+OwotICAgIENyZWF0ZVBsdWdpbih1aW50NjRfdCBwbHVnaW5JbnN0YW5jZUlELCBj
b25zdCBXZWJLaXQ6OlBsdWdpbjo6UGFyYW1ldGVycyYgcGFyYW1ldGVycykKLSAgICAgICAgOiBt
X2FyZ3VtZW50cyhwbHVnaW5JbnN0YW5jZUlELCBwYXJhbWV0ZXJzKQotICAgIHsKLSAgICB9Ci0K
LSAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewotICAgICAgICBy
ZXR1cm4gbV9hcmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBtX2Fy
Z3VtZW50czsKLX07Ci0KLWNsYXNzIFJ1bkphdmFTY3JpcHRBbGVydCB7Ci1wdWJsaWM6Ci0gICAg
dHlwZWRlZiBzdGQ6OnR1cGxlPHVpbnQ2NF90LCBjb25zdCBTdHJpbmcmPiBBcmd1bWVudHM7Ci0K
LSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4g
bWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNl
IG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiUnVuSmF2YVNjcmlwdEFsZXJ0
Iik7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSB0cnVlOwotCi0gICAgdXNpbmcg
UmVwbHkgPSBzdGQ6OnR1cGxlPD47Ci0gICAgdXNpbmcgUmVwbHlBcmd1bWVudHMgPSBzdGQ6OnR1
cGxlPD47Ci0gICAgUnVuSmF2YVNjcmlwdEFsZXJ0KHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0
cmluZyYgbWVzc2FnZSkKLSAgICAgICAgOiBtX2FyZ3VtZW50cyhmcmFtZUlELCBtZXNzYWdlKQot
ICAgIHsKLSAgICB9Ci0KLSAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0g
ICAgewotICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRlOgotICAg
IEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKLX07Ci0KLWNsYXNzIEdldFBsdWdpbnMgewotcHVibGlj
OgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxib29sPiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0aWMg
SVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2Vp
dmVyTmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJl
dHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiR2V0UGx1Z2lucyIpOyB9Ci0gICAgc3RhdGljIGNv
bnN0IGJvb2wgaXNTeW5jID0gdHJ1ZTsKLQotICAgIHVzaW5nIFJlcGx5ID0gc3RkOjp0dXBsZTxW
ZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4mPjsKLSAgICB1c2luZyBSZXBseUFyZ3VtZW50cyA9
IHN0ZDo6dHVwbGU8VmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+PjsKLSAgICBleHBsaWNpdCBH
ZXRQbHVnaW5zKGJvb2wgcmVmcmVzaCkKLSAgICAgICAgOiBtX2FyZ3VtZW50cyhyZWZyZXNoKQot
ICAgIHsKLSAgICB9Ci0KLSAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0g
ICAgewotICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRlOgotICAg
IEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKLX07Ci0KLWNsYXNzIEdldFBsdWdpblByb2Nlc3NDb25u
ZWN0aW9uIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8Y29uc3QgU3RyaW5nJj4g
QXJndW1lbnRzOwotCi0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFt
ZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsgfQotICAgIHN0YXRpYyBJUEM6OlN0
cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIkdldFBs
dWdpblByb2Nlc3NDb25uZWN0aW9uIik7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMg
PSB0cnVlOwotCi0gICAgdXNpbmcgRGVsYXllZFJlcGx5ID0gR2V0UGx1Z2luUHJvY2Vzc0Nvbm5l
Y3Rpb25EZWxheWVkUmVwbHk7Ci0gICAgc3RhdGljIHZvaWQgc2VuZChzdGQ6OnVuaXF1ZV9wdHI8
SVBDOjpFbmNvZGVyPiYmLCBJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBJUEM6OkNvbm5lY3Rpb246
OkhhbmRsZSYgY29ubmVjdGlvbkhhbmRsZSk7Ci0gICAgdXNpbmcgUmVwbHkgPSBzdGQ6OnR1cGxl
PElQQzo6Q29ubmVjdGlvbjo6SGFuZGxlJj47Ci0gICAgdXNpbmcgUmVwbHlBcmd1bWVudHMgPSBz
dGQ6OnR1cGxlPElQQzo6Q29ubmVjdGlvbjo6SGFuZGxlPjsKLSAgICBleHBsaWNpdCBHZXRQbHVn
aW5Qcm9jZXNzQ29ubmVjdGlvbihjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgpCi0gICAgICAgIDog
bV9hcmd1bWVudHMocGx1Z2luUGF0aCkKLSAgICB7Ci0gICAgfQotCi0gICAgY29uc3QgQXJndW1l
bnRzJiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRz
OwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19OwotCi1j
bGFzcyBUZXN0TXVsdGlwbGVBdHRyaWJ1dGVzIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6
dHVwbGU8PiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVj
ZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGlj
IElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5j
ZSgiVGVzdE11bHRpcGxlQXR0cmlidXRlcyIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNT
eW5jID0gdHJ1ZTsKLQotICAgIHVzaW5nIERlbGF5ZWRSZXBseSA9IFRlc3RNdWx0aXBsZUF0dHJp
YnV0ZXNEZWxheWVkUmVwbHk7Ci0gICAgc3RhdGljIHZvaWQgc2VuZChzdGQ6OnVuaXF1ZV9wdHI8
SVBDOjpFbmNvZGVyPiYmLCBJUEM6OkNvbm5lY3Rpb24mKTsKLSAgICB1c2luZyBSZXBseSA9IHN0
ZDo6dHVwbGU8PjsKLSAgICB1c2luZyBSZXBseUFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8PjsKLSAg
ICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1
cm4gbV9hcmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3Vt
ZW50czsKLX07Ci0KLWNsYXNzIFRlc3RQYXJhbWV0ZXJBdHRyaWJ1dGVzIHsKLXB1YmxpYzoKLSAg
ICB0eXBlZGVmIHN0ZDo6dHVwbGU8dWludDY0X3QsIGRvdWJsZSwgZG91YmxlPiBBcmd1bWVudHM7
Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1
cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJl
bmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiVGVzdFBhcmFtZXRlckF0
dHJpYnV0ZXMiKTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOwotCi0g
ICAgVGVzdFBhcmFtZXRlckF0dHJpYnV0ZXModWludDY0X3QgZm9vLCBkb3VibGUgYmFyLCBkb3Vi
bGUgYmF6KQotICAgICAgICA6IG1fYXJndW1lbnRzKGZvbywgYmFyLCBiYXopCi0gICAgewotICAg
IH0KLQotICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1lbnRz
IG1fYXJndW1lbnRzOwotfTsKLQotY2xhc3MgVGVtcGxhdGVUZXN0IHsKLXB1YmxpYzoKLSAgICB0
eXBlZGVmIHN0ZDo6dHVwbGU8Y29uc3QgSGFzaE1hcDxTdHJpbmcsIHN0ZDo6cGFpcjxTdHJpbmcs
IHVpbnQ2NF90Pj4mPiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVu
Y2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAg
c3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1Jl
ZmVyZW5jZSgiVGVtcGxhdGVUZXN0Iik7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMg
PSBmYWxzZTsKLQotICAgIGV4cGxpY2l0IFRlbXBsYXRlVGVzdChjb25zdCBIYXNoTWFwPFN0cmlu
Zywgc3RkOjpwYWlyPFN0cmluZywgdWludDY0X3Q+PiYgYSkKLSAgICAgICAgOiBtX2FyZ3VtZW50
cyhhKQotICAgIHsKLSAgICB9Ci0KLSAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNv
bnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRl
OgotICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKLX07Ci0KLWNsYXNzIFNldFZpZGVvTGF5ZXJJ
RCB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGNvbnN0IFdlYkNvcmU6OkdyYXBo
aWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRCY+IEFyZ3VtZW50czsKLQotICAgIHN0YXRpYyBJUEM6
OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJO
YW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJu
IElQQzo6U3RyaW5nUmVmZXJlbmNlKCJTZXRWaWRlb0xheWVySUQiKTsgfQotICAgIHN0YXRpYyBj
b25zdCBib29sIGlzU3luYyA9IGZhbHNlOwotCi0gICAgZXhwbGljaXQgU2V0VmlkZW9MYXllcklE
KGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRCYgdmlkZW9MYXll
cklEKQotICAgICAgICA6IG1fYXJndW1lbnRzKHZpZGVvTGF5ZXJJRCkKLSAgICB7Ci0gICAgfQot
Ci0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsKLSAgICAgICAg
cmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1bWVudHMgbV9h
cmd1bWVudHM7Ci19OwotCi0jaWYgUExBVEZPUk0oTUFDKQotY2xhc3MgRGlkQ3JlYXRlV2ViUHJv
Y2Vzc0Nvbm5lY3Rpb24gewotcHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBJ
UEM6Ok1hY2hQb3J0Jj4gQXJndW1lbnRzOwotCi0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJl
bmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsgfQotICAg
IHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpTdHJpbmdS
ZWZlcmVuY2UoIkRpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uIik7IH0KLSAgICBzdGF0aWMg
Y29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKLQotICAgIGV4cGxpY2l0IERpZENyZWF0ZVdlYlBy
b2Nlc3NDb25uZWN0aW9uKGNvbnN0IElQQzo6TWFjaFBvcnQmIGNvbm5lY3Rpb25JZGVudGlmaWVy
KQotICAgICAgICA6IG1fYXJndW1lbnRzKGNvbm5lY3Rpb25JZGVudGlmaWVyKQotICAgIHsKLSAg
ICB9Ci0KLSAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewotICAg
ICAgICByZXR1cm4gbV9hcmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50
cyBtX2FyZ3VtZW50czsKLX07Ci0jZW5kaWYKLQotI2lmIFBMQVRGT1JNKE1BQykKLWNsYXNzIElu
dGVycHJldEtleUV2ZW50IHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8dWludDMy
X3Q+IEFyZ3VtZW50czsKLQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZl
ck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMgSVBD
OjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJJ
bnRlcnByZXRLZXlFdmVudCIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gdHJ1
ZTsKLQotICAgIHVzaW5nIFJlcGx5ID0gc3RkOjp0dXBsZTxWZWN0b3I8V2ViQ29yZTo6S2V5cHJl
c3NDb21tYW5kPiY+OwotICAgIHVzaW5nIFJlcGx5QXJndW1lbnRzID0gc3RkOjp0dXBsZTxWZWN0
b3I8V2ViQ29yZTo6S2V5cHJlc3NDb21tYW5kPj47Ci0gICAgZXhwbGljaXQgSW50ZXJwcmV0S2V5
RXZlbnQodWludDMyX3QgdHlwZSkKLSAgICAgICAgOiBtX2FyZ3VtZW50cyh0eXBlKQotICAgIHsK
LSAgICB9Ci0KLSAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewot
ICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3Vt
ZW50cyBtX2FyZ3VtZW50czsKLX07Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShERVBSRUNBVEVEX0ZF
QVRVUkUpCi1jbGFzcyBEZXByZWNhdGVkT3BlcmF0aW9uIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVm
IHN0ZDo6dHVwbGU8Y29uc3QgSVBDOjpEdW1teVR5cGUmPiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0
aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJl
Y2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7
IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiRGVwcmVjYXRlZE9wZXJhdGlvbiIpOyB9Ci0g
ICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7Ci0KLSAgICBleHBsaWNpdCBEZXBy
ZWNhdGVkT3BlcmF0aW9uKGNvbnN0IElQQzo6RHVtbXlUeXBlJiBkdW1teSkKLSAgICAgICAgOiBt
X2FyZ3VtZW50cyhkdW1teSkKLSAgICB7Ci0gICAgfQotCi0gICAgY29uc3QgQXJndW1lbnRzJiBh
cmd1bWVudHMoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAg
IH0KLQotcHJpdmF0ZToKLSAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19OwotI2VuZGlmCi0K
LSNpZiBFTkFCTEUoRVhQRVJJTUVOVEFMX0ZFQVRVUkUpCi1jbGFzcyBFeHBlcmltZW50YWxPcGVy
YXRpb24gewotcHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBJUEM6OkR1bW15
VHlwZSY+IEFyZ3VtZW50czsKLQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNl
aXZlck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMg
SVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNl
KCJFeHBlcmltZW50YWxPcGVyYXRpb24iKTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3lu
YyA9IGZhbHNlOwotCi0gICAgZXhwbGljaXQgRXhwZXJpbWVudGFsT3BlcmF0aW9uKGNvbnN0IElQ
Qzo6RHVtbXlUeXBlJiBkdW1teSkKLSAgICAgICAgOiBtX2FyZ3VtZW50cyhkdW1teSkKLSAgICB7
Ci0gICAgfQotCi0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsK
LSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1
bWVudHMgbV9hcmd1bWVudHM7Ci19OwotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIFdlYlBhZ2UK
LX0gLy8gbmFtZXNwYWNlIE1lc3NhZ2VzCi0KLSNlbmRpZiAvLyAoRU5BQkxFKFdFQktJVDIpICYm
IChORVNURURfTUFTVEVSX0NPTkRJVElPTiB8fCBNQVNURVJfT1IgJiYgTUFTVEVSX0FORCkpCgpQ
cm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L0xlZ2FjeU1l
c3NhZ2VzLWV4cGVjdGVkLmgKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0x
ICswLDAgIyMKLW5hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L0xlZ2FjeU1lc3NhZ2VzUmVwbGllcy1leHBlY3Rl
ZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvTGVnYWN5TWVz
c2FnZXNSZXBsaWVzLWV4cGVjdGVkLmgJKHJldmlzaW9uIDI2MDc2NCkKKysrIFNvdXJjZS9XZWJL
aXQvU2NyaXB0cy93ZWJraXQvTGVnYWN5TWVzc2FnZXNSZXBsaWVzLWV4cGVjdGVkLmgJKG5vbmV4
aXN0ZW50KQpAQCAtMSw0MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJyBBTkQKLSAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
Ci0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUgotICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotICogREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IKLSAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0gKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotICog
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNl
Ci0KLSNpZiAoRU5BQkxFKFdFQktJVDIpICYmIChORVNURURfTUFTVEVSX0NPTkRJVElPTiB8fCBN
QVNURVJfT1IgJiYgTUFTVEVSX0FORCkpCi0KLSNpbmNsdWRlICJDb25uZWN0aW9uLmgiCi0jaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KLQotCi1uYW1lc3BhY2UgTWVzc2FnZXMgewotbmFtZXNwYWNl
IFdlYlBhZ2UgewotCi11c2luZyBHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbkRlbGF5ZWRSZXBs
eSA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpDb25uZWN0aW9uOjpIYW5kbGUm
IGNvbm5lY3Rpb25IYW5kbGUpPjsKLQotdXNpbmcgVGVzdE11bHRpcGxlQXR0cmlidXRlc0RlbGF5
ZWRSZXBseSA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT47Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YlBhZ2UKLX0gLy8gbmFtZXNwYWNlIE1lc3NhZ2VzCi0KLSNlbmRpZiAvLyAoRU5BQkxFKFdFQktJ
VDIpICYmIChORVNURURfTUFTVEVSX0NPTkRJVElPTiB8fCBNQVNURVJfT1IgJiYgTUFTVEVSX0FO
RCkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L01lc3NhZ2VOYW1lcy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9NZXNzYWdlTmFtZXMu
Y3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvTWVzc2Fn
ZU5hbWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEyOCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNZXNzYWdlTmFtZXMuaCIKKwor
bmFtZXNwYWNlIElQQyB7CisKK2NvbnN0IGNoYXIqIGRlc2NyaXB0aW9uKE1lc3NhZ2VOYW1lIG5h
bWUpCit7CisgICAgc3dpdGNoIChuYW1lKSB7CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFn
ZV9Mb2FkVVJMOgorICAgICAgICByZXR1cm4gIldlYlBhZ2U6OkxvYWRVUkwiOworI2lmIEVOQUJM
RShURVNUX0ZFQVRVUkUpCisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9UZXN0QXN5bmNN
ZXNzYWdlOgorICAgICAgICByZXR1cm4gIldlYlBhZ2U6OlRlc3RBc3luY01lc3NhZ2UiOworICAg
IGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVzdEFzeW5jTWVzc2FnZVJlcGx5OgorICAgICAg
ICByZXR1cm4gIldlYlBhZ2U6OlRlc3RBc3luY01lc3NhZ2VSZXBseSI7CisjZW5kaWYKKyNpZiBF
TkFCTEUoVEVTVF9GRUFUVVJFKQorICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVzdEFz
eW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50czoKKyAgICAgICAgcmV0dXJuICJXZWJQYWdlOjpUZXN0
QXN5bmNNZXNzYWdlV2l0aE5vQXJndW1lbnRzIjsKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQ
YWdlX1Rlc3RBc3luY01lc3NhZ2VXaXRoTm9Bcmd1bWVudHNSZXBseToKKyAgICAgICAgcmV0dXJu
ICJXZWJQYWdlOjpUZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJndW1lbnRzUmVwbHkiOworI2VuZGlm
CisjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdl
X1Rlc3RBc3luY01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHM6CisgICAgICAgIHJldHVybiAi
V2ViUGFnZTo6VGVzdEFzeW5jTWVzc2FnZVdpdGhNdWx0aXBsZUFyZ3VtZW50cyI7CisgICAgY2Fz
ZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9UZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1l
bnRzUmVwbHk6CisgICAgICAgIHJldHVybiAiV2ViUGFnZTo6VGVzdEFzeW5jTWVzc2FnZVdpdGhN
dWx0aXBsZUFyZ3VtZW50c1JlcGx5IjsKKyNlbmRpZgorICAgIGNhc2UgTWVzc2FnZU5hbWU6Oldl
YlBhZ2VfVGVzdFN5bmNNZXNzYWdlOgorICAgICAgICByZXR1cm4gIldlYlBhZ2U6OlRlc3RTeW5j
TWVzc2FnZSI7CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9UZXN0U3luY2hyb25vdXNN
ZXNzYWdlOgorICAgICAgICByZXR1cm4gIldlYlBhZ2U6OlRlc3RTeW5jaHJvbm91c01lc3NhZ2Ui
OworICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfTG9hZFVSTDoKKyAgICAgICAgcmV0dXJu
ICJXZWJQYWdlOjpMb2FkVVJMIjsKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgIGNhc2Ug
TWVzc2FnZU5hbWU6OldlYlBhZ2VfTG9hZFNvbWV0aGluZzoKKyAgICAgICAgcmV0dXJuICJXZWJQ
YWdlOjpMb2FkU29tZXRoaW5nIjsKKyNlbmRpZgorI2lmIChFTkFCTEUoVE9VQ0hfRVZFTlRTKSAm
JiAoTkVTVEVEX01FU1NBR0VfQ09ORElUSU9OIHx8IFNPTUVfT1RIRVJfTUVTU0FHRV9DT05ESVRJ
T04pKQorICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfVG91Y2hFdmVudDoKKyAgICAgICAg
cmV0dXJuICJXZWJQYWdlOjpUb3VjaEV2ZW50IjsKKyNlbmRpZgorI2lmIChFTkFCTEUoVE9VQ0hf
RVZFTlRTKSAmJiAoTkVTVEVEX01FU1NBR0VfQ09ORElUSU9OICYmIFNPTUVfT1RIRVJfTUVTU0FH
RV9DT05ESVRJT04pKQorICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfQWRkRXZlbnQ6Cisg
ICAgICAgIHJldHVybiAiV2ViUGFnZTo6QWRkRXZlbnQiOworI2VuZGlmCisjaWYgRU5BQkxFKFRP
VUNIX0VWRU5UUykKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX0xvYWRTb21ldGhpbmdF
bHNlOgorICAgICAgICByZXR1cm4gIldlYlBhZ2U6OkxvYWRTb21ldGhpbmdFbHNlIjsKKyNlbmRp
ZgorICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfRGlkUmVjZWl2ZVBvbGljeURlY2lzaW9u
OgorICAgICAgICByZXR1cm4gIldlYlBhZ2U6OkRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbiI7Cisg
ICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9DbG9zZToKKyAgICAgICAgcmV0dXJuICJXZWJQ
YWdlOjpDbG9zZSI7CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9QcmVmZXJlbmNlc0Rp
ZENoYW5nZToKKyAgICAgICAgcmV0dXJuICJXZWJQYWdlOjpQcmVmZXJlbmNlc0RpZENoYW5nZSI7
CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9TZW5kRG91YmxlQW5kRmxvYXQ6CisgICAg
ICAgIHJldHVybiAiV2ViUGFnZTo6U2VuZERvdWJsZUFuZEZsb2F0IjsKKyAgICBjYXNlIE1lc3Nh
Z2VOYW1lOjpXZWJQYWdlX1NlbmRJbnRzOgorICAgICAgICByZXR1cm4gIldlYlBhZ2U6OlNlbmRJ
bnRzIjsKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX0NyZWF0ZVBsdWdpbjoKKyAgICAg
ICAgcmV0dXJuICJXZWJQYWdlOjpDcmVhdGVQbHVnaW4iOworICAgIGNhc2UgTWVzc2FnZU5hbWU6
OldlYlBhZ2VfUnVuSmF2YVNjcmlwdEFsZXJ0OgorICAgICAgICByZXR1cm4gIldlYlBhZ2U6OlJ1
bkphdmFTY3JpcHRBbGVydCI7CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9HZXRQbHVn
aW5zOgorICAgICAgICByZXR1cm4gIldlYlBhZ2U6OkdldFBsdWdpbnMiOworICAgIGNhc2UgTWVz
c2FnZU5hbWU6OldlYlBhZ2VfR2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246CisgICAgICAgIHJl
dHVybiAiV2ViUGFnZTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24iOworICAgIGNhc2UgTWVz
c2FnZU5hbWU6OldlYlBhZ2VfVGVzdE11bHRpcGxlQXR0cmlidXRlczoKKyAgICAgICAgcmV0dXJu
ICJXZWJQYWdlOjpUZXN0TXVsdGlwbGVBdHRyaWJ1dGVzIjsKKyAgICBjYXNlIE1lc3NhZ2VOYW1l
OjpXZWJQYWdlX1Rlc3RQYXJhbWV0ZXJBdHRyaWJ1dGVzOgorICAgICAgICByZXR1cm4gIldlYlBh
Z2U6OlRlc3RQYXJhbWV0ZXJBdHRyaWJ1dGVzIjsKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQ
YWdlX1RlbXBsYXRlVGVzdDoKKyAgICAgICAgcmV0dXJuICJXZWJQYWdlOjpUZW1wbGF0ZVRlc3Qi
OworICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfU2V0VmlkZW9MYXllcklEOgorICAgICAg
ICByZXR1cm4gIldlYlBhZ2U6OlNldFZpZGVvTGF5ZXJJRCI7CisjaWYgUExBVEZPUk0oTUFDKQor
ICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfRGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rp
b246CisgICAgICAgIHJldHVybiAiV2ViUGFnZTo6RGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rp
b24iOworI2VuZGlmCisjaWYgUExBVEZPUk0oTUFDKQorICAgIGNhc2UgTWVzc2FnZU5hbWU6Oldl
YlBhZ2VfSW50ZXJwcmV0S2V5RXZlbnQ6CisgICAgICAgIHJldHVybiAiV2ViUGFnZTo6SW50ZXJw
cmV0S2V5RXZlbnQiOworI2VuZGlmCisjaWYgRU5BQkxFKERFUFJFQ0FURURfRkVBVFVSRSkKKyAg
ICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX0RlcHJlY2F0ZWRPcGVyYXRpb246CisgICAgICAg
IHJldHVybiAiV2ViUGFnZTo6RGVwcmVjYXRlZE9wZXJhdGlvbiI7CisjZW5kaWYKKyNpZiBFTkFC
TEUoRVhQRVJJTUVOVEFMX0ZFQVRVUkUpCisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9F
eHBlcmltZW50YWxPcGVyYXRpb246CisgICAgICAgIHJldHVybiAiV2ViUGFnZTo6RXhwZXJpbWVu
dGFsT3BlcmF0aW9uIjsKKyNlbmRpZgorICAgIGNhc2UgTWVzc2FnZU5hbWU6OldyYXBwZWRBc3lu
Y01lc3NhZ2VGb3JUZXN0aW5nOgorICAgICAgICByZXR1cm4gIklQQzo6V3JhcHBlZEFzeW5jTWVz
c2FnZUZvclRlc3RpbmciOworICAgIGNhc2UgTWVzc2FnZU5hbWU6OlN5bmNNZXNzYWdlUmVwbHk6
CisgICAgICAgIHJldHVybiAiSVBDOjpTeW5jTWVzc2FnZVJlcGx5IjsKKyAgICBjYXNlIE1lc3Nh
Z2VOYW1lOjpJbml0aWFsaXplQ29ubmVjdGlvbjoKKyAgICAgICAgcmV0dXJuICJJUEM6OkluaXRp
YWxpemVDb25uZWN0aW9uIjsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
cmV0dXJuICI8aW52YWxpZCBtZXNzYWdlIG5hbWU+IjsKK30KKworfSAvLyBuYW1lc3BhY2UgSVBD
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L01lc3NhZ2VOYW1lcy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvTWVzc2FnZU5hbWVzLmgJKG5v
bmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9NZXNzYWdlTmFtZXMu
aAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI3NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL0VudW1UcmFpdHMuaD4KKworbmFtZXNwYWNlIElQ
QyB7CisKK2VudW0gY2xhc3MgUmVjZWl2ZXJOYW1lIDogdWludDhfdCB7CisgICAgV2ViUGFnZSA9
IDEKKyAgICAsIFdlYlBhZ2UgPSAyCisgICAgLCBOb25lID0gMworICAgICwgSVBDID0gNAorICAg
ICwgQXN5bmNSZXBseSA9IDUKKyAgICAsIEludmFsaWQgPSA2Cit9OworCitlbnVtIGNsYXNzIE1l
c3NhZ2VOYW1lIDogdWludDE2X3QgeworICAgIFdlYlBhZ2VfTG9hZFVSTCA9IDEKKyNpZiBFTkFC
TEUoVEVTVF9GRUFUVVJFKQorICAgICwgV2ViUGFnZV9UZXN0QXN5bmNNZXNzYWdlID0gMgorICAg
ICwgV2ViUGFnZV9UZXN0QXN5bmNNZXNzYWdlUmVwbHkgPSAzCisjZW5kaWYKKyNpZiBFTkFCTEUo
VEVTVF9GRUFUVVJFKQorICAgICwgV2ViUGFnZV9UZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJndW1l
bnRzID0gNAorICAgICwgV2ViUGFnZV9UZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJndW1lbnRzUmVw
bHkgPSA1CisjZW5kaWYKKyNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQorICAgICwgV2ViUGFnZV9U
ZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1lbnRzID0gNgorICAgICwgV2ViUGFnZV9U
ZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1lbnRzUmVwbHkgPSA3CisjZW5kaWYKKyAg
ICAsIFdlYlBhZ2VfVGVzdFN5bmNNZXNzYWdlID0gOAorICAgICwgV2ViUGFnZV9UZXN0U3luY2hy
b25vdXNNZXNzYWdlID0gOQorICAgICwgV2ViUGFnZV9Mb2FkVVJMID0gMTAKKyNpZiBFTkFCTEUo
VE9VQ0hfRVZFTlRTKQorICAgICwgV2ViUGFnZV9Mb2FkU29tZXRoaW5nID0gMTEKKyNlbmRpZgor
I2lmIChFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiAoTkVTVEVEX01FU1NBR0VfQ09ORElUSU9OIHx8
IFNPTUVfT1RIRVJfTUVTU0FHRV9DT05ESVRJT04pKQorICAgICwgV2ViUGFnZV9Ub3VjaEV2ZW50
ID0gMTIKKyNlbmRpZgorI2lmIChFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiAoTkVTVEVEX01FU1NB
R0VfQ09ORElUSU9OICYmIFNPTUVfT1RIRVJfTUVTU0FHRV9DT05ESVRJT04pKQorICAgICwgV2Vi
UGFnZV9BZGRFdmVudCA9IDEzCisjZW5kaWYKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAg
ICwgV2ViUGFnZV9Mb2FkU29tZXRoaW5nRWxzZSA9IDE0CisjZW5kaWYKKyAgICAsIFdlYlBhZ2Vf
RGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uID0gMTUKKyAgICAsIFdlYlBhZ2VfQ2xvc2UgPSAxNgor
ICAgICwgV2ViUGFnZV9QcmVmZXJlbmNlc0RpZENoYW5nZSA9IDE3CisgICAgLCBXZWJQYWdlX1Nl
bmREb3VibGVBbmRGbG9hdCA9IDE4CisgICAgLCBXZWJQYWdlX1NlbmRJbnRzID0gMTkKKyAgICAs
IFdlYlBhZ2VfQ3JlYXRlUGx1Z2luID0gMjAKKyAgICAsIFdlYlBhZ2VfUnVuSmF2YVNjcmlwdEFs
ZXJ0ID0gMjEKKyAgICAsIFdlYlBhZ2VfR2V0UGx1Z2lucyA9IDIyCisgICAgLCBXZWJQYWdlX0dl
dFBsdWdpblByb2Nlc3NDb25uZWN0aW9uID0gMjMKKyAgICAsIFdlYlBhZ2VfVGVzdE11bHRpcGxl
QXR0cmlidXRlcyA9IDI0CisgICAgLCBXZWJQYWdlX1Rlc3RQYXJhbWV0ZXJBdHRyaWJ1dGVzID0g
MjUKKyAgICAsIFdlYlBhZ2VfVGVtcGxhdGVUZXN0ID0gMjYKKyAgICAsIFdlYlBhZ2VfU2V0Vmlk
ZW9MYXllcklEID0gMjcKKyNpZiBQTEFURk9STShNQUMpCisgICAgLCBXZWJQYWdlX0RpZENyZWF0
ZVdlYlByb2Nlc3NDb25uZWN0aW9uID0gMjgKKyNlbmRpZgorI2lmIFBMQVRGT1JNKE1BQykKKyAg
ICAsIFdlYlBhZ2VfSW50ZXJwcmV0S2V5RXZlbnQgPSAyOQorI2VuZGlmCisjaWYgRU5BQkxFKERF
UFJFQ0FURURfRkVBVFVSRSkKKyAgICAsIFdlYlBhZ2VfRGVwcmVjYXRlZE9wZXJhdGlvbiA9IDMw
CisjZW5kaWYKKyNpZiBFTkFCTEUoRVhQRVJJTUVOVEFMX0ZFQVRVUkUpCisgICAgLCBXZWJQYWdl
X0V4cGVyaW1lbnRhbE9wZXJhdGlvbiA9IDMxCisjZW5kaWYKKyAgICAsIFdyYXBwZWRBc3luY01l
c3NhZ2VGb3JUZXN0aW5nID0gMzIKKyAgICAsIFN5bmNNZXNzYWdlUmVwbHkgPSAzMworICAgICwg
SW5pdGlhbGl6ZUNvbm5lY3Rpb24gPSAzNAorfTsKKworaW5saW5lIFJlY2VpdmVyTmFtZSByZWNl
aXZlck5hbWUoTWVzc2FnZU5hbWUgbWVzc2FnZU5hbWUpCit7CisgICAgc3dpdGNoIChtZXNzYWdl
TmFtZSkgeworICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfTG9hZFVSTDoKKyNpZiBFTkFC
TEUoVEVTVF9GRUFUVVJFKQorICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVzdEFzeW5j
TWVzc2FnZToKKyNlbmRpZgorI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCisgICAgY2FzZSBNZXNz
YWdlTmFtZTo6V2ViUGFnZV9UZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJndW1lbnRzOgorI2VuZGlm
CisjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdl
X1Rlc3RBc3luY01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHM6CisjZW5kaWYKKyAgICBjYXNl
IE1lc3NhZ2VOYW1lOjpXZWJQYWdlX1Rlc3RTeW5jTWVzc2FnZToKKyAgICBjYXNlIE1lc3NhZ2VO
YW1lOjpXZWJQYWdlX1Rlc3RTeW5jaHJvbm91c01lc3NhZ2U6CisgICAgICAgIHJldHVybiBSZWNl
aXZlck5hbWU6OldlYlBhZ2U7CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9Mb2FkVVJM
OgorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFn
ZV9Mb2FkU29tZXRoaW5nOgorI2VuZGlmCisjaWYgKEVOQUJMRShUT1VDSF9FVkVOVFMpICYmIChO
RVNURURfTUVTU0FHRV9DT05ESVRJT04gfHwgU09NRV9PVEhFUl9NRVNTQUdFX0NPTkRJVElPTikp
CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9Ub3VjaEV2ZW50OgorI2VuZGlmCisjaWYg
KEVOQUJMRShUT1VDSF9FVkVOVFMpICYmIChORVNURURfTUVTU0FHRV9DT05ESVRJT04gJiYgU09N
RV9PVEhFUl9NRVNTQUdFX0NPTkRJVElPTikpCisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFn
ZV9BZGRFdmVudDoKKyNlbmRpZgorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAgY2FzZSBN
ZXNzYWdlTmFtZTo6V2ViUGFnZV9Mb2FkU29tZXRoaW5nRWxzZToKKyNlbmRpZgorICAgIGNhc2Ug
TWVzc2FnZU5hbWU6OldlYlBhZ2VfRGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uOgorICAgIGNhc2Ug
TWVzc2FnZU5hbWU6OldlYlBhZ2VfQ2xvc2U6CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFn
ZV9QcmVmZXJlbmNlc0RpZENoYW5nZToKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX1Nl
bmREb3VibGVBbmRGbG9hdDoKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX1NlbmRJbnRz
OgorICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfQ3JlYXRlUGx1Z2luOgorICAgIGNhc2Ug
TWVzc2FnZU5hbWU6OldlYlBhZ2VfUnVuSmF2YVNjcmlwdEFsZXJ0OgorICAgIGNhc2UgTWVzc2Fn
ZU5hbWU6OldlYlBhZ2VfR2V0UGx1Z2luczoKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdl
X0dldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOgorICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBh
Z2VfVGVzdE11bHRpcGxlQXR0cmlidXRlczoKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdl
X1Rlc3RQYXJhbWV0ZXJBdHRyaWJ1dGVzOgorICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2Vf
VGVtcGxhdGVUZXN0OgorICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfU2V0VmlkZW9MYXll
cklEOgorI2lmIFBMQVRGT1JNKE1BQykKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX0Rp
ZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uOgorI2VuZGlmCisjaWYgUExBVEZPUk0oTUFDKQor
ICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfSW50ZXJwcmV0S2V5RXZlbnQ6CisjZW5kaWYK
KyNpZiBFTkFCTEUoREVQUkVDQVRFRF9GRUFUVVJFKQorICAgIGNhc2UgTWVzc2FnZU5hbWU6Oldl
YlBhZ2VfRGVwcmVjYXRlZE9wZXJhdGlvbjoKKyNlbmRpZgorI2lmIEVOQUJMRShFWFBFUklNRU5U
QUxfRkVBVFVSRSkKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX0V4cGVyaW1lbnRhbE9w
ZXJhdGlvbjoKKyNlbmRpZgorICAgICAgICByZXR1cm4gUmVjZWl2ZXJOYW1lOjpXZWJQYWdlOwor
ICAgICAgICByZXR1cm4gUmVjZWl2ZXJOYW1lOjpOb25lOworI2lmIEVOQUJMRShURVNUX0ZFQVRV
UkUpCisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9UZXN0QXN5bmNNZXNzYWdlUmVwbHk6
CisjZW5kaWYKKyNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQorICAgIGNhc2UgTWVzc2FnZU5hbWU6
OldlYlBhZ2VfVGVzdEFzeW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50c1JlcGx5OgorI2VuZGlmCisj
aWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX1Rl
c3RBc3luY01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHNSZXBseToKKyNlbmRpZgorICAgICAg
ICByZXR1cm4gUmVjZWl2ZXJOYW1lOjpBc3luY1JlcGx5OworICAgIGNhc2UgTWVzc2FnZU5hbWU6
OldyYXBwZWRBc3luY01lc3NhZ2VGb3JUZXN0aW5nOgorICAgIGNhc2UgTWVzc2FnZU5hbWU6OlN5
bmNNZXNzYWdlUmVwbHk6CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6SW5pdGlhbGl6ZUNvbm5lY3Rp
b246CisgICAgICAgIHJldHVybiBSZWNlaXZlck5hbWU6OklQQzsKKyAgICB9CisgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIFJlY2VpdmVyTmFtZTo6SW52YWxpZDsKK30KKwor
Y29uc3QgY2hhciogZGVzY3JpcHRpb24oTWVzc2FnZU5hbWUpOworCit9IC8vIG5hbWVzcGFjZSBJ
UEMKKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIEUsIHR5cGVuYW1lIFQs
IHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19zYW1lPEUsIElQQzo6TWVzc2FnZU5hbWU+Ojp2YWx1
ZT4qID0gbnVsbHB0cj4KK2NvbnN0ZXhwciBib29sIGlzVmFsaWRFbnVtKFQgbWVzc2FnZU5hbWUp
Cit7CisgICAgaWYgKHN0YXRpY19jYXN0PElQQzo6TWVzc2FnZU5hbWU+KG1lc3NhZ2VOYW1lKSA9
PSBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX0xvYWRVUkwpCisgICAgICAgIHJldHVybiB0cnVl
OworI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCisgICAgaWYgKHN0YXRpY19jYXN0PElQQzo6TWVz
c2FnZU5hbWU+KG1lc3NhZ2VOYW1lKSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX1Rlc3RB
c3luY01lc3NhZ2UpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmIChzdGF0aWNfY2FzdDxJ
UEM6Ok1lc3NhZ2VOYW1lPihtZXNzYWdlTmFtZSkgPT0gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFn
ZV9UZXN0QXN5bmNNZXNzYWdlUmVwbHkpCisgICAgICAgIHJldHVybiB0cnVlOworI2VuZGlmCisj
aWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKKyAgICBpZiAoc3RhdGljX2Nhc3Q8SVBDOjpNZXNzYWdl
TmFtZT4obWVzc2FnZU5hbWUpID09IElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVzdEFzeW5j
TWVzc2FnZVdpdGhOb0FyZ3VtZW50cykKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHN0
YXRpY19jYXN0PElQQzo6TWVzc2FnZU5hbWU+KG1lc3NhZ2VOYW1lKSA9PSBJUEM6Ok1lc3NhZ2VO
YW1lOjpXZWJQYWdlX1Rlc3RBc3luY01lc3NhZ2VXaXRoTm9Bcmd1bWVudHNSZXBseSkKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisjZW5kaWYKKyNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQorICAgIGlm
IChzdGF0aWNfY2FzdDxJUEM6Ok1lc3NhZ2VOYW1lPihtZXNzYWdlTmFtZSkgPT0gSVBDOjpNZXNz
YWdlTmFtZTo6V2ViUGFnZV9UZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1lbnRzKQor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAoc3RhdGljX2Nhc3Q8SVBDOjpNZXNzYWdlTmFt
ZT4obWVzc2FnZU5hbWUpID09IElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVzdEFzeW5jTWVz
c2FnZVdpdGhNdWx0aXBsZUFyZ3VtZW50c1JlcGx5KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyNl
bmRpZgorICAgIGlmIChzdGF0aWNfY2FzdDxJUEM6Ok1lc3NhZ2VOYW1lPihtZXNzYWdlTmFtZSkg
PT0gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9UZXN0U3luY01lc3NhZ2UpCisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIGlmIChzdGF0aWNfY2FzdDxJUEM6Ok1lc3NhZ2VOYW1lPihtZXNzYWdl
TmFtZSkgPT0gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9UZXN0U3luY2hyb25vdXNNZXNzYWdl
KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAoc3RhdGljX2Nhc3Q8SVBDOjpNZXNzYWdl
TmFtZT4obWVzc2FnZU5hbWUpID09IElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfTG9hZFVSTCkK
KyAgICAgICAgcmV0dXJuIHRydWU7CisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAgICBpZiAo
c3RhdGljX2Nhc3Q8SVBDOjpNZXNzYWdlTmFtZT4obWVzc2FnZU5hbWUpID09IElQQzo6TWVzc2Fn
ZU5hbWU6OldlYlBhZ2VfTG9hZFNvbWV0aGluZykKKyAgICAgICAgcmV0dXJuIHRydWU7CisjZW5k
aWYKKyNpZiAoRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgKE5FU1RFRF9NRVNTQUdFX0NPTkRJVElP
TiB8fCBTT01FX09USEVSX01FU1NBR0VfQ09ORElUSU9OKSkKKyAgICBpZiAoc3RhdGljX2Nhc3Q8
SVBDOjpNZXNzYWdlTmFtZT4obWVzc2FnZU5hbWUpID09IElQQzo6TWVzc2FnZU5hbWU6OldlYlBh
Z2VfVG91Y2hFdmVudCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisjZW5kaWYKKyNpZiAoRU5BQkxF
KFRPVUNIX0VWRU5UUykgJiYgKE5FU1RFRF9NRVNTQUdFX0NPTkRJVElPTiAmJiBTT01FX09USEVS
X01FU1NBR0VfQ09ORElUSU9OKSkKKyAgICBpZiAoc3RhdGljX2Nhc3Q8SVBDOjpNZXNzYWdlTmFt
ZT4obWVzc2FnZU5hbWUpID09IElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfQWRkRXZlbnQpCisg
ICAgICAgIHJldHVybiB0cnVlOworI2VuZGlmCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAg
ICBpZiAoc3RhdGljX2Nhc3Q8SVBDOjpNZXNzYWdlTmFtZT4obWVzc2FnZU5hbWUpID09IElQQzo6
TWVzc2FnZU5hbWU6OldlYlBhZ2VfTG9hZFNvbWV0aGluZ0Vsc2UpCisgICAgICAgIHJldHVybiB0
cnVlOworI2VuZGlmCisgICAgaWYgKHN0YXRpY19jYXN0PElQQzo6TWVzc2FnZU5hbWU+KG1lc3Nh
Z2VOYW1lKSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX0RpZFJlY2VpdmVQb2xpY3lEZWNp
c2lvbikKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHN0YXRpY19jYXN0PElQQzo6TWVz
c2FnZU5hbWU+KG1lc3NhZ2VOYW1lKSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX0Nsb3Nl
KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAoc3RhdGljX2Nhc3Q8SVBDOjpNZXNzYWdl
TmFtZT4obWVzc2FnZU5hbWUpID09IElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfUHJlZmVyZW5j
ZXNEaWRDaGFuZ2UpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmIChzdGF0aWNfY2FzdDxJ
UEM6Ok1lc3NhZ2VOYW1lPihtZXNzYWdlTmFtZSkgPT0gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFn
ZV9TZW5kRG91YmxlQW5kRmxvYXQpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmIChzdGF0
aWNfY2FzdDxJUEM6Ok1lc3NhZ2VOYW1lPihtZXNzYWdlTmFtZSkgPT0gSVBDOjpNZXNzYWdlTmFt
ZTo6V2ViUGFnZV9TZW5kSW50cykKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHN0YXRp
Y19jYXN0PElQQzo6TWVzc2FnZU5hbWU+KG1lc3NhZ2VOYW1lKSA9PSBJUEM6Ok1lc3NhZ2VOYW1l
OjpXZWJQYWdlX0NyZWF0ZVBsdWdpbikKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHN0
YXRpY19jYXN0PElQQzo6TWVzc2FnZU5hbWU+KG1lc3NhZ2VOYW1lKSA9PSBJUEM6Ok1lc3NhZ2VO
YW1lOjpXZWJQYWdlX1J1bkphdmFTY3JpcHRBbGVydCkKKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgaWYgKHN0YXRpY19jYXN0PElQQzo6TWVzc2FnZU5hbWU+KG1lc3NhZ2VOYW1lKSA9PSBJUEM6
Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX0dldFBsdWdpbnMpCisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIGlmIChzdGF0aWNfY2FzdDxJUEM6Ok1lc3NhZ2VOYW1lPihtZXNzYWdlTmFtZSkgPT0gSVBD
OjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9HZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbikKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHN0YXRpY19jYXN0PElQQzo6TWVzc2FnZU5hbWU+KG1l
c3NhZ2VOYW1lKSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX1Rlc3RNdWx0aXBsZUF0dHJp
YnV0ZXMpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmIChzdGF0aWNfY2FzdDxJUEM6Ok1l
c3NhZ2VOYW1lPihtZXNzYWdlTmFtZSkgPT0gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9UZXN0
UGFyYW1ldGVyQXR0cmlidXRlcykKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHN0YXRp
Y19jYXN0PElQQzo6TWVzc2FnZU5hbWU+KG1lc3NhZ2VOYW1lKSA9PSBJUEM6Ok1lc3NhZ2VOYW1l
OjpXZWJQYWdlX1RlbXBsYXRlVGVzdCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHN0
YXRpY19jYXN0PElQQzo6TWVzc2FnZU5hbWU+KG1lc3NhZ2VOYW1lKSA9PSBJUEM6Ok1lc3NhZ2VO
YW1lOjpXZWJQYWdlX1NldFZpZGVvTGF5ZXJJRCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisjaWYg
UExBVEZPUk0oTUFDKQorICAgIGlmIChzdGF0aWNfY2FzdDxJUEM6Ok1lc3NhZ2VOYW1lPihtZXNz
YWdlTmFtZSkgPT0gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9EaWRDcmVhdGVXZWJQcm9jZXNz
Q29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuIHRydWU7CisjZW5kaWYKKyNpZiBQTEFURk9STShN
QUMpCisgICAgaWYgKHN0YXRpY19jYXN0PElQQzo6TWVzc2FnZU5hbWU+KG1lc3NhZ2VOYW1lKSA9
PSBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX0ludGVycHJldEtleUV2ZW50KQorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyNlbmRpZgorI2lmIEVOQUJMRShERVBSRUNBVEVEX0ZFQVRVUkUpCisgICAg
aWYgKHN0YXRpY19jYXN0PElQQzo6TWVzc2FnZU5hbWU+KG1lc3NhZ2VOYW1lKSA9PSBJUEM6Ok1l
c3NhZ2VOYW1lOjpXZWJQYWdlX0RlcHJlY2F0ZWRPcGVyYXRpb24pCisgICAgICAgIHJldHVybiB0
cnVlOworI2VuZGlmCisjaWYgRU5BQkxFKEVYUEVSSU1FTlRBTF9GRUFUVVJFKQorICAgIGlmIChz
dGF0aWNfY2FzdDxJUEM6Ok1lc3NhZ2VOYW1lPihtZXNzYWdlTmFtZSkgPT0gSVBDOjpNZXNzYWdl
TmFtZTo6V2ViUGFnZV9FeHBlcmltZW50YWxPcGVyYXRpb24pCisgICAgICAgIHJldHVybiB0cnVl
OworI2VuZGlmCisgICAgaWYgKHN0YXRpY19jYXN0PElQQzo6TWVzc2FnZU5hbWU+KG1lc3NhZ2VO
YW1lKSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpXcmFwcGVkQXN5bmNNZXNzYWdlRm9yVGVzdGluZykK
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHN0YXRpY19jYXN0PElQQzo6TWVzc2FnZU5h
bWU+KG1lc3NhZ2VOYW1lKSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpTeW5jTWVzc2FnZVJlcGx5KQor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAoc3RhdGljX2Nhc3Q8SVBDOjpNZXNzYWdlTmFt
ZT4obWVzc2FnZU5hbWUpID09IElQQzo6TWVzc2FnZU5hbWU6OkluaXRpYWxpemVDb25uZWN0aW9u
KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gZmFsc2U7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXVEYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvTWVzc2FnZVJl
Y2VpdmVyLWV4cGVjdGVkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMv
d2Via2l0L01lc3NhZ2VSZWNlaXZlci1leHBlY3RlZC5jcHAJKHJldmlzaW9uIDI2MDc2NCkKKysr
IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvTWVzc2FnZVJlY2VpdmVyLWV4cGVjdGVkLmNw
cAkobm9uZXhpc3RlbnQpCkBAIC0xLDIwMyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDEwLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKLSAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgotICogQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotICogREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IKLSAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0gKiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLAotICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgKEVOQUJMRShXRUJLSVQyKSAmJiAoTkVTVEVEX01BU1RF
Ul9DT05ESVRJT04gfHwgTUFTVEVSX09SICYmIE1BU1RFUl9BTkQpKQotCi0jaW5jbHVkZSAiV2Vi
UGFnZS5oIgotCi0jaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKLSNpbmNsdWRlICJDb25uZWN0
aW9uLmgiCi0jaW5jbHVkZSAiRGVjb2Rlci5oIgotI2lmIEVOQUJMRShERVBSRUNBVEVEX0ZFQVRV
UkUpIHx8IEVOQUJMRShFWFBFUklNRU5UQUxfRkVBVFVSRSkKLSNpbmNsdWRlICJEdW1teVR5cGUu
aCIKLSNlbmRpZgotI2luY2x1ZGUgIkhhbmRsZU1lc3NhZ2UuaCIKLSNpZiBQTEFURk9STShNQUMp
Ci0jaW5jbHVkZSAiTWFjaFBvcnQuaCIKLSNlbmRpZgotI2luY2x1ZGUgIlBsdWdpbi5oIgotI2lu
Y2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgotI2lmIChFTkFCTEUoVE9VQ0hfRVZFTlRT
KSAmJiAoTkVTVEVEX01FU1NBR0VfQ09ORElUSU9OICYmIFNPTUVfT1RIRVJfTUVTU0FHRV9DT05E
SVRJT04pKSB8fCAoRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgKE5FU1RFRF9NRVNTQUdFX0NPTkRJ
VElPTiB8fCBTT01FX09USEVSX01FU1NBR0VfQ09ORElUSU9OKSkKLSNpbmNsdWRlICJXZWJFdmVu
dC5oIgotI2VuZGlmCi0jaW5jbHVkZSAiV2ViUGFnZU1lc3NhZ2VzLmgiCi0jaW5jbHVkZSAiV2Vi
UHJlZmVyZW5jZXNTdG9yZS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NMYXllci5oPgot
I2lmIFBMQVRGT1JNKE1BQykKLSNpbmNsdWRlIDxXZWJDb3JlL0tleWJvYXJkRXZlbnQuaD4KLSNl
bmRpZgotI2luY2x1ZGUgPFdlYkNvcmUvUGx1Z2luRGF0YS5oPgotI2luY2x1ZGUgPHV0aWxpdHk+
Ci0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0jaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBNZXNzYWdlcyB7Ci0KLW5h
bWVzcGFjZSBXZWJQYWdlIHsKLQotdm9pZCBHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6c2Vu
ZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYmIGVuY29kZXIsIElQQzo6Q29ubmVjdGlv
biYgY29ubmVjdGlvbiwgY29uc3QgSVBDOjpDb25uZWN0aW9uOjpIYW5kbGUmIGNvbm5lY3Rpb25I
YW5kbGUpCi17Ci0gICAgKmVuY29kZXIgPDwgY29ubmVjdGlvbkhhbmRsZTsKLSAgICBjb25uZWN0
aW9uLnNlbmRTeW5jUmVwbHkoV1RGTW92ZShlbmNvZGVyKSk7Ci19Ci0KLXZvaWQgVGVzdE11bHRp
cGxlQXR0cmlidXRlczo6c2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYmIGVuY29k
ZXIsIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKLXsKLSAgICBjb25uZWN0aW9uLnNlbmRT
eW5jUmVwbHkoV1RGTW92ZShlbmNvZGVyKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYlBhZ2UK
LQotfSAvLyBuYW1lc3BhY2UgTWVzc2FnZXMKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLXZvaWQg
V2ViUGFnZTo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJ
UEM6OkRlY29kZXImIGRlY29kZXIpCi17Ci0gICAgYXV0byBwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyk7Ci0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2Vi
UGFnZTo6TG9hZFVSTDo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNz
YWdlczo6V2ViUGFnZTo6TG9hZFVSTD4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OmxvYWRVUkwp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCi0gICAg
aWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFNvbWV0
aGluZzo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2Vi
UGFnZTo6TG9hZFNvbWV0aGluZz4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OmxvYWRTb21ldGhp
bmcpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlmCi0jaWYgKEVOQUJMRShUT1VDSF9F
VkVOVFMpICYmIChORVNURURfTUVTU0FHRV9DT05ESVRJT04gfHwgU09NRV9PVEhFUl9NRVNTQUdF
X0NPTkRJVElPTikpCi0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6
V2ViUGFnZTo6VG91Y2hFdmVudDo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2Fn
ZTxNZXNzYWdlczo6V2ViUGFnZTo6VG91Y2hFdmVudD4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6
OnRvdWNoRXZlbnQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlmCi0jaWYgKEVOQUJM
RShUT1VDSF9FVkVOVFMpICYmIChORVNURURfTUVTU0FHRV9DT05ESVRJT04gJiYgU09NRV9PVEhF
Ul9NRVNTQUdFX0NPTkRJVElPTikpCi0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBN
ZXNzYWdlczo6V2ViUGFnZTo6QWRkRXZlbnQ6Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRs
ZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OkFkZEV2ZW50PihkZWNvZGVyLCB0aGlzLCAmV2Vi
UGFnZTo6YWRkRXZlbnQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlmCi0jaWYgRU5B
QkxFKFRPVUNIX0VWRU5UUykKLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3Nh
Z2VzOjpXZWJQYWdlOjpMb2FkU29tZXRoaW5nRWxzZTo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6
aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFNvbWV0aGluZ0Vsc2U+KGRlY29k
ZXIsIHRoaXMsICZXZWJQYWdlOjpsb2FkU29tZXRoaW5nRWxzZSk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0jZW5kaWYKLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2Vz
OjpXZWJQYWdlOjpEaWRSZWNlaXZlUG9saWN5RGVjaXNpb246Om5hbWUoKSkgewotICAgICAgICBJ
UEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJlY2VpdmVQb2xpY3lEZWNp
c2lvbj4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbik7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9
PSBNZXNzYWdlczo6V2ViUGFnZTo6Q2xvc2U6Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRs
ZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OkNsb3NlPihkZWNvZGVyLCB0aGlzLCAmV2ViUGFn
ZTo6Y2xvc2UpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChkZWNvZGVyLm1lc3Nh
Z2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OlByZWZlcmVuY2VzRGlkQ2hhbmdlOjpuYW1l
KCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpQcmVm
ZXJlbmNlc0RpZENoYW5nZT4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OnByZWZlcmVuY2VzRGlk
Q2hhbmdlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdl
TmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpTZW5kRG91YmxlQW5kRmxvYXQ6Om5hbWUoKSkg
ewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OlNlbmREb3Vi
bGVBbmRGbG9hdD4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OnNlbmREb3VibGVBbmRGbG9hdCk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9
PSBNZXNzYWdlczo6V2ViUGFnZTo6U2VuZEludHM6Om5hbWUoKSkgewotICAgICAgICBJUEM6Omhh
bmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OlNlbmRJbnRzPihkZWNvZGVyLCB0aGlzLCAm
V2ViUGFnZTo6c2VuZEludHMpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChkZWNv
ZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RQYXJhbWV0ZXJBdHRy
aWJ1dGVzOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpX
ZWJQYWdlOjpUZXN0UGFyYW1ldGVyQXR0cmlidXRlcz4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6
OnRlc3RQYXJhbWV0ZXJBdHRyaWJ1dGVzKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBp
ZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpUZW1wbGF0ZVRl
c3Q6Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBh
Z2U6OlRlbXBsYXRlVGVzdD4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OnRlbXBsYXRlVGVzdCk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9
PSBNZXNzYWdlczo6V2ViUGFnZTo6U2V0VmlkZW9MYXllcklEOjpuYW1lKCkpIHsKLSAgICAgICAg
SVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRWaWRlb0xheWVySUQ+KGRl
Y29kZXIsIHRoaXMsICZXZWJQYWdlOjpzZXRWaWRlb0xheWVySUQpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotI2lmIFBMQVRGT1JNKE1BQykKLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgp
ID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbjo6bmFt
ZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6RGlk
Q3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24+KGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjpkaWRD
cmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5k
aWYKLSNpZiBFTkFCTEUoREVQUkVDQVRFRF9GRUFUVVJFKQotICAgIGlmIChkZWNvZGVyLm1lc3Nh
Z2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OkRlcHJlY2F0ZWRPcGVyYXRpb246Om5hbWUo
KSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OkRlcHJl
Y2F0ZWRPcGVyYXRpb24+KGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjpkZXByZWNhdGVkT3BlcmF0
aW9uKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNlbmRpZgotI2lmIEVOQUJMRShFWFBFUklN
RU5UQUxfRkVBVFVSRSkKLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2Vz
OjpXZWJQYWdlOjpFeHBlcmltZW50YWxPcGVyYXRpb246Om5hbWUoKSkgewotICAgICAgICBJUEM6
OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OkV4cGVyaW1lbnRhbE9wZXJhdGlvbj4o
ZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OmV4cGVyaW1lbnRhbE9wZXJhdGlvbik7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0jZW5kaWYKLSAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7Ci0g
ICAgVU5VU0VEX1BBUkFNKGRlY29kZXIpOwotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQot
Ci12b2lkIFdlYlBhZ2U6OmRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNv
bm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2Rlciwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5j
b2Rlcj4mIHJlcGx5RW5jb2RlcikKLXsKLSAgICBhdXRvIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKTsKLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQ
YWdlOjpDcmVhdGVQbHVnaW46Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8
TWVzc2FnZXM6OldlYlBhZ2U6OkNyZWF0ZVBsdWdpbj4oZGVjb2RlciwgKnJlcGx5RW5jb2Rlciwg
dGhpcywgJldlYlBhZ2U6OmNyZWF0ZVBsdWdpbik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0g
ICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6UnVuSmF2
YVNjcmlwdEFsZXJ0OjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3Nh
Z2VzOjpXZWJQYWdlOjpSdW5KYXZhU2NyaXB0QWxlcnQ+KGRlY29kZXIsICpyZXBseUVuY29kZXIs
IHRoaXMsICZXZWJQYWdlOjpydW5KYXZhU2NyaXB0QWxlcnQpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6
OkdldFBsdWdpbnM6Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2Fn
ZXM6OldlYlBhZ2U6OkdldFBsdWdpbnM+KGRlY29kZXIsICpyZXBseUVuY29kZXIsIHRoaXMsICZX
ZWJQYWdlOjpnZXRQbHVnaW5zKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoZGVj
b2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRQbHVnaW5Qcm9jZXNz
Q29ubmVjdGlvbjo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZVN5bmNocm9u
b3VzPE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbj4oY29ubmVj
dGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6Z2V0UGx1Z2luUHJv
Y2Vzc0Nvbm5lY3Rpb24pOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChkZWNvZGVy
Lm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RNdWx0aXBsZUF0dHJpYnV0
ZXM6Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2VTeW5jaHJvbm91c1dhbnRz
Q29ubmVjdGlvbjxNZXNzYWdlczo6V2ViUGFnZTo6VGVzdE11bHRpcGxlQXR0cmlidXRlcz4oY29u
bmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6dGVzdE11bHRp
cGxlQXR0cmlidXRlcyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jaWYgUExBVEZPUk0oTUFD
KQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6Oklu
dGVycHJldEtleUV2ZW50OjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1l
c3NhZ2VzOjpXZWJQYWdlOjpJbnRlcnByZXRLZXlFdmVudD4oZGVjb2RlciwgKnJlcGx5RW5jb2Rl
ciwgdGhpcywgJldlYlBhZ2U6OmludGVycHJldEtleUV2ZW50KTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLSNlbmRpZgotICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsKLSAgICBVTlVTRURf
UEFSQU0oZGVjb2Rlcik7Ci0gICAgVU5VU0VEX1BBUkFNKHJlcGx5RW5jb2Rlcik7Ci0gICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0KLSNlbmRp
ZiAvLyAoRU5BQkxFKFdFQktJVDIpICYmIChORVNURURfTUFTVEVSX0NPTkRJVElPTiB8fCBNQVNU
RVJfT1IgJiYgTUFTVEVSX0FORCkpCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV2ViS2l0
L1NjcmlwdHMvd2Via2l0L01lc3NhZ2VSZWNlaXZlci1leHBlY3RlZC5jcHAKX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpE
ZWxldGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0xICswLDAgIyMKLW5hdGl2ZQpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L01l
c3NhZ2VSZWNlaXZlclN1cGVyY2xhc3MtZXhwZWN0ZWQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvTWVzc2FnZVJlY2VpdmVyU3VwZXJjbGFzcy1leHBlY3Rl
ZC5jcHAJKHJldmlzaW9uIDI2MDc2NCkKKysrIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQv
TWVzc2FnZVJlY2VpdmVyU3VwZXJjbGFzcy1leHBlY3RlZC5jcHAJKG5vbmV4aXN0ZW50KQpAQCAt
MSwxODkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMC0yMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycg
QU5ECi0gKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IKLSAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSAqIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0gKiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUgotICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSAqIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQot
I2luY2x1ZGUgIldlYlBhZ2UuaCIKLQotI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCi0jaW5j
bHVkZSAiRGVjb2Rlci5oIgotI2luY2x1ZGUgIkhhbmRsZU1lc3NhZ2UuaCIKLSNpbmNsdWRlICJU
ZXN0Q2xhc3NOYW1lLmgiCi0jaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKLSNpbmNsdWRlICJUZXN0
VHdvU3RhdGVFbnVtLmgiCi0jZW5kaWYKLSNpbmNsdWRlICJXZWJQYWdlTWVzc2FnZXMuaCIKLSNp
bmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
LQotbmFtZXNwYWNlIE1lc3NhZ2VzIHsKLQotbmFtZXNwYWNlIFdlYlBhZ2UgewotCi0jaWYgRU5B
QkxFKFRFU1RfRkVBVFVSRSkKLQotdm9pZCBUZXN0QXN5bmNNZXNzYWdlOjpjYWxsUmVwbHkoSVBD
OjpEZWNvZGVyJiBkZWNvZGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90JiYpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiByZXN1bHQ7Ci0g
ICAgZGVjb2RlciA+PiByZXN1bHQ7Ci0gICAgaWYgKCFyZXN1bHQpIHsKLSAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIGNhbmNlbFJlcGx5KFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjb21wbGV0aW9uSGFuZGxlcihX
VEZNb3ZlKCpyZXN1bHQpKTsKLX0KLQotdm9pZCBUZXN0QXN5bmNNZXNzYWdlOjpjYW5jZWxSZXBs
eShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQotewotICAgIGNvbXBsZXRpb25IYW5kbGVyKElQQzo6QXN5bmNSZXBseUVycm9yPHVpbnQ2NF90
Pjo6Y3JlYXRlKCkpOwotfQotCi12b2lkIFRlc3RBc3luY01lc3NhZ2U6OnNlbmQoc3RkOjp1bmlx
dWVfcHRyPElQQzo6RW5jb2Rlcj4mJiBlbmNvZGVyLCBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rp
b24sIHVpbnQ2NF90IHJlc3VsdCkKLXsKLSAgICAqZW5jb2RlciA8PCByZXN1bHQ7Ci0gICAgY29u
bmVjdGlvbi5zZW5kU3luY1JlcGx5KFdURk1vdmUoZW5jb2RlcikpOwotfQotCi0jZW5kaWYKLQot
I2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCi0KLXZvaWQgVGVzdEFzeW5jTWVzc2FnZVdpdGhOb0Fy
Z3VtZW50czo6Y2FsbFJlcGx5KElQQzo6RGVjb2RlciYgZGVjb2RlciwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIGNvbXBsZXRpb25IYW5kbGVy
KCk7Ci19Ci0KLXZvaWQgVGVzdEFzeW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50czo6Y2FuY2VsUmVw
bHkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQotewotICAg
IGNvbXBsZXRpb25IYW5kbGVyKCk7Ci19Ci0KLXZvaWQgVGVzdEFzeW5jTWVzc2FnZVdpdGhOb0Fy
Z3VtZW50czo6c2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYmIGVuY29kZXIsIElQ
Qzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKLXsKLSAgICBjb25uZWN0aW9uLnNlbmRTeW5jUmVw
bHkoV1RGTW92ZShlbmNvZGVyKSk7Ci19Ci0KLSNlbmRpZgotCi0jaWYgRU5BQkxFKFRFU1RfRkVB
VFVSRSkKLQotdm9pZCBUZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1lbnRzOjpjYWxs
UmVwbHkoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wm
JiwgdWludDY0X3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCi17Ci0gICAgT3B0aW9uYWw8Ym9v
bD4gZmxhZzsKLSAgICBkZWNvZGVyID4+IGZsYWc7Ci0gICAgaWYgKCFmbGFnKSB7Ci0gICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICBjYW5jZWxSZXBseShXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgT3B0aW9uYWw8dWlu
dDY0X3Q+IHZhbHVlOwotICAgIGRlY29kZXIgPj4gdmFsdWU7Ci0gICAgaWYgKCF2YWx1ZSkgewot
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgY2FuY2VsUmVwbHkoV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNvbXBs
ZXRpb25IYW5kbGVyKFdURk1vdmUoKmZsYWcpLCBXVEZNb3ZlKCp2YWx1ZSkpOwotfQotCi12b2lk
IFRlc3RBc3luY01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHM6OmNhbmNlbFJlcGx5KENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCYmLCB1aW50NjRfdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKLXsKLSAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkFzeW5jUmVwbHlFcnJvcjxib29sPjo6
Y3JlYXRlKCksIElQQzo6QXN5bmNSZXBseUVycm9yPHVpbnQ2NF90Pjo6Y3JlYXRlKCkpOwotfQot
Ci12b2lkIFRlc3RBc3luY01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHM6OnNlbmQoc3RkOjp1
bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mJiBlbmNvZGVyLCBJUEM6OkNvbm5lY3Rpb24mIGNvbm5l
Y3Rpb24sIGJvb2wgZmxhZywgdWludDY0X3QgdmFsdWUpCi17Ci0gICAgKmVuY29kZXIgPDwgZmxh
ZzsKLSAgICAqZW5jb2RlciA8PCB2YWx1ZTsKLSAgICBjb25uZWN0aW9uLnNlbmRTeW5jUmVwbHko
V1RGTW92ZShlbmNvZGVyKSk7Ci19Ci0KLSNlbmRpZgotCi12b2lkIFRlc3RTeW5jTWVzc2FnZTo6
c2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYmIGVuY29kZXIsIElQQzo6Q29ubmVj
dGlvbiYgY29ubmVjdGlvbiwgdWludDhfdCByZXBseSkKLXsKLSAgICAqZW5jb2RlciA8PCByZXBs
eTsKLSAgICBjb25uZWN0aW9uLnNlbmRTeW5jUmVwbHkoV1RGTW92ZShlbmNvZGVyKSk7Ci19Ci0K
LXZvaWQgVGVzdFN5bmNocm9ub3VzTWVzc2FnZTo6c2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpF
bmNvZGVyPiYmIGVuY29kZXIsIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgT3B0
aW9uYWw8V2ViS2l0OjpUZXN0Q2xhc3NOYW1lPiYgb3B0aW9uYWxSZXBseSkKLXsKLSAgICAqZW5j
b2RlciA8PCBvcHRpb25hbFJlcGx5OwotICAgIGNvbm5lY3Rpb24uc2VuZFN5bmNSZXBseShXVEZN
b3ZlKGVuY29kZXIpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViUGFnZQotCi19IC8vIG5hbWVz
cGFjZSBNZXNzYWdlcwotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotdm9pZCBXZWJQYWdlOjpkaWRS
ZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYg
ZGVjb2RlcikKLXsKLSAgICBhdXRvIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKTsKLSAg
ICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkVVJM
OjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdl
OjpMb2FkVVJMPihkZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6bG9hZFVSTCk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0jaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKLSAgICBpZiAoZGVjb2Rlci5t
ZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0QXN5bmNNZXNzYWdlOjpuYW1l
KCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlQXN5bmM8TWVzc2FnZXM6OldlYlBhZ2U6
OlRlc3RBc3luY01lc3NhZ2U+KGNvbm5lY3Rpb24sIGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjp0
ZXN0QXN5bmNNZXNzYWdlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNlbmRpZgotI2lmIEVO
QUJMRShURVNUX0ZFQVRVUkUpCi0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNz
YWdlczo6V2ViUGFnZTo6VGVzdEFzeW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50czo6bmFtZSgpKSB7
Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZUFzeW5jPE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0
QXN5bmNNZXNzYWdlV2l0aE5vQXJndW1lbnRzPihjb25uZWN0aW9uLCBkZWNvZGVyLCB0aGlzLCAm
V2ViUGFnZTo6dGVzdEFzeW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50cyk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0jZW5kaWYKLSNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQotICAgIGlmIChkZWNv
ZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RBc3luY01lc3NhZ2VX
aXRoTXVsdGlwbGVBcmd1bWVudHM6Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3Nh
Z2VBc3luYzxNZXNzYWdlczo6V2ViUGFnZTo6VGVzdEFzeW5jTWVzc2FnZVdpdGhNdWx0aXBsZUFy
Z3VtZW50cz4oY29ubmVjdGlvbiwgZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OnRlc3RBc3luY01l
c3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHMpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2Vu
ZGlmCi0gICAgV2ViUGFnZUJhc2U6OmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29k
ZXIpOwotfQotCi12b2lkIFdlYlBhZ2U6OmRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2Rlciwgc3RkOjp1bmlxdWVfcHRy
PElQQzo6RW5jb2Rlcj4mIHJlcGx5RW5jb2RlcikKLXsKLSAgICBhdXRvIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKTsKLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3Nh
Z2VzOjpXZWJQYWdlOjpUZXN0U3luY01lc3NhZ2U6Om5hbWUoKSkgewotICAgICAgICBJUEM6Omhh
bmRsZU1lc3NhZ2VTeW5jaHJvbm91czxNZXNzYWdlczo6V2ViUGFnZTo6VGVzdFN5bmNNZXNzYWdl
Pihjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIsIHRoaXMsICZXZWJQYWdlOjp0ZXN0
U3luY01lc3NhZ2UpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChkZWNvZGVyLm1l
c3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RTeW5jaHJvbm91c01lc3NhZ2U6
Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2VTeW5jaHJvbm91czxNZXNzYWdl
czo6V2ViUGFnZTo6VGVzdFN5bmNocm9ub3VzTWVzc2FnZT4oY29ubmVjdGlvbiwgZGVjb2Rlciwg
cmVwbHlFbmNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6dGVzdFN5bmNocm9ub3VzTWVzc2FnZSk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pOwotICAg
IFVOVVNFRF9QQVJBTShkZWNvZGVyKTsKLSAgICBVTlVTRURfUEFSQU0ocmVwbHlFbmNvZGVyKTsK
LSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0K
ClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvTWVzc2Fn
ZVJlY2VpdmVyU3VwZXJjbGFzcy1leHBlY3RlZC5jcHAKX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46
ZW9sLXN0eWxlCiMjIC0xICswLDAgIyMKLW5hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHBy
b3BlcnR5CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L01lc3NhZ2VzLWV4cGVj
dGVkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9NZXNzYWdl
cy1leHBlY3RlZC5oCShyZXZpc2lvbiAyNjA3NjQpCisrKyBTb3VyY2UvV2ViS2l0L1NjcmlwdHMv
d2Via2l0L01lc3NhZ2VzLWV4cGVjdGVkLmgJKG5vbmV4aXN0ZW50KQpAQCAtMSw1NzAgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECi0gKiBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IK
LSAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwKLSAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0gKiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUgotICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0g
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgKEVOQUJMRShXRUJLSVQy
KSAmJiAoTkVTVEVEX01BU1RFUl9DT05ESVRJT04gfHwgTUFTVEVSX09SICYmIE1BU1RFUl9BTkQp
KQotCi0jaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKLSNpbmNsdWRlICJDb25uZWN0aW9uLmgi
Ci0jaW5jbHVkZSAiUGx1Z2luLmgiCi0jaW5jbHVkZSAiV2ViUGFnZU1lc3NhZ2VzUmVwbGllcy5o
IgotI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NMYXllci5oPgotI2luY2x1ZGUgPFdlYkNvcmUv
S2V5Ym9hcmRFdmVudC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvUGx1Z2luRGF0YS5oPgotI2luY2x1
ZGUgPHV0aWxpdHk+Ci0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvSGFz
aE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgotI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNw
YWNlIElQQyB7Ci1jbGFzcyBEdW1teVR5cGU7Ci1jbGFzcyBNYWNoUG9ydDsKLX0KLQotbmFtZXNw
YWNlIFdlYktpdCB7Ci1jbGFzcyBXZWJQcmVmZXJlbmNlc1N0b3JlOwotY2xhc3MgV2ViVG91Y2hF
dmVudDsKLX0KLQotbmFtZXNwYWNlIE1lc3NhZ2VzIHsKLW5hbWVzcGFjZSBXZWJQYWdlIHsKLQot
c3RhdGljIGlubGluZSBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lKCkK
LXsKLSAgICByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIldlYlBhZ2UiKTsKLX0KLQotY2xh
c3MgTG9hZFVSTCB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGNvbnN0IFN0cmlu
ZyY+IEFyZ3VtZW50czsKLQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZl
ck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMgSVBD
OjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJM
b2FkVVJMIik7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKLQotICAg
IGV4cGxpY2l0IExvYWRVUkwoY29uc3QgU3RyaW5nJiB1cmwpCi0gICAgICAgIDogbV9hcmd1bWVu
dHModXJsKQotICAgIHsKLSAgICB9Ci0KLSAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygp
IGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7Ci0gICAgfQotCi1wcml2
YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKLX07Ci0KLSNpZiBFTkFCTEUoVE9VQ0hf
RVZFTlRTKQotY2xhc3MgTG9hZFNvbWV0aGluZyB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6
OnR1cGxlPGNvbnN0IFN0cmluZyY+IEFyZ3VtZW50czsKLQotICAgIHN0YXRpYyBJUEM6OlN0cmlu
Z1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7
IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6
U3RyaW5nUmVmZXJlbmNlKCJMb2FkU29tZXRoaW5nIik7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9v
bCBpc1N5bmMgPSBmYWxzZTsKLQotICAgIGV4cGxpY2l0IExvYWRTb21ldGhpbmcoY29uc3QgU3Ry
aW5nJiB1cmwpCi0gICAgICAgIDogbV9hcmd1bWVudHModXJsKQotICAgIHsKLSAgICB9Ci0KLSAg
ICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1
cm4gbV9hcmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3Vt
ZW50czsKLX07Ci0jZW5kaWYKLQotI2lmIChFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiAoTkVTVEVE
X01FU1NBR0VfQ09ORElUSU9OIHx8IFNPTUVfT1RIRVJfTUVTU0FHRV9DT05ESVRJT04pKQotY2xh
c3MgVG91Y2hFdmVudCB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGNvbnN0IFdl
YktpdDo6V2ViVG91Y2hFdmVudCY+IEFyZ3VtZW50czsKLQotICAgIHN0YXRpYyBJUEM6OlN0cmlu
Z1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7
IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6
U3RyaW5nUmVmZXJlbmNlKCJUb3VjaEV2ZW50Iik7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBp
c1N5bmMgPSBmYWxzZTsKLQotICAgIGV4cGxpY2l0IFRvdWNoRXZlbnQoY29uc3QgV2ViS2l0OjpX
ZWJUb3VjaEV2ZW50JiBldmVudCkKLSAgICAgICAgOiBtX2FyZ3VtZW50cyhldmVudCkKLSAgICB7
Ci0gICAgfQotCi0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsK
LSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1
bWVudHMgbV9hcmd1bWVudHM7Ci19OwotI2VuZGlmCi0KLSNpZiAoRU5BQkxFKFRPVUNIX0VWRU5U
UykgJiYgKE5FU1RFRF9NRVNTQUdFX0NPTkRJVElPTiAmJiBTT01FX09USEVSX01FU1NBR0VfQ09O
RElUSU9OKSkKLWNsYXNzIEFkZEV2ZW50IHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVw
bGU8Y29uc3QgV2ViS2l0OjpXZWJUb3VjaEV2ZW50Jj4gQXJndW1lbnRzOwotCi0gICAgc3RhdGlj
IElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNl
aXZlck5hbWUoKTsgfQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyBy
ZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIkFkZEV2ZW50Iik7IH0KLSAgICBzdGF0aWMgY29u
c3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKLQotICAgIGV4cGxpY2l0IEFkZEV2ZW50KGNvbnN0IFdl
YktpdDo6V2ViVG91Y2hFdmVudCYgZXZlbnQpCi0gICAgICAgIDogbV9hcmd1bWVudHMoZXZlbnQp
Ci0gICAgewotICAgIH0KLQotICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QK
LSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0KLXByaXZhdGU6Ci0g
ICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLSNlbmRpZgotCi0jaWYgRU5BQkxFKFRPVUNI
X0VWRU5UUykKLWNsYXNzIExvYWRTb21ldGhpbmdFbHNlIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVm
IHN0ZDo6dHVwbGU8Y29uc3QgU3RyaW5nJj4gQXJndW1lbnRzOwotCi0gICAgc3RhdGljIElQQzo6
U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5h
bWUoKTsgfQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4g
SVBDOjpTdHJpbmdSZWZlcmVuY2UoIkxvYWRTb21ldGhpbmdFbHNlIik7IH0KLSAgICBzdGF0aWMg
Y29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKLQotICAgIGV4cGxpY2l0IExvYWRTb21ldGhpbmdF
bHNlKGNvbnN0IFN0cmluZyYgdXJsKQotICAgICAgICA6IG1fYXJndW1lbnRzKHVybCkKLSAgICB7
Ci0gICAgfQotCi0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsK
LSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1
bWVudHMgbV9hcmd1bWVudHM7Ci19OwotI2VuZGlmCi0KLWNsYXNzIERpZFJlY2VpdmVQb2xpY3lE
ZWNpc2lvbiB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPHVpbnQ2NF90LCB1aW50
NjRfdCwgdWludDMyX3Q+IEFyZ3VtZW50czsKLQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVy
ZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAg
ICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5n
UmVmZXJlbmNlKCJEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24iKTsgfQotICAgIHN0YXRpYyBjb25z
dCBib29sIGlzU3luYyA9IGZhbHNlOwotCi0gICAgRGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKHVp
bnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IGxpc3RlbmVySUQsIHVpbnQzMl90IHBvbGljeUFjdGlv
bikKLSAgICAgICAgOiBtX2FyZ3VtZW50cyhmcmFtZUlELCBsaXN0ZW5lcklELCBwb2xpY3lBY3Rp
b24pCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29u
c3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0KLXByaXZhdGU6
Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLQotY2xhc3MgQ2xvc2UgewotcHVibGlj
OgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTw+IEFyZ3VtZW50czsKLQotICAgIHN0YXRpYyBJUEM6
OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJO
YW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJu
IElQQzo6U3RyaW5nUmVmZXJlbmNlKCJDbG9zZSIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wg
aXNTeW5jID0gZmFsc2U7Ci0KLSAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0
Ci0gICAgewotICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRlOgot
ICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKLX07Ci0KLWNsYXNzIFByZWZlcmVuY2VzRGlkQ2hh
bmdlIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8Y29uc3QgV2ViS2l0OjpXZWJQ
cmVmZXJlbmNlc1N0b3JlJj4gQXJndW1lbnRzOwotCi0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVm
ZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsgfQot
ICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpTdHJp
bmdSZWZlcmVuY2UoIlByZWZlcmVuY2VzRGlkQ2hhbmdlIik7IH0KLSAgICBzdGF0aWMgY29uc3Qg
Ym9vbCBpc1N5bmMgPSBmYWxzZTsKLQotICAgIGV4cGxpY2l0IFByZWZlcmVuY2VzRGlkQ2hhbmdl
KGNvbnN0IFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUpCi0gICAgICAgIDogbV9h
cmd1bWVudHMoc3RvcmUpCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJn
dW1lbnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAgICB9
Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLQotY2xhc3MgU2Vu
ZERvdWJsZUFuZEZsb2F0IHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8ZG91Ymxl
LCBmbG9hdD4gQXJndW1lbnRzOwotCi0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJl
Y2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsgfQotICAgIHN0YXRp
YyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVu
Y2UoIlNlbmREb3VibGVBbmRGbG9hdCIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5j
ID0gZmFsc2U7Ci0KLSAgICBTZW5kRG91YmxlQW5kRmxvYXQoZG91YmxlIGQsIGZsb2F0IGYpCi0g
ICAgICAgIDogbV9hcmd1bWVudHMoZCwgZikKLSAgICB7Ci0gICAgfQotCi0gICAgY29uc3QgQXJn
dW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1l
bnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19Owot
Ci1jbGFzcyBTZW5kSW50cyB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGNvbnN0
IFZlY3Rvcjx1aW50NjRfdD4mLCBjb25zdCBWZWN0b3I8VmVjdG9yPHVpbnQ2NF90Pj4mPiBBcmd1
bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkg
eyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6U3RyaW5n
UmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiU2VuZEludHMi
KTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOwotCi0gICAgU2VuZElu
dHMoY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgaW50cywgY29uc3QgVmVjdG9yPFZlY3Rvcjx1aW50
NjRfdD4+JiBpbnRWZWN0b3JzKQotICAgICAgICA6IG1fYXJndW1lbnRzKGludHMsIGludFZlY3Rv
cnMpCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29u
c3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0KLXByaXZhdGU6
Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLQotY2xhc3MgQ3JlYXRlUGx1Z2luIHsK
LXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8dWludDY0X3QsIGNvbnN0IFdlYktpdDo6
UGx1Z2luOjpQYXJhbWV0ZXJzJj4gQXJndW1lbnRzOwotCi0gICAgc3RhdGljIElQQzo6U3RyaW5n
UmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsg
fQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpT
dHJpbmdSZWZlcmVuY2UoIkNyZWF0ZVBsdWdpbiIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wg
aXNTeW5jID0gdHJ1ZTsKLQotICAgIHVzaW5nIFJlcGx5ID0gc3RkOjp0dXBsZTxib29sJj47Ci0g
ICAgdXNpbmcgUmVwbHlBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPGJvb2w+OwotICAgIENyZWF0ZVBs
dWdpbih1aW50NjRfdCBwbHVnaW5JbnN0YW5jZUlELCBjb25zdCBXZWJLaXQ6OlBsdWdpbjo6UGFy
YW1ldGVycyYgcGFyYW1ldGVycykKLSAgICAgICAgOiBtX2FyZ3VtZW50cyhwbHVnaW5JbnN0YW5j
ZUlELCBwYXJhbWV0ZXJzKQotICAgIHsKLSAgICB9Ci0KLSAgICBjb25zdCBBcmd1bWVudHMmIGFy
Z3VtZW50cygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7Ci0gICAg
fQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKLX07Ci0KLWNsYXNzIFJ1
bkphdmFTY3JpcHRBbGVydCB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPHVpbnQ2
NF90LCBjb25zdCBTdHJpbmcmPiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdS
ZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9
Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0
cmluZ1JlZmVyZW5jZSgiUnVuSmF2YVNjcmlwdEFsZXJ0Iik7IH0KLSAgICBzdGF0aWMgY29uc3Qg
Ym9vbCBpc1N5bmMgPSB0cnVlOwotCi0gICAgdXNpbmcgUmVwbHkgPSBzdGQ6OnR1cGxlPD47Ci0g
ICAgdXNpbmcgUmVwbHlBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPD47Ci0gICAgUnVuSmF2YVNjcmlw
dEFsZXJ0KHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKLSAgICAgICAg
OiBtX2FyZ3VtZW50cyhmcmFtZUlELCBtZXNzYWdlKQotICAgIHsKLSAgICB9Ci0KLSAgICBjb25z
dCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9h
cmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsK
LX07Ci0KLWNsYXNzIEdldFBsdWdpbnMgewotcHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBs
ZTxib29sPiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVj
ZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGlj
IElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5j
ZSgiR2V0UGx1Z2lucyIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gdHJ1ZTsK
LQotICAgIHVzaW5nIFJlcGx5ID0gc3RkOjp0dXBsZTxWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5m
bz4mPjsKLSAgICB1c2luZyBSZXBseUFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8VmVjdG9yPFdlYkNv
cmU6OlBsdWdpbkluZm8+PjsKLSAgICBleHBsaWNpdCBHZXRQbHVnaW5zKGJvb2wgcmVmcmVzaCkK
LSAgICAgICAgOiBtX2FyZ3VtZW50cyhyZWZyZXNoKQotICAgIHsKLSAgICB9Ci0KLSAgICBjb25z
dCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9h
cmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsK
LX07Ci0KLWNsYXNzIEdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uIHsKLXB1YmxpYzoKLSAgICB0
eXBlZGVmIHN0ZDo6dHVwbGU8Y29uc3QgU3RyaW5nJj4gQXJndW1lbnRzOwotCi0gICAgc3RhdGlj
IElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNl
aXZlck5hbWUoKTsgfQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyBy
ZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uIik7
IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSB0cnVlOwotCi0gICAgdXNpbmcgRGVs
YXllZFJlcGx5ID0gR2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25EZWxheWVkUmVwbHk7Ci0gICAg
c3RhdGljIHZvaWQgc2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYmLCBJUEM6OkNv
bm5lY3Rpb24mLCBjb25zdCBJUEM6OkNvbm5lY3Rpb246OkhhbmRsZSYgY29ubmVjdGlvbkhhbmRs
ZSk7Ci0gICAgdXNpbmcgUmVwbHkgPSBzdGQ6OnR1cGxlPElQQzo6Q29ubmVjdGlvbjo6SGFuZGxl
Jj47Ci0gICAgdXNpbmcgUmVwbHlBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPElQQzo6Q29ubmVjdGlv
bjo6SGFuZGxlPjsKLSAgICBleHBsaWNpdCBHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbihjb25z
dCBTdHJpbmcmIHBsdWdpblBhdGgpCi0gICAgICAgIDogbV9hcmd1bWVudHMocGx1Z2luUGF0aCkK
LSAgICB7Ci0gICAgfQotCi0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAot
ICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAg
ICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19OwotCi1jbGFzcyBUZXN0TXVsdGlwbGVBdHRyaWJ1
dGVzIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8PiBBcmd1bWVudHM7Ci0KLSAg
ICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVz
c2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5h
bWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiVGVzdE11bHRpcGxlQXR0cmlidXRl
cyIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gdHJ1ZTsKLQotICAgIHVzaW5n
IERlbGF5ZWRSZXBseSA9IFRlc3RNdWx0aXBsZUF0dHJpYnV0ZXNEZWxheWVkUmVwbHk7Ci0gICAg
c3RhdGljIHZvaWQgc2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYmLCBJUEM6OkNv
bm5lY3Rpb24mKTsKLSAgICB1c2luZyBSZXBseSA9IHN0ZDo6dHVwbGU8PjsKLSAgICB1c2luZyBS
ZXBseUFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8PjsKLSAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3Vt
ZW50cygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7Ci0gICAgfQot
Ci1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKLX07Ci0KLWNsYXNzIFRlc3RQ
YXJhbWV0ZXJBdHRyaWJ1dGVzIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8dWlu
dDY0X3QsIGRvdWJsZSwgZG91YmxlPiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJp
bmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgp
OyB9Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6
OlN0cmluZ1JlZmVyZW5jZSgiVGVzdFBhcmFtZXRlckF0dHJpYnV0ZXMiKTsgfQotICAgIHN0YXRp
YyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOwotCi0gICAgVGVzdFBhcmFtZXRlckF0dHJpYnV0
ZXModWludDY0X3QgZm9vLCBkb3VibGUgYmFyLCBkb3VibGUgYmF6KQotICAgICAgICA6IG1fYXJn
dW1lbnRzKGZvbywgYmFyLCBiYXopCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0IEFyZ3VtZW50
cyYgYXJndW1lbnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsK
LSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLQotY2xh
c3MgVGVtcGxhdGVUZXN0IHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8Y29uc3Qg
SGFzaE1hcDxTdHJpbmcsIHN0ZDo6cGFpcjxTdHJpbmcsIHVpbnQ2NF90Pj4mPiBBcmd1bWVudHM7
Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1
cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJl
bmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiVGVtcGxhdGVUZXN0Iik7
IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKLQotICAgIGV4cGxpY2l0
IFRlbXBsYXRlVGVzdChjb25zdCBIYXNoTWFwPFN0cmluZywgc3RkOjpwYWlyPFN0cmluZywgdWlu
dDY0X3Q+PiYgYSkKLSAgICAgICAgOiBtX2FyZ3VtZW50cyhhKQotICAgIHsKLSAgICB9Ci0KLSAg
ICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1
cm4gbV9hcmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3Vt
ZW50czsKLX07Ci0KLWNsYXNzIFNldFZpZGVvTGF5ZXJJRCB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRl
ZiBzdGQ6OnR1cGxlPGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJ
RCY+IEFyZ3VtZW50czsKLQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZl
ck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMgSVBD
OjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJT
ZXRWaWRlb0xheWVySUQiKTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNl
OwotCi0gICAgZXhwbGljaXQgU2V0VmlkZW9MYXllcklEKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNz
TGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRCYgdmlkZW9MYXllcklEKQotICAgICAgICA6IG1fYXJndW1l
bnRzKHZpZGVvTGF5ZXJJRCkKLSAgICB7Ci0gICAgfQotCi0gICAgY29uc3QgQXJndW1lbnRzJiBh
cmd1bWVudHMoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAg
IH0KLQotcHJpdmF0ZToKLSAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19OwotCi0jaWYgUExB
VEZPUk0oTUFDKQotY2xhc3MgRGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24gewotcHVibGlj
OgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBJUEM6Ok1hY2hQb3J0Jj4gQXJndW1lbnRz
OwotCi0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0
dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsgfQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVy
ZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIkRpZENyZWF0ZVdlYlBy
b2Nlc3NDb25uZWN0aW9uIik7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxz
ZTsKLQotICAgIGV4cGxpY2l0IERpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKGNvbnN0IElQ
Qzo6TWFjaFBvcnQmIGNvbm5lY3Rpb25JZGVudGlmaWVyKQotICAgICAgICA6IG1fYXJndW1lbnRz
KGNvbm5lY3Rpb25JZGVudGlmaWVyKQotICAgIHsKLSAgICB9Ci0KLSAgICBjb25zdCBBcmd1bWVu
dHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7
Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKLX07Ci0jZW5k
aWYKLQotI2lmIFBMQVRGT1JNKE1BQykKLWNsYXNzIEludGVycHJldEtleUV2ZW50IHsKLXB1Ymxp
YzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8dWludDMyX3Q+IEFyZ3VtZW50czsKLQotICAgIHN0
YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNzYWdl
UmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgp
IHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJJbnRlcnByZXRLZXlFdmVudCIpOyB9Ci0g
ICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gdHJ1ZTsKLQotICAgIHVzaW5nIFJlcGx5ID0g
c3RkOjp0dXBsZTxWZWN0b3I8V2ViQ29yZTo6S2V5cHJlc3NDb21tYW5kPiY+OwotICAgIHVzaW5n
IFJlcGx5QXJndW1lbnRzID0gc3RkOjp0dXBsZTxWZWN0b3I8V2ViQ29yZTo6S2V5cHJlc3NDb21t
YW5kPj47Ci0gICAgZXhwbGljaXQgSW50ZXJwcmV0S2V5RXZlbnQodWludDMyX3QgdHlwZSkKLSAg
ICAgICAgOiBtX2FyZ3VtZW50cyh0eXBlKQotICAgIHsKLSAgICB9Ci0KLSAgICBjb25zdCBBcmd1
bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9hcmd1bWVu
dHM7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKLX07Ci0j
ZW5kaWYKLQotI2lmIEVOQUJMRShERVBSRUNBVEVEX0ZFQVRVUkUpCi1jbGFzcyBEZXByZWNhdGVk
T3BlcmF0aW9uIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8Y29uc3QgSVBDOjpE
dW1teVR5cGUmPiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2Ug
cmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAgc3Rh
dGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVy
ZW5jZSgiRGVwcmVjYXRlZE9wZXJhdGlvbiIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNT
eW5jID0gZmFsc2U7Ci0KLSAgICBleHBsaWNpdCBEZXByZWNhdGVkT3BlcmF0aW9uKGNvbnN0IElQ
Qzo6RHVtbXlUeXBlJiBkdW1teSkKLSAgICAgICAgOiBtX2FyZ3VtZW50cyhkdW1teSkKLSAgICB7
Ci0gICAgfQotCi0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsK
LSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1
bWVudHMgbV9hcmd1bWVudHM7Ci19OwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoRVhQRVJJTUVOVEFM
X0ZFQVRVUkUpCi1jbGFzcyBFeHBlcmltZW50YWxPcGVyYXRpb24gewotcHVibGljOgotICAgIHR5
cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBJUEM6OkR1bW15VHlwZSY+IEFyZ3VtZW50czsKLQotICAg
IHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNz
YWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFt
ZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJFeHBlcmltZW50YWxPcGVyYXRpb24i
KTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOwotCi0gICAgZXhwbGlj
aXQgRXhwZXJpbWVudGFsT3BlcmF0aW9uKGNvbnN0IElQQzo6RHVtbXlUeXBlJiBkdW1teSkKLSAg
ICAgICAgOiBtX2FyZ3VtZW50cyhkdW1teSkKLSAgICB7Ci0gICAgfQotCi0gICAgY29uc3QgQXJn
dW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1l
bnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19Owot
I2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIFdlYlBhZ2UKLX0gLy8gbmFtZXNwYWNlIE1lc3NhZ2Vz
Ci0KLSNlbmRpZiAvLyAoRU5BQkxFKFdFQktJVDIpICYmIChORVNURURfTUFTVEVSX0NPTkRJVElP
TiB8fCBNQVNURVJfT1IgJiYgTUFTVEVSX0FORCkpCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3Vy
Y2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L01lc3NhZ2VzLWV4cGVjdGVkLmgKX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpE
ZWxldGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0xICswLDAgIyMKLW5hdGl2ZQpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L01l
c3NhZ2VzUmVwbGllcy1leHBlY3RlZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2Ny
aXB0cy93ZWJraXQvTWVzc2FnZXNSZXBsaWVzLWV4cGVjdGVkLmgJKHJldmlzaW9uIDI2MDc2NCkK
KysrIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvTWVzc2FnZXNSZXBsaWVzLWV4cGVjdGVk
LmgJKG5vbmV4aXN0ZW50KQpAQCAtMSw0MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDEwLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKLSAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgotICogQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotICogREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IKLSAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0gKiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLAotICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3By
YWdtYSBvbmNlCi0KLSNpZiAoRU5BQkxFKFdFQktJVDIpICYmIChORVNURURfTUFTVEVSX0NPTkRJ
VElPTiB8fCBNQVNURVJfT1IgJiYgTUFTVEVSX0FORCkpCi0KLSNpbmNsdWRlICJDb25uZWN0aW9u
LmgiCi0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLQotCi1uYW1lc3BhY2UgTWVzc2FnZXMgewot
bmFtZXNwYWNlIFdlYlBhZ2UgewotCi11c2luZyBHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbkRl
bGF5ZWRSZXBseSA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpDb25uZWN0aW9u
OjpIYW5kbGUmIGNvbm5lY3Rpb25IYW5kbGUpPjsKLQotdXNpbmcgVGVzdE11bHRpcGxlQXR0cmli
dXRlc0RlbGF5ZWRSZXBseSA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT47Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdlYlBhZ2UKLX0gLy8gbmFtZXNwYWNlIE1lc3NhZ2VzCi0KLSNlbmRpZiAvLyAoRU5B
QkxFKFdFQktJVDIpICYmIChORVNURURfTUFTVEVSX0NPTkRJVElPTiB8fCBNQVNURVJfT1IgJiYg
TUFTVEVSX0FORCkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L01lc3NhZ2Vz
UmVwbGllc1N1cGVyY2xhc3NSZXBsaWVzLWV4cGVjdGVkLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9TY3JpcHRzL3dlYmtpdC9NZXNzYWdlc1JlcGxpZXNTdXBlcmNsYXNzUmVwbGllcy1l
eHBlY3RlZC5oCShyZXZpc2lvbiAyNjA3NjQpCisrKyBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Vi
a2l0L01lc3NhZ2VzUmVwbGllc1N1cGVyY2xhc3NSZXBsaWVzLWV4cGVjdGVkLmgJKG5vbmV4aXN0
ZW50KQpAQCAtMSw1MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJyBBTkQKLSAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0g
KiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUgotICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotICogREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IKLSAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0gKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotICogT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0K
LSNpbmNsdWRlICJUZXN0Q2xhc3NOYW1lLmgiCi0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNp
bmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KLQotCi1uYW1lc3BhY2UgTWVzc2FnZXMgewotbmFtZXNw
YWNlIFdlYlBhZ2UgewotCi0jaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKLXVzaW5nIFRlc3RBc3lu
Y01lc3NhZ2VBc3luY1JlcGx5ID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCByZXN1
bHQpPjsKLSNlbmRpZgotCi0jaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKLXVzaW5nIFRlc3RBc3lu
Y01lc3NhZ2VXaXRoTm9Bcmd1bWVudHNBc3luY1JlcGx5ID0gQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPjsKLSNlbmRpZgotCi0jaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKLXVzaW5nIFRlc3RBc3lu
Y01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHNBc3luY1JlcGx5ID0gQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sIGZsYWcsIHVpbnQ2NF90IHZhbHVlKT47Ci0jZW5kaWYKLQotdXNpbmcgVGVz
dFN5bmNNZXNzYWdlRGVsYXllZFJlcGx5ID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50OF90
IHJlcGx5KT47Ci0KLXVzaW5nIFRlc3RTeW5jaHJvbm91c01lc3NhZ2VEZWxheWVkUmVwbHkgPSBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IE9wdGlvbmFsPFdlYktpdDo6VGVzdENsYXNzTmFt
ZT4mIG9wdGlvbmFsUmVwbHkpPjsKLQotfSAvLyBuYW1lc3BhY2UgV2ViUGFnZQotfSAvLyBuYW1l
c3BhY2UgTWVzc2FnZXMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvTWVzc2Fn
ZXNTdXBlcmNsYXNzLWV4cGVjdGVkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TY3Jp
cHRzL3dlYmtpdC9NZXNzYWdlc1N1cGVyY2xhc3MtZXhwZWN0ZWQuaAkocmV2aXNpb24gMjYwNzY0
KQorKysgU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9NZXNzYWdlc1N1cGVyY2xhc3MtZXhw
ZWN0ZWQuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDIwNiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDEwLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKLSAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0g
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgotICogQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAot
ICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IKLSAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0gKiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLAotICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgotI2luY2x1ZGUg
IkNvbm5lY3Rpb24uaCIKLSNpbmNsdWRlICJUZXN0Q2xhc3NOYW1lLmgiCi0jaW5jbHVkZSAiV2Vi
UGFnZU1lc3NhZ2VzUmVwbGllcy5oIgotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVk
ZSA8d3RmL09wdGlvbmFsLmg+Ci0jaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+
Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewot
ZW51bSBjbGFzcyBUZXN0VHdvU3RhdGVFbnVtIDogYm9vbDsKLX0KLQotbmFtZXNwYWNlIE1lc3Nh
Z2VzIHsKLW5hbWVzcGFjZSBXZWJQYWdlIHsKLQotc3RhdGljIGlubGluZSBJUEM6OlN0cmluZ1Jl
ZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lKCkKLXsKLSAgICByZXR1cm4gSVBDOjpTdHJpbmdS
ZWZlcmVuY2UoIldlYlBhZ2UiKTsKLX0KLQotY2xhc3MgTG9hZFVSTCB7Ci1wdWJsaWM6Ci0gICAg
dHlwZWRlZiBzdGQ6OnR1cGxlPGNvbnN0IFN0cmluZyY+IEFyZ3VtZW50czsKLQotICAgIHN0YXRp
YyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVj
ZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsg
cmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJMb2FkVVJMIik7IH0KLSAgICBzdGF0aWMgY29u
c3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKLQotICAgIGV4cGxpY2l0IExvYWRVUkwoY29uc3QgU3Ry
aW5nJiB1cmwpCi0gICAgICAgIDogbV9hcmd1bWVudHModXJsKQotICAgIHsKLSAgICB9Ci0KLSAg
ICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1
cm4gbV9hcmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3Vt
ZW50czsKLX07Ci0KLSNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQotY2xhc3MgVGVzdEFzeW5jTWVz
c2FnZSB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPFdlYktpdDo6VGVzdFR3b1N0
YXRlRW51bT4gQXJndW1lbnRzOwotCi0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJl
Y2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsgfQotICAgIHN0YXRp
YyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVu
Y2UoIlRlc3RBc3luY01lc3NhZ2UiKTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9
IGZhbHNlOwotCi0gICAgc3RhdGljIHZvaWQgY2FsbFJlcGx5KElQQzo6RGVjb2RlciYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQodWludDY0X3QmJik+JiYpOwotICAgIHN0YXRpYyB2b2lkIGNhbmNl
bFJlcGx5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0X3QmJik+JiYpOwotICAgIHN0YXRp
YyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBhc3luY01lc3NhZ2VSZXBseU5hbWUoKSB7IHJldHVybiB7
ICJUZXN0QXN5bmNNZXNzYWdlUmVwbHkiIH07IH0KLSAgICB1c2luZyBBc3luY1JlcGx5ID0gVGVz
dEFzeW5jTWVzc2FnZUFzeW5jUmVwbHk7Ci0gICAgc3RhdGljIHZvaWQgc2VuZChzdGQ6OnVuaXF1
ZV9wdHI8SVBDOjpFbmNvZGVyPiYmLCBJUEM6OkNvbm5lY3Rpb24mLCB1aW50NjRfdCByZXN1bHQp
OwotICAgIHVzaW5nIFJlcGx5ID0gc3RkOjp0dXBsZTx1aW50NjRfdCY+OwotICAgIHVzaW5nIFJl
cGx5QXJndW1lbnRzID0gc3RkOjp0dXBsZTx1aW50NjRfdD47Ci0gICAgZXhwbGljaXQgVGVzdEFz
eW5jTWVzc2FnZShXZWJLaXQ6OlRlc3RUd29TdGF0ZUVudW0gdHdvU3RhdGVFbnVtKQotICAgICAg
ICA6IG1fYXJndW1lbnRzKHR3b1N0YXRlRW51bSkKLSAgICB7Ci0gICAgfQotCi0gICAgY29uc3Qg
QXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJn
dW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19
OwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQotY2xhc3MgVGVzdEFzeW5jTWVz
c2FnZVdpdGhOb0FyZ3VtZW50cyB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPD4g
QXJndW1lbnRzOwotCi0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFt
ZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsgfQotICAgIHN0YXRpYyBJUEM6OlN0
cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIlRlc3RB
c3luY01lc3NhZ2VXaXRoTm9Bcmd1bWVudHMiKTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlz
U3luYyA9IGZhbHNlOwotCi0gICAgc3RhdGljIHZvaWQgY2FsbFJlcGx5KElQQzo6RGVjb2RlciYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgc3RhdGljIHZvaWQgY2FuY2VsUmVw
bHkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdS
ZWZlcmVuY2UgYXN5bmNNZXNzYWdlUmVwbHlOYW1lKCkgeyByZXR1cm4geyAiVGVzdEFzeW5jTWVz
c2FnZVdpdGhOb0FyZ3VtZW50c1JlcGx5IiB9OyB9Ci0gICAgdXNpbmcgQXN5bmNSZXBseSA9IFRl
c3RBc3luY01lc3NhZ2VXaXRoTm9Bcmd1bWVudHNBc3luY1JlcGx5OwotICAgIHN0YXRpYyB2b2lk
IHNlbmQoc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mJiwgSVBDOjpDb25uZWN0aW9uJik7
Ci0gICAgdXNpbmcgUmVwbHkgPSBzdGQ6OnR1cGxlPD47Ci0gICAgdXNpbmcgUmVwbHlBcmd1bWVu
dHMgPSBzdGQ6OnR1cGxlPD47Ci0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25z
dAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToK
LSAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19OwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoVEVT
VF9GRUFUVVJFKQotY2xhc3MgVGVzdEFzeW5jTWVzc2FnZVdpdGhNdWx0aXBsZUFyZ3VtZW50cyB7
Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPD4gQXJndW1lbnRzOwotCi0gICAgc3Rh
dGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VS
ZWNlaXZlck5hbWUoKTsgfQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkg
eyByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIlRlc3RBc3luY01lc3NhZ2VXaXRoTXVsdGlw
bGVBcmd1bWVudHMiKTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOwot
Ci0gICAgc3RhdGljIHZvaWQgY2FsbFJlcGx5KElQQzo6RGVjb2RlciYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCYmLCB1aW50NjRfdCYmKT4mJik7Ci0gICAgc3RhdGljIHZvaWQgY2FuY2Vs
UmVwbHkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sJiYsIHVpbnQ2NF90JiYpPiYmKTsKLSAg
ICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgYXN5bmNNZXNzYWdlUmVwbHlOYW1lKCkgeyBy
ZXR1cm4geyAiVGVzdEFzeW5jTWVzc2FnZVdpdGhNdWx0aXBsZUFyZ3VtZW50c1JlcGx5IiB9OyB9
Ci0gICAgdXNpbmcgQXN5bmNSZXBseSA9IFRlc3RBc3luY01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1
bWVudHNBc3luY1JlcGx5OwotICAgIHN0YXRpYyB2b2lkIHNlbmQoc3RkOjp1bmlxdWVfcHRyPElQ
Qzo6RW5jb2Rlcj4mJiwgSVBDOjpDb25uZWN0aW9uJiwgYm9vbCBmbGFnLCB1aW50NjRfdCB2YWx1
ZSk7Ci0gICAgdXNpbmcgUmVwbHkgPSBzdGQ6OnR1cGxlPGJvb2wmLCB1aW50NjRfdCY+OwotICAg
IHVzaW5nIFJlcGx5QXJndW1lbnRzID0gc3RkOjp0dXBsZTxib29sLCB1aW50NjRfdD47Ci0gICAg
Y29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJu
IG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1bWVudHMgbV9hcmd1bWVu
dHM7Ci19OwotI2VuZGlmCi0KLWNsYXNzIFRlc3RTeW5jTWVzc2FnZSB7Ci1wdWJsaWM6Ci0gICAg
dHlwZWRlZiBzdGQ6OnR1cGxlPHVpbnQzMl90PiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBD
OjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVy
TmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVy
biBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiVGVzdFN5bmNNZXNzYWdlIik7IH0KLSAgICBzdGF0aWMg
Y29uc3QgYm9vbCBpc1N5bmMgPSB0cnVlOwotCi0gICAgdXNpbmcgRGVsYXllZFJlcGx5ID0gVGVz
dFN5bmNNZXNzYWdlRGVsYXllZFJlcGx5OwotICAgIHN0YXRpYyB2b2lkIHNlbmQoc3RkOjp1bmlx
dWVfcHRyPElQQzo6RW5jb2Rlcj4mJiwgSVBDOjpDb25uZWN0aW9uJiwgdWludDhfdCByZXBseSk7
Ci0gICAgdXNpbmcgUmVwbHkgPSBzdGQ6OnR1cGxlPHVpbnQ4X3QmPjsKLSAgICB1c2luZyBSZXBs
eUFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8dWludDhfdD47Ci0gICAgZXhwbGljaXQgVGVzdFN5bmNN
ZXNzYWdlKHVpbnQzMl90IHBhcmFtKQotICAgICAgICA6IG1fYXJndW1lbnRzKHBhcmFtKQotICAg
IHsKLSAgICB9Ci0KLSAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAg
ewotICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFy
Z3VtZW50cyBtX2FyZ3VtZW50czsKLX07Ci0KLWNsYXNzIFRlc3RTeW5jaHJvbm91c01lc3NhZ2Ug
ewotcHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxib29sPiBBcmd1bWVudHM7Ci0KLSAg
ICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVz
c2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5h
bWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiVGVzdFN5bmNocm9ub3VzTWVzc2Fn
ZSIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gdHJ1ZTsKLQotICAgIHVzaW5n
IERlbGF5ZWRSZXBseSA9IFRlc3RTeW5jaHJvbm91c01lc3NhZ2VEZWxheWVkUmVwbHk7Ci0gICAg
c3RhdGljIHZvaWQgc2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYmLCBJUEM6OkNv
bm5lY3Rpb24mLCBjb25zdCBPcHRpb25hbDxXZWJLaXQ6OlRlc3RDbGFzc05hbWU+JiBvcHRpb25h
bFJlcGx5KTsKLSAgICB1c2luZyBSZXBseSA9IHN0ZDo6dHVwbGU8T3B0aW9uYWw8V2ViS2l0OjpU
ZXN0Q2xhc3NOYW1lPiY+OwotICAgIHVzaW5nIFJlcGx5QXJndW1lbnRzID0gc3RkOjp0dXBsZTxP
cHRpb25hbDxXZWJLaXQ6OlRlc3RDbGFzc05hbWU+PjsKLSAgICBleHBsaWNpdCBUZXN0U3luY2hy
b25vdXNNZXNzYWdlKGJvb2wgdmFsdWUpCi0gICAgICAgIDogbV9hcmd1bWVudHModmFsdWUpCi0g
ICAgewotICAgIH0KLQotICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAg
QXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViUGFnZQotfSAv
LyBuYW1lc3BhY2UgTWVzc2FnZXMKClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9XZWJLaXQv
U2NyaXB0cy93ZWJraXQvTWVzc2FnZXNTdXBlcmNsYXNzLWV4cGVjdGVkLmgKX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpE
ZWxldGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0xICswLDAgIyMKLW5hdGl2ZQpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21l
c3NhZ2VzLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVz
c2FnZXMucHkJKHJldmlzaW9uIDI2MDc2NCkKKysrIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJr
aXQvbWVzc2FnZXMucHkJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAgU1lOQ0hST05P
VVNfQVRUUklCVVRFID0gJ1N5bmNocm9ub3VzJwogQVNZTkNfQVRUUklCVVRFID0gJ0FzeW5jJwog
CiBfbGljZW5zZV9oZWFkZXIgPSAiIiIvKgotICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0xMzQsNyArMTM0LDcgQEAgZGVmIG1lc3NhZ2VfdG9fcmVwbHlfZm9yd2FyZF9k
ZWNsYXJhdGlvbgogICAgIHJldHVybiBzdXJyb3VuZF9pbl9jb25kaXRpb24oJycuam9pbihyZXN1
bHQpLCBtZXNzYWdlLmNvbmRpdGlvbikKIAogCi1kZWYgbWVzc2FnZV90b19zdHJ1Y3RfZGVjbGFy
YXRpb24obWVzc2FnZSk6CitkZWYgbWVzc2FnZV90b19zdHJ1Y3RfZGVjbGFyYXRpb24ocmVjZWl2
ZXIsIG1lc3NhZ2UpOgogICAgIHJlc3VsdCA9IFtdCiAgICAgZnVuY3Rpb25fcGFyYW1ldGVycyA9
IFsoZnVuY3Rpb25fcGFyYW1ldGVyX3R5cGUoeC50eXBlLCB4LmtpbmQpLCB4Lm5hbWUpIGZvciB4
IGluIG1lc3NhZ2UucGFyYW1ldGVyc10KIApAQCAtMTQyLDggKzE0Miw3IEBAIGRlZiBtZXNzYWdl
X3RvX3N0cnVjdF9kZWNsYXJhdGlvbihtZXNzYWcKICAgICByZXN1bHQuYXBwZW5kKCdwdWJsaWM6
XG4nKQogICAgIHJlc3VsdC5hcHBlbmQoJyAgICB0eXBlZGVmICVzIEFyZ3VtZW50cztcbicgJSBh
cmd1bWVudHNfdHlwZShtZXNzYWdlKSkKICAgICByZXN1bHQuYXBwZW5kKCdcbicpCi0gICAgcmVz
dWx0LmFwcGVuZCgnICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUo
KSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH1cbicpCi0gICAgcmVzdWx0LmFwcGVu
ZCgnICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpT
dHJpbmdSZWZlcmVuY2UoIiVzIik7IH1cbicgJSBtZXNzYWdlLm5hbWUpCisgICAgcmVzdWx0LmFw
cGVuZCgnICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1l
c3NhZ2VOYW1lOjolc18lczsgfVxuJyAlIChyZWNlaXZlci5uYW1lLCBtZXNzYWdlLm5hbWUpKQog
ICAgIHJlc3VsdC5hcHBlbmQoJyAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSAlcztcbicg
JSAoJ2ZhbHNlJywgJ3RydWUnKVttZXNzYWdlLnJlcGx5X3BhcmFtZXRlcnMgIT0gTm9uZSBhbmQg
bm90IG1lc3NhZ2UuaGFzX2F0dHJpYnV0ZShBU1lOQ19BVFRSSUJVVEUpXSkKICAgICByZXN1bHQu
YXBwZW5kKCdcbicpCiAgICAgaWYgbWVzc2FnZS5yZXBseV9wYXJhbWV0ZXJzICE9IE5vbmU6CkBA
IC0xNTMsNyArMTUyLDcgQEAgZGVmIG1lc3NhZ2VfdG9fc3RydWN0X2RlY2xhcmF0aW9uKG1lc3Nh
ZwogICAgICAgICAgICAgbW92ZV9wYXJhbWV0ZXJzID0gJywgJy5qb2luKFttb3ZlX3R5cGUoeC50
eXBlKSBmb3IgeCBpbiBtZXNzYWdlLnJlcGx5X3BhcmFtZXRlcnNdKQogICAgICAgICAgICAgcmVz
dWx0LmFwcGVuZCgnICAgIHN0YXRpYyB2b2lkIGNhbGxSZXBseShJUEM6OkRlY29kZXImLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCVzKT4mJik7XG4nICUgbW92ZV9wYXJhbWV0ZXJzKQogICAgICAg
ICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIHN0YXRpYyB2b2lkIGNhbmNlbFJlcGx5KENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoJXMpPiYmKTtcbicgJSBtb3ZlX3BhcmFtZXRlcnMpCi0gICAgICAgICAg
ICByZXN1bHQuYXBwZW5kKCcgICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIGFzeW5jTWVz
c2FnZVJlcGx5TmFtZSgpIHsgcmV0dXJuIHsgIiVzUmVwbHkiIH07IH1cbicgJSBtZXNzYWdlLm5h
bWUpCisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgc3RhdGljIElQQzo6TWVzc2FnZU5h
bWUgYXN5bmNNZXNzYWdlUmVwbHlOYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6JXNf
JXNSZXBseTsgfVxuJyAlIChyZWNlaXZlci5uYW1lLCBtZXNzYWdlLm5hbWUpKQogICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZCgnICAgIHVzaW5nIEFzeW5jUmVwbHkgPSAlc0FzeW5jUmVwbHk7XG4n
ICUgbWVzc2FnZS5uYW1lKQogICAgICAgICBlbGlmIG1lc3NhZ2UuaGFzX2F0dHJpYnV0ZShTWU5D
SFJPTk9VU19BVFRSSUJVVEUpOgogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIHVzaW5n
IERlbGF5ZWRSZXBseSA9ICVzRGVsYXllZFJlcGx5O1xuJyAlIG1lc3NhZ2UubmFtZSkKQEAgLTI3
Nyw4ICsyNzYsOSBAQCBkZWYgZm9yd2FyZF9kZWNsYXJhdGlvbnNfYW5kX2hlYWRlcnMocmVjCiAK
ICAgICBoZWFkZXJzID0gc2V0KFsKICAgICAgICAgJyJBcmd1bWVudENvZGVycy5oIicsCi0gICAg
ICAgICc8d3RmL0ZvcndhcmQuaD4nLAogICAgICAgICAnIkNvbm5lY3Rpb24uaCInLAorICAgICAg
ICAnIk1lc3NhZ2VOYW1lcy5oIicsCisgICAgICAgICc8d3RmL0ZvcndhcmQuaD4nLAogICAgICAg
ICAnPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPicsCiAgICAgICAgICciJXNNZXNzYWdlc1Jl
cGxpZXMuaCInICUgcmVjZWl2ZXIubmFtZSwKICAgICBdKQpAQCAtMzM1LDYgKzMzNSw3IEBAIGRl
ZiBmb3J3YXJkX2RlY2xhcmF0aW9uc19hbmRfaGVhZGVyc19mb3IKIAogICAgIGhlYWRlcnMgPSBz
ZXQoWwogICAgICAgICAnPHd0Zi9Gb3J3YXJkLmg+JywKKyAgICAgICAgJyJNZXNzYWdlTmFtZXMu
aCInLAogICAgIF0pCiAKICAgICBub25fdGVtcGxhdGVfd3RmX3R5cGVzID0gZnJvemVuc2V0KFsK
QEAgLTQ0MCwxMiArNDQxLDEyIEBAIGRlZiBnZW5lcmF0ZV9tZXNzYWdlc19oZWFkZXIocmVjZWl2
ZXIpOgogCiAgICAgcmVzdWx0LmFwcGVuZCgnbmFtZXNwYWNlIE1lc3NhZ2VzIHtcbm5hbWVzcGFj
ZSAlcyB7XG4nICUgcmVjZWl2ZXIubmFtZSkKICAgICByZXN1bHQuYXBwZW5kKCdcbicpCi0gICAg
cmVzdWx0LmFwcGVuZCgnc3RhdGljIGlubGluZSBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdl
UmVjZWl2ZXJOYW1lKClcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnc3RhdGljIGlubGluZSBJUEM6
OlJlY2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1lKClcbicpCiAgICAgcmVzdWx0LmFwcGVu
ZCgne1xuJykKLSAgICByZXN1bHQuYXBwZW5kKCcgICAgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJl
bmNlKCIlcyIpO1xuJyAlIHJlY2VpdmVyLm5hbWUpCisgICAgcmVzdWx0LmFwcGVuZCgnICAgIHJl
dHVybiBJUEM6OlJlY2VpdmVyTmFtZTo6JXM7XG4nICUgcmVjZWl2ZXIubmFtZSkKICAgICByZXN1
bHQuYXBwZW5kKCd9XG4nKQogICAgIHJlc3VsdC5hcHBlbmQoJ1xuJykKLSAgICByZXN1bHQuYXBw
ZW5kKCdcbicuam9pbihbbWVzc2FnZV90b19zdHJ1Y3RfZGVjbGFyYXRpb24oeCkgZm9yIHggaW4g
cmVjZWl2ZXIubWVzc2FnZXNdKSkKKyAgICByZXN1bHQuYXBwZW5kKCdcbicuam9pbihbbWVzc2Fn
ZV90b19zdHJ1Y3RfZGVjbGFyYXRpb24ocmVjZWl2ZXIsIHgpIGZvciB4IGluIHJlY2VpdmVyLm1l
c3NhZ2VzXSkpCiAgICAgcmVzdWx0LmFwcGVuZCgnXG4nKQogICAgIHJlc3VsdC5hcHBlbmQoJ30g
Ly8gbmFtZXNwYWNlICVzXG59IC8vIG5hbWVzcGFjZSBNZXNzYWdlc1xuJyAlIHJlY2VpdmVyLm5h
bWUpCiAKQEAgLTg0NywzICs4NDgsMTU4IEBAIGRlZiBnZW5lcmF0ZV9tZXNzYWdlX2hhbmRsZXIo
cmVjZWl2ZXIpOgogICAgICAgICByZXN1bHQuYXBwZW5kKCdcbiNlbmRpZiAvLyAlc1xuJyAlIHJl
Y2VpdmVyLmNvbmRpdGlvbikKIAogICAgIHJldHVybiAnJy5qb2luKHJlc3VsdCkKKworCitkZWYg
Z2VuZXJhdGVfbWVzc2FnZV9uYW1lc19oZWFkZXIocmVjZWl2ZXJzKToKKyAgICByZXN1bHQgPSBb
XQorICAgIHJlc3VsdC5hcHBlbmQoX2xpY2Vuc2VfaGVhZGVyKQorICAgIHJlc3VsdC5hcHBlbmQo
JyNwcmFnbWEgb25jZVxuJykKKyAgICByZXN1bHQuYXBwZW5kKCdcbicpCisgICAgcmVzdWx0LmFw
cGVuZCgnI2luY2x1ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+XG4nKQorICAgIHJlc3VsdC5hcHBlbmQo
J1xuJykKKyAgICByZXN1bHQuYXBwZW5kKCduYW1lc3BhY2UgSVBDIHtcbicpCisgICAgcmVzdWx0
LmFwcGVuZCgnXG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJ2VudW0gY2xhc3MgUmVjZWl2ZXJOYW1l
IDogdWludDhfdCB7JykKKworICAgIGVudW1fdmFsdWUgPSAxCisgICAgZmlyc3RfcmVjZWl2ZXIg
PSBUcnVlCisgICAgZm9yIHJlY2VpdmVyIGluIHJlY2VpdmVyczoKKyAgICAgICAgcmVzdWx0LmFw
cGVuZCgnXG4nKQorICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgJykKKyAgICAgICAgaWYgbm90
IGZpcnN0X3JlY2VpdmVyOgorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnLCAnKQorICAgICAg
ICBmaXJzdF9yZWNlaXZlciA9IEZhbHNlCisgICAgICAgIHJlc3VsdC5hcHBlbmQoJyVzID0gJWQn
ICUgKHJlY2VpdmVyLm5hbWUsIGVudW1fdmFsdWUpKQorICAgICAgICBlbnVtX3ZhbHVlID0gZW51
bV92YWx1ZSArIDEKKyAgICByZXN1bHQuYXBwZW5kKCdcbiAgICAsIElQQyA9ICVkJyAlIGVudW1f
dmFsdWUpCisgICAgZW51bV92YWx1ZSA9IGVudW1fdmFsdWUgKyAxCisgICAgcmVzdWx0LmFwcGVu
ZCgnXG4gICAgLCBBc3luY1JlcGx5ID0gJWQnICUgZW51bV92YWx1ZSkKKyAgICBlbnVtX3ZhbHVl
ID0gZW51bV92YWx1ZSArIDEKKyAgICByZXN1bHQuYXBwZW5kKCdcbiAgICAsIEludmFsaWQgPSAl
ZCcgJSBlbnVtX3ZhbHVlKQorICAgIHJlc3VsdC5hcHBlbmQoJ1xufTtcbicpCisgICAgcmVzdWx0
LmFwcGVuZCgnXG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJ2VudW0gY2xhc3MgTWVzc2FnZU5hbWUg
OiB1aW50MTZfdCB7JykKKworICAgIGVudW1fdmFsdWUgPSAxCisgICAgZmlyc3RfbWVzc2FnZSA9
IFRydWUKKyAgICBmb3IgcmVjZWl2ZXIgaW4gcmVjZWl2ZXJzOgorICAgICAgICBmb3IgbWVzc2Fn
ZSBpbiByZWNlaXZlci5tZXNzYWdlczoKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ1xuJykK
KyAgICAgICAgICAgIGlmIG1lc3NhZ2UuY29uZGl0aW9uOgorICAgICAgICAgICAgICAgIHJlc3Vs
dC5hcHBlbmQoJyNpZiAlc1xuJyAlIG1lc3NhZ2UuY29uZGl0aW9uKQorICAgICAgICAgICAgcmVz
dWx0LmFwcGVuZCgnICAgICcpCisgICAgICAgICAgICBpZiBub3QgZmlyc3RfbWVzc2FnZToKKyAg
ICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcsICcpCisgICAgICAgICAgICBmaXJzdF9tZXNz
YWdlID0gRmFsc2UKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyVzXyVzID0gJWQnICUgKHJl
Y2VpdmVyLm5hbWUsIG1lc3NhZ2UubmFtZSwgZW51bV92YWx1ZSkpCisgICAgICAgICAgICBlbnVt
X3ZhbHVlID0gZW51bV92YWx1ZSArIDEKKyAgICAgICAgICAgIGlmIG1lc3NhZ2UuaGFzX2F0dHJp
YnV0ZShBU1lOQ19BVFRSSUJVVEUpOgorICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ1xu
ICAgICwgJXNfJXNSZXBseSA9ICVkJyAlIChyZWNlaXZlci5uYW1lLCBtZXNzYWdlLm5hbWUsIGVu
dW1fdmFsdWUpKQorICAgICAgICAgICAgICAgIGVudW1fdmFsdWUgPSBlbnVtX3ZhbHVlICsgMQor
ICAgICAgICAgICAgaWYgbWVzc2FnZS5jb25kaXRpb246CisgICAgICAgICAgICAgICAgcmVzdWx0
LmFwcGVuZCgnXG4jZW5kaWYnKQorICAgIHJlc3VsdC5hcHBlbmQoJ1xuICAgICwgV3JhcHBlZEFz
eW5jTWVzc2FnZUZvclRlc3RpbmcgPSAlZCcgJSBlbnVtX3ZhbHVlKQorICAgIGVudW1fdmFsdWUg
PSBlbnVtX3ZhbHVlICsgMQorICAgIHJlc3VsdC5hcHBlbmQoJ1xuICAgICwgU3luY01lc3NhZ2VS
ZXBseSA9ICVkJyAlIGVudW1fdmFsdWUpCisgICAgZW51bV92YWx1ZSA9IGVudW1fdmFsdWUgKyAx
CisgICAgcmVzdWx0LmFwcGVuZCgnXG4gICAgLCBJbml0aWFsaXplQ29ubmVjdGlvbiA9ICVkJyAl
IGVudW1fdmFsdWUpCisgICAgcmVzdWx0LmFwcGVuZCgnXG59O1xuJykKKyAgICByZXN1bHQuYXBw
ZW5kKCdcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnaW5saW5lIFJlY2VpdmVyTmFtZSByZWNlaXZl
ck5hbWUoTWVzc2FnZU5hbWUgbWVzc2FnZU5hbWUpXG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJ3tc
bicpCisgICAgcmVzdWx0LmFwcGVuZCgnICAgIHN3aXRjaCAobWVzc2FnZU5hbWUpIHtcbicpCisg
ICAgZm9yIHJlY2VpdmVyIGluIHJlY2VpdmVyczoKKyAgICAgICAgZm9yIG1lc3NhZ2UgaW4gcmVj
ZWl2ZXIubWVzc2FnZXM6CisgICAgICAgICAgICBpZiBtZXNzYWdlLmNvbmRpdGlvbjoKKyAgICAg
ICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcjaWYgJXNcbicgJSBtZXNzYWdlLmNvbmRpdGlvbikK
KyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBjYXNlIE1lc3NhZ2VOYW1lOjolc18lczpc
bicgJSAocmVjZWl2ZXIubmFtZSwgbWVzc2FnZS5uYW1lKSkKKyAgICAgICAgICAgIGlmIG1lc3Nh
Z2UuY29uZGl0aW9uOgorICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyNlbmRpZlxuJykK
KyAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgICAgICByZXR1cm4gUmVjZWl2ZXJOYW1lOjolcztc
bicgJSByZWNlaXZlci5uYW1lKQorICAgIGZvciByZWNlaXZlciBpbiByZWNlaXZlcnM6CisgICAg
ICAgIGZvciBtZXNzYWdlIGluIHJlY2VpdmVyLm1lc3NhZ2VzOgorICAgICAgICAgICAgaWYgbWVz
c2FnZS5oYXNfYXR0cmlidXRlKEFTWU5DX0FUVFJJQlVURSk6CisgICAgICAgICAgICAgICAgaWYg
bWVzc2FnZS5jb25kaXRpb246CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyNp
ZiAlc1xuJyAlIG1lc3NhZ2UuY29uZGl0aW9uKQorICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBl
bmQoJyAgICBjYXNlIE1lc3NhZ2VOYW1lOjolc18lc1JlcGx5OlxuJyAlIChyZWNlaXZlci5uYW1l
LCBtZXNzYWdlLm5hbWUpKQorICAgICAgICAgICAgICAgIGlmIG1lc3NhZ2UuY29uZGl0aW9uOgor
ICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcjZW5kaWZcbicpCisgICAgcmVzdWx0
LmFwcGVuZCgnICAgICAgICByZXR1cm4gUmVjZWl2ZXJOYW1lOjpBc3luY1JlcGx5O1xuJykKKyAg
ICByZXN1bHQuYXBwZW5kKCcgICAgY2FzZSBNZXNzYWdlTmFtZTo6V3JhcHBlZEFzeW5jTWVzc2Fn
ZUZvclRlc3Rpbmc6XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJyAgICBjYXNlIE1lc3NhZ2VOYW1l
OjpTeW5jTWVzc2FnZVJlcGx5OlxuJykKKyAgICByZXN1bHQuYXBwZW5kKCcgICAgY2FzZSBNZXNz
YWdlTmFtZTo6SW5pdGlhbGl6ZUNvbm5lY3Rpb246XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJyAg
ICAgICAgcmV0dXJuIFJlY2VpdmVyTmFtZTo6SVBDO1xuJykKKyAgICByZXN1bHQuYXBwZW5kKCcg
ICAgfVxuJykKKyAgICByZXN1bHQuYXBwZW5kKCcgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7XG4n
KQorICAgIHJlc3VsdC5hcHBlbmQoJyAgICByZXR1cm4gUmVjZWl2ZXJOYW1lOjpJbnZhbGlkO1xu
JykKKyAgICByZXN1bHQuYXBwZW5kKCd9XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJ1xuJykKKyAg
ICByZXN1bHQuYXBwZW5kKCdjb25zdCBjaGFyKiBkZXNjcmlwdGlvbihNZXNzYWdlTmFtZSk7XG4n
KQorICAgIHJlc3VsdC5hcHBlbmQoJ1xuJykKKyAgICByZXN1bHQuYXBwZW5kKCd9IC8vIG5hbWVz
cGFjZSBJUENcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnXG4nKQorCisgICAgcmVzdWx0LmFwcGVu
ZCgnbmFtZXNwYWNlIFdURiB7XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJ1xuJykKKyAgICByZXN1
bHQuYXBwZW5kKCd0ZW1wbGF0ZTx0eXBlbmFtZSBFLCB0eXBlbmFtZSBULCBzdGQ6OmVuYWJsZV9p
Zl90PHN0ZDo6aXNfc2FtZTxFLCBJUEM6Ok1lc3NhZ2VOYW1lPjo6dmFsdWU+KiA9IG51bGxwdHI+
XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJ2NvbnN0ZXhwciBib29sIGlzVmFsaWRFbnVtKFQgbWVz
c2FnZU5hbWUpXG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJ3tcbicpCisgICAgZm9yIHJlY2VpdmVy
IGluIHJlY2VpdmVyczoKKyAgICAgICAgZm9yIG1lc3NhZ2UgaW4gcmVjZWl2ZXIubWVzc2FnZXM6
CisgICAgICAgICAgICBpZiBtZXNzYWdlLmNvbmRpdGlvbjoKKyAgICAgICAgICAgICAgICByZXN1
bHQuYXBwZW5kKCcjaWYgJXNcbicgJSBtZXNzYWdlLmNvbmRpdGlvbikKKyAgICAgICAgICAgIHJl
c3VsdC5hcHBlbmQoJyAgICBpZiAoc3RhdGljX2Nhc3Q8SVBDOjpNZXNzYWdlTmFtZT4obWVzc2Fn
ZU5hbWUpID09IElQQzo6TWVzc2FnZU5hbWU6OiVzXyVzKVxuJyAlIChyZWNlaXZlci5uYW1lLCBt
ZXNzYWdlLm5hbWUpKQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgICAgICByZXR1cm4g
dHJ1ZTtcbicpCisgICAgICAgICAgICBpZiBtZXNzYWdlLmhhc19hdHRyaWJ1dGUoQVNZTkNfQVRU
UklCVVRFKToKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgaWYgKHN0YXRpY19j
YXN0PElQQzo6TWVzc2FnZU5hbWU+KG1lc3NhZ2VOYW1lKSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjol
c18lc1JlcGx5KVxuJyAlIChyZWNlaXZlci5uYW1lLCBtZXNzYWdlLm5hbWUpKQorICAgICAgICAg
ICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICAgICAgcmV0dXJuIHRydWU7XG4nKQorICAgICAgICAg
ICAgaWYgbWVzc2FnZS5jb25kaXRpb246CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgn
I2VuZGlmXG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJyAgICBpZiAoc3RhdGljX2Nhc3Q8SVBDOjpN
ZXNzYWdlTmFtZT4obWVzc2FnZU5hbWUpID09IElQQzo6TWVzc2FnZU5hbWU6OldyYXBwZWRBc3lu
Y01lc3NhZ2VGb3JUZXN0aW5nKVxuJykKKyAgICByZXN1bHQuYXBwZW5kKCcgICAgICAgIHJldHVy
biB0cnVlO1xuJykKKyAgICByZXN1bHQuYXBwZW5kKCcgICAgaWYgKHN0YXRpY19jYXN0PElQQzo6
TWVzc2FnZU5hbWU+KG1lc3NhZ2VOYW1lKSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpTeW5jTWVzc2Fn
ZVJlcGx5KVxuJykKKyAgICByZXN1bHQuYXBwZW5kKCcgICAgICAgIHJldHVybiB0cnVlO1xuJykK
KyAgICByZXN1bHQuYXBwZW5kKCcgICAgaWYgKHN0YXRpY19jYXN0PElQQzo6TWVzc2FnZU5hbWU+
KG1lc3NhZ2VOYW1lKSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpJbml0aWFsaXplQ29ubmVjdGlvbilc
bicpCisgICAgcmVzdWx0LmFwcGVuZCgnICAgICAgICByZXR1cm4gdHJ1ZTtcbicpCisgICAgcmVz
dWx0LmFwcGVuZCgnICAgIHJldHVybiBmYWxzZTtcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnfTtc
bicpCisgICAgcmVzdWx0LmFwcGVuZCgnXG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJ30gLy8gbmFt
ZXNwYWNlIFdURlxuJykKKyAgICByZXR1cm4gJycuam9pbihyZXN1bHQpCisKKworZGVmIGdlbmVy
YXRlX21lc3NhZ2VfbmFtZXNfaW1wbGVtZW50YXRpb24ocmVjZWl2ZXJzKToKKyAgICByZXN1bHQg
PSBbXQorICAgIHJlc3VsdC5hcHBlbmQoX2xpY2Vuc2VfaGVhZGVyKQorICAgIHJlc3VsdC5hcHBl
bmQoJyNpbmNsdWRlICJjb25maWcuaCJcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnI2luY2x1ZGUg
Ik1lc3NhZ2VOYW1lcy5oIlxuJykKKyAgICByZXN1bHQuYXBwZW5kKCdcbicpCisgICAgcmVzdWx0
LmFwcGVuZCgnbmFtZXNwYWNlIElQQyB7XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJ1xuJykKKyAg
ICByZXN1bHQuYXBwZW5kKCdjb25zdCBjaGFyKiBkZXNjcmlwdGlvbihNZXNzYWdlTmFtZSBuYW1l
KVxuJykKKyAgICByZXN1bHQuYXBwZW5kKCd7XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJyAgICBz
d2l0Y2ggKG5hbWUpIHtcbicpCisgICAgZm9yIHJlY2VpdmVyIGluIHJlY2VpdmVyczoKKyAgICAg
ICAgZm9yIG1lc3NhZ2UgaW4gcmVjZWl2ZXIubWVzc2FnZXM6CisgICAgICAgICAgICBpZiBtZXNz
YWdlLmNvbmRpdGlvbjoKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcjaWYgJXNcbicg
JSBtZXNzYWdlLmNvbmRpdGlvbikKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBjYXNl
IE1lc3NhZ2VOYW1lOjolc18lczpcbicgJSAocmVjZWl2ZXIubmFtZSwgbWVzc2FnZS5uYW1lKSkK
KyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICAgICAgcmV0dXJuICIlczo6JXMiO1xuJyAl
IChyZWNlaXZlci5uYW1lLCBtZXNzYWdlLm5hbWUpKQorICAgICAgICAgICAgaWYgbWVzc2FnZS5o
YXNfYXR0cmlidXRlKEFTWU5DX0FUVFJJQlVURSk6CisgICAgICAgICAgICAgICAgcmVzdWx0LmFw
cGVuZCgnICAgIGNhc2UgTWVzc2FnZU5hbWU6OiVzXyVzUmVwbHk6XG4nICUgKHJlY2VpdmVyLm5h
bWUsIG1lc3NhZ2UubmFtZSkpCisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgICAg
ICByZXR1cm4gIiVzOjolc1JlcGx5IjtcbicgJSAocmVjZWl2ZXIubmFtZSwgbWVzc2FnZS5uYW1l
KSkKKyAgICAgICAgICAgIGlmIG1lc3NhZ2UuY29uZGl0aW9uOgorICAgICAgICAgICAgICAgIHJl
c3VsdC5hcHBlbmQoJyNlbmRpZlxuJykKKyAgICByZXN1bHQuYXBwZW5kKCcgICAgY2FzZSBNZXNz
YWdlTmFtZTo6V3JhcHBlZEFzeW5jTWVzc2FnZUZvclRlc3Rpbmc6XG4nKQorICAgIHJlc3VsdC5h
cHBlbmQoJyAgICAgICAgcmV0dXJuICJJUEM6OldyYXBwZWRBc3luY01lc3NhZ2VGb3JUZXN0aW5n
IjtcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnICAgIGNhc2UgTWVzc2FnZU5hbWU6OlN5bmNNZXNz
YWdlUmVwbHk6XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJyAgICAgICAgcmV0dXJuICJJUEM6OlN5
bmNNZXNzYWdlUmVwbHkiO1xuJykKKyAgICByZXN1bHQuYXBwZW5kKCcgICAgY2FzZSBNZXNzYWdl
TmFtZTo6SW5pdGlhbGl6ZUNvbm5lY3Rpb246XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJyAgICAg
ICAgcmV0dXJuICJJUEM6OkluaXRpYWxpemVDb25uZWN0aW9uIjtcbicpCisgICAgcmVzdWx0LmFw
cGVuZCgnICAgIH1cbicpCisgICAgcmVzdWx0LmFwcGVuZCgnICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpO1xuJykKKyAgICByZXN1bHQuYXBwZW5kKCcgICAgcmV0dXJuICI8aW52YWxpZCBtZXNzYWdl
IG5hbWU+IjtcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnfVxuJykKKyAgICByZXN1bHQuYXBwZW5k
KCdcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnfSAvLyBuYW1lc3BhY2UgSVBDXG4nKQorICAgIHJl
dHVybiAnJy5qb2luKHJlc3VsdCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQv
dGVzdC1sZWdhY3ktbWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TY3Jp
cHRzL3dlYmtpdC90ZXN0LWxlZ2FjeS1tZXNzYWdlcy5pbgkocmV2aXNpb24gMjYwNzY0KQorKysg
U291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0LWxlZ2FjeS1tZXNzYWdlcy5pbgkobm9u
ZXhpc3RlbnQpCkBAIC0xLDc3ICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBh
cmUgbWV0OgotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAotIyBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAotIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0jIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
Ci0jIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwKLSMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSMgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIKLSMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLQotI2lmIEVOQUJMRShXRUJLSVQyKQotI2lmIE5FU1RFRF9NQVNURVJfQ09ORElU
SU9OIHx8IE1BU1RFUl9PUiAmJiBNQVNURVJfQU5ECi0KLW1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVn
YWN5UmVjZWl2ZXIgewotICAgIExvYWRVUkwoU3RyaW5nIHVybCkKLSNpZiBFTkFCTEUoVE9VQ0hf
RVZFTlRTKQotICAgIExvYWRTb21ldGhpbmcoU3RyaW5nIHVybCkKLSNpZiBORVNURURfTUVTU0FH
RV9DT05ESVRJT04gfHwgU09NRV9PVEhFUl9NRVNTQUdFX0NPTkRJVElPTgotICAgIFRvdWNoRXZl
bnQoV2ViS2l0OjpXZWJUb3VjaEV2ZW50IGV2ZW50KQotI2VuZGlmCi0jaWYgTkVTVEVEX01FU1NB
R0VfQ09ORElUSU9OICYmIFNPTUVfT1RIRVJfTUVTU0FHRV9DT05ESVRJT04KLSAgICBBZGRFdmVu
dChXZWJLaXQ6OldlYlRvdWNoRXZlbnQgZXZlbnQpCi0jZW5kaWYKLSAgICBMb2FkU29tZXRoaW5n
RWxzZShTdHJpbmcgdXJsKQotI2VuZGlmCi0gICAgRGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKHVp
bnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IGxpc3RlbmVySUQsIHVpbnQzMl90IHBvbGljeUFjdGlv
bikKLSAgICBDbG9zZSgpCi0KLSAgICBQcmVmZXJlbmNlc0RpZENoYW5nZShXZWJLaXQ6OldlYlBy
ZWZlcmVuY2VzU3RvcmUgc3RvcmUpCi0gICAgU2VuZERvdWJsZUFuZEZsb2F0KGRvdWJsZSBkLCBm
bG9hdCBmKQotICAgIFNlbmRJbnRzKFZlY3Rvcjx1aW50NjRfdD4gaW50cywgVmVjdG9yPFZlY3Rv
cjx1aW50NjRfdD4+IGludFZlY3RvcnMpCi0KLSAgICBDcmVhdGVQbHVnaW4odWludDY0X3QgcGx1
Z2luSW5zdGFuY2VJRCwgV2ViS2l0OjpQbHVnaW46OlBhcmFtZXRlcnMgcGFyYW1ldGVycykgLT4g
KGJvb2wgcmVzdWx0KQotICAgIFJ1bkphdmFTY3JpcHRBbGVydCh1aW50NjRfdCBmcmFtZUlELCBT
dHJpbmcgbWVzc2FnZSkgLT4gKCkKLSAgICBHZXRQbHVnaW5zKGJvb2wgcmVmcmVzaCkgLT4gKFZl
Y3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiBwbHVnaW5zKQotICAgIEdldFBsdWdpblByb2Nlc3ND
b25uZWN0aW9uKFN0cmluZyBwbHVnaW5QYXRoKSAtPiAoSVBDOjpDb25uZWN0aW9uOjpIYW5kbGUg
Y29ubmVjdGlvbkhhbmRsZSkgU3luY2hyb25vdXMKLQotICAgIFRlc3RNdWx0aXBsZUF0dHJpYnV0
ZXMoKSAtPiAoKSBXYW50c0Nvbm5lY3Rpb24gU3luY2hyb25vdXMKLQotICAgIFRlc3RQYXJhbWV0
ZXJBdHRyaWJ1dGVzKFtBdHRyaWJ1dGVPbmUgQXR0cmlidXRlVHdvXSB1aW50NjRfdCBmb28sIGRv
dWJsZSBiYXIsIFtBdHRyaWJ1dGVUaHJlZV0gZG91YmxlIGJheikKLQotICAgIFRlbXBsYXRlVGVz
dChIYXNoTWFwPFN0cmluZywgc3RkOjpwYWlyPFN0cmluZywgdWludDY0X3Q+PiBhKQotCi0gICAg
U2V0VmlkZW9MYXllcklEKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRCB2
aWRlb0xheWVySUQpCi0KLSNpZiBQTEFURk9STShNQUMpCi0gICAgRGlkQ3JlYXRlV2ViUHJvY2Vz
c0Nvbm5lY3Rpb24oSVBDOjpNYWNoUG9ydCBjb25uZWN0aW9uSWRlbnRpZmllcikKLSNlbmRpZgot
Ci0jaWYgUExBVEZPUk0oTUFDKQotICAgICMgS2V5Ym9hcmQgc3VwcG9ydAotICAgIEludGVycHJl
dEtleUV2ZW50KHVpbnQzMl90IHR5cGUpIC0+IChWZWN0b3I8V2ViQ29yZTo6S2V5cHJlc3NDb21t
YW5kPiBjb21tYW5kTmFtZSkKLSNlbmRpZgotCi0jaWYgRU5BQkxFKERFUFJFQ0FURURfRkVBVFVS
RSkKLSAgICBEZXByZWNhdGVkT3BlcmF0aW9uKElQQzo6RHVtbXlUeXBlIGR1bW15KQotI2VuZGlm
Ci0KLSNpZiBFTkFCTEUoRVhQRVJJTUVOVEFMX0ZFQVRVUkUpCi0gICAgRXhwZXJpbWVudGFsT3Bl
cmF0aW9uKElQQzo6RHVtbXlUeXBlIGR1bW15KQotI2VuZGlmCi19Ci0KLSNlbmRpZgotI2VuZGlm
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3QtbGVnYWN5Lm1lc3NhZ2Vz
LmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdC1sZWdh
Y3kubWVzc2FnZXMuaW4JKHJldmlzaW9uIDI2MDc2NCkJKGZyb20gU291cmNlL1dlYktpdC9TY3Jp
cHRzL3dlYmtpdC90ZXN0LWxlZ2FjeS1tZXNzYWdlcy5pbjoyNjA3NjQpCisrKyBTb3VyY2UvV2Vi
S2l0L1NjcmlwdHMvd2Via2l0L3Rlc3QtbGVnYWN5Lm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsNzcgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0Ogor
IyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorIyBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KworI2lmIEVOQUJMRShXRUJLSVQyKQorI2lmIE5FU1RFRF9NQVNURVJfQ09ORElUSU9OIHx8IE1B
U1RFUl9PUiAmJiBNQVNURVJfQU5ECisKK21lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2
ZXIgeworICAgIExvYWRVUkwoU3RyaW5nIHVybCkKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQor
ICAgIExvYWRTb21ldGhpbmcoU3RyaW5nIHVybCkKKyNpZiBORVNURURfTUVTU0FHRV9DT05ESVRJ
T04gfHwgU09NRV9PVEhFUl9NRVNTQUdFX0NPTkRJVElPTgorICAgIFRvdWNoRXZlbnQoV2ViS2l0
OjpXZWJUb3VjaEV2ZW50IGV2ZW50KQorI2VuZGlmCisjaWYgTkVTVEVEX01FU1NBR0VfQ09ORElU
SU9OICYmIFNPTUVfT1RIRVJfTUVTU0FHRV9DT05ESVRJT04KKyAgICBBZGRFdmVudChXZWJLaXQ6
OldlYlRvdWNoRXZlbnQgZXZlbnQpCisjZW5kaWYKKyAgICBMb2FkU29tZXRoaW5nRWxzZShTdHJp
bmcgdXJsKQorI2VuZGlmCisgICAgRGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKHVpbnQ2NF90IGZy
YW1lSUQsIHVpbnQ2NF90IGxpc3RlbmVySUQsIHVpbnQzMl90IHBvbGljeUFjdGlvbikKKyAgICBD
bG9zZSgpCisKKyAgICBQcmVmZXJlbmNlc0RpZENoYW5nZShXZWJLaXQ6OldlYlByZWZlcmVuY2Vz
U3RvcmUgc3RvcmUpCisgICAgU2VuZERvdWJsZUFuZEZsb2F0KGRvdWJsZSBkLCBmbG9hdCBmKQor
ICAgIFNlbmRJbnRzKFZlY3Rvcjx1aW50NjRfdD4gaW50cywgVmVjdG9yPFZlY3Rvcjx1aW50NjRf
dD4+IGludFZlY3RvcnMpCisKKyAgICBDcmVhdGVQbHVnaW4odWludDY0X3QgcGx1Z2luSW5zdGFu
Y2VJRCwgV2ViS2l0OjpQbHVnaW46OlBhcmFtZXRlcnMgcGFyYW1ldGVycykgLT4gKGJvb2wgcmVz
dWx0KQorICAgIFJ1bkphdmFTY3JpcHRBbGVydCh1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgbWVz
c2FnZSkgLT4gKCkKKyAgICBHZXRQbHVnaW5zKGJvb2wgcmVmcmVzaCkgLT4gKFZlY3RvcjxXZWJD
b3JlOjpQbHVnaW5JbmZvPiBwbHVnaW5zKQorICAgIEdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9u
KFN0cmluZyBwbHVnaW5QYXRoKSAtPiAoSVBDOjpDb25uZWN0aW9uOjpIYW5kbGUgY29ubmVjdGlv
bkhhbmRsZSkgU3luY2hyb25vdXMKKworICAgIFRlc3RNdWx0aXBsZUF0dHJpYnV0ZXMoKSAtPiAo
KSBXYW50c0Nvbm5lY3Rpb24gU3luY2hyb25vdXMKKworICAgIFRlc3RQYXJhbWV0ZXJBdHRyaWJ1
dGVzKFtBdHRyaWJ1dGVPbmUgQXR0cmlidXRlVHdvXSB1aW50NjRfdCBmb28sIGRvdWJsZSBiYXIs
IFtBdHRyaWJ1dGVUaHJlZV0gZG91YmxlIGJheikKKworICAgIFRlbXBsYXRlVGVzdChIYXNoTWFw
PFN0cmluZywgc3RkOjpwYWlyPFN0cmluZywgdWludDY0X3Q+PiBhKQorCisgICAgU2V0VmlkZW9M
YXllcklEKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRCB2aWRlb0xheWVy
SUQpCisKKyNpZiBQTEFURk9STShNQUMpCisgICAgRGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rp
b24oSVBDOjpNYWNoUG9ydCBjb25uZWN0aW9uSWRlbnRpZmllcikKKyNlbmRpZgorCisjaWYgUExB
VEZPUk0oTUFDKQorICAgICMgS2V5Ym9hcmQgc3VwcG9ydAorICAgIEludGVycHJldEtleUV2ZW50
KHVpbnQzMl90IHR5cGUpIC0+IChWZWN0b3I8V2ViQ29yZTo6S2V5cHJlc3NDb21tYW5kPiBjb21t
YW5kTmFtZSkKKyNlbmRpZgorCisjaWYgRU5BQkxFKERFUFJFQ0FURURfRkVBVFVSRSkKKyAgICBE
ZXByZWNhdGVkT3BlcmF0aW9uKElQQzo6RHVtbXlUeXBlIGR1bW15KQorI2VuZGlmCisKKyNpZiBF
TkFCTEUoRVhQRVJJTUVOVEFMX0ZFQVRVUkUpCisgICAgRXhwZXJpbWVudGFsT3BlcmF0aW9uKElQ
Qzo6RHVtbXlUeXBlIGR1bW15KQorI2VuZGlmCit9CisKKyNlbmRpZgorI2VuZGlmCkluZGV4OiBT
b3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3QtbGVnYWN5TWVzc2FnZVJlY2VpdmVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3QtbGVnYWN5
TWVzc2FnZVJlY2VpdmVyLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1Njcmlw
dHMvd2Via2l0L3Rlc3QtbGVnYWN5TWVzc2FnZVJlY2VpdmVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDIwMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisg
KiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KworI2lmIChFTkFCTEUoV0VCS0lUMikgJiYgKE5FU1RFRF9NQVNURVJfQ09ORElUSU9OIHx8IE1B
U1RFUl9PUiAmJiBNQVNURVJfQU5EKSkKKworI2luY2x1ZGUgIldlYlBhZ2UuaCIKKworI2luY2x1
ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUg
IkRlY29kZXIuaCIKKyNpZiBFTkFCTEUoREVQUkVDQVRFRF9GRUFUVVJFKSB8fCBFTkFCTEUoRVhQ
RVJJTUVOVEFMX0ZFQVRVUkUpCisjaW5jbHVkZSAiRHVtbXlUeXBlLmgiCisjZW5kaWYKKyNpbmNs
dWRlICJIYW5kbGVNZXNzYWdlLmgiCisjaWYgUExBVEZPUk0oTUFDKQorI2luY2x1ZGUgIk1hY2hQ
b3J0LmgiCisjZW5kaWYKKyNpbmNsdWRlICJQbHVnaW4uaCIKKyNpbmNsdWRlICJXZWJDb3JlQXJn
dW1lbnRDb2RlcnMuaCIKKyNpZiAoRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgKE5FU1RFRF9NRVNT
QUdFX0NPTkRJVElPTiAmJiBTT01FX09USEVSX01FU1NBR0VfQ09ORElUSU9OKSkgfHwgKEVOQUJM
RShUT1VDSF9FVkVOVFMpICYmIChORVNURURfTUVTU0FHRV9DT05ESVRJT04gfHwgU09NRV9PVEhF
Ul9NRVNTQUdFX0NPTkRJVElPTikpCisjaW5jbHVkZSAiV2ViRXZlbnQuaCIKKyNlbmRpZgorI2lu
Y2x1ZGUgIldlYlBhZ2VNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlByZWZlcmVuY2VzU3RvcmUu
aCIKKyNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXIuaD4KKyNpZiBQTEFURk9STShNQUMp
CisjaW5jbHVkZSA8V2ViQ29yZS9LZXlib2FyZEV2ZW50Lmg+CisjZW5kaWYKKyNpbmNsdWRlIDxX
ZWJDb3JlL1BsdWdpbkRhdGEuaD4KKyNpbmNsdWRlIDx1dGlsaXR5PgorI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgorCituYW1lc3BhY2UgTWVzc2FnZXMgeworCituYW1lc3BhY2UgV2ViUGFnZSB7
CisKK3ZvaWQgR2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OnNlbmQoc3RkOjp1bmlxdWVfcHRy
PElQQzo6RW5jb2Rlcj4mJiBlbmNvZGVyLCBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNv
bnN0IElQQzo6Q29ubmVjdGlvbjo6SGFuZGxlJiBjb25uZWN0aW9uSGFuZGxlKQoreworICAgICpl
bmNvZGVyIDw8IGNvbm5lY3Rpb25IYW5kbGU7CisgICAgY29ubmVjdGlvbi5zZW5kU3luY1JlcGx5
KFdURk1vdmUoZW5jb2RlcikpOworfQorCit2b2lkIFRlc3RNdWx0aXBsZUF0dHJpYnV0ZXM6OnNl
bmQoc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mJiBlbmNvZGVyLCBJUEM6OkNvbm5lY3Rp
b24mIGNvbm5lY3Rpb24pCit7CisgICAgY29ubmVjdGlvbi5zZW5kU3luY1JlcGx5KFdURk1vdmUo
ZW5jb2RlcikpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJQYWdlCisKK30gLy8gbmFtZXNwYWNl
IE1lc3NhZ2VzCisKK25hbWVzcGFjZSBXZWJLaXQgeworCit2b2lkIFdlYlBhZ2U6OmRpZFJlY2Vp
dmVXZWJQYWdlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2Rl
ciYgZGVjb2RlcikKK3sKKyAgICBhdXRvIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKTsK
KyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2Fk
VVJMOjpuYW1lKCkpIHsKKyAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQ
YWdlOjpMb2FkVVJMPihkZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6bG9hZFVSTCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAgICBpZiAoZGVjb2Rl
ci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkU29tZXRoaW5nOjpuYW1l
KCkpIHsKKyAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2Fk
U29tZXRoaW5nPihkZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6bG9hZFNvbWV0aGluZyk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKyNpZiAoRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYg
KE5FU1RFRF9NRVNTQUdFX0NPTkRJVElPTiB8fCBTT01FX09USEVSX01FU1NBR0VfQ09ORElUSU9O
KSkKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpU
b3VjaEV2ZW50OjpuYW1lKCkpIHsKKyAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2Vz
OjpXZWJQYWdlOjpUb3VjaEV2ZW50PihkZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6dG91Y2hFdmVu
dCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKyNpZiAoRU5BQkxFKFRPVUNIX0VW
RU5UUykgJiYgKE5FU1RFRF9NRVNTQUdFX0NPTkRJVElPTiAmJiBTT01FX09USEVSX01FU1NBR0Vf
Q09ORElUSU9OKSkKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpX
ZWJQYWdlOjpBZGRFdmVudDo6bmFtZSgpKSB7CisgICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxN
ZXNzYWdlczo6V2ViUGFnZTo6QWRkRXZlbnQ+KGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjphZGRF
dmVudCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKyNpZiBFTkFCTEUoVE9VQ0hf
RVZFTlRTKQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBh
Z2U6OkxvYWRTb21ldGhpbmdFbHNlOjpuYW1lKCkpIHsKKyAgICAgICAgSVBDOjpoYW5kbGVNZXNz
YWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkU29tZXRoaW5nRWxzZT4oZGVjb2RlciwgdGhpcywg
JldlYlBhZ2U6OmxvYWRTb21ldGhpbmdFbHNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNl
bmRpZgorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6
OkRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbjo6bmFtZSgpKSB7CisgICAgICAgIElQQzo6aGFuZGxl
TWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uPihkZWNv
ZGVyLCB0aGlzLCAmV2ViUGFnZTo6ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2Vz
OjpXZWJQYWdlOjpDbG9zZTo6bmFtZSgpKSB7CisgICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxN
ZXNzYWdlczo6V2ViUGFnZTo6Q2xvc2U+KGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjpjbG9zZSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9
PSBNZXNzYWdlczo6V2ViUGFnZTo6UHJlZmVyZW5jZXNEaWRDaGFuZ2U6Om5hbWUoKSkgeworICAg
ICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OlByZWZlcmVuY2VzRGlk
Q2hhbmdlPihkZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6cHJlZmVyZW5jZXNEaWRDaGFuZ2UpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0g
TWVzc2FnZXM6OldlYlBhZ2U6OlNlbmREb3VibGVBbmRGbG9hdDo6bmFtZSgpKSB7CisgICAgICAg
IElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6U2VuZERvdWJsZUFuZEZsb2F0
PihkZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6c2VuZERvdWJsZUFuZEZsb2F0KTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2Vz
OjpXZWJQYWdlOjpTZW5kSW50czo6bmFtZSgpKSB7CisgICAgICAgIElQQzo6aGFuZGxlTWVzc2Fn
ZTxNZXNzYWdlczo6V2ViUGFnZTo6U2VuZEludHM+KGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjpz
ZW5kSW50cyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKGRlY29kZXIubWVzc2Fn
ZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6VGVzdFBhcmFtZXRlckF0dHJpYnV0ZXM6Om5h
bWUoKSkgeworICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OlRl
c3RQYXJhbWV0ZXJBdHRyaWJ1dGVzPihkZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6dGVzdFBhcmFt
ZXRlckF0dHJpYnV0ZXMpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChkZWNvZGVy
Lm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OlRlbXBsYXRlVGVzdDo6bmFtZSgp
KSB7CisgICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6VGVtcGxh
dGVUZXN0PihkZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6dGVtcGxhdGVUZXN0KTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2Vz
OjpXZWJQYWdlOjpTZXRWaWRlb0xheWVySUQ6Om5hbWUoKSkgeworICAgICAgICBJUEM6OmhhbmRs
ZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OlNldFZpZGVvTGF5ZXJJRD4oZGVjb2RlciwgdGhp
cywgJldlYlBhZ2U6OnNldFZpZGVvTGF5ZXJJRCk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisj
aWYgUExBVEZPUk0oTUFDKQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2Fn
ZXM6OldlYlBhZ2U6OkRpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uOjpuYW1lKCkpIHsKKyAg
ICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRDcmVhdGVXZWJQ
cm9jZXNzQ29ubmVjdGlvbj4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OmRpZENyZWF0ZVdlYlBy
b2Nlc3NDb25uZWN0aW9uKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorI2lmIEVO
QUJMRShERVBSRUNBVEVEX0ZFQVRVUkUpCisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9
PSBNZXNzYWdlczo6V2ViUGFnZTo6RGVwcmVjYXRlZE9wZXJhdGlvbjo6bmFtZSgpKSB7CisgICAg
ICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6RGVwcmVjYXRlZE9wZXJh
dGlvbj4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OmRlcHJlY2F0ZWRPcGVyYXRpb24pOworICAg
ICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisjaWYgRU5BQkxFKEVYUEVSSU1FTlRBTF9GRUFU
VVJFKQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6
OkV4cGVyaW1lbnRhbE9wZXJhdGlvbjo6bmFtZSgpKSB7CisgICAgICAgIElQQzo6aGFuZGxlTWVz
c2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6RXhwZXJpbWVudGFsT3BlcmF0aW9uPihkZWNvZGVyLCB0
aGlzLCAmV2ViUGFnZTo6ZXhwZXJpbWVudGFsT3BlcmF0aW9uKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKyNlbmRpZgorICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsKKyAgICBVTlVTRURf
UEFSQU0oZGVjb2Rlcik7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3ZvaWQgV2Vi
UGFnZTo6ZGlkUmVjZWl2ZVN5bmNXZWJQYWdlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5l
Y3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2Rlciwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rl
cj4mIHJlcGx5RW5jb2RlcikKK3sKKyAgICBhdXRvIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKTsKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdl
OjpDcmVhdGVQbHVnaW46Om5hbWUoKSkgeworICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVz
c2FnZXM6OldlYlBhZ2U6OkNyZWF0ZVBsdWdpbj4oZGVjb2RlciwgKnJlcGx5RW5jb2RlciwgdGhp
cywgJldlYlBhZ2U6OmNyZWF0ZVBsdWdpbik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAg
aWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6UnVuSmF2YVNj
cmlwdEFsZXJ0OjpuYW1lKCkpIHsKKyAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2Vz
OjpXZWJQYWdlOjpSdW5KYXZhU2NyaXB0QWxlcnQ+KGRlY29kZXIsICpyZXBseUVuY29kZXIsIHRo
aXMsICZXZWJQYWdlOjpydW5KYXZhU2NyaXB0QWxlcnQpOworICAgICAgICByZXR1cm47CisgICAg
fQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6Okdl
dFBsdWdpbnM6Om5hbWUoKSkgeworICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6
OldlYlBhZ2U6OkdldFBsdWdpbnM+KGRlY29kZXIsICpyZXBseUVuY29kZXIsIHRoaXMsICZXZWJQ
YWdlOjpnZXRQbHVnaW5zKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoZGVjb2Rl
ci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRQbHVnaW5Qcm9jZXNzQ29u
bmVjdGlvbjo6bmFtZSgpKSB7CisgICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZVN5bmNocm9ub3Vz
PE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbj4oY29ubmVjdGlv
biwgZGVjb2RlciwgcmVwbHlFbmNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6Z2V0UGx1Z2luUHJvY2Vz
c0Nvbm5lY3Rpb24pOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChkZWNvZGVyLm1l
c3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RNdWx0aXBsZUF0dHJpYnV0ZXM6
Om5hbWUoKSkgeworICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2VTeW5jaHJvbm91c1dhbnRzQ29u
bmVjdGlvbjxNZXNzYWdlczo6V2ViUGFnZTo6VGVzdE11bHRpcGxlQXR0cmlidXRlcz4oY29ubmVj
dGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6dGVzdE11bHRpcGxl
QXR0cmlidXRlcyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjaWYgUExBVEZPUk0oTUFDKQor
ICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OkludGVy
cHJldEtleUV2ZW50OjpuYW1lKCkpIHsKKyAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3Nh
Z2VzOjpXZWJQYWdlOjpJbnRlcnByZXRLZXlFdmVudD4oZGVjb2RlciwgKnJlcGx5RW5jb2Rlciwg
dGhpcywgJldlYlBhZ2U6OmludGVycHJldEtleUV2ZW50KTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKyNlbmRpZgorICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsKKyAgICBVTlVTRURfUEFS
QU0oZGVjb2Rlcik7CisgICAgVU5VU0VEX1BBUkFNKHJlcGx5RW5jb2Rlcik7CisgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisKKyNlbmRpZiAv
LyAoRU5BQkxFKFdFQktJVDIpICYmIChORVNURURfTUFTVEVSX0NPTkRJVElPTiB8fCBNQVNURVJf
T1IgJiYgTUFTVEVSX0FORCkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rl
c3QtbGVnYWN5TWVzc2FnZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMv
d2Via2l0L3Rlc3QtbGVnYWN5TWVzc2FnZXMuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2Vi
S2l0L1NjcmlwdHMvd2Via2l0L3Rlc3QtbGVnYWN5TWVzc2FnZXMuaAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDU0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisg
KiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYg
KEVOQUJMRShXRUJLSVQyKSAmJiAoTkVTVEVEX01BU1RFUl9DT05ESVRJT04gfHwgTUFTVEVSX09S
ICYmIE1BU1RFUl9BTkQpKQorCisjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRl
ICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiTWVzc2FnZU5hbWVzLmgiCisjaW5jbHVkZSAiUGx1
Z2luLmgiCisjaW5jbHVkZSAiV2ViUGFnZU1lc3NhZ2VzUmVwbGllcy5oIgorI2luY2x1ZGUgPFdl
YkNvcmUvR3JhcGhpY3NMYXllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvS2V5Ym9hcmRFdmVudC5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvUGx1Z2luRGF0YS5oPgorI2luY2x1ZGUgPHV0aWxpdHk+Cisj
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1
ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
KyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIElQQyB7CitjbGFz
cyBEdW1teVR5cGU7CitjbGFzcyBNYWNoUG9ydDsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7Citj
bGFzcyBXZWJQcmVmZXJlbmNlc1N0b3JlOworY2xhc3MgV2ViVG91Y2hFdmVudDsKK30KKworbmFt
ZXNwYWNlIE1lc3NhZ2VzIHsKK25hbWVzcGFjZSBXZWJQYWdlIHsKKworc3RhdGljIGlubGluZSBJ
UEM6OlJlY2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1lKCkKK3sKKyAgICByZXR1cm4gSVBD
OjpSZWNlaXZlck5hbWU6OldlYlBhZ2U7Cit9CisKK2NsYXNzIExvYWRVUkwgeworcHVibGljOgor
ICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBTdHJpbmcmPiBBcmd1bWVudHM7CisKKyAgICBz
dGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6
V2ViUGFnZV9Mb2FkVVJMOyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7
CisKKyAgICBleHBsaWNpdCBMb2FkVVJMKGNvbnN0IFN0cmluZyYgdXJsKQorICAgICAgICA6IG1f
YXJndW1lbnRzKHVybCkKKyAgICB7CisgICAgfQorCisgICAgY29uc3QgQXJndW1lbnRzJiBhcmd1
bWVudHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOworICAgIH0K
KworcHJpdmF0ZToKKyAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Cit9OworCisjaWYgRU5BQkxF
KFRPVUNIX0VWRU5UUykKK2NsYXNzIExvYWRTb21ldGhpbmcgeworcHVibGljOgorICAgIHR5cGVk
ZWYgc3RkOjp0dXBsZTxjb25zdCBTdHJpbmcmPiBBcmd1bWVudHM7CisKKyAgICBzdGF0aWMgSVBD
OjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9M
b2FkU29tZXRoaW5nOyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7CisK
KyAgICBleHBsaWNpdCBMb2FkU29tZXRoaW5nKGNvbnN0IFN0cmluZyYgdXJsKQorICAgICAgICA6
IG1fYXJndW1lbnRzKHVybCkKKyAgICB7CisgICAgfQorCisgICAgY29uc3QgQXJndW1lbnRzJiBh
cmd1bWVudHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOworICAg
IH0KKworcHJpdmF0ZToKKyAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Cit9OworI2VuZGlmCisK
KyNpZiAoRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgKE5FU1RFRF9NRVNTQUdFX0NPTkRJVElPTiB8
fCBTT01FX09USEVSX01FU1NBR0VfQ09ORElUSU9OKSkKK2NsYXNzIFRvdWNoRXZlbnQgeworcHVi
bGljOgorICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBXZWJLaXQ6OldlYlRvdWNoRXZlbnQm
PiBBcmd1bWVudHM7CisKKyAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1
cm4gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9Ub3VjaEV2ZW50OyB9CisgICAgc3RhdGljIGNv
bnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7CisKKyAgICBleHBsaWNpdCBUb3VjaEV2ZW50KGNvbnN0
IFdlYktpdDo6V2ViVG91Y2hFdmVudCYgZXZlbnQpCisgICAgICAgIDogbV9hcmd1bWVudHMoZXZl
bnQpCisgICAgeworICAgIH0KKworICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29u
c3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKKyAgICB9CisKK3ByaXZhdGU6
CisgICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOworfTsKKyNlbmRpZgorCisjaWYgKEVOQUJMRShU
T1VDSF9FVkVOVFMpICYmIChORVNURURfTUVTU0FHRV9DT05ESVRJT04gJiYgU09NRV9PVEhFUl9N
RVNTQUdFX0NPTkRJVElPTikpCitjbGFzcyBBZGRFdmVudCB7CitwdWJsaWM6CisgICAgdHlwZWRl
ZiBzdGQ6OnR1cGxlPGNvbnN0IFdlYktpdDo6V2ViVG91Y2hFdmVudCY+IEFyZ3VtZW50czsKKwor
ICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VO
YW1lOjpXZWJQYWdlX0FkZEV2ZW50OyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0g
ZmFsc2U7CisKKyAgICBleHBsaWNpdCBBZGRFdmVudChjb25zdCBXZWJLaXQ6OldlYlRvdWNoRXZl
bnQmIGV2ZW50KQorICAgICAgICA6IG1fYXJndW1lbnRzKGV2ZW50KQorICAgIHsKKyAgICB9CisK
KyAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0CisgICAgeworICAgICAgICBy
ZXR1cm4gbV9hcmd1bWVudHM7CisgICAgfQorCitwcml2YXRlOgorICAgIEFyZ3VtZW50cyBtX2Fy
Z3VtZW50czsKK307CisjZW5kaWYKKworI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCitjbGFzcyBM
b2FkU29tZXRoaW5nRWxzZSB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGNvbnN0
IFN0cmluZyY+IEFyZ3VtZW50czsKKworICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUo
KSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX0xvYWRTb21ldGhpbmdFbHNlOyB9
CisgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7CisKKyAgICBleHBsaWNpdCBM
b2FkU29tZXRoaW5nRWxzZShjb25zdCBTdHJpbmcmIHVybCkKKyAgICAgICAgOiBtX2FyZ3VtZW50
cyh1cmwpCisgICAgeworICAgIH0KKworICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkg
Y29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKKyAgICB9CisKK3ByaXZh
dGU6CisgICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOworfTsKKyNlbmRpZgorCitjbGFzcyBEaWRS
ZWNlaXZlUG9saWN5RGVjaXNpb24geworcHVibGljOgorICAgIHR5cGVkZWYgc3RkOjp0dXBsZTx1
aW50NjRfdCwgdWludDY0X3QsIHVpbnQzMl90PiBBcmd1bWVudHM7CisKKyAgICBzdGF0aWMgSVBD
OjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9E
aWRSZWNlaXZlUG9saWN5RGVjaXNpb247IH0KKyAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMg
PSBmYWxzZTsKKworICAgIERpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbih1aW50NjRfdCBmcmFtZUlE
LCB1aW50NjRfdCBsaXN0ZW5lcklELCB1aW50MzJfdCBwb2xpY3lBY3Rpb24pCisgICAgICAgIDog
bV9hcmd1bWVudHMoZnJhbWVJRCwgbGlzdGVuZXJJRCwgcG9saWN5QWN0aW9uKQorICAgIHsKKyAg
ICB9CisKKyAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0CisgICAgeworICAg
ICAgICByZXR1cm4gbV9hcmd1bWVudHM7CisgICAgfQorCitwcml2YXRlOgorICAgIEFyZ3VtZW50
cyBtX2FyZ3VtZW50czsKK307CisKK2NsYXNzIENsb3NlIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVm
IHN0ZDo6dHVwbGU8PiBBcmd1bWVudHM7CisKKyAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBu
YW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9DbG9zZTsgfQorICAgIHN0
YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOworCisgICAgY29uc3QgQXJndW1lbnRzJiBh
cmd1bWVudHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOworICAg
IH0KKworcHJpdmF0ZToKKyAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Cit9OworCitjbGFzcyBQ
cmVmZXJlbmNlc0RpZENoYW5nZSB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGNv
bnN0IFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZSY+IEFyZ3VtZW50czsKKworICAgIHN0YXRp
YyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQ
YWdlX1ByZWZlcmVuY2VzRGlkQ2hhbmdlOyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5j
ID0gZmFsc2U7CisKKyAgICBleHBsaWNpdCBQcmVmZXJlbmNlc0RpZENoYW5nZShjb25zdCBXZWJL
aXQ6OldlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlKQorICAgICAgICA6IG1fYXJndW1lbnRzKHN0
b3JlKQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNv
bnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7CisgICAgfQorCitwcml2YXRl
OgorICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKK307CisKK2NsYXNzIFNlbmREb3VibGVBbmRG
bG9hdCB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGRvdWJsZSwgZmxvYXQ+IEFy
Z3VtZW50czsKKworICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJ
UEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX1NlbmREb3VibGVBbmRGbG9hdDsgfQorICAgIHN0YXRp
YyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOworCisgICAgU2VuZERvdWJsZUFuZEZsb2F0KGRv
dWJsZSBkLCBmbG9hdCBmKQorICAgICAgICA6IG1fYXJndW1lbnRzKGQsIGYpCisgICAgeworICAg
IH0KKworICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKKyAgICB7CisgICAg
ICAgIHJldHVybiBtX2FyZ3VtZW50czsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQXJndW1lbnRz
IG1fYXJndW1lbnRzOworfTsKKworY2xhc3MgU2VuZEludHMgeworcHVibGljOgorICAgIHR5cGVk
ZWYgc3RkOjp0dXBsZTxjb25zdCBWZWN0b3I8dWludDY0X3Q+JiwgY29uc3QgVmVjdG9yPFZlY3Rv
cjx1aW50NjRfdD4+Jj4gQXJndW1lbnRzOworCisgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUg
bmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfU2VuZEludHM7IH0KKyAg
ICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKKworICAgIFNlbmRJbnRzKGNvbnN0
IFZlY3Rvcjx1aW50NjRfdD4mIGludHMsIGNvbnN0IFZlY3RvcjxWZWN0b3I8dWludDY0X3Q+PiYg
aW50VmVjdG9ycykKKyAgICAgICAgOiBtX2FyZ3VtZW50cyhpbnRzLCBpbnRWZWN0b3JzKQorICAg
IHsKKyAgICB9CisKKyAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0CisgICAg
eworICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7CisgICAgfQorCitwcml2YXRlOgorICAgIEFy
Z3VtZW50cyBtX2FyZ3VtZW50czsKK307CisKK2NsYXNzIENyZWF0ZVBsdWdpbiB7CitwdWJsaWM6
CisgICAgdHlwZWRlZiBzdGQ6OnR1cGxlPHVpbnQ2NF90LCBjb25zdCBXZWJLaXQ6OlBsdWdpbjo6
UGFyYW1ldGVycyY+IEFyZ3VtZW50czsKKworICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5h
bWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX0NyZWF0ZVBsdWdpbjsgfQor
ICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IHRydWU7CisKKyAgICB1c2luZyBSZXBseSA9
IHN0ZDo6dHVwbGU8Ym9vbCY+OworICAgIHVzaW5nIFJlcGx5QXJndW1lbnRzID0gc3RkOjp0dXBs
ZTxib29sPjsKKyAgICBDcmVhdGVQbHVnaW4odWludDY0X3QgcGx1Z2luSW5zdGFuY2VJRCwgY29u
c3QgV2ViS2l0OjpQbHVnaW46OlBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCisgICAgICAgIDogbV9h
cmd1bWVudHMocGx1Z2luSW5zdGFuY2VJRCwgcGFyYW1ldGVycykKKyAgICB7CisgICAgfQorCisg
ICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0
dXJuIG1fYXJndW1lbnRzOworICAgIH0KKworcHJpdmF0ZToKKyAgICBBcmd1bWVudHMgbV9hcmd1
bWVudHM7Cit9OworCitjbGFzcyBSdW5KYXZhU2NyaXB0QWxlcnQgeworcHVibGljOgorICAgIHR5
cGVkZWYgc3RkOjp0dXBsZTx1aW50NjRfdCwgY29uc3QgU3RyaW5nJj4gQXJndW1lbnRzOworCisg
ICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5h
bWU6OldlYlBhZ2VfUnVuSmF2YVNjcmlwdEFsZXJ0OyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wg
aXNTeW5jID0gdHJ1ZTsKKworICAgIHVzaW5nIFJlcGx5ID0gc3RkOjp0dXBsZTw+OworICAgIHVz
aW5nIFJlcGx5QXJndW1lbnRzID0gc3RkOjp0dXBsZTw+OworICAgIFJ1bkphdmFTY3JpcHRBbGVy
dCh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCisgICAgICAgIDogbV9h
cmd1bWVudHMoZnJhbWVJRCwgbWVzc2FnZSkKKyAgICB7CisgICAgfQorCisgICAgY29uc3QgQXJn
dW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYXJndW1l
bnRzOworICAgIH0KKworcHJpdmF0ZToKKyAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Cit9Owor
CitjbGFzcyBHZXRQbHVnaW5zIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8Ym9v
bD4gQXJndW1lbnRzOworCisgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0
dXJuIElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfR2V0UGx1Z2luczsgfQorICAgIHN0YXRpYyBj
b25zdCBib29sIGlzU3luYyA9IHRydWU7CisKKyAgICB1c2luZyBSZXBseSA9IHN0ZDo6dHVwbGU8
VmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+Jj47CisgICAgdXNpbmcgUmVwbHlBcmd1bWVudHMg
PSBzdGQ6OnR1cGxlPFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPj47CisgICAgZXhwbGljaXQg
R2V0UGx1Z2lucyhib29sIHJlZnJlc2gpCisgICAgICAgIDogbV9hcmd1bWVudHMocmVmcmVzaCkK
KyAgICB7CisgICAgfQorCisgICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAor
ICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOworICAgIH0KKworcHJpdmF0ZToKKyAg
ICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Cit9OworCitjbGFzcyBHZXRQbHVnaW5Qcm9jZXNzQ29u
bmVjdGlvbiB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGNvbnN0IFN0cmluZyY+
IEFyZ3VtZW50czsKKworICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVy
biBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX0dldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOyB9
CisgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gdHJ1ZTsKKworICAgIHVzaW5nIERlbGF5
ZWRSZXBseSA9IEdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uRGVsYXllZFJlcGx5OworICAgIHN0
YXRpYyB2b2lkIHNlbmQoc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mJiwgSVBDOjpDb25u
ZWN0aW9uJiwgY29uc3QgSVBDOjpDb25uZWN0aW9uOjpIYW5kbGUmIGNvbm5lY3Rpb25IYW5kbGUp
OworICAgIHVzaW5nIFJlcGx5ID0gc3RkOjp0dXBsZTxJUEM6OkNvbm5lY3Rpb246OkhhbmRsZSY+
OworICAgIHVzaW5nIFJlcGx5QXJndW1lbnRzID0gc3RkOjp0dXBsZTxJUEM6OkNvbm5lY3Rpb246
OkhhbmRsZT47CisgICAgZXhwbGljaXQgR2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24oY29uc3Qg
U3RyaW5nJiBwbHVnaW5QYXRoKQorICAgICAgICA6IG1fYXJndW1lbnRzKHBsdWdpblBhdGgpCisg
ICAgeworICAgIH0KKworICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKKyAg
ICB7CisgICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKKyAgICB9CisKK3ByaXZhdGU6CisgICAg
QXJndW1lbnRzIG1fYXJndW1lbnRzOworfTsKKworY2xhc3MgVGVzdE11bHRpcGxlQXR0cmlidXRl
cyB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBzdGQ6OnR1cGxlPD4gQXJndW1lbnRzOworCisgICAg
c3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6
OldlYlBhZ2VfVGVzdE11bHRpcGxlQXR0cmlidXRlczsgfQorICAgIHN0YXRpYyBjb25zdCBib29s
IGlzU3luYyA9IHRydWU7CisKKyAgICB1c2luZyBEZWxheWVkUmVwbHkgPSBUZXN0TXVsdGlwbGVB
dHRyaWJ1dGVzRGVsYXllZFJlcGx5OworICAgIHN0YXRpYyB2b2lkIHNlbmQoc3RkOjp1bmlxdWVf
cHRyPElQQzo6RW5jb2Rlcj4mJiwgSVBDOjpDb25uZWN0aW9uJik7CisgICAgdXNpbmcgUmVwbHkg
PSBzdGQ6OnR1cGxlPD47CisgICAgdXNpbmcgUmVwbHlBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPD47
CisgICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAorICAgIHsKKyAgICAgICAg
cmV0dXJuIG1fYXJndW1lbnRzOworICAgIH0KKworcHJpdmF0ZToKKyAgICBBcmd1bWVudHMgbV9h
cmd1bWVudHM7Cit9OworCitjbGFzcyBUZXN0UGFyYW1ldGVyQXR0cmlidXRlcyB7CitwdWJsaWM6
CisgICAgdHlwZWRlZiBzdGQ6OnR1cGxlPHVpbnQ2NF90LCBkb3VibGUsIGRvdWJsZT4gQXJndW1l
bnRzOworCisgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6
TWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVzdFBhcmFtZXRlckF0dHJpYnV0ZXM7IH0KKyAgICBzdGF0
aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKKworICAgIFRlc3RQYXJhbWV0ZXJBdHRyaWJ1
dGVzKHVpbnQ2NF90IGZvbywgZG91YmxlIGJhciwgZG91YmxlIGJheikKKyAgICAgICAgOiBtX2Fy
Z3VtZW50cyhmb28sIGJhciwgYmF6KQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdCBBcmd1bWVu
dHMmIGFyZ3VtZW50cygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7
CisgICAgfQorCitwcml2YXRlOgorICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKK307CisKK2Ns
YXNzIFRlbXBsYXRlVGVzdCB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGNvbnN0
IEhhc2hNYXA8U3RyaW5nLCBzdGQ6OnBhaXI8U3RyaW5nLCB1aW50NjRfdD4+Jj4gQXJndW1lbnRz
OworCisgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVz
c2FnZU5hbWU6OldlYlBhZ2VfVGVtcGxhdGVUZXN0OyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wg
aXNTeW5jID0gZmFsc2U7CisKKyAgICBleHBsaWNpdCBUZW1wbGF0ZVRlc3QoY29uc3QgSGFzaE1h
cDxTdHJpbmcsIHN0ZDo6cGFpcjxTdHJpbmcsIHVpbnQ2NF90Pj4mIGEpCisgICAgICAgIDogbV9h
cmd1bWVudHMoYSkKKyAgICB7CisgICAgfQorCisgICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVu
dHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOworICAgIH0KKwor
cHJpdmF0ZToKKyAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Cit9OworCitjbGFzcyBTZXRWaWRl
b0xheWVySUQgeworcHVibGljOgorICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBXZWJDb3Jl
OjpHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQmPiBBcmd1bWVudHM7CisKKyAgICBzdGF0
aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6V2Vi
UGFnZV9TZXRWaWRlb0xheWVySUQ7IH0KKyAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBm
YWxzZTsKKworICAgIGV4cGxpY2l0IFNldFZpZGVvTGF5ZXJJRChjb25zdCBXZWJDb3JlOjpHcmFw
aGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQmIHZpZGVvTGF5ZXJJRCkKKyAgICAgICAgOiBtX2Fy
Z3VtZW50cyh2aWRlb0xheWVySUQpCisgICAgeworICAgIH0KKworICAgIGNvbnN0IEFyZ3VtZW50
cyYgYXJndW1lbnRzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsK
KyAgICB9CisKK3ByaXZhdGU6CisgICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOworfTsKKworI2lm
IFBMQVRGT1JNKE1BQykKK2NsYXNzIERpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uIHsKK3B1
YmxpYzoKKyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8Y29uc3QgSVBDOjpNYWNoUG9ydCY+IEFyZ3Vt
ZW50czsKKworICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6
Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX0RpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uOyB9Cisg
ICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7CisKKyAgICBleHBsaWNpdCBEaWRD
cmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbihjb25zdCBJUEM6Ok1hY2hQb3J0JiBjb25uZWN0aW9u
SWRlbnRpZmllcikKKyAgICAgICAgOiBtX2FyZ3VtZW50cyhjb25uZWN0aW9uSWRlbnRpZmllcikK
KyAgICB7CisgICAgfQorCisgICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAor
ICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOworICAgIH0KKworcHJpdmF0ZToKKyAg
ICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Cit9OworI2VuZGlmCisKKyNpZiBQTEFURk9STShNQUMp
CitjbGFzcyBJbnRlcnByZXRLZXlFdmVudCB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBzdGQ6OnR1
cGxlPHVpbnQzMl90PiBBcmd1bWVudHM7CisKKyAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBu
YW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9JbnRlcnByZXRLZXlFdmVu
dDsgfQorICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IHRydWU7CisKKyAgICB1c2luZyBS
ZXBseSA9IHN0ZDo6dHVwbGU8VmVjdG9yPFdlYkNvcmU6OktleXByZXNzQ29tbWFuZD4mPjsKKyAg
ICB1c2luZyBSZXBseUFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8VmVjdG9yPFdlYkNvcmU6OktleXBy
ZXNzQ29tbWFuZD4+OworICAgIGV4cGxpY2l0IEludGVycHJldEtleUV2ZW50KHVpbnQzMl90IHR5
cGUpCisgICAgICAgIDogbV9hcmd1bWVudHModHlwZSkKKyAgICB7CisgICAgfQorCisgICAgY29u
c3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1f
YXJndW1lbnRzOworICAgIH0KKworcHJpdmF0ZToKKyAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7
Cit9OworI2VuZGlmCisKKyNpZiBFTkFCTEUoREVQUkVDQVRFRF9GRUFUVVJFKQorY2xhc3MgRGVw
cmVjYXRlZE9wZXJhdGlvbiB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGNvbnN0
IElQQzo6RHVtbXlUeXBlJj4gQXJndW1lbnRzOworCisgICAgc3RhdGljIElQQzo6TWVzc2FnZU5h
bWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfRGVwcmVjYXRlZE9w
ZXJhdGlvbjsgfQorICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOworCisgICAg
ZXhwbGljaXQgRGVwcmVjYXRlZE9wZXJhdGlvbihjb25zdCBJUEM6OkR1bW15VHlwZSYgZHVtbXkp
CisgICAgICAgIDogbV9hcmd1bWVudHMoZHVtbXkpCisgICAgeworICAgIH0KKworICAgIGNvbnN0
IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2Fy
Z3VtZW50czsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwor
fTsKKyNlbmRpZgorCisjaWYgRU5BQkxFKEVYUEVSSU1FTlRBTF9GRUFUVVJFKQorY2xhc3MgRXhw
ZXJpbWVudGFsT3BlcmF0aW9uIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8Y29u
c3QgSVBDOjpEdW1teVR5cGUmPiBBcmd1bWVudHM7CisKKyAgICBzdGF0aWMgSVBDOjpNZXNzYWdl
TmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9FeHBlcmltZW50
YWxPcGVyYXRpb247IH0KKyAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKKwor
ICAgIGV4cGxpY2l0IEV4cGVyaW1lbnRhbE9wZXJhdGlvbihjb25zdCBJUEM6OkR1bW15VHlwZSYg
ZHVtbXkpCisgICAgICAgIDogbV9hcmd1bWVudHMoZHVtbXkpCisgICAgeworICAgIH0KKworICAg
IGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVy
biBtX2FyZ3VtZW50czsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQXJndW1lbnRzIG1fYXJndW1l
bnRzOworfTsKKyNlbmRpZgorCit9IC8vIG5hbWVzcGFjZSBXZWJQYWdlCit9IC8vIG5hbWVzcGFj
ZSBNZXNzYWdlcworCisjZW5kaWYgLy8gKEVOQUJMRShXRUJLSVQyKSAmJiAoTkVTVEVEX01BU1RF
Ul9DT05ESVRJT04gfHwgTUFTVEVSX09SICYmIE1BU1RFUl9BTkQpKQpJbmRleDogU291cmNlL1dl
YktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0LWxlZ2FjeU1lc3NhZ2VzUmVwbGllcy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdC1sZWdhY3lNZXNzYWdlc1Jl
cGxpZXMuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rl
c3QtbGVnYWN5TWVzc2FnZXNSZXBsaWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IK
KyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgKEVOQUJMRShXRUJLSVQy
KSAmJiAoTkVTVEVEX01BU1RFUl9DT05ESVRJT04gfHwgTUFTVEVSX09SICYmIE1BU1RFUl9BTkQp
KQorCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIk1lc3NhZ2VOYW1lcy5oIgor
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKKworbmFtZXNwYWNlIE1lc3NhZ2VzIHsKK25hbWVz
cGFjZSBXZWJQYWdlIHsKKwordXNpbmcgR2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25EZWxheWVk
UmVwbHkgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6Q29ubmVjdGlvbjo6SGFu
ZGxlJiBjb25uZWN0aW9uSGFuZGxlKT47CisKK3VzaW5nIFRlc3RNdWx0aXBsZUF0dHJpYnV0ZXNE
ZWxheWVkUmVwbHkgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJQYWdlCit9IC8vIG5hbWVzcGFjZSBNZXNzYWdlcworCisjZW5kaWYgLy8gKEVOQUJMRShX
RUJLSVQyKSAmJiAoTkVTVEVEX01BU1RFUl9DT05ESVRJT04gfHwgTUFTVEVSX09SICYmIE1BU1RF
Ul9BTkQpKQpJbmRleDogU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0LW1lc3NhZ2Vz
LmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdC1tZXNz
YWdlcy5pbgkocmV2aXNpb24gMjYwNzY0KQorKysgU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtp
dC90ZXN0LW1lc3NhZ2VzLmluCShub25leGlzdGVudCkKQEAgLTEsODQgKzAsMCBAQAotIyBDb3B5
cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
IyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0jCi0j
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycgQU5ECi0jIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0jIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotIyBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUgotIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotIyBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0jaWYgRU5BQkxFKFdFQktJVDIpCi0j
aWYgTkVTVEVEX01BU1RFUl9DT05ESVRJT04gfHwgTUFTVEVSX09SICYmIE1BU1RFUl9BTkQKLQot
Ci0jIFRoZSBwYXJzZXIgc2hvdWxkIHRyZWF0IGFsbCBvZiB0aGVzZSBhcyBjb21tZW50cwotI0Zh
a2VMb2FkVVJMQShTdHJpbmcgdXJsKQotIyBGYWtlTG9hZFVSTEIoU3RyaW5nIHVybCkKLSAgICAj
RmFrZUxvYWRVUkxDKFN0cmluZyB1cmwpCi0gICAgIyBGYWtlTG9hZFVSTEQoU3RyaW5nIHVybCkK
LQotbWVzc2FnZXMgLT4gV2ViUGFnZSB7Ci0gICAgTG9hZFVSTChTdHJpbmcgdXJsKQotI2lmIEVO
QUJMRShUT1VDSF9FVkVOVFMpCi0gICAgTG9hZFNvbWV0aGluZyhTdHJpbmcgdXJsKQotI2lmIE5F
U1RFRF9NRVNTQUdFX0NPTkRJVElPTiB8fCBTT01FX09USEVSX01FU1NBR0VfQ09ORElUSU9OCi0g
ICAgVG91Y2hFdmVudChXZWJLaXQ6OldlYlRvdWNoRXZlbnQgZXZlbnQpCi0jZW5kaWYKLSNpZiBO
RVNURURfTUVTU0FHRV9DT05ESVRJT04gJiYgU09NRV9PVEhFUl9NRVNTQUdFX0NPTkRJVElPTgot
ICAgIEFkZEV2ZW50KFdlYktpdDo6V2ViVG91Y2hFdmVudCBldmVudCkKLSNlbmRpZgotICAgIExv
YWRTb21ldGhpbmdFbHNlKFN0cmluZyB1cmwpCi0jZW5kaWYKLSAgICBEaWRSZWNlaXZlUG9saWN5
RGVjaXNpb24odWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbGlzdGVuZXJJRCwgdWludDMyX3Qg
cG9saWN5QWN0aW9uKQotICAgIENsb3NlKCkKLQotICAgIFByZWZlcmVuY2VzRGlkQ2hhbmdlKFdl
YktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZSBzdG9yZSkKLSAgICBTZW5kRG91YmxlQW5kRmxvYXQo
ZG91YmxlIGQsIGZsb2F0IGYpCi0gICAgU2VuZEludHMoVmVjdG9yPHVpbnQ2NF90PiBpbnRzLCBW
ZWN0b3I8VmVjdG9yPHVpbnQ2NF90Pj4gaW50VmVjdG9ycykKLQotICAgIENyZWF0ZVBsdWdpbih1
aW50NjRfdCBwbHVnaW5JbnN0YW5jZUlELCBXZWJLaXQ6OlBsdWdpbjo6UGFyYW1ldGVycyBwYXJh
bWV0ZXJzKSAtPiAoYm9vbCByZXN1bHQpCi0gICAgUnVuSmF2YVNjcmlwdEFsZXJ0KHVpbnQ2NF90
IGZyYW1lSUQsIFN0cmluZyBtZXNzYWdlKSAtPiAoKQotICAgIEdldFBsdWdpbnMoYm9vbCByZWZy
ZXNoKSAtPiAoVmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+IHBsdWdpbnMpCi0gICAgR2V0UGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb24oU3RyaW5nIHBsdWdpblBhdGgpIC0+IChJUEM6OkNvbm5lY3Rp
b246OkhhbmRsZSBjb25uZWN0aW9uSGFuZGxlKSBTeW5jaHJvbm91cwotCi0gICAgVGVzdE11bHRp
cGxlQXR0cmlidXRlcygpIC0+ICgpIFdhbnRzQ29ubmVjdGlvbiBTeW5jaHJvbm91cwotCi0gICAg
VGVzdFBhcmFtZXRlckF0dHJpYnV0ZXMoW0F0dHJpYnV0ZU9uZSBBdHRyaWJ1dGVUd29dIHVpbnQ2
NF90IGZvbywgZG91YmxlIGJhciwgW0F0dHJpYnV0ZVRocmVlXSBkb3VibGUgYmF6KQotCi0gICAg
VGVtcGxhdGVUZXN0KEhhc2hNYXA8U3RyaW5nLCBzdGQ6OnBhaXI8U3RyaW5nLCB1aW50NjRfdD4+
IGEpCi0KLSAgICBTZXRWaWRlb0xheWVySUQoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6UGxhdGZv
cm1MYXllcklEIHZpZGVvTGF5ZXJJRCkKLQotI2lmIFBMQVRGT1JNKE1BQykKLSAgICBEaWRDcmVh
dGVXZWJQcm9jZXNzQ29ubmVjdGlvbihJUEM6Ok1hY2hQb3J0IGNvbm5lY3Rpb25JZGVudGlmaWVy
KQotI2VuZGlmCi0KLSNpZiBQTEFURk9STShNQUMpCi0gICAgIyBLZXlib2FyZCBzdXBwb3J0Ci0g
ICAgSW50ZXJwcmV0S2V5RXZlbnQodWludDMyX3QgdHlwZSkgLT4gKFZlY3RvcjxXZWJDb3JlOjpL
ZXlwcmVzc0NvbW1hbmQ+IGNvbW1hbmROYW1lKQotI2VuZGlmCi0KLSNpZiBFTkFCTEUoREVQUkVD
QVRFRF9GRUFUVVJFKQotICAgIERlcHJlY2F0ZWRPcGVyYXRpb24oSVBDOjpEdW1teVR5cGUgZHVt
bXkpCi0jZW5kaWYKLQotI2lmIEVOQUJMRShFWFBFUklNRU5UQUxfRkVBVFVSRSkKLSAgICBFeHBl
cmltZW50YWxPcGVyYXRpb24oSVBDOjpEdW1teVR5cGUgZHVtbXkpCi0jZW5kaWYKLX0KLQotI2Vu
ZGlmCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdC1zdXBl
cmNsYXNzLW1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93
ZWJraXQvdGVzdC1zdXBlcmNsYXNzLW1lc3NhZ2VzLmluCShyZXZpc2lvbiAyNjA3NjQpCisrKyBT
b3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3Qtc3VwZXJjbGFzcy1tZXNzYWdlcy5pbgko
bm9uZXhpc3RlbnQpCkBAIC0xLDMyICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
IyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAot
IyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAotIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0jIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SCi0jIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwKLSMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSMgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIKLSMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMg
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLQotbWVzc2FnZXMgLT4gV2ViUGFnZSA6IFdlYlBhZ2VCYXNlIHsKLSAgICBM
b2FkVVJMKFN0cmluZyB1cmwpCi0jaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKLSAgICBUZXN0QXN5
bmNNZXNzYWdlKGVudW06Ym9vbCBXZWJLaXQ6OlRlc3RUd29TdGF0ZUVudW0gdHdvU3RhdGVFbnVt
KSAtPiAodWludDY0X3QgcmVzdWx0KSBBc3luYwotICAgIFRlc3RBc3luY01lc3NhZ2VXaXRoTm9B
cmd1bWVudHMoKSAtPiAoKSBBc3luYwotICAgIFRlc3RBc3luY01lc3NhZ2VXaXRoTXVsdGlwbGVB
cmd1bWVudHMoKSAtPiAoYm9vbCBmbGFnLCB1aW50NjRfdCB2YWx1ZSkgQXN5bmMKLSNlbmRpZgot
ICAgIFRlc3RTeW5jTWVzc2FnZSh1aW50MzJfdCBwYXJhbSkgLT4gKHVpbnQ4X3QgcmVwbHkpIFN5
bmNocm9ub3VzCi0gICAgVGVzdFN5bmNocm9ub3VzTWVzc2FnZShib29sIHZhbHVlKSAtPiAoT3B0
aW9uYWw8V2ViS2l0OjpUZXN0Q2xhc3NOYW1lPiBvcHRpb25hbFJlcGx5KSBTeW5jaHJvbm91cwot
fQpJbmRleDogU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0LXN1cGVyY2xhc3MubWVz
c2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0
LXN1cGVyY2xhc3MubWVzc2FnZXMuaW4JKHJldmlzaW9uIDI2MDc2NCkJKGZyb20gU291cmNlL1dl
YktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0LXN1cGVyY2xhc3MtbWVzc2FnZXMuaW46MjYwNzY0KQor
KysgU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0LXN1cGVyY2xhc3MubWVzc2FnZXMu
aW4JKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzMiBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycg
QU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorCittZXNzYWdlcyAtPiBXZWJQYWdlIDogV2ViUGFnZUJhc2Ugewor
ICAgIExvYWRVUkwoU3RyaW5nIHVybCkKKyNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQorICAgIFRl
c3RBc3luY01lc3NhZ2UoZW51bTpib29sIFdlYktpdDo6VGVzdFR3b1N0YXRlRW51bSB0d29TdGF0
ZUVudW0pIC0+ICh1aW50NjRfdCByZXN1bHQpIEFzeW5jCisgICAgVGVzdEFzeW5jTWVzc2FnZVdp
dGhOb0FyZ3VtZW50cygpIC0+ICgpIEFzeW5jCisgICAgVGVzdEFzeW5jTWVzc2FnZVdpdGhNdWx0
aXBsZUFyZ3VtZW50cygpIC0+IChib29sIGZsYWcsIHVpbnQ2NF90IHZhbHVlKSBBc3luYworI2Vu
ZGlmCisgICAgVGVzdFN5bmNNZXNzYWdlKHVpbnQzMl90IHBhcmFtKSAtPiAodWludDhfdCByZXBs
eSkgU3luY2hyb25vdXMKKyAgICBUZXN0U3luY2hyb25vdXNNZXNzYWdlKGJvb2wgdmFsdWUpIC0+
IChPcHRpb25hbDxXZWJLaXQ6OlRlc3RDbGFzc05hbWU+IG9wdGlvbmFsUmVwbHkpIFN5bmNocm9u
b3VzCit9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3Qtc3VwZXJjbGFz
c01lc3NhZ2VSZWNlaXZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TY3JpcHRz
L3dlYmtpdC90ZXN0LXN1cGVyY2xhc3NNZXNzYWdlUmVjZWl2ZXIuY3BwCShub25leGlzdGVudCkK
KysrIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdC1zdXBlcmNsYXNzTWVzc2FnZVJl
Y2VpdmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE4OSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIldlYlBhZ2UuaCIKKworI2lu
Y2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiRGVjb2Rlci5oIgorI2luY2x1ZGUg
IkhhbmRsZU1lc3NhZ2UuaCIKKyNpbmNsdWRlICJUZXN0Q2xhc3NOYW1lLmgiCisjaWYgRU5BQkxF
KFRFU1RfRkVBVFVSRSkKKyNpbmNsdWRlICJUZXN0VHdvU3RhdGVFbnVtLmgiCisjZW5kaWYKKyNp
bmNsdWRlICJXZWJQYWdlTWVzc2FnZXMuaCIKKyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KKyNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIE1lc3NhZ2VzIHsKKwor
bmFtZXNwYWNlIFdlYlBhZ2UgeworCisjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKKwordm9pZCBU
ZXN0QXN5bmNNZXNzYWdlOjpjYWxsUmVwbHkoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAg
IE9wdGlvbmFsPHVpbnQ2NF90PiByZXN1bHQ7CisgICAgZGVjb2RlciA+PiByZXN1bHQ7CisgICAg
aWYgKCFyZXN1bHQpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGNh
bmNlbFJlcGx5KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKyAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKCpyZXN1bHQpKTsKK30KKwordm9p
ZCBUZXN0QXN5bmNNZXNzYWdlOjpjYW5jZWxSZXBseShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVp
bnQ2NF90JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGNvbXBsZXRpb25IYW5kbGVy
KElQQzo6QXN5bmNSZXBseUVycm9yPHVpbnQ2NF90Pjo6Y3JlYXRlKCkpOworfQorCit2b2lkIFRl
c3RBc3luY01lc3NhZ2U6OnNlbmQoc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mJiBlbmNv
ZGVyLCBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIHVpbnQ2NF90IHJlc3VsdCkKK3sKKyAg
ICAqZW5jb2RlciA8PCByZXN1bHQ7CisgICAgY29ubmVjdGlvbi5zZW5kU3luY1JlcGx5KFdURk1v
dmUoZW5jb2RlcikpOworfQorCisjZW5kaWYKKworI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCisK
K3ZvaWQgVGVzdEFzeW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50czo6Y2FsbFJlcGx5KElQQzo6RGVj
b2RlciYgZGVjb2RlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQoreworICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Cit9CisKK3ZvaWQgVGVzdEFzeW5jTWVz
c2FnZVdpdGhOb0FyZ3VtZW50czo6Y2FuY2VsUmVwbHkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Cit9CisK
K3ZvaWQgVGVzdEFzeW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50czo6c2VuZChzdGQ6OnVuaXF1ZV9w
dHI8SVBDOjpFbmNvZGVyPiYmIGVuY29kZXIsIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikK
K3sKKyAgICBjb25uZWN0aW9uLnNlbmRTeW5jUmVwbHkoV1RGTW92ZShlbmNvZGVyKSk7Cit9CisK
KyNlbmRpZgorCisjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKKwordm9pZCBUZXN0QXN5bmNNZXNz
YWdlV2l0aE11bHRpcGxlQXJndW1lbnRzOjpjYWxsUmVwbHkoSVBDOjpEZWNvZGVyJiBkZWNvZGVy
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wmJiwgdWludDY0X3QmJik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCit7CisgICAgT3B0aW9uYWw8Ym9vbD4gZmxhZzsKKyAgICBkZWNvZGVyID4+IGZs
YWc7CisgICAgaWYgKCFmbGFnKSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICBjYW5jZWxSZXBseShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisgICAgT3B0aW9uYWw8dWludDY0X3Q+IHZhbHVlOworICAgIGRlY29kZXIg
Pj4gdmFsdWU7CisgICAgaWYgKCF2YWx1ZSkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgY2FuY2VsUmVwbHkoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAg
ICAgICByZXR1cm47CisgICAgfQorICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoKmZsYWcp
LCBXVEZNb3ZlKCp2YWx1ZSkpOworfQorCit2b2lkIFRlc3RBc3luY01lc3NhZ2VXaXRoTXVsdGlw
bGVBcmd1bWVudHM6OmNhbmNlbFJlcGx5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCYmLCB1
aW50NjRfdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBjb21wbGV0aW9uSGFuZGxl
cihJUEM6OkFzeW5jUmVwbHlFcnJvcjxib29sPjo6Y3JlYXRlKCksIElQQzo6QXN5bmNSZXBseUVy
cm9yPHVpbnQ2NF90Pjo6Y3JlYXRlKCkpOworfQorCit2b2lkIFRlc3RBc3luY01lc3NhZ2VXaXRo
TXVsdGlwbGVBcmd1bWVudHM6OnNlbmQoc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mJiBl
bmNvZGVyLCBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGJvb2wgZmxhZywgdWludDY0X3Qg
dmFsdWUpCit7CisgICAgKmVuY29kZXIgPDwgZmxhZzsKKyAgICAqZW5jb2RlciA8PCB2YWx1ZTsK
KyAgICBjb25uZWN0aW9uLnNlbmRTeW5jUmVwbHkoV1RGTW92ZShlbmNvZGVyKSk7Cit9CisKKyNl
bmRpZgorCit2b2lkIFRlc3RTeW5jTWVzc2FnZTo6c2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpF
bmNvZGVyPiYmIGVuY29kZXIsIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgdWludDhfdCBy
ZXBseSkKK3sKKyAgICAqZW5jb2RlciA8PCByZXBseTsKKyAgICBjb25uZWN0aW9uLnNlbmRTeW5j
UmVwbHkoV1RGTW92ZShlbmNvZGVyKSk7Cit9CisKK3ZvaWQgVGVzdFN5bmNocm9ub3VzTWVzc2Fn
ZTo6c2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYmIGVuY29kZXIsIElQQzo6Q29u
bmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgT3B0aW9uYWw8V2ViS2l0OjpUZXN0Q2xhc3NOYW1l
PiYgb3B0aW9uYWxSZXBseSkKK3sKKyAgICAqZW5jb2RlciA8PCBvcHRpb25hbFJlcGx5OworICAg
IGNvbm5lY3Rpb24uc2VuZFN5bmNSZXBseShXVEZNb3ZlKGVuY29kZXIpKTsKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViUGFnZQorCit9IC8vIG5hbWVzcGFjZSBNZXNzYWdlcworCituYW1lc3BhY2Ug
V2ViS2l0IHsKKwordm9pZCBXZWJQYWdlOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBhdXRvIHByb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKTsKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgp
ID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkVVJMOjpuYW1lKCkpIHsKKyAgICAgICAgSVBDOjpo
YW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkVVJMPihkZWNvZGVyLCB0aGlzLCAm
V2ViUGFnZTo6bG9hZFVSTCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjaWYgRU5BQkxFKFRF
U1RfRkVBVFVSRSkKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpX
ZWJQYWdlOjpUZXN0QXN5bmNNZXNzYWdlOjpuYW1lKCkpIHsKKyAgICAgICAgSVBDOjpoYW5kbGVN
ZXNzYWdlQXN5bmM8TWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RBc3luY01lc3NhZ2U+KGNvbm5lY3Rp
b24sIGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjp0ZXN0QXN5bmNNZXNzYWdlKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKyNlbmRpZgorI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCisgICAgaWYg
KGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6VGVzdEFzeW5jTWVz
c2FnZVdpdGhOb0FyZ3VtZW50czo6bmFtZSgpKSB7CisgICAgICAgIElQQzo6aGFuZGxlTWVzc2Fn
ZUFzeW5jPE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJndW1lbnRz
Pihjb25uZWN0aW9uLCBkZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6dGVzdEFzeW5jTWVzc2FnZVdp
dGhOb0FyZ3VtZW50cyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKyNpZiBFTkFC
TEUoVEVTVF9GRUFUVVJFKQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2Fn
ZXM6OldlYlBhZ2U6OlRlc3RBc3luY01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHM6Om5hbWUo
KSkgeworICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2VBc3luYzxNZXNzYWdlczo6V2ViUGFnZTo6
VGVzdEFzeW5jTWVzc2FnZVdpdGhNdWx0aXBsZUFyZ3VtZW50cz4oY29ubmVjdGlvbiwgZGVjb2Rl
ciwgdGhpcywgJldlYlBhZ2U6OnRlc3RBc3luY01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHMp
OworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisgICAgV2ViUGFnZUJhc2U6OmRpZFJl
Y2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOworfQorCit2b2lkIFdlYlBhZ2U6OmRp
ZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVj
b2RlciYgZGVjb2Rlciwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mIHJlcGx5RW5jb2Rl
cikKK3sKKyAgICBhdXRvIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKTsKKyAgICBpZiAo
ZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0U3luY01lc3Nh
Z2U6Om5hbWUoKSkgeworICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2VTeW5jaHJvbm91czxNZXNz
YWdlczo6V2ViUGFnZTo6VGVzdFN5bmNNZXNzYWdlPihjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBs
eUVuY29kZXIsIHRoaXMsICZXZWJQYWdlOjp0ZXN0U3luY01lc3NhZ2UpOworICAgICAgICByZXR1
cm47CisgICAgfQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6Oldl
YlBhZ2U6OlRlc3RTeW5jaHJvbm91c01lc3NhZ2U6Om5hbWUoKSkgeworICAgICAgICBJUEM6Omhh
bmRsZU1lc3NhZ2VTeW5jaHJvbm91czxNZXNzYWdlczo6V2ViUGFnZTo6VGVzdFN5bmNocm9ub3Vz
TWVzc2FnZT4oY29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyLCB0aGlzLCAmV2ViUGFn
ZTo6dGVzdFN5bmNocm9ub3VzTWVzc2FnZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAg
VU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pOworICAgIFVOVVNFRF9QQVJBTShkZWNvZGVyKTsKKyAg
ICBVTlVTRURfUEFSQU0ocmVwbHlFbmNvZGVyKTsKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2NyaXB0
cy93ZWJraXQvdGVzdC1zdXBlcmNsYXNzTWVzc2FnZXMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3Qtc3VwZXJjbGFzc01lc3NhZ2VzLmgJKG5vbmV4aXN0
ZW50KQorKysgU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0LXN1cGVyY2xhc3NNZXNz
YWdlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjAxIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEwLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisg
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorICogQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAor
ICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisgKiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLAorICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUg
IkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJNZXNzYWdlTmFtZXMuaCIKKyNpbmNsdWRlICJUZXN0
Q2xhc3NOYW1lLmgiCisjaW5jbHVkZSAiV2ViUGFnZU1lc3NhZ2VzUmVwbGllcy5oIgorI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisjaW5jbHVkZSA8
d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworZW51bSBjbGFzcyBUZXN0VHdvU3RhdGVFbnVtIDog
Ym9vbDsKK30KKworbmFtZXNwYWNlIE1lc3NhZ2VzIHsKK25hbWVzcGFjZSBXZWJQYWdlIHsKKwor
c3RhdGljIGlubGluZSBJUEM6OlJlY2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1lKCkKK3sK
KyAgICByZXR1cm4gSVBDOjpSZWNlaXZlck5hbWU6OldlYlBhZ2U7Cit9CisKK2NsYXNzIExvYWRV
UkwgeworcHVibGljOgorICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBTdHJpbmcmPiBBcmd1
bWVudHM7CisKKyAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBD
OjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9Mb2FkVVJMOyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wg
aXNTeW5jID0gZmFsc2U7CisKKyAgICBleHBsaWNpdCBMb2FkVVJMKGNvbnN0IFN0cmluZyYgdXJs
KQorICAgICAgICA6IG1fYXJndW1lbnRzKHVybCkKKyAgICB7CisgICAgfQorCisgICAgY29uc3Qg
QXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYXJn
dW1lbnRzOworICAgIH0KKworcHJpdmF0ZToKKyAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Cit9
OworCisjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKK2NsYXNzIFRlc3RBc3luY01lc3NhZ2Ugewor
cHVibGljOgorICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxXZWJLaXQ6OlRlc3RUd29TdGF0ZUVudW0+
IEFyZ3VtZW50czsKKworICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVy
biBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX1Rlc3RBc3luY01lc3NhZ2U7IH0KKyAgICBzdGF0
aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKKworICAgIHN0YXRpYyB2b2lkIGNhbGxSZXBs
eShJUEM6OkRlY29kZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90JiYpPiYmKTsK
KyAgICBzdGF0aWMgdm9pZCBjYW5jZWxSZXBseShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2
NF90JiYpPiYmKTsKKyAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBhc3luY01lc3NhZ2VSZXBs
eU5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX1Rlc3RBc3luY01lc3Nh
Z2VSZXBseTsgfQorICAgIHVzaW5nIEFzeW5jUmVwbHkgPSBUZXN0QXN5bmNNZXNzYWdlQXN5bmNS
ZXBseTsKKyAgICBzdGF0aWMgdm9pZCBzZW5kKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+
JiYsIElQQzo6Q29ubmVjdGlvbiYsIHVpbnQ2NF90IHJlc3VsdCk7CisgICAgdXNpbmcgUmVwbHkg
PSBzdGQ6OnR1cGxlPHVpbnQ2NF90Jj47CisgICAgdXNpbmcgUmVwbHlBcmd1bWVudHMgPSBzdGQ6
OnR1cGxlPHVpbnQ2NF90PjsKKyAgICBleHBsaWNpdCBUZXN0QXN5bmNNZXNzYWdlKFdlYktpdDo6
VGVzdFR3b1N0YXRlRW51bSB0d29TdGF0ZUVudW0pCisgICAgICAgIDogbV9hcmd1bWVudHModHdv
U3RhdGVFbnVtKQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50
cygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7CisgICAgfQorCitw
cml2YXRlOgorICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKK307CisjZW5kaWYKKworI2lmIEVO
QUJMRShURVNUX0ZFQVRVUkUpCitjbGFzcyBUZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJndW1lbnRz
IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8PiBBcmd1bWVudHM7CisKKyAgICBz
dGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6
V2ViUGFnZV9UZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJndW1lbnRzOyB9CisgICAgc3RhdGljIGNv
bnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7CisKKyAgICBzdGF0aWMgdm9pZCBjYWxsUmVwbHkoSVBD
OjpEZWNvZGVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICBzdGF0aWMgdm9p
ZCBjYW5jZWxSZXBseShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHN0YXRpYyBJ
UEM6Ok1lc3NhZ2VOYW1lIGFzeW5jTWVzc2FnZVJlcGx5TmFtZSgpIHsgcmV0dXJuIElQQzo6TWVz
c2FnZU5hbWU6OldlYlBhZ2VfVGVzdEFzeW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50c1JlcGx5OyB9
CisgICAgdXNpbmcgQXN5bmNSZXBseSA9IFRlc3RBc3luY01lc3NhZ2VXaXRoTm9Bcmd1bWVudHNB
c3luY1JlcGx5OworICAgIHN0YXRpYyB2b2lkIHNlbmQoc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5j
b2Rlcj4mJiwgSVBDOjpDb25uZWN0aW9uJik7CisgICAgdXNpbmcgUmVwbHkgPSBzdGQ6OnR1cGxl
PD47CisgICAgdXNpbmcgUmVwbHlBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPD47CisgICAgY29uc3Qg
QXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYXJn
dW1lbnRzOworICAgIH0KKworcHJpdmF0ZToKKyAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Cit9
OworI2VuZGlmCisKKyNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQorY2xhc3MgVGVzdEFzeW5jTWVz
c2FnZVdpdGhNdWx0aXBsZUFyZ3VtZW50cyB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBzdGQ6OnR1
cGxlPD4gQXJndW1lbnRzOworCisgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsg
cmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVzdEFzeW5jTWVzc2FnZVdpdGhNdWx0
aXBsZUFyZ3VtZW50czsgfQorICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOwor
CisgICAgc3RhdGljIHZvaWQgY2FsbFJlcGx5KElQQzo6RGVjb2RlciYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCYmLCB1aW50NjRfdCYmKT4mJik7CisgICAgc3RhdGljIHZvaWQgY2FuY2Vs
UmVwbHkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sJiYsIHVpbnQ2NF90JiYpPiYmKTsKKyAg
ICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBhc3luY01lc3NhZ2VSZXBseU5hbWUoKSB7IHJldHVy
biBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX1Rlc3RBc3luY01lc3NhZ2VXaXRoTXVsdGlwbGVB
cmd1bWVudHNSZXBseTsgfQorICAgIHVzaW5nIEFzeW5jUmVwbHkgPSBUZXN0QXN5bmNNZXNzYWdl
V2l0aE11bHRpcGxlQXJndW1lbnRzQXN5bmNSZXBseTsKKyAgICBzdGF0aWMgdm9pZCBzZW5kKHN0
ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiYsIElQQzo6Q29ubmVjdGlvbiYsIGJvb2wgZmxh
ZywgdWludDY0X3QgdmFsdWUpOworICAgIHVzaW5nIFJlcGx5ID0gc3RkOjp0dXBsZTxib29sJiwg
dWludDY0X3QmPjsKKyAgICB1c2luZyBSZXBseUFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8Ym9vbCwg
dWludDY0X3Q+OworICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKKyAgICB7
CisgICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQXJn
dW1lbnRzIG1fYXJndW1lbnRzOworfTsKKyNlbmRpZgorCitjbGFzcyBUZXN0U3luY01lc3NhZ2Ug
eworcHVibGljOgorICAgIHR5cGVkZWYgc3RkOjp0dXBsZTx1aW50MzJfdD4gQXJndW1lbnRzOwor
CisgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2Fn
ZU5hbWU6OldlYlBhZ2VfVGVzdFN5bmNNZXNzYWdlOyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wg
aXNTeW5jID0gdHJ1ZTsKKworICAgIHVzaW5nIERlbGF5ZWRSZXBseSA9IFRlc3RTeW5jTWVzc2Fn
ZURlbGF5ZWRSZXBseTsKKyAgICBzdGF0aWMgdm9pZCBzZW5kKHN0ZDo6dW5pcXVlX3B0cjxJUEM6
OkVuY29kZXI+JiYsIElQQzo6Q29ubmVjdGlvbiYsIHVpbnQ4X3QgcmVwbHkpOworICAgIHVzaW5n
IFJlcGx5ID0gc3RkOjp0dXBsZTx1aW50OF90Jj47CisgICAgdXNpbmcgUmVwbHlBcmd1bWVudHMg
PSBzdGQ6OnR1cGxlPHVpbnQ4X3Q+OworICAgIGV4cGxpY2l0IFRlc3RTeW5jTWVzc2FnZSh1aW50
MzJfdCBwYXJhbSkKKyAgICAgICAgOiBtX2FyZ3VtZW50cyhwYXJhbSkKKyAgICB7CisgICAgfQor
CisgICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAorICAgIHsKKyAgICAgICAg
cmV0dXJuIG1fYXJndW1lbnRzOworICAgIH0KKworcHJpdmF0ZToKKyAgICBBcmd1bWVudHMgbV9h
cmd1bWVudHM7Cit9OworCitjbGFzcyBUZXN0U3luY2hyb25vdXNNZXNzYWdlIHsKK3B1YmxpYzoK
KyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8Ym9vbD4gQXJndW1lbnRzOworCisgICAgc3RhdGljIElQ
Qzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2Vf
VGVzdFN5bmNocm9ub3VzTWVzc2FnZTsgfQorICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9
IHRydWU7CisKKyAgICB1c2luZyBEZWxheWVkUmVwbHkgPSBUZXN0U3luY2hyb25vdXNNZXNzYWdl
RGVsYXllZFJlcGx5OworICAgIHN0YXRpYyB2b2lkIHNlbmQoc3RkOjp1bmlxdWVfcHRyPElQQzo6
RW5jb2Rlcj4mJiwgSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgT3B0aW9uYWw8V2ViS2l0OjpUZXN0
Q2xhc3NOYW1lPiYgb3B0aW9uYWxSZXBseSk7CisgICAgdXNpbmcgUmVwbHkgPSBzdGQ6OnR1cGxl
PE9wdGlvbmFsPFdlYktpdDo6VGVzdENsYXNzTmFtZT4mPjsKKyAgICB1c2luZyBSZXBseUFyZ3Vt
ZW50cyA9IHN0ZDo6dHVwbGU8T3B0aW9uYWw8V2ViS2l0OjpUZXN0Q2xhc3NOYW1lPj47CisgICAg
ZXhwbGljaXQgVGVzdFN5bmNocm9ub3VzTWVzc2FnZShib29sIHZhbHVlKQorICAgICAgICA6IG1f
YXJndW1lbnRzKHZhbHVlKQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdCBBcmd1bWVudHMmIGFy
Z3VtZW50cygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7CisgICAg
fQorCitwcml2YXRlOgorICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYlBhZ2UKK30gLy8gbmFtZXNwYWNlIE1lc3NhZ2VzCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1NjcmlwdHMvd2Via2l0L3Rlc3Qtc3VwZXJjbGFzc01lc3NhZ2VzUmVwbGllcy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdC1zdXBlcmNsYXNzTWVz
c2FnZXNSZXBsaWVzLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9TY3JpcHRzL3dl
YmtpdC90ZXN0LXN1cGVyY2xhc3NNZXNzYWdlc1JlcGxpZXMuaAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBB
TkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUgorICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSCisgKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorICogT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRl
ICJNZXNzYWdlTmFtZXMuaCIKKyNpbmNsdWRlICJUZXN0Q2xhc3NOYW1lLmgiCisjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KKworCituYW1lc3BhY2Ug
TWVzc2FnZXMgeworbmFtZXNwYWNlIFdlYlBhZ2UgeworCisjaWYgRU5BQkxFKFRFU1RfRkVBVFVS
RSkKK3VzaW5nIFRlc3RBc3luY01lc3NhZ2VBc3luY1JlcGx5ID0gQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCh1aW50NjRfdCByZXN1bHQpPjsKKyNlbmRpZgorCisjaWYgRU5BQkxFKFRFU1RfRkVBVFVS
RSkKK3VzaW5nIFRlc3RBc3luY01lc3NhZ2VXaXRoTm9Bcmd1bWVudHNBc3luY1JlcGx5ID0gQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPjsKKyNlbmRpZgorCisjaWYgRU5BQkxFKFRFU1RfRkVBVFVS
RSkKK3VzaW5nIFRlc3RBc3luY01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHNBc3luY1JlcGx5
ID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIGZsYWcsIHVpbnQ2NF90IHZhbHVlKT47Cisj
ZW5kaWYKKwordXNpbmcgVGVzdFN5bmNNZXNzYWdlRGVsYXllZFJlcGx5ID0gQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCh1aW50OF90IHJlcGx5KT47CisKK3VzaW5nIFRlc3RTeW5jaHJvbm91c01lc3Nh
Z2VEZWxheWVkUmVwbHkgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IE9wdGlvbmFsPFdl
YktpdDo6VGVzdENsYXNzTmFtZT4mIG9wdGlvbmFsUmVwbHkpPjsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViUGFnZQorfSAvLyBuYW1lc3BhY2UgTWVzc2FnZXMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2Ny
aXB0cy93ZWJraXQvdGVzdC5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RNZXNzYWdlUmVjZWl2ZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdE1lc3NhZ2VSZWNlaXZlci5jcHAJKG5v
bmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0TWVzc2FnZVJl
Y2VpdmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM3IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEwLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
CisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorICogQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisgKiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLAorICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiTm9uZS5oIgorCisjaW5jbHVk
ZSAiRGVjb2Rlci5oIgorI2luY2x1ZGUgIkhhbmRsZU1lc3NhZ2UuaCIKKyNpbmNsdWRlICJOb25l
TWVzc2FnZXMuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CisKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdE1lc3NhZ2VzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0TWVzc2FnZXMu
aAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RNZXNz
YWdlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTAtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAq
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisg
KiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAi
Q29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIk1lc3NhZ2VOYW1lcy5oIgorI2luY2x1ZGUgIk5vbmVN
ZXNzYWdlc1JlcGxpZXMuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0
Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorCisKK25hbWVzcGFjZSBNZXNzYWdlcyB7CituYW1l
c3BhY2UgTm9uZSB7CisKK3N0YXRpYyBpbmxpbmUgSVBDOjpSZWNlaXZlck5hbWUgbWVzc2FnZVJl
Y2VpdmVyTmFtZSgpCit7CisgICAgcmV0dXJuIElQQzo6UmVjZWl2ZXJOYW1lOjpOb25lOworfQor
CisKK30gLy8gbmFtZXNwYWNlIE5vbmUKK30gLy8gbmFtZXNwYWNlIE1lc3NhZ2VzCkluZGV4OiBT
b3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RNZXNzYWdlc1JlcGxpZXMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RNZXNzYWdlc1JlcGxpZXMu
aAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RNZXNz
YWdlc1JlcGxpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM2IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEwLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorICogQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisgKiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLAorICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNZXNzYWdlTmFtZXMuaCIKKyNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgorCisKK25hbWVzcGFjZSBNZXNzYWdlcyB7CituYW1lc3BhY2Ug
Tm9uZSB7CisKKworfSAvLyBuYW1lc3BhY2UgTm9uZQorfSAvLyBuYW1lc3BhY2UgTWVzc2FnZXMK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0F1eGlsaWFyeVByb2Nlc3MuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0F1eGlsaWFyeVByb2Nlc3MuY3BwCShyZXZpc2lv
biAyNjA3NjQpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXhpbGlhcnlQcm9jZXNzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTA3LDIyICsxMDcsMjIgQEAgdm9pZCBBdXhpbGlhcnlQcm9jZXNz
Ojppbml0aWFsaXplQ29ubmVjdAogewogfQogCi12b2lkIEF1eGlsaWFyeVByb2Nlc3M6OmFkZE1l
c3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBJ
UEM6Ok1lc3NhZ2VSZWNlaXZlciYgbWVzc2FnZVJlY2VpdmVyKQordm9pZCBBdXhpbGlhcnlQcm9j
ZXNzOjphZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpSZWNlaXZlck5hbWUgbWVzc2FnZVJlY2VpdmVy
TmFtZSwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImIG1lc3NhZ2VSZWNlaXZlcikKIHsKICAgICBtX21l
c3NhZ2VSZWNlaXZlck1hcC5hZGRNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSwg
bWVzc2FnZVJlY2VpdmVyKTsKIH0KIAotdm9pZCBBdXhpbGlhcnlQcm9jZXNzOjphZGRNZXNzYWdl
UmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgdWludDY0
X3QgZGVzdGluYXRpb25JRCwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImIG1lc3NhZ2VSZWNlaXZlcikK
K3ZvaWQgQXV4aWxpYXJ5UHJvY2Vzczo6YWRkTWVzc2FnZVJlY2VpdmVyKElQQzo6UmVjZWl2ZXJO
YW1lIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIElQQzo6TWVz
c2FnZVJlY2VpdmVyJiBtZXNzYWdlUmVjZWl2ZXIpCiB7CiAgICAgbV9tZXNzYWdlUmVjZWl2ZXJN
YXAuYWRkTWVzc2FnZVJlY2VpdmVyKG1lc3NhZ2VSZWNlaXZlck5hbWUsIGRlc3RpbmF0aW9uSUQs
IG1lc3NhZ2VSZWNlaXZlcik7CiB9CiAKLXZvaWQgQXV4aWxpYXJ5UHJvY2Vzczo6cmVtb3ZlTWVz
c2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVp
bnQ2NF90IGRlc3RpbmF0aW9uSUQpCit2b2lkIEF1eGlsaWFyeVByb2Nlc3M6OnJlbW92ZU1lc3Nh
Z2VSZWNlaXZlcihJUEM6OlJlY2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCB1aW50NjRf
dCBkZXN0aW5hdGlvbklEKQogewogICAgIG1fbWVzc2FnZVJlY2VpdmVyTWFwLnJlbW92ZU1lc3Nh
Z2VSZWNlaXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklEKTsKIH0KIAotdm9p
ZCBBdXhpbGlhcnlQcm9jZXNzOjpyZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZl
cmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSkKK3ZvaWQgQXV4aWxpYXJ5UHJvY2Vzczo6cmVtb3Zl
TWVzc2FnZVJlY2VpdmVyKElQQzo6UmVjZWl2ZXJOYW1lIG1lc3NhZ2VSZWNlaXZlck5hbWUpCiB7
CiAgICAgbV9tZXNzYWdlUmVjZWl2ZXJNYXAucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKG1lc3NhZ2VS
ZWNlaXZlck5hbWUpOwogfQpAQCAtMjM2LDkgKzIzNiw5IEBAIHZvaWQgQXV4aWxpYXJ5UHJvY2Vz
czo6aW5pdGlhbGl6ZVNhbmRib3gKIHsKIH0KIAotdm9pZCBBdXhpbGlhcnlQcm9jZXNzOjpkaWRS
ZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpTdHJpbmdSZWZlcmVu
Y2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUp
Cit2b2lkIEF1eGlsaWFyeVByb2Nlc3M6OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lKQogewotICAgIFdURkxvZ0Fs
d2F5cygiUmVjZWl2ZWQgaW52YWxpZCBtZXNzYWdlOiAnJXM6OiVzJyIsIG1lc3NhZ2VSZWNlaXZl
ck5hbWUudG9TdHJpbmcoKS5kYXRhKCksIG1lc3NhZ2VOYW1lLnRvU3RyaW5nKCkuZGF0YSgpKTsK
KyAgICBXVEZMb2dBbHdheXMoIlJlY2VpdmVkIGludmFsaWQgbWVzc2FnZTogJyVzJyIsIGRlc2Ny
aXB0aW9uKG1lc3NhZ2VOYW1lKSk7CiAgICAgQ1JBU0goKTsKIH0KIApJbmRleDogU291cmNlL1dl
YktpdC9TaGFyZWQvQXV4aWxpYXJ5UHJvY2Vzcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvU2hhcmVkL0F1eGlsaWFyeVByb2Nlc3MuaAkocmV2aXNpb24gMjYwNzY0KQorKysgU291cmNl
L1dlYktpdC9TaGFyZWQvQXV4aWxpYXJ5UHJvY2Vzcy5oCSh3b3JraW5nIGNvcHkpCkBAIC02MCwy
MCArNjAsMjAgQEAgcHVibGljOgogICAgIHZvaWQgZGlzYWJsZVRlcm1pbmF0aW9uKCk7CiAgICAg
dm9pZCBlbmFibGVUZXJtaW5hdGlvbigpOwogCi0gICAgdm9pZCBhZGRNZXNzYWdlUmVjZWl2ZXIo
SVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpNZXNzYWdlUmVj
ZWl2ZXImKTsKLSAgICB2b2lkIGFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5j
ZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBJUEM6Ok1lc3Nh
Z2VSZWNlaXZlciYpOwotICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5n
UmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpOwot
ICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3Nh
Z2VSZWNlaXZlck5hbWUpOworICAgIHZvaWQgYWRkTWVzc2FnZVJlY2VpdmVyKElQQzo6UmVjZWl2
ZXJOYW1lLCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYpOworICAgIHZvaWQgYWRkTWVzc2FnZVJlY2Vp
dmVyKElQQzo6UmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBJUEM6Ok1lc3Nh
Z2VSZWNlaXZlciYpOworICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6UmVjZWl2
ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKTsKKyAgICB2b2lkIHJlbW92ZU1lc3NhZ2VS
ZWNlaXZlcihJUEM6OlJlY2VpdmVyTmFtZSk7CiAgICAgdm9pZCByZW1vdmVNZXNzYWdlUmVjZWl2
ZXIoSVBDOjpNZXNzYWdlUmVjZWl2ZXImKTsKICAgICAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KLSAgICB2b2lkIGFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNz
YWdlUmVjZWl2ZXJOYW1lLCBPYmplY3RJZGVudGlmaWVyPFQ+IGRlc3RpbmF0aW9uSUQsIElQQzo6
TWVzc2FnZVJlY2VpdmVyJiByZWNlaXZlcikKKyAgICB2b2lkIGFkZE1lc3NhZ2VSZWNlaXZlcihJ
UEM6OlJlY2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBPYmplY3RJZGVudGlmaWVyPFQ+
IGRlc3RpbmF0aW9uSUQsIElQQzo6TWVzc2FnZVJlY2VpdmVyJiByZWNlaXZlcikKICAgICB7CiAg
ICAgICAgIGFkZE1lc3NhZ2VSZWNlaXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlv
bklELnRvVUludDY0KCksIHJlY2VpdmVyKTsKICAgICB9CiAgICAgCiAgICAgdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+Ci0gICAgdm9pZCByZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZl
cmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgT2JqZWN0SWRlbnRpZmllcjxUPiBkZXN0aW5hdGlv
bklEKQorICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6UmVjZWl2ZXJOYW1lIG1l
c3NhZ2VSZWNlaXZlck5hbWUsIE9iamVjdElkZW50aWZpZXI8VD4gZGVzdGluYXRpb25JRCkKICAg
ICB7CiAgICAgICAgIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1lLCBk
ZXN0aW5hdGlvbklELnRvVUludDY0KCkpOwogICAgIH0KQEAgLTEzOCw3ICsxMzgsNyBAQCBwcml2
YXRlOgogICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3Qgb3Zl
cnJpZGU7CiAKICAgICAvLyBJUEM6OkNvbm5lY3Rpb246OkNsaWVudC4KLSAgICB2b2lkIGRpZFJl
Y2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OlN0cmluZ1JlZmVyZW5j
ZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZSkg
ZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiwgSVBDOjpNZXNzYWdlTmFtZSkgZmluYWw7CiAgICAgdm9pZCBkaWRDbG9zZShJUEM6OkNvbm5l
Y3Rpb24mKSBvdmVycmlkZTsKIAogICAgIHZvaWQgc2h1dERvd24oKTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHkuaAkocmV2aXNpb24gMjYwNzY0KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvQXBw
bGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtODYs
OCArODYsNiBAQCBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nJiBwYXltZW50
Q29vcmRpbmF0b3JCb3VuZEludGVyZmFjZUlkZW50aWZpZXIoY29uc3QgV2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHkmKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nJiBwYXltZW50
Q29vcmRpbmF0b3JTb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoY29uc3QgV2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHkmKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgY29uc3QgU3RyaW5n
JiBwYXltZW50Q29vcmRpbmF0b3JTb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIo
Y29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmKSA9IDA7Ci0gICAgICAgIHZpcnR1YWwg
dm9pZCBwYXltZW50Q29vcmRpbmF0b3JBZGRNZXNzYWdlUmVjZWl2ZXIoV2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHkmLCBjb25zdCBJUEM6OlN0cmluZ1JlZmVyZW5jZSYsIElQQzo6TWVzc2FnZVJl
Y2VpdmVyJikgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgcGF5bWVudENvb3JkaW5hdG9yUmVt
b3ZlTWVzc2FnZVJlY2VpdmVyKFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JiwgY29uc3QgSVBD
OjpTdHJpbmdSZWZlcmVuY2UmKSA9IDA7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAg
ICAgdmlydHVhbCBVSVZpZXdDb250cm9sbGVyICpwYXltZW50Q29vcmRpbmF0b3JQcmVzZW50aW5n
Vmlld0NvbnRyb2xsZXIoY29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmKSA9IDA7CiAg
ICAgICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nJiBwYXltZW50Q29vcmRpbmF0b3JDVERhdGFDb25u
ZWN0aW9uU2VydmljZVR5cGUoY29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmKSA9IDA7
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eUNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVk
L0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EubW0JKHJldmlz
aW9uIDI2MDc2NCkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L2NvY29hL1dlYlBh
eW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTc5LDE1ICs3
OSwxMiBAQCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6V2ViUGF5bWVudENvCiAgICAgOiBt
X2NsaWVudChjbGllbnQpCiAgICAgLCBtX2Nhbk1ha2VQYXltZW50c1F1ZXVlKFdvcmtRdWV1ZTo6
Y3JlYXRlKCJjb20uYXBwbGUuV2ViS2l0LkNhbk1ha2VQYXltZW50cyIpKQogewotICAgIG1fY2xp
ZW50LnBheW1lbnRDb29yZGluYXRvckFkZE1lc3NhZ2VSZWNlaXZlcigqdGhpcywgTWVzc2FnZXM6
OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksICp0aGlz
KTsKIH0KIAogV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6On5XZWJQYXltZW50Q29vcmRpbmF0
b3JQcm94eSgpCiB7CiAgICAgaWYgKG1fc3RhdGUgIT0gU3RhdGU6OklkbGUpCiAgICAgICAgIGhp
ZGVQYXltZW50VUkoKTsKLQotICAgIG1fY2xpZW50LnBheW1lbnRDb29yZGluYXRvclJlbW92ZU1l
c3NhZ2VSZWNlaXZlcigqdGhpcywgTWVzc2FnZXM6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5
OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpOwogfQogCiB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRv
clByb3h5OjpwbGF0Zm9ybUNhbk1ha2VQYXltZW50c1dpdGhBY3RpdmVDYXJkKGNvbnN0IFN0cmlu
ZyYgbWVyY2hhbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGRvbWFpbk5hbWUsIFdURjo6RnVu
Y3Rpb248dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvU2hhcmVkL0NvY29hL0F1eGlsaWFyeVByb2Nlc3NDb2NvYS5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9BdXhpbGlhcnlQcm9jZXNzQ29jb2EubW0JKHJldmlz
aW9uIDI2MDc2NCkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0F1eGlsaWFyeVByb2Nl
c3NDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMzIsOSArMzIsOSBAQAogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAotdm9pZCBBdXhpbGlhcnlQcm9jZXNzOjpkaWRSZWNlaXZlSW52YWxpZE1lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVy
TmFtZSwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUpCit2b2lkIEF1eGlsaWFyeVBy
b2Nlc3M6OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1l
c3NhZ2VOYW1lIG1lc3NhZ2VOYW1lKQogewotICAgIHNldENyYXNoUmVwb3J0QXBwbGljYXRpb25T
cGVjaWZpY0luZm9ybWF0aW9uKChfX2JyaWRnZSBDRlN0cmluZ1JlZilbTlNTdHJpbmcgc3RyaW5n
V2l0aEZvcm1hdDpAIlJlY2VpdmVkIGludmFsaWQgbWVzc2FnZTogJyVzOjolcyciLCBtZXNzYWdl
UmVjZWl2ZXJOYW1lLnRvU3RyaW5nKCkuZGF0YSgpLCBtZXNzYWdlTmFtZS50b1N0cmluZygpLmRh
dGEoKV0pOworICAgIHNldENyYXNoUmVwb3J0QXBwbGljYXRpb25TcGVjaWZpY0luZm9ybWF0aW9u
KChfX2JyaWRnZSBDRlN0cmluZ1JlZilbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIlJlY2Vp
dmVkIGludmFsaWQgbWVzc2FnZTogJyVzJyIsIGRlc2NyaXB0aW9uKG1lc3NhZ2VOYW1lKV0pOwog
ICAgIENSQVNIKCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFy
eVByb2Nlc3NQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmNwcAkocmV2aXNpb24gMjYwNzkwKQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTc4LDIyICsxNzgsMjIgQEAgYm9vbCBBdXhpbGlhcnlQcm9jZXNzUHJveHk6OnNlbmRNZXNz
YWdlKAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBBdXhpbGlhcnlQcm9jZXNzUHJveHk6
OmFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJO
YW1lLCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYgbWVzc2FnZVJlY2VpdmVyKQordm9pZCBBdXhpbGlh
cnlQcm9jZXNzUHJveHk6OmFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlJlY2VpdmVyTmFtZSBtZXNz
YWdlUmVjZWl2ZXJOYW1lLCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYgbWVzc2FnZVJlY2VpdmVyKQog
ewogICAgIG1fbWVzc2FnZVJlY2VpdmVyTWFwLmFkZE1lc3NhZ2VSZWNlaXZlcihtZXNzYWdlUmVj
ZWl2ZXJOYW1lLCBtZXNzYWdlUmVjZWl2ZXIpOwogfQogCi12b2lkIEF1eGlsaWFyeVByb2Nlc3NQ
cm94eTo6YWRkTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNl
aXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIElQQzo6TWVzc2FnZVJlY2VpdmVyJiBt
ZXNzYWdlUmVjZWl2ZXIpCit2b2lkIEF1eGlsaWFyeVByb2Nlc3NQcm94eTo6YWRkTWVzc2FnZVJl
Y2VpdmVyKElQQzo6UmVjZWl2ZXJOYW1lIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRl
c3RpbmF0aW9uSUQsIElQQzo6TWVzc2FnZVJlY2VpdmVyJiBtZXNzYWdlUmVjZWl2ZXIpCiB7CiAg
ICAgbV9tZXNzYWdlUmVjZWl2ZXJNYXAuYWRkTWVzc2FnZVJlY2VpdmVyKG1lc3NhZ2VSZWNlaXZl
ck5hbWUsIGRlc3RpbmF0aW9uSUQsIG1lc3NhZ2VSZWNlaXZlcik7CiB9CiAKLXZvaWQgQXV4aWxp
YXJ5UHJvY2Vzc1Byb3h5OjpyZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVu
Y2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCkKK3ZvaWQgQXV4
aWxpYXJ5UHJvY2Vzc1Byb3h5OjpyZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpSZWNlaXZlck5h
bWUgbWVzc2FnZVJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCkKIHsKICAgICBt
X21lc3NhZ2VSZWNlaXZlck1hcC5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVy
TmFtZSwgZGVzdGluYXRpb25JRCk7CiB9CiAKLXZvaWQgQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5Ojpy
ZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVy
TmFtZSkKK3ZvaWQgQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjpyZW1vdmVNZXNzYWdlUmVjZWl2ZXIo
SVBDOjpSZWNlaXZlck5hbWUgbWVzc2FnZVJlY2VpdmVyTmFtZSkKIHsKICAgICBtX21lc3NhZ2VS
ZWNlaXZlck1hcC5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSk7CiB9
CkBAIC0yNzgsOSArMjc4LDkgQEAgdm9pZCBBdXhpbGlhcnlQcm9jZXNzUHJveHk6OmNvbm5lY3Rp
b25XaQogewogfQogCi12b2lkIEF1eGlsaWFyeVByb2Nlc3NQcm94eTo6bG9nSW52YWxpZE1lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNz
YWdlUmVjZWl2ZXJOYW1lLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZSkKK3ZvaWQg
QXV4aWxpYXJ5UHJvY2Vzc1Byb3h5Ojpsb2dJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
IGNvbm5lY3Rpb24sIElQQzo6TWVzc2FnZU5hbWUgbWVzc2FnZU5hbWUpCiB7Ci0gICAgUkVMRUFT
RV9MT0dfRkFVTFQoSVBDLCAiUmVjZWl2ZWQgYW4gaW52YWxpZCBtZXNzYWdlICclIiBQVUJMSUNf
TE9HX1NUUklORyAiOjolIiBQVUJMSUNfTE9HX1NUUklORyAiJyBmcm9tIHRoZSAlIiBQVUJMSUNf
TE9HX1NUUklORyAiIHByb2Nlc3MuIiwgbWVzc2FnZVJlY2VpdmVyTmFtZS50b1N0cmluZygpLmRh
dGEoKSwgbWVzc2FnZU5hbWUudG9TdHJpbmcoKS5kYXRhKCksIHByb2Nlc3NOYW1lKCkuY2hhcmFj
dGVycygpKTsKKyAgICBSRUxFQVNFX0xPR19GQVVMVChJUEMsICJSZWNlaXZlZCBhbiBpbnZhbGlk
IG1lc3NhZ2UgJyUiIFBVQkxJQ19MT0dfU1RSSU5HICInIGZyb20gdGhlICUiIFBVQkxJQ19MT0df
U1RSSU5HICIgcHJvY2Vzcy4iLCBkZXNjcmlwdGlvbihtZXNzYWdlTmFtZSksIHByb2Nlc3NOYW1l
KCkuY2hhcmFjdGVycygpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaAkocmV2aXNp
b24gMjYwNzY0KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1By
b3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTc1LDE5ICs3NSwxOSBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiBtX2Nvbm5lY3Rpb24gPT0gJmNvbm5lY3Rpb247CiAgICAgfQogCi0gICAgdm9pZCBh
ZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFt
ZSwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImKTsKLSAgICB2b2lkIGFkZE1lc3NhZ2VSZWNlaXZlcihJ
UEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5h
dGlvbklELCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYpOwotICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJl
Y2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90
IGRlc3RpbmF0aW9uSUQpOwotICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6U3Ry
aW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUpOworICAgIHZvaWQgYWRkTWVzc2FnZVJl
Y2VpdmVyKElQQzo6UmVjZWl2ZXJOYW1lLCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYpOworICAgIHZv
aWQgYWRkTWVzc2FnZVJlY2VpdmVyKElQQzo6UmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5h
dGlvbklELCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYpOworICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJl
Y2VpdmVyKElQQzo6UmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKTsKKyAgICB2
b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlJlY2VpdmVyTmFtZSk7CiAgICAgCiAgICAg
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAgdm9pZCBhZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpT
dHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgT2JqZWN0SWRlbnRpZmllcjxUPiBk
ZXN0aW5hdGlvbklELCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYgcmVjZWl2ZXIpCisgICAgdm9pZCBh
ZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpSZWNlaXZlck5hbWUgbWVzc2FnZVJlY2VpdmVyTmFtZSwg
T2JqZWN0SWRlbnRpZmllcjxUPiBkZXN0aW5hdGlvbklELCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYg
cmVjZWl2ZXIpCiAgICAgewogICAgICAgICBhZGRNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2Vp
dmVyTmFtZSwgZGVzdGluYXRpb25JRC50b1VJbnQ2NCgpLCByZWNlaXZlcik7CiAgICAgfQogICAg
IAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2Vp
dmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIE9iamVjdElkZW50
aWZpZXI8VD4gZGVzdGluYXRpb25JRCkKKyAgICB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihJ
UEM6OlJlY2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBPYmplY3RJZGVudGlmaWVyPFQ+
IGRlc3RpbmF0aW9uSUQpCiAgICAgewogICAgICAgICByZW1vdmVNZXNzYWdlUmVjZWl2ZXIobWVz
c2FnZVJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRC50b1VJbnQ2NCgpKTsKICAgICB9CkBAIC0x
MTksNyArMTE5LDcgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgZGlzcGF0Y2hNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwogICAgIGJvb2wgZGlzcGF0Y2hTeW5jTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpF
bmNvZGVyPiYpOwogCi0gICAgdm9pZCBsb2dJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
LCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6OlN0cmluZ1Jl
ZmVyZW5jZSBtZXNzYWdlTmFtZSk7CisgICAgdm9pZCBsb2dJbnZhbGlkTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VOYW1lKTsKICAgICB2aXJ0dWFsIEFTQ0lJTGl0ZXJhbCBw
cm9jZXNzTmFtZSgpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBnZXRMYXVuY2hPcHRp
b25zKFByb2Nlc3NMYXVuY2hlcjo6TGF1bmNoT3B0aW9ucyYpOwpAQCAtMTUwLDcgKzE1MCw3IEBA
IGJvb2wgQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjpzZW5kKFQmJiBtZXMKIHsKICAgICBDT01QSUxF
X0FTU0VSVCghVDo6aXNTeW5jLCBBc3luY01lc3NhZ2VFeHBlY3RlZCk7CiAKLSAgICBhdXRvIGVu
Y29kZXIgPSBtYWtlVW5pcXVlPElQQzo6RW5jb2Rlcj4oVDo6cmVjZWl2ZXJOYW1lKCksIFQ6Om5h
bWUoKSwgZGVzdGluYXRpb25JRCk7CisgICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZTxJUEM6
OkVuY29kZXI+KFQ6Om5hbWUoKSwgZGVzdGluYXRpb25JRCk7CiAgICAgZW5jb2Rlci0+ZW5jb2Rl
KG1lc3NhZ2UuYXJndW1lbnRzKCkpOwogCiAgICAgcmV0dXJuIHNlbmRNZXNzYWdlKFdURk1vdmUo
ZW5jb2RlciksIHNlbmRPcHRpb25zKTsKQEAgLTE3NCw3ICsxNzQsNyBAQCB2b2lkIEF1eGlsaWFy
eVByb2Nlc3NQcm94eTo6c2VuZFdpdGhBc3luCiB7CiAgICAgQ09NUElMRV9BU1NFUlQoIVQ6Omlz
U3luYywgQXN5bmNNZXNzYWdlRXhwZWN0ZWQpOwogCi0gICAgYXV0byBlbmNvZGVyID0gbWFrZVVu
aXF1ZTxJUEM6OkVuY29kZXI+KFQ6OnJlY2VpdmVyTmFtZSgpLCBUOjpuYW1lKCksIGRlc3RpbmF0
aW9uSUQpOworICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWU8SVBDOjpFbmNvZGVyPihUOjpu
YW1lKCksIGRlc3RpbmF0aW9uSUQpOwogICAgIHVpbnQ2NF90IGxpc3RlbmVySUQgPSBJUEM6Om5l
eHRBc3luY1JlcGx5SGFuZGxlcklEKCk7CiAgICAgZW5jb2Rlci0+ZW5jb2RlKGxpc3RlbmVySUQp
OwogICAgIGVuY29kZXItPmVuY29kZShtZXNzYWdlLmFyZ3VtZW50cygpKTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAJKHJldmlz
aW9uIDI2MDc2NCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVBy
b3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTE5LDcgKzUxOSw3IEBAIHZvaWQgUHJvdmlzaW9u
YWxQYWdlUHJveHk6OmRpZFJlY2VpdmVNZXMKICAgICB9CiAjZW5kaWYKIAotICAgIExPRyhQcm9j
ZXNzU3dhcHBpbmcsICJVbmhhbmRsZWQgbWVzc2FnZSAlczo6JXMgZnJvbSBwcm92aXNpb25hbCBw
cm9jZXNzIiwgZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkudG9TdHJpbmcoKS5kYXRhKCks
IGRlY29kZXIubWVzc2FnZU5hbWUoKS50b1N0cmluZygpLmRhdGEoKSk7CisgICAgTE9HKFByb2Nl
c3NTd2FwcGluZywgIlVuaGFuZGxlZCBtZXNzYWdlICVzIGZyb20gcHJvdmlzaW9uYWwgcHJvY2Vz
cyIsIGRlc2NyaXB0aW9uKGRlY29kZXIubWVzc2FnZU5hbWUoKSkpOwogfQogCiB2b2lkIFByb3Zp
c2lvbmFsUGFnZVByb3h5OjpkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBj
b25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVu
Y29kZXI+JiByZXBseUVuY29kZXIpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNw
ZW5kZWRQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1N1c3BlbmRlZFBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDI2MDc2NCkKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYx
LDMzICs2MSwzMiBAQCBSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiBTdXNwZW5kZWRQYWdlUHJvCiB9
CiAKICNpZiAhTE9HX0RJU0FCTEVECi1zdGF0aWMgY29uc3QgSGFzaFNldDxJUEM6OlN0cmluZ1Jl
ZmVyZW5jZT4mIG1lc3NhZ2VOYW1lc1RvSWdub3JlV2hpbGVTdXNwZW5kZWQoKQorc3RhdGljIGNv
bnN0IEhhc2hTZXQ8dWludDE2X3Q+JiBtZXNzYWdlTmFtZXNUb0lnbm9yZVdoaWxlU3VzcGVuZGVk
KCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxJUEM6OlN0cmluZ1JlZmVy
ZW5jZT4+IG1lc3NhZ2VOYW1lczsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDx1
aW50MTZfdD4+IG1lc3NhZ2VOYW1lczsKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZs
YWc7CiAgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKLSAgICAgICAgbWVzc2FnZU5h
bWVzLmdldCgpLmFkZCgiQmFja0ZvcndhcmRBZGRJdGVtIik7Ci0gICAgICAgIG1lc3NhZ2VOYW1l
cy5nZXQoKS5hZGQoIkNsZWFyQWxsRWRpdENvbW1hbmRzIik7Ci0gICAgICAgIG1lc3NhZ2VOYW1l
cy5nZXQoKS5hZGQoIkRpZENoYW5nZUNvbnRlbnRTaXplIik7Ci0gICAgICAgIG1lc3NhZ2VOYW1l
cy5nZXQoKS5hZGQoIkRpZENoYW5nZU1haW5Eb2N1bWVudCIpOwotICAgICAgICBtZXNzYWdlTmFt
ZXMuZ2V0KCkuYWRkKCJEaWRDaGFuZ2VQcm9ncmVzcyIpOwotICAgICAgICBtZXNzYWdlTmFtZXMu
Z2V0KCkuYWRkKCJEaWRDb21taXRMb2FkRm9yRnJhbWUiKTsKLSAgICAgICAgbWVzc2FnZU5hbWVz
LmdldCgpLmFkZCgiRGlkRGVzdHJveU5hdmlnYXRpb24iKTsKLSAgICAgICAgbWVzc2FnZU5hbWVz
LmdldCgpLmFkZCgiRGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUiKTsKLSAgICAgICAgbWVz
c2FnZU5hbWVzLmdldCgpLmFkZCgiRGlkRmluaXNoUHJvZ3Jlc3MiKTsKLSAgICAgICAgbWVzc2Fn
ZU5hbWVzLmdldCgpLmFkZCgiRGlkQ29tcGxldGVQYWdlVHJhbnNpdGlvbiIpOwotICAgICAgICBt
ZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJEaWRGaXJzdExheW91dEZvckZyYW1lIik7Ci0gICAgICAg
IG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoIkRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZv
ckZyYW1lIik7Ci0gICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoIkRpZE5hdmlnYXRlV2l0
aE5hdmlnYXRpb25EYXRhIik7Ci0gICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoIkRpZFJl
YWNoTGF5b3V0TWlsZXN0b25lIik7Ci0gICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoIkRp
ZFJlc3RvcmVTY3JvbGxQb3NpdGlvbiIpOwotICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRk
KCJEaWRTdGFydFByb2dyZXNzIik7Ci0gICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoIkRp
ZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUiKTsKLSAgICAgICAgbWVzc2FnZU5hbWVzLmdl
dCgpLmFkZCgiRWRpdG9yU3RhdGVDaGFuZ2VkIik7Ci0gICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQo
KS5hZGQoIlBhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvckRpZENoYW5nZSIpOwotICAgICAgICBt
ZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJTZXRSZW5kZXJUcmVlU2l6ZSIpOwotICAgICAgICBtZXNz
YWdlTmFtZXMuZ2V0KCkuYWRkKCJTZXRTdGF0dXNUZXh0Iik7Ci0gICAgICAgIG1lc3NhZ2VOYW1l
cy5nZXQoKS5hZGQoIlNldE5ldHdvcmtSZXF1ZXN0c0luUHJvZ3Jlc3MiKTsKKyAgICAgICAgbWVz
c2FnZU5hbWVzLmdldCgpLmFkZChzdGF0aWNfY2FzdDx1aW50MTZfdD4oSVBDOjpNZXNzYWdlTmFt
ZTo6V2ViUGFnZVByb3h5X0JhY2tGb3J3YXJkQWRkSXRlbSkpOworICAgICAgICBtZXNzYWdlTmFt
ZXMuZ2V0KCkuYWRkKHN0YXRpY19jYXN0PHVpbnQxNl90PihJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQ
YWdlUHJveHlfQ2xlYXJBbGxFZGl0Q29tbWFuZHMpKTsKKyAgICAgICAgbWVzc2FnZU5hbWVzLmdl
dCgpLmFkZChzdGF0aWNfY2FzdDx1aW50MTZfdD4oSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZVBy
b3h5X0RpZENoYW5nZUNvbnRlbnRTaXplKSk7CisgICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5h
ZGQoc3RhdGljX2Nhc3Q8dWludDE2X3Q+KElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VQcm94eV9E
aWRDaGFuZ2VNYWluRG9jdW1lbnQpKTsKKyAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZChz
dGF0aWNfY2FzdDx1aW50MTZfdD4oSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZVByb3h5X0RpZENo
YW5nZVByb2dyZXNzKSk7CisgICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoc3RhdGljX2Nh
c3Q8dWludDE2X3Q+KElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VQcm94eV9EaWRDb21taXRMb2Fk
Rm9yRnJhbWUpKTsKKyAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZChzdGF0aWNfY2FzdDx1
aW50MTZfdD4oSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZVByb3h5X0RpZERlc3Ryb3lOYXZpZ2F0
aW9uKSk7CisgICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoc3RhdGljX2Nhc3Q8dWludDE2
X3Q+KElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VQcm94eV9EaWRGaW5pc2hEb2N1bWVudExvYWRG
b3JGcmFtZSkpOworICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKHN0YXRpY19jYXN0PHVp
bnQxNl90PihJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlUHJveHlfRGlkRmluaXNoUHJvZ3Jlc3Mp
KTsKKyAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZChzdGF0aWNfY2FzdDx1aW50MTZfdD4o
SVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZVByb3h5X0RpZEZpcnN0TGF5b3V0Rm9yRnJhbWUpKTsK
KyAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZChzdGF0aWNfY2FzdDx1aW50MTZfdD4oSVBD
OjpNZXNzYWdlTmFtZTo6V2ViUGFnZVByb3h5X0RpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91
dEZvckZyYW1lKSk7CisgICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoc3RhdGljX2Nhc3Q8
dWludDE2X3Q+KElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VQcm94eV9EaWROYXZpZ2F0ZVdpdGhO
YXZpZ2F0aW9uRGF0YSkpOworICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKHN0YXRpY19j
YXN0PHVpbnQxNl90PihJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlUHJveHlfRGlkUmVhY2hMYXlv
dXRNaWxlc3RvbmUpKTsKKyAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZChzdGF0aWNfY2Fz
dDx1aW50MTZfdD4oSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZVByb3h5X0RpZFJlc3RvcmVTY3Jv
bGxQb3NpdGlvbikpOworICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKHN0YXRpY19jYXN0
PHVpbnQxNl90PihJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlUHJveHlfRGlkU3RhcnRQcm9ncmVz
cykpOworICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKHN0YXRpY19jYXN0PHVpbnQxNl90
PihJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlUHJveHlfRGlkU3RhcnRQcm92aXNpb25hbExvYWRG
b3JGcmFtZSkpOworICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKHN0YXRpY19jYXN0PHVp
bnQxNl90PihJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlUHJveHlfRWRpdG9yU3RhdGVDaGFuZ2Vk
KSk7CisgICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoc3RhdGljX2Nhc3Q8dWludDE2X3Q+
KElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VQcm94eV9QYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29s
b3JEaWRDaGFuZ2UpKTsKKyAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZChzdGF0aWNfY2Fz
dDx1aW50MTZfdD4oSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZVByb3h5X1NldFJlbmRlclRyZWVT
aXplKSk7CisgICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoc3RhdGljX2Nhc3Q8dWludDE2
X3Q+KElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VQcm94eV9TZXRTdGF0dXNUZXh0KSk7CisgICAg
ICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoc3RhdGljX2Nhc3Q8dWludDE2X3Q+KElQQzo6TWVz
c2FnZU5hbWU6OldlYlBhZ2VQcm94eV9TZXROZXR3b3JrUmVxdWVzdHNJblByb2dyZXNzKSk7CiAg
ICAgfSk7CiAKICAgICByZXR1cm4gbWVzc2FnZU5hbWVzOwpAQCAtMjU0LDggKzI1Myw4IEBAIHZv
aWQgU3VzcGVuZGVkUGFnZVByb3h5OjpkaWRSZWNlaXZlTWVzc2EKICAgICB9CiAKICNpZiAhTE9H
X0RJU0FCTEVECi0gICAgaWYgKCFtZXNzYWdlTmFtZXNUb0lnbm9yZVdoaWxlU3VzcGVuZGVkKCku
Y29udGFpbnMoZGVjb2Rlci5tZXNzYWdlTmFtZSgpKSkKLSAgICAgICAgTE9HKFByb2Nlc3NTd2Fw
cGluZywgIlN1c3BlbmRlZFBhZ2VQcm94eSByZWNlaXZlZCB1bmV4cGVjdGVkIFdlYlBhZ2VQcm94
eSBtZXNzYWdlICclcyciLCBkZWNvZGVyLm1lc3NhZ2VOYW1lKCkudG9TdHJpbmcoKS5kYXRhKCkp
OworICAgIGlmICghbWVzc2FnZU5hbWVzVG9JZ25vcmVXaGlsZVN1c3BlbmRlZCgpLmNvbnRhaW5z
KHN0YXRpY19jYXN0PHVpbnQxNl90PihkZWNvZGVyLm1lc3NhZ2VOYW1lKCkpKSkKKyAgICAgICAg
TE9HKFByb2Nlc3NTd2FwcGluZywgIlN1c3BlbmRlZFBhZ2VQcm94eSByZWNlaXZlZCB1bmV4cGVj
dGVkIFdlYlBhZ2VQcm94eSBtZXNzYWdlICclcyciLCBkZXNjcmlwdGlvbihkZWNvZGVyLm1lc3Nh
Z2VOYW1lKCkpKTsKICNlbmRpZgogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaAkocmV2aXNpb24gMjYwNzY0KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTIyNzcsOCArMjI3Nyw2IEBAIHByaXZh
dGU6CiAgICAgY29uc3QgU3RyaW5nJiBwYXltZW50Q29vcmRpbmF0b3JCb3VuZEludGVyZmFjZUlk
ZW50aWZpZXIoY29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmKSBmaW5hbDsKICAgICBj
b25zdCBTdHJpbmcmIHBheW1lbnRDb29yZGluYXRvclNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRl
bnRpZmllcihjb25zdCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYpIGZpbmFsOwogICAgIGNv
bnN0IFN0cmluZyYgcGF5bWVudENvb3JkaW5hdG9yU291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJ
ZGVudGlmaWVyKGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JikgZmluYWw7Ci0gICAg
dm9pZCBwYXltZW50Q29vcmRpbmF0b3JBZGRNZXNzYWdlUmVjZWl2ZXIoV2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHkmLCBjb25zdCBJUEM6OlN0cmluZ1JlZmVyZW5jZSYsIElQQzo6TWVzc2FnZVJl
Y2VpdmVyJikgZmluYWw7Ci0gICAgdm9pZCBwYXltZW50Q29vcmRpbmF0b3JSZW1vdmVNZXNzYWdl
UmVjZWl2ZXIoV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmLCBjb25zdCBJUEM6OlN0cmluZ1Jl
ZmVyZW5jZSYpIGZpbmFsOwogI2VuZGlmCiAjaWYgRU5BQkxFKEFQUExFX1BBWSkgJiYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICAgICBVSVZpZXdDb250cm9sbGVyICpwYXltZW50Q29vcmRpbmF0b3JQ
cmVzZW50aW5nVmlld0NvbnRyb2xsZXIoY29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkm
KSBmaW5hbDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5j
cHAJKHJldmlzaW9uIDI2MDc2NCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODUyLDE3ICs4NTIsMTIgQEAgdm9pZCBXZWJQ
cm9jZXNzUG9vbDo6c2V0SW52YWxpZE1lc3NhZ2VDYQogICAgIHNfaW52YWxpZE1lc3NhZ2VDYWxs
YmFjayA9IGludmFsaWRNZXNzYWdlQ2FsbGJhY2s7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1Bvb2w6
OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShjb25zdCBJUEM6OlN0cmluZ1JlZmVyZW5jZSYgbWVz
c2FnZVJlY2VpdmVyTmFtZSwgY29uc3QgSVBDOjpTdHJpbmdSZWZlcmVuY2UmIG1lc3NhZ2VOYW1l
KQordm9pZCBXZWJQcm9jZXNzUG9vbDo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6TWVz
c2FnZU5hbWUgbWVzc2FnZU5hbWUpCiB7CiAgICAgaWYgKCFzX2ludmFsaWRNZXNzYWdlQ2FsbGJh
Y2spCiAgICAgICAgIHJldHVybjsKIAotICAgIFN0cmluZ0J1aWxkZXIgbWVzc2FnZU5hbWVTdHJp
bmdCdWlsZGVyOwotICAgIG1lc3NhZ2VOYW1lU3RyaW5nQnVpbGRlci5hcHBlbmRDaGFyYWN0ZXJz
KG1lc3NhZ2VSZWNlaXZlck5hbWUuZGF0YSgpLCBtZXNzYWdlUmVjZWl2ZXJOYW1lLnNpemUoKSk7
Ci0gICAgbWVzc2FnZU5hbWVTdHJpbmdCdWlsZGVyLmFwcGVuZCgnLicpOwotICAgIG1lc3NhZ2VO
YW1lU3RyaW5nQnVpbGRlci5hcHBlbmRDaGFyYWN0ZXJzKG1lc3NhZ2VOYW1lLmRhdGEoKSwgbWVz
c2FnZU5hbWUuc2l6ZSgpKTsKLQotICAgIHNfaW52YWxpZE1lc3NhZ2VDYWxsYmFjayh0b0FQSShB
UEk6OlN0cmluZzo6Y3JlYXRlKG1lc3NhZ2VOYW1lU3RyaW5nQnVpbGRlci50b1N0cmluZygpKS5w
dHIoKSkpOworICAgIHNfaW52YWxpZE1lc3NhZ2VDYWxsYmFjayh0b0FQSShBUEk6OlN0cmluZzo6
Y3JlYXRlKGRlc2NyaXB0aW9uKG1lc3NhZ2VOYW1lKSkucHRyKCkpKTsKIH0KIAogdm9pZCBXZWJQ
cm9jZXNzUG9vbDo6cmVzb2x2ZVBhdGhzRm9yU2FuZGJveEV4dGVuc2lvbnMoKQpAQCAtMTY3Mywy
MiArMTY2OCwyMiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpzeW50aGVzaXplQXBwSXNCYWNrCiAg
ICAgZW5zdXJlTmV0d29ya1Byb2Nlc3MoKS5zeW50aGVzaXplQXBwSXNCYWNrZ3JvdW5kKGJhY2tn
cm91bmQpOwogfQogCi12b2lkIFdlYlByb2Nlc3NQb29sOjphZGRNZXNzYWdlUmVjZWl2ZXIoSVBD
OjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpNZXNzYWdlUmVjZWl2
ZXImIG1lc3NhZ2VSZWNlaXZlcikKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmFkZE1lc3NhZ2VSZWNl
aXZlcihJUEM6OlJlY2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6Ok1lc3NhZ2VS
ZWNlaXZlciYgbWVzc2FnZVJlY2VpdmVyKQogewogICAgIG1fbWVzc2FnZVJlY2VpdmVyTWFwLmFk
ZE1lc3NhZ2VSZWNlaXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1lLCBtZXNzYWdlUmVjZWl2ZXIpOwog
fQogCi12b2lkIFdlYlByb2Nlc3NQb29sOjphZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdS
ZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgSVBD
OjpNZXNzYWdlUmVjZWl2ZXImIG1lc3NhZ2VSZWNlaXZlcikKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6
OmFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlJlY2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1l
LCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYgbWVzc2FnZVJl
Y2VpdmVyKQogewogICAgIG1fbWVzc2FnZVJlY2VpdmVyTWFwLmFkZE1lc3NhZ2VSZWNlaXZlciht
ZXNzYWdlUmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklELCBtZXNzYWdlUmVjZWl2ZXIpOwogfQog
Ci12b2lkIFdlYlByb2Nlc3NQb29sOjpyZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdS
ZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSkKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlbW92
ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlJlY2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1lKQog
ewogICAgIG1fbWVzc2FnZVJlY2VpdmVyTWFwLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihtZXNzYWdl
UmVjZWl2ZXJOYW1lKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVtb3ZlTWVzc2FnZVJl
Y2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90
IGRlc3RpbmF0aW9uSUQpCit2b2lkIFdlYlByb2Nlc3NQb29sOjpyZW1vdmVNZXNzYWdlUmVjZWl2
ZXIoSVBDOjpSZWNlaXZlck5hbWUgbWVzc2FnZVJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGlu
YXRpb25JRCkKIHsKICAgICBtX21lc3NhZ2VSZWNlaXZlck1hcC5yZW1vdmVNZXNzYWdlUmVjZWl2
ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRCk7CiB9CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgJKHJldmlzaW9uIDI2MDc2NCkKKysrIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgJKHdvcmtpbmcgY29weSkKQEAg
LTE0OCwyMSArMTQ4LDIxIEBAIHB1YmxpYzoKICAgICAgICAgbV9zdXBwbGVtZW50cy5hZGQoVDo6
c3VwcGxlbWVudE5hbWUoKSwgVDo6Y3JlYXRlKHRoaXMpKTsKICAgICB9CiAKLSAgICB2b2lkIGFk
ZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1l
LCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYpOwotICAgIHZvaWQgYWRkTWVzc2FnZVJlY2VpdmVyKElQ
Qzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0
aW9uSUQsIElQQzo6TWVzc2FnZVJlY2VpdmVyJik7Ci0gICAgdm9pZCByZW1vdmVNZXNzYWdlUmVj
ZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSk7Ci0gICAgdm9p
ZCByZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2Vp
dmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCk7CisgICAgdm9pZCBhZGRNZXNzYWdlUmVj
ZWl2ZXIoSVBDOjpSZWNlaXZlck5hbWUsIElQQzo6TWVzc2FnZVJlY2VpdmVyJik7CisgICAgdm9p
ZCBhZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0
aW9uSUQsIElQQzo6TWVzc2FnZVJlY2VpdmVyJik7CisgICAgdm9pZCByZW1vdmVNZXNzYWdlUmVj
ZWl2ZXIoSVBDOjpSZWNlaXZlck5hbWUpOworICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVy
KElQQzo6UmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKTsKIAogICAgIFdlYkJh
Y2tGb3J3YXJkQ2FjaGUmIGJhY2tGb3J3YXJkQ2FjaGUoKSB7IHJldHVybiBtX2JhY2tGb3J3YXJk
Q2FjaGUuZ2V0KCk7IH0KICAgICAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgICB2b2lk
IGFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJO
YW1lLCBPYmplY3RJZGVudGlmaWVyPFQ+IGRlc3RpbmF0aW9uSUQsIElQQzo6TWVzc2FnZVJlY2Vp
dmVyJiByZWNlaXZlcikKKyAgICB2b2lkIGFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlJlY2VpdmVy
TmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBPYmplY3RJZGVudGlmaWVyPFQ+IGRlc3RpbmF0aW9u
SUQsIElQQzo6TWVzc2FnZVJlY2VpdmVyJiByZWNlaXZlcikKICAgICB7CiAgICAgICAgIGFkZE1l
c3NhZ2VSZWNlaXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklELnRvVUludDY0
KCksIHJlY2VpdmVyKTsKICAgICB9CiAgICAgCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0g
ICAgdm9pZCByZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2Fn
ZVJlY2VpdmVyTmFtZSwgT2JqZWN0SWRlbnRpZmllcjxUPiBkZXN0aW5hdGlvbklEKQorICAgIHZv
aWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6UmVjZWl2ZXJOYW1lIG1lc3NhZ2VSZWNlaXZl
ck5hbWUsIE9iamVjdElkZW50aWZpZXI8VD4gZGVzdGluYXRpb25JRCkKICAgICB7CiAgICAgICAg
IHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklE
LnRvVUludDY0KCkpOwogICAgIH0KQEAgLTQxNyw3ICs0MTcsNyBAQCBwdWJsaWM6CiAjZW5kaWYK
IAogICAgIHN0YXRpYyB2b2lkIHNldEludmFsaWRNZXNzYWdlQ2FsbGJhY2sodm9pZCAoKikoV0tT
dHJpbmdSZWYpKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoY29u
c3QgSVBDOjpTdHJpbmdSZWZlcmVuY2UmIG1lc3NhZ2VSZWNlaXZlck5hbWUsIGNvbnN0IElQQzo6
U3RyaW5nUmVmZXJlbmNlJiBtZXNzYWdlTmFtZSk7CisgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2
ZUludmFsaWRNZXNzYWdlKElQQzo6TWVzc2FnZU5hbWUpOwogCiAgICAgYm9vbCBpc1VSTEtub3du
SFNUU0hvc3QoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpIGNvbnN0OwogICAgIHZvaWQgcmVzZXRI
U1RTSG9zdHMoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94
eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1By
b3h5LmNwcAkocmV2aXNpb24gMjYwNzY0KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Byb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYxLDggKzE2MSw4IEBAIGNsYXNz
IFVJUHJveHlGb3JDYXB0dXJlIGZpbmFsIDogcHVibGljIFUKIHB1YmxpYzoKICAgICBleHBsaWNp
dCBVSVByb3h5Rm9yQ2FwdHVyZShXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MpIDogbV9wcm9jZXNz
KHByb2Nlc3MpIHsgfQogcHJpdmF0ZToKLSAgICB2b2lkIGFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6
OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6Ok1lc3NhZ2VSZWNlaXZl
ciYgcmVjZWl2ZXIpIGZpbmFsIHsgbV9wcm9jZXNzLmFkZE1lc3NhZ2VSZWNlaXZlcihtZXNzYWdl
UmVjZWl2ZXJOYW1lLCByZWNlaXZlcik7IH0KLSAgICB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZl
cihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lKSBmaW5hbCB7IG1fcHJv
Y2Vzcy5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSk7IH0KKyAgICB2
b2lkIGFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlJlY2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJO
YW1lLCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYgcmVjZWl2ZXIpIGZpbmFsIHsgbV9wcm9jZXNzLmFk
ZE1lc3NhZ2VSZWNlaXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1lLCByZWNlaXZlcik7IH0KKyAgICB2
b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlJlY2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2
ZXJOYW1lKSBmaW5hbCB7IG1fcHJvY2Vzcy5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJl
Y2VpdmVyTmFtZSk7IH0KICAgICBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24oKSBmaW5hbCB7
IHJldHVybiAqbV9wcm9jZXNzLmNvbm5lY3Rpb24oKTsgfQogICAgIExvZ2dlciYgbG9nZ2VyKCkg
ZmluYWwKICAgICB7CkBAIC0zNTIsNyArMzUyLDcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnBs
YXRmb3JtR2V0TGF1bmNoTwogYm9vbCBXZWJQcm9jZXNzUHJveHk6OnNob3VsZFNlbmRQZW5kaW5n
TWVzc2FnZShjb25zdCBQZW5kaW5nTWVzc2FnZSYgbWVzc2FnZSkKIHsKICNpZiBIQVZFKFNBTkRC
T1hfSVNTVUVfUkVBRF9FWFRFTlNJT05fVE9fUFJPQ0VTU19CWV9BVURJVF9UT0tFTikKLSAgICBp
ZiAobWVzc2FnZS5lbmNvZGVyLT5tZXNzYWdlTmFtZSgpID09ICJMb2FkUmVxdWVzdFdhaXRpbmdG
b3JQcm9jZXNzTGF1bmNoIikgeworICAgIGlmIChtZXNzYWdlLmVuY29kZXItPm1lc3NhZ2VOYW1l
KCkgPT0gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9Mb2FkUmVxdWVzdFdhaXRpbmdGb3JQcm9j
ZXNzTGF1bmNoKSB7CiAgICAgICAgIGF1dG8gYnVmZmVyID0gbWVzc2FnZS5lbmNvZGVyLT5idWZm
ZXIoKTsKICAgICAgICAgYXV0byBidWZmZXJTaXplID0gbWVzc2FnZS5lbmNvZGVyLT5idWZmZXJT
aXplKCk7CiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkRlY29kZXI+IGRlY29kZXIgPSBt
YWtlVW5pcXVlPElQQzo6RGVjb2Rlcj4oYnVmZmVyLCBidWZmZXJTaXplLCBudWxscHRyLCBWZWN0
b3I8SVBDOjpBdHRhY2htZW50PiB7IH0pOwpAQCAtODQwLDExICs4NDAsMTEgQEAgdm9pZCBXZWJQ
cm9jZXNzUHJveHk6OnByb2Nlc3NEaWRUZXJtaW5hdAogICAgIH0KIH0KIAotdm9pZCBXZWJQcm9j
ZXNzUHJveHk6OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5l
Y3Rpb24sIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIElQQzo6U3Ry
aW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lKQordm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZFJlY2Vp
dmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6TWVzc2Fn
ZU5hbWUgbWVzc2FnZU5hbWUpCiB7Ci0gICAgbG9nSW52YWxpZE1lc3NhZ2UoY29ubmVjdGlvbiwg
bWVzc2FnZVJlY2VpdmVyTmFtZSwgbWVzc2FnZU5hbWUpOworICAgIGxvZ0ludmFsaWRNZXNzYWdl
KGNvbm5lY3Rpb24sIG1lc3NhZ2VOYW1lKTsKIAotICAgIFdlYlByb2Nlc3NQb29sOjpkaWRSZWNl
aXZlSW52YWxpZE1lc3NhZ2UobWVzc2FnZVJlY2VpdmVyTmFtZSwgbWVzc2FnZU5hbWUpOworICAg
IFdlYlByb2Nlc3NQb29sOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UobWVzc2FnZU5hbWUpOwog
CiAgICAgLy8gVGVybWluYXRlIHRoZSBXZWJDb250ZW50IHByb2Nlc3MuCiAgICAgdGVybWluYXRl
KCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAkocmV2
aXNpb24gMjYwNzY0KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1NSw3ICs0NTUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBD
OjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBvdmVycmlkZTsKICAg
ICB2b2lkIGRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlk
UmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6U3RyaW5nUmVmZXJl
bmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1l
KSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mLCBJUEM6Ok1lc3NhZ2VOYW1lKSBvdmVycmlkZTsKIAogICAgIC8vIFJlc3BvbnNpdmVu
ZXNzVGltZXI6OkNsaWVudAogICAgIHZvaWQgZGlkQmVjb21lVW5yZXNwb25zaXZlKCkgb3ZlcnJp
ZGU7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJl
TWFuYWdlclByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5oCShyZXZpc2lvbiAyNjA3NjQpCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5
LmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDggKzUxLDggQEAgcHVibGljOgogICAgIGNsYXNzIENv
bm5lY3Rpb25Qcm94eSB7CiAgICAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIH5Db25uZWN0aW9u
UHJveHkoKSA9IGRlZmF1bHQ7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBhZGRNZXNzYWdlUmVjZWl2
ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UsIElQQzo6TWVzc2FnZVJlY2VpdmVyJikgPSAwOwotICAg
ICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJl
bmNlKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBhZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpS
ZWNlaXZlck5hbWUsIElQQzo6TWVzc2FnZVJlY2VpdmVyJikgPSAwOworICAgICAgICB2aXJ0dWFs
IHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6UmVjZWl2ZXJOYW1lKSA9IDA7CiAgICAg
ICAgIHZpcnR1YWwgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKCkgPSAwOwogICAgICAgICB2
aXJ0dWFsIGJvb2wgd2lsbFN0YXJ0Q2FwdHVyZShXZWJDb3JlOjpDYXB0dXJlRGV2aWNlOjpEZXZp
Y2VUeXBlKSBjb25zdCA9IDA7CiAgICAgICAgIHZpcnR1YWwgTG9nZ2VyJiBsb2dnZXIoKSA9IDA7
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJv
eHlDb2NvYS5tbQkocmV2aXNpb24gMjYwNzY0KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTI5MCwxNiArMjkw
LDYgQEAgY29uc3QgU3RyaW5nJiBXZWJQYWdlUHJveHk6OnBheW1lbnRDb29yZAogICAgIHJldHVy
biB3ZWJzaXRlRGF0YVN0b3JlKCkuY29uZmlndXJhdGlvbigpLnNvdXJjZUFwcGxpY2F0aW9uU2Vj
b25kYXJ5SWRlbnRpZmllcigpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cGF5bWVudENvb3Jk
aW5hdG9yQWRkTWVzc2FnZVJlY2VpdmVyKFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JiwgY29u
c3QgSVBDOjpTdHJpbmdSZWZlcmVuY2UmIG1lc3NhZ2VSZWNlaXZlck5hbWUsIElQQzo6TWVzc2Fn
ZVJlY2VpdmVyJiBtZXNzYWdlUmVjZWl2ZXIpCi17Ci0gICAgcHJvY2VzcygpLmFkZE1lc3NhZ2VS
ZWNlaXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1lLCBtX3dlYlBhZ2VJRCwgbWVzc2FnZVJlY2VpdmVy
KTsKLX0KLQotdm9pZCBXZWJQYWdlUHJveHk6OnBheW1lbnRDb29yZGluYXRvclJlbW92ZU1lc3Nh
Z2VSZWNlaXZlcihXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYsIGNvbnN0IElQQzo6U3RyaW5n
UmVmZXJlbmNlJiBtZXNzYWdlUmVjZWl2ZXJOYW1lKQotewotICAgIHByb2Nlc3MoKS5yZW1vdmVN
ZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSwgbV93ZWJQYWdlSUQpOwotfQotCiAj
ZW5kaWYKIAogI2lmIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQpJbmRleDogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5jcHAJKHJldmlzaW9uIDI2MDc2
NCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yMTEsMTEgKzIxMSwxMSBAQCB2b2lkIEdQVVByb2Nlc3NQcm94eTo6
ZGlkQ2xvc2UoSVBDOjpDb25uCiAgICAgZ3B1UHJvY2Vzc0NyYXNoZWQoKTsKIH0KIAotdm9pZCBH
UFVQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
IGNvbm5lY3Rpb24sIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIElQ
Qzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lKQordm9pZCBHUFVQcm9jZXNzUHJveHk6OmRp
ZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6
TWVzc2FnZU5hbWUgbWVzc2FnZU5hbWUpCiB7Ci0gICAgbG9nSW52YWxpZE1lc3NhZ2UoY29ubmVj
dGlvbiwgbWVzc2FnZVJlY2VpdmVyTmFtZSwgbWVzc2FnZU5hbWUpOworICAgIGxvZ0ludmFsaWRN
ZXNzYWdlKGNvbm5lY3Rpb24sIG1lc3NhZ2VOYW1lKTsKIAotICAgIFdlYlByb2Nlc3NQb29sOjpk
aWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UobWVzc2FnZVJlY2VpdmVyTmFtZSwgbWVzc2FnZU5hbWUp
OworICAgIFdlYlByb2Nlc3NQb29sOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UobWVzc2FnZU5h
bWUpOwogCiAgICAgLy8gVGVybWluYXRlIHRoZSBHUFUgcHJvY2Vzcy4KICAgICB0ZXJtaW5hdGUo
KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5
LmgJKHJldmlzaW9uIDI2MDc2NCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dQVS9HUFVQ
cm9jZXNzUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMTAwLDcgKzEwMCw3IEBAIHByaXZhdGU6
CiAgICAgLy8gSVBDOjpDb25uZWN0aW9uOjpDbGllbnQKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwogICAgIHZvaWQg
ZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZl
SW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVz
c2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUpIG92ZXJy
aWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYs
IElQQzo6TWVzc2FnZU5hbWUpIG92ZXJyaWRlOwogCiAjaWYgSEFWRShWSVNJQklMSVRZX1BST1BB
R0FUSU9OX1ZJRVcpCiAgICAgdm9pZCBkaWRDcmVhdGVDb250ZXh0Rm9yVmlzaWJpbGl0eVByb3Bh
Z2F0aW9uKExheWVySG9zdGluZ0NvbnRleHRJRCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAJKHJldmlz
aW9uIDI2MDc2NCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3Nyw5ICsyNzcsOSBAQCB2b2lkIE5l
dHdvcmtQcm9jZXNzUHJveHk6OmRpZENsb3NlKElQQzo6CiAgICAgbmV0d29ya1Byb2Nlc3NDcmFz
aGVkKCk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkUmVjZWl2ZUludmFsaWRN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpTdHJpbmdSZWZlcmVuY2Ug
bWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUpCit2
b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6TWVzc2FnZU5hbWUgbWVzc2FnZU5hbWUpCiB7Ci0g
ICAgbG9nSW52YWxpZE1lc3NhZ2UoY29ubmVjdGlvbiwgbWVzc2FnZVJlY2VpdmVyTmFtZSwgbWVz
c2FnZU5hbWUpOworICAgIGxvZ0ludmFsaWRNZXNzYWdlKGNvbm5lY3Rpb24sIG1lc3NhZ2VOYW1l
KTsKICAgICB0ZXJtaW5hdGUoKTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgJKHJldmlzaW9uIDI2MDc2
NCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94
eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNDUsNyArMjQ1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJy
aWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQ
Qzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jikgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIGRp
ZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OlN0cmluZ1JlZmVy
ZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFt
ZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiwgSVBDOjpNZXNzYWdlTmFtZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZl
U3luY05ldHdvcmtQcm9jZXNzUHJveHlNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVj
b2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jik7CiAKICAgICAvLyBNZXNzYWdl
IGhhbmRsZXJzCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblBy
b2Nlc3NQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuY3BwCShyZXZpc2lvbiAyNjA3NjQpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTIxNCw5ICsyMTQsOSBAQCB2b2lkIFBsdWdpblByb2Nlc3NQcm94eTo6ZGlkQ2xv
c2UoSVBDOjpDCiAgICAgcGx1Z2luUHJvY2Vzc0NyYXNoZWRPckZhaWxlZFRvTGF1bmNoKCk7CiB9
CiAKLXZvaWQgUGx1Z2luUHJvY2Vzc1Byb3h5OjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVj
ZWl2ZXJOYW1lLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZSkKK3ZvaWQgUGx1Z2lu
UHJvY2Vzc1Byb3h5OjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBj
b25uZWN0aW9uLCBJUEM6Ok1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lKQogewotICAgIGxvZ0ludmFs
aWRNZXNzYWdlKGNvbm5lY3Rpb24sIG1lc3NhZ2VSZWNlaXZlck5hbWUsIG1lc3NhZ2VOYW1lKTsK
KyAgICBsb2dJbnZhbGlkTWVzc2FnZShjb25uZWN0aW9uLCBtZXNzYWdlTmFtZSk7CiAgICAgdGVy
bWluYXRlKCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luUHJvY2Vzc1Byb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuaAkocmV2aXNpb24gMjYwNzY0KQorKysgU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuaAkod29ya2luZyBj
b3B5KQpAQCAtMTA0LDcgKzEwNCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlU3lu
Y01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRy
PElQQzo6RW5jb2Rlcj4mKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZGlkQ2xvc2UoSVBDOjpDb25u
ZWN0aW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwg
SVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUpIG92ZXJyaWRlOworICAgIHZvaWQgZGlk
UmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZU5hbWUp
IG92ZXJyaWRlOwogCiAgICAgLy8gUHJvY2Vzc0xhdW5jaGVyOjpDbGllbnQKICAgICB2b2lkIGRp
ZEZpbmlzaExhdW5jaGluZyhQcm9jZXNzTGF1bmNoZXIqLCBJUEM6OkNvbm5lY3Rpb246OklkZW50
aWZpZXIpIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmNwcAkocmV2aXNpb24gMjYwNzY0KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OTMsNyArNzkzLDcgQEAgdm9pZCBXZWJQcm9j
ZXNzOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OgogICAgIH0KICNlbmRpZgogCi0gICAgTE9HX0VS
Uk9SKCJVbmhhbmRsZWQgd2ViIHByb2Nlc3MgbWVzc2FnZSAnJXM6OiVzJyAoZGVzdGluYXRpb246
ICUiIFBSSXU2NCAiIHBpZDogJWQpIiwgZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkudG9T
dHJpbmcoKS5kYXRhKCksIGRlY29kZXIubWVzc2FnZU5hbWUoKS50b1N0cmluZygpLmRhdGEoKSwg
ZGVjb2Rlci5kZXN0aW5hdGlvbklEKCksIHN0YXRpY19jYXN0PGludD4oZ2V0Q3VycmVudFByb2Nl
c3NJRCgpKSk7CisgICAgTE9HX0VSUk9SKCJVbmhhbmRsZWQgd2ViIHByb2Nlc3MgbWVzc2FnZSAn
JXMnIChkZXN0aW5hdGlvbjogJSIgUFJJdTY0ICIgcGlkOiAlZCkiLCBkZXNjcmlwdGlvbihkZWNv
ZGVyLm1lc3NhZ2VOYW1lKCkpLCBkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSwgc3RhdGljX2Nhc3Q8
aW50PihnZXRDdXJyZW50UHJvY2Vzc0lEKCkpKTsKIH0KIAogV2ViRnJhbWUqIFdlYlByb2Nlc3M6
OndlYkZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlEKSBjb25zdApJbmRleDogU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5jcHAJ
KHJldmlzaW9uIDI2MDc2NCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJv
Y2Vzc0Nvbm5lY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Myw3ICs3Myw3IEBAIHZvaWQg
R1BVUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZENsb3NlKElQQzoKIHsKIH0KIAotdm9pZCBHUFVQcm9j
ZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYs
IElQQzo6U3RyaW5nUmVmZXJlbmNlLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSkKK3ZvaWQgR1BVUHJv
Y2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
LCBJUEM6Ok1lc3NhZ2VOYW1lKQogewogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5oCShyZXZpc2lvbiAyNjA3NjQp
CisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTgwLDcgKzgwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZENs
b3NlKElQQzo6Q29ubmVjdGlvbiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CiAgICAgdm9pZCBkaWRS
ZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1
bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVJbnZh
bGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdl
UmVjZWl2ZXJOYW1lLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZSkgb3ZlcnJpZGU7
CisgICAgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBD
OjpNZXNzYWdlTmFtZSkgb3ZlcnJpZGU7CiAKICAgICBib29sIGRpc3BhdGNoTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKICAgICBib29sIGRpc3BhdGNoU3luY01lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6
RW5jb2Rlcj4mKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2Vi
SW5zcGVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3Bl
Y3Rvci9XZWJJbnNwZWN0b3IuaAkocmV2aXNpb24gMjYwNzY0KQorKysgU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNDks
NyArNDksNyBAQCBwdWJsaWM6CiAKICAgICAvLyBJUEM6OkNvbm5lY3Rpb246OkNsaWVudAogICAg
IHZvaWQgZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJikgb3ZlcnJpZGUgeyBjbG9zZSgpOyB9Ci0g
ICAgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpT
dHJpbmdSZWZlcmVuY2UsIElQQzo6U3RyaW5nUmVmZXJlbmNlKSBvdmVycmlkZSB7IGNsb3NlKCk7
IH0KKyAgICB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJ
UEM6Ok1lc3NhZ2VOYW1lKSBvdmVycmlkZSB7IGNsb3NlKCk7IH0KIAogICAgIHZvaWQgc2hvdygp
OwogICAgIHZvaWQgY2xvc2UoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNw
ZWN0b3IvV2ViSW5zcGVjdG9yVUkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJLmgJKHJldmlzaW9uIDI2MDc2NCkKKysrIFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUkuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBJUEM6OkNvbm5lY3Rp
b246OkNsaWVudAogICAgIHZvaWQgZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJikgb3ZlcnJpZGUg
eyAvKiBEbyBub3RoaW5nLCB0aGUgaW5zcGVjdGVkIHBhZ2UgcHJvY2VzcyBtYXkgaGF2ZSBjcmFz
aGVkIGFuZCBtYXkgYmUgZ2V0dGluZyByZXBsYWNlZC4gKi8gfQotICAgIHZvaWQgZGlkUmVjZWl2
ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6U3RyaW5nUmVmZXJlbmNlLCBJ
UEM6OlN0cmluZ1JlZmVyZW5jZSkgb3ZlcnJpZGUgeyBjbG9zZVdpbmRvdygpOyB9CisgICAgdm9p
ZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdl
TmFtZSkgb3ZlcnJpZGUgeyBjbG9zZVdpbmRvdygpOyB9CiAKICAgICAvLyBDYWxsZWQgYnkgV2Vi
SW5zcGVjdG9yVUkgbWVzc2FnZXMKICAgICB2b2lkIGVzdGFibGlzaENvbm5lY3Rpb24oV2ViUGFn
ZVByb3h5SWRlbnRpZmllciBpbnNwZWN0ZWRQYWdlSWRlbnRpZmllciwgY29uc3QgRGVidWdnYWJs
ZUluZm9EYXRhJiwgYm9vbCB1bmRlclRlc3QsIHVuc2lnbmVkIGluc3BlY3Rpb25MZXZlbCk7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAJKHJldmlzaW9uIDI2MDc2NCkKKysrIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTIxOSw3ICsyMTksNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbjo6ZGlkQ2xvc2UoCiAjZW5kaWYKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb246OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OlN0
cmluZ1JlZmVyZW5jZSwgSVBDOjpTdHJpbmdSZWZlcmVuY2UpCit2b2lkIE5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbjo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQ
Qzo6TWVzc2FnZU5hbWUpCiB7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oCShyZXZp
c2lvbiAyNjA3NjQpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtOTgsNyArOTgsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpE
ZWNvZGVyJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4m
KSBvdmVycmlkZTsKICAgICB2b2lkIGRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYpIG92ZXJyaWRl
OwotICAgIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQ
Qzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIElQQzo6U3RyaW5nUmVmZXJl
bmNlIG1lc3NhZ2VOYW1lKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VOYW1lKSBvdmVycmlkZTsKIAogICAg
IHZvaWQgZGlkRmluaXNoUGluZ0xvYWQodWludDY0X3QgcGluZ0xvYWRJZGVudGlmaWVyLCBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yJiYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJik7CiAgICAg
dm9pZCBkaWRGaW5pc2hQcmVjb25uZWN0aW9uKHVpbnQ2NF90IHByZWNvbm5lY3Rpb25JZGVudGlm
aWVyLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiYpOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9u
LmNwcAkocmV2aXNpb24gMjYwNzY0KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjgsNyAr
MTI4LDcgQEAgdm9pZCBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6ZGlkQ2xvc2UoSQogICAgIH0K
IH0KIAotdm9pZCBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZUludmFsaWRNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6U3RyaW5nUmVmZXJlbmNlLCBJUEM6OlN0cmluZ1Jl
ZmVyZW5jZSkKK3ZvaWQgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVJbnZhbGlk
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VOYW1lKQogewogfQogCkluZGV4
OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlv
bi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blByb2Nlc3NDb25uZWN0aW9uLmgJKHJldmlzaW9uIDI2MDc2NCkKKysrIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTY2LDcgKzY2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlk
UmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6
dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRDbG9zZShJ
UEM6OkNvbm5lY3Rpb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2
ZXJOYW1lLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZSkgb3ZlcnJpZGU7CisgICAg
dm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNz
YWdlTmFtZSkgb3ZlcnJpZGU7CiAKICAgICAvLyBNZXNzYWdlIGhhbmRsZXJzLgogICAgIHZvaWQg
ZGlkUmVjZWl2ZVN5bmNQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1v
dGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0Fy
ZWEubW0JKHJldmlzaW9uIDI2MDc2NCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMzg1LDcgKzM4NSw3IEBAIHZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0Fy
ZWE6OnVwZGF0ZVIKICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJl
YVByb3h5OjpXaWxsQ29tbWl0TGF5ZXJUcmVlKGxheWVyVHJhbnNhY3Rpb24udHJhbnNhY3Rpb25J
RCgpKSk7CiAKICAgICBNZXNzYWdlczo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6
Q29tbWl0TGF5ZXJUcmVlIG1lc3NhZ2UobGF5ZXJUcmFuc2FjdGlvbiwgc2Nyb2xsaW5nVHJhbnNh
Y3Rpb24pOwotICAgIGF1dG8gY29tbWl0RW5jb2RlciA9IG1ha2VVbmlxdWU8SVBDOjpFbmNvZGVy
PihNZXNzYWdlczo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6Q29tbWl0TGF5ZXJU
cmVlOjpyZWNlaXZlck5hbWUoKSwgTWVzc2FnZXM6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVh
UHJveHk6OkNvbW1pdExheWVyVHJlZTo6bmFtZSgpLCBtX2lkZW50aWZpZXIudG9VSW50NjQoKSk7
CisgICAgYXV0byBjb21taXRFbmNvZGVyID0gbWFrZVVuaXF1ZTxJUEM6OkVuY29kZXI+KE1lc3Nh
Z2VzOjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5OjpDb21taXRMYXllclRyZWU6Om5h
bWUoKSwgbV9pZGVudGlmaWVyLnRvVUludDY0KCkpOwogICAgIGNvbW1pdEVuY29kZXItPmVuY29k
ZShtZXNzYWdlLmFyZ3VtZW50cygpKTsKIAogICAgIC8vIEZJWE1FOiBNb3ZlIGFsbCBiYWNraW5n
IHN0b3JlIGZsdXNoaW5nIG1hbmFnZW1lbnQgdG8gUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmVDb2xs
ZWN0aW9uLgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>397815</attachid>
            <date>2020-04-27 23:57:13 -0700</date>
            <delta_ts>2020-04-28 08:42:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211112-20200427235712.patch</filename>
            <type>text/plain</type>
            <size>295929</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNjA3NjQpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDIwLTA0LTI3ICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVkdWNlIElQQyBvdmVyaGVhZCBm
b3IgbWVzc2FnZSByZWNlaXZlciBuYW1lIGFuZCBtZXNzYWdlIG5hbWUgdG8gMiBieXRlcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjExMTEyCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvRW51bVRy
YWl0cy5oOgorCiAyMDIwLTA0LTI2ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbQ29jb2FdIHN0b3AgdXNpbmcgb3V0IGFyZ3VtZW50cyBmb3IgZG9jdW1lbnQgYXR0
cmlidXRlcyB3aGVuIGNvbnZlcnRpbmcgdG8gYXR0cmlidXRlZCBzdHJpbmdzCkluZGV4OiBTb3Vy
Y2UvV1RGL3d0Zi9FbnVtVHJhaXRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvRW51
bVRyYWl0cy5oCShyZXZpc2lvbiAyNjA3NjQpCisrKyBTb3VyY2UvV1RGL3d0Zi9FbnVtVHJhaXRz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDkgQEAgc3RydWN0IEVudW1WYWx1ZUNoZWNr
ZXI8VCwgRW51bVZhbHVlczxFPgogICAgIH0KIH07CiAKLXRlbXBsYXRlPHR5cGVuYW1lIEUsIHR5
cGVuYW1lIFQsIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19lbnVtPEU+Ojp2YWx1ZSAmJiAhc3Rk
Ojppc19zYW1lPHN0ZDo6dW5kZXJseWluZ190eXBlX3Q8RT4sIGJvb2w+Ojp2YWx1ZT4qID0gbnVs
bHB0cj4KK3RlbXBsYXRlPHR5cGVuYW1lIFU+IGNsYXNzIEhhc0N1c3RvbUlzVmFsaWRFbnVtIDog
cHVibGljIHN0ZDo6ZmFsc2VfdHlwZSB7IH07CisKK3RlbXBsYXRlPHR5cGVuYW1lIEUsIHR5cGVu
YW1lIFQsIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19lbnVtPEU+Ojp2YWx1ZSAmJiAhc3RkOjpp
c19zYW1lPHN0ZDo6dW5kZXJseWluZ190eXBlX3Q8RT4sIGJvb2w+Ojp2YWx1ZSAmJiAhSGFzQ3Vz
dG9tSXNWYWxpZEVudW08RT46OnZhbHVlPiogPSBudWxscHRyPgogY29uc3RleHByIGJvb2wgaXNW
YWxpZEVudW0oVCB0KQogewogICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFQpID49IHN0ZDo6dW5k
ZXJseWluZ190eXBlX3Q8RT4oKSwgIkludGVncmFsIHR5cGUgbXVzdCBiZSBhdCBsZWFzdCB0aGUg
c2l6ZSBvZiB0aGUgdW5kZXJseWluZyBlbnVtIHR5cGUiKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lv
biAyNjA4MDYpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDI4NiBAQAorMjAyMC0wNC0yNyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNl
bkB3ZWJraXQub3JnPgorCisgICAgICAgIFJlZHVjZSBJUEMgb3ZlcmhlYWQgZm9yIG1lc3NhZ2Ug
cmVjZWl2ZXIgbmFtZSBhbmQgbWVzc2FnZSBuYW1lIHRvIDIgYnl0ZXMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMTExMgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtb3V0cHV0
LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBH
UFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0
OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UpOgor
ICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVN
ZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OmRpZFJlY2VpdmVTeW5jTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UpOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UHJvY2Vzczo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9pb3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NJT1MubW06CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpwYXltZW50Q29vcmRpbmF0b3JBZGRN
ZXNzYWdlUmVjZWl2ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6cGF5bWVudENvb3JkaW5hdG9yUmVtb3ZlTWVzc2FnZVJlY2VpdmVy
KTogRGVsZXRlZC4KKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHA6CisgICAg
ICAgIChJUEM6OkNvbm5lY3Rpb246OldhaXRGb3JNZXNzYWdlU3RhdGU6OldhaXRGb3JNZXNzYWdl
U3RhdGUpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjphZGRXb3JrUXVldWVNZXNzYWdlUmVj
ZWl2ZXIpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpyZW1vdmVXb3JrUXVldWVNZXNzYWdl
UmVjZWl2ZXIpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpkaXNwYXRjaFdvcmtRdWV1ZU1l
c3NhZ2VSZWNlaXZlck1lc3NhZ2UpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjphZGRUaHJl
YWRNZXNzYWdlUmVjZWl2ZXIpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpyZW1vdmVUaHJl
YWRNZXNzYWdlUmVjZWl2ZXIpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpkaXNwYXRjaFRo
cmVhZE1lc3NhZ2VSZWNlaXZlck1lc3NhZ2UpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpj
cmVhdGVTeW5jTWVzc2FnZUVuY29kZXIpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpzZW5k
TWVzc2FnZSk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OndhaXRGb3JNZXNzYWdlKToKKyAg
ICAgICAgKElQQzo6Q29ubmVjdGlvbjo6c2VuZFN5bmNNZXNzYWdlKToKKyAgICAgICAgKElQQzo6
Q29ubmVjdGlvbjo6d2FpdEZvclN5bmNSZXBseSk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246
OnByb2Nlc3NJbmNvbWluZ01lc3NhZ2UpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpkaXNw
YXRjaFN5bmNNZXNzYWdlKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6ZGlzcGF0Y2hEaWRS
ZWNlaXZlSW52YWxpZE1lc3NhZ2UpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpkaXNwYXRj
aE1lc3NhZ2UpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpkaXNwYXRjaE1lc3NhZ2VUb1dv
cmtRdWV1ZVJlY2VpdmVyKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6ZGlzcGF0Y2hNZXNz
YWdlVG9UaHJlYWRSZWNlaXZlcik6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OmRpc3BhdGNo
SW5jb21pbmdNZXNzYWdlcyk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaDoK
KyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6c2VuZCk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rp
b246OnNlbmRXaXRoQXN5bmNSZXBseSk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnNlbmRT
eW5jKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6d2FpdEZvckFuZERpc3BhdGNoSW1tZWRp
YXRlbHkpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9EZWNvZGVyLmNwcDoKKyAgICAgICAgKiBQ
bGF0Zm9ybS9JUEMvRGVjb2Rlci5oOgorICAgICAgICAoSVBDOjpEZWNvZGVyOjptZXNzYWdlUmVj
ZWl2ZXJOYW1lIGNvbnN0KToKKyAgICAgICAgKElQQzo6RGVjb2Rlcjo6bWVzc2FnZU5hbWUgY29u
c3QpOgorICAgICAgICAoSVBDOjpEZWNvZGVyOjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpEZWNv
ZGVyOjpvcGVyYXRvcj4+KToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvRW5jb2Rlci5jcHA6Cisg
ICAgICAgIChJUEM6OkVuY29kZXI6OkVuY29kZXIpOgorICAgICAgICAoSVBDOjpFbmNvZGVyOjpl
bmNvZGVIZWFkZXIpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9FbmNvZGVyLmg6CisgICAgICAg
ICogUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaDoKKyAgICAgICAgKElQQzo6aGFuZGxlTWVz
c2FnZUFzeW5jKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVyTWFwLmNw
cDoKKyAgICAgICAgKElQQzo6TWVzc2FnZVJlY2VpdmVyTWFwOjphZGRNZXNzYWdlUmVjZWl2ZXIp
OgorICAgICAgICAoSVBDOjpNZXNzYWdlUmVjZWl2ZXJNYXA6OnJlbW92ZU1lc3NhZ2VSZWNlaXZl
cik6CisgICAgICAgIChJUEM6Ok1lc3NhZ2VSZWNlaXZlck1hcDo6ZGlzcGF0Y2hNZXNzYWdlKToK
KyAgICAgICAgKElQQzo6TWVzc2FnZVJlY2VpdmVyTWFwOjpkaXNwYXRjaFN5bmNNZXNzYWdlKToK
KyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVyTWFwLmg6CisgICAgICAgICog
UGxhdGZvcm0vSVBDL01lc3NhZ2VTZW5kZXIuaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvY29j
b2EvQ29ubmVjdGlvbkNvY29hLm1tOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpvcGVuKToK
KyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6c2VuZE1lc3NhZ2UpOgorICAgICAgICAoSVBDOjpD
b25uZWN0aW9uOjpzZW5kT3V0Z29pbmdNZXNzYWdlKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlv
bjo6cmVjZWl2ZVNvdXJjZUV2ZW50SGFuZGxlcik6CisgICAgICAgICogUGxhdGZvcm0vSVBDL2Nv
Y29hL01hY2hNZXNzYWdlLmNwcDoKKyAgICAgICAgKElQQzo6TWFjaE1lc3NhZ2U6OmNyZWF0ZSk6
CisgICAgICAgIChJUEM6Ok1hY2hNZXNzYWdlOjpNYWNoTWVzc2FnZSk6CisgICAgICAgICogUGxh
dGZvcm0vSVBDL2NvY29hL01hY2hNZXNzYWdlLmg6CisgICAgICAgIChJUEM6Ok1hY2hNZXNzYWdl
OjptZXNzYWdlUmVjZWl2ZXJOYW1lIGNvbnN0KToKKyAgICAgICAgKElQQzo6TWFjaE1lc3NhZ2U6
Om1lc3NhZ2VOYW1lIGNvbnN0KToKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3ND
b25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmRp
ZFJlY2VpdmVJbnZhbGlkTWVzc2FnZSk6CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9XZWJQcm9j
ZXNzQ29ubmVjdGlvbi5oOgorICAgICAgICAqIFNjcmlwdHMvTWFrZWZpbGU6CisgICAgICAgICog
U2NyaXB0cy9nZW5lcmF0ZS1tZXNzYWdlLXJlY2VpdmVyLnB5OgorICAgICAgICAobWFpbik6Cisg
ICAgICAgICogU2NyaXB0cy93ZWJraXQvTGVnYWN5TWVzc2FnZXMtZXhwZWN0ZWQuaDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9MZWdhY3lNZXNzYWdlc1JlcGxpZXMtZXhwZWN0
ZWQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9NZXNzYWdlTmFtZXMuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKElQQzo6ZGVzY3JpcHRpb24pOgorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0L01lc3NhZ2VOYW1lcy5oOiBBZGRlZC4KKyAgICAgICAgKElQQzo6cmVjZWl2ZXJOYW1l
KToKKyAgICAgICAgKFdURjo6aXNWYWxpZEVudW0pOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
L01lc3NhZ2VSZWNlaXZlci1leHBlY3RlZC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogU2NyaXB0
cy93ZWJraXQvTWVzc2FnZVJlY2VpdmVyU3VwZXJjbGFzcy1leHBlY3RlZC5jcHA6IFJlbW92ZWQu
CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvTWVzc2FnZXMtZXhwZWN0ZWQuaDogUmVtb3ZlZC4K
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9NZXNzYWdlc1JlcGxpZXMtZXhwZWN0ZWQuaDogUmVt
b3ZlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9NZXNzYWdlc1JlcGxpZXNTdXBlcmNsYXNz
UmVwbGllcy1leHBlY3RlZC5oOiBSZW1vdmVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L01l
c3NhZ2VzU3VwZXJjbGFzcy1leHBlY3RlZC5oOiBSZW1vdmVkLgorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0L21lc3NhZ2VzLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3QtbGVnYWN5
LW1lc3NhZ2VzLmluOiBSZW1vdmVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3QtbGVn
YWN5Lm1lc3NhZ2VzLmluOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0
L3Rlc3QtbGVnYWN5LW1lc3NhZ2VzLmluLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3Qt
bGVnYWN5TWVzc2FnZVJlY2VpdmVyLmNwcDogQWRkZWQuCisgICAgICAgIChNZXNzYWdlczo6V2Vi
UGFnZTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OnNlbmQpOgorICAgICAgICAoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlRlc3RNdWx0aXBsZUF0dHJpYnV0ZXM6OnNlbmQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjpkaWRSZWNlaXZlV2ViUGFnZU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlOjpkaWRSZWNlaXZlU3luY1dlYlBhZ2VNZXNzYWdlKToKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdC90ZXN0LWxlZ2FjeU1lc3NhZ2VzLmg6IEFkZGVkLgorICAgICAgICAoTWVzc2Fn
ZXM6OldlYlBhZ2U6Om1lc3NhZ2VSZWNlaXZlck5hbWUpOgorICAgICAgICAoTWVzc2FnZXM6Oldl
YlBhZ2U6OkxvYWRVUkw6Om5hbWUpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRV
Ukw6OkxvYWRVUkwpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRVUkw6OmFyZ3Vt
ZW50cyBjb25zdCk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFNvbWV0aGluZzo6
bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFNvbWV0aGluZzo6TG9hZFNv
bWV0aGluZyk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFNvbWV0aGluZzo6YXJn
dW1lbnRzIGNvbnN0KToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUb3VjaEV2ZW50Ojpu
YW1lKToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUb3VjaEV2ZW50OjpUb3VjaEV2ZW50
KToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUb3VjaEV2ZW50Ojphcmd1bWVudHMgY29u
c3QpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OkFkZEV2ZW50OjpuYW1lKToKKyAgICAg
ICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpBZGRFdmVudDo6QWRkRXZlbnQpOgorICAgICAgICAoTWVz
c2FnZXM6OldlYlBhZ2U6OkFkZEV2ZW50Ojphcmd1bWVudHMgY29uc3QpOgorICAgICAgICAoTWVz
c2FnZXM6OldlYlBhZ2U6OkxvYWRTb21ldGhpbmdFbHNlOjpuYW1lKToKKyAgICAgICAgKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpMb2FkU29tZXRoaW5nRWxzZTo6TG9hZFNvbWV0aGluZ0Vsc2UpOgorICAg
ICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRTb21ldGhpbmdFbHNlOjphcmd1bWVudHMgY29u
c3QpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJlY2VpdmVQb2xpY3lEZWNpc2lv
bjo6bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVjZWl2ZVBvbGljeURl
Y2lzaW9uOjpEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24pOgorICAgICAgICAoTWVzc2FnZXM6Oldl
YlBhZ2U6OkRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbjo6YXJndW1lbnRzIGNvbnN0KToKKyAgICAg
ICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpDbG9zZTo6bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6
V2ViUGFnZTo6Q2xvc2U6OmFyZ3VtZW50cyBjb25zdCk6CisgICAgICAgIChNZXNzYWdlczo6V2Vi
UGFnZTo6UHJlZmVyZW5jZXNEaWRDaGFuZ2U6Om5hbWUpOgorICAgICAgICAoTWVzc2FnZXM6Oldl
YlBhZ2U6OlByZWZlcmVuY2VzRGlkQ2hhbmdlOjpQcmVmZXJlbmNlc0RpZENoYW5nZSk6CisgICAg
ICAgIChNZXNzYWdlczo6V2ViUGFnZTo6UHJlZmVyZW5jZXNEaWRDaGFuZ2U6OmFyZ3VtZW50cyBj
b25zdCk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6U2VuZERvdWJsZUFuZEZsb2F0Ojpu
YW1lKToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZW5kRG91YmxlQW5kRmxvYXQ6OlNl
bmREb3VibGVBbmRGbG9hdCk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6U2VuZERvdWJs
ZUFuZEZsb2F0Ojphcmd1bWVudHMgY29uc3QpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6
OlNlbmRJbnRzOjpuYW1lKToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZW5kSW50czo6
U2VuZEludHMpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlNlbmRJbnRzOjphcmd1bWVu
dHMgY29uc3QpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OkNyZWF0ZVBsdWdpbjo6bmFt
ZSk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6Q3JlYXRlUGx1Z2luOjpDcmVhdGVQbHVn
aW4pOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OkNyZWF0ZVBsdWdpbjo6YXJndW1lbnRz
IGNvbnN0KToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpSdW5KYXZhU2NyaXB0QWxlcnQ6
Om5hbWUpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlJ1bkphdmFTY3JpcHRBbGVydDo6
UnVuSmF2YVNjcmlwdEFsZXJ0KToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpSdW5KYXZh
U2NyaXB0QWxlcnQ6OmFyZ3VtZW50cyBjb25zdCk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFn
ZTo6R2V0UGx1Z2luczo6bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6R2V0UGx1
Z2luczo6R2V0UGx1Z2lucyk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6R2V0UGx1Z2lu
czo6YXJndW1lbnRzIGNvbnN0KToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRQbHVn
aW5Qcm9jZXNzQ29ubmVjdGlvbjo6bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6
R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKToK
KyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6
YXJndW1lbnRzIGNvbnN0KToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0TXVsdGlw
bGVBdHRyaWJ1dGVzOjpuYW1lKToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0TXVs
dGlwbGVBdHRyaWJ1dGVzOjphcmd1bWVudHMgY29uc3QpOgorICAgICAgICAoTWVzc2FnZXM6Oldl
YlBhZ2U6OlRlc3RQYXJhbWV0ZXJBdHRyaWJ1dGVzOjpuYW1lKToKKyAgICAgICAgKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpUZXN0UGFyYW1ldGVyQXR0cmlidXRlczo6VGVzdFBhcmFtZXRlckF0dHJpYnV0
ZXMpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RQYXJhbWV0ZXJBdHRyaWJ1dGVz
Ojphcmd1bWVudHMgY29uc3QpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlRlbXBsYXRl
VGVzdDo6bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6VGVtcGxhdGVUZXN0OjpU
ZW1wbGF0ZVRlc3QpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlRlbXBsYXRlVGVzdDo6
YXJndW1lbnRzIGNvbnN0KToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRWaWRlb0xh
eWVySUQ6Om5hbWUpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFZpZGVvTGF5ZXJJ
RDo6U2V0VmlkZW9MYXllcklEKToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRWaWRl
b0xheWVySUQ6OmFyZ3VtZW50cyBjb25zdCk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6
RGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb246Om5hbWUpOgorICAgICAgICAoTWVzc2FnZXM6
OldlYlBhZ2U6OkRpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uOjpEaWRDcmVhdGVXZWJQcm9j
ZXNzQ29ubmVjdGlvbik6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6RGlkQ3JlYXRlV2Vi
UHJvY2Vzc0Nvbm5lY3Rpb246OmFyZ3VtZW50cyBjb25zdCk6CisgICAgICAgIChNZXNzYWdlczo6
V2ViUGFnZTo6SW50ZXJwcmV0S2V5RXZlbnQ6Om5hbWUpOgorICAgICAgICAoTWVzc2FnZXM6Oldl
YlBhZ2U6OkludGVycHJldEtleUV2ZW50OjpJbnRlcnByZXRLZXlFdmVudCk6CisgICAgICAgIChN
ZXNzYWdlczo6V2ViUGFnZTo6SW50ZXJwcmV0S2V5RXZlbnQ6OmFyZ3VtZW50cyBjb25zdCk6Cisg
ICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6RGVwcmVjYXRlZE9wZXJhdGlvbjo6bmFtZSk6Cisg
ICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6RGVwcmVjYXRlZE9wZXJhdGlvbjo6RGVwcmVjYXRl
ZE9wZXJhdGlvbik6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6RGVwcmVjYXRlZE9wZXJh
dGlvbjo6YXJndW1lbnRzIGNvbnN0KToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpFeHBl
cmltZW50YWxPcGVyYXRpb246Om5hbWUpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OkV4
cGVyaW1lbnRhbE9wZXJhdGlvbjo6RXhwZXJpbWVudGFsT3BlcmF0aW9uKToKKyAgICAgICAgKE1l
c3NhZ2VzOjpXZWJQYWdlOjpFeHBlcmltZW50YWxPcGVyYXRpb246OmFyZ3VtZW50cyBjb25zdCk6
CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvdGVzdC1sZWdhY3lNZXNzYWdlc1JlcGxpZXMuaDog
QWRkZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXQvdGVzdC1tZXNzYWdlcy5pbjogUmVtb3Zl
ZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0LXN1cGVyY2xhc3MtbWVzc2FnZXMuaW46
IFJlbW92ZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXQvdGVzdC1zdXBlcmNsYXNzLm1lc3Nh
Z2VzLmluOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3Qtc3Vw
ZXJjbGFzcy1tZXNzYWdlcy5pbi4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0LXN1cGVy
Y2xhc3NNZXNzYWdlUmVjZWl2ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpUZXN0QXN5bmNNZXNzYWdlOjpjYWxsUmVwbHkpOgorICAgICAgICAoTWVzc2FnZXM6Oldl
YlBhZ2U6OlRlc3RBc3luY01lc3NhZ2U6OmNhbmNlbFJlcGx5KToKKyAgICAgICAgKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpUZXN0QXN5bmNNZXNzYWdlOjpzZW5kKToKKyAgICAgICAgKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpUZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJndW1lbnRzOjpjYWxsUmVwbHkpOgorICAg
ICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RBc3luY01lc3NhZ2VXaXRoTm9Bcmd1bWVudHM6
OmNhbmNlbFJlcGx5KToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0QXN5bmNNZXNz
YWdlV2l0aE5vQXJndW1lbnRzOjpzZW5kKToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpU
ZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1lbnRzOjpjYWxsUmVwbHkpOgorICAgICAg
ICAoTWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RBc3luY01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVu
dHM6OmNhbmNlbFJlcGx5KToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0QXN5bmNN
ZXNzYWdlV2l0aE11bHRpcGxlQXJndW1lbnRzOjpzZW5kKToKKyAgICAgICAgKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpUZXN0U3luY01lc3NhZ2U6OnNlbmQpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBh
Z2U6OlRlc3RTeW5jaHJvbm91c01lc3NhZ2U6OnNlbmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRpZFJl
Y2VpdmVTeW5jTWVzc2FnZSk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvdGVzdC1zdXBlcmNs
YXNzTWVzc2FnZXMuaDogQWRkZWQuCisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6bWVzc2Fn
ZVJlY2VpdmVyTmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFVSTDo6bmFt
ZSk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFVSTDo6TG9hZFVSTCk6CisgICAg
ICAgIChNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFVSTDo6YXJndW1lbnRzIGNvbnN0KToKKyAgICAg
ICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0QXN5bmNNZXNzYWdlOjpuYW1lKToKKyAgICAgICAg
KE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0QXN5bmNNZXNzYWdlOjphc3luY01lc3NhZ2VSZXBseU5h
bWUpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RBc3luY01lc3NhZ2U6OlRlc3RB
c3luY01lc3NhZ2UpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RBc3luY01lc3Nh
Z2U6OmFyZ3VtZW50cyBjb25zdCk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6VGVzdEFz
eW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50czo6bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6V2Vi
UGFnZTo6VGVzdEFzeW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50czo6YXN5bmNNZXNzYWdlUmVwbHlO
YW1lKToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0QXN5bmNNZXNzYWdlV2l0aE5v
QXJndW1lbnRzOjphcmd1bWVudHMgY29uc3QpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6
OlRlc3RBc3luY01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHM6Om5hbWUpOgorICAgICAgICAo
TWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RBc3luY01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHM6
OmFzeW5jTWVzc2FnZVJlcGx5TmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6VGVz
dEFzeW5jTWVzc2FnZVdpdGhNdWx0aXBsZUFyZ3VtZW50czo6YXJndW1lbnRzIGNvbnN0KToKKyAg
ICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0U3luY01lc3NhZ2U6Om5hbWUpOgorICAgICAg
ICAoTWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RTeW5jTWVzc2FnZTo6VGVzdFN5bmNNZXNzYWdlKToK
KyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0U3luY01lc3NhZ2U6OmFyZ3VtZW50cyBj
b25zdCk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6VGVzdFN5bmNocm9ub3VzTWVzc2Fn
ZTo6bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6VGVzdFN5bmNocm9ub3VzTWVz
c2FnZTo6VGVzdFN5bmNocm9ub3VzTWVzc2FnZSk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFn
ZTo6VGVzdFN5bmNocm9ub3VzTWVzc2FnZTo6YXJndW1lbnRzIGNvbnN0KToKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdC90ZXN0LXN1cGVyY2xhc3NNZXNzYWdlc1JlcGxpZXMuaDogQWRkZWQuCisg
ICAgICAgICogU2NyaXB0cy93ZWJraXQvdGVzdC5tZXNzYWdlcy5pbjogQWRkZWQuCisgICAgICAg
ICogU2NyaXB0cy93ZWJraXQvdGVzdE1lc3NhZ2VSZWNlaXZlci5jcHA6IEFkZGVkLgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0L3Rlc3RNZXNzYWdlcy5oOiBBZGRlZC4KKyAgICAgICAgKE1lc3Nh
Z2VzOjpOb25lOjptZXNzYWdlUmVjZWl2ZXJOYW1lKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dC90ZXN0TWVzc2FnZXNSZXBsaWVzLmg6IEFkZGVkLgorICAgICAgICAqIFNoYXJlZC9BcHBsZVBh
eS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5oOgorICAgICAgICAqIFNoYXJlZC9BcHBsZVBh
eS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLm1tOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJv
eHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6fldlYlBh
eW1lbnRDb29yZGluYXRvclByb3h5KToKKyAgICAgICAgKiBTaGFyZWQvQXV4aWxpYXJ5UHJvY2Vz
cy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkF1eGlsaWFyeVByb2Nlc3M6OmFkZE1lc3NhZ2VSZWNl
aXZlcik6CisgICAgICAgIChXZWJLaXQ6OkF1eGlsaWFyeVByb2Nlc3M6OnJlbW92ZU1lc3NhZ2VS
ZWNlaXZlcik6CisgICAgICAgIChXZWJLaXQ6OkF1eGlsaWFyeVByb2Nlc3M6OmRpZFJlY2VpdmVJ
bnZhbGlkTWVzc2FnZSk6CisgICAgICAgICogU2hhcmVkL0F1eGlsaWFyeVByb2Nlc3MuaDoKKyAg
ICAgICAgKFdlYktpdDo6QXV4aWxpYXJ5UHJvY2Vzczo6YWRkTWVzc2FnZVJlY2VpdmVyKToKKyAg
ICAgICAgKFdlYktpdDo6QXV4aWxpYXJ5UHJvY2Vzczo6cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKToK
KyAgICAgICAgKiBTaGFyZWQvQ29jb2EvQXV4aWxpYXJ5UHJvY2Vzc0NvY29hLm1tOgorICAgICAg
ICAoV2ViS2l0OjpBdXhpbGlhcnlQcm9jZXNzOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UpOgor
ICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0F1eGlsaWFy
eVByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkF1eGlsaWFyeVByb2Nlc3NQcm94
eTo6YWRkTWVzc2FnZVJlY2VpdmVyKToKKyAgICAgICAgKFdlYktpdDo6QXV4aWxpYXJ5UHJvY2Vz
c1Byb3h5OjpyZW1vdmVNZXNzYWdlUmVjZWl2ZXIpOgorICAgICAgICAoV2ViS2l0OjpBdXhpbGlh
cnlQcm9jZXNzUHJveHk6OmxvZ0ludmFsaWRNZXNzYWdlKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QXV4aWxpYXJ5UHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OkF1eGlsaWFyeVByb2Nl
c3NQcm94eTo6YWRkTWVzc2FnZVJlY2VpdmVyKToKKyAgICAgICAgKFdlYktpdDo6QXV4aWxpYXJ5
UHJvY2Vzc1Byb3h5OjpyZW1vdmVNZXNzYWdlUmVjZWl2ZXIpOgorICAgICAgICAoV2ViS2l0OjpB
dXhpbGlhcnlQcm9jZXNzUHJveHk6OnNlbmQpOgorICAgICAgICAoV2ViS2l0OjpBdXhpbGlhcnlQ
cm9jZXNzUHJveHk6OnNlbmRXaXRoQXN5bmNSZXBseSk6CisgICAgICAgICogVUlQcm9jZXNzL0Nv
Y29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
Q29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6cGF5bWVudENvb3JkaW5hdG9yQWRkTWVzc2FnZVJlY2VpdmVyKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpwYXltZW50Q29vcmRpbmF0b3JSZW1vdmVNZXNzYWdl
UmVjZWl2ZXIpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1By
b3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6R1BVUHJvY2Vzc1Byb3h5OjpkaWRSZWNlaXZlSW52
YWxpZE1lc3NhZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5Lmg6
CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVJbnZhbGlkTWVz
c2FnZSk6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NQcm94eTo6ZGlkUmVjZWl2ZUludmFsaWRNZXNz
YWdlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0Ojpt
ZXNzYWdlTmFtZXNUb0lnbm9yZVdoaWxlU3VzcGVuZGVkKToKKyAgICAgICAgKFdlYktpdDo6U3Vz
cGVuZGVkUGFnZVByb3h5OjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpkaWRSZWNlaXZlSW52YWxpZE1lc3Nh
Z2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6YWRkTWVzc2FnZVJlY2VpdmVy
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnJlbW92ZU1lc3NhZ2VSZWNlaXZl
cik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQ
cm94eTo6c2hvdWxkU2VuZFBlbmRpbmdNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzc1Byb3h5OjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNz
Q29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OkdQVVByb2Nlc3NDb25uZWN0aW9uOjpk
aWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL0dQVVBy
b2Nlc3NDb25uZWN0aW9uLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5z
cGVjdG9yLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUku
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNl
aXZlSW52YWxpZE1lc3NhZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
UHJvY2Vzc0Nvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzQ29u
bmVjdGlvbjo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6dXBkYXRlUmVuZGVy
aW5nKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZSk6CisKIDIwMjAtMDQtMjcgIEJyZW50
IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgRm9sbG93LXVwIGNoYW5n
ZSBhZnRlciByMjYwNzk4LgpJbmRleDogU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRw
dXQueGNmaWxlbGlzdAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2Vz
LW91dHB1dC54Y2ZpbGVsaXN0CShyZXZpc2lvbiAyNjA3NjQpCisrKyBTb3VyY2UvV2ViS2l0L0Rl
cml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CSh3b3JraW5nIGNvcHkpCkBAIC02Myw2ICs2
Myw4IEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWIKICQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL01lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZU1lc3NhZ2VSZWNlaXZlci5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJLaXQyL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZU1lc3NhZ2VzLmgKICQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL01lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZU1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViS2l0Mi9NZXNzYWdlTmFtZXMuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViS2l0Mi9NZXNzYWdlTmFtZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYktpdDIvTlBPYmplY3RNZXNzYWdlUmVjZWl2ZXJNZXNzYWdlUmVjZWl2
ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9OUE9i
amVjdE1lc3NhZ2VSZWNlaXZlck1lc3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJLaXQyL05QT2JqZWN0TWVzc2FnZVJlY2VpdmVyTWVzc2FnZXNSZXBsaWVz
LmgKSW5kZXg6IFNvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHJldmlzaW9uIDI2MDc2NCkKKysr
IFNvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQkod29ya2luZyBjb3B5KQpAQCAtMTEy
LDEzNCArMTEyLDEzNSBAQCBlbHNlCiBlbmRpZgogCiBNRVNTQUdFX1JFQ0VJVkVSUyA9IFwKLQlB
dWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvclByb3h5IFwKLSAgICBBdXRoZW50aWNhdGlvbk1h
bmFnZXIgXAotICAgIEF1eGlsaWFyeVByb2Nlc3MgXAotICAgIENhY2hlU3RvcmFnZUVuZ2luZUNv
bm5lY3Rpb24gXAotICAgIERvd25sb2FkUHJveHkgXAotICAgIERyYXdpbmdBcmVhIFwKLSAgICBE
cmF3aW5nQXJlYVByb3h5IFwKLSAgICBFZGl0YWJsZUltYWdlQ29udHJvbGxlciBcCi0gICAgRXZl
bnREaXNwYXRjaGVyIFwKLSAgICBHUFVQcm9jZXNzIFwKLSAgICBHUFVQcm9jZXNzUHJveHkgXAot
ICAgIEdQVVByb2Nlc3NDb25uZWN0aW9uIFwKLSAgICBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
IFwKLSAgICBMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIgXAotICAgIExlZ2FjeUN1c3RvbVBy
b3RvY29sTWFuYWdlclByb3h5IFwKLSAgICBMaWJXZWJSVENDb2RlY3MgXAotICAgIExpYldlYlJU
Q0NvZGVjc1Byb3h5IFwKLSAgICBNZWRpYVBsYXllclByaXZhdGVSZW1vdGUgXAotICAgIE5QT2Jq
ZWN0TWVzc2FnZVJlY2VpdmVyIFwKLSAgICBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBc
Ci0gICAgTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIgXAotICAgIE5ldHdvcmtNRE5TUmVn
aXN0ZXJcCi0gICAgTmV0d29ya1Byb2Nlc3MgXAotICAgIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
biBcCi0gICAgTmV0d29ya1Byb2Nlc3NQcm94eSBcCi0gICAgTmV0d29ya1JUQ01vbml0b3IgXAot
ICAgIE5ldHdvcmtSVENQcm92aWRlciBcCi0gICAgTmV0d29ya1JUQ1NvY2tldCBcCi0gICAgTmV0
d29ya1Jlc291cmNlTG9hZGVyIFwKLSAgICBOZXR3b3JrU29ja2V0Q2hhbm5lbCBcCi0gICAgTmV0
d29ya1NvY2tldFN0cmVhbSBcCi0gICAgUGxheWJhY2tTZXNzaW9uTWFuYWdlciBcCi0gICAgUGxh
eWJhY2tTZXNzaW9uTWFuYWdlclByb3h5IFwKLSAgICBQbHVnaW5Db250cm9sbGVyUHJveHkgXAot
ICAgIFBsdWdpblByb2Nlc3MgXAotICAgIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uIFwKLSAgICBQ
bHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIgXAotICAgIFBsdWdpblByb2Nlc3NQcm94eSBc
Ci0gICAgUGx1Z2luUHJveHkgXAotICAgIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyIFwK
LSAgICBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkgXAotICAgIFJlbW90ZUF1ZGlvU2Vzc2lv
biBcCi0gICAgUmVtb3RlQXVkaW9TZXNzaW9uUHJveHkgXAotICAgIFJlbW90ZUF1ZGlvTWVkaWFT
dHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlciBcCi0gICAgUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRy
YWNrUmVuZGVyZXIgXAotICAgIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkgXAotICAg
IFJlbW90ZUNETVByb3h5IFwKLSAgICBSZW1vdGVDRE1GYWN0b3J5UHJveHkgXAotICAgIFJlbW90
ZUNETUluc3RhbmNlUHJveHkgXAotICAgIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbiBcCi0gICAg
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkgXAotICAgIFJlbW90ZUxlZ2FjeUNETVByb3h5
IFwKLSAgICBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkgXAotICAgIFJlbW90ZUxlZ2FjeUNE
TVNlc3Npb24gXAotICAgIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eSBcCi0gICAgUmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyIFwKLSAgICBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSBc
Ci0gICAgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eSBcCi0gICAgUmVtb3RlTWVkaWFSZWNvcmRlciBc
Ci0gICAgUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXIgXAotICAgIFJlbW90ZU1lZGlhUmVzb3Vy
Y2VNYW5hZ2VyIFwKLSAgICBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIgXAotICAgIFJlbW90ZU1l
ZGlhU2Vzc2lvbkhlbHBlclByb3h5IFwKLSAgICBSZW1vdGVPYmplY3RSZWdpc3RyeSBcCi0gICAg
UmVtb3RlUmVuZGVyaW5nQmFja2VuZCBcCi0gICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
IFwKLSAgICBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgXAotICAgIFJlbW90ZVNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIgXAotICAgIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5h
dG9yIFwKLSAgICBSZW1vdGVXZWJJbnNwZWN0b3JQcm94eSBcCi0gICAgUmVtb3RlV2ViSW5zcGVj
dG9yVUkgXAotICAgIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciBcCi0gICAgU2VjSXRlbVNoaW1Q
cm94eSBcCi0gICAgU2VydmljZVdvcmtlckZldGNoVGFzayBcCi0gICAgU21hcnRNYWduaWZpY2F0
aW9uQ29udHJvbGxlciBcCi0gICAgU3RvcmFnZUFyZWFNYXAgXAotICAgIFN0b3JhZ2VNYW5hZ2Vy
U2V0IFwKLSAgICBUZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHkgXAotICAgIFVzZXJNZWRpYUNh
cHR1cmVNYW5hZ2VyIFwKLSAgICBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5IFwKLSAgICBW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyIFwKLSAgICBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkg
XAotICAgIFZpZXdHZXN0dXJlQ29udHJvbGxlciBcCi0gICAgVmlld0dlc3R1cmVHZW9tZXRyeUNv
bGxlY3RvciBcCi0gICAgVmlld1VwZGF0ZURpc3BhdGNoZXIgXAotICAgIFZpc2l0ZWRMaW5rU3Rv
cmUgXAotICAgIFZpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVyIFwKLSAgICBXZWJBdXRoZW50aWNh
dG9yQ29vcmRpbmF0b3JQcm94eSBcCi0gICAgV2ViQXV0b21hdGlvblNlc3Npb24gXAotICAgIFdl
YkF1dG9tYXRpb25TZXNzaW9uUHJveHkgXAotICAgIFdlYkNvbm5lY3Rpb24gXAotICAgIFdlYkNv
b2tpZU1hbmFnZXIgXAotICAgIFdlYkNvb2tpZU1hbmFnZXJQcm94eSBcCi0gICAgV2ViRnVsbFNj
cmVlbk1hbmFnZXIgXAotICAgIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkgXAotICAgIFdlYkdl
b2xvY2F0aW9uTWFuYWdlciBcCi0gICAgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkgXAotICAg
IFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlciBcCi0gICAgV2ViSURCU2VydmVyIFwKLSAgICBXZWJJ
bnNwZWN0b3IgXAotICAgIFdlYkluc3BlY3RvckludGVycnVwdERpc3BhdGNoZXIgXAotICAgIFdl
Ykluc3BlY3RvclByb3h5IFwKLSAgICBXZWJJbnNwZWN0b3JVSSBcCi0gICAgV2ViTUROU1JlZ2lz
dGVyXAotICAgIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXIgXAotICAgIFdlYlBhZ2UgXAotICAgIFdl
YlBhZ2VQcm94eSBcCi0gICAgV2ViUGFzdGVib2FyZFByb3h5IFwKLSAgICBXZWJQYXltZW50Q29v
cmRpbmF0b3IgXAotICAgIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5IFwKLSAgICBXZWJQcm9j
ZXNzIFwKLSAgICBXZWJQcm9jZXNzQ29ubmVjdGlvbiBcCi0gICAgV2ViUHJvY2Vzc1Bvb2wgXAot
ICAgIFdlYlByb2Nlc3NQcm94eSBcCi0gICAgV2ViUlRDTW9uaXRvciBcCi0gICAgV2ViUlRDUmVz
b2x2ZXIgXAotICAgIFdlYlJUQ1NvY2tldCBcCi0gICAgV2ViUmVzb3VyY2VMb2FkZXIgXAotICAg
IFdlYlNXQ2xpZW50Q29ubmVjdGlvbiBcCi0gICAgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b24gXAotICAgIFdlYlNXU2VydmVyQ29ubmVjdGlvbiBcCi0gICAgV2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uIFwKLSAgICBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyIFwK
LSAgICBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyUHJveHkgXAotICAgIFdlYlNv
Y2tldENoYW5uZWwgXAotICAgIFdlYlNvY2tldFN0cmVhbSBcCi0gICAgV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyIFwKLSAgICBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSBcCisJTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgXAorCU5ldHdvcmtQcm9jZXNz
L0luZGV4ZWREQi9XZWJJREJTZXJ2ZXIgXAorCU5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb250ZW50
UnVsZUxpc3RNYW5hZ2VyIFwKKwlOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5h
Z2VyU2V0IFwKKwlOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0
aW9uIFwKKwlOZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9j
b2xNYW5hZ2VyIFwKKwlOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5lbCBcCisJTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24gXAorCU5ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzayBcCisJTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24gXAor
CU5ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0gXAorCU5ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzIFwKKwlOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIgXAor
CU5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrTUROU1JlZ2lzdGVyIFwKKwlOZXR3b3JrUHJv
Y2Vzcy93ZWJydGMvTmV0d29ya1JUQ1NvY2tldCBcCisJTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05l
dHdvcmtSVENQcm92aWRlciBcCisJTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENNb25p
dG9yIFwKKwlOZXR3b3JrUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIgXAorCVNoYXJl
ZC9QbHVnaW5zL05QT2JqZWN0TWVzc2FnZVJlY2VpdmVyIFwKKwlTaGFyZWQvQXV4aWxpYXJ5UHJv
Y2VzcyBcCisJU2hhcmVkL0FQSS9Db2NvYS9SZW1vdGVPYmplY3RSZWdpc3RyeSBcCisJU2hhcmVk
L0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5IFwKKwlTaGFyZWQvQXV0aGVudGlj
YXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyIFwKKwlTaGFyZWQvV2ViQ29ubmVjdGlvbiBcCisJ
VUlQcm9jZXNzL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkgXAorCVVJUHJvY2Vzcy9SZW1vdGVM
YXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eSBcCisJVUlQcm9jZXNzL0dQ
VS9HUFVQcm9jZXNzUHJveHkgXAorCVVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eSBcCisJVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94
eSBcCisJVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5
IFwKKwlVSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclByb3h5IFwKKwlVSVByb2Nlc3Mv
SW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclByb3h5IFwKKwlVSVByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5Qcm9jZXNzUHJveHkgXAorCVVJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5IFwKKwlVSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5IFwKKwlVSVByb2Nlc3MvTmV0d29yay9D
dXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkgXAorCVVJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkgXAorCVVJUHJvY2Vzcy9WaXNpdGVkTGlua1N0b3JlIFwKKwlVSVBy
b2Nlc3MvaW9zL1dlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94eSBcCisJVUlQ
cm9jZXNzL2lvcy9FZGl0YWJsZUltYWdlQ29udHJvbGxlciBcCisJVUlQcm9jZXNzL2lvcy9TbWFy
dE1hZ25pZmljYXRpb25Db250cm9sbGVyIFwKKwlVSVByb2Nlc3MvbWFjL1NlY0l0ZW1TaGltUHJv
eHkgXAorCVVJUHJvY2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eSBcCisJVUlQcm9jZXNz
L0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eSBcCisJVUlQcm9jZXNzL0NvY29hL1Zp
ZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eSBcCisJVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNh
cHR1cmVNYW5hZ2VyUHJveHkgXAorCVVJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkgXAor
CVVJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIgXAorCVVJUHJvY2Vzcy9XZWJQcm9jZXNz
UHJveHkgXAorCVVJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uIFwKKwlV
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wgXAorCVVJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQ
cm94eSBcCisJVUlQcm9jZXNzL01lZGlhL0F1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yUHJv
eHkgXAorCVdlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJDb25uZWN0aW9uVG9T
ZXJ2ZXIgXAorCVdlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uIFwKKwlXZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kIFwKKwlXZWJQcm9jZXNzL0dQ
VS93ZWJydGMvTGliV2ViUlRDQ29kZWNzIFwKKwlXZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyIFwKKwlXZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclBy
aXZhdGVSZW1vdGUgXAorCVdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vz
c2lvbiBcCisJV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbiBcCisJ
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlciBcCisJV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyIFwKKwlXZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkgXAorCVdlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvbiBcCisJV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3Jh
Z2VBcmVhTWFwIFwKKwlXZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJv
bGxlciBcCisJV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9ySW50ZXJydXB0RGlzcGF0
Y2hlciBcCisJV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUkgXAorCVdlYlByb2Nl
c3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvciBcCisJV2ViUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3Rl
V2ViSW5zcGVjdG9yVUkgXAorCVdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVj
dGlvbk1hbmFnZXIgXAorCVdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eSBcCisJV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uIFwKKwlXZWJQcm9jZXNzL05ldHdv
cmsvV2ViU29ja2V0Q2hhbm5lbCBcCisJV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbiBcCisJV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0cmVhbSBcCisJV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyIFwKKwlXZWJQcm9jZXNzL05ldHdvcmsv
d2VicnRjL1dlYlJUQ1NvY2tldCBcCisJV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJSVENN
b25pdG9yIFwKKwlXZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1dlYk1ETlNSZWdpc3RlciBcCisJ
V2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJSVENSZXNvbHZlciBcCisJV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyIFwKKwlXZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24gXAorCVdlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24gXAorCVdlYlByb2Nlc3MvV2ViUHJvY2Vz
cyBcCisJV2ViUHJvY2Vzcy9jb2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyIFwKKwlXZWJQcm9j
ZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyIFwKKwlXZWJQcm9jZXNzL2NvY29hL1Zp
ZGVvRnVsbHNjcmVlbk1hbmFnZXIgXAorCVdlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9j
YXRpb25NYW5hZ2VyIFwKKwlXZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Np
b25Qcm94eSBcCisJV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyIFwK
KwlXZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvciBcCisJV2ViUHJvY2Vz
cy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIgXAorCVdlYlByb2Nlc3MvV2Vi
UGFnZS9FdmVudERpc3BhdGNoZXIgXAorCVdlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRy
ZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3IgXAorCVdlYlByb2Nlc3MvV2ViUGFnZS9WaWV3
R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yIFwKKwlXZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0Fy
ZWEgXAorCVdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlIFwKKwlXZWJQcm9jZXNzL1dlYlBhZ2Uv
VmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXIgXAorCVdlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9U
ZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHkgXAorCVdlYlByb2Nlc3MvV2ViUGFnZS9WaWV3VXBk
YXRlRGlzcGF0Y2hlciBcCisJUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbiBcCisJ
UGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkgXAorCVBsdWdpblByb2Nlc3MvUGx1
Z2luUHJvY2VzcyBcCisJR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzIFwKKwlH
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSBcCisJR1BVUHJv
Y2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkgXAorCUdQVVByb2Nlc3Mvd2VicnRjL1Jl
bW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIgXAorCUdQVVByb2Nlc3Mvd2VicnRj
L1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlciBcCisJR1BVUHJvY2Vz
cy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXIgXAorCUdQVVByb2Nlc3Mvd2VicnRj
L1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciBcCisJR1BVUHJvY2Vzcy93ZWJydGMvUmVt
b3RlTWVkaWFSZWNvcmRlciBcCisJR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0
cmVhbVRyYWNrUmVuZGVyZXIgXAorCUdQVVByb2Nlc3MvR1BVUHJvY2VzcyBcCisJR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkgXAorCUdQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlQXVkaW9TZXNzaW9uUHJveHlNYW5hZ2VyIFwKKwlHUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUxlZ2FjeUNETUZhY3RvcnlQcm94eSBcCisJR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1Nl
c3Npb25Qcm94eSBcCisJR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Q
cm94eSBcCisJR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eSBcCisJR1BVUHJvY2Vzcy9t
ZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHkgXAorCUdQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eSBcCisJR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1G
YWN0b3J5UHJveHkgXAorCUdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFn
ZXIgXAorCUdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eSBcCisJR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eSBcCisJR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSBcCisJR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRp
b0Rlc3RpbmF0aW9uTWFuYWdlciBcCiAjCiAKIFNDUklQVFMgPSBcCkBAIC0yNTUsMTUgKzI1Niwx
NSBAQCBIRUFERVJfRkxBR1MgPSAkKHNoZWxsIGVjaG8gJChCVUlMVF9QUk9ECiAKIC5QSE9OWSA6
IGFsbAogCi1hbGwgOiBcCi0gICAgJChNRVNTQUdFX1JFQ0VJVkVSUzolPSVNZXNzYWdlUmVjZWl2
ZXIuY3BwKSBcCi0gICAgJChNRVNTQUdFX1JFQ0VJVkVSUzolPSVNZXNzYWdlcy5oKSBcCi0gICAg
JChNRVNTQUdFX1JFQ0VJVkVSUzolPSVNZXNzYWdlc1JlcGxpZXMuaCkgXAorYWxsIDogTWVzc2Fn
ZU5hbWVzLmggTWVzc2FnZU5hbWVzLmNwcCBcCisgICAgJChhZGRzdWZmaXggTWVzc2FnZVJlY2Vp
dmVyLmNwcCwkKG5vdGRpciAkKE1FU1NBR0VfUkVDRUlWRVJTKSkpIFwKKyAgICAkKGFkZHN1ZmZp
eCBNZXNzYWdlcy5oLCQobm90ZGlyICQoTUVTU0FHRV9SRUNFSVZFUlMpKSkgXAorICAgICQoYWRk
c3VmZml4IE1lc3NhZ2VzUmVwbGllcy5oLCQobm90ZGlyICQoTUVTU0FHRV9SRUNFSVZFUlMpKSkg
XAogIwogCi0lTWVzc2FnZVJlY2VpdmVyLmNwcCAlTWVzc2FnZXMuaCAlTWVzc2FnZXNSZXBsaWVz
LmggOiAlLm1lc3NhZ2VzLmluICQoU0NSSVBUUykKLQlAZWNobyBHZW5lcmF0aW5nIG1lc3NhZ2Ug
cmVjZWl2ZXIgZm9yICQqLi4uCi0JQHB5dGhvbiAkKFdlYktpdDIpL1NjcmlwdHMvZ2VuZXJhdGUt
bWVzc2FnZS1yZWNlaXZlci5weSAkPCAtLWltcGxlbWVudGF0aW9uICQqTWVzc2FnZVJlY2VpdmVy
LmNwcCAtLWhlYWRlciAkKk1lc3NhZ2VzLmggLS1yZXBseS1oZWFkZXIgJCpNZXNzYWdlc1JlcGxp
ZXMuaAorJChhZGRzdWZmaXggTWVzc2FnZVJlY2VpdmVyLmNwcCwkKG5vdGRpciAkKE1FU1NBR0Vf
UkVDRUlWRVJTKSkpICQoYWRkc3VmaXggTWVzc2FnZXMuaCwkKG5vdGRpciAkKE1FU1NBR0VfUkVD
RUlWRVJTKSkpICQoYWRkc3VmZml4IE1lc3NhZ2VzUmVwbGllcy5oLCQobm90ZGlyICQoTUVTU0FH
RV9SRUNFSVZFUlMpKSk6IE1lc3NhZ2VOYW1lcy5jcHAKK01lc3NhZ2VOYW1lcy5oIE1lc3NhZ2VO
YW1lcy5jcHA6ICQoYWRkc3VmZml4IC5tZXNzYWdlcy5pbiwkKE1FU1NBR0VfUkVDRUlWRVJTKSkg
JChTQ1JJUFRTKQorCUBweXRob24gJChXZWJLaXQyKS9TY3JpcHRzL2dlbmVyYXRlLW1lc3NhZ2Ut
cmVjZWl2ZXIucHkgJChXZWJLaXQyKSAkKE1FU1NBR0VfUkVDRUlWRVJTKQogCiBURVhUX1BSRVBS
T0NFU1NPUl9GTEFHUz0tRSAtUCAtdwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2Nv
YS50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CShyZXZp
c2lvbiAyNjA3NjQpCisrKyBTb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQJKHdvcmtpbmcg
Y29weSkKQEAgLTY1Nyw2ICs2NTcsNyBAQCBHUFVQcm9jZXNzUHJveHlNZXNzYWdlUmVjZWl2ZXIu
Y3BwCiBHUFVQcm9jZXNzTWVzc2FnZVJlY2VpdmVyLmNwcAogTGliV2ViUlRDQ29kZWNzUHJveHlN
ZXNzYWdlUmVjZWl2ZXIuY3BwCiBMaWJXZWJSVENDb2RlY3NNZXNzYWdlUmVjZWl2ZXIuY3BwCitN
ZXNzYWdlTmFtZXMuY3BwCiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlck1lc3NhZ2VSZWNl
aXZlci5jcHAKIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAK
IFJlbW90ZUF1ZGlvU2Vzc2lvbk1lc3NhZ2VSZWNlaXZlci5jcHAKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAJ
KHJldmlzaW9uIDI2MDc2NCkKKysrIFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE0LDggKzExNCw4IEBAIHB1
YmxpYzoKIAogcHJpdmF0ZToKICAgICBMb2dnZXImIGxvZ2dlcigpIGZpbmFsIHsgcmV0dXJuIG1f
cHJvY2Vzcy5sb2dnZXIoKTsgfQotICAgIHZvaWQgYWRkTWVzc2FnZVJlY2VpdmVyKElQQzo6U3Ry
aW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIElQQzo6TWVzc2FnZVJlY2VpdmVyJiBy
ZWNlaXZlcikgZmluYWwgeyB9Ci0gICAgdm9pZCByZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpT
dHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSkgZmluYWwgeyB9CisgICAgdm9pZCBh
ZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpSZWNlaXZlck5hbWUsIElQQzo6TWVzc2FnZVJlY2VpdmVy
JikgZmluYWwgeyB9CisgICAgdm9pZCByZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpSZWNlaXZl
ck5hbWUgbWVzc2FnZVJlY2VpdmVyTmFtZSkgZmluYWwgeyB9CiAgICAgSVBDOjpDb25uZWN0aW9u
JiBjb25uZWN0aW9uKCkgZmluYWwgeyByZXR1cm4gbV9wcm9jZXNzLmNvbm5lY3Rpb24oKTsgfQog
ICAgIGJvb2wgd2lsbFN0YXJ0Q2FwdHVyZShDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlIHR5cGUp
IGNvbnN0IGZpbmFsCiAgICAgewpAQCAtMTg1LDkgKzE4NSw5IEBAIExvZ2dlciYgR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6bG9nZ2UKICAgICByZXR1cm4gKm1fbG9nZ2VyOwogfQogCi12b2lk
IEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNl
aXZlck5hbWUsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lKQordm9pZCBHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiBjb25uZWN0aW9uLCBJUEM6Ok1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lKQogewotICAgIFdU
RkxvZ0Fsd2F5cygiUmVjZWl2ZWQgYW4gaW52YWxpZCBtZXNzYWdlIFwiJXMuJXNcIiBmcm9tIHRo
ZSB3ZWIgcHJvY2Vzcy5cbiIsIG1lc3NhZ2VSZWNlaXZlck5hbWUudG9TdHJpbmcoKS5kYXRhKCks
IG1lc3NhZ2VOYW1lLnRvU3RyaW5nKCkuZGF0YSgpKTsKKyAgICBXVEZMb2dBbHdheXMoIlJlY2Vp
dmVkIGFuIGludmFsaWQgbWVzc2FnZSBcIiVzXCIgZnJvbSB0aGUgd2ViIHByb2Nlc3MuXG4iLCBk
ZXNjcmlwdGlvbihtZXNzYWdlTmFtZSkpOwogICAgIENSQVNIKCk7CiB9CiAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
aAkocmV2aXNpb24gMjYwNzY0KQorKysgU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuaAkod29ya2luZyBjb3B5KQpAQCAtMTQ0LDcgKzE0NCw3IEBAIHBy
aXZhdGU6CiAKICAgICAvLyBJUEM6OkNvbm5lY3Rpb246OkNsaWVudAogICAgIHZvaWQgZGlkQ2xv
c2UoSVBDOjpDb25uZWN0aW9uJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2Vp
dmVyTmFtZSwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUpIGZpbmFsOworICAgIHZv
aWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2Fn
ZU5hbWUpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5j
b2Rlcj4mKSBmaW5hbDsKIApJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAJKHJldmlz
aW9uIDI2MDc2NCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjQsNyArMjY0LDcgQEAg
dm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkUgogICAgICAgICByZXR1cm4g
cGF5bWVudENvb3JkaW5hdG9yKCkuZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rl
cik7CiAjZW5kaWYKIAotICAgIFdURkxvZ0Fsd2F5cygiVW5oYW5kbGVkIG5ldHdvcmsgcHJvY2Vz
cyBtZXNzYWdlICclczolcyciLCBkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKS50b1N0cmlu
ZygpLmRhdGEoKSwgZGVjb2Rlci5tZXNzYWdlTmFtZSgpLnRvU3RyaW5nKCkuZGF0YSgpKTsKKyAg
ICBXVEZMb2dBbHdheXMoIlVuaGFuZGxlZCBuZXR3b3JrIHByb2Nlc3MgbWVzc2FnZSAnJXMnIiwg
ZGVzY3JpcHRpb24oZGVjb2Rlci5tZXNzYWdlTmFtZSgpKSk7CiAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiB9CiAKQEAgLTMwNyw3ICszMDcsNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpkaWRSCiAgICAgICAgIHJldHVybiBwYXltZW50Q29vcmRpbmF0b3IoKS5kaWRS
ZWNlaXZlU3luY01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHkpOwogI2VuZGlmCiAK
LSAgICBXVEZMb2dBbHdheXMoIlVuaGFuZGxlZCBuZXR3b3JrIHByb2Nlc3MgbWVzc2FnZSAnJXM6
JXMnIiwgZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkudG9TdHJpbmcoKS5kYXRhKCksIGRl
Y29kZXIubWVzc2FnZU5hbWUoKS50b1N0cmluZygpLmRhdGEoKSk7CisgICAgV1RGTG9nQWx3YXlz
KCJVbmhhbmRsZWQgbmV0d29yayBwcm9jZXNzIG1lc3NhZ2UgJyVzJyIsIGRlc2NyaXB0aW9uKGRl
Y29kZXIubWVzc2FnZU5hbWUoKSkpOwogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCkBA
IC0zNTYsOSArMzU2LDkgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlk
QwogI2VuZGlmCiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFJl
Y2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OlN0cmluZ1JlZmVyZW5j
ZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZSkK
K3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVJbnZhbGlkTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lKQogewot
ICAgIFJFTEVBU0VfTE9HX0ZBVUxUKElQQywgIlJlY2VpdmVkIGFuIGludmFsaWQgbWVzc2FnZSAn
JSIgUFVCTElDX0xPR19TVFJJTkcgIjo6JSIgUFVCTElDX0xPR19TVFJJTkcgIicgZnJvbSBXZWJD
b250ZW50IHByb2Nlc3MgJSIgUFJJdTY0ICIsIHJlcXVlc3RpbmcgZm9yIGl0IHRvIGJlIHRlcm1p
bmF0ZWQuIiwgbWVzc2FnZVJlY2VpdmVyTmFtZS50b1N0cmluZygpLmRhdGEoKSwgbWVzc2FnZU5h
bWUudG9TdHJpbmcoKS5kYXRhKCksIG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIudG9VSW50NjQoKSk7
CisgICAgUkVMRUFTRV9MT0dfRkFVTFQoSVBDLCAiUmVjZWl2ZWQgYW4gaW52YWxpZCBtZXNzYWdl
ICclIiBQVUJMSUNfTE9HX1NUUklORyAiJyBmcm9tIFdlYkNvbnRlbnQgcHJvY2VzcyAlIiBQUkl1
NjQgIiwgcmVxdWVzdGluZyBmb3IgaXQgdG8gYmUgdGVybWluYXRlZC4iLCBkZXNjcmlwdGlvbiht
ZXNzYWdlTmFtZSksIG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIudG9VSW50NjQoKSk7CiAgICAgbV9u
ZXR3b3JrUHJvY2Vzcy0+cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6
TmV0d29ya1Byb2Nlc3NQcm94eTo6VGVybWluYXRlV2ViUHJvY2VzcyhtX3dlYlByb2Nlc3NJZGVu
dGlmaWVyKSwgMCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgJKHJldmlzaW9u
IDI2MDc2NCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuaAkod29ya2luZyBjb3B5KQpAQCAtMTg2LDcgKzE4Niw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRl
Y29kZXImKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYp
IG92ZXJyaWRlOwogICAgIHZvaWQgZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJikgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBD
OjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpTdHJpbmdSZWZlcmVu
Y2UgbWVzc2FnZU5hbWUpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZU5hbWUpIG92ZXJyaWRlOwogCiAgICAg
Ly8gTWVzc2FnZSBoYW5kbGVycy4KICAgICB2b2lkIGRpZFJlY2VpdmVOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzc01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CkBA
IC0zMjYsOCArMzI2LDYgQEAgcHJpdmF0ZToKICAgICBjb25zdCBTdHJpbmcmIHBheW1lbnRDb29y
ZGluYXRvclNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcihjb25zdCBXZWJQYXltZW50
Q29vcmRpbmF0b3JQcm94eSYpIGZpbmFsOwogICAgIGNvbnN0IFN0cmluZyYgcGF5bWVudENvb3Jk
aW5hdG9yU291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyKGNvbnN0IFdlYlBheW1l
bnRDb29yZGluYXRvclByb3h5JikgZmluYWw7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFBheW1lbnRB
dXRob3JpemF0aW9uUHJlc2VudGVyPiBwYXltZW50Q29vcmRpbmF0b3JBdXRob3JpemF0aW9uUHJl
c2VudGVyKFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JiwgUEtQYXltZW50UmVxdWVzdCAqKSBm
aW5hbDsKLSAgICB2b2lkIHBheW1lbnRDb29yZGluYXRvckFkZE1lc3NhZ2VSZWNlaXZlcihXZWJQ
YXltZW50Q29vcmRpbmF0b3JQcm94eSYsIGNvbnN0IElQQzo6U3RyaW5nUmVmZXJlbmNlJiwgSVBD
OjpNZXNzYWdlUmVjZWl2ZXImKSBmaW5hbDsKLSAgICB2b2lkIHBheW1lbnRDb29yZGluYXRvclJl
bW92ZU1lc3NhZ2VSZWNlaXZlcihXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYsIGNvbnN0IElQ
Qzo6U3RyaW5nUmVmZXJlbmNlJikgZmluYWw7CiAjZW5kaWYKIAogICAgIFJlZjxJUEM6OkNvbm5l
Y3Rpb24+IG1fY29ubmVjdGlvbjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCShyZXZpc2lvbiAyNjA3OTEpCisrKyBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjE3LDcgKzIxNyw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKEkK
IHsKICAgICBBU1NFUlQocGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKSA9PSAmY29ubmVjdGlvbik7
CiAgICAgaWYgKHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkgIT0gJmNvbm5lY3Rpb24pIHsKLSAg
ICAgICAgV1RGTG9nQWx3YXlzKCJJZ25vcmVkIG1lc3NhZ2UgJyVzOiVzJyBiZWNhdXNlIGl0IGRp
ZCBub3QgY29tZSBmcm9tIHRoZSBVSVByb2Nlc3MgKGRlc3RpbmF0aW9uOiAlIiBQUkl1NjQgIiki
LCBkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKS50b1N0cmluZygpLmRhdGEoKSwgZGVjb2Rl
ci5tZXNzYWdlTmFtZSgpLnRvU3RyaW5nKCkuZGF0YSgpLCBkZWNvZGVyLmRlc3RpbmF0aW9uSUQo
KSk7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiSWdub3JlZCBtZXNzYWdlICclcycgYmVjYXVzZSBp
dCBkaWQgbm90IGNvbWUgZnJvbSB0aGUgVUlQcm9jZXNzIChkZXN0aW5hdGlvbjogJSIgUFJJdTY0
ICIpIiwgZGVzY3JpcHRpb24oZGVjb2Rlci5tZXNzYWdlTmFtZSgpKSwgZGVjb2Rlci5kZXN0aW5h
dGlvbklEKCkpOwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KQEAgLTI0NCw3ICsyNDQsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkaWRSZWNl
aXZlU3luY01lc3NhCiB7CiAgICAgQVNTRVJUKHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkgPT0g
JmNvbm5lY3Rpb24pOwogICAgIGlmIChwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpICE9ICZjb25u
ZWN0aW9uKSB7Ci0gICAgICAgIFdURkxvZ0Fsd2F5cygiSWdub3JlZCBtZXNzYWdlICclczolcycg
YmVjYXVzZSBpdCBkaWQgbm90IGNvbWUgZnJvbSB0aGUgVUlQcm9jZXNzIChkZXN0aW5hdGlvbjog
JSIgUFJJdTY0ICIpIiwgZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkudG9TdHJpbmcoKS5k
YXRhKCksIGRlY29kZXIubWVzc2FnZU5hbWUoKS50b1N0cmluZygpLmRhdGEoKSwgZGVjb2Rlci5k
ZXN0aW5hdGlvbklEKCkpOworICAgICAgICBXVEZMb2dBbHdheXMoIklnbm9yZWQgbWVzc2FnZSAn
JXMnIGJlY2F1c2UgaXQgZGlkIG5vdCBjb21lIGZyb20gdGhlIFVJUHJvY2VzcyAoZGVzdGluYXRp
b246ICUiIFBSSXU2NCAiKSIsIGRlc2NyaXB0aW9uKGRlY29kZXIubWVzc2FnZU5hbWUoKSksIGRl
Y29kZXIuZGVzdGluYXRpb25JRCgpKTsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2lvcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc0lPUy5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzc0lPUy5tbQkocmV2aXNpb24gMjYwNzY0KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9pb3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NJT1MubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTg1LDE0ICs4NSw2IEBAIHN0ZDo6dW5pcXVlX3B0cjxQYXltZW50QXV0aG9yaXphdGlv
blByZXMKICAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXltZW50QXV0aG9yaXphdGlvbkNvbnRyb2xs
ZXI+KGNvb3JkaW5hdG9yLCByZXF1ZXN0KTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6cGF5bWVudENvb3JkaW5hdG9yQWRkTWVzc2FnZVJlY2VpdmVyKFdlYlBheW1l
bnRDb29yZGluYXRvclByb3h5JiwgY29uc3QgSVBDOjpTdHJpbmdSZWZlcmVuY2UmLCBJUEM6Ok1l
c3NhZ2VSZWNlaXZlciYpCi17Ci19Ci0KLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OnBheW1lbnRDb29yZGluYXRvclJlbW92ZU1lc3NhZ2VSZWNlaXZlcihXZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eSYsIGNvbnN0IElQQzo6U3RyaW5nUmVmZXJlbmNlJikKLXsKLX0KLQogI2Vu
ZGlmIC8vIEVOQUJMRShBUFBMRV9QQVlfUkVNT1RFX1VJKQogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwCShyZXZp
c2lvbiAyNjA3NjQpCisrKyBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTQsMjEgKzU0LDE3IEBAIGNvbnN0IHNpemVfdCBtYXhQZW5k
aW5nSW5jb21pbmdNZXNzYWdlc0sKIHN0ZDo6YXRvbWljPHVuc2lnbmVkPiBVbmJvdW5kZWRTeW5j
aHJvbm91c0lQQ1Njb3BlOjp1bmJvdW5kZWRTeW5jaHJvbm91c0lQQ0NvdW50ID0gMDsKIAogc3Ry
dWN0IENvbm5lY3Rpb246OldhaXRGb3JNZXNzYWdlU3RhdGUgewotICAgIFdhaXRGb3JNZXNzYWdl
U3RhdGUoU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIFN0cmluZ1JlZmVyZW5j
ZSBtZXNzYWdlTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgT3B0aW9uU2V0PFdhaXRGb3JP
cHRpb24+IHdhaXRGb3JPcHRpb25zKQotICAgICAgICA6IG1lc3NhZ2VSZWNlaXZlck5hbWUobWVz
c2FnZVJlY2VpdmVyTmFtZSkKLSAgICAgICAgLCBtZXNzYWdlTmFtZShtZXNzYWdlTmFtZSkKKyAg
ICBXYWl0Rm9yTWVzc2FnZVN0YXRlKE1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lLCB1aW50NjRfdCBk
ZXN0aW5hdGlvbklELCBPcHRpb25TZXQ8V2FpdEZvck9wdGlvbj4gd2FpdEZvck9wdGlvbnMpCisg
ICAgICAgIDogbWVzc2FnZU5hbWUobWVzc2FnZU5hbWUpCiAgICAgICAgICwgZGVzdGluYXRpb25J
RChkZXN0aW5hdGlvbklEKQogICAgICAgICAsIHdhaXRGb3JPcHRpb25zKHdhaXRGb3JPcHRpb25z
KQogICAgIHsKICAgICB9CiAKLSAgICBTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFt
ZTsKLSAgICBTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWU7CisgICAgTWVzc2FnZU5hbWUgbWVz
c2FnZU5hbWU7CiAgICAgdWludDY0X3QgZGVzdGluYXRpb25JRDsKLQogICAgIE9wdGlvblNldDxX
YWl0Rm9yT3B0aW9uPiB3YWl0Rm9yT3B0aW9uczsKICAgICBib29sIG1lc3NhZ2VXYWl0aW5nSW50
ZXJydXB0ZWQgPSBmYWxzZTsKLQogICAgIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiBkZWNvZGVy
OwogfTsKIApAQCAtMzE1LDIzICszMTEsMjMgQEAgdm9pZCBDb25uZWN0aW9uOjpzZXRTaG91bGRF
eGl0T25TeW5jTWVzcwogICAgIG1fc2hvdWxkRXhpdE9uU3luY01lc3NhZ2VTZW5kRmFpbHVyZSA9
IHNob3VsZEV4aXRPblN5bmNNZXNzYWdlU2VuZEZhaWx1cmU7CiB9CiAKLXZvaWQgQ29ubmVjdGlv
bjo6YWRkV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVj
ZWl2ZXJOYW1lLCBXb3JrUXVldWUmIHdvcmtRdWV1ZSwgV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVy
KiB3b3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIpCit2b2lkIENvbm5lY3Rpb246OmFkZFdvcmtRdWV1
ZU1lc3NhZ2VSZWNlaXZlcihSZWNlaXZlck5hbWUgbWVzc2FnZVJlY2VpdmVyTmFtZSwgV29ya1F1
ZXVlJiB3b3JrUXVldWUsIFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlciogd29ya1F1ZXVlTWVzc2Fn
ZVJlY2VpdmVyKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKICAgICBhdXRv
IGxvY2tlciA9IGhvbGRMb2NrKG1fd29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyc011dGV4KTsKLSAg
ICBBU1NFUlQoIW1fd29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVycy5jb250YWlucyhtZXNzYWdlUmVj
ZWl2ZXJOYW1lKSk7CisgICAgQVNTRVJUKCFtX3dvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcnMuY29u
dGFpbnMoc3RhdGljX2Nhc3Q8dWludDhfdD4obWVzc2FnZVJlY2VpdmVyTmFtZSkpKTsKIAotICAg
IG1fd29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVycy5hZGQobWVzc2FnZVJlY2VpdmVyTmFtZSwgc3Rk
OjptYWtlX3BhaXIoJndvcmtRdWV1ZSwgd29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKSk7CisgICAg
bV93b3JrUXVldWVNZXNzYWdlUmVjZWl2ZXJzLmFkZChzdGF0aWNfY2FzdDx1aW50OF90PihtZXNz
YWdlUmVjZWl2ZXJOYW1lKSwgc3RkOjptYWtlX3BhaXIoJndvcmtRdWV1ZSwgd29ya1F1ZXVlTWVz
c2FnZVJlY2VpdmVyKSk7CiB9CiAKLXZvaWQgQ29ubmVjdGlvbjo6cmVtb3ZlV29ya1F1ZXVlTWVz
c2FnZVJlY2VpdmVyKFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lKQordm9pZCBD
b25uZWN0aW9uOjpyZW1vdmVXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIoUmVjZWl2ZXJOYW1lIG1l
c3NhZ2VSZWNlaXZlck5hbWUpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAog
ICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV93b3JrUXVldWVNZXNzYWdlUmVjZWl2ZXJzTXV0
ZXgpOwotICAgIEFTU0VSVChtX3dvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcnMuY29udGFpbnMobWVz
c2FnZVJlY2VpdmVyTmFtZSkpOwotICAgIG1fd29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVycy5yZW1v
dmUobWVzc2FnZVJlY2VpdmVyTmFtZSk7CisgICAgQVNTRVJUKG1fd29ya1F1ZXVlTWVzc2FnZVJl
Y2VpdmVycy5jb250YWlucyhzdGF0aWNfY2FzdDx1aW50OF90PihtZXNzYWdlUmVjZWl2ZXJOYW1l
KSkpOworICAgIG1fd29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVycy5yZW1vdmUoc3RhdGljX2Nhc3Q8
dWludDhfdD4obWVzc2FnZVJlY2VpdmVyTmFtZSkpOwogfQogCiB2b2lkIENvbm5lY3Rpb246OmRp
c3BhdGNoV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyTWVzc2FnZShXb3JrUXVldWVNZXNzYWdlUmVj
ZWl2ZXImIHdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlciwgRGVjb2RlciYgZGVjb2RlcikKQEAgLTM0
OSw3ICszNDUsNyBAQCB2b2lkIENvbm5lY3Rpb246OmRpc3BhdGNoV29ya1F1ZXVlTWVzc2FnCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIHJlcGx5RW5jb2RlciA9IG1ha2VVbmlx
dWU8RW5jb2Rlcj4oIklQQyIsICJTeW5jTWVzc2FnZVJlcGx5Iiwgc3luY1JlcXVlc3RJRCk7Cisg
ICAgYXV0byByZXBseUVuY29kZXIgPSBtYWtlVW5pcXVlPEVuY29kZXI+KE1lc3NhZ2VOYW1lOjpT
eW5jTWVzc2FnZVJlcGx5LCBzeW5jUmVxdWVzdElEKTsKIAogICAgIC8vIEhhbmQgb2ZmIGJvdGgg
dGhlIGRlY29kZXIgYW5kIGVuY29kZXIgdG8gdGhlIHdvcmsgcXVldWUgbWVzc2FnZSByZWNlaXZl
ci4KICAgICB3b3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIuZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKCp0
aGlzLCBkZWNvZGVyLCByZXBseUVuY29kZXIpOwpAQCAtMzYxLDI0ICszNTcsMjQgQEAgdm9pZCBD
b25uZWN0aW9uOjpkaXNwYXRjaFdvcmtRdWV1ZU1lc3NhZwogICAgICAgICBzZW5kU3luY1JlcGx5
KFdURk1vdmUocmVwbHlFbmNvZGVyKSk7CiB9CiAKLXZvaWQgQ29ubmVjdGlvbjo6YWRkVGhyZWFk
TWVzc2FnZVJlY2VpdmVyKFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBUaHJl
YWRNZXNzYWdlUmVjZWl2ZXIqIHRocmVhZE1lc3NhZ2VSZWNlaXZlcikKK3ZvaWQgQ29ubmVjdGlv
bjo6YWRkVGhyZWFkTWVzc2FnZVJlY2VpdmVyKFJlY2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJO
YW1lLCBUaHJlYWRNZXNzYWdlUmVjZWl2ZXIqIHRocmVhZE1lc3NhZ2VSZWNlaXZlcikKIHsKICAg
ICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9j
ayhtX3RocmVhZE1lc3NhZ2VSZWNlaXZlcnNMb2NrKTsKLSAgICBBU1NFUlQoIW1fdGhyZWFkTWVz
c2FnZVJlY2VpdmVycy5jb250YWlucyhtZXNzYWdlUmVjZWl2ZXJOYW1lKSk7CisgICAgQVNTRVJU
KCFtX3RocmVhZE1lc3NhZ2VSZWNlaXZlcnMuY29udGFpbnMoc3RhdGljX2Nhc3Q8dWludDhfdD4o
bWVzc2FnZVJlY2VpdmVyTmFtZSkpKTsKIAotICAgIG1fdGhyZWFkTWVzc2FnZVJlY2VpdmVycy5h
ZGQobWVzc2FnZVJlY2VpdmVyTmFtZSwgdGhyZWFkTWVzc2FnZVJlY2VpdmVyKTsKKyAgICBtX3Ro
cmVhZE1lc3NhZ2VSZWNlaXZlcnMuYWRkKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KG1lc3NhZ2VSZWNl
aXZlck5hbWUpLCB0aHJlYWRNZXNzYWdlUmVjZWl2ZXIpOwogfQogCi12b2lkIENvbm5lY3Rpb246
OnJlbW92ZVRocmVhZE1lc3NhZ2VSZWNlaXZlcihTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2Vp
dmVyTmFtZSkKK3ZvaWQgQ29ubmVjdGlvbjo6cmVtb3ZlVGhyZWFkTWVzc2FnZVJlY2VpdmVyKFJl
Y2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1lKQogewogICAgIEFTU0VSVChSdW5Mb29wOjpp
c01haW4oKSk7CiAKICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fdGhyZWFkTWVzc2FnZVJl
Y2VpdmVyc0xvY2spOwotICAgIEFTU0VSVChtX3RocmVhZE1lc3NhZ2VSZWNlaXZlcnMuY29udGFp
bnMobWVzc2FnZVJlY2VpdmVyTmFtZSkpOworICAgIEFTU0VSVChtX3RocmVhZE1lc3NhZ2VSZWNl
aXZlcnMuY29udGFpbnMoc3RhdGljX2Nhc3Q8dWludDhfdD4obWVzc2FnZVJlY2VpdmVyTmFtZSkp
KTsKIAotICAgIG1fdGhyZWFkTWVzc2FnZVJlY2VpdmVycy5yZW1vdmUobWVzc2FnZVJlY2VpdmVy
TmFtZSk7CisgICAgbV90aHJlYWRNZXNzYWdlUmVjZWl2ZXJzLnJlbW92ZShzdGF0aWNfY2FzdDx1
aW50OF90PihtZXNzYWdlUmVjZWl2ZXJOYW1lKSk7CiB9CiAKIHZvaWQgQ29ubmVjdGlvbjo6ZGlz
cGF0Y2hUaHJlYWRNZXNzYWdlUmVjZWl2ZXJNZXNzYWdlKFRocmVhZE1lc3NhZ2VSZWNlaXZlciYg
dGhyZWFkTWVzc2FnZVJlY2VpdmVyLCBEZWNvZGVyJiBkZWNvZGVyKQpAQCAtMzk1LDcgKzM5MSw3
IEBAIHZvaWQgQ29ubmVjdGlvbjo6ZGlzcGF0Y2hUaHJlYWRNZXNzYWdlUmUKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIGF1dG8gcmVwbHlFbmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNvZGVy
PigiSVBDIiwgIlN5bmNNZXNzYWdlUmVwbHkiLCBzeW5jUmVxdWVzdElEKTsKKyAgICBhdXRvIHJl
cGx5RW5jb2RlciA9IG1ha2VVbmlxdWU8RW5jb2Rlcj4oTWVzc2FnZU5hbWU6OlN5bmNNZXNzYWdl
UmVwbHksIHN5bmNSZXF1ZXN0SUQpOwogICAgIHRocmVhZE1lc3NhZ2VSZWNlaXZlci5kaWRSZWNl
aXZlU3luY01lc3NhZ2UoKnRoaXMsIGRlY29kZXIsIHJlcGx5RW5jb2Rlcik7CiAKICAgICAvLyBG
SVhNRTogSWYgdGhlIG1lc3NhZ2Ugd2FzIGludmFsaWQsIHdlIHNob3VsZCBzZW5kIGJhY2sgYSBT
eW5jTWVzc2FnZUVycm9yLgpAQCAtNDM2LDkgKzQzMiw5IEBAIHZvaWQgQ29ubmVjdGlvbjo6bWFy
a0N1cnJlbnRseURpc3BhdGNoZWQKICAgICBtX2RpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZSA9IHRy
dWU7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVyPiBDb25uZWN0aW9uOjpjcmVhdGVTeW5j
TWVzc2FnZUVuY29kZXIoU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIFN0cmlu
Z1JlZmVyZW5jZSBtZXNzYWdlTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgdWludDY0X3Qm
IHN5bmNSZXF1ZXN0SUQpCitzdGQ6OnVuaXF1ZV9wdHI8RW5jb2Rlcj4gQ29ubmVjdGlvbjo6Y3Jl
YXRlU3luY01lc3NhZ2VFbmNvZGVyKE1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lLCB1aW50NjRfdCBk
ZXN0aW5hdGlvbklELCB1aW50NjRfdCYgc3luY1JlcXVlc3RJRCkKIHsKLSAgICBhdXRvIGVuY29k
ZXIgPSBtYWtlVW5pcXVlPEVuY29kZXI+KG1lc3NhZ2VSZWNlaXZlck5hbWUsIG1lc3NhZ2VOYW1l
LCBkZXN0aW5hdGlvbklEKTsKKyAgICBhdXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlPEVuY29kZXI+
KG1lc3NhZ2VOYW1lLCBkZXN0aW5hdGlvbklEKTsKICAgICBlbmNvZGVyLT5zZXRJc1N5bmNNZXNz
YWdlKHRydWUpOwogCiAgICAgLy8gRW5jb2RlIHRoZSBzeW5jIHJlcXVlc3QgSUQuCkBAIC00NTMs
OSArNDQ5LDkgQEAgYm9vbCBDb25uZWN0aW9uOjpzZW5kTWVzc2FnZShzdGQ6OnVuaXF1ZQogICAg
IGlmICghaXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAoaXNNYWlu
VGhyZWFkKCkgJiYgbV9pbkRpc3BhdGNoTWVzc2FnZU1hcmtlZFRvVXNlRnVsbHlTeW5jaHJvbm91
c01vZGVGb3JUZXN0aW5nICYmICFlbmNvZGVyLT5pc1N5bmNNZXNzYWdlKCkgJiYgIShlbmNvZGVy
LT5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gIklQQyIpICYmICFzZW5kT3B0aW9ucy5jb250YWlu
cyhTZW5kT3B0aW9uOjpJZ25vcmVGdWxseVN5bmNocm9ub3VzTW9kZSkpIHsKKyAgICBpZiAoaXNN
YWluVGhyZWFkKCkgJiYgbV9pbkRpc3BhdGNoTWVzc2FnZU1hcmtlZFRvVXNlRnVsbHlTeW5jaHJv
bm91c01vZGVGb3JUZXN0aW5nICYmICFlbmNvZGVyLT5pc1N5bmNNZXNzYWdlKCkgJiYgIShlbmNv
ZGVyLT5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gUmVjZWl2ZXJOYW1lOjpJUEMpICYmICFzZW5k
T3B0aW9ucy5jb250YWlucyhTZW5kT3B0aW9uOjpJZ25vcmVGdWxseVN5bmNocm9ub3VzTW9kZSkp
IHsKICAgICAgICAgdWludDY0X3Qgc3luY1JlcXVlc3RJRDsKLSAgICAgICAgYXV0byB3cmFwcGVk
TWVzc2FnZSA9IGNyZWF0ZVN5bmNNZXNzYWdlRW5jb2RlcigiSVBDIiwgIldyYXBwZWRBc3luY01l
c3NhZ2VGb3JUZXN0aW5nIiwgZW5jb2Rlci0+ZGVzdGluYXRpb25JRCgpLCBzeW5jUmVxdWVzdElE
KTsKKyAgICAgICAgYXV0byB3cmFwcGVkTWVzc2FnZSA9IGNyZWF0ZVN5bmNNZXNzYWdlRW5jb2Rl
cihNZXNzYWdlTmFtZTo6V3JhcHBlZEFzeW5jTWVzc2FnZUZvclRlc3RpbmcsIGVuY29kZXItPmRl
c3RpbmF0aW9uSUQoKSwgc3luY1JlcXVlc3RJRCk7CiAgICAgICAgIHdyYXBwZWRNZXNzYWdlLT5z
ZXRGdWxseVN5bmNocm9ub3VzTW9kZUZvclRlc3RpbmcoKTsKICAgICAgICAgd3JhcHBlZE1lc3Nh
Z2UtPndyYXBGb3JUZXN0aW5nKFdURk1vdmUoZW5jb2RlcikpOwogICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8Ym9vbD4oc2VuZFN5bmNNZXNzYWdlKHN5bmNSZXF1ZXN0SUQsIFdURk1vdmUod3Jh
cHBlZE1lc3NhZ2UpLCBTZWNvbmRzOjppbmZpbml0eSgpLCB7IH0pKTsKQEAgLTQ5MCw3ICs0ODYs
NyBAQCBTZWNvbmRzIENvbm5lY3Rpb246OnRpbWVvdXRSZXNwZWN0aW5nSWduCiAgICAgcmV0dXJu
IG1faWdub3JlVGltZW91dHNGb3JUZXN0aW5nID8gU2Vjb25kczo6aW5maW5pdHkoKSA6IHRpbWVv
dXQ7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiBDb25uZWN0aW9uOjp3YWl0Rm9yTWVz
c2FnZShTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgU3RyaW5nUmVmZXJlbmNl
IG1lc3NhZ2VOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQsIE9w
dGlvblNldDxXYWl0Rm9yT3B0aW9uPiB3YWl0Rm9yT3B0aW9ucykKK3N0ZDo6dW5pcXVlX3B0cjxE
ZWNvZGVyPiBDb25uZWN0aW9uOjp3YWl0Rm9yTWVzc2FnZShNZXNzYWdlTmFtZSBtZXNzYWdlTmFt
ZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0LCBPcHRpb25TZXQ8V2Fp
dEZvck9wdGlvbj4gd2FpdEZvck9wdGlvbnMpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFp
bigpKTsKICAgICBhdXRvIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKTsKQEAgLTUwNiw3
ICs1MDIsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gQ29ubmVjdGlvbjo6d2FpCiAgICAg
ICAgIGZvciAoYXV0byBpdCA9IG1faW5jb21pbmdNZXNzYWdlcy5iZWdpbigpLCBlbmQgPSBtX2lu
Y29taW5nTWVzc2FnZXMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAgICAgICAgc3Rk
Ojp1bmlxdWVfcHRyPERlY29kZXI+JiBtZXNzYWdlID0gKml0OwogCi0gICAgICAgICAgICBpZiAo
bWVzc2FnZS0+bWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IG1lc3NhZ2VSZWNlaXZlck5hbWUgJiYg
bWVzc2FnZS0+bWVzc2FnZU5hbWUoKSA9PSBtZXNzYWdlTmFtZSAmJiBtZXNzYWdlLT5kZXN0aW5h
dGlvbklEKCkgPT0gZGVzdGluYXRpb25JRCkgeworICAgICAgICAgICAgaWYgKG1lc3NhZ2UtPm1l
c3NhZ2VOYW1lKCkgPT0gbWVzc2FnZU5hbWUgJiYgbWVzc2FnZS0+ZGVzdGluYXRpb25JRCgpID09
IGRlc3RpbmF0aW9uSUQpIHsKICAgICAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rl
cj4gcmV0dXJuZWRNZXNzYWdlID0gV1RGTW92ZShtZXNzYWdlKTsKIAogICAgICAgICAgICAgICAg
IG1faW5jb21pbmdNZXNzYWdlcy5yZW1vdmUoaXQpOwpAQCAtNTI4LDcgKzUyNCw3IEBAIHN0ZDo6
dW5pcXVlX3B0cjxEZWNvZGVyPiBDb25uZWN0aW9uOjp3YWkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgfQogCi0gICAgV2FpdEZvck1lc3NhZ2VTdGF0ZSB3YWl0aW5nRm9yTWVzc2FnZSht
ZXNzYWdlUmVjZWl2ZXJOYW1lLCBtZXNzYWdlTmFtZSwgZGVzdGluYXRpb25JRCwgd2FpdEZvck9w
dGlvbnMpOworICAgIFdhaXRGb3JNZXNzYWdlU3RhdGUgd2FpdGluZ0Zvck1lc3NhZ2UobWVzc2Fn
ZU5hbWUsIGRlc3RpbmF0aW9uSUQsIHdhaXRGb3JPcHRpb25zKTsKIAogICAgIHsKICAgICAgICAg
YXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3dhaXRGb3JNZXNzYWdlTXV0ZXgpOwpAQCAtNjAwLDE0
ICs1OTYsMTMgQEAgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IENvbm5lY3Rpb246OnNlbgogICAg
IGlmIChzZW5kU3luY09wdGlvbnMuY29udGFpbnMoU2VuZFN5bmNPcHRpb246OkZvcmNlRGlzcGF0
Y2hXaGVuRGVzdGluYXRpb25Jc1dhaXRpbmdGb3JVbmJvdW5kZWRTeW5jUmVwbHkpKQogICAgICAg
ICBzZW5kT3B0aW9ucyA9IHNlbmRPcHRpb25zIHwgSVBDOjpTZW5kT3B0aW9uOjpEaXNwYXRjaE1l
c3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JVbmJvdW5kZWRTeW5jUmVwbHk7CiAKLSAgICBhdXRvIG1l
c3NhZ2VSZWNlaXZlck5hbWUgPSBlbmNvZGVyLT5tZXNzYWdlUmVjZWl2ZXJOYW1lKCk7CiAgICAg
YXV0byBtZXNzYWdlTmFtZSA9IGVuY29kZXItPm1lc3NhZ2VOYW1lKCk7CiAgICAgc2VuZE1lc3Nh
Z2UoV1RGTW92ZShlbmNvZGVyKSwgc2VuZE9wdGlvbnMpOwogCiAgICAgLy8gVGhlbiB3YWl0IGZv
ciBhIHJlcGx5LiBXYWl0aW5nIGZvciBhIHJlcGx5IGNvdWxkIGludm9sdmUgZGlzcGF0Y2hpbmcg
aW5jb21pbmcgc3luYyBtZXNzYWdlcywgc28KICAgICAvLyBrZWVwIGFuIGV4dHJhIHJlZmVyZW5j
ZSB0byB0aGUgY29ubmVjdGlvbiBoZXJlIGluIGNhc2UgaXQncyBpbnZhbGlkYXRlZC4KICAgICBS
ZWY8Q29ubmVjdGlvbj4gcHJvdGVjdCgqdGhpcyk7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPERlY29k
ZXI+IHJlcGx5ID0gd2FpdEZvclN5bmNSZXBseShzeW5jUmVxdWVzdElELCBtZXNzYWdlUmVjZWl2
ZXJOYW1lLCBtZXNzYWdlTmFtZSwgdGltZW91dCwgc2VuZFN5bmNPcHRpb25zKTsKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gcmVwbHkgPSB3YWl0Rm9yU3luY1JlcGx5KHN5bmNSZXF1ZXN0
SUQsIG1lc3NhZ2VOYW1lLCB0aW1lb3V0LCBzZW5kU3luY09wdGlvbnMpOwogCiAgICAgLS1tX2lu
U2VuZFN5bmNDb3VudDsKIApAQCAtNjI0LDcgKzYxOSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxEZWNv
ZGVyPiBDb25uZWN0aW9uOjpzZW4KICAgICByZXR1cm4gcmVwbHk7CiB9CiAKLXN0ZDo6dW5pcXVl
X3B0cjxEZWNvZGVyPiBDb25uZWN0aW9uOjp3YWl0Rm9yU3luY1JlcGx5KHVpbnQ2NF90IHN5bmNS
ZXF1ZXN0SUQsIFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBTdHJpbmdSZWZl
cmVuY2UgbWVzc2FnZU5hbWUsIFNlY29uZHMgdGltZW91dCwgT3B0aW9uU2V0PFNlbmRTeW5jT3B0
aW9uPiBzZW5kU3luY09wdGlvbnMpCitzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gQ29ubmVjdGlv
bjo6d2FpdEZvclN5bmNSZXBseSh1aW50NjRfdCBzeW5jUmVxdWVzdElELCBNZXNzYWdlTmFtZSBt
ZXNzYWdlTmFtZSwgU2Vjb25kcyB0aW1lb3V0LCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRpb24+IHNl
bmRTeW5jT3B0aW9ucykKIHsKICAgICB0aW1lb3V0ID0gdGltZW91dFJlc3BlY3RpbmdJZ25vcmVU
aW1lb3V0c0ZvclRlc3RpbmcodGltZW91dCk7CiAgICAgTW9ub3RvbmljVGltZSBhYnNvbHV0ZVRp
bWUgPSBNb25vdG9uaWNUaW1lOjpub3coKSArIHRpbWVvdXQ7CkBAIC02NjksOSArNjY0LDkgQEAg
c3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IENvbm5lY3Rpb246OndhaQogICAgIH0KIAogI2lmIE9T
KERBUldJTikKLSAgICBSRUxFQVNFX0xPR19FUlJPUihJUEMsICJDb25uZWN0aW9uOjp3YWl0Rm9y
U3luY1JlcGx5OiBUaW1lZC1vdXQgd2hpbGUgd2FpdGluZyBmb3IgcmVwbHkgZm9yICV7cHVibGlj
fXM6OiV7cHVibGljfXMgZnJvbSBwcm9jZXNzICVkLCBpZCA9ICUiIFBSSXU2NCwgbWVzc2FnZVJl
Y2VpdmVyTmFtZS50b1N0cmluZygpLmRhdGEoKSwgbWVzc2FnZU5hbWUudG9TdHJpbmcoKS5kYXRh
KCksIHJlbW90ZVByb2Nlc3NJRCgpLCBzeW5jUmVxdWVzdElEKTsKKyAgICBSRUxFQVNFX0xPR19F
UlJPUihJUEMsICJDb25uZWN0aW9uOjp3YWl0Rm9yU3luY1JlcGx5OiBUaW1lZC1vdXQgd2hpbGUg
d2FpdGluZyBmb3IgcmVwbHkgZm9yICV7cHVibGljfXMgZnJvbSBwcm9jZXNzICVkLCBpZCA9ICUi
IFBSSXU2NCwgZGVzY3JpcHRpb24obWVzc2FnZU5hbWUpLCByZW1vdGVQcm9jZXNzSUQoKSwgc3lu
Y1JlcXVlc3RJRCk7CiAjZWxzZQotICAgIFJFTEVBU0VfTE9HX0VSUk9SKElQQywgIkNvbm5lY3Rp
b246OndhaXRGb3JTeW5jUmVwbHk6IFRpbWVkLW91dCB3aGlsZSB3YWl0aW5nIGZvciByZXBseSBm
b3IgJXM6OiVzLCBpZCA9ICUiIFBSSXU2NCwgbWVzc2FnZVJlY2VpdmVyTmFtZS50b1N0cmluZygp
LmRhdGEoKSwgbWVzc2FnZU5hbWUudG9TdHJpbmcoKS5kYXRhKCksIHN5bmNSZXF1ZXN0SUQpOwor
ICAgIFJFTEVBU0VfTE9HX0VSUk9SKElQQywgIkNvbm5lY3Rpb246OndhaXRGb3JTeW5jUmVwbHk6
IFRpbWVkLW91dCB3aGlsZSB3YWl0aW5nIGZvciByZXBseSBmb3IgJXMsIGlkID0gJSIgUFJJdTY0
LCBkZXNjcmlwdGlvbihtZXNzYWdlTmFtZSksIHN5bmNSZXF1ZXN0SUQpOwogI2VuZGlmCiAKICAg
ICBkaWRSZWNlaXZlU3luY1JlcGx5KHNlbmRTeW5jT3B0aW9ucyk7CkBAIC03MTEsMjMgKzcwNiwx
NiBAQCB2b2lkIENvbm5lY3Rpb246OnByb2Nlc3NJbmNvbWluZ1N5bmNSZXBsCiAKIHZvaWQgQ29u
bmVjdGlvbjo6cHJvY2Vzc0luY29taW5nTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4g
bWVzc2FnZSkKIHsKLSAgICBBU1NFUlQoIW1lc3NhZ2UtPm1lc3NhZ2VSZWNlaXZlck5hbWUoKS5p
c0VtcHR5KCkpOwotICAgIEFTU0VSVCghbWVzc2FnZS0+bWVzc2FnZU5hbWUoKS5pc0VtcHR5KCkp
OworICAgIEFTU0VSVChtZXNzYWdlLT5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgIT0gUmVjZWl2ZXJO
YW1lOjpJbnZhbGlkKTsKIAotICAgIGlmIChtZXNzYWdlLT5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkg
PT0gIklQQyIgJiYgbWVzc2FnZS0+bWVzc2FnZU5hbWUoKSA9PSAiU3luY01lc3NhZ2VSZXBseSIp
IHsKKyAgICBpZiAobWVzc2FnZS0+bWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlTmFtZTo6U3luY01l
c3NhZ2VSZXBseSkgewogICAgICAgICBwcm9jZXNzSW5jb21pbmdTeW5jUmVwbHkoV1RGTW92ZSht
ZXNzYWdlKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoIVdvcmtRdWV1ZU1l
c3NhZ2VSZWNlaXZlck1hcDo6aXNWYWxpZEtleShtZXNzYWdlLT5tZXNzYWdlUmVjZWl2ZXJOYW1l
KCkpIHx8ICFUaHJlYWRNZXNzYWdlUmVjZWl2ZXJNYXA6OmlzVmFsaWRLZXkobWVzc2FnZS0+bWVz
c2FnZVJlY2VpdmVyTmFtZSgpKSkgewotICAgICAgICBSZWZQdHI8Q29ubmVjdGlvbj4gcHJvdGVj
dGVkVGhpcyh0aGlzKTsKLSAgICAgICAgU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5h
bWVSZWZlcmVuY2UgPSBtZXNzYWdlLT5tZXNzYWdlUmVjZWl2ZXJOYW1lKCk7Ci0gICAgICAgIFN0
cmluZyBtZXNzYWdlUmVjZWl2ZXJOYW1lKG1lc3NhZ2VSZWNlaXZlck5hbWVSZWZlcmVuY2UuaXNF
bXB0eSgpID8gIjx1bmtub3duIG1lc3NhZ2UgcmVjZWl2ZXI+IiA6IFN0cmluZyhtZXNzYWdlUmVj
ZWl2ZXJOYW1lUmVmZXJlbmNlLmRhdGEoKSwgbWVzc2FnZVJlY2VpdmVyTmFtZVJlZmVyZW5jZS5z
aXplKCkpKTsKLSAgICAgICAgU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lUmVmZXJlbmNlID0g
bWVzc2FnZS0+bWVzc2FnZU5hbWUoKTsKLSAgICAgICAgU3RyaW5nIG1lc3NhZ2VOYW1lKG1lc3Nh
Z2VOYW1lUmVmZXJlbmNlLmlzRW1wdHkoKSA/ICI8dW5rbm93biBtZXNzYWdlPiIgOiBTdHJpbmco
bWVzc2FnZU5hbWVSZWZlcmVuY2UuZGF0YSgpLCBtZXNzYWdlTmFtZVJlZmVyZW5jZS5zaXplKCkp
KTsKLQotICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKSwgbWVzc2FnZVJlY2VpdmVyTmFtZSA9IFdURk1vdmUobWVzc2FnZVJlY2Vp
dmVyTmFtZSksIG1lc3NhZ2VOYW1lID0gV1RGTW92ZShtZXNzYWdlTmFtZSldKCkgbXV0YWJsZSB7
Ci0gICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5kaXNwYXRjaERpZFJlY2VpdmVJbnZhbGlkTWVz
c2FnZShtZXNzYWdlUmVjZWl2ZXJOYW1lLnV0ZjgoKSwgbWVzc2FnZU5hbWUudXRmOCgpKTsKKyAg
ICBpZiAoIVdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlck1hcDo6aXNWYWxpZEtleShzdGF0aWNfY2Fz
dDx1aW50OF90PihtZXNzYWdlLT5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkpKSB8fCAhVGhyZWFkTWVz
c2FnZVJlY2VpdmVyTWFwOjppc1ZhbGlkS2V5KHN0YXRpY19jYXN0PHVpbnQ4X3Q+KG1lc3NhZ2Ut
Pm1lc3NhZ2VSZWNlaXZlck5hbWUoKSkpKSB7CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNw
YXRjaChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBtZXNzYWdlTmFtZSA9IG1lc3Nh
Z2UtPm1lc3NhZ2VOYW1lKCldKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBwcm90ZWN0ZWRUaGlz
LT5kaXNwYXRjaERpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShtZXNzYWdlTmFtZSk7CiAgICAgICAg
IH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNzU5LDcgKzc0Nyw3IEBAIHZvaWQgQ29u
bmVjdGlvbjo6cHJvY2Vzc0luY29taW5nTWVzc2FnZSgKICAgICAgICAgYXV0byBsb2NrZXIgPSBo
b2xkTG9jayhtX3dhaXRGb3JNZXNzYWdlTXV0ZXgpOwogCiAgICAgICAgIGlmIChtX3dhaXRpbmdG
b3JNZXNzYWdlICYmICFtX3dhaXRpbmdGb3JNZXNzYWdlLT5kZWNvZGVyKSB7Ci0gICAgICAgICAg
ICBpZiAobV93YWl0aW5nRm9yTWVzc2FnZS0+bWVzc2FnZVJlY2VpdmVyTmFtZSA9PSBtZXNzYWdl
LT5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgJiYgbV93YWl0aW5nRm9yTWVzc2FnZS0+bWVzc2FnZU5h
bWUgPT0gbWVzc2FnZS0+bWVzc2FnZU5hbWUoKSAmJiBtX3dhaXRpbmdGb3JNZXNzYWdlLT5kZXN0
aW5hdGlvbklEID09IG1lc3NhZ2UtPmRlc3RpbmF0aW9uSUQoKSkgeworICAgICAgICAgICAgaWYg
KG1fd2FpdGluZ0Zvck1lc3NhZ2UtPm1lc3NhZ2VOYW1lID09IG1lc3NhZ2UtPm1lc3NhZ2VOYW1l
KCkgJiYgbV93YWl0aW5nRm9yTWVzc2FnZS0+ZGVzdGluYXRpb25JRCA9PSBtZXNzYWdlLT5kZXN0
aW5hdGlvbklEKCkpIHsKICAgICAgICAgICAgICAgICBtX3dhaXRpbmdGb3JNZXNzYWdlLT5kZWNv
ZGVyID0gV1RGTW92ZShtZXNzYWdlKTsKICAgICAgICAgICAgICAgICBBU1NFUlQobV93YWl0aW5n
Rm9yTWVzc2FnZS0+ZGVjb2Rlcik7CiAgICAgICAgICAgICAgICAgbV93YWl0Rm9yTWVzc2FnZUNv
bmRpdGlvbi5ub3RpZnlPbmUoKTsKQEAgLTkxMiw5ICs5MDAsOSBAQCB2b2lkIENvbm5lY3Rpb246
OmRpc3BhdGNoU3luY01lc3NhZ2UoRGVjCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBh
dXRvIHJlcGx5RW5jb2RlciA9IG1ha2VVbmlxdWU8RW5jb2Rlcj4oIklQQyIsICJTeW5jTWVzc2Fn
ZVJlcGx5Iiwgc3luY1JlcXVlc3RJRCk7CisgICAgYXV0byByZXBseUVuY29kZXIgPSBtYWtlVW5p
cXVlPEVuY29kZXI+KE1lc3NhZ2VOYW1lOjpTeW5jTWVzc2FnZVJlcGx5LCBzeW5jUmVxdWVzdElE
KTsKIAotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSAiSVBDIiAmJiBk
ZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gIldyYXBwZWRBc3luY01lc3NhZ2VGb3JUZXN0aW5nIikg
eworICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZU5hbWU6OldyYXBwZWRB
c3luY01lc3NhZ2VGb3JUZXN0aW5nKSB7CiAgICAgICAgIGlmICghbV9mdWxseVN5bmNocm9ub3Vz
TW9kZUlzQWxsb3dlZEZvclRlc3RpbmcpIHsKICAgICAgICAgICAgIGRlY29kZXIubWFya0ludmFs
aWQoKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTkzNiwxNCArOTI0LDE0IEBAIHZvaWQgQ29u
bmVjdGlvbjo6ZGlzcGF0Y2hTeW5jTWVzc2FnZShEZWMKICAgICAgICAgc2VuZFN5bmNSZXBseShX
VEZNb3ZlKHJlcGx5RW5jb2RlcikpOwogfQogCi12b2lkIENvbm5lY3Rpb246OmRpc3BhdGNoRGlk
UmVjZWl2ZUludmFsaWRNZXNzYWdlKGNvbnN0IENTdHJpbmcmIG1lc3NhZ2VSZWNlaXZlck5hbWVT
dHJpbmcsIGNvbnN0IENTdHJpbmcmIG1lc3NhZ2VOYW1lU3RyaW5nKQordm9pZCBDb25uZWN0aW9u
OjpkaXNwYXRjaERpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShNZXNzYWdlTmFtZSBtZXNzYWdlTmFt
ZSkKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAgaWYgKCFpc1ZhbGlk
KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fY2xpZW50LmRpZFJlY2VpdmVJbnZhbGlkTWVz
c2FnZSgqdGhpcywgU3RyaW5nUmVmZXJlbmNlKG1lc3NhZ2VSZWNlaXZlck5hbWVTdHJpbmcuZGF0
YSgpLCBtZXNzYWdlUmVjZWl2ZXJOYW1lU3RyaW5nLmxlbmd0aCgpKSwgU3RyaW5nUmVmZXJlbmNl
KG1lc3NhZ2VOYW1lU3RyaW5nLmRhdGEoKSwgbWVzc2FnZU5hbWVTdHJpbmcubGVuZ3RoKCkpKTsK
KyAgICBtX2NsaWVudC5kaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoKnRoaXMsIG1lc3NhZ2VOYW1l
KTsKIH0KIAogdm9pZCBDb25uZWN0aW9uOjpkaWRGYWlsVG9TZW5kU3luY01lc3NhZ2UoKQpAQCAt
OTg5LDcgKzk3Nyw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6ZW5xdWV1ZUluY29taW5nTWVzc2FnZSgK
IHZvaWQgQ29ubmVjdGlvbjo6ZGlzcGF0Y2hNZXNzYWdlKERlY29kZXImIGRlY29kZXIpCiB7CiAg
ICAgUkVMRUFTRV9BU1NFUlQoaXNWYWxpZCgpKTsKLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVj
ZWl2ZXJOYW1lKCkgPT0gIkFzeW5jUmVwbHkiKSB7CisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJl
Y2VpdmVyTmFtZSgpID09IFJlY2VpdmVyTmFtZTo6QXN5bmNSZXBseSkgewogICAgICAgICBPcHRp
b25hbDx1aW50NjRfdD4gbGlzdGVuZXJJRDsKICAgICAgICAgZGVjb2RlciA+PiBsaXN0ZW5lcklE
OwogICAgICAgICBpZiAoIWxpc3RlbmVySUQpIHsKQEAgLTEwMTEsNyArOTk5LDcgQEAgdm9pZCBD
b25uZWN0aW9uOjpkaXNwYXRjaE1lc3NhZ2UoRGVjb2RlcgogYm9vbCBDb25uZWN0aW9uOjpkaXNw
YXRjaE1lc3NhZ2VUb1dvcmtRdWV1ZVJlY2VpdmVyKHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiYg
bWVzc2FnZSkKIHsKICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fd29ya1F1ZXVlTWVzc2Fn
ZVJlY2VpdmVyc011dGV4KTsKLSAgICBhdXRvIGl0ID0gbV93b3JrUXVldWVNZXNzYWdlUmVjZWl2
ZXJzLmZpbmQobWVzc2FnZS0+bWVzc2FnZVJlY2VpdmVyTmFtZSgpKTsKKyAgICBhdXRvIGl0ID0g
bV93b3JrUXVldWVNZXNzYWdlUmVjZWl2ZXJzLmZpbmQoc3RhdGljX2Nhc3Q8dWludDhfdD4obWVz
c2FnZS0+bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSk7CiAgICAgaWYgKGl0ICE9IG1fd29ya1F1ZXVl
TWVzc2FnZVJlY2VpdmVycy5lbmQoKSkgewogICAgICAgICBpdC0+dmFsdWUuZmlyc3QtPmRpc3Bh
dGNoKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHdvcmtRdWV1ZU1lc3NhZ2VSZWNl
aXZlciA9IGl0LT52YWx1ZS5zZWNvbmQsIGRlY29kZXIgPSBXVEZNb3ZlKG1lc3NhZ2UpXSgpIG11
dGFibGUgewogICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+ZGlzcGF0Y2hXb3JrUXVldWVNZXNz
YWdlUmVjZWl2ZXJNZXNzYWdlKCp3b3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIsICpkZWNvZGVyKTsK
QEAgLTEwMjYsNyArMTAxNCw3IEBAIGJvb2wgQ29ubmVjdGlvbjo6ZGlzcGF0Y2hNZXNzYWdlVG9U
aHJlYWQKICAgICBSZWZQdHI8VGhyZWFkTWVzc2FnZVJlY2VpdmVyPiBwcm90ZWN0ZWRUaHJlYWRN
ZXNzYWdlUmVjZWl2ZXI7CiAgICAgewogICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1f
dGhyZWFkTWVzc2FnZVJlY2VpdmVyc0xvY2spOwotICAgICAgICBwcm90ZWN0ZWRUaHJlYWRNZXNz
YWdlUmVjZWl2ZXIgPSBtX3RocmVhZE1lc3NhZ2VSZWNlaXZlcnMuZ2V0KG1lc3NhZ2UtPm1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSk7CisgICAgICAgIHByb3RlY3RlZFRocmVhZE1lc3NhZ2VSZWNlaXZl
ciA9IG1fdGhyZWFkTWVzc2FnZVJlY2VpdmVycy5nZXQoc3RhdGljX2Nhc3Q8dWludDhfdD4obWVz
c2FnZS0+bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSk7CiAgICAgfQogCiAgICAgaWYgKHByb3RlY3Rl
ZFRocmVhZE1lc3NhZ2VSZWNlaXZlcikgewpAQCAtMTA1NCw3ICsxMDQyLDcgQEAgdm9pZCBDb25u
ZWN0aW9uOjpkaXNwYXRjaE1lc3NhZ2Uoc3RkOjp1bgogCiAgICAgaWYgKG1lc3NhZ2UtPnNob3Vs
ZFVzZUZ1bGx5U3luY2hyb25vdXNNb2RlRm9yVGVzdGluZygpKSB7CiAgICAgICAgIGlmICghbV9m
dWxseVN5bmNocm9ub3VzTW9kZUlzQWxsb3dlZEZvclRlc3RpbmcpIHsKLSAgICAgICAgICAgIG1f
Y2xpZW50LmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZSgqdGhpcywgbWVzc2FnZS0+bWVzc2FnZVJl
Y2VpdmVyTmFtZSgpLCBtZXNzYWdlLT5tZXNzYWdlTmFtZSgpKTsKKyAgICAgICAgICAgIG1fY2xp
ZW50LmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZSgqdGhpcywgbWVzc2FnZS0+bWVzc2FnZU5hbWUo
KSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgbV9pbkRpc3BhdGNo
TWVzc2FnZU1hcmtlZFRvVXNlRnVsbHlTeW5jaHJvbm91c01vZGVGb3JUZXN0aW5nKys7CkBAIC0x
MDg4LDcgKzEwNzYsNyBAQCB2b2lkIENvbm5lY3Rpb246OmRpc3BhdGNoTWVzc2FnZShzdGQ6OnVu
CiAgICAgICAgIG1faW5EaXNwYXRjaE1lc3NhZ2VNYXJrZWRUb1VzZUZ1bGx5U3luY2hyb25vdXNN
b2RlRm9yVGVzdGluZy0tOwogCiAgICAgaWYgKG1fZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlICYm
IGlzVmFsaWQoKSkKLSAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKCp0
aGlzLCBtZXNzYWdlLT5tZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1lc3NhZ2UtPm1lc3NhZ2VOYW1l
KCkpOworICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoKnRoaXMsIG1l
c3NhZ2UtPm1lc3NhZ2VOYW1lKCkpOwogCiAgICAgbV9kaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2Ug
PSBvbGREaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2U7CiB9CkBAIC0xMTY4LDcgKzExNTYsNyBAQCB2
b2lkIENvbm5lY3Rpb246OmRpc3BhdGNoSW5jb21pbmdNZXNzYWdlCiAgICAgICAgIGlmIChtZXNz
YWdlc1RvUHJvY2VzcyA8IG1faW5jb21pbmdNZXNzYWdlcy5zaXplKCkpIHsKICAgICAgICAgICAg
IFJFTEVBU0VfTE9HX0VSUk9SKElQQywgIiVwIC0gQ29ubmVjdGlvbjo6ZGlzcGF0Y2hJbmNvbWlu
Z01lc3NhZ2VzOiBJUEMgdGhyb3R0bGluZyB3YXMgdHJpZ2dlcmVkIChoYXMgJXp1IHBlbmRpbmcg
aW5jb21pbmcgbWVzc2FnZXMsIHdpbGwgb25seSBwcm9jZXNzICV6dSBiZWZvcmUgeWllbGRpbmcp
IiwgdGhpcywgbV9pbmNvbWluZ01lc3NhZ2VzLnNpemUoKSwgbWVzc2FnZXNUb1Byb2Nlc3MpOwog
I2lmIFBMQVRGT1JNKENPQ09BKQotICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoSVBDLCAi
JXAgLSBDb25uZWN0aW9uOjpkaXNwYXRjaEluY29taW5nTWVzc2FnZXM6IGZpcnN0IElQQyBtZXNz
YWdlIGluIHF1ZXVlIGlzICV7cHVibGljfXM6OiV7cHVibGljfXMiLCB0aGlzLCBtZXNzYWdlLT5t
ZXNzYWdlUmVjZWl2ZXJOYW1lKCkudG9TdHJpbmcoKS5kYXRhKCksIG1lc3NhZ2UtPm1lc3NhZ2VO
YW1lKCkudG9TdHJpbmcoKS5kYXRhKCkpOworICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1Io
SVBDLCAiJXAgLSBDb25uZWN0aW9uOjpkaXNwYXRjaEluY29taW5nTWVzc2FnZXM6IGZpcnN0IElQ
QyBtZXNzYWdlIGluIHF1ZXVlIGlzICV7cHVibGljfXMiLCB0aGlzLCBkZXNjcmlwdGlvbihtZXNz
YWdlLT5tZXNzYWdlTmFtZSgpKSk7CiAjZW5kaWYKICAgICAgICAgfQogCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCShyZXZpc2lvbiAyNjA3NjQpCisrKyBTb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTEw
Nyw3ICsxMDcsNyBAQCBwdWJsaWM6CiAgICAgY2xhc3MgQ2xpZW50IDogcHVibGljIE1lc3NhZ2VS
ZWNlaXZlciB7CiAgICAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2xvc2UoQ29u
bmVjdGlvbiYpID0gMDsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVz
c2FnZShDb25uZWN0aW9uJiwgU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIFN0
cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZSkgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVjZWl2ZUludmFsaWRNZXNzYWdlKENvbm5lY3Rpb24mLCBNZXNzYWdlTmFtZSkgPSAwOwogCiAg
ICAgcHJvdGVjdGVkOgogICAgICAgICB2aXJ0dWFsIH5DbGllbnQoKSB7IH0KQEAgLTE4OSwxMSAr
MTg5LDExIEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIHZvaWQgKCpEaWRDbG9zZU9uQ29ubmVjdGlv
bldvcmtRdWV1ZUNhbGxiYWNrKShDb25uZWN0aW9uKik7CiAgICAgdm9pZCBzZXREaWRDbG9zZU9u
Q29ubmVjdGlvbldvcmtRdWV1ZUNhbGxiYWNrKERpZENsb3NlT25Db25uZWN0aW9uV29ya1F1ZXVl
Q2FsbGJhY2spOwogCi0gICAgdm9pZCBhZGRXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIoU3RyaW5n
UmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIFdvcmtRdWV1ZSYsIFdvcmtRdWV1ZU1lc3Nh
Z2VSZWNlaXZlciopOwotICAgIHZvaWQgcmVtb3ZlV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKFN0
cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lKTsKKyAgICB2b2lkIGFkZFdvcmtRdWV1
ZU1lc3NhZ2VSZWNlaXZlcihSZWNlaXZlck5hbWUsIFdvcmtRdWV1ZSYsIFdvcmtRdWV1ZU1lc3Nh
Z2VSZWNlaXZlciopOworICAgIHZvaWQgcmVtb3ZlV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKFJl
Y2VpdmVyTmFtZSk7CiAKLSAgICB2b2lkIGFkZFRocmVhZE1lc3NhZ2VSZWNlaXZlcihTdHJpbmdS
ZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgVGhyZWFkTWVzc2FnZVJlY2VpdmVyKik7Ci0g
ICAgdm9pZCByZW1vdmVUaHJlYWRNZXNzYWdlUmVjZWl2ZXIoU3RyaW5nUmVmZXJlbmNlIG1lc3Nh
Z2VSZWNlaXZlck5hbWUpOworICAgIHZvaWQgYWRkVGhyZWFkTWVzc2FnZVJlY2VpdmVyKFJlY2Vp
dmVyTmFtZSwgVGhyZWFkTWVzc2FnZVJlY2VpdmVyKik7CisgICAgdm9pZCByZW1vdmVUaHJlYWRN
ZXNzYWdlUmVjZWl2ZXIoUmVjZWl2ZXJOYW1lKTsKIAogICAgIGJvb2wgb3BlbigpOwogICAgIHZv
aWQgaW52YWxpZGF0ZSgpOwpAQCAtMjM1LDcgKzIzNSw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAg
ICBib29sIHNlbmRNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVyPiwgT3B0aW9uU2V0PFNl
bmRPcHRpb24+IHNlbmRPcHRpb25zKTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RW5jb2Rlcj4gY3Jl
YXRlU3luY01lc3NhZ2VFbmNvZGVyKFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1l
LCBTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIHVp
bnQ2NF90JiBzeW5jUmVxdWVzdElEKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RW5jb2Rlcj4gY3Jl
YXRlU3luY01lc3NhZ2VFbmNvZGVyKE1lc3NhZ2VOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklE
LCB1aW50NjRfdCYgc3luY1JlcXVlc3RJRCk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+
IHNlbmRTeW5jTWVzc2FnZSh1aW50NjRfdCBzeW5jUmVxdWVzdElELCBzdGQ6OnVuaXF1ZV9wdHI8
RW5jb2Rlcj4sIFNlY29uZHMgdGltZW91dCwgT3B0aW9uU2V0PFNlbmRTeW5jT3B0aW9uPiBzZW5k
U3luY09wdGlvbnMpOwogICAgIGJvb2wgc2VuZFN5bmNSZXBseShzdGQ6OnVuaXF1ZV9wdHI8RW5j
b2Rlcj4pOwogCkBAIC0yNzQsOSArMjc0LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBsYXRmb3Jt
SW5pdGlhbGl6ZShJZGVudGlmaWVyKTsKICAgICB2b2lkIHBsYXRmb3JtSW52YWxpZGF0ZSgpOwog
ICAgIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiB3YWl0Rm9yTWVzc2FnZShTdHJpbmdS
ZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1l
LCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQsIE9wdGlvblNldDxXYWl0
Rm9yT3B0aW9uPik7CisgICAgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IHdhaXRGb3JNZXNzYWdl
KE1lc3NhZ2VOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQsIE9w
dGlvblNldDxXYWl0Rm9yT3B0aW9uPik7CiAgICAgCi0gICAgc3RkOjp1bmlxdWVfcHRyPERlY29k
ZXI+IHdhaXRGb3JTeW5jUmVwbHkodWludDY0X3Qgc3luY1JlcXVlc3RJRCwgU3RyaW5nUmVmZXJl
bmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZSwgU2Vj
b25kcyB0aW1lb3V0LCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRpb24+KTsKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8RGVjb2Rlcj4gd2FpdEZvclN5bmNSZXBseSh1aW50NjRfdCBzeW5jUmVxdWVzdElELCBN
ZXNzYWdlTmFtZSwgU2Vjb25kcyB0aW1lb3V0LCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRpb24+KTsK
IAogICAgIGJvb2wgZGlzcGF0Y2hNZXNzYWdlVG9Xb3JrUXVldWVSZWNlaXZlcihzdGQ6OnVuaXF1
ZV9wdHI8RGVjb2Rlcj4mKTsKICAgICBib29sIGRpc3BhdGNoTWVzc2FnZVRvVGhyZWFkUmVjZWl2
ZXIoc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+Jik7CkBAIC0zMDAsNyArMzAwLDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIGRpc3BhdGNoTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4pOwog
ICAgIHZvaWQgZGlzcGF0Y2hNZXNzYWdlKERlY29kZXImKTsKICAgICB2b2lkIGRpc3BhdGNoU3lu
Y01lc3NhZ2UoRGVjb2RlciYpOwotICAgIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSW52YWxpZE1l
c3NhZ2UoY29uc3QgQ1N0cmluZyYgbWVzc2FnZVJlY2VpdmVyTmFtZVN0cmluZywgY29uc3QgQ1N0
cmluZyYgbWVzc2FnZU5hbWVTdHJpbmcpOworICAgIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSW52
YWxpZE1lc3NhZ2UoTWVzc2FnZU5hbWUpOwogICAgIHZvaWQgZGlkRmFpbFRvU2VuZFN5bmNNZXNz
YWdlKCk7CiAKICAgICAvLyBDYW4gYmUgY2FsbGVkIG9uIGFueSB0aHJlYWQuCkBAIC0zNDYsMTEg
KzM0NiwxMSBAQCBwcml2YXRlOgogICAgIFJlZjxXb3JrUXVldWU+IG1fY29ubmVjdGlvblF1ZXVl
OwogCiAgICAgTG9jayBtX3dvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcnNNdXRleDsKLSAgICB1c2lu
ZyBXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXJNYXAgPSBIYXNoTWFwPFN0cmluZ1JlZmVyZW5jZSwg
c3RkOjpwYWlyPFJlZlB0cjxXb3JrUXVldWU+LCBSZWZQdHI8V29ya1F1ZXVlTWVzc2FnZVJlY2Vp
dmVyPj4+OworICAgIHVzaW5nIFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlck1hcCA9IEhhc2hNYXA8
dWludDhfdCwgc3RkOjpwYWlyPFJlZlB0cjxXb3JrUXVldWU+LCBSZWZQdHI8V29ya1F1ZXVlTWVz
c2FnZVJlY2VpdmVyPj4+OwogICAgIFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlck1hcCBtX3dvcmtR
dWV1ZU1lc3NhZ2VSZWNlaXZlcnM7CiAKICAgICBMb2NrIG1fdGhyZWFkTWVzc2FnZVJlY2VpdmVy
c0xvY2s7Ci0gICAgdXNpbmcgVGhyZWFkTWVzc2FnZVJlY2VpdmVyTWFwID0gSGFzaE1hcDxTdHJp
bmdSZWZlcmVuY2UsIFJlZlB0cjxUaHJlYWRNZXNzYWdlUmVjZWl2ZXI+PjsKKyAgICB1c2luZyBU
aHJlYWRNZXNzYWdlUmVjZWl2ZXJNYXAgPSBIYXNoTWFwPHVpbnQ4X3QsIFJlZlB0cjxUaHJlYWRN
ZXNzYWdlUmVjZWl2ZXI+PjsKICAgICBUaHJlYWRNZXNzYWdlUmVjZWl2ZXJNYXAgbV90aHJlYWRN
ZXNzYWdlUmVjZWl2ZXJzOwogCiAgICAgdW5zaWduZWQgbV9pblNlbmRTeW5jQ291bnQ7CkBAIC00
NjIsNyArNDYyLDcgQEAgYm9vbCBDb25uZWN0aW9uOjpzZW5kKFQmJiBtZXNzYWdlLCB1aW50Ngog
ewogICAgIENPTVBJTEVfQVNTRVJUKCFUOjppc1N5bmMsIEFzeW5jTWVzc2FnZUV4cGVjdGVkKTsK
IAotICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWU8RW5jb2Rlcj4oVDo6cmVjZWl2ZXJOYW1l
KCksIFQ6Om5hbWUoKSwgZGVzdGluYXRpb25JRCk7CisgICAgYXV0byBlbmNvZGVyID0gbWFrZVVu
aXF1ZTxFbmNvZGVyPihUOjpuYW1lKCksIGRlc3RpbmF0aW9uSUQpOwogICAgIGVuY29kZXItPmVu
Y29kZShtZXNzYWdlLmFyZ3VtZW50cygpKTsKICAgICAKICAgICByZXR1cm4gc2VuZE1lc3NhZ2Uo
V1RGTW92ZShlbmNvZGVyKSwgc2VuZE9wdGlvbnMpOwpAQCAtNDc3LDcgKzQ3Nyw3IEBAIHZvaWQg
Q29ubmVjdGlvbjo6c2VuZFdpdGhBc3luY1JlcGx5KFQmJiAKIHsKICAgICBDT01QSUxFX0FTU0VS
VCghVDo6aXNTeW5jLCBBc3luY01lc3NhZ2VFeHBlY3RlZCk7CiAKLSAgICBhdXRvIGVuY29kZXIg
PSBtYWtlVW5pcXVlPEVuY29kZXI+KFQ6OnJlY2VpdmVyTmFtZSgpLCBUOjpuYW1lKCksIGRlc3Rp
bmF0aW9uSUQpOworICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWU8RW5jb2Rlcj4oVDo6bmFt
ZSgpLCBkZXN0aW5hdGlvbklEKTsKICAgICB1aW50NjRfdCBsaXN0ZW5lcklEID0gbmV4dEFzeW5j
UmVwbHlIYW5kbGVySUQoKTsKICAgICBlbmNvZGVyLT5lbmNvZGUobGlzdGVuZXJJRCk7CiAgICAg
ZW5jb2Rlci0+ZW5jb2RlKG1lc3NhZ2UuYXJndW1lbnRzKCkpOwpAQCAtNTE1LDcgKzUxNSw3IEBA
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgQ29ubmVjdGlvbjo6c2UKICAgICBSRUxFQVNFX0FT
U0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKICAgICB1aW50NjRfdCBzeW5jUmVxdWVzdElEID0g
MDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RW5jb2Rlcj4gZW5jb2RlciA9IGNyZWF0ZVN5bmNNZXNz
YWdlRW5jb2RlcihUOjpyZWNlaXZlck5hbWUoKSwgVDo6bmFtZSgpLCBkZXN0aW5hdGlvbklELCBz
eW5jUmVxdWVzdElEKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RW5jb2Rlcj4gZW5jb2RlciA9IGNy
ZWF0ZVN5bmNNZXNzYWdlRW5jb2RlcihUOjpuYW1lKCksIGRlc3RpbmF0aW9uSUQsIHN5bmNSZXF1
ZXN0SUQpOwogCiAgICAgaWYgKHNlbmRTeW5jT3B0aW9ucy5jb250YWlucyhTZW5kU3luY09wdGlv
bjo6VXNlRnVsbHlTeW5jaHJvbm91c01vZGVGb3JUZXN0aW5nKSkgewogICAgICAgICBlbmNvZGVy
LT5zZXRGdWxseVN5bmNocm9ub3VzTW9kZUZvclRlc3RpbmcoKTsKQEAgLTU0Miw3ICs1NDIsNyBA
QCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29sIENvbm5lY3Rpb246OnNlCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBib29sIENvbm5lY3Rpb246OndhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5KHVp
bnQ2NF90IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCwgT3B0aW9uU2V0PFdhaXRGb3JP
cHRpb24+IHdhaXRGb3JPcHRpb25zKQogewogICAgIFJFTEVBU0VfQVNTRVJUKFJ1bkxvb3A6Omlz
TWFpbigpKTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gZGVjb2RlciA9IHdhaXRGb3JN
ZXNzYWdlKFQ6OnJlY2VpdmVyTmFtZSgpLCBUOjpuYW1lKCksIGRlc3RpbmF0aW9uSUQsIHRpbWVv
dXQsIHdhaXRGb3JPcHRpb25zKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gZGVjb2Rl
ciA9IHdhaXRGb3JNZXNzYWdlKFQ6Om5hbWUoKSwgZGVzdGluYXRpb25JRCwgdGltZW91dCwgd2Fp
dEZvck9wdGlvbnMpOwogICAgIGlmICghZGVjb2RlcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmNwcAkocmV2aXNpb24gMjYw
NzY0KQorKysgU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTY2LDkgKzY2LDYgQEAgRGVjb2Rlcjo6RGVjb2Rlcihjb25zdCB1aW50OF90KiBi
dWZmZXIsIAogICAgIGlmICghZGVjb2RlKG1fbWVzc2FnZUZsYWdzKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgaWYgKCFkZWNvZGUobV9tZXNzYWdlUmVjZWl2ZXJOYW1lKSkKLSAgICAgICAgcmV0
dXJuOwotCiAgICAgaWYgKCFkZWNvZGUobV9tZXNzYWdlTmFtZSkpCiAgICAgICAgIHJldHVybjsK
IApJbmRleDogU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuaAkocmV2aXNpb24gMjYwNzY0
KQorKysgU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJBcmd1bWVudENvZGVyLmgiCiAjaW5jbHVk
ZSAiQXR0YWNobWVudC5oIgorI2luY2x1ZGUgIk1lc3NhZ2VOYW1lcy5oIgogI2luY2x1ZGUgIlN0
cmluZ1JlZmVyZW5jZS5oIgogI2luY2x1ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+CiAjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgpAQCAtNTEsOCArNTIsOCBAQCBwdWJsaWM6CiAgICAgRGVjb2Rlcihjb25z
dCBEZWNvZGVyJikgPSBkZWxldGU7CiAgICAgRGVjb2RlcihEZWNvZGVyJiYpID0gZGVsZXRlOwog
Ci0gICAgU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUoKSBjb25zdCB7IHJldHVy
biBtX21lc3NhZ2VSZWNlaXZlck5hbWU7IH0KLSAgICBTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5h
bWUoKSBjb25zdCB7IHJldHVybiBtX21lc3NhZ2VOYW1lOyB9CisgICAgUmVjZWl2ZXJOYW1lIG1l
c3NhZ2VSZWNlaXZlck5hbWUoKSBjb25zdCB7IHJldHVybiByZWNlaXZlck5hbWUobV9tZXNzYWdl
TmFtZSk7IH0KKyAgICBNZXNzYWdlTmFtZSBtZXNzYWdlTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1f
bWVzc2FnZU5hbWU7IH0KICAgICB1aW50NjRfdCBkZXN0aW5hdGlvbklEKCkgY29uc3QgeyByZXR1
cm4gbV9kZXN0aW5hdGlvbklEOyB9CiAKICAgICBib29sIGlzU3luY01lc3NhZ2UoKSBjb25zdDsK
QEAgLTExMSw3ICsxMTIsNyBAQCBwdWJsaWM6CiAgICAgICAgIHR5cGVuYW1lIHN0ZDo6dW5kZXJs
eWluZ190eXBlPEU+Ojp0eXBlIHZhbHVlOwogICAgICAgICBpZiAoIWRlY29kZSh2YWx1ZSkpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGlmICghaXNWYWxpZEVudW08RT4odmFs
dWUpKQorICAgICAgICBpZiAoIVdURjo6aXNWYWxpZEVudW08RT4odmFsdWUpKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIGUgPSBzdGF0aWNfY2FzdDxFPih2YWx1ZSk7CkBA
IC0xMjMsNyArMTI0LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgT3B0aW9uYWw8dHlwZW5h
bWUgc3RkOjp1bmRlcmx5aW5nX3R5cGU8RT46OnR5cGU+IHZhbHVlOwogICAgICAgICAqdGhpcyA+
PiB2YWx1ZTsKLSAgICAgICAgaWYgKHZhbHVlICYmIGlzVmFsaWRFbnVtPEU+KCp2YWx1ZSkpCisg
ICAgICAgIGlmICh2YWx1ZSAmJiBXVEY6OmlzVmFsaWRFbnVtPEU+KCp2YWx1ZSkpCiAgICAgICAg
ICAgICBvcHRpb25hbCA9IHN0YXRpY19jYXN0PEU+KCp2YWx1ZSk7CiAgICAgICAgIHJldHVybiAq
dGhpczsKICAgICB9CkBAIC0yMDMsOCArMjA0LDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8QXR0
YWNobWVudD4gbV9hdHRhY2htZW50czsKIAogICAgIHVpbnQ4X3QgbV9tZXNzYWdlRmxhZ3M7Ci0g
ICAgU3RyaW5nUmVmZXJlbmNlIG1fbWVzc2FnZVJlY2VpdmVyTmFtZTsKLSAgICBTdHJpbmdSZWZl
cmVuY2UgbV9tZXNzYWdlTmFtZTsKKyAgICBNZXNzYWdlTmFtZSBtX21lc3NhZ2VOYW1lOwogCiAg
ICAgdWludDY0X3QgbV9kZXN0aW5hdGlvbklEOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9FbmNvZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9FbmNvZGVyLmNwcAkocmV2aXNpb24gMjYwNzY0KQorKysgU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvRW5jb2Rlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYxLDkgKzYxLDggQEAgc3Rh
dGljIGlubGluZSB2b2lkIGZyZWVCdWZmZXIodm9pZCogYWRkcgogI2VuZGlmCiB9CiAKLUVuY29k
ZXI6OkVuY29kZXIoU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIFN0cmluZ1Jl
ZmVyZW5jZSBtZXNzYWdlTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCkKLSAgICA6IG1fbWVz
c2FnZVJlY2VpdmVyTmFtZShtZXNzYWdlUmVjZWl2ZXJOYW1lKQotICAgICwgbV9tZXNzYWdlTmFt
ZShtZXNzYWdlTmFtZSkKK0VuY29kZXI6OkVuY29kZXIoTWVzc2FnZU5hbWUgbWVzc2FnZU5hbWUs
IHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpCisgICAgOiBtX21lc3NhZ2VOYW1lKG1lc3NhZ2VOYW1l
KQogICAgICwgbV9kZXN0aW5hdGlvbklEKGRlc3RpbmF0aW9uSUQpCiAgICAgLCBtX2J1ZmZlciht
X2lubGluZUJ1ZmZlcikKICAgICAsIG1fYnVmZmVyUG9pbnRlcihtX2lubGluZUJ1ZmZlcikKQEAg
LTE2OCwxMCArMTY3LDcgQEAgdm9pZCBFbmNvZGVyOjpyZXNlcnZlKHNpemVfdCBzaXplKQogCiB2
b2lkIEVuY29kZXI6OmVuY29kZUhlYWRlcigpCiB7Ci0gICAgQVNTRVJUKCFtX21lc3NhZ2VSZWNl
aXZlck5hbWUuaXNFbXB0eSgpKTsKLQogICAgICp0aGlzIDw8IGRlZmF1bHRNZXNzYWdlRmxhZ3M7
Ci0gICAgKnRoaXMgPDwgbV9tZXNzYWdlUmVjZWl2ZXJOYW1lOwogICAgICp0aGlzIDw8IG1fbWVz
c2FnZU5hbWU7CiAgICAgKnRoaXMgPDwgbV9kZXN0aW5hdGlvbklEOwogfQpJbmRleDogU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvRW5jb2Rlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL0VuY29kZXIuaAkocmV2aXNpb24gMjYwNzY0KQorKysgU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvRW5jb2Rlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3
IEBACiAKICNpbmNsdWRlICJBcmd1bWVudENvZGVyLmgiCiAjaW5jbHVkZSAiQXR0YWNobWVudC5o
IgorI2luY2x1ZGUgIk1lc3NhZ2VOYW1lcy5oIgogI2luY2x1ZGUgIlN0cmluZ1JlZmVyZW5jZS5o
IgogI2luY2x1ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpA
QCAtMzUsMTUgKzM2LDE2IEBAIG5hbWVzcGFjZSBJUEMgewogCiBjbGFzcyBEYXRhUmVmZXJlbmNl
OwogZW51bSBjbGFzcyBTaG91bGREaXNwYXRjaFdoZW5XYWl0aW5nRm9yU3luY1JlcGx5OworZW51
bSBjbGFzcyBNZXNzYWdlTmFtZSA6IHVpbnQxNl90OwogCiBjbGFzcyBFbmNvZGVyIGZpbmFsIHsK
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBFbmNvZGVyKFN0cmlu
Z1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5h
bWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpOworICAgIEVuY29kZXIoTWVzc2FnZU5hbWUsIHVp
bnQ2NF90IGRlc3RpbmF0aW9uSUQpOwogICAgIH5FbmNvZGVyKCk7CiAKLSAgICBTdHJpbmdSZWZl
cmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWVzc2FnZVJlY2Vp
dmVyTmFtZTsgfQotICAgIFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZSgpIGNvbnN0IHsgcmV0
dXJuIG1fbWVzc2FnZU5hbWU7IH0KKyAgICBSZWNlaXZlck5hbWUgbWVzc2FnZVJlY2VpdmVyTmFt
ZSgpIGNvbnN0IHsgcmV0dXJuIHJlY2VpdmVyTmFtZShtX21lc3NhZ2VOYW1lKTsgfQorICAgIE1l
c3NhZ2VOYW1lIG1lc3NhZ2VOYW1lKCkgY29uc3QgeyByZXR1cm4gbV9tZXNzYWdlTmFtZTsgfQog
ICAgIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQoKSBjb25zdCB7IHJldHVybiBtX2Rlc3RpbmF0aW9u
SUQ7IH0KIAogICAgIHZvaWQgc2V0SXNTeW5jTWVzc2FnZShib29sKTsKQEAgLTExMiwxNCArMTE0
LDEzIEBAIHByaXZhdGU6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRT4KICAgICBhdXRvIGVuY29k
ZShFIHZhbHVlKSAtPiBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfZW51bTxFPjo6dmFsdWU+CiAg
ICAgewotICAgICAgICBBU1NFUlQoaXNWYWxpZEVudW08RT4oc3RhdGljX2Nhc3Q8dHlwZW5hbWUg
c3RkOjp1bmRlcmx5aW5nX3R5cGU8RT46OnR5cGU+KHZhbHVlKSkpOworICAgICAgICBBU1NFUlQo
V1RGOjppc1ZhbGlkRW51bTxFPihzdGF0aWNfY2FzdDx0eXBlbmFtZSBzdGQ6OnVuZGVybHlpbmdf
dHlwZTxFPjo6dHlwZT4odmFsdWUpKSk7CiAgICAgICAgIGVuY29kZShzdGF0aWNfY2FzdDx0eXBl
bmFtZSBzdGQ6OnVuZGVybHlpbmdfdHlwZTxFPjo6dHlwZT4odmFsdWUpKTsKICAgICB9CiAKICAg
ICB2b2lkIGVuY29kZUhlYWRlcigpOwogCi0gICAgU3RyaW5nUmVmZXJlbmNlIG1fbWVzc2FnZVJl
Y2VpdmVyTmFtZTsKLSAgICBTdHJpbmdSZWZlcmVuY2UgbV9tZXNzYWdlTmFtZTsKKyAgICBNZXNz
YWdlTmFtZSBtX21lc3NhZ2VOYW1lOwogICAgIHVpbnQ2NF90IG1fZGVzdGluYXRpb25JRDsKIAog
ICAgIHVpbnQ4X3QgbV9pbmxpbmVCdWZmZXJbNTEyXTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9IYW5kbGVNZXNzYWdlLmgJKHJldmlzaW9uIDI2MDc2NCkKKysrIFNvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTc2
LDcgKzE3Niw3IEBAIHZvaWQgaGFuZGxlTWVzc2FnZUFzeW5jKENvbm5lY3Rpb24mIGNvbm4KICAg
ICB9CiAKICAgICB0eXBlbmFtZSBUOjpBc3luY1JlcGx5IGNvbXBsZXRpb25IYW5kbGVyID0gW2xp
c3RlbmVySUQgPSAqbGlzdGVuZXJJRCwgY29ubmVjdGlvbiA9IG1ha2VSZWYoY29ubmVjdGlvbild
IChhdXRvJiYuLi4gYXJncykgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8gZW5jb2RlciA9IG1ha2VV
bmlxdWU8RW5jb2Rlcj4oIkFzeW5jUmVwbHkiLCBUOjphc3luY01lc3NhZ2VSZXBseU5hbWUoKSwg
MCk7CisgICAgICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWU8RW5jb2Rlcj4oVDo6YXN5bmNN
ZXNzYWdlUmVwbHlOYW1lKCksIDApOwogICAgICAgICAqZW5jb2RlciA8PCBsaXN0ZW5lcklEOwog
ICAgICAgICBUOjpzZW5kKFdURk1vdmUoZW5jb2RlciksIFdURk1vdmUoY29ubmVjdGlvbiksIGFy
Z3MuLi4pOwogICAgIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdl
UmVjZWl2ZXJNYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L01lc3NhZ2VSZWNlaXZlck1hcC5jcHAJKHJldmlzaW9uIDI2MDc2NCkKKysrIFNvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VSZWNlaXZlck1hcC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM5LDM5ICszOSwzOSBAQCBNZXNzYWdlUmVjZWl2ZXJNYXA6On5NZXNzYWdlUmVjZWl2ZXJNYXAo
CiB7CiB9CiAKLXZvaWQgTWVzc2FnZVJlY2VpdmVyTWFwOjphZGRNZXNzYWdlUmVjZWl2ZXIoU3Ry
aW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIE1lc3NhZ2VSZWNlaXZlciYgbWVzc2Fn
ZVJlY2VpdmVyKQordm9pZCBNZXNzYWdlUmVjZWl2ZXJNYXA6OmFkZE1lc3NhZ2VSZWNlaXZlcihS
ZWNlaXZlck5hbWUgbWVzc2FnZVJlY2VpdmVyTmFtZSwgTWVzc2FnZVJlY2VpdmVyJiBtZXNzYWdl
UmVjZWl2ZXIpCiB7Ci0gICAgQVNTRVJUKCFtX2dsb2JhbE1lc3NhZ2VSZWNlaXZlcnMuY29udGFp
bnMobWVzc2FnZVJlY2VpdmVyTmFtZSkpOworICAgIEFTU0VSVCghbV9nbG9iYWxNZXNzYWdlUmVj
ZWl2ZXJzLmNvbnRhaW5zKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KG1lc3NhZ2VSZWNlaXZlck5hbWUp
KSk7CiAKICAgICBtZXNzYWdlUmVjZWl2ZXIud2lsbEJlQWRkZWRUb01lc3NhZ2VSZWNlaXZlck1h
cCgpOwotICAgIG1fZ2xvYmFsTWVzc2FnZVJlY2VpdmVycy5zZXQobWVzc2FnZVJlY2VpdmVyTmFt
ZSwgJm1lc3NhZ2VSZWNlaXZlcik7CisgICAgbV9nbG9iYWxNZXNzYWdlUmVjZWl2ZXJzLnNldChz
dGF0aWNfY2FzdDx1aW50OF90PihtZXNzYWdlUmVjZWl2ZXJOYW1lKSwgJm1lc3NhZ2VSZWNlaXZl
cik7CiB9CiAKLXZvaWQgTWVzc2FnZVJlY2VpdmVyTWFwOjphZGRNZXNzYWdlUmVjZWl2ZXIoU3Ry
aW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQs
IE1lc3NhZ2VSZWNlaXZlciYgbWVzc2FnZVJlY2VpdmVyKQordm9pZCBNZXNzYWdlUmVjZWl2ZXJN
YXA6OmFkZE1lc3NhZ2VSZWNlaXZlcihSZWNlaXZlck5hbWUgbWVzc2FnZVJlY2VpdmVyTmFtZSwg
dWludDY0X3QgZGVzdGluYXRpb25JRCwgTWVzc2FnZVJlY2VpdmVyJiBtZXNzYWdlUmVjZWl2ZXIp
CiB7CiAgICAgQVNTRVJUKGRlc3RpbmF0aW9uSUQpOwotICAgIEFTU0VSVCghbV9tZXNzYWdlUmVj
ZWl2ZXJzLmNvbnRhaW5zKHN0ZDo6bWFrZV9wYWlyKG1lc3NhZ2VSZWNlaXZlck5hbWUsIGRlc3Rp
bmF0aW9uSUQpKSk7Ci0gICAgQVNTRVJUKCFtX2dsb2JhbE1lc3NhZ2VSZWNlaXZlcnMuY29udGFp
bnMobWVzc2FnZVJlY2VpdmVyTmFtZSkpOworICAgIEFTU0VSVCghbV9tZXNzYWdlUmVjZWl2ZXJz
LmNvbnRhaW5zKHN0ZDo6bWFrZV9wYWlyKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KG1lc3NhZ2VSZWNl
aXZlck5hbWUpLCBkZXN0aW5hdGlvbklEKSkpOworICAgIEFTU0VSVCghbV9nbG9iYWxNZXNzYWdl
UmVjZWl2ZXJzLmNvbnRhaW5zKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KG1lc3NhZ2VSZWNlaXZlck5h
bWUpKSk7CiAKICAgICBtZXNzYWdlUmVjZWl2ZXIud2lsbEJlQWRkZWRUb01lc3NhZ2VSZWNlaXZl
ck1hcCgpOwotICAgIG1fbWVzc2FnZVJlY2VpdmVycy5zZXQoc3RkOjptYWtlX3BhaXIobWVzc2Fn
ZVJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRCksICZtZXNzYWdlUmVjZWl2ZXIpOworICAgIG1f
bWVzc2FnZVJlY2VpdmVycy5zZXQoc3RkOjptYWtlX3BhaXIoc3RhdGljX2Nhc3Q8dWludDhfdD4o
bWVzc2FnZVJlY2VpdmVyTmFtZSksIGRlc3RpbmF0aW9uSUQpLCAmbWVzc2FnZVJlY2VpdmVyKTsK
IH0KIAotdm9pZCBNZXNzYWdlUmVjZWl2ZXJNYXA6OnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihTdHJp
bmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSkKK3ZvaWQgTWVzc2FnZVJlY2VpdmVyTWFw
OjpyZW1vdmVNZXNzYWdlUmVjZWl2ZXIoUmVjZWl2ZXJOYW1lIG1lc3NhZ2VSZWNlaXZlck5hbWUp
CiB7Ci0gICAgQVNTRVJUKG1fZ2xvYmFsTWVzc2FnZVJlY2VpdmVycy5jb250YWlucyhtZXNzYWdl
UmVjZWl2ZXJOYW1lKSk7CisgICAgQVNTRVJUKG1fZ2xvYmFsTWVzc2FnZVJlY2VpdmVycy5jb250
YWlucyhzdGF0aWNfY2FzdDx1aW50OF90PihtZXNzYWdlUmVjZWl2ZXJOYW1lKSkpOwogCi0gICAg
YXV0byBpdCA9IG1fZ2xvYmFsTWVzc2FnZVJlY2VpdmVycy5maW5kKG1lc3NhZ2VSZWNlaXZlck5h
bWUpOworICAgIGF1dG8gaXQgPSBtX2dsb2JhbE1lc3NhZ2VSZWNlaXZlcnMuZmluZChzdGF0aWNf
Y2FzdDx1aW50OF90PihtZXNzYWdlUmVjZWl2ZXJOYW1lKSk7CiAgICAgaXQtPnZhbHVlLT53aWxs
QmVSZW1vdmVkRnJvbU1lc3NhZ2VSZWNlaXZlck1hcCgpOwogCiAgICAgbV9nbG9iYWxNZXNzYWdl
UmVjZWl2ZXJzLnJlbW92ZShpdCk7CiB9CiAKLXZvaWQgTWVzc2FnZVJlY2VpdmVyTWFwOjpyZW1v
dmVNZXNzYWdlUmVjZWl2ZXIoU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVp
bnQ2NF90IGRlc3RpbmF0aW9uSUQpCit2b2lkIE1lc3NhZ2VSZWNlaXZlck1hcDo6cmVtb3ZlTWVz
c2FnZVJlY2VpdmVyKFJlY2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBk
ZXN0aW5hdGlvbklEKQogewotICAgIEFTU0VSVChtX21lc3NhZ2VSZWNlaXZlcnMuY29udGFpbnMo
c3RkOjptYWtlX3BhaXIobWVzc2FnZVJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRCkpKTsKKyAg
ICBBU1NFUlQobV9tZXNzYWdlUmVjZWl2ZXJzLmNvbnRhaW5zKHN0ZDo6bWFrZV9wYWlyKHN0YXRp
Y19jYXN0PHVpbnQ4X3Q+KG1lc3NhZ2VSZWNlaXZlck5hbWUpLCBkZXN0aW5hdGlvbklEKSkpOwog
Ci0gICAgYXV0byBpdCA9IG1fbWVzc2FnZVJlY2VpdmVycy5maW5kKHN0ZDo6bWFrZV9wYWlyKG1l
c3NhZ2VSZWNlaXZlck5hbWUsIGRlc3RpbmF0aW9uSUQpKTsKKyAgICBhdXRvIGl0ID0gbV9tZXNz
YWdlUmVjZWl2ZXJzLmZpbmQoc3RkOjptYWtlX3BhaXIoc3RhdGljX2Nhc3Q8dWludDhfdD4obWVz
c2FnZVJlY2VpdmVyTmFtZSksIGRlc3RpbmF0aW9uSUQpKTsKICAgICBpdC0+dmFsdWUtPndpbGxC
ZVJlbW92ZWRGcm9tTWVzc2FnZVJlY2VpdmVyTWFwKCk7CiAKICAgICBtX21lc3NhZ2VSZWNlaXZl
cnMucmVtb3ZlKGl0KTsKQEAgLTc5LDIzICs3OSwyMyBAQCB2b2lkIE1lc3NhZ2VSZWNlaXZlck1h
cDo6cmVtb3ZlTWVzc2FnZVJlCiAKIHZvaWQgTWVzc2FnZVJlY2VpdmVyTWFwOjpyZW1vdmVNZXNz
YWdlUmVjZWl2ZXIoTWVzc2FnZVJlY2VpdmVyJiBtZXNzYWdlUmVjZWl2ZXIpCiB7Ci0gICAgVmVj
dG9yPFN0cmluZ1JlZmVyZW5jZT4gZ2xvYmFsUmVjZWl2ZXJzVG9SZW1vdmU7CisgICAgVmVjdG9y
PFJlY2VpdmVyTmFtZT4gZ2xvYmFsUmVjZWl2ZXJzVG9SZW1vdmU7CiAgICAgZm9yIChhdXRvJiBb
bmFtZSwgcmVjZWl2ZXJdIDogbV9nbG9iYWxNZXNzYWdlUmVjZWl2ZXJzKSB7CiAgICAgICAgIGlm
IChyZWNlaXZlciA9PSAmbWVzc2FnZVJlY2VpdmVyKQotICAgICAgICAgICAgZ2xvYmFsUmVjZWl2
ZXJzVG9SZW1vdmUuYXBwZW5kKG5hbWUpOworICAgICAgICAgICAgZ2xvYmFsUmVjZWl2ZXJzVG9S
ZW1vdmUuYXBwZW5kKHN0YXRpY19jYXN0PFJlY2VpdmVyTmFtZT4obmFtZSkpOwogICAgIH0KIAog
ICAgIGZvciAoYXV0byYgZ2xvYmFsUmVjZWl2ZXJUb1JlbW92ZSA6IGdsb2JhbFJlY2VpdmVyc1Rv
UmVtb3ZlKQogICAgICAgICByZW1vdmVNZXNzYWdlUmVjZWl2ZXIoZ2xvYmFsUmVjZWl2ZXJUb1Jl
bW92ZSk7CiAKLSAgICBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZ1JlZmVyZW5jZSwgdWludDY0X3Q+
PiByZWNlaXZlcnNUb1JlbW92ZTsKKyAgICBWZWN0b3I8c3RkOjpwYWlyPHVpbnQ4X3QsIHVpbnQ2
NF90Pj4gcmVjZWl2ZXJzVG9SZW1vdmU7CiAgICAgZm9yIChhdXRvJiBbbmFtZUFuZERlc3RpbmF0
aW9uSUQsIHJlY2VpdmVyXSA6IG1fbWVzc2FnZVJlY2VpdmVycykgewogICAgICAgICBpZiAocmVj
ZWl2ZXIgPT0gJm1lc3NhZ2VSZWNlaXZlcikKLSAgICAgICAgICAgIHJlY2VpdmVyc1RvUmVtb3Zl
LmFwcGVuZChzdGQ6Om1ha2VfcGFpcihuYW1lQW5kRGVzdGluYXRpb25JRC5maXJzdCwgbmFtZUFu
ZERlc3RpbmF0aW9uSUQuc2Vjb25kKSk7CisgICAgICAgICAgICByZWNlaXZlcnNUb1JlbW92ZS5h
cHBlbmQoc3RkOjptYWtlX3BhaXIoc3RhdGljX2Nhc3Q8dWludDhfdD4obmFtZUFuZERlc3RpbmF0
aW9uSUQuZmlyc3QpLCBuYW1lQW5kRGVzdGluYXRpb25JRC5zZWNvbmQpKTsKICAgICB9CiAKICAg
ICBmb3IgKGF1dG8mIFtuYW1lLCBkZXN0aW5hdGlvbklEXSA6IHJlY2VpdmVyc1RvUmVtb3ZlKQot
ICAgICAgICByZW1vdmVNZXNzYWdlUmVjZWl2ZXIobmFtZSwgZGVzdGluYXRpb25JRCk7CisgICAg
ICAgIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihzdGF0aWNfY2FzdDxSZWNlaXZlck5hbWU+KG5hbWUp
LCBkZXN0aW5hdGlvbklEKTsKIH0KIAogdm9pZCBNZXNzYWdlUmVjZWl2ZXJNYXA6OmludmFsaWRh
dGUoKQpAQCAtMTEyLDE0ICsxMTIsMTQgQEAgdm9pZCBNZXNzYWdlUmVjZWl2ZXJNYXA6OmludmFs
aWRhdGUoKQogCiBib29sIE1lc3NhZ2VSZWNlaXZlck1hcDo6ZGlzcGF0Y2hNZXNzYWdlKENvbm5l
Y3Rpb24mIGNvbm5lY3Rpb24sIERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgaWYgKE1lc3NhZ2VS
ZWNlaXZlciogbWVzc2FnZVJlY2VpdmVyID0gbV9nbG9iYWxNZXNzYWdlUmVjZWl2ZXJzLmdldChk
ZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSkpIHsKKyAgICBpZiAoTWVzc2FnZVJlY2VpdmVy
KiBtZXNzYWdlUmVjZWl2ZXIgPSBtX2dsb2JhbE1lc3NhZ2VSZWNlaXZlcnMuZ2V0KHN0YXRpY19j
YXN0PHVpbnQ4X3Q+KGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpKSkpIHsKICAgICAgICAg
QVNTRVJUKCFkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSk7CiAKICAgICAgICAgbWVzc2FnZVJlY2Vp
dmVyLT5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfQogCi0gICAgaWYgKE1lc3NhZ2VSZWNlaXZlciogbWVzc2FnZVJlY2Vp
dmVyID0gbV9tZXNzYWdlUmVjZWl2ZXJzLmdldChzdGQ6Om1ha2VfcGFpcihkZWNvZGVyLm1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSwgZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpKSkgeworICAgIGlmIChN
ZXNzYWdlUmVjZWl2ZXIqIG1lc3NhZ2VSZWNlaXZlciA9IG1fbWVzc2FnZVJlY2VpdmVycy5nZXQo
c3RkOjptYWtlX3BhaXIoc3RhdGljX2Nhc3Q8dWludDhfdD4oZGVjb2Rlci5tZXNzYWdlUmVjZWl2
ZXJOYW1lKCkpLCBkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSkpKSB7CiAgICAgICAgIG1lc3NhZ2VS
ZWNlaXZlci0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0KQEAgLTEyOSwxNCArMTI5LDE0IEBAIGJvb2wgTWVzc2FnZVJl
Y2VpdmVyTWFwOjpkaXNwYXRjaE1lc3NhZ2UKIAogYm9vbCBNZXNzYWdlUmVjZWl2ZXJNYXA6OmRp
c3BhdGNoU3luY01lc3NhZ2UoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgRGVjb2RlciYgZGVjb2Rl
ciwgc3RkOjp1bmlxdWVfcHRyPEVuY29kZXI+JiByZXBseUVuY29kZXIpCiB7Ci0gICAgaWYgKE1l
c3NhZ2VSZWNlaXZlciogbWVzc2FnZVJlY2VpdmVyID0gbV9nbG9iYWxNZXNzYWdlUmVjZWl2ZXJz
LmdldChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSkpIHsKKyAgICBpZiAoTWVzc2FnZVJl
Y2VpdmVyKiBtZXNzYWdlUmVjZWl2ZXIgPSBtX2dsb2JhbE1lc3NhZ2VSZWNlaXZlcnMuZ2V0KHN0
YXRpY19jYXN0PHVpbnQ4X3Q+KGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpKSkpIHsKICAg
ICAgICAgQVNTRVJUKCFkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSk7CiAKICAgICAgICAgbWVzc2Fn
ZVJlY2VpdmVyLT5kaWRSZWNlaXZlU3luY01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlciwgcmVw
bHlFbmNvZGVyKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgaWYgKE1lc3Nh
Z2VSZWNlaXZlciogbWVzc2FnZVJlY2VpdmVyID0gbV9tZXNzYWdlUmVjZWl2ZXJzLmdldChzdGQ6
Om1ha2VfcGFpcihkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgZGVjb2Rlci5kZXN0aW5h
dGlvbklEKCkpKSkgeworICAgIGlmIChNZXNzYWdlUmVjZWl2ZXIqIG1lc3NhZ2VSZWNlaXZlciA9
IG1fbWVzc2FnZVJlY2VpdmVycy5nZXQoc3RkOjptYWtlX3BhaXIoc3RhdGljX2Nhc3Q8dWludDhf
dD4oZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkpLCBkZWNvZGVyLmRlc3RpbmF0aW9uSUQo
KSkpKSB7CiAgICAgICAgIG1lc3NhZ2VSZWNlaXZlci0+ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKGNv
bm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5RW5jb2Rlcik7CiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VSZWNlaXZlck1h
cC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VSZWNl
aXZlck1hcC5oCShyZXZpc2lvbiAyNjA3NjQpCisrKyBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9NZXNzYWdlUmVjZWl2ZXJNYXAuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsOCArMjMsNyBAQAog
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgTWVzc2Fn
ZVJlY2VpdmVyTWFwX2gKLSNkZWZpbmUgTWVzc2FnZVJlY2VpdmVyTWFwX2gKKyNwcmFnbWEgb25j
ZQogCiAjaW5jbHVkZSAiU3RyaW5nUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KQEAgLTM2LDE3ICszNSwxOCBAQCBjbGFzcyBDb25uZWN0aW9uOwogY2xhc3MgRW5jb2RlcjsK
IGNsYXNzIERlY29kZXI7CiBjbGFzcyBNZXNzYWdlUmVjZWl2ZXI7CitlbnVtIGNsYXNzIFJlY2Vp
dmVyTmFtZSA6IHVpbnQ4X3Q7CiAKIGNsYXNzIE1lc3NhZ2VSZWNlaXZlck1hcCB7CiBwdWJsaWM6
CiAgICAgTWVzc2FnZVJlY2VpdmVyTWFwKCk7CiAgICAgfk1lc3NhZ2VSZWNlaXZlck1hcCgpOwog
Ci0gICAgdm9pZCBhZGRNZXNzYWdlUmVjZWl2ZXIoU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNl
aXZlck5hbWUsIE1lc3NhZ2VSZWNlaXZlciYpOwotICAgIHZvaWQgYWRkTWVzc2FnZVJlY2VpdmVy
KFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlv
bklELCBNZXNzYWdlUmVjZWl2ZXImKTsKKyAgICB2b2lkIGFkZE1lc3NhZ2VSZWNlaXZlcihSZWNl
aXZlck5hbWUsIE1lc3NhZ2VSZWNlaXZlciYpOworICAgIHZvaWQgYWRkTWVzc2FnZVJlY2VpdmVy
KFJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgTWVzc2FnZVJlY2VpdmVyJik7
CiAKLSAgICB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihTdHJpbmdSZWZlcmVuY2UgbWVzc2Fn
ZVJlY2VpdmVyTmFtZSk7Ci0gICAgdm9pZCByZW1vdmVNZXNzYWdlUmVjZWl2ZXIoU3RyaW5nUmVm
ZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpOworICAg
IHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKFJlY2VpdmVyTmFtZSk7CisgICAgdm9pZCByZW1v
dmVNZXNzYWdlUmVjZWl2ZXIoUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKTsK
ICAgICB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlUmVjZWl2ZXImKTsKIAogICAg
IHZvaWQgaW52YWxpZGF0ZSgpOwpAQCAtNTYsMTEgKzU2LDkgQEAgcHVibGljOgogCiBwcml2YXRl
OgogICAgIC8vIE1lc3NhZ2UgcmVjZWl2ZXJzIHRoYXQgZG9uJ3QgcmVxdWlyZSBhIGRlc3RpbmF0
aW9uIElELgotICAgIEhhc2hNYXA8U3RyaW5nUmVmZXJlbmNlLCBNZXNzYWdlUmVjZWl2ZXIqPiBt
X2dsb2JhbE1lc3NhZ2VSZWNlaXZlcnM7CisgICAgSGFzaE1hcDx1aW50OF90LCBNZXNzYWdlUmVj
ZWl2ZXIqPiBtX2dsb2JhbE1lc3NhZ2VSZWNlaXZlcnM7CiAKLSAgICBIYXNoTWFwPHN0ZDo6cGFp
cjxTdHJpbmdSZWZlcmVuY2UsIHVpbnQ2NF90PiwgTWVzc2FnZVJlY2VpdmVyKj4gbV9tZXNzYWdl
UmVjZWl2ZXJzOworICAgIEhhc2hNYXA8c3RkOjpwYWlyPHVpbnQ4X3QsIHVpbnQ2NF90PiwgTWVz
c2FnZVJlY2VpdmVyKj4gbV9tZXNzYWdlUmVjZWl2ZXJzOwogfTsKIAogfTsKLQotI2VuZGlmIC8v
IE1lc3NhZ2VSZWNlaXZlck1hcF9oCkluZGV4OiBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9N
ZXNzYWdlU2VuZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
TWVzc2FnZVNlbmRlci5oCShyZXZpc2lvbiAyNjA3NjQpCisrKyBTb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9NZXNzYWdlU2VuZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDcgQEAg
cHVibGljOgogICAgIHsKICAgICAgICAgc3RhdGljX2Fzc2VydCghVTo6aXNTeW5jLCAiTWVzc2Fn
ZSBpcyBzeW5jISIpOwogCi0gICAgICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWU8RW5jb2Rl
cj4oVTo6cmVjZWl2ZXJOYW1lKCksIFU6Om5hbWUoKSwgZGVzdGluYXRpb25JRCk7CisgICAgICAg
IGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWU8RW5jb2Rlcj4oVTo6bmFtZSgpLCBkZXN0aW5hdGlv
bklEKTsKICAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKG1lc3NhZ2UuYXJndW1lbnRzKCkpOwogICAg
ICAgICAKICAgICAgICAgcmV0dXJuIHNlbmRNZXNzYWdlKFdURk1vdmUoZW5jb2RlciksIHNlbmRP
cHRpb25zKTsKQEAgLTg4LDcgKzg4LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgQ09NUElM
RV9BU1NFUlQoIVQ6OmlzU3luYywgQXN5bmNNZXNzYWdlRXhwZWN0ZWQpOwogCi0gICAgICAgIGF1
dG8gZW5jb2RlciA9IG1ha2VVbmlxdWU8SVBDOjpFbmNvZGVyPihUOjpyZWNlaXZlck5hbWUoKSwg
VDo6bmFtZSgpLCBkZXN0aW5hdGlvbklEKTsKKyAgICAgICAgYXV0byBlbmNvZGVyID0gbWFrZVVu
aXF1ZTxJUEM6OkVuY29kZXI+KFQ6Om5hbWUoKSwgZGVzdGluYXRpb25JRCk7CiAgICAgICAgIHVp
bnQ2NF90IGxpc3RlbmVySUQgPSBJUEM6Om5leHRBc3luY1JlcGx5SGFuZGxlcklEKCk7CiAgICAg
ICAgIGVuY29kZXItPmVuY29kZShsaXN0ZW5lcklEKTsKICAgICAgICAgZW5jb2Rlci0+ZW5jb2Rl
KG1lc3NhZ2UuYXJndW1lbnRzKCkpOwpJbmRleDogU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
Y29jb2EvQ29ubmVjdGlvbkNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL2NvY29hL0Nvbm5lY3Rpb25Db2NvYS5tbQkocmV2aXNpb24gMjYwODA3KQorKysg
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvQ29ubmVjdGlvbkNvY29hLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMTQsNyArMjE0LDcgQEAgYm9vbCBDb25uZWN0aW9uOjpvcGVuKCkKICAg
ICAgICAgbV9pc0Nvbm5lY3RlZCA9IHRydWU7CiAgICAgICAgIAogICAgICAgICAvLyBTZW5kIHRo
ZSBpbml0aWFsaXplIG1lc3NhZ2UsIHdoaWNoIGNvbnRhaW5zIGEgc2VuZCByaWdodCBmb3IgdGhl
IHNlcnZlciB0byB1c2UuCi0gICAgICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWU8RW5jb2Rl
cj4oIklQQyIsICJJbml0aWFsaXplQ29ubmVjdGlvbiIsIDApOworICAgICAgICBhdXRvIGVuY29k
ZXIgPSBtYWtlVW5pcXVlPEVuY29kZXI+KE1lc3NhZ2VOYW1lOjpJbml0aWFsaXplQ29ubmVjdGlv
biwgMCk7CiAgICAgICAgIGVuY29kZXItPmVuY29kZShNYWNoUG9ydChtX3JlY2VpdmVQb3J0LCBN
QUNIX01TR19UWVBFX01BS0VfU0VORCkpOwogCiAgICAgICAgIGluaXRpYWxpemVTZW5kU291cmNl
KCk7CkBAIC0yNzMsNyArMjczLDcgQEAgYm9vbCBDb25uZWN0aW9uOjpzZW5kTWVzc2FnZShzdGQ6
OnVuaXF1ZQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBkZWZhdWx0OgotICAgICAgICBD
U3RyaW5nIG1lc3NhZ2VOYW1lID0gbWFrZVN0cmluZyhtZXNzYWdlLT5tZXNzYWdlUmVjZWl2ZXJO
YW1lKCkuZGF0YSgpLCAiOjoiLCBtZXNzYWdlLT5tZXNzYWdlTmFtZSgpLmRhdGEoKSkudXRmOCgp
OworICAgICAgICBDU3RyaW5nIG1lc3NhZ2VOYW1lKGRlc2NyaXB0aW9uKG1lc3NhZ2UtPm1lc3Nh
Z2VOYW1lKCkpKTsKICAgICAgICAgV2ViS2l0OjpzZXRDcmFzaFJlcG9ydEFwcGxpY2F0aW9uU3Bl
Y2lmaWNJbmZvcm1hdGlvbigoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpW05TU3RyaW5nIHN0cmluZ1dp
dGhGb3JtYXQ6QCJVbmhhbmRsZWQgZXJyb3IgY29kZSAleCwgbWVzc2FnZSAnJXMnLCBoYXNoICVk
Iiwga3IsIG1lc3NhZ2VOYW1lLmRhdGEoKSwgbWVzc2FnZU5hbWUuaGFzaCgpXSk7CiAgICAgICAg
IENSQVNIX1dJVEhfSU5GTyhrciwgbWVzc2FnZU5hbWUuaGFzaCgpKTsKICAgICB9CkBAIC0zMDgs
NyArMzA4LDcgQEAgYm9vbCBDb25uZWN0aW9uOjpzZW5kT3V0Z29pbmdNZXNzYWdlKHN0ZAogICAg
IH0KIAogICAgIHNpemVfdCBzYWZlTWVzc2FnZVNpemUgPSBtZXNzYWdlU2l6ZS51bnNhZmVHZXQo
KTsKLSAgICBhdXRvIG1lc3NhZ2UgPSBNYWNoTWVzc2FnZTo6Y3JlYXRlKGVuY29kZXItPm1lc3Nh
Z2VSZWNlaXZlck5hbWUoKS50b1N0cmluZygpLCBlbmNvZGVyLT5tZXNzYWdlTmFtZSgpLnRvU3Ry
aW5nKCksIHNhZmVNZXNzYWdlU2l6ZSk7CisgICAgYXV0byBtZXNzYWdlID0gTWFjaE1lc3NhZ2U6
OmNyZWF0ZShlbmNvZGVyLT5tZXNzYWdlTmFtZSgpLCBzYWZlTWVzc2FnZVNpemUpOwogICAgIGlm
ICghbWVzc2FnZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC01MzIsNyArNTMyLDcgQEAg
dm9pZCBDb25uZWN0aW9uOjpyZWNlaXZlU291cmNlRXZlbnRIYW5kbAogICAgIGRlY29kZXItPnNl
dEltcG9ydGFuY2VBc3NlcnRpb24obWFrZVVuaXF1ZTxJbXBvcnRhbmNlQXNzZXJ0aW9uPihoZWFk
ZXIpKTsKICNlbmRpZgogCi0gICAgaWYgKGRlY29kZXItPm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9
PSAiSVBDIiAmJiBkZWNvZGVyLT5tZXNzYWdlTmFtZSgpID09ICJJbml0aWFsaXplQ29ubmVjdGlv
biIpIHsKKyAgICBpZiAoZGVjb2Rlci0+bWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlTmFtZTo6SW5p
dGlhbGl6ZUNvbm5lY3Rpb24pIHsKICAgICAgICAgQVNTRVJUKG1faXNTZXJ2ZXIpOwogICAgICAg
ICBBU1NFUlQoIW1faXNDb25uZWN0ZWQpOwogICAgICAgICBBU1NFUlQoIW1fc2VuZFBvcnQpOwpJ
bmRleDogU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvTWFjaE1lc3NhZ2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL01hY2hNZXNzYWdl
LmNwcAkocmV2aXNpb24gMjYwNzY0KQorKysgU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvY29j
b2EvTWFjaE1lc3NhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwxOCArMzksMTcgQEAgc3Rh
dGljIGlubGluZSBDaGVja2VkU2l6ZSBzYWZlUm91bmRNc2coQwogICAgIHJldHVybiAoKHZhbHVl
ICsgKGFsaWdubWVudCAtIDEpKSAvIGFsaWdubWVudCkgKiBhbGlnbm1lbnQ7CiB9CiAKLXN0ZDo6
dW5pcXVlX3B0cjxNYWNoTWVzc2FnZT4gTWFjaE1lc3NhZ2U6OmNyZWF0ZShDU3RyaW5nJiYgbWVz
c2FnZVJlY2VpdmVyTmFtZSwgQ1N0cmluZyYmIG1lc3NhZ2VOYW1lLCBzaXplX3Qgc2l6ZSkKK3N0
ZDo6dW5pcXVlX3B0cjxNYWNoTWVzc2FnZT4gTWFjaE1lc3NhZ2U6OmNyZWF0ZShNZXNzYWdlTmFt
ZSBtZXNzYWdlTmFtZSwgc2l6ZV90IHNpemUpCiB7CiAgICAgYXV0byBidWZmZXJTaXplID0gQ2hl
Y2tlZFNpemUoc2l6ZW9mKE1hY2hNZXNzYWdlKSkgKyBzaXplOwogICAgIGlmIChidWZmZXJTaXpl
Lmhhc092ZXJmbG93ZWQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgdm9pZCogbWVt
b3J5ID0gV1RGOjpmYXN0WmVyb2VkTWFsbG9jKGJ1ZmZlclNpemUudW5zYWZlR2V0KCkpOwotICAg
IHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8TWFjaE1lc3NhZ2U+IHsgbmV3IChOb3ROdWxsLCBtZW1v
cnkpIE1hY2hNZXNzYWdlIHsgV1RGTW92ZShtZXNzYWdlUmVjZWl2ZXJOYW1lKSwgV1RGTW92ZSht
ZXNzYWdlTmFtZSksIHNpemUgfSB9OworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8TWFjaE1l
c3NhZ2U+IHsgbmV3IChOb3ROdWxsLCBtZW1vcnkpIE1hY2hNZXNzYWdlIHsgbWVzc2FnZU5hbWUs
IHNpemUgfSB9OwogfQogCi1NYWNoTWVzc2FnZTo6TWFjaE1lc3NhZ2UoQ1N0cmluZyYmIG1lc3Nh
Z2VSZWNlaXZlck5hbWUsIENTdHJpbmcmJiBtZXNzYWdlTmFtZSwgc2l6ZV90IHNpemUpCi0gICAg
OiBtX21lc3NhZ2VSZWNlaXZlck5hbWUoV1RGTW92ZShtZXNzYWdlUmVjZWl2ZXJOYW1lKSkKLSAg
ICAsIG1fbWVzc2FnZU5hbWUoV1RGTW92ZShtZXNzYWdlTmFtZSkpCitNYWNoTWVzc2FnZTo6TWFj
aE1lc3NhZ2UoTWVzc2FnZU5hbWUgbWVzc2FnZU5hbWUsIHNpemVfdCBzaXplKQorICAgIDogbV9t
ZXNzYWdlTmFtZSB7IG1lc3NhZ2VOYW1lIH0KICAgICAsIG1fc2l6ZSB7IHNpemUgfQogewogfQpJ
bmRleDogU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvTWFjaE1lc3NhZ2UuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9NYWNoTWVzc2FnZS5o
CShyZXZpc2lvbiAyNjA3NjQpCisrKyBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9N
YWNoTWVzc2FnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBQTEFU
Rk9STShDT0NPQSkKIAorI2luY2x1ZGUgIk1lc3NhZ2VOYW1lcy5oIgogI2luY2x1ZGUgPG1hY2gv
bWVzc2FnZS5oPgogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFyaXRo
bWV0aWMuaD4KQEAgLTM3LDcgKzM4LDcgQEAgbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBNYWNoTWVz
c2FnZSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IHN0ZDo6dW5pcXVlX3B0cjxNYWNoTWVzc2FnZT4gY3JlYXRlKENTdHJpbmcmJiBtZXNzYWdlUmVj
ZWl2ZXJOYW1lLCBDU3RyaW5nJiYgbWVzc2FnZU5hbWUsIHNpemVfdCk7CisgICAgc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxNYWNoTWVzc2FnZT4gY3JlYXRlKE1lc3NhZ2VOYW1lLCBzaXplX3QpOwog
ICAgIH5NYWNoTWVzc2FnZSgpOwogCiAgICAgc3RhdGljIENoZWNrZWRTaXplIG1lc3NhZ2VTaXpl
KHNpemVfdCBib2R5U2l6ZSwgc2l6ZV90IHBvcnREZXNjcmlwdG9yQ291bnQsIHNpemVfdCBtZW1v
cnlEZXNjcmlwdG9yQ291bnQpOwpAQCAtNDcsMTQgKzQ4LDEzIEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgbGVha0Rlc2NyaXB0b3JzKCk7CiAKLSAgICBjb25zdCBDU3RyaW5nJiBtZXNzYWdlUmVjZWl2
ZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gbV9tZXNzYWdlUmVjZWl2ZXJOYW1lOyB9Ci0gICAgY29u
c3QgQ1N0cmluZyYgbWVzc2FnZU5hbWUoKSBjb25zdCB7IHJldHVybiBtX21lc3NhZ2VOYW1lOyB9
CisgICAgUmVjZWl2ZXJOYW1lIG1lc3NhZ2VSZWNlaXZlck5hbWUoKSBjb25zdCB7IHJldHVybiBy
ZWNlaXZlck5hbWUobV9tZXNzYWdlTmFtZSk7IH0KKyAgICBNZXNzYWdlTmFtZSBtZXNzYWdlTmFt
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWVzc2FnZU5hbWU7IH0KIAogcHJpdmF0ZToKLSAgICBNYWNo
TWVzc2FnZShDU3RyaW5nJiYgbWVzc2FnZVJlY2VpdmVyTmFtZSwgQ1N0cmluZyYmIG1lc3NhZ2VO
YW1lLCBzaXplX3QpOworICAgIE1hY2hNZXNzYWdlKE1lc3NhZ2VOYW1lLCBzaXplX3QpOwogCi0g
ICAgQ1N0cmluZyBtX21lc3NhZ2VSZWNlaXZlck5hbWU7Ci0gICAgQ1N0cmluZyBtX21lc3NhZ2VO
YW1lOworICAgIE1lc3NhZ2VOYW1lIG1fbWVzc2FnZU5hbWU7CiAgICAgc2l6ZV90IG1fc2l6ZTsK
ICAgICBib29sIG1fc2hvdWxkRnJlZURlc2NyaXB0b3JzIHsgdHJ1ZSB9OwogICAgIG1hY2hfbXNn
X2hlYWRlcl90IG1fbWVzc2FnZUhlYWRlcltdOwpJbmRleDogU291cmNlL1dlYktpdC9QbHVnaW5Q
cm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCShyZXZpc2lvbiAyNjA3
NjQpCisrKyBTb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDUsNyArMjA1LDcgQEAgdm9pZCBXZWJQcm9jZXNzQ29u
bmVjdGlvbjo6ZGVzdHJveVBsdWdpbgogICAgIGRlc3Ryb3lQbHVnaW5Db250cm9sbGVyUHJveHko
cGx1Z2luQ29udHJvbGxlclByb3h5KTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzQ29ubmVjdGlvbjo6
ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6U3RyaW5nUmVm
ZXJlbmNlLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSkKK3ZvaWQgV2ViUHJvY2Vzc0Nvbm5lY3Rpb246
OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VO
YW1lKQogewogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQuCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uaAkocmV2aXNpb24g
MjYwNzY0KQorKysgU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0
aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTY0LDcgKzY0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJy
aWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQ
Qzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jikgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIGRp
ZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OlN0cmluZ1JlZmVy
ZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFt
ZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiwgSVBDOjpNZXNzYWdlTmFtZSkgb3ZlcnJpZGU7CiAKICAgICAvLyBNZXNzYWdlIGhh
bmRsZXJzLgogICAgIHZvaWQgZGlkUmVjZWl2ZVdlYlByb2Nlc3NDb25uZWN0aW9uTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2Ny
aXB0cy9NYWtlZmlsZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvTWFrZWZp
bGUJKHJldmlzaW9uIDI2MDc2NCkKKysrIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy9NYWtlZmlsZQko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDIgQEAKIGFsbDoKLQlweXRob24gLi9nZW5lcmF0ZS1t
ZXNzYWdlLXJlY2VpdmVyLnB5IHdlYmtpdC90ZXN0LXN1cGVyY2xhc3MtbWVzc2FnZXMuaW4gLS1p
bXBsZW1lbnRhdGlvbiB3ZWJraXQvTWVzc2FnZVJlY2VpdmVyU3VwZXJjbGFzcy1leHBlY3RlZC5j
cHAgLS1oZWFkZXIgd2Via2l0L01lc3NhZ2VzU3VwZXJjbGFzcy1leHBlY3RlZC5oIC0tcmVwbHkt
aGVhZGVyIHdlYmtpdC9NZXNzYWdlc1JlcGxpZXNTdXBlcmNsYXNzUmVwbGllcy1leHBlY3RlZC5o
Ci0JcHl0aG9uIC4vZ2VuZXJhdGUtbWVzc2FnZS1yZWNlaXZlci5weSB3ZWJraXQvdGVzdC1sZWdh
Y3ktbWVzc2FnZXMuaW4gLS1pbXBsZW1lbnRhdGlvbiB3ZWJraXQvTGVnYWN5TWVzc2FnZVJlY2Vp
dmVyLWV4cGVjdGVkLmNwcCAtLWhlYWRlciB3ZWJraXQvTGVnYWN5TWVzc2FnZXMtZXhwZWN0ZWQu
aCAtLXJlcGx5LWhlYWRlciB3ZWJraXQvTGVnYWN5TWVzc2FnZXNSZXBsaWVzLWV4cGVjdGVkLmgK
LQlweXRob24gLi9nZW5lcmF0ZS1tZXNzYWdlLXJlY2VpdmVyLnB5IHdlYmtpdC90ZXN0LW1lc3Nh
Z2VzLmluIC0taW1wbGVtZW50YXRpb24gd2Via2l0L01lc3NhZ2VSZWNlaXZlci1leHBlY3RlZC5j
cHAgLS1oZWFkZXIgd2Via2l0L01lc3NhZ2VzLWV4cGVjdGVkLmggLS1yZXBseS1oZWFkZXIgd2Vi
a2l0L01lc3NhZ2VzUmVwbGllcy1leHBlY3RlZC5oCi0KKwlweXRob24gZ2VuZXJhdGUtbWVzc2Fn
ZS1yZWNlaXZlci5weSB3ZWJraXQgdGVzdC1zdXBlcmNsYXNzIHRlc3QtbGVnYWN5IHRlc3QKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy9NZXNzYWdlTmFtZXMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy9NZXNzYWdlTmFtZXMuY3BwCShub25leGlzdGVudCkKKysr
IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy9NZXNzYWdlTmFtZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMjk4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUgorICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAq
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSCisgKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorICogT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIk1lc3NhZ2VOYW1lcy5oIgorCituYW1lc3BhY2UgSVBDIHsKKworY29uc3QgY2hh
ciogZGVzY3JpcHRpb24oTWVzc2FnZU5hbWUgbmFtZSkKK3sKKyAgICBzd2l0Y2ggKG5hbWUpIHsK
KyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX0xvYWRVUkw6CisgICAgICAgIHJldHVybiAi
V2ViUGFnZTo6TG9hZFVSTCI7CisjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKKyAgICBjYXNlIE1l
c3NhZ2VOYW1lOjpXZWJQYWdlX1Rlc3RBc3luY01lc3NhZ2U6CisgICAgICAgIHJldHVybiAiV2Vi
UGFnZTo6VGVzdEFzeW5jTWVzc2FnZSI7CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9U
ZXN0QXN5bmNNZXNzYWdlUmVwbHk6CisgICAgICAgIHJldHVybiAiV2ViUGFnZTo6VGVzdEFzeW5j
TWVzc2FnZVJlcGx5IjsKKyNlbmRpZgorI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCisgICAgY2Fz
ZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9UZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJndW1lbnRzOgor
ICAgICAgICByZXR1cm4gIldlYlBhZ2U6OlRlc3RBc3luY01lc3NhZ2VXaXRoTm9Bcmd1bWVudHMi
OworICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVzdEFzeW5jTWVzc2FnZVdpdGhOb0Fy
Z3VtZW50c1JlcGx5OgorICAgICAgICByZXR1cm4gIldlYlBhZ2U6OlRlc3RBc3luY01lc3NhZ2VX
aXRoTm9Bcmd1bWVudHNSZXBseSI7CisjZW5kaWYKKyNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQor
ICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVzdEFzeW5jTWVzc2FnZVdpdGhNdWx0aXBs
ZUFyZ3VtZW50czoKKyAgICAgICAgcmV0dXJuICJXZWJQYWdlOjpUZXN0QXN5bmNNZXNzYWdlV2l0
aE11bHRpcGxlQXJndW1lbnRzIjsKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX1Rlc3RB
c3luY01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHNSZXBseToKKyAgICAgICAgcmV0dXJuICJX
ZWJQYWdlOjpUZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1lbnRzUmVwbHkiOworI2Vu
ZGlmCisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9UZXN0U3luY01lc3NhZ2U6CisgICAg
ICAgIHJldHVybiAiV2ViUGFnZTo6VGVzdFN5bmNNZXNzYWdlIjsKKyAgICBjYXNlIE1lc3NhZ2VO
YW1lOjpXZWJQYWdlX1Rlc3RTeW5jaHJvbm91c01lc3NhZ2U6CisgICAgICAgIHJldHVybiAiV2Vi
UGFnZTo6VGVzdFN5bmNocm9ub3VzTWVzc2FnZSI7CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2Vi
UGFnZV9Mb2FkVVJMOgorICAgICAgICByZXR1cm4gIldlYlBhZ2U6OkxvYWRVUkwiOworI2lmIEVO
QUJMRShUT1VDSF9FVkVOVFMpCisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9Mb2FkU29t
ZXRoaW5nOgorICAgICAgICByZXR1cm4gIldlYlBhZ2U6OkxvYWRTb21ldGhpbmciOworI2VuZGlm
CisjaWYgKEVOQUJMRShUT1VDSF9FVkVOVFMpICYmIChORVNURURfTUVTU0FHRV9DT05ESVRJT04g
fHwgU09NRV9PVEhFUl9NRVNTQUdFX0NPTkRJVElPTikpCisgICAgY2FzZSBNZXNzYWdlTmFtZTo6
V2ViUGFnZV9Ub3VjaEV2ZW50OgorICAgICAgICByZXR1cm4gIldlYlBhZ2U6OlRvdWNoRXZlbnQi
OworI2VuZGlmCisjaWYgKEVOQUJMRShUT1VDSF9FVkVOVFMpICYmIChORVNURURfTUVTU0FHRV9D
T05ESVRJT04gJiYgU09NRV9PVEhFUl9NRVNTQUdFX0NPTkRJVElPTikpCisgICAgY2FzZSBNZXNz
YWdlTmFtZTo6V2ViUGFnZV9BZGRFdmVudDoKKyAgICAgICAgcmV0dXJuICJXZWJQYWdlOjpBZGRF
dmVudCI7CisjZW5kaWYKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgIGNhc2UgTWVzc2Fn
ZU5hbWU6OldlYlBhZ2VfTG9hZFNvbWV0aGluZ0Vsc2U6CisgICAgICAgIHJldHVybiAiV2ViUGFn
ZTo6TG9hZFNvbWV0aGluZ0Vsc2UiOworI2VuZGlmCisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2Vi
UGFnZV9EaWRSZWNlaXZlUG9saWN5RGVjaXNpb246CisgICAgICAgIHJldHVybiAiV2ViUGFnZTo6
RGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uIjsKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdl
X0Nsb3NlOgorICAgICAgICByZXR1cm4gIldlYlBhZ2U6OkNsb3NlIjsKKyAgICBjYXNlIE1lc3Nh
Z2VOYW1lOjpXZWJQYWdlX1ByZWZlcmVuY2VzRGlkQ2hhbmdlOgorICAgICAgICByZXR1cm4gIldl
YlBhZ2U6OlByZWZlcmVuY2VzRGlkQ2hhbmdlIjsKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQ
YWdlX1NlbmREb3VibGVBbmRGbG9hdDoKKyAgICAgICAgcmV0dXJuICJXZWJQYWdlOjpTZW5kRG91
YmxlQW5kRmxvYXQiOworICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfU2VuZEludHM6Cisg
ICAgICAgIHJldHVybiAiV2ViUGFnZTo6U2VuZEludHMiOworICAgIGNhc2UgTWVzc2FnZU5hbWU6
OldlYlBhZ2VfQ3JlYXRlUGx1Z2luOgorICAgICAgICByZXR1cm4gIldlYlBhZ2U6OkNyZWF0ZVBs
dWdpbiI7CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9SdW5KYXZhU2NyaXB0QWxlcnQ6
CisgICAgICAgIHJldHVybiAiV2ViUGFnZTo6UnVuSmF2YVNjcmlwdEFsZXJ0IjsKKyAgICBjYXNl
IE1lc3NhZ2VOYW1lOjpXZWJQYWdlX0dldFBsdWdpbnM6CisgICAgICAgIHJldHVybiAiV2ViUGFn
ZTo6R2V0UGx1Z2lucyI7CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9HZXRQbHVnaW5Q
cm9jZXNzQ29ubmVjdGlvbjoKKyAgICAgICAgcmV0dXJuICJXZWJQYWdlOjpHZXRQbHVnaW5Qcm9j
ZXNzQ29ubmVjdGlvbiI7CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9UZXN0TXVsdGlw
bGVBdHRyaWJ1dGVzOgorICAgICAgICByZXR1cm4gIldlYlBhZ2U6OlRlc3RNdWx0aXBsZUF0dHJp
YnV0ZXMiOworICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVzdFBhcmFtZXRlckF0dHJp
YnV0ZXM6CisgICAgICAgIHJldHVybiAiV2ViUGFnZTo6VGVzdFBhcmFtZXRlckF0dHJpYnV0ZXMi
OworICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVtcGxhdGVUZXN0OgorICAgICAgICBy
ZXR1cm4gIldlYlBhZ2U6OlRlbXBsYXRlVGVzdCI7CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2Vi
UGFnZV9TZXRWaWRlb0xheWVySUQ6CisgICAgICAgIHJldHVybiAiV2ViUGFnZTo6U2V0VmlkZW9M
YXllcklEIjsKKyNpZiBQTEFURk9STShNQUMpCisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFn
ZV9EaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbjoKKyAgICAgICAgcmV0dXJuICJXZWJQYWdl
OjpEaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbiI7CisjZW5kaWYKKyNpZiBQTEFURk9STShN
QUMpCisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9JbnRlcnByZXRLZXlFdmVudDoKKyAg
ICAgICAgcmV0dXJuICJXZWJQYWdlOjpJbnRlcnByZXRLZXlFdmVudCI7CisjZW5kaWYKKyNpZiBF
TkFCTEUoREVQUkVDQVRFRF9GRUFUVVJFKQorICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2Vf
RGVwcmVjYXRlZE9wZXJhdGlvbjoKKyAgICAgICAgcmV0dXJuICJXZWJQYWdlOjpEZXByZWNhdGVk
T3BlcmF0aW9uIjsKKyNlbmRpZgorI2lmIEVOQUJMRShFWFBFUklNRU5UQUxfRkVBVFVSRSkKKyAg
ICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX0V4cGVyaW1lbnRhbE9wZXJhdGlvbjoKKyAgICAg
ICAgcmV0dXJuICJXZWJQYWdlOjpFeHBlcmltZW50YWxPcGVyYXRpb24iOworI2VuZGlmCisgICAg
Y2FzZSBNZXNzYWdlTmFtZTo6V3JhcHBlZEFzeW5jTWVzc2FnZUZvclRlc3Rpbmc6CisgICAgICAg
IHJldHVybiAiSVBDOjpXcmFwcGVkQXN5bmNNZXNzYWdlRm9yVGVzdGluZyI7CisgICAgY2FzZSBN
ZXNzYWdlTmFtZTo6U3luY01lc3NhZ2VSZXBseToKKyAgICAgICAgcmV0dXJuICJJUEM6OlN5bmNN
ZXNzYWdlUmVwbHkiOworICAgIGNhc2UgTWVzc2FnZU5hbWU6OkluaXRpYWxpemVDb25uZWN0aW9u
OgorICAgICAgICByZXR1cm4gIklQQzo6SW5pdGlhbGl6ZUNvbm5lY3Rpb24iOworICAgIH0KKyAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gIjxpbnZhbGlkIG1lc3NhZ2UgbmFt
ZT4iOworfQorCitSZWNlaXZlck5hbWUgcmVjZWl2ZXJOYW1lKE1lc3NhZ2VOYW1lIG1lc3NhZ2VO
YW1lKQoreworICAgIHN3aXRjaCAobWVzc2FnZU5hbWUpIHsKKyAgICBjYXNlIE1lc3NhZ2VOYW1l
OjpXZWJQYWdlX0xvYWRVUkw6CisjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKKyAgICBjYXNlIE1l
c3NhZ2VOYW1lOjpXZWJQYWdlX1Rlc3RBc3luY01lc3NhZ2U6CisjZW5kaWYKKyNpZiBFTkFCTEUo
VEVTVF9GRUFUVVJFKQorICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVzdEFzeW5jTWVz
c2FnZVdpdGhOb0FyZ3VtZW50czoKKyNlbmRpZgorI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCisg
ICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9UZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxl
QXJndW1lbnRzOgorI2VuZGlmCisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9UZXN0U3lu
Y01lc3NhZ2U6CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9UZXN0U3luY2hyb25vdXNN
ZXNzYWdlOgorICAgICAgICByZXR1cm4gUmVjZWl2ZXJOYW1lOjpXZWJQYWdlOworICAgIGNhc2Ug
TWVzc2FnZU5hbWU6OldlYlBhZ2VfTG9hZFVSTDoKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQor
ICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfTG9hZFNvbWV0aGluZzoKKyNlbmRpZgorI2lm
IChFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiAoTkVTVEVEX01FU1NBR0VfQ09ORElUSU9OIHx8IFNP
TUVfT1RIRVJfTUVTU0FHRV9DT05ESVRJT04pKQorICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBh
Z2VfVG91Y2hFdmVudDoKKyNlbmRpZgorI2lmIChFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiAoTkVT
VEVEX01FU1NBR0VfQ09ORElUSU9OICYmIFNPTUVfT1RIRVJfTUVTU0FHRV9DT05ESVRJT04pKQor
ICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfQWRkRXZlbnQ6CisjZW5kaWYKKyNpZiBFTkFC
TEUoVE9VQ0hfRVZFTlRTKQorICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfTG9hZFNvbWV0
aGluZ0Vsc2U6CisjZW5kaWYKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX0RpZFJlY2Vp
dmVQb2xpY3lEZWNpc2lvbjoKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX0Nsb3NlOgor
ICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfUHJlZmVyZW5jZXNEaWRDaGFuZ2U6CisgICAg
Y2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9TZW5kRG91YmxlQW5kRmxvYXQ6CisgICAgY2FzZSBN
ZXNzYWdlTmFtZTo6V2ViUGFnZV9TZW5kSW50czoKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQ
YWdlX0NyZWF0ZVBsdWdpbjoKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX1J1bkphdmFT
Y3JpcHRBbGVydDoKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX0dldFBsdWdpbnM6Cisg
ICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9HZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjoK
KyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX1Rlc3RNdWx0aXBsZUF0dHJpYnV0ZXM6Cisg
ICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9UZXN0UGFyYW1ldGVyQXR0cmlidXRlczoKKyAg
ICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX1RlbXBsYXRlVGVzdDoKKyAgICBjYXNlIE1lc3Nh
Z2VOYW1lOjpXZWJQYWdlX1NldFZpZGVvTGF5ZXJJRDoKKyNpZiBQTEFURk9STShNQUMpCisgICAg
Y2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9EaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbjoK
KyNlbmRpZgorI2lmIFBMQVRGT1JNKE1BQykKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdl
X0ludGVycHJldEtleUV2ZW50OgorI2VuZGlmCisjaWYgRU5BQkxFKERFUFJFQ0FURURfRkVBVFVS
RSkKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX0RlcHJlY2F0ZWRPcGVyYXRpb246Cisj
ZW5kaWYKKyNpZiBFTkFCTEUoRVhQRVJJTUVOVEFMX0ZFQVRVUkUpCisgICAgY2FzZSBNZXNzYWdl
TmFtZTo6V2ViUGFnZV9FeHBlcmltZW50YWxPcGVyYXRpb246CisjZW5kaWYKKyAgICAgICAgcmV0
dXJuIFJlY2VpdmVyTmFtZTo6V2ViUGFnZTsKKyAgICAgICAgcmV0dXJuIFJlY2VpdmVyTmFtZTo6
Tm9uZTsKKyNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQorICAgIGNhc2UgTWVzc2FnZU5hbWU6Oldl
YlBhZ2VfVGVzdEFzeW5jTWVzc2FnZVJlcGx5OgorI2VuZGlmCisjaWYgRU5BQkxFKFRFU1RfRkVB
VFVSRSkKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX1Rlc3RBc3luY01lc3NhZ2VXaXRo
Tm9Bcmd1bWVudHNSZXBseToKKyNlbmRpZgorI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCisgICAg
Y2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9UZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJn
dW1lbnRzUmVwbHk6CisjZW5kaWYKKyAgICAgICAgcmV0dXJuIFJlY2VpdmVyTmFtZTo6QXN5bmNS
ZXBseTsKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXcmFwcGVkQXN5bmNNZXNzYWdlRm9yVGVzdGlu
ZzoKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpTeW5jTWVzc2FnZVJlcGx5OgorICAgIGNhc2UgTWVz
c2FnZU5hbWU6OkluaXRpYWxpemVDb25uZWN0aW9uOgorICAgICAgICByZXR1cm4gUmVjZWl2ZXJO
YW1lOjpJUEM7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBS
ZWNlaXZlck5hbWU6OkludmFsaWQ7Cit9CisKK2Jvb2wgaXNWYWxpZE1lc3NhZ2VOYW1lKE1lc3Nh
Z2VOYW1lIG1lc3NhZ2VOYW1lKQoreworICAgIGlmIChtZXNzYWdlTmFtZSA9PSBJUEM6Ok1lc3Nh
Z2VOYW1lOjpXZWJQYWdlX0xvYWRVUkwpCisgICAgICAgIHJldHVybiB0cnVlOworI2lmIEVOQUJM
RShURVNUX0ZFQVRVUkUpCisgICAgaWYgKG1lc3NhZ2VOYW1lID09IElQQzo6TWVzc2FnZU5hbWU6
OldlYlBhZ2VfVGVzdEFzeW5jTWVzc2FnZSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYg
KG1lc3NhZ2VOYW1lID09IElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVzdEFzeW5jTWVzc2Fn
ZVJlcGx5KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyNlbmRpZgorI2lmIEVOQUJMRShURVNUX0ZF
QVRVUkUpCisgICAgaWYgKG1lc3NhZ2VOYW1lID09IElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2Vf
VGVzdEFzeW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50cykKKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgaWYgKG1lc3NhZ2VOYW1lID09IElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVzdEFzeW5j
TWVzc2FnZVdpdGhOb0FyZ3VtZW50c1JlcGx5KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyNlbmRp
ZgorI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCisgICAgaWYgKG1lc3NhZ2VOYW1lID09IElQQzo6
TWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVzdEFzeW5jTWVzc2FnZVdpdGhNdWx0aXBsZUFyZ3VtZW50
cykKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKG1lc3NhZ2VOYW1lID09IElQQzo6TWVz
c2FnZU5hbWU6OldlYlBhZ2VfVGVzdEFzeW5jTWVzc2FnZVdpdGhNdWx0aXBsZUFyZ3VtZW50c1Jl
cGx5KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyNlbmRpZgorICAgIGlmIChtZXNzYWdlTmFtZSA9
PSBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX1Rlc3RTeW5jTWVzc2FnZSkKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgaWYgKG1lc3NhZ2VOYW1lID09IElQQzo6TWVzc2FnZU5hbWU6OldlYlBh
Z2VfVGVzdFN5bmNocm9ub3VzTWVzc2FnZSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYg
KG1lc3NhZ2VOYW1lID09IElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfTG9hZFVSTCkKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAgICBpZiAobWVzc2Fn
ZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9Mb2FkU29tZXRoaW5nKQorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyNlbmRpZgorI2lmIChFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiAoTkVT
VEVEX01FU1NBR0VfQ09ORElUSU9OIHx8IFNPTUVfT1RIRVJfTUVTU0FHRV9DT05ESVRJT04pKQor
ICAgIGlmIChtZXNzYWdlTmFtZSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX1RvdWNoRXZl
bnQpCisgICAgICAgIHJldHVybiB0cnVlOworI2VuZGlmCisjaWYgKEVOQUJMRShUT1VDSF9FVkVO
VFMpICYmIChORVNURURfTUVTU0FHRV9DT05ESVRJT04gJiYgU09NRV9PVEhFUl9NRVNTQUdFX0NP
TkRJVElPTikpCisgICAgaWYgKG1lc3NhZ2VOYW1lID09IElQQzo6TWVzc2FnZU5hbWU6OldlYlBh
Z2VfQWRkRXZlbnQpCisgICAgICAgIHJldHVybiB0cnVlOworI2VuZGlmCisjaWYgRU5BQkxFKFRP
VUNIX0VWRU5UUykKKyAgICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6V2Vi
UGFnZV9Mb2FkU29tZXRoaW5nRWxzZSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisjZW5kaWYKKyAg
ICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9EaWRSZWNlaXZl
UG9saWN5RGVjaXNpb24pCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmIChtZXNzYWdlTmFt
ZSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX0Nsb3NlKQorICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9QcmVm
ZXJlbmNlc0RpZENoYW5nZSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKG1lc3NhZ2VO
YW1lID09IElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfU2VuZERvdWJsZUFuZEZsb2F0KQorICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFt
ZTo6V2ViUGFnZV9TZW5kSW50cykKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKG1lc3Nh
Z2VOYW1lID09IElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfQ3JlYXRlUGx1Z2luKQorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6
V2ViUGFnZV9SdW5KYXZhU2NyaXB0QWxlcnQpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlm
IChtZXNzYWdlTmFtZSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX0dldFBsdWdpbnMpCisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIGlmIChtZXNzYWdlTmFtZSA9PSBJUEM6Ok1lc3NhZ2VO
YW1lOjpXZWJQYWdlX0dldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKQorICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9U
ZXN0TXVsdGlwbGVBdHRyaWJ1dGVzKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAobWVz
c2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9UZXN0UGFyYW1ldGVyQXR0cmli
dXRlcykKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKG1lc3NhZ2VOYW1lID09IElQQzo6
TWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVtcGxhdGVUZXN0KQorICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9TZXRWaWRl
b0xheWVySUQpCisgICAgICAgIHJldHVybiB0cnVlOworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBp
ZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9EaWRDcmVhdGVXZWJQ
cm9jZXNzQ29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuIHRydWU7CisjZW5kaWYKKyNpZiBQTEFU
Rk9STShNQUMpCisgICAgaWYgKG1lc3NhZ2VOYW1lID09IElQQzo6TWVzc2FnZU5hbWU6OldlYlBh
Z2VfSW50ZXJwcmV0S2V5RXZlbnQpCisgICAgICAgIHJldHVybiB0cnVlOworI2VuZGlmCisjaWYg
RU5BQkxFKERFUFJFQ0FURURfRkVBVFVSRSkKKyAgICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpN
ZXNzYWdlTmFtZTo6V2ViUGFnZV9EZXByZWNhdGVkT3BlcmF0aW9uKQorICAgICAgICByZXR1cm4g
dHJ1ZTsKKyNlbmRpZgorI2lmIEVOQUJMRShFWFBFUklNRU5UQUxfRkVBVFVSRSkKKyAgICBpZiAo
bWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9FeHBlcmltZW50YWxPcGVy
YXRpb24pCisgICAgICAgIHJldHVybiB0cnVlOworI2VuZGlmCisgICAgaWYgKG1lc3NhZ2VOYW1l
ID09IElQQzo6TWVzc2FnZU5hbWU6OldyYXBwZWRBc3luY01lc3NhZ2VGb3JUZXN0aW5nKQorICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFt
ZTo6U3luY01lc3NhZ2VSZXBseSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKG1lc3Nh
Z2VOYW1lID09IElQQzo6TWVzc2FnZU5hbWU6OkluaXRpYWxpemVDb25uZWN0aW9uKQorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gZmFsc2U7Cit9OworCit9IC8vIG5hbWVzcGFjZSBJ
UEMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy9NZXNzYWdlTmFtZXMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvTWVzc2FnZU5hbWVzLmgJKG5vbmV4aXN0ZW50KQor
KysgU291cmNlL1dlYktpdC9TY3JpcHRzL01lc3NhZ2VOYW1lcy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMTE2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUgorICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAq
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSCisgKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorICogT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlIDx3dGYvRW51bVRyYWl0cy5oPgorCituYW1lc3BhY2UgSVBDIHsKKworZW51bSBjbGFzcyBS
ZWNlaXZlck5hbWUgOiB1aW50OF90IHsKKyAgICBXZWJQYWdlID0gMQorICAgICwgV2ViUGFnZSA9
IDIKKyAgICAsIE5vbmUgPSAzCisgICAgLCBJUEMgPSA0CisgICAgLCBBc3luY1JlcGx5ID0gNQor
ICAgICwgSW52YWxpZCA9IDYKK307CisKK2VudW0gY2xhc3MgTWVzc2FnZU5hbWUgOiB1aW50MTZf
dCB7CisgICAgV2ViUGFnZV9Mb2FkVVJMID0gMQorI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCisg
ICAgLCBXZWJQYWdlX1Rlc3RBc3luY01lc3NhZ2UgPSAyCisgICAgLCBXZWJQYWdlX1Rlc3RBc3lu
Y01lc3NhZ2VSZXBseSA9IDMKKyNlbmRpZgorI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCisgICAg
LCBXZWJQYWdlX1Rlc3RBc3luY01lc3NhZ2VXaXRoTm9Bcmd1bWVudHMgPSA0CisgICAgLCBXZWJQ
YWdlX1Rlc3RBc3luY01lc3NhZ2VXaXRoTm9Bcmd1bWVudHNSZXBseSA9IDUKKyNlbmRpZgorI2lm
IEVOQUJMRShURVNUX0ZFQVRVUkUpCisgICAgLCBXZWJQYWdlX1Rlc3RBc3luY01lc3NhZ2VXaXRo
TXVsdGlwbGVBcmd1bWVudHMgPSA2CisgICAgLCBXZWJQYWdlX1Rlc3RBc3luY01lc3NhZ2VXaXRo
TXVsdGlwbGVBcmd1bWVudHNSZXBseSA9IDcKKyNlbmRpZgorICAgICwgV2ViUGFnZV9UZXN0U3lu
Y01lc3NhZ2UgPSA4CisgICAgLCBXZWJQYWdlX1Rlc3RTeW5jaHJvbm91c01lc3NhZ2UgPSA5Cisg
ICAgLCBXZWJQYWdlX0xvYWRVUkwgPSAxMAorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAg
LCBXZWJQYWdlX0xvYWRTb21ldGhpbmcgPSAxMQorI2VuZGlmCisjaWYgKEVOQUJMRShUT1VDSF9F
VkVOVFMpICYmIChORVNURURfTUVTU0FHRV9DT05ESVRJT04gfHwgU09NRV9PVEhFUl9NRVNTQUdF
X0NPTkRJVElPTikpCisgICAgLCBXZWJQYWdlX1RvdWNoRXZlbnQgPSAxMgorI2VuZGlmCisjaWYg
KEVOQUJMRShUT1VDSF9FVkVOVFMpICYmIChORVNURURfTUVTU0FHRV9DT05ESVRJT04gJiYgU09N
RV9PVEhFUl9NRVNTQUdFX0NPTkRJVElPTikpCisgICAgLCBXZWJQYWdlX0FkZEV2ZW50ID0gMTMK
KyNlbmRpZgorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAgLCBXZWJQYWdlX0xvYWRTb21l
dGhpbmdFbHNlID0gMTQKKyNlbmRpZgorICAgICwgV2ViUGFnZV9EaWRSZWNlaXZlUG9saWN5RGVj
aXNpb24gPSAxNQorICAgICwgV2ViUGFnZV9DbG9zZSA9IDE2CisgICAgLCBXZWJQYWdlX1ByZWZl
cmVuY2VzRGlkQ2hhbmdlID0gMTcKKyAgICAsIFdlYlBhZ2VfU2VuZERvdWJsZUFuZEZsb2F0ID0g
MTgKKyAgICAsIFdlYlBhZ2VfU2VuZEludHMgPSAxOQorICAgICwgV2ViUGFnZV9DcmVhdGVQbHVn
aW4gPSAyMAorICAgICwgV2ViUGFnZV9SdW5KYXZhU2NyaXB0QWxlcnQgPSAyMQorICAgICwgV2Vi
UGFnZV9HZXRQbHVnaW5zID0gMjIKKyAgICAsIFdlYlBhZ2VfR2V0UGx1Z2luUHJvY2Vzc0Nvbm5l
Y3Rpb24gPSAyMworICAgICwgV2ViUGFnZV9UZXN0TXVsdGlwbGVBdHRyaWJ1dGVzID0gMjQKKyAg
ICAsIFdlYlBhZ2VfVGVzdFBhcmFtZXRlckF0dHJpYnV0ZXMgPSAyNQorICAgICwgV2ViUGFnZV9U
ZW1wbGF0ZVRlc3QgPSAyNgorICAgICwgV2ViUGFnZV9TZXRWaWRlb0xheWVySUQgPSAyNworI2lm
IFBMQVRGT1JNKE1BQykKKyAgICAsIFdlYlBhZ2VfRGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rp
b24gPSAyOAorI2VuZGlmCisjaWYgUExBVEZPUk0oTUFDKQorICAgICwgV2ViUGFnZV9JbnRlcnBy
ZXRLZXlFdmVudCA9IDI5CisjZW5kaWYKKyNpZiBFTkFCTEUoREVQUkVDQVRFRF9GRUFUVVJFKQor
ICAgICwgV2ViUGFnZV9EZXByZWNhdGVkT3BlcmF0aW9uID0gMzAKKyNlbmRpZgorI2lmIEVOQUJM
RShFWFBFUklNRU5UQUxfRkVBVFVSRSkKKyAgICAsIFdlYlBhZ2VfRXhwZXJpbWVudGFsT3BlcmF0
aW9uID0gMzEKKyNlbmRpZgorICAgICwgV3JhcHBlZEFzeW5jTWVzc2FnZUZvclRlc3RpbmcgPSAz
MgorICAgICwgU3luY01lc3NhZ2VSZXBseSA9IDMzCisgICAgLCBJbml0aWFsaXplQ29ubmVjdGlv
biA9IDM0Cit9OworCitSZWNlaXZlck5hbWUgcmVjZWl2ZXJOYW1lKE1lc3NhZ2VOYW1lKTsKK2Nv
bnN0IGNoYXIqIGRlc2NyaXB0aW9uKE1lc3NhZ2VOYW1lKTsKK2Jvb2wgaXNWYWxpZE1lc3NhZ2VO
YW1lKE1lc3NhZ2VOYW1lKTsKKworfSAvLyBuYW1lc3BhY2UgSVBDCisKK25hbWVzcGFjZSBXVEYg
eworCit0ZW1wbGF0ZTw+CitjbGFzcyBIYXNDdXN0b21Jc1ZhbGlkRW51bTxJUEM6Ok1lc3NhZ2VO
YW1lPiA6IHB1YmxpYyBzdGQ6OnRydWVfdHlwZSB7IH07Cit0ZW1wbGF0ZTx0eXBlbmFtZSBFLCB0
eXBlbmFtZSBULCB0eXBlbmFtZSA9IHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19zYW1lPEUsIElQ
Qzo6TWVzc2FnZU5hbWU+Ojp2YWx1ZT4+Citib29sIGlzVmFsaWRFbnVtKFQgbWVzc2FnZU5hbWUp
Cit7CisgICAgc3RhdGljX2Fzc2VydChzaXplb2YoVCkgPT0gc2l6ZW9mKElQQzo6TWVzc2FnZU5h
bWUpLCAiaXNWYWxpZEVudW08TWVzc2FnZU5hbWU+IHNob3VsZCBvbmx5IGJlIGNhbGxlZCB3aXRo
IDE2LWJpdCB0eXBlcyIpOworICAgIHJldHVybiBJUEM6OmlzVmFsaWRNZXNzYWdlTmFtZShzdGF0
aWNfY2FzdDxJUEM6Ok1lc3NhZ2VOYW1lPihtZXNzYWdlTmFtZSkpOworfTsKKworfSAvLyBuYW1l
c3BhY2UgV1RGCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvZ2VuZXJhdGUtbWVzc2FnZS1y
ZWNlaXZlci5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvZ2VuZXJhdGUt
bWVzc2FnZS1yZWNlaXZlci5weQkocmV2aXNpb24gMjYwNzY0KQorKysgU291cmNlL1dlYktpdC9T
Y3JpcHRzL2dlbmVyYXRlLW1lc3NhZ2UtcmVjZWl2ZXIucHkJKHdvcmtpbmcgY29weSkKQEAgLTIz
LDMzICsyMyw0OCBAQAogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiBmcm9tIF9fZnV0dXJlX18gaW1wb3J0IHdp
dGhfc3RhdGVtZW50Ci1pbXBvcnQgYXJncGFyc2UKIGltcG9ydCBzeXMKIAogaW1wb3J0IHdlYmtp
dC5tZXNzYWdlcwogaW1wb3J0IHdlYmtpdC5wYXJzZXIKIAogCi1kZWYgbWFpbihhcmd2PU5vbmUp
OgotICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKCkKLSAgICBwYXJzZXIuYWRk
X2FyZ3VtZW50KCdzb3VyY2UnKQotICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0taW1wbGVtZW50
YXRpb24nLCByZXF1aXJlZD1UcnVlKQotICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0taGVhZGVy
JywgcmVxdWlyZWQ9VHJ1ZSkKLSAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLXJlcGx5LWhlYWRl
cicsIHJlcXVpcmVkPVRydWUpCi0KLSAgICBhcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQotCi0g
ICAgd2l0aCBvcGVuKGFyZ3Muc291cmNlKSBhcyBzb3VyY2VfZmlsZToKLSAgICAgICAgcmVjZWl2
ZXIgPSB3ZWJraXQucGFyc2VyLnBhcnNlKHNvdXJjZV9maWxlKQorZGVmIG1haW4oYXJndik6Cisg
ICAgcmVjZWl2ZXJzID0gW10KIAotICAgIHdpdGggb3BlbihhcmdzLmltcGxlbWVudGF0aW9uLCAi
dysiKSBhcyBpbXBsZW1lbnRhdGlvbl9vdXRwdXQ6Ci0gICAgICAgIGltcGxlbWVudGF0aW9uX291
dHB1dC53cml0ZSh3ZWJraXQubWVzc2FnZXMuZ2VuZXJhdGVfbWVzc2FnZV9oYW5kbGVyKHJlY2Vp
dmVyKSkKKyAgICBmaXJzdF9hcmcgPSBUcnVlCisgICAgc2Vjb25kX2FyZyA9IEZhbHNlCisgICAg
Zm9yIHBhcmFtZXRlciBpbiBhcmd2OgorICAgICAgICBpZiBmaXJzdF9hcmc6CisgICAgICAgICAg
ICBmaXJzdF9hcmcgPSBGYWxzZQorICAgICAgICAgICAgc2Vjb25kX2FyZyA9IFRydWUKKyAgICAg
ICAgICAgIGNvbnRpbnVlCisgICAgICAgIGlmIHNlY29uZF9hcmc6CisgICAgICAgICAgICBiYXNl
X2RpciA9IHBhcmFtZXRlcgorICAgICAgICAgICAgc2Vjb25kX2FyZyA9IEZhbHNlCisgICAgICAg
ICAgICBjb250aW51ZQorCisgICAgICAgIHJlY2VpdmVyX25hbWUgPSBwYXJhbWV0ZXIucnNwbGl0
KCcvJywgMSkucG9wKCkKKyAgICAgICAgcHJpbnQgJ0dlbmVyYXRpbmcgbWVzc2FnZSByZWNlaXZl
ciBmb3IgJXMnICUgcmVjZWl2ZXJfbmFtZQorCisgICAgICAgIHdpdGggb3BlbignJXMvJXMubWVz
c2FnZXMuaW4nICUgKGJhc2VfZGlyLCBwYXJhbWV0ZXIpKSBhcyBzb3VyY2VfZmlsZToKKyAgICAg
ICAgICAgIHJlY2VpdmVyID0gd2Via2l0LnBhcnNlci5wYXJzZShzb3VyY2VfZmlsZSkKKyAgICAg
ICAgcmVjZWl2ZXJzLmFwcGVuZChyZWNlaXZlcikKKworICAgICAgICB3aXRoIG9wZW4oJyVzTWVz
c2FnZVJlY2VpdmVyLmNwcCcgJSByZWNlaXZlcl9uYW1lLCAidysiKSBhcyBpbXBsZW1lbnRhdGlv
bl9vdXRwdXQ6CisgICAgICAgICAgICBpbXBsZW1lbnRhdGlvbl9vdXRwdXQud3JpdGUod2Via2l0
Lm1lc3NhZ2VzLmdlbmVyYXRlX21lc3NhZ2VfaGFuZGxlcihyZWNlaXZlcikpCisKKyAgICAgICAg
d2l0aCBvcGVuKCclc01lc3NhZ2VzLmgnICUgcmVjZWl2ZXJfbmFtZSwgIncrIikgYXMgaGVhZGVy
X291dHB1dDoKKyAgICAgICAgICAgIGhlYWRlcl9vdXRwdXQud3JpdGUod2Via2l0Lm1lc3NhZ2Vz
LmdlbmVyYXRlX21lc3NhZ2VzX2hlYWRlcihyZWNlaXZlcikpCiAKLSAgICB3aXRoIG9wZW4oYXJn
cy5oZWFkZXIsICJ3KyIpIGFzIGhlYWRlcl9vdXRwdXQ6Ci0gICAgICAgIGhlYWRlcl9vdXRwdXQu
d3JpdGUod2Via2l0Lm1lc3NhZ2VzLmdlbmVyYXRlX21lc3NhZ2VzX2hlYWRlcihyZWNlaXZlcikp
CisgICAgICAgIHdpdGggb3BlbignJXNNZXNzYWdlc1JlcGxpZXMuaCcgJSByZWNlaXZlcl9uYW1l
LCAidysiKSBhcyByZXBseV9oZWFkZXJfb3V0cHV0OgorICAgICAgICAgICAgcmVwbHlfaGVhZGVy
X291dHB1dC53cml0ZSh3ZWJraXQubWVzc2FnZXMuZ2VuZXJhdGVfbWVzc2FnZXNfcmVwbHlfaGVh
ZGVyKHJlY2VpdmVyKSkKIAotICAgIHdpdGggb3BlbihhcmdzLnJlcGx5X2hlYWRlciwgIncrIikg
YXMgcmVwbHlfaGVhZGVyX291dHB1dDoKLSAgICAgICAgcmVwbHlfaGVhZGVyX291dHB1dC53cml0
ZSh3ZWJraXQubWVzc2FnZXMuZ2VuZXJhdGVfbWVzc2FnZXNfcmVwbHlfaGVhZGVyKHJlY2VpdmVy
KSkKKyAgICB3aXRoIG9wZW4oJ01lc3NhZ2VOYW1lcy5oJywgIncrIikgYXMgbWVzc2FnZV9uYW1l
c19oZWFkZXJfb3V0cHV0OgorICAgICAgICBtZXNzYWdlX25hbWVzX2hlYWRlcl9vdXRwdXQud3Jp
dGUod2Via2l0Lm1lc3NhZ2VzLmdlbmVyYXRlX21lc3NhZ2VfbmFtZXNfaGVhZGVyKHJlY2VpdmVy
cykpCisKKyAgICB3aXRoIG9wZW4oJ01lc3NhZ2VOYW1lcy5jcHAnLCAidysiKSBhcyBtZXNzYWdl
X25hbWVzX2ltcGxlbWVudGF0aW9uX291dHB1dDoKKyAgICAgICAgbWVzc2FnZV9uYW1lc19pbXBs
ZW1lbnRhdGlvbl9vdXRwdXQud3JpdGUod2Via2l0Lm1lc3NhZ2VzLmdlbmVyYXRlX21lc3NhZ2Vf
bmFtZXNfaW1wbGVtZW50YXRpb24ocmVjZWl2ZXJzKSkKIAogICAgIHJldHVybiAwCiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy90ZXN0LWxlZ2FjeU1lc3NhZ2VSZWNlaXZlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TY3JpcHRzL3Rlc3QtbGVnYWN5TWVzc2FnZVJlY2Vp
dmVyLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvdGVzdC1sZWdh
Y3lNZXNzYWdlUmVjZWl2ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjAzIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorICog
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
CisgKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgKEVOQUJMRShXRUJL
SVQyKSAmJiAoTkVTVEVEX01BU1RFUl9DT05ESVRJT04gfHwgTUFTVEVSX09SICYmIE1BU1RFUl9B
TkQpKQorCisjaW5jbHVkZSAiV2ViUGFnZS5oIgorCisjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMu
aCIKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiRGVjb2Rlci5oIgorI2lmIEVO
QUJMRShERVBSRUNBVEVEX0ZFQVRVUkUpIHx8IEVOQUJMRShFWFBFUklNRU5UQUxfRkVBVFVSRSkK
KyNpbmNsdWRlICJEdW1teVR5cGUuaCIKKyNlbmRpZgorI2luY2x1ZGUgIkhhbmRsZU1lc3NhZ2Uu
aCIKKyNpZiBQTEFURk9STShNQUMpCisjaW5jbHVkZSAiTWFjaFBvcnQuaCIKKyNlbmRpZgorI2lu
Y2x1ZGUgIlBsdWdpbi5oIgorI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgorI2lm
IChFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiAoTkVTVEVEX01FU1NBR0VfQ09ORElUSU9OICYmIFNP
TUVfT1RIRVJfTUVTU0FHRV9DT05ESVRJT04pKSB8fCAoRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYg
KE5FU1RFRF9NRVNTQUdFX0NPTkRJVElPTiB8fCBTT01FX09USEVSX01FU1NBR0VfQ09ORElUSU9O
KSkKKyNpbmNsdWRlICJXZWJFdmVudC5oIgorI2VuZGlmCisjaW5jbHVkZSAiV2ViUGFnZU1lc3Nh
Z2VzLmgiCisjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXNTdG9yZS5oIgorI2luY2x1ZGUgPFdlYkNv
cmUvR3JhcGhpY3NMYXllci5oPgorI2lmIFBMQVRGT1JNKE1BQykKKyNpbmNsdWRlIDxXZWJDb3Jl
L0tleWJvYXJkRXZlbnQuaD4KKyNlbmRpZgorI2luY2x1ZGUgPFdlYkNvcmUvUGx1Z2luRGF0YS5o
PgorI2luY2x1ZGUgPHV0aWxpdHk+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVz
cGFjZSBNZXNzYWdlcyB7CisKK25hbWVzcGFjZSBXZWJQYWdlIHsKKwordm9pZCBHZXRQbHVnaW5Q
cm9jZXNzQ29ubmVjdGlvbjo6c2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYmIGVu
Y29kZXIsIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgSVBDOjpDb25uZWN0aW9u
OjpIYW5kbGUmIGNvbm5lY3Rpb25IYW5kbGUpCit7CisgICAgKmVuY29kZXIgPDwgY29ubmVjdGlv
bkhhbmRsZTsKKyAgICBjb25uZWN0aW9uLnNlbmRTeW5jUmVwbHkoV1RGTW92ZShlbmNvZGVyKSk7
Cit9CisKK3ZvaWQgVGVzdE11bHRpcGxlQXR0cmlidXRlczo6c2VuZChzdGQ6OnVuaXF1ZV9wdHI8
SVBDOjpFbmNvZGVyPiYmIGVuY29kZXIsIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKK3sK
KyAgICBjb25uZWN0aW9uLnNlbmRTeW5jUmVwbHkoV1RGTW92ZShlbmNvZGVyKSk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYlBhZ2UKKworfSAvLyBuYW1lc3BhY2UgTWVzc2FnZXMKKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK3ZvaWQgV2ViUGFnZTo6ZGlkUmVjZWl2ZVdlYlBhZ2VNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQoreworICAg
IGF1dG8gcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpOworICAgIGlmIChkZWNvZGVyLm1l
c3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRVUkw6Om5hbWUoKSkgeworICAg
ICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRVUkw+KGRlY29k
ZXIsIHRoaXMsICZXZWJQYWdlOjpsb2FkVVJMKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNp
ZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0g
TWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRTb21ldGhpbmc6Om5hbWUoKSkgeworICAgICAgICBJUEM6
OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRTb21ldGhpbmc+KGRlY29kZXIs
IHRoaXMsICZXZWJQYWdlOjpsb2FkU29tZXRoaW5nKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyNlbmRpZgorI2lmIChFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiAoTkVTVEVEX01FU1NBR0VfQ09O
RElUSU9OIHx8IFNPTUVfT1RIRVJfTUVTU0FHRV9DT05ESVRJT04pKQorICAgIGlmIChkZWNvZGVy
Lm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OlRvdWNoRXZlbnQ6Om5hbWUoKSkg
eworICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OlRvdWNoRXZl
bnQ+KGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjp0b3VjaEV2ZW50KTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKyNlbmRpZgorI2lmIChFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiAoTkVTVEVEX01F
U1NBR0VfQ09ORElUSU9OICYmIFNPTUVfT1RIRVJfTUVTU0FHRV9DT05ESVRJT04pKQorICAgIGlm
IChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OkFkZEV2ZW50Ojpu
YW1lKCkpIHsKKyAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpB
ZGRFdmVudD4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OmFkZEV2ZW50KTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKyNlbmRpZgorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAgaWYgKGRl
Y29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFNvbWV0aGluZ0Vs
c2U6Om5hbWUoKSkgeworICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBh
Z2U6OkxvYWRTb21ldGhpbmdFbHNlPihkZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6bG9hZFNvbWV0
aGluZ0Vsc2UpOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisgICAgaWYgKGRlY29k
ZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVjZWl2ZVBvbGljeURl
Y2lzaW9uOjpuYW1lKCkpIHsKKyAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpX
ZWJQYWdlOjpEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24+KGRlY29kZXIsIHRoaXMsICZXZWJQYWdl
OjpkaWRSZWNlaXZlUG9saWN5RGVjaXNpb24pOworICAgICAgICByZXR1cm47CisgICAgfQorICAg
IGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OkNsb3NlOjpu
YW1lKCkpIHsKKyAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpD
bG9zZT4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OmNsb3NlKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdl
OjpQcmVmZXJlbmNlc0RpZENoYW5nZTo6bmFtZSgpKSB7CisgICAgICAgIElQQzo6aGFuZGxlTWVz
c2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6UHJlZmVyZW5jZXNEaWRDaGFuZ2U+KGRlY29kZXIsIHRo
aXMsICZXZWJQYWdlOjpwcmVmZXJlbmNlc0RpZENoYW5nZSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6
U2VuZERvdWJsZUFuZEZsb2F0OjpuYW1lKCkpIHsKKyAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdl
PE1lc3NhZ2VzOjpXZWJQYWdlOjpTZW5kRG91YmxlQW5kRmxvYXQ+KGRlY29kZXIsIHRoaXMsICZX
ZWJQYWdlOjpzZW5kRG91YmxlQW5kRmxvYXQpOworICAgICAgICByZXR1cm47CisgICAgfQorICAg
IGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OlNlbmRJbnRz
OjpuYW1lKCkpIHsKKyAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdl
OjpTZW5kSW50cz4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OnNlbmRJbnRzKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2Vz
OjpXZWJQYWdlOjpUZXN0UGFyYW1ldGVyQXR0cmlidXRlczo6bmFtZSgpKSB7CisgICAgICAgIElQ
Qzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6VGVzdFBhcmFtZXRlckF0dHJpYnV0
ZXM+KGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjp0ZXN0UGFyYW1ldGVyQXR0cmlidXRlcyk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBN
ZXNzYWdlczo6V2ViUGFnZTo6VGVtcGxhdGVUZXN0OjpuYW1lKCkpIHsKKyAgICAgICAgSVBDOjpo
YW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpUZW1wbGF0ZVRlc3Q+KGRlY29kZXIsIHRo
aXMsICZXZWJQYWdlOjp0ZW1wbGF0ZVRlc3QpOworICAgICAgICByZXR1cm47CisgICAgfQorICAg
IGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OlNldFZpZGVv
TGF5ZXJJRDo6bmFtZSgpKSB7CisgICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6
V2ViUGFnZTo6U2V0VmlkZW9MYXllcklEPihkZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6c2V0Vmlk
ZW9MYXllcklEKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNpZiBQTEFURk9STShNQUMpCisg
ICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6RGlkQ3Jl
YXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb246Om5hbWUoKSkgeworICAgICAgICBJUEM6OmhhbmRsZU1l
c3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OkRpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uPihk
ZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6ZGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24pOwor
ICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisjaWYgRU5BQkxFKERFUFJFQ0FURURfRkVB
VFVSRSkKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdl
OjpEZXByZWNhdGVkT3BlcmF0aW9uOjpuYW1lKCkpIHsKKyAgICAgICAgSVBDOjpoYW5kbGVNZXNz
YWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpEZXByZWNhdGVkT3BlcmF0aW9uPihkZWNvZGVyLCB0aGlz
LCAmV2ViUGFnZTo6ZGVwcmVjYXRlZE9wZXJhdGlvbik7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisjZW5kaWYKKyNpZiBFTkFCTEUoRVhQRVJJTUVOVEFMX0ZFQVRVUkUpCisgICAgaWYgKGRlY29k
ZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6RXhwZXJpbWVudGFsT3BlcmF0
aW9uOjpuYW1lKCkpIHsKKyAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQ
YWdlOjpFeHBlcmltZW50YWxPcGVyYXRpb24+KGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjpleHBl
cmltZW50YWxPcGVyYXRpb24pOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisgICAg
VU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pOworICAgIFVOVVNFRF9QQVJBTShkZWNvZGVyKTsKKyAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwordm9pZCBXZWJQYWdlOjpkaWRSZWNlaXZlU3lu
Y1dlYlBhZ2VNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVy
JiBkZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYgcmVwbHlFbmNvZGVyKQor
eworICAgIGF1dG8gcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpOworICAgIGlmIChkZWNv
ZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OkNyZWF0ZVBsdWdpbjo6bmFt
ZSgpKSB7CisgICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6Q3Jl
YXRlUGx1Z2luPihkZWNvZGVyLCAqcmVwbHlFbmNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6Y3JlYXRl
UGx1Z2luKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdl
TmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpSdW5KYXZhU2NyaXB0QWxlcnQ6Om5hbWUoKSkg
eworICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OlJ1bkphdmFT
Y3JpcHRBbGVydD4oZGVjb2RlciwgKnJlcGx5RW5jb2RlciwgdGhpcywgJldlYlBhZ2U6OnJ1bkph
dmFTY3JpcHRBbGVydCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKGRlY29kZXIu
bWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6R2V0UGx1Z2luczo6bmFtZSgpKSB7
CisgICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6R2V0UGx1Z2lu
cz4oZGVjb2RlciwgKnJlcGx5RW5jb2RlciwgdGhpcywgJldlYlBhZ2U6OmdldFBsdWdpbnMpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0g
TWVzc2FnZXM6OldlYlBhZ2U6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpuYW1lKCkpIHsK
KyAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlU3luY2hyb25vdXM8TWVzc2FnZXM6OldlYlBhZ2U6
OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uPihjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVu
Y29kZXIsIHRoaXMsICZXZWJQYWdlOjpnZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbik7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNz
YWdlczo6V2ViUGFnZTo6VGVzdE11bHRpcGxlQXR0cmlidXRlczo6bmFtZSgpKSB7CisgICAgICAg
IElQQzo6aGFuZGxlTWVzc2FnZVN5bmNocm9ub3VzV2FudHNDb25uZWN0aW9uPE1lc3NhZ2VzOjpX
ZWJQYWdlOjpUZXN0TXVsdGlwbGVBdHRyaWJ1dGVzPihjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBs
eUVuY29kZXIsIHRoaXMsICZXZWJQYWdlOjp0ZXN0TXVsdGlwbGVBdHRyaWJ1dGVzKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyNpZiBQTEFURk9STShNQUMpCisgICAgaWYgKGRlY29kZXIubWVz
c2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6SW50ZXJwcmV0S2V5RXZlbnQ6Om5hbWUo
KSkgeworICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OkludGVy
cHJldEtleUV2ZW50PihkZWNvZGVyLCAqcmVwbHlFbmNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6aW50
ZXJwcmV0S2V5RXZlbnQpOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisgICAgVU5V
U0VEX1BBUkFNKGNvbm5lY3Rpb24pOworICAgIFVOVVNFRF9QQVJBTShkZWNvZGVyKTsKKyAgICBV
TlVTRURfUEFSQU0ocmVwbHlFbmNvZGVyKTsKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKworI2VuZGlmIC8vIChFTkFCTEUoV0VCS0lUMikg
JiYgKE5FU1RFRF9NQVNURVJfQ09ORElUSU9OIHx8IE1BU1RFUl9PUiAmJiBNQVNURVJfQU5EKSkK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy90ZXN0LWxlZ2FjeU1lc3NhZ2VzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9TY3JpcHRzL3Rlc3QtbGVnYWN5TWVzc2FnZXMuaAkobm9u
ZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvdGVzdC1sZWdhY3lNZXNzYWdlcy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEwLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorICogQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisgKiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLAorICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpZiAoRU5BQkxFKFdFQktJVDIpICYmIChORVNURURfTUFTVEVSX0NPTkRJ
VElPTiB8fCBNQVNURVJfT1IgJiYgTUFTVEVSX0FORCkpCisKKyNpbmNsdWRlICJBcmd1bWVudENv
ZGVycy5oIgorI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJNZXNzYWdlTmFtZXMu
aCIKKyNpbmNsdWRlICJQbHVnaW4uaCIKKyNpbmNsdWRlICJXZWJQYWdlTWVzc2FnZXNSZXBsaWVz
LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0xheWVyLmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9LZXlib2FyZEV2ZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QbHVnaW5EYXRhLmg+CisjaW5j
bHVkZSA8dXRpbGl0eT4KKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CisjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1l
c3BhY2UgSVBDIHsKK2NsYXNzIER1bW15VHlwZTsKK2NsYXNzIE1hY2hQb3J0OworfQorCituYW1l
c3BhY2UgV2ViS2l0IHsKK2NsYXNzIFdlYlByZWZlcmVuY2VzU3RvcmU7CitjbGFzcyBXZWJUb3Vj
aEV2ZW50OworfQorCituYW1lc3BhY2UgTWVzc2FnZXMgeworbmFtZXNwYWNlIFdlYlBhZ2Ugewor
CitzdGF0aWMgaW5saW5lIElQQzo6UmVjZWl2ZXJOYW1lIG1lc3NhZ2VSZWNlaXZlck5hbWUoKQor
eworICAgIHJldHVybiBJUEM6OlJlY2VpdmVyTmFtZTo6V2ViUGFnZTsKK30KKworY2xhc3MgTG9h
ZFVSTCB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGNvbnN0IFN0cmluZyY+IEFy
Z3VtZW50czsKKworICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJ
UEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX0xvYWRVUkw7IH0KKyAgICBzdGF0aWMgY29uc3QgYm9v
bCBpc1N5bmMgPSBmYWxzZTsKKworICAgIGV4cGxpY2l0IExvYWRVUkwoY29uc3QgU3RyaW5nJiB1
cmwpCisgICAgICAgIDogbV9hcmd1bWVudHModXJsKQorICAgIHsKKyAgICB9CisKKyAgICBjb25z
dCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9h
cmd1bWVudHM7CisgICAgfQorCitwcml2YXRlOgorICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsK
K307CisKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorY2xhc3MgTG9hZFNvbWV0aGluZyB7Citw
dWJsaWM6CisgICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGNvbnN0IFN0cmluZyY+IEFyZ3VtZW50czsK
KworICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3Nh
Z2VOYW1lOjpXZWJQYWdlX0xvYWRTb21ldGhpbmc7IH0KKyAgICBzdGF0aWMgY29uc3QgYm9vbCBp
c1N5bmMgPSBmYWxzZTsKKworICAgIGV4cGxpY2l0IExvYWRTb21ldGhpbmcoY29uc3QgU3RyaW5n
JiB1cmwpCisgICAgICAgIDogbV9hcmd1bWVudHModXJsKQorICAgIHsKKyAgICB9CisKKyAgICBj
b25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4g
bV9hcmd1bWVudHM7CisgICAgfQorCitwcml2YXRlOgorICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50
czsKK307CisjZW5kaWYKKworI2lmIChFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiAoTkVTVEVEX01F
U1NBR0VfQ09ORElUSU9OIHx8IFNPTUVfT1RIRVJfTUVTU0FHRV9DT05ESVRJT04pKQorY2xhc3Mg
VG91Y2hFdmVudCB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGNvbnN0IFdlYktp
dDo6V2ViVG91Y2hFdmVudCY+IEFyZ3VtZW50czsKKworICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VO
YW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX1RvdWNoRXZlbnQ7
IH0KKyAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKKworICAgIGV4cGxpY2l0
IFRvdWNoRXZlbnQoY29uc3QgV2ViS2l0OjpXZWJUb3VjaEV2ZW50JiBldmVudCkKKyAgICAgICAg
OiBtX2FyZ3VtZW50cyhldmVudCkKKyAgICB7CisgICAgfQorCisgICAgY29uc3QgQXJndW1lbnRz
JiBhcmd1bWVudHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwor
ICAgIH0KKworcHJpdmF0ZToKKyAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Cit9OworI2VuZGlm
CisKKyNpZiAoRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgKE5FU1RFRF9NRVNTQUdFX0NPTkRJVElP
TiAmJiBTT01FX09USEVSX01FU1NBR0VfQ09ORElUSU9OKSkKK2NsYXNzIEFkZEV2ZW50IHsKK3B1
YmxpYzoKKyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8Y29uc3QgV2ViS2l0OjpXZWJUb3VjaEV2ZW50
Jj4gQXJndW1lbnRzOworCisgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0
dXJuIElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfQWRkRXZlbnQ7IH0KKyAgICBzdGF0aWMgY29u
c3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKKworICAgIGV4cGxpY2l0IEFkZEV2ZW50KGNvbnN0IFdl
YktpdDo6V2ViVG91Y2hFdmVudCYgZXZlbnQpCisgICAgICAgIDogbV9hcmd1bWVudHMoZXZlbnQp
CisgICAgeworICAgIH0KKworICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QK
KyAgICB7CisgICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKKyAgICB9CisKK3ByaXZhdGU6Cisg
ICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOworfTsKKyNlbmRpZgorCisjaWYgRU5BQkxFKFRPVUNI
X0VWRU5UUykKK2NsYXNzIExvYWRTb21ldGhpbmdFbHNlIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVm
IHN0ZDo6dHVwbGU8Y29uc3QgU3RyaW5nJj4gQXJndW1lbnRzOworCisgICAgc3RhdGljIElQQzo6
TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfTG9h
ZFNvbWV0aGluZ0Vsc2U7IH0KKyAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsK
KworICAgIGV4cGxpY2l0IExvYWRTb21ldGhpbmdFbHNlKGNvbnN0IFN0cmluZyYgdXJsKQorICAg
ICAgICA6IG1fYXJndW1lbnRzKHVybCkKKyAgICB7CisgICAgfQorCisgICAgY29uc3QgQXJndW1l
bnRzJiBhcmd1bWVudHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRz
OworICAgIH0KKworcHJpdmF0ZToKKyAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Cit9OworI2Vu
ZGlmCisKK2NsYXNzIERpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbiB7CitwdWJsaWM6CisgICAgdHlw
ZWRlZiBzdGQ6OnR1cGxlPHVpbnQ2NF90LCB1aW50NjRfdCwgdWludDMyX3Q+IEFyZ3VtZW50czsK
KworICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3Nh
Z2VOYW1lOjpXZWJQYWdlX0RpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbjsgfQorICAgIHN0YXRpYyBj
b25zdCBib29sIGlzU3luYyA9IGZhbHNlOworCisgICAgRGlkUmVjZWl2ZVBvbGljeURlY2lzaW9u
KHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IGxpc3RlbmVySUQsIHVpbnQzMl90IHBvbGljeUFj
dGlvbikKKyAgICAgICAgOiBtX2FyZ3VtZW50cyhmcmFtZUlELCBsaXN0ZW5lcklELCBwb2xpY3lB
Y3Rpb24pCisgICAgeworICAgIH0KKworICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkg
Y29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKKyAgICB9CisKK3ByaXZh
dGU6CisgICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOworfTsKKworY2xhc3MgQ2xvc2UgeworcHVi
bGljOgorICAgIHR5cGVkZWYgc3RkOjp0dXBsZTw+IEFyZ3VtZW50czsKKworICAgIHN0YXRpYyBJ
UEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdl
X0Nsb3NlOyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7CisKKyAgICBj
b25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4g
bV9hcmd1bWVudHM7CisgICAgfQorCitwcml2YXRlOgorICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50
czsKK307CisKK2NsYXNzIFByZWZlcmVuY2VzRGlkQ2hhbmdlIHsKK3B1YmxpYzoKKyAgICB0eXBl
ZGVmIHN0ZDo6dHVwbGU8Y29uc3QgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlJj4gQXJndW1l
bnRzOworCisgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6
TWVzc2FnZU5hbWU6OldlYlBhZ2VfUHJlZmVyZW5jZXNEaWRDaGFuZ2U7IH0KKyAgICBzdGF0aWMg
Y29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKKworICAgIGV4cGxpY2l0IFByZWZlcmVuY2VzRGlk
Q2hhbmdlKGNvbnN0IFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUpCisgICAgICAg
IDogbV9hcmd1bWVudHMoc3RvcmUpCisgICAgeworICAgIH0KKworICAgIGNvbnN0IEFyZ3VtZW50
cyYgYXJndW1lbnRzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsK
KyAgICB9CisKK3ByaXZhdGU6CisgICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOworfTsKKworY2xh
c3MgU2VuZERvdWJsZUFuZEZsb2F0IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8
ZG91YmxlLCBmbG9hdD4gQXJndW1lbnRzOworCisgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUg
bmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfU2VuZERvdWJsZUFuZEZs
b2F0OyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7CisKKyAgICBTZW5k
RG91YmxlQW5kRmxvYXQoZG91YmxlIGQsIGZsb2F0IGYpCisgICAgICAgIDogbV9hcmd1bWVudHMo
ZCwgZikKKyAgICB7CisgICAgfQorCisgICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBj
b25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOworICAgIH0KKworcHJpdmF0
ZToKKyAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Cit9OworCitjbGFzcyBTZW5kSW50cyB7Citw
dWJsaWM6CisgICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mLCBj
b25zdCBWZWN0b3I8VmVjdG9yPHVpbnQ2NF90Pj4mPiBBcmd1bWVudHM7CisKKyAgICBzdGF0aWMg
SVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFn
ZV9TZW5kSW50czsgfQorICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOworCisg
ICAgU2VuZEludHMoY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgaW50cywgY29uc3QgVmVjdG9yPFZl
Y3Rvcjx1aW50NjRfdD4+JiBpbnRWZWN0b3JzKQorICAgICAgICA6IG1fYXJndW1lbnRzKGludHMs
IGludFZlY3RvcnMpCisgICAgeworICAgIH0KKworICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1l
bnRzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKKyAgICB9CisK
K3ByaXZhdGU6CisgICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOworfTsKKworY2xhc3MgQ3JlYXRl
UGx1Z2luIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8dWludDY0X3QsIGNvbnN0
IFdlYktpdDo6UGx1Z2luOjpQYXJhbWV0ZXJzJj4gQXJndW1lbnRzOworCisgICAgc3RhdGljIElQ
Qzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2Vf
Q3JlYXRlUGx1Z2luOyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gdHJ1ZTsKKwor
ICAgIHVzaW5nIFJlcGx5ID0gc3RkOjp0dXBsZTxib29sJj47CisgICAgdXNpbmcgUmVwbHlBcmd1
bWVudHMgPSBzdGQ6OnR1cGxlPGJvb2w+OworICAgIENyZWF0ZVBsdWdpbih1aW50NjRfdCBwbHVn
aW5JbnN0YW5jZUlELCBjb25zdCBXZWJLaXQ6OlBsdWdpbjo6UGFyYW1ldGVycyYgcGFyYW1ldGVy
cykKKyAgICAgICAgOiBtX2FyZ3VtZW50cyhwbHVnaW5JbnN0YW5jZUlELCBwYXJhbWV0ZXJzKQor
ICAgIHsKKyAgICB9CisKKyAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Cisg
ICAgeworICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7CisgICAgfQorCitwcml2YXRlOgorICAg
IEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKK307CisKK2NsYXNzIFJ1bkphdmFTY3JpcHRBbGVydCB7
CitwdWJsaWM6CisgICAgdHlwZWRlZiBzdGQ6OnR1cGxlPHVpbnQ2NF90LCBjb25zdCBTdHJpbmcm
PiBBcmd1bWVudHM7CisKKyAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1
cm4gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9SdW5KYXZhU2NyaXB0QWxlcnQ7IH0KKyAgICBz
dGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSB0cnVlOworCisgICAgdXNpbmcgUmVwbHkgPSBzdGQ6
OnR1cGxlPD47CisgICAgdXNpbmcgUmVwbHlBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPD47CisgICAg
UnVuSmF2YVNjcmlwdEFsZXJ0KHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSkKKyAgICAgICAgOiBtX2FyZ3VtZW50cyhmcmFtZUlELCBtZXNzYWdlKQorICAgIHsKKyAgICB9
CisKKyAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0CisgICAgeworICAgICAg
ICByZXR1cm4gbV9hcmd1bWVudHM7CisgICAgfQorCitwcml2YXRlOgorICAgIEFyZ3VtZW50cyBt
X2FyZ3VtZW50czsKK307CisKK2NsYXNzIEdldFBsdWdpbnMgeworcHVibGljOgorICAgIHR5cGVk
ZWYgc3RkOjp0dXBsZTxib29sPiBBcmd1bWVudHM7CisKKyAgICBzdGF0aWMgSVBDOjpNZXNzYWdl
TmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9HZXRQbHVnaW5z
OyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gdHJ1ZTsKKworICAgIHVzaW5nIFJl
cGx5ID0gc3RkOjp0dXBsZTxWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4mPjsKKyAgICB1c2lu
ZyBSZXBseUFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8VmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+
PjsKKyAgICBleHBsaWNpdCBHZXRQbHVnaW5zKGJvb2wgcmVmcmVzaCkKKyAgICAgICAgOiBtX2Fy
Z3VtZW50cyhyZWZyZXNoKQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdCBBcmd1bWVudHMmIGFy
Z3VtZW50cygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7CisgICAg
fQorCitwcml2YXRlOgorICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKK307CisKK2NsYXNzIEdl
dFBsdWdpblByb2Nlc3NDb25uZWN0aW9uIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIHN0ZDo6dHVw
bGU8Y29uc3QgU3RyaW5nJj4gQXJndW1lbnRzOworCisgICAgc3RhdGljIElQQzo6TWVzc2FnZU5h
bWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfR2V0UGx1Z2luUHJv
Y2Vzc0Nvbm5lY3Rpb247IH0KKyAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSB0cnVlOwor
CisgICAgdXNpbmcgRGVsYXllZFJlcGx5ID0gR2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25EZWxh
eWVkUmVwbHk7CisgICAgc3RhdGljIHZvaWQgc2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNv
ZGVyPiYmLCBJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBJUEM6OkNvbm5lY3Rpb246OkhhbmRsZSYg
Y29ubmVjdGlvbkhhbmRsZSk7CisgICAgdXNpbmcgUmVwbHkgPSBzdGQ6OnR1cGxlPElQQzo6Q29u
bmVjdGlvbjo6SGFuZGxlJj47CisgICAgdXNpbmcgUmVwbHlBcmd1bWVudHMgPSBzdGQ6OnR1cGxl
PElQQzo6Q29ubmVjdGlvbjo6SGFuZGxlPjsKKyAgICBleHBsaWNpdCBHZXRQbHVnaW5Qcm9jZXNz
Q29ubmVjdGlvbihjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgpCisgICAgICAgIDogbV9hcmd1bWVu
dHMocGx1Z2luUGF0aCkKKyAgICB7CisgICAgfQorCisgICAgY29uc3QgQXJndW1lbnRzJiBhcmd1
bWVudHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOworICAgIH0K
KworcHJpdmF0ZToKKyAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Cit9OworCitjbGFzcyBUZXN0
TXVsdGlwbGVBdHRyaWJ1dGVzIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8PiBB
cmd1bWVudHM7CisKKyAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4g
SVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9UZXN0TXVsdGlwbGVBdHRyaWJ1dGVzOyB9CisgICAg
c3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gdHJ1ZTsKKworICAgIHVzaW5nIERlbGF5ZWRSZXBs
eSA9IFRlc3RNdWx0aXBsZUF0dHJpYnV0ZXNEZWxheWVkUmVwbHk7CisgICAgc3RhdGljIHZvaWQg
c2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYmLCBJUEM6OkNvbm5lY3Rpb24mKTsK
KyAgICB1c2luZyBSZXBseSA9IHN0ZDo6dHVwbGU8PjsKKyAgICB1c2luZyBSZXBseUFyZ3VtZW50
cyA9IHN0ZDo6dHVwbGU8PjsKKyAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0
CisgICAgeworICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7CisgICAgfQorCitwcml2YXRlOgor
ICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKK307CisKK2NsYXNzIFRlc3RQYXJhbWV0ZXJBdHRy
aWJ1dGVzIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8dWludDY0X3QsIGRvdWJs
ZSwgZG91YmxlPiBBcmd1bWVudHM7CisKKyAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1l
KCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9UZXN0UGFyYW1ldGVyQXR0cmli
dXRlczsgfQorICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOworCisgICAgVGVz
dFBhcmFtZXRlckF0dHJpYnV0ZXModWludDY0X3QgZm9vLCBkb3VibGUgYmFyLCBkb3VibGUgYmF6
KQorICAgICAgICA6IG1fYXJndW1lbnRzKGZvbywgYmFyLCBiYXopCisgICAgeworICAgIH0KKwor
ICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJl
dHVybiBtX2FyZ3VtZW50czsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQXJndW1lbnRzIG1fYXJn
dW1lbnRzOworfTsKKworY2xhc3MgVGVtcGxhdGVUZXN0IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVm
IHN0ZDo6dHVwbGU8Y29uc3QgSGFzaE1hcDxTdHJpbmcsIHN0ZDo6cGFpcjxTdHJpbmcsIHVpbnQ2
NF90Pj4mPiBBcmd1bWVudHM7CisKKyAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkg
eyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9UZW1wbGF0ZVRlc3Q7IH0KKyAgICBz
dGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKKworICAgIGV4cGxpY2l0IFRlbXBsYXRl
VGVzdChjb25zdCBIYXNoTWFwPFN0cmluZywgc3RkOjpwYWlyPFN0cmluZywgdWludDY0X3Q+PiYg
YSkKKyAgICAgICAgOiBtX2FyZ3VtZW50cyhhKQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdCBB
cmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9hcmd1
bWVudHM7CisgICAgfQorCitwcml2YXRlOgorICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKK307
CisKK2NsYXNzIFNldFZpZGVvTGF5ZXJJRCB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBzdGQ6OnR1
cGxlPGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRCY+IEFyZ3Vt
ZW50czsKKworICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6
Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX1NldFZpZGVvTGF5ZXJJRDsgfQorICAgIHN0YXRpYyBjb25z
dCBib29sIGlzU3luYyA9IGZhbHNlOworCisgICAgZXhwbGljaXQgU2V0VmlkZW9MYXllcklEKGNv
bnN0IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRCYgdmlkZW9MYXllcklE
KQorICAgICAgICA6IG1fYXJndW1lbnRzKHZpZGVvTGF5ZXJJRCkKKyAgICB7CisgICAgfQorCisg
ICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0
dXJuIG1fYXJndW1lbnRzOworICAgIH0KKworcHJpdmF0ZToKKyAgICBBcmd1bWVudHMgbV9hcmd1
bWVudHM7Cit9OworCisjaWYgUExBVEZPUk0oTUFDKQorY2xhc3MgRGlkQ3JlYXRlV2ViUHJvY2Vz
c0Nvbm5lY3Rpb24geworcHVibGljOgorICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBJUEM6
Ok1hY2hQb3J0Jj4gQXJndW1lbnRzOworCisgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFt
ZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfRGlkQ3JlYXRlV2ViUHJvY2Vz
c0Nvbm5lY3Rpb247IH0KKyAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKKwor
ICAgIGV4cGxpY2l0IERpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKGNvbnN0IElQQzo6TWFj
aFBvcnQmIGNvbm5lY3Rpb25JZGVudGlmaWVyKQorICAgICAgICA6IG1fYXJndW1lbnRzKGNvbm5l
Y3Rpb25JZGVudGlmaWVyKQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdCBBcmd1bWVudHMmIGFy
Z3VtZW50cygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7CisgICAg
fQorCitwcml2YXRlOgorICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKK307CisjZW5kaWYKKwor
I2lmIFBMQVRGT1JNKE1BQykKK2NsYXNzIEludGVycHJldEtleUV2ZW50IHsKK3B1YmxpYzoKKyAg
ICB0eXBlZGVmIHN0ZDo6dHVwbGU8dWludDMyX3Q+IEFyZ3VtZW50czsKKworICAgIHN0YXRpYyBJ
UEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdl
X0ludGVycHJldEtleUV2ZW50OyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gdHJ1
ZTsKKworICAgIHVzaW5nIFJlcGx5ID0gc3RkOjp0dXBsZTxWZWN0b3I8V2ViQ29yZTo6S2V5cHJl
c3NDb21tYW5kPiY+OworICAgIHVzaW5nIFJlcGx5QXJndW1lbnRzID0gc3RkOjp0dXBsZTxWZWN0
b3I8V2ViQ29yZTo6S2V5cHJlc3NDb21tYW5kPj47CisgICAgZXhwbGljaXQgSW50ZXJwcmV0S2V5
RXZlbnQodWludDMyX3QgdHlwZSkKKyAgICAgICAgOiBtX2FyZ3VtZW50cyh0eXBlKQorICAgIHsK
KyAgICB9CisKKyAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0CisgICAgewor
ICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7CisgICAgfQorCitwcml2YXRlOgorICAgIEFyZ3Vt
ZW50cyBtX2FyZ3VtZW50czsKK307CisjZW5kaWYKKworI2lmIEVOQUJMRShERVBSRUNBVEVEX0ZF
QVRVUkUpCitjbGFzcyBEZXByZWNhdGVkT3BlcmF0aW9uIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVm
IHN0ZDo6dHVwbGU8Y29uc3QgSVBDOjpEdW1teVR5cGUmPiBBcmd1bWVudHM7CisKKyAgICBzdGF0
aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6V2Vi
UGFnZV9EZXByZWNhdGVkT3BlcmF0aW9uOyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5j
ID0gZmFsc2U7CisKKyAgICBleHBsaWNpdCBEZXByZWNhdGVkT3BlcmF0aW9uKGNvbnN0IElQQzo6
RHVtbXlUeXBlJiBkdW1teSkKKyAgICAgICAgOiBtX2FyZ3VtZW50cyhkdW1teSkKKyAgICB7Cisg
ICAgfQorCisgICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAorICAgIHsKKyAg
ICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOworICAgIH0KKworcHJpdmF0ZToKKyAgICBBcmd1bWVu
dHMgbV9hcmd1bWVudHM7Cit9OworI2VuZGlmCisKKyNpZiBFTkFCTEUoRVhQRVJJTUVOVEFMX0ZF
QVRVUkUpCitjbGFzcyBFeHBlcmltZW50YWxPcGVyYXRpb24geworcHVibGljOgorICAgIHR5cGVk
ZWYgc3RkOjp0dXBsZTxjb25zdCBJUEM6OkR1bW15VHlwZSY+IEFyZ3VtZW50czsKKworICAgIHN0
YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpX
ZWJQYWdlX0V4cGVyaW1lbnRhbE9wZXJhdGlvbjsgfQorICAgIHN0YXRpYyBjb25zdCBib29sIGlz
U3luYyA9IGZhbHNlOworCisgICAgZXhwbGljaXQgRXhwZXJpbWVudGFsT3BlcmF0aW9uKGNvbnN0
IElQQzo6RHVtbXlUeXBlJiBkdW1teSkKKyAgICAgICAgOiBtX2FyZ3VtZW50cyhkdW1teSkKKyAg
ICB7CisgICAgfQorCisgICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAorICAg
IHsKKyAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOworICAgIH0KKworcHJpdmF0ZToKKyAgICBB
cmd1bWVudHMgbV9hcmd1bWVudHM7Cit9OworI2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIFdlYlBh
Z2UKK30gLy8gbmFtZXNwYWNlIE1lc3NhZ2VzCisKKyNlbmRpZiAvLyAoRU5BQkxFKFdFQktJVDIp
ICYmIChORVNURURfTUFTVEVSX0NPTkRJVElPTiB8fCBNQVNURVJfT1IgJiYgTUFTVEVSX0FORCkp
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvdGVzdC1sZWdhY3lNZXNzYWdlc1JlcGxpZXMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvdGVzdC1sZWdhY3lNZXNzYWdl
c1JlcGxpZXMuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvdGVzdC1s
ZWdhY3lNZXNzYWdlc1JlcGxpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ0IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorICog
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
CisgKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiAoRU5BQkxFKFdFQktJVDIpICYm
IChORVNURURfTUFTVEVSX0NPTkRJVElPTiB8fCBNQVNURVJfT1IgJiYgTUFTVEVSX0FORCkpCisK
KyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiTWVzc2FnZU5hbWVzLmgiCisjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KKworCituYW1lc3BhY2UgTWVzc2FnZXMgeworbmFtZXNwYWNl
IFdlYlBhZ2UgeworCit1c2luZyBHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbkRlbGF5ZWRSZXBs
eSA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpDb25uZWN0aW9uOjpIYW5kbGUm
IGNvbm5lY3Rpb25IYW5kbGUpPjsKKwordXNpbmcgVGVzdE11bHRpcGxlQXR0cmlidXRlc0RlbGF5
ZWRSZXBseSA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT47CisKK30gLy8gbmFtZXNwYWNlIFdl
YlBhZ2UKK30gLy8gbmFtZXNwYWNlIE1lc3NhZ2VzCisKKyNlbmRpZiAvLyAoRU5BQkxFKFdFQktJ
VDIpICYmIChORVNURURfTUFTVEVSX0NPTkRJVElPTiB8fCBNQVNURVJfT1IgJiYgTUFTVEVSX0FO
RCkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvdGVzdC1zdXBlcmNsYXNzTWVzc2FnZVJl
Y2VpdmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvdGVzdC1zdXBl
cmNsYXNzTWVzc2FnZVJlY2VpdmVyLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0
L1NjcmlwdHMvdGVzdC1zdXBlcmNsYXNzTWVzc2FnZVJlY2VpdmVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDE4OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
CisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKworI2luY2x1ZGUgIldlYlBhZ2UuaCIKKworI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgi
CisjaW5jbHVkZSAiRGVjb2Rlci5oIgorI2luY2x1ZGUgIkhhbmRsZU1lc3NhZ2UuaCIKKyNpbmNs
dWRlICJUZXN0Q2xhc3NOYW1lLmgiCisjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKKyNpbmNsdWRl
ICJUZXN0VHdvU3RhdGVFbnVtLmgiCisjZW5kaWYKKyNpbmNsdWRlICJXZWJQYWdlTWVzc2FnZXMu
aCIKKyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KKworbmFtZXNwYWNlIE1lc3NhZ2VzIHsKKworbmFtZXNwYWNlIFdlYlBhZ2UgeworCisj
aWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKKwordm9pZCBUZXN0QXN5bmNNZXNzYWdlOjpjYWxsUmVw
bHkoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90
JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIE9wdGlvbmFsPHVpbnQ2NF90PiByZXN1
bHQ7CisgICAgZGVjb2RlciA+PiByZXN1bHQ7CisgICAgaWYgKCFyZXN1bHQpIHsKKyAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGNhbmNlbFJlcGx5KFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBjb21wbGV0aW9uSGFu
ZGxlcihXVEZNb3ZlKCpyZXN1bHQpKTsKK30KKwordm9pZCBUZXN0QXN5bmNNZXNzYWdlOjpjYW5j
ZWxSZXBseShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90JiYpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQoreworICAgIGNvbXBsZXRpb25IYW5kbGVyKElQQzo6QXN5bmNSZXBseUVycm9yPHVp
bnQ2NF90Pjo6Y3JlYXRlKCkpOworfQorCit2b2lkIFRlc3RBc3luY01lc3NhZ2U6OnNlbmQoc3Rk
Ojp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mJiBlbmNvZGVyLCBJUEM6OkNvbm5lY3Rpb24mIGNv
bm5lY3Rpb24sIHVpbnQ2NF90IHJlc3VsdCkKK3sKKyAgICAqZW5jb2RlciA8PCByZXN1bHQ7Cisg
ICAgY29ubmVjdGlvbi5zZW5kU3luY1JlcGx5KFdURk1vdmUoZW5jb2RlcikpOworfQorCisjZW5k
aWYKKworI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCisKK3ZvaWQgVGVzdEFzeW5jTWVzc2FnZVdp
dGhOb0FyZ3VtZW50czo6Y2FsbFJlcGx5KElQQzo6RGVjb2RlciYgZGVjb2RlciwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGNvbXBsZXRpb25I
YW5kbGVyKCk7Cit9CisKK3ZvaWQgVGVzdEFzeW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50czo6Y2Fu
Y2VsUmVwbHkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
eworICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Cit9CisKK3ZvaWQgVGVzdEFzeW5jTWVzc2FnZVdp
dGhOb0FyZ3VtZW50czo6c2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYmIGVuY29k
ZXIsIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKK3sKKyAgICBjb25uZWN0aW9uLnNlbmRT
eW5jUmVwbHkoV1RGTW92ZShlbmNvZGVyKSk7Cit9CisKKyNlbmRpZgorCisjaWYgRU5BQkxFKFRF
U1RfRkVBVFVSRSkKKwordm9pZCBUZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1lbnRz
OjpjYWxsUmVwbHkoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wmJiwgdWludDY0X3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgT3B0aW9u
YWw8Ym9vbD4gZmxhZzsKKyAgICBkZWNvZGVyID4+IGZsYWc7CisgICAgaWYgKCFmbGFnKSB7Cisg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBjYW5jZWxSZXBseShXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgT3B0aW9u
YWw8dWludDY0X3Q+IHZhbHVlOworICAgIGRlY29kZXIgPj4gdmFsdWU7CisgICAgaWYgKCF2YWx1
ZSkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgY2FuY2VsUmVwbHko
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICByZXR1cm47CisgICAgfQorICAg
IGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoKmZsYWcpLCBXVEZNb3ZlKCp2YWx1ZSkpOworfQor
Cit2b2lkIFRlc3RBc3luY01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHM6OmNhbmNlbFJlcGx5
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCYmLCB1aW50NjRfdCYmKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKK3sKKyAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkFzeW5jUmVwbHlFcnJvcjxi
b29sPjo6Y3JlYXRlKCksIElQQzo6QXN5bmNSZXBseUVycm9yPHVpbnQ2NF90Pjo6Y3JlYXRlKCkp
OworfQorCit2b2lkIFRlc3RBc3luY01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHM6OnNlbmQo
c3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mJiBlbmNvZGVyLCBJUEM6OkNvbm5lY3Rpb24m
IGNvbm5lY3Rpb24sIGJvb2wgZmxhZywgdWludDY0X3QgdmFsdWUpCit7CisgICAgKmVuY29kZXIg
PDwgZmxhZzsKKyAgICAqZW5jb2RlciA8PCB2YWx1ZTsKKyAgICBjb25uZWN0aW9uLnNlbmRTeW5j
UmVwbHkoV1RGTW92ZShlbmNvZGVyKSk7Cit9CisKKyNlbmRpZgorCit2b2lkIFRlc3RTeW5jTWVz
c2FnZTo6c2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYmIGVuY29kZXIsIElQQzo6
Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgdWludDhfdCByZXBseSkKK3sKKyAgICAqZW5jb2RlciA8
PCByZXBseTsKKyAgICBjb25uZWN0aW9uLnNlbmRTeW5jUmVwbHkoV1RGTW92ZShlbmNvZGVyKSk7
Cit9CisKK3ZvaWQgVGVzdFN5bmNocm9ub3VzTWVzc2FnZTo6c2VuZChzdGQ6OnVuaXF1ZV9wdHI8
SVBDOjpFbmNvZGVyPiYmIGVuY29kZXIsIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29u
c3QgT3B0aW9uYWw8V2ViS2l0OjpUZXN0Q2xhc3NOYW1lPiYgb3B0aW9uYWxSZXBseSkKK3sKKyAg
ICAqZW5jb2RlciA8PCBvcHRpb25hbFJlcGx5OworICAgIGNvbm5lY3Rpb24uc2VuZFN5bmNSZXBs
eShXVEZNb3ZlKGVuY29kZXIpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViUGFnZQorCit9IC8v
IG5hbWVzcGFjZSBNZXNzYWdlcworCituYW1lc3BhY2UgV2ViS2l0IHsKKwordm9pZCBXZWJQYWdl
OjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVj
b2RlciYgZGVjb2RlcikKK3sKKyAgICBhdXRvIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KTsKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpM
b2FkVVJMOjpuYW1lKCkpIHsKKyAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpX
ZWJQYWdlOjpMb2FkVVJMPihkZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6bG9hZFVSTCk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKKyAgICBpZiAoZGVj
b2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0QXN5bmNNZXNzYWdl
OjpuYW1lKCkpIHsKKyAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlQXN5bmM8TWVzc2FnZXM6Oldl
YlBhZ2U6OlRlc3RBc3luY01lc3NhZ2U+KGNvbm5lY3Rpb24sIGRlY29kZXIsIHRoaXMsICZXZWJQ
YWdlOjp0ZXN0QXN5bmNNZXNzYWdlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgor
I2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9
PSBNZXNzYWdlczo6V2ViUGFnZTo6VGVzdEFzeW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50czo6bmFt
ZSgpKSB7CisgICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZUFzeW5jPE1lc3NhZ2VzOjpXZWJQYWdl
OjpUZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJndW1lbnRzPihjb25uZWN0aW9uLCBkZWNvZGVyLCB0
aGlzLCAmV2ViUGFnZTo6dGVzdEFzeW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50cyk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisjZW5kaWYKKyNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQorICAgIGlm
IChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RBc3luY01l
c3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHM6Om5hbWUoKSkgeworICAgICAgICBJUEM6OmhhbmRs
ZU1lc3NhZ2VBc3luYzxNZXNzYWdlczo6V2ViUGFnZTo6VGVzdEFzeW5jTWVzc2FnZVdpdGhNdWx0
aXBsZUFyZ3VtZW50cz4oY29ubmVjdGlvbiwgZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OnRlc3RB
c3luY01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHMpOworICAgICAgICByZXR1cm47CisgICAg
fQorI2VuZGlmCisgICAgV2ViUGFnZUJhc2U6OmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24s
IGRlY29kZXIpOworfQorCit2b2lkIFdlYlBhZ2U6OmRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2Rlciwgc3RkOjp1bmlx
dWVfcHRyPElQQzo6RW5jb2Rlcj4mIHJlcGx5RW5jb2RlcikKK3sKKyAgICBhdXRvIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKTsKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09
IE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0U3luY01lc3NhZ2U6Om5hbWUoKSkgeworICAgICAgICBJ
UEM6OmhhbmRsZU1lc3NhZ2VTeW5jaHJvbm91czxNZXNzYWdlczo6V2ViUGFnZTo6VGVzdFN5bmNN
ZXNzYWdlPihjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIsIHRoaXMsICZXZWJQYWdl
Ojp0ZXN0U3luY01lc3NhZ2UpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChkZWNv
ZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RTeW5jaHJvbm91c01l
c3NhZ2U6Om5hbWUoKSkgeworICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2VTeW5jaHJvbm91czxN
ZXNzYWdlczo6V2ViUGFnZTo6VGVzdFN5bmNocm9ub3VzTWVzc2FnZT4oY29ubmVjdGlvbiwgZGVj
b2RlciwgcmVwbHlFbmNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6dGVzdFN5bmNocm9ub3VzTWVzc2Fn
ZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24p
OworICAgIFVOVVNFRF9QQVJBTShkZWNvZGVyKTsKKyAgICBVTlVTRURfUEFSQU0ocmVwbHlFbmNv
ZGVyKTsKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CisKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy90ZXN0LXN1cGVyY2xhc3NNZXNzYWdl
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy90ZXN0LXN1cGVyY2xhc3NN
ZXNzYWdlcy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy90ZXN0LXN1
cGVyY2xhc3NNZXNzYWdlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjAxIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorICogQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisg
KiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLAorICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJBcmd1bWVudENvZGVycy5o
IgorI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJNZXNzYWdlTmFtZXMuaCIKKyNp
bmNsdWRlICJUZXN0Q2xhc3NOYW1lLmgiCisjaW5jbHVkZSAiV2ViUGFnZU1lc3NhZ2VzUmVwbGll
cy5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+
CisjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworZW51bSBjbGFzcyBUZXN0VHdv
U3RhdGVFbnVtIDogYm9vbDsKK30KKworbmFtZXNwYWNlIE1lc3NhZ2VzIHsKK25hbWVzcGFjZSBX
ZWJQYWdlIHsKKworc3RhdGljIGlubGluZSBJUEM6OlJlY2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2
ZXJOYW1lKCkKK3sKKyAgICByZXR1cm4gSVBDOjpSZWNlaXZlck5hbWU6OldlYlBhZ2U7Cit9CisK
K2NsYXNzIExvYWRVUkwgeworcHVibGljOgorICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBT
dHJpbmcmPiBBcmd1bWVudHM7CisKKyAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkg
eyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9Mb2FkVVJMOyB9CisgICAgc3RhdGlj
IGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7CisKKyAgICBleHBsaWNpdCBMb2FkVVJMKGNvbnN0
IFN0cmluZyYgdXJsKQorICAgICAgICA6IG1fYXJndW1lbnRzKHVybCkKKyAgICB7CisgICAgfQor
CisgICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAorICAgIHsKKyAgICAgICAg
cmV0dXJuIG1fYXJndW1lbnRzOworICAgIH0KKworcHJpdmF0ZToKKyAgICBBcmd1bWVudHMgbV9h
cmd1bWVudHM7Cit9OworCisjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKK2NsYXNzIFRlc3RBc3lu
Y01lc3NhZ2UgeworcHVibGljOgorICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxXZWJLaXQ6OlRlc3RU
d29TdGF0ZUVudW0+IEFyZ3VtZW50czsKKworICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5h
bWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX1Rlc3RBc3luY01lc3NhZ2U7
IH0KKyAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKKworICAgIHN0YXRpYyB2
b2lkIGNhbGxSZXBseShJUEM6OkRlY29kZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2
NF90JiYpPiYmKTsKKyAgICBzdGF0aWMgdm9pZCBjYW5jZWxSZXBseShDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKHVpbnQ2NF90JiYpPiYmKTsKKyAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBhc3lu
Y01lc3NhZ2VSZXBseU5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX1Rl
c3RBc3luY01lc3NhZ2VSZXBseTsgfQorICAgIHVzaW5nIEFzeW5jUmVwbHkgPSBUZXN0QXN5bmNN
ZXNzYWdlQXN5bmNSZXBseTsKKyAgICBzdGF0aWMgdm9pZCBzZW5kKHN0ZDo6dW5pcXVlX3B0cjxJ
UEM6OkVuY29kZXI+JiYsIElQQzo6Q29ubmVjdGlvbiYsIHVpbnQ2NF90IHJlc3VsdCk7CisgICAg
dXNpbmcgUmVwbHkgPSBzdGQ6OnR1cGxlPHVpbnQ2NF90Jj47CisgICAgdXNpbmcgUmVwbHlBcmd1
bWVudHMgPSBzdGQ6OnR1cGxlPHVpbnQ2NF90PjsKKyAgICBleHBsaWNpdCBUZXN0QXN5bmNNZXNz
YWdlKFdlYktpdDo6VGVzdFR3b1N0YXRlRW51bSB0d29TdGF0ZUVudW0pCisgICAgICAgIDogbV9h
cmd1bWVudHModHdvU3RhdGVFbnVtKQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdCBBcmd1bWVu
dHMmIGFyZ3VtZW50cygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7
CisgICAgfQorCitwcml2YXRlOgorICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKK307CisjZW5k
aWYKKworI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCitjbGFzcyBUZXN0QXN5bmNNZXNzYWdlV2l0
aE5vQXJndW1lbnRzIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8PiBBcmd1bWVu
dHM7CisKKyAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpN
ZXNzYWdlTmFtZTo6V2ViUGFnZV9UZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJndW1lbnRzOyB9Cisg
ICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7CisKKyAgICBzdGF0aWMgdm9pZCBj
YWxsUmVwbHkoSVBDOjpEZWNvZGVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAg
ICBzdGF0aWMgdm9pZCBjYW5jZWxSZXBseShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwor
ICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIGFzeW5jTWVzc2FnZVJlcGx5TmFtZSgpIHsgcmV0
dXJuIElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVzdEFzeW5jTWVzc2FnZVdpdGhOb0FyZ3Vt
ZW50c1JlcGx5OyB9CisgICAgdXNpbmcgQXN5bmNSZXBseSA9IFRlc3RBc3luY01lc3NhZ2VXaXRo
Tm9Bcmd1bWVudHNBc3luY1JlcGx5OworICAgIHN0YXRpYyB2b2lkIHNlbmQoc3RkOjp1bmlxdWVf
cHRyPElQQzo6RW5jb2Rlcj4mJiwgSVBDOjpDb25uZWN0aW9uJik7CisgICAgdXNpbmcgUmVwbHkg
PSBzdGQ6OnR1cGxlPD47CisgICAgdXNpbmcgUmVwbHlBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPD47
CisgICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAorICAgIHsKKyAgICAgICAg
cmV0dXJuIG1fYXJndW1lbnRzOworICAgIH0KKworcHJpdmF0ZToKKyAgICBBcmd1bWVudHMgbV9h
cmd1bWVudHM7Cit9OworI2VuZGlmCisKKyNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQorY2xhc3Mg
VGVzdEFzeW5jTWVzc2FnZVdpdGhNdWx0aXBsZUFyZ3VtZW50cyB7CitwdWJsaWM6CisgICAgdHlw
ZWRlZiBzdGQ6OnR1cGxlPD4gQXJndW1lbnRzOworCisgICAgc3RhdGljIElQQzo6TWVzc2FnZU5h
bWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVzdEFzeW5jTWVz
c2FnZVdpdGhNdWx0aXBsZUFyZ3VtZW50czsgfQorICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3lu
YyA9IGZhbHNlOworCisgICAgc3RhdGljIHZvaWQgY2FsbFJlcGx5KElQQzo6RGVjb2RlciYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCYmLCB1aW50NjRfdCYmKT4mJik7CisgICAgc3RhdGlj
IHZvaWQgY2FuY2VsUmVwbHkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sJiYsIHVpbnQ2NF90
JiYpPiYmKTsKKyAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBhc3luY01lc3NhZ2VSZXBseU5h
bWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX1Rlc3RBc3luY01lc3NhZ2VX
aXRoTXVsdGlwbGVBcmd1bWVudHNSZXBseTsgfQorICAgIHVzaW5nIEFzeW5jUmVwbHkgPSBUZXN0
QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1lbnRzQXN5bmNSZXBseTsKKyAgICBzdGF0aWMg
dm9pZCBzZW5kKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiYsIElQQzo6Q29ubmVjdGlv
biYsIGJvb2wgZmxhZywgdWludDY0X3QgdmFsdWUpOworICAgIHVzaW5nIFJlcGx5ID0gc3RkOjp0
dXBsZTxib29sJiwgdWludDY0X3QmPjsKKyAgICB1c2luZyBSZXBseUFyZ3VtZW50cyA9IHN0ZDo6
dHVwbGU8Ym9vbCwgdWludDY0X3Q+OworICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkg
Y29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKKyAgICB9CisKK3ByaXZh
dGU6CisgICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOworfTsKKyNlbmRpZgorCitjbGFzcyBUZXN0
U3luY01lc3NhZ2UgeworcHVibGljOgorICAgIHR5cGVkZWYgc3RkOjp0dXBsZTx1aW50MzJfdD4g
QXJndW1lbnRzOworCisgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJu
IElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVzdFN5bmNNZXNzYWdlOyB9CisgICAgc3RhdGlj
IGNvbnN0IGJvb2wgaXNTeW5jID0gdHJ1ZTsKKworICAgIHVzaW5nIERlbGF5ZWRSZXBseSA9IFRl
c3RTeW5jTWVzc2FnZURlbGF5ZWRSZXBseTsKKyAgICBzdGF0aWMgdm9pZCBzZW5kKHN0ZDo6dW5p
cXVlX3B0cjxJUEM6OkVuY29kZXI+JiYsIElQQzo6Q29ubmVjdGlvbiYsIHVpbnQ4X3QgcmVwbHkp
OworICAgIHVzaW5nIFJlcGx5ID0gc3RkOjp0dXBsZTx1aW50OF90Jj47CisgICAgdXNpbmcgUmVw
bHlBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPHVpbnQ4X3Q+OworICAgIGV4cGxpY2l0IFRlc3RTeW5j
TWVzc2FnZSh1aW50MzJfdCBwYXJhbSkKKyAgICAgICAgOiBtX2FyZ3VtZW50cyhwYXJhbSkKKyAg
ICB7CisgICAgfQorCisgICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAorICAg
IHsKKyAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOworICAgIH0KKworcHJpdmF0ZToKKyAgICBB
cmd1bWVudHMgbV9hcmd1bWVudHM7Cit9OworCitjbGFzcyBUZXN0U3luY2hyb25vdXNNZXNzYWdl
IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8Ym9vbD4gQXJndW1lbnRzOworCisg
ICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5h
bWU6OldlYlBhZ2VfVGVzdFN5bmNocm9ub3VzTWVzc2FnZTsgfQorICAgIHN0YXRpYyBjb25zdCBi
b29sIGlzU3luYyA9IHRydWU7CisKKyAgICB1c2luZyBEZWxheWVkUmVwbHkgPSBUZXN0U3luY2hy
b25vdXNNZXNzYWdlRGVsYXllZFJlcGx5OworICAgIHN0YXRpYyB2b2lkIHNlbmQoc3RkOjp1bmlx
dWVfcHRyPElQQzo6RW5jb2Rlcj4mJiwgSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgT3B0aW9uYWw8
V2ViS2l0OjpUZXN0Q2xhc3NOYW1lPiYgb3B0aW9uYWxSZXBseSk7CisgICAgdXNpbmcgUmVwbHkg
PSBzdGQ6OnR1cGxlPE9wdGlvbmFsPFdlYktpdDo6VGVzdENsYXNzTmFtZT4mPjsKKyAgICB1c2lu
ZyBSZXBseUFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8T3B0aW9uYWw8V2ViS2l0OjpUZXN0Q2xhc3NO
YW1lPj47CisgICAgZXhwbGljaXQgVGVzdFN5bmNocm9ub3VzTWVzc2FnZShib29sIHZhbHVlKQor
ICAgICAgICA6IG1fYXJndW1lbnRzKHZhbHVlKQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdCBB
cmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9hcmd1
bWVudHM7CisgICAgfQorCitwcml2YXRlOgorICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYlBhZ2UKK30gLy8gbmFtZXNwYWNlIE1lc3NhZ2VzCkluZGV4
OiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvdGVzdC1zdXBlcmNsYXNzTWVzc2FnZXNSZXBsaWVzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TY3JpcHRzL3Rlc3Qtc3VwZXJjbGFzc01lc3Nh
Z2VzUmVwbGllcy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy90ZXN0
LXN1cGVyY2xhc3NNZXNzYWdlc1JlcGxpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUz
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UgorICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSCisgKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorICogT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNZXNzYWdl
TmFtZXMuaCIKKyNpbmNsdWRlICJUZXN0Q2xhc3NOYW1lLmgiCisjaW5jbHVkZSA8d3RmL0Zvcndh
cmQuaD4KKyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KKworCituYW1lc3BhY2UgTWVzc2FnZXMg
eworbmFtZXNwYWNlIFdlYlBhZ2UgeworCisjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKK3VzaW5n
IFRlc3RBc3luY01lc3NhZ2VBc3luY1JlcGx5ID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50
NjRfdCByZXN1bHQpPjsKKyNlbmRpZgorCisjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKK3VzaW5n
IFRlc3RBc3luY01lc3NhZ2VXaXRoTm9Bcmd1bWVudHNBc3luY1JlcGx5ID0gQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPjsKKyNlbmRpZgorCisjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKK3VzaW5n
IFRlc3RBc3luY01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHNBc3luY1JlcGx5ID0gQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sIGZsYWcsIHVpbnQ2NF90IHZhbHVlKT47CisjZW5kaWYKKwor
dXNpbmcgVGVzdFN5bmNNZXNzYWdlRGVsYXllZFJlcGx5ID0gQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCh1aW50OF90IHJlcGx5KT47CisKK3VzaW5nIFRlc3RTeW5jaHJvbm91c01lc3NhZ2VEZWxheWVk
UmVwbHkgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IE9wdGlvbmFsPFdlYktpdDo6VGVz
dENsYXNzTmFtZT4mIG9wdGlvbmFsUmVwbHkpPjsKKworfSAvLyBuYW1lc3BhY2UgV2ViUGFnZQor
fSAvLyBuYW1lc3BhY2UgTWVzc2FnZXMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy90ZXN0
TWVzc2FnZVJlY2VpdmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMv
dGVzdE1lc3NhZ2VSZWNlaXZlci5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9T
Y3JpcHRzL3Rlc3RNZXNzYWdlUmVjZWl2ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
MzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICog
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRl
ICJOb25lLmgiCisKKyNpbmNsdWRlICJEZWNvZGVyLmgiCisjaW5jbHVkZSAiSGFuZGxlTWVzc2Fn
ZS5oIgorI2luY2x1ZGUgIk5vbmVNZXNzYWdlcy5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKwpJbmRleDogU291cmNlL1dlYktpdC9TY3JpcHRzL3Rl
c3RNZXNzYWdlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy90ZXN0TWVz
c2FnZXMuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvdGVzdE1lc3Nh
Z2VzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAq
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJD
b25uZWN0aW9uLmgiCisjaW5jbHVkZSAiTWVzc2FnZU5hbWVzLmgiCisjaW5jbHVkZSAiTm9uZU1l
c3NhZ2VzUmVwbGllcy5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3Rm
L1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CisKKworbmFtZXNwYWNlIE1lc3NhZ2VzIHsKK25hbWVz
cGFjZSBOb25lIHsKKworc3RhdGljIGlubGluZSBJUEM6OlJlY2VpdmVyTmFtZSBtZXNzYWdlUmVj
ZWl2ZXJOYW1lKCkKK3sKKyAgICByZXR1cm4gSVBDOjpSZWNlaXZlck5hbWU6Ok5vbmU7Cit9CisK
KworfSAvLyBuYW1lc3BhY2UgTm9uZQorfSAvLyBuYW1lc3BhY2UgTWVzc2FnZXMKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvU2NyaXB0cy90ZXN0TWVzc2FnZXNSZXBsaWVzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9TY3JpcHRzL3Rlc3RNZXNzYWdlc1JlcGxpZXMuaAkobm9uZXhpc3RlbnQp
CisrKyBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvdGVzdE1lc3NhZ2VzUmVwbGllcy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
KyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2luY2x1ZGUgIk1lc3NhZ2VOYW1lcy5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisK
KworbmFtZXNwYWNlIE1lc3NhZ2VzIHsKK25hbWVzcGFjZSBOb25lIHsKKworCit9IC8vIG5hbWVz
cGFjZSBOb25lCit9IC8vIG5hbWVzcGFjZSBNZXNzYWdlcwpJbmRleDogU291cmNlL1dlYktpdC9T
Y3JpcHRzL3dlYmtpdC9MZWdhY3lNZXNzYWdlUmVjZWl2ZXItZXhwZWN0ZWQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvTGVnYWN5TWVzc2FnZVJlY2VpdmVy
LWV4cGVjdGVkLmNwcAkocmV2aXNpb24gMjYwNzY0KQorKysgU291cmNlL1dlYktpdC9TY3JpcHRz
L3dlYmtpdC9MZWdhY3lNZXNzYWdlUmVjZWl2ZXItZXhwZWN0ZWQuY3BwCShub25leGlzdGVudCkK
QEAgLTEsMjAzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnIEFORAotICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SCi0gKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0gKiBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgot
ICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIKLSAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0gKiBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgi
Ci0KLSNpZiAoRU5BQkxFKFdFQktJVDIpICYmIChORVNURURfTUFTVEVSX0NPTkRJVElPTiB8fCBN
QVNURVJfT1IgJiYgTUFTVEVSX0FORCkpCi0KLSNpbmNsdWRlICJXZWJQYWdlLmgiCi0KLSNpbmNs
dWRlICJBcmd1bWVudENvZGVycy5oIgotI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKLSNpbmNsdWRl
ICJEZWNvZGVyLmgiCi0jaWYgRU5BQkxFKERFUFJFQ0FURURfRkVBVFVSRSkgfHwgRU5BQkxFKEVY
UEVSSU1FTlRBTF9GRUFUVVJFKQotI2luY2x1ZGUgIkR1bW15VHlwZS5oIgotI2VuZGlmCi0jaW5j
bHVkZSAiSGFuZGxlTWVzc2FnZS5oIgotI2lmIFBMQVRGT1JNKE1BQykKLSNpbmNsdWRlICJNYWNo
UG9ydC5oIgotI2VuZGlmCi0jaW5jbHVkZSAiUGx1Z2luLmgiCi0jaW5jbHVkZSAiV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmgiCi0jaWYgKEVOQUJMRShUT1VDSF9FVkVOVFMpICYmIChORVNURURfTUVT
U0FHRV9DT05ESVRJT04gJiYgU09NRV9PVEhFUl9NRVNTQUdFX0NPTkRJVElPTikpIHx8IChFTkFC
TEUoVE9VQ0hfRVZFTlRTKSAmJiAoTkVTVEVEX01FU1NBR0VfQ09ORElUSU9OIHx8IFNPTUVfT1RI
RVJfTUVTU0FHRV9DT05ESVRJT04pKQotI2luY2x1ZGUgIldlYkV2ZW50LmgiCi0jZW5kaWYKLSNp
bmNsdWRlICJXZWJQYWdlTWVzc2FnZXMuaCIKLSNpbmNsdWRlICJXZWJQcmVmZXJlbmNlc1N0b3Jl
LmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0xheWVyLmg+Ci0jaWYgUExBVEZPUk0oTUFD
KQotI2luY2x1ZGUgPFdlYkNvcmUvS2V5Ym9hcmRFdmVudC5oPgotI2VuZGlmCi0jaW5jbHVkZSA8
V2ViQ29yZS9QbHVnaW5EYXRhLmg+Ci0jaW5jbHVkZSA8dXRpbGl0eT4KLSNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIE1lc3NhZ2VzIHsKLQotbmFtZXNwYWNlIFdlYlBhZ2Ug
ewotCi12b2lkIEdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpzZW5kKHN0ZDo6dW5pcXVlX3B0
cjxJUEM6OkVuY29kZXI+JiYgZW5jb2RlciwgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBj
b25zdCBJUEM6OkNvbm5lY3Rpb246OkhhbmRsZSYgY29ubmVjdGlvbkhhbmRsZSkKLXsKLSAgICAq
ZW5jb2RlciA8PCBjb25uZWN0aW9uSGFuZGxlOwotICAgIGNvbm5lY3Rpb24uc2VuZFN5bmNSZXBs
eShXVEZNb3ZlKGVuY29kZXIpKTsKLX0KLQotdm9pZCBUZXN0TXVsdGlwbGVBdHRyaWJ1dGVzOjpz
ZW5kKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiYgZW5jb2RlciwgSVBDOjpDb25uZWN0
aW9uJiBjb25uZWN0aW9uKQotewotICAgIGNvbm5lY3Rpb24uc2VuZFN5bmNSZXBseShXVEZNb3Zl
KGVuY29kZXIpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViUGFnZQotCi19IC8vIG5hbWVzcGFj
ZSBNZXNzYWdlcwotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotdm9pZCBXZWJQYWdlOjpkaWRSZWNl
aXZlV2ViUGFnZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29k
ZXImIGRlY29kZXIpCi17Ci0gICAgYXV0byBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyk7
Ci0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6TG9h
ZFVSTDo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2Vi
UGFnZTo6TG9hZFVSTD4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OmxvYWRVUkwpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCi0gICAgaWYgKGRlY29k
ZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFNvbWV0aGluZzo6bmFt
ZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6TG9h
ZFNvbWV0aGluZz4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OmxvYWRTb21ldGhpbmcpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlmCi0jaWYgKEVOQUJMRShUT1VDSF9FVkVOVFMpICYm
IChORVNURURfTUVTU0FHRV9DT05ESVRJT04gfHwgU09NRV9PVEhFUl9NRVNTQUdFX0NPTkRJVElP
TikpCi0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6
VG91Y2hFdmVudDo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdl
czo6V2ViUGFnZTo6VG91Y2hFdmVudD4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OnRvdWNoRXZl
bnQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlmCi0jaWYgKEVOQUJMRShUT1VDSF9F
VkVOVFMpICYmIChORVNURURfTUVTU0FHRV9DT05ESVRJT04gJiYgU09NRV9PVEhFUl9NRVNTQUdF
X0NPTkRJVElPTikpCi0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6
V2ViUGFnZTo6QWRkRXZlbnQ6Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8
TWVzc2FnZXM6OldlYlBhZ2U6OkFkZEV2ZW50PihkZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6YWRk
RXZlbnQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlmCi0jaWYgRU5BQkxFKFRPVUNI
X0VWRU5UUykKLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQ
YWdlOjpMb2FkU29tZXRoaW5nRWxzZTo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVz
c2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFNvbWV0aGluZ0Vsc2U+KGRlY29kZXIsIHRoaXMs
ICZXZWJQYWdlOjpsb2FkU29tZXRoaW5nRWxzZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0j
ZW5kaWYKLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdl
OjpEaWRSZWNlaXZlUG9saWN5RGVjaXNpb246Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRs
ZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbj4oZGVj
b2RlciwgdGhpcywgJldlYlBhZ2U6OmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbik7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdl
czo6V2ViUGFnZTo6Q2xvc2U6Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8
TWVzc2FnZXM6OldlYlBhZ2U6OkNsb3NlPihkZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6Y2xvc2Up
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkg
PT0gTWVzc2FnZXM6OldlYlBhZ2U6OlByZWZlcmVuY2VzRGlkQ2hhbmdlOjpuYW1lKCkpIHsKLSAg
ICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpQcmVmZXJlbmNlc0Rp
ZENoYW5nZT4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OnByZWZlcmVuY2VzRGlkQ2hhbmdlKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09
IE1lc3NhZ2VzOjpXZWJQYWdlOjpTZW5kRG91YmxlQW5kRmxvYXQ6Om5hbWUoKSkgewotICAgICAg
ICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OlNlbmREb3VibGVBbmRGbG9h
dD4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OnNlbmREb3VibGVBbmRGbG9hdCk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdl
czo6V2ViUGFnZTo6U2VuZEludHM6Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3Nh
Z2U8TWVzc2FnZXM6OldlYlBhZ2U6OlNlbmRJbnRzPihkZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6
c2VuZEludHMpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChkZWNvZGVyLm1lc3Nh
Z2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RQYXJhbWV0ZXJBdHRyaWJ1dGVzOjpu
YW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpU
ZXN0UGFyYW1ldGVyQXR0cmlidXRlcz4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OnRlc3RQYXJh
bWV0ZXJBdHRyaWJ1dGVzKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoZGVjb2Rl
ci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpUZW1wbGF0ZVRlc3Q6Om5hbWUo
KSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OlRlbXBs
YXRlVGVzdD4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OnRlbXBsYXRlVGVzdCk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdl
czo6V2ViUGFnZTo6U2V0VmlkZW9MYXllcklEOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5k
bGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRWaWRlb0xheWVySUQ+KGRlY29kZXIsIHRo
aXMsICZXZWJQYWdlOjpzZXRWaWRlb0xheWVySUQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
I2lmIFBMQVRGT1JNKE1BQykKLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3Nh
Z2VzOjpXZWJQYWdlOjpEaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbjo6bmFtZSgpKSB7Ci0g
ICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6RGlkQ3JlYXRlV2Vi
UHJvY2Vzc0Nvbm5lY3Rpb24+KGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjpkaWRDcmVhdGVXZWJQ
cm9jZXNzQ29ubmVjdGlvbik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYKLSNpZiBF
TkFCTEUoREVQUkVDQVRFRF9GRUFUVVJFKQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkg
PT0gTWVzc2FnZXM6OldlYlBhZ2U6OkRlcHJlY2F0ZWRPcGVyYXRpb246Om5hbWUoKSkgewotICAg
ICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OkRlcHJlY2F0ZWRPcGVy
YXRpb24+KGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjpkZXByZWNhdGVkT3BlcmF0aW9uKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLSNlbmRpZgotI2lmIEVOQUJMRShFWFBFUklNRU5UQUxfRkVB
VFVSRSkKLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdl
OjpFeHBlcmltZW50YWxPcGVyYXRpb246Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1l
c3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OkV4cGVyaW1lbnRhbE9wZXJhdGlvbj4oZGVjb2Rlciwg
dGhpcywgJldlYlBhZ2U6OmV4cGVyaW1lbnRhbE9wZXJhdGlvbik7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0jZW5kaWYKLSAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7Ci0gICAgVU5VU0VE
X1BBUkFNKGRlY29kZXIpOwotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi12b2lkIFdl
YlBhZ2U6OmRpZFJlY2VpdmVTeW5jV2ViUGFnZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25u
ZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29k
ZXI+JiByZXBseUVuY29kZXIpCi17Ci0gICAgYXV0byBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyk7Ci0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFn
ZTo6Q3JlYXRlUGx1Z2luOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1l
c3NhZ2VzOjpXZWJQYWdlOjpDcmVhdGVQbHVnaW4+KGRlY29kZXIsICpyZXBseUVuY29kZXIsIHRo
aXMsICZXZWJQYWdlOjpjcmVhdGVQbHVnaW4pOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAg
IGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OlJ1bkphdmFT
Y3JpcHRBbGVydDo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdl
czo6V2ViUGFnZTo6UnVuSmF2YVNjcmlwdEFsZXJ0PihkZWNvZGVyLCAqcmVwbHlFbmNvZGVyLCB0
aGlzLCAmV2ViUGFnZTo6cnVuSmF2YVNjcmlwdEFsZXJ0KTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpH
ZXRQbHVnaW5zOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2Vz
OjpXZWJQYWdlOjpHZXRQbHVnaW5zPihkZWNvZGVyLCAqcmVwbHlFbmNvZGVyLCB0aGlzLCAmV2Vi
UGFnZTo6Z2V0UGx1Z2lucyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKGRlY29k
ZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6R2V0UGx1Z2luUHJvY2Vzc0Nv
bm5lY3Rpb246Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2VTeW5jaHJvbm91
czxNZXNzYWdlczo6V2ViUGFnZTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24+KGNvbm5lY3Rp
b24sIGRlY29kZXIsIHJlcGx5RW5jb2RlciwgdGhpcywgJldlYlBhZ2U6OmdldFBsdWdpblByb2Nl
c3NDb25uZWN0aW9uKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoZGVjb2Rlci5t
ZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0TXVsdGlwbGVBdHRyaWJ1dGVz
OjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlU3luY2hyb25vdXNXYW50c0Nv
bm5lY3Rpb248TWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RNdWx0aXBsZUF0dHJpYnV0ZXM+KGNvbm5l
Y3Rpb24sIGRlY29kZXIsIHJlcGx5RW5jb2RlciwgdGhpcywgJldlYlBhZ2U6OnRlc3RNdWx0aXBs
ZUF0dHJpYnV0ZXMpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2lmIFBMQVRGT1JNKE1BQykK
LSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpJbnRl
cnByZXRLZXlFdmVudDo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNz
YWdlczo6V2ViUGFnZTo6SW50ZXJwcmV0S2V5RXZlbnQ+KGRlY29kZXIsICpyZXBseUVuY29kZXIs
IHRoaXMsICZXZWJQYWdlOjppbnRlcnByZXRLZXlFdmVudCk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0jZW5kaWYKLSAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7Ci0gICAgVU5VU0VEX1BB
UkFNKGRlY29kZXIpOwotICAgIFVOVVNFRF9QQVJBTShyZXBseUVuY29kZXIpOwotICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotCi0jZW5kaWYg
Ly8gKEVOQUJMRShXRUJLSVQyKSAmJiAoTkVTVEVEX01BU1RFUl9DT05ESVRJT04gfHwgTUFTVEVS
X09SICYmIE1BU1RFUl9BTkQpKQoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dlYktpdC9T
Y3JpcHRzL3dlYmtpdC9MZWdhY3lNZXNzYWdlUmVjZWl2ZXItZXhwZWN0ZWQuY3BwCl9fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X18KRGVsZXRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMSArMCwwICMjCi1uYXRpdmUKXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtp
dC9MZWdhY3lNZXNzYWdlcy1leHBlY3RlZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
U2NyaXB0cy93ZWJraXQvTGVnYWN5TWVzc2FnZXMtZXhwZWN0ZWQuaAkocmV2aXNpb24gMjYwNzY0
KQorKysgU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9MZWdhY3lNZXNzYWdlcy1leHBlY3Rl
ZC5oCShub25leGlzdGVudCkKQEAgLTEsNTcwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTAtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnIEFORAotICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0gKiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0gKiBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUgotICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSAqIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksCi0gKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
cHJhZ21hIG9uY2UKLQotI2lmIChFTkFCTEUoV0VCS0lUMikgJiYgKE5FU1RFRF9NQVNURVJfQ09O
RElUSU9OIHx8IE1BU1RFUl9PUiAmJiBNQVNURVJfQU5EKSkKLQotI2luY2x1ZGUgIkFyZ3VtZW50
Q29kZXJzLmgiCi0jaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgotI2luY2x1ZGUgIlBsdWdpbi5oIgot
I2luY2x1ZGUgIldlYlBhZ2VNZXNzYWdlc1JlcGxpZXMuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0dy
YXBoaWNzTGF5ZXIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0tleWJvYXJkRXZlbnQuaD4KLSNpbmNs
dWRlIDxXZWJDb3JlL1BsdWdpbkRhdGEuaD4KLSNpbmNsdWRlIDx1dGlsaXR5PgotI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYv
VGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0jaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBJUEMgewotY2xhc3MgRHVtbXlU
eXBlOwotY2xhc3MgTWFjaFBvcnQ7Ci19Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotY2xhc3MgV2Vi
UHJlZmVyZW5jZXNTdG9yZTsKLWNsYXNzIFdlYlRvdWNoRXZlbnQ7Ci19Ci0KLW5hbWVzcGFjZSBN
ZXNzYWdlcyB7Ci1uYW1lc3BhY2UgV2ViUGFnZSB7Ci0KLXN0YXRpYyBpbmxpbmUgSVBDOjpTdHJp
bmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSgpCi17Ci0gICAgcmV0dXJuIElQQzo6U3Ry
aW5nUmVmZXJlbmNlKCJXZWJQYWdlIik7Ci19Ci0KLWNsYXNzIExvYWRVUkwgewotcHVibGljOgot
ICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBTdHJpbmcmPiBBcmd1bWVudHM7Ci0KLSAgICBz
dGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUo
KSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiTG9hZFVSTCIpOyB9Ci0gICAgc3RhdGlj
IGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7Ci0KLSAgICBleHBsaWNpdCBMb2FkVVJMKGNvbnN0
IFN0cmluZyYgdXJsKQotICAgICAgICA6IG1fYXJndW1lbnRzKHVybCkKLSAgICB7Ci0gICAgfQot
Ci0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsKLSAgICAgICAg
cmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1bWVudHMgbV9h
cmd1bWVudHM7Ci19OwotCi0jaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLWNsYXNzIExvYWRTb21l
dGhpbmcgewotcHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBTdHJpbmcmPiBB
cmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1l
KCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6U3Ry
aW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiTG9hZFNv
bWV0aGluZyIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7Ci0KLSAg
ICBleHBsaWNpdCBMb2FkU29tZXRoaW5nKGNvbnN0IFN0cmluZyYgdXJsKQotICAgICAgICA6IG1f
YXJndW1lbnRzKHVybCkKLSAgICB7Ci0gICAgfQotCi0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1
bWVudHMoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0K
LQotcHJpdmF0ZToKLSAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19OwotI2VuZGlmCi0KLSNp
ZiAoRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgKE5FU1RFRF9NRVNTQUdFX0NPTkRJVElPTiB8fCBT
T01FX09USEVSX01FU1NBR0VfQ09ORElUSU9OKSkKLWNsYXNzIFRvdWNoRXZlbnQgewotcHVibGlj
OgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBXZWJLaXQ6OldlYlRvdWNoRXZlbnQmPiBB
cmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1l
KCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6U3Ry
aW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiVG91Y2hF
dmVudCIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7Ci0KLSAgICBl
eHBsaWNpdCBUb3VjaEV2ZW50KGNvbnN0IFdlYktpdDo6V2ViVG91Y2hFdmVudCYgZXZlbnQpCi0g
ICAgICAgIDogbV9hcmd1bWVudHMoZXZlbnQpCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0IEFy
Z3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3Vt
ZW50czsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsK
LSNlbmRpZgotCi0jaWYgKEVOQUJMRShUT1VDSF9FVkVOVFMpICYmIChORVNURURfTUVTU0FHRV9D
T05ESVRJT04gJiYgU09NRV9PVEhFUl9NRVNTQUdFX0NPTkRJVElPTikpCi1jbGFzcyBBZGRFdmVu
dCB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGNvbnN0IFdlYktpdDo6V2ViVG91
Y2hFdmVudCY+IEFyZ3VtZW50czsKLQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBy
ZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0
aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJl
bmNlKCJBZGRFdmVudCIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7
Ci0KLSAgICBleHBsaWNpdCBBZGRFdmVudChjb25zdCBXZWJLaXQ6OldlYlRvdWNoRXZlbnQmIGV2
ZW50KQotICAgICAgICA6IG1fYXJndW1lbnRzKGV2ZW50KQotICAgIHsKLSAgICB9Ci0KLSAgICBj
b25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4g
bV9hcmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50
czsKLX07Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCi1jbGFzcyBMb2FkU29t
ZXRoaW5nRWxzZSB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGNvbnN0IFN0cmlu
ZyY+IEFyZ3VtZW50czsKLQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZl
ck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMgSVBD
OjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJM
b2FkU29tZXRoaW5nRWxzZSIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFs
c2U7Ci0KLSAgICBleHBsaWNpdCBMb2FkU29tZXRoaW5nRWxzZShjb25zdCBTdHJpbmcmIHVybCkK
LSAgICAgICAgOiBtX2FyZ3VtZW50cyh1cmwpCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0IEFy
Z3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3Vt
ZW50czsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsK
LSNlbmRpZgotCi1jbGFzcyBEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24gewotcHVibGljOgotICAg
IHR5cGVkZWYgc3RkOjp0dXBsZTx1aW50NjRfdCwgdWludDY0X3QsIHVpbnQzMl90PiBBcmd1bWVu
dHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyBy
ZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVm
ZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiRGlkUmVjZWl2ZVBv
bGljeURlY2lzaW9uIik7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsK
LQotICAgIERpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbih1aW50NjRfdCBmcmFtZUlELCB1aW50NjRf
dCBsaXN0ZW5lcklELCB1aW50MzJfdCBwb2xpY3lBY3Rpb24pCi0gICAgICAgIDogbV9hcmd1bWVu
dHMoZnJhbWVJRCwgbGlzdGVuZXJJRCwgcG9saWN5QWN0aW9uKQotICAgIHsKLSAgICB9Ci0KLSAg
ICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1
cm4gbV9hcmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3Vt
ZW50czsKLX07Ci0KLWNsYXNzIENsb3NlIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVw
bGU8PiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2
ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGljIElQ
Qzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgi
Q2xvc2UiKTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOwotCi0gICAg
Y29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJu
IG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1bWVudHMgbV9hcmd1bWVu
dHM7Ci19OwotCi1jbGFzcyBQcmVmZXJlbmNlc0RpZENoYW5nZSB7Ci1wdWJsaWM6Ci0gICAgdHlw
ZWRlZiBzdGQ6OnR1cGxlPGNvbnN0IFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZSY+IEFyZ3Vt
ZW50czsKLQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7
IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdS
ZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJQcmVmZXJlbmNl
c0RpZENoYW5nZSIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7Ci0K
LSAgICBleHBsaWNpdCBQcmVmZXJlbmNlc0RpZENoYW5nZShjb25zdCBXZWJLaXQ6OldlYlByZWZl
cmVuY2VzU3RvcmUmIHN0b3JlKQotICAgICAgICA6IG1fYXJndW1lbnRzKHN0b3JlKQotICAgIHsK
LSAgICB9Ci0KLSAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewot
ICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3Vt
ZW50cyBtX2FyZ3VtZW50czsKLX07Ci0KLWNsYXNzIFNlbmREb3VibGVBbmRGbG9hdCB7Ci1wdWJs
aWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGRvdWJsZSwgZmxvYXQ+IEFyZ3VtZW50czsKLQot
ICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVybiBt
ZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2Ug
bmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJTZW5kRG91YmxlQW5kRmxvYXQi
KTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOwotCi0gICAgU2VuZERv
dWJsZUFuZEZsb2F0KGRvdWJsZSBkLCBmbG9hdCBmKQotICAgICAgICA6IG1fYXJndW1lbnRzKGQs
IGYpCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29u
c3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0KLXByaXZhdGU6
Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLQotY2xhc3MgU2VuZEludHMgewotcHVi
bGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBWZWN0b3I8dWludDY0X3Q+JiwgY29u
c3QgVmVjdG9yPFZlY3Rvcjx1aW50NjRfdD4+Jj4gQXJndW1lbnRzOwotCi0gICAgc3RhdGljIElQ
Qzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZl
ck5hbWUoKTsgfQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1
cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIlNlbmRJbnRzIik7IH0KLSAgICBzdGF0aWMgY29uc3Qg
Ym9vbCBpc1N5bmMgPSBmYWxzZTsKLQotICAgIFNlbmRJbnRzKGNvbnN0IFZlY3Rvcjx1aW50NjRf
dD4mIGludHMsIGNvbnN0IFZlY3RvcjxWZWN0b3I8dWludDY0X3Q+PiYgaW50VmVjdG9ycykKLSAg
ICAgICAgOiBtX2FyZ3VtZW50cyhpbnRzLCBpbnRWZWN0b3JzKQotICAgIHsKLSAgICB9Ci0KLSAg
ICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1
cm4gbV9hcmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3Vt
ZW50czsKLX07Ci0KLWNsYXNzIENyZWF0ZVBsdWdpbiB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBz
dGQ6OnR1cGxlPHVpbnQ2NF90LCBjb25zdCBXZWJLaXQ6OlBsdWdpbjo6UGFyYW1ldGVycyY+IEFy
Z3VtZW50czsKLQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUo
KSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJp
bmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJDcmVhdGVQ
bHVnaW4iKTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IHRydWU7Ci0KLSAgICB1
c2luZyBSZXBseSA9IHN0ZDo6dHVwbGU8Ym9vbCY+OwotICAgIHVzaW5nIFJlcGx5QXJndW1lbnRz
ID0gc3RkOjp0dXBsZTxib29sPjsKLSAgICBDcmVhdGVQbHVnaW4odWludDY0X3QgcGx1Z2luSW5z
dGFuY2VJRCwgY29uc3QgV2ViS2l0OjpQbHVnaW46OlBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCi0g
ICAgICAgIDogbV9hcmd1bWVudHMocGx1Z2luSW5zdGFuY2VJRCwgcGFyYW1ldGVycykKLSAgICB7
Ci0gICAgfQotCi0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsK
LSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1
bWVudHMgbV9hcmd1bWVudHM7Ci19OwotCi1jbGFzcyBSdW5KYXZhU2NyaXB0QWxlcnQgewotcHVi
bGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTx1aW50NjRfdCwgY29uc3QgU3RyaW5nJj4gQXJn
dW1lbnRzOwotCi0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgp
IHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsgfQotICAgIHN0YXRpYyBJUEM6OlN0cmlu
Z1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIlJ1bkphdmFT
Y3JpcHRBbGVydCIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gdHJ1ZTsKLQot
ICAgIHVzaW5nIFJlcGx5ID0gc3RkOjp0dXBsZTw+OwotICAgIHVzaW5nIFJlcGx5QXJndW1lbnRz
ID0gc3RkOjp0dXBsZTw+OwotICAgIFJ1bkphdmFTY3JpcHRBbGVydCh1aW50NjRfdCBmcmFtZUlE
LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCi0gICAgICAgIDogbV9hcmd1bWVudHMoZnJhbWVJRCwg
bWVzc2FnZSkKLSAgICB7Ci0gICAgfQotCi0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMo
KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJp
dmF0ZToKLSAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19OwotCi1jbGFzcyBHZXRQbHVnaW5z
IHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8Ym9vbD4gQXJndW1lbnRzOwotCi0g
ICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1l
c3NhZ2VSZWNlaXZlck5hbWUoKTsgfQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBu
YW1lKCkgeyByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIkdldFBsdWdpbnMiKTsgfQotICAg
IHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IHRydWU7Ci0KLSAgICB1c2luZyBSZXBseSA9IHN0
ZDo6dHVwbGU8VmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+Jj47Ci0gICAgdXNpbmcgUmVwbHlB
cmd1bWVudHMgPSBzdGQ6OnR1cGxlPFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPj47Ci0gICAg
ZXhwbGljaXQgR2V0UGx1Z2lucyhib29sIHJlZnJlc2gpCi0gICAgICAgIDogbV9hcmd1bWVudHMo
cmVmcmVzaCkKLSAgICB7Ci0gICAgfQotCi0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMo
KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJp
dmF0ZToKLSAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19OwotCi1jbGFzcyBHZXRQbHVnaW5Q
cm9jZXNzQ29ubmVjdGlvbiB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGNvbnN0
IFN0cmluZyY+IEFyZ3VtZW50czsKLQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBy
ZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0
aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJl
bmNlKCJHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbiIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJv
b2wgaXNTeW5jID0gdHJ1ZTsKLQotICAgIHVzaW5nIERlbGF5ZWRSZXBseSA9IEdldFBsdWdpblBy
b2Nlc3NDb25uZWN0aW9uRGVsYXllZFJlcGx5OwotICAgIHN0YXRpYyB2b2lkIHNlbmQoc3RkOjp1
bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mJiwgSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgSVBDOjpD
b25uZWN0aW9uOjpIYW5kbGUmIGNvbm5lY3Rpb25IYW5kbGUpOwotICAgIHVzaW5nIFJlcGx5ID0g
c3RkOjp0dXBsZTxJUEM6OkNvbm5lY3Rpb246OkhhbmRsZSY+OwotICAgIHVzaW5nIFJlcGx5QXJn
dW1lbnRzID0gc3RkOjp0dXBsZTxJUEM6OkNvbm5lY3Rpb246OkhhbmRsZT47Ci0gICAgZXhwbGlj
aXQgR2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24oY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoKQot
ICAgICAgICA6IG1fYXJndW1lbnRzKHBsdWdpblBhdGgpCi0gICAgewotICAgIH0KLQotICAgIGNv
bnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBt
X2FyZ3VtZW50czsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRz
OwotfTsKLQotY2xhc3MgVGVzdE11bHRpcGxlQXR0cmlidXRlcyB7Ci1wdWJsaWM6Ci0gICAgdHlw
ZWRlZiBzdGQ6OnR1cGxlPD4gQXJndW1lbnRzOwotCi0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVm
ZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsgfQot
ICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpTdHJp
bmdSZWZlcmVuY2UoIlRlc3RNdWx0aXBsZUF0dHJpYnV0ZXMiKTsgfQotICAgIHN0YXRpYyBjb25z
dCBib29sIGlzU3luYyA9IHRydWU7Ci0KLSAgICB1c2luZyBEZWxheWVkUmVwbHkgPSBUZXN0TXVs
dGlwbGVBdHRyaWJ1dGVzRGVsYXllZFJlcGx5OwotICAgIHN0YXRpYyB2b2lkIHNlbmQoc3RkOjp1
bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mJiwgSVBDOjpDb25uZWN0aW9uJik7Ci0gICAgdXNpbmcg
UmVwbHkgPSBzdGQ6OnR1cGxlPD47Ci0gICAgdXNpbmcgUmVwbHlBcmd1bWVudHMgPSBzdGQ6OnR1
cGxlPD47Ci0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsKLSAg
ICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1bWVu
dHMgbV9hcmd1bWVudHM7Ci19OwotCi1jbGFzcyBUZXN0UGFyYW1ldGVyQXR0cmlidXRlcyB7Ci1w
dWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPHVpbnQ2NF90LCBkb3VibGUsIGRvdWJsZT4g
QXJndW1lbnRzOwotCi0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFt
ZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsgfQotICAgIHN0YXRpYyBJUEM6OlN0
cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIlRlc3RQ
YXJhbWV0ZXJBdHRyaWJ1dGVzIik7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBm
YWxzZTsKLQotICAgIFRlc3RQYXJhbWV0ZXJBdHRyaWJ1dGVzKHVpbnQ2NF90IGZvbywgZG91Ymxl
IGJhciwgZG91YmxlIGJheikKLSAgICAgICAgOiBtX2FyZ3VtZW50cyhmb28sIGJhciwgYmF6KQot
ICAgIHsKLSAgICB9Ci0KLSAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0g
ICAgewotICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRlOgotICAg
IEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKLX07Ci0KLWNsYXNzIFRlbXBsYXRlVGVzdCB7Ci1wdWJs
aWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBzdGQ6OnBh
aXI8U3RyaW5nLCB1aW50NjRfdD4+Jj4gQXJndW1lbnRzOwotCi0gICAgc3RhdGljIElQQzo6U3Ry
aW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUo
KTsgfQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBD
OjpTdHJpbmdSZWZlcmVuY2UoIlRlbXBsYXRlVGVzdCIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJv
b2wgaXNTeW5jID0gZmFsc2U7Ci0KLSAgICBleHBsaWNpdCBUZW1wbGF0ZVRlc3QoY29uc3QgSGFz
aE1hcDxTdHJpbmcsIHN0ZDo6cGFpcjxTdHJpbmcsIHVpbnQ2NF90Pj4mIGEpCi0gICAgICAgIDog
bV9hcmd1bWVudHMoYSkKLSAgICB7Ci0gICAgfQotCi0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1
bWVudHMoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0K
LQotcHJpdmF0ZToKLSAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19OwotCi1jbGFzcyBTZXRW
aWRlb0xheWVySUQgewotcHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBXZWJD
b3JlOjpHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQmPiBBcmd1bWVudHM7Ci0KLSAgICBz
dGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUo
KSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiU2V0VmlkZW9MYXllcklEIik7IH0KLSAg
ICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKLQotICAgIGV4cGxpY2l0IFNldFZp
ZGVvTGF5ZXJJRChjb25zdCBXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQm
IHZpZGVvTGF5ZXJJRCkKLSAgICAgICAgOiBtX2FyZ3VtZW50cyh2aWRlb0xheWVySUQpCi0gICAg
ewotICAgIH0KLQotICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKLSAgICB7
Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJn
dW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLQotI2lmIFBMQVRGT1JNKE1BQykKLWNsYXNzIERpZENy
ZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVw
bGU8Y29uc3QgSVBDOjpNYWNoUG9ydCY+IEFyZ3VtZW50czsKLQotICAgIHN0YXRpYyBJUEM6OlN0
cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1l
KCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQ
Qzo6U3RyaW5nUmVmZXJlbmNlKCJEaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbiIpOyB9Ci0g
ICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7Ci0KLSAgICBleHBsaWNpdCBEaWRD
cmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbihjb25zdCBJUEM6Ok1hY2hQb3J0JiBjb25uZWN0aW9u
SWRlbnRpZmllcikKLSAgICAgICAgOiBtX2FyZ3VtZW50cyhjb25uZWN0aW9uSWRlbnRpZmllcikK
LSAgICB7Ci0gICAgfQotCi0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAot
ICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAg
ICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19OwotI2VuZGlmCi0KLSNpZiBQTEFURk9STShNQUMp
Ci1jbGFzcyBJbnRlcnByZXRLZXlFdmVudCB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1
cGxlPHVpbnQzMl90PiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVu
Y2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAg
c3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1Jl
ZmVyZW5jZSgiSW50ZXJwcmV0S2V5RXZlbnQiKTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlz
U3luYyA9IHRydWU7Ci0KLSAgICB1c2luZyBSZXBseSA9IHN0ZDo6dHVwbGU8VmVjdG9yPFdlYkNv
cmU6OktleXByZXNzQ29tbWFuZD4mPjsKLSAgICB1c2luZyBSZXBseUFyZ3VtZW50cyA9IHN0ZDo6
dHVwbGU8VmVjdG9yPFdlYkNvcmU6OktleXByZXNzQ29tbWFuZD4+OwotICAgIGV4cGxpY2l0IElu
dGVycHJldEtleUV2ZW50KHVpbnQzMl90IHR5cGUpCi0gICAgICAgIDogbV9hcmd1bWVudHModHlw
ZSkKLSAgICB7Ci0gICAgfQotCi0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25z
dAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToK
LSAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19OwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoREVQ
UkVDQVRFRF9GRUFUVVJFKQotY2xhc3MgRGVwcmVjYXRlZE9wZXJhdGlvbiB7Ci1wdWJsaWM6Ci0g
ICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGNvbnN0IElQQzo6RHVtbXlUeXBlJj4gQXJndW1lbnRzOwot
Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJu
IG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsgfQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5j
ZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIkRlcHJlY2F0ZWRPcGVyYXRp
b24iKTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOwotCi0gICAgZXhw
bGljaXQgRGVwcmVjYXRlZE9wZXJhdGlvbihjb25zdCBJUEM6OkR1bW15VHlwZSYgZHVtbXkpCi0g
ICAgICAgIDogbV9hcmd1bWVudHMoZHVtbXkpCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0IEFy
Z3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3Vt
ZW50czsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsK
LSNlbmRpZgotCi0jaWYgRU5BQkxFKEVYUEVSSU1FTlRBTF9GRUFUVVJFKQotY2xhc3MgRXhwZXJp
bWVudGFsT3BlcmF0aW9uIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8Y29uc3Qg
SVBDOjpEdW1teVR5cGUmPiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZl
cmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0g
ICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmlu
Z1JlZmVyZW5jZSgiRXhwZXJpbWVudGFsT3BlcmF0aW9uIik7IH0KLSAgICBzdGF0aWMgY29uc3Qg
Ym9vbCBpc1N5bmMgPSBmYWxzZTsKLQotICAgIGV4cGxpY2l0IEV4cGVyaW1lbnRhbE9wZXJhdGlv
bihjb25zdCBJUEM6OkR1bW15VHlwZSYgZHVtbXkpCi0gICAgICAgIDogbV9hcmd1bWVudHMoZHVt
bXkpCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29u
c3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0KLXByaXZhdGU6
Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFj
ZSBXZWJQYWdlCi19IC8vIG5hbWVzcGFjZSBNZXNzYWdlcwotCi0jZW5kaWYgLy8gKEVOQUJMRShX
RUJLSVQyKSAmJiAoTkVTVEVEX01BU1RFUl9DT05ESVRJT04gfHwgTUFTVEVSX09SICYmIE1BU1RF
Ul9BTkQpKQoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtp
dC9MZWdhY3lNZXNzYWdlcy1leHBlY3RlZC5oCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOmVvbC1z
dHlsZQojIyAtMSArMCwwICMjCi1uYXRpdmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0
eQpJbmRleDogU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9MZWdhY3lNZXNzYWdlc1JlcGxp
ZXMtZXhwZWN0ZWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0
L0xlZ2FjeU1lc3NhZ2VzUmVwbGllcy1leHBlY3RlZC5oCShyZXZpc2lvbiAyNjA3NjQpCisrKyBT
b3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L0xlZ2FjeU1lc3NhZ2VzUmVwbGllcy1leHBlY3Rl
ZC5oCShub25leGlzdGVudCkKQEAgLTEsNDMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECi0gKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSAqIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSAqIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SCi0gKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotICogQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwKLSAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNw
cmFnbWEgb25jZQotCi0jaWYgKEVOQUJMRShXRUJLSVQyKSAmJiAoTkVTVEVEX01BU1RFUl9DT05E
SVRJT04gfHwgTUFTVEVSX09SICYmIE1BU1RFUl9BTkQpKQotCi0jaW5jbHVkZSAiQ29ubmVjdGlv
bi5oIgotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0KLQotbmFtZXNwYWNlIE1lc3NhZ2VzIHsK
LW5hbWVzcGFjZSBXZWJQYWdlIHsKLQotdXNpbmcgR2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25E
ZWxheWVkUmVwbHkgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6Q29ubmVjdGlv
bjo6SGFuZGxlJiBjb25uZWN0aW9uSGFuZGxlKT47Ci0KLXVzaW5nIFRlc3RNdWx0aXBsZUF0dHJp
YnV0ZXNEZWxheWVkUmVwbHkgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+OwotCi19IC8vIG5h
bWVzcGFjZSBXZWJQYWdlCi19IC8vIG5hbWVzcGFjZSBNZXNzYWdlcwotCi0jZW5kaWYgLy8gKEVO
QUJMRShXRUJLSVQyKSAmJiAoTkVTVEVEX01BU1RFUl9DT05ESVRJT04gfHwgTUFTVEVSX09SICYm
IE1BU1RFUl9BTkQpKQpJbmRleDogU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9NZXNzYWdl
UmVjZWl2ZXItZXhwZWN0ZWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2NyaXB0
cy93ZWJraXQvTWVzc2FnZVJlY2VpdmVyLWV4cGVjdGVkLmNwcAkocmV2aXNpb24gMjYwNzY0KQor
KysgU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9NZXNzYWdlUmVjZWl2ZXItZXhwZWN0ZWQu
Y3BwCShub25leGlzdGVudCkKQEAgLTEsMjAzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTAtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnIEFORAotICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0gKiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0gKiBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUgotICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSAqIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksCi0gKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiAoRU5BQkxFKFdFQktJVDIpICYmIChORVNURURfTUFT
VEVSX0NPTkRJVElPTiB8fCBNQVNURVJfT1IgJiYgTUFTVEVSX0FORCkpCi0KLSNpbmNsdWRlICJX
ZWJQYWdlLmgiCi0KLSNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgotI2luY2x1ZGUgIkNvbm5l
Y3Rpb24uaCIKLSNpbmNsdWRlICJEZWNvZGVyLmgiCi0jaWYgRU5BQkxFKERFUFJFQ0FURURfRkVB
VFVSRSkgfHwgRU5BQkxFKEVYUEVSSU1FTlRBTF9GRUFUVVJFKQotI2luY2x1ZGUgIkR1bW15VHlw
ZS5oIgotI2VuZGlmCi0jaW5jbHVkZSAiSGFuZGxlTWVzc2FnZS5oIgotI2lmIFBMQVRGT1JNKE1B
QykKLSNpbmNsdWRlICJNYWNoUG9ydC5oIgotI2VuZGlmCi0jaW5jbHVkZSAiUGx1Z2luLmgiCi0j
aW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCi0jaWYgKEVOQUJMRShUT1VDSF9FVkVO
VFMpICYmIChORVNURURfTUVTU0FHRV9DT05ESVRJT04gJiYgU09NRV9PVEhFUl9NRVNTQUdFX0NP
TkRJVElPTikpIHx8IChFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiAoTkVTVEVEX01FU1NBR0VfQ09O
RElUSU9OIHx8IFNPTUVfT1RIRVJfTUVTU0FHRV9DT05ESVRJT04pKQotI2luY2x1ZGUgIldlYkV2
ZW50LmgiCi0jZW5kaWYKLSNpbmNsdWRlICJXZWJQYWdlTWVzc2FnZXMuaCIKLSNpbmNsdWRlICJX
ZWJQcmVmZXJlbmNlc1N0b3JlLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0xheWVyLmg+
Ci0jaWYgUExBVEZPUk0oTUFDKQotI2luY2x1ZGUgPFdlYkNvcmUvS2V5Ym9hcmRFdmVudC5oPgot
I2VuZGlmCi0jaW5jbHVkZSA8V2ViQ29yZS9QbHVnaW5EYXRhLmg+Ci0jaW5jbHVkZSA8dXRpbGl0
eT4KLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIE1lc3NhZ2VzIHsKLQot
bmFtZXNwYWNlIFdlYlBhZ2UgewotCi12b2lkIEdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpz
ZW5kKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiYgZW5jb2RlciwgSVBDOjpDb25uZWN0
aW9uJiBjb25uZWN0aW9uLCBjb25zdCBJUEM6OkNvbm5lY3Rpb246OkhhbmRsZSYgY29ubmVjdGlv
bkhhbmRsZSkKLXsKLSAgICAqZW5jb2RlciA8PCBjb25uZWN0aW9uSGFuZGxlOwotICAgIGNvbm5l
Y3Rpb24uc2VuZFN5bmNSZXBseShXVEZNb3ZlKGVuY29kZXIpKTsKLX0KLQotdm9pZCBUZXN0TXVs
dGlwbGVBdHRyaWJ1dGVzOjpzZW5kKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiYgZW5j
b2RlciwgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQotewotICAgIGNvbm5lY3Rpb24uc2Vu
ZFN5bmNSZXBseShXVEZNb3ZlKGVuY29kZXIpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViUGFn
ZQotCi19IC8vIG5hbWVzcGFjZSBNZXNzYWdlcwotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotdm9p
ZCBXZWJQYWdlOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24s
IElQQzo6RGVjb2RlciYgZGVjb2RlcikKLXsKLSAgICBhdXRvIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKTsKLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpX
ZWJQYWdlOjpMb2FkVVJMOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1l
c3NhZ2VzOjpXZWJQYWdlOjpMb2FkVVJMPihkZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6bG9hZFVS
TCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLSAg
ICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkU29t
ZXRoaW5nOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpX
ZWJQYWdlOjpMb2FkU29tZXRoaW5nPihkZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6bG9hZFNvbWV0
aGluZyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYKLSNpZiAoRU5BQkxFKFRPVUNI
X0VWRU5UUykgJiYgKE5FU1RFRF9NRVNTQUdFX0NPTkRJVElPTiB8fCBTT01FX09USEVSX01FU1NB
R0VfQ09ORElUSU9OKSkKLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2Vz
OjpXZWJQYWdlOjpUb3VjaEV2ZW50OjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNz
YWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpUb3VjaEV2ZW50PihkZWNvZGVyLCB0aGlzLCAmV2ViUGFn
ZTo6dG91Y2hFdmVudCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYKLSNpZiAoRU5B
QkxFKFRPVUNIX0VWRU5UUykgJiYgKE5FU1RFRF9NRVNTQUdFX0NPTkRJVElPTiAmJiBTT01FX09U
SEVSX01FU1NBR0VfQ09ORElUSU9OKSkKLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09
IE1lc3NhZ2VzOjpXZWJQYWdlOjpBZGRFdmVudDo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFu
ZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6QWRkRXZlbnQ+KGRlY29kZXIsIHRoaXMsICZX
ZWJQYWdlOjphZGRFdmVudCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYKLSNpZiBF
TkFCTEUoVE9VQ0hfRVZFTlRTKQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVz
c2FnZXM6OldlYlBhZ2U6OkxvYWRTb21ldGhpbmdFbHNlOjpuYW1lKCkpIHsKLSAgICAgICAgSVBD
OjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkU29tZXRoaW5nRWxzZT4oZGVj
b2RlciwgdGhpcywgJldlYlBhZ2U6OmxvYWRTb21ldGhpbmdFbHNlKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLSNlbmRpZgotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2Fn
ZXM6OldlYlBhZ2U6OkRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbjo6bmFtZSgpKSB7Ci0gICAgICAg
IElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVjZWl2ZVBvbGljeURl
Y2lzaW9uPihkZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9u
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgp
ID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpDbG9zZTo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFu
ZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6Q2xvc2U+KGRlY29kZXIsIHRoaXMsICZXZWJQ
YWdlOjpjbG9zZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKGRlY29kZXIubWVz
c2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6UHJlZmVyZW5jZXNEaWRDaGFuZ2U6Om5h
bWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OlBy
ZWZlcmVuY2VzRGlkQ2hhbmdlPihkZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6cHJlZmVyZW5jZXNE
aWRDaGFuZ2UpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChkZWNvZGVyLm1lc3Nh
Z2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OlNlbmREb3VibGVBbmRGbG9hdDo6bmFtZSgp
KSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6U2VuZERv
dWJsZUFuZEZsb2F0PihkZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6c2VuZERvdWJsZUFuZEZsb2F0
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgp
ID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpTZW5kSW50czo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6
aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6U2VuZEludHM+KGRlY29kZXIsIHRoaXMs
ICZXZWJQYWdlOjpzZW5kSW50cyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKGRl
Y29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6VGVzdFBhcmFtZXRlckF0
dHJpYnV0ZXM6Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6
OldlYlBhZ2U6OlRlc3RQYXJhbWV0ZXJBdHRyaWJ1dGVzPihkZWNvZGVyLCB0aGlzLCAmV2ViUGFn
ZTo6dGVzdFBhcmFtZXRlckF0dHJpYnV0ZXMpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAg
IGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OlRlbXBsYXRl
VGVzdDo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2Vi
UGFnZTo6VGVtcGxhdGVUZXN0PihkZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6dGVtcGxhdGVUZXN0
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgp
ID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRWaWRlb0xheWVySUQ6Om5hbWUoKSkgewotICAgICAg
ICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OlNldFZpZGVvTGF5ZXJJRD4o
ZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OnNldFZpZGVvTGF5ZXJJRCk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0jaWYgUExBVEZPUk0oTUFDKQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1l
KCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OkRpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uOjpu
YW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpE
aWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbj4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OmRp
ZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNl
bmRpZgotI2lmIEVOQUJMRShERVBSRUNBVEVEX0ZFQVRVUkUpCi0gICAgaWYgKGRlY29kZXIubWVz
c2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6RGVwcmVjYXRlZE9wZXJhdGlvbjo6bmFt
ZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6RGVw
cmVjYXRlZE9wZXJhdGlvbj4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OmRlcHJlY2F0ZWRPcGVy
YXRpb24pOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlmCi0jaWYgRU5BQkxFKEVYUEVS
SU1FTlRBTF9GRUFUVVJFKQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2Fn
ZXM6OldlYlBhZ2U6OkV4cGVyaW1lbnRhbE9wZXJhdGlvbjo6bmFtZSgpKSB7Ci0gICAgICAgIElQ
Qzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6RXhwZXJpbWVudGFsT3BlcmF0aW9u
PihkZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6ZXhwZXJpbWVudGFsT3BlcmF0aW9uKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLSNlbmRpZgotICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsK
LSAgICBVTlVTRURfUEFSQU0oZGVjb2Rlcik7Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19
Ci0KLXZvaWQgV2ViUGFnZTo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYg
Y29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpF
bmNvZGVyPiYgcmVwbHlFbmNvZGVyKQotewotICAgIGF1dG8gcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpOwotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6Oldl
YlBhZ2U6OkNyZWF0ZVBsdWdpbjo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2Fn
ZTxNZXNzYWdlczo6V2ViUGFnZTo6Q3JlYXRlUGx1Z2luPihkZWNvZGVyLCAqcmVwbHlFbmNvZGVy
LCB0aGlzLCAmV2ViUGFnZTo6Y3JlYXRlUGx1Z2luKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpSdW5K
YXZhU2NyaXB0QWxlcnQ6Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVz
c2FnZXM6OldlYlBhZ2U6OlJ1bkphdmFTY3JpcHRBbGVydD4oZGVjb2RlciwgKnJlcGx5RW5jb2Rl
ciwgdGhpcywgJldlYlBhZ2U6OnJ1bkphdmFTY3JpcHRBbGVydCk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFn
ZTo6R2V0UGx1Z2luczo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNz
YWdlczo6V2ViUGFnZTo6R2V0UGx1Z2lucz4oZGVjb2RlciwgKnJlcGx5RW5jb2RlciwgdGhpcywg
JldlYlBhZ2U6OmdldFBsdWdpbnMpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChk
ZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OkdldFBsdWdpblByb2Nl
c3NDb25uZWN0aW9uOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlU3luY2hy
b25vdXM8TWVzc2FnZXM6OldlYlBhZ2U6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uPihjb25u
ZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIsIHRoaXMsICZXZWJQYWdlOjpnZXRQbHVnaW5Q
cm9jZXNzQ29ubmVjdGlvbik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKGRlY29k
ZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6VGVzdE11bHRpcGxlQXR0cmli
dXRlczo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZVN5bmNocm9ub3VzV2Fu
dHNDb25uZWN0aW9uPE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0TXVsdGlwbGVBdHRyaWJ1dGVzPihj
b25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIsIHRoaXMsICZXZWJQYWdlOjp0ZXN0TXVs
dGlwbGVBdHRyaWJ1dGVzKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNpZiBQTEFURk9STShN
QUMpCi0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6
SW50ZXJwcmV0S2V5RXZlbnQ6Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8
TWVzc2FnZXM6OldlYlBhZ2U6OkludGVycHJldEtleUV2ZW50PihkZWNvZGVyLCAqcmVwbHlFbmNv
ZGVyLCB0aGlzLCAmV2ViUGFnZTo6aW50ZXJwcmV0S2V5RXZlbnQpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotI2VuZGlmCi0gICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pOwotICAgIFVOVVNF
RF9QQVJBTShkZWNvZGVyKTsKLSAgICBVTlVTRURfUEFSQU0ocmVwbHlFbmNvZGVyKTsKLSAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLQotI2Vu
ZGlmIC8vIChFTkFCTEUoV0VCS0lUMikgJiYgKE5FU1RFRF9NQVNURVJfQ09ORElUSU9OIHx8IE1B
U1RFUl9PUiAmJiBNQVNURVJfQU5EKSkKClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9XZWJL
aXQvU2NyaXB0cy93ZWJraXQvTWVzc2FnZVJlY2VpdmVyLWV4cGVjdGVkLmNwcApfX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
CkRlbGV0ZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTEgKzAsMCAjIwotbmF0aXZlClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQv
TWVzc2FnZVJlY2VpdmVyU3VwZXJjbGFzcy1leHBlY3RlZC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9NZXNzYWdlUmVjZWl2ZXJTdXBlcmNsYXNzLWV4cGVj
dGVkLmNwcAkocmV2aXNpb24gMjYwNzY0KQorKysgU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtp
dC9NZXNzYWdlUmVjZWl2ZXJTdXBlcmNsYXNzLWV4cGVjdGVkLmNwcAkobm9uZXhpc3RlbnQpCkBA
IC0xLDE4OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JyBBTkQKLSAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUgotICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotICogREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSAq
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSCi0gKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotICogT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
Ci0jaW5jbHVkZSAiV2ViUGFnZS5oIgotCi0jaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKLSNp
bmNsdWRlICJEZWNvZGVyLmgiCi0jaW5jbHVkZSAiSGFuZGxlTWVzc2FnZS5oIgotI2luY2x1ZGUg
IlRlc3RDbGFzc05hbWUuaCIKLSNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQotI2luY2x1ZGUgIlRl
c3RUd29TdGF0ZUVudW0uaCIKLSNlbmRpZgotI2luY2x1ZGUgIldlYlBhZ2VNZXNzYWdlcy5oIgot
I2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgotCi1uYW1lc3BhY2UgTWVzc2FnZXMgewotCi1uYW1lc3BhY2UgV2ViUGFnZSB7Ci0KLSNpZiBF
TkFCTEUoVEVTVF9GRUFUVVJFKQotCi12b2lkIFRlc3RBc3luY01lc3NhZ2U6OmNhbGxSZXBseShJ
UEM6OkRlY29kZXImIGRlY29kZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0X3QmJik+
JiYgY29tcGxldGlvbkhhbmRsZXIpCi17Ci0gICAgT3B0aW9uYWw8dWludDY0X3Q+IHJlc3VsdDsK
LSAgICBkZWNvZGVyID4+IHJlc3VsdDsKLSAgICBpZiAoIXJlc3VsdCkgewotICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgY2FuY2VsUmVwbHkoV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNvbXBsZXRpb25IYW5kbGVy
KFdURk1vdmUoKnJlc3VsdCkpOwotfQotCi12b2lkIFRlc3RBc3luY01lc3NhZ2U6OmNhbmNlbFJl
cGx5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0X3QmJik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCi17Ci0gICAgY29tcGxldGlvbkhhbmRsZXIoSVBDOjpBc3luY1JlcGx5RXJyb3I8dWludDY0
X3Q+OjpjcmVhdGUoKSk7Ci19Ci0KLXZvaWQgVGVzdEFzeW5jTWVzc2FnZTo6c2VuZChzdGQ6OnVu
aXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYmIGVuY29kZXIsIElQQzo6Q29ubmVjdGlvbiYgY29ubmVj
dGlvbiwgdWludDY0X3QgcmVzdWx0KQotewotICAgICplbmNvZGVyIDw8IHJlc3VsdDsKLSAgICBj
b25uZWN0aW9uLnNlbmRTeW5jUmVwbHkoV1RGTW92ZShlbmNvZGVyKSk7Ci19Ci0KLSNlbmRpZgot
Ci0jaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKLQotdm9pZCBUZXN0QXN5bmNNZXNzYWdlV2l0aE5v
QXJndW1lbnRzOjpjYWxsUmVwbHkoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCi17Ci0gICAgY29tcGxldGlvbkhhbmRs
ZXIoKTsKLX0KLQotdm9pZCBUZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJndW1lbnRzOjpjYW5jZWxS
ZXBseShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCi17Ci0g
ICAgY29tcGxldGlvbkhhbmRsZXIoKTsKLX0KLQotdm9pZCBUZXN0QXN5bmNNZXNzYWdlV2l0aE5v
QXJndW1lbnRzOjpzZW5kKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiYgZW5jb2Rlciwg
SVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQotewotICAgIGNvbm5lY3Rpb24uc2VuZFN5bmNS
ZXBseShXVEZNb3ZlKGVuY29kZXIpKTsKLX0KLQotI2VuZGlmCi0KLSNpZiBFTkFCTEUoVEVTVF9G
RUFUVVJFKQotCi12b2lkIFRlc3RBc3luY01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHM6OmNh
bGxSZXBseShJUEM6OkRlY29kZXImIGRlY29kZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCYmLCB1aW50NjRfdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAgICBPcHRpb25hbDxi
b29sPiBmbGFnOwotICAgIGRlY29kZXIgPj4gZmxhZzsKLSAgICBpZiAoIWZsYWcpIHsKLSAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIGNhbmNlbFJlcGx5KFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBPcHRpb25hbDx1
aW50NjRfdD4gdmFsdWU7Ci0gICAgZGVjb2RlciA+PiB2YWx1ZTsKLSAgICBpZiAoIXZhbHVlKSB7
Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICBjYW5jZWxSZXBseShXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY29t
cGxldGlvbkhhbmRsZXIoV1RGTW92ZSgqZmxhZyksIFdURk1vdmUoKnZhbHVlKSk7Ci19Ci0KLXZv
aWQgVGVzdEFzeW5jTWVzc2FnZVdpdGhNdWx0aXBsZUFyZ3VtZW50czo6Y2FuY2VsUmVwbHkoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sJiYsIHVpbnQ2NF90JiYpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQotewotICAgIGNvbXBsZXRpb25IYW5kbGVyKElQQzo6QXN5bmNSZXBseUVycm9yPGJvb2w+
OjpjcmVhdGUoKSwgSVBDOjpBc3luY1JlcGx5RXJyb3I8dWludDY0X3Q+OjpjcmVhdGUoKSk7Ci19
Ci0KLXZvaWQgVGVzdEFzeW5jTWVzc2FnZVdpdGhNdWx0aXBsZUFyZ3VtZW50czo6c2VuZChzdGQ6
OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYmIGVuY29kZXIsIElQQzo6Q29ubmVjdGlvbiYgY29u
bmVjdGlvbiwgYm9vbCBmbGFnLCB1aW50NjRfdCB2YWx1ZSkKLXsKLSAgICAqZW5jb2RlciA8PCBm
bGFnOwotICAgICplbmNvZGVyIDw8IHZhbHVlOwotICAgIGNvbm5lY3Rpb24uc2VuZFN5bmNSZXBs
eShXVEZNb3ZlKGVuY29kZXIpKTsKLX0KLQotI2VuZGlmCi0KLXZvaWQgVGVzdFN5bmNNZXNzYWdl
OjpzZW5kKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiYgZW5jb2RlciwgSVBDOjpDb25u
ZWN0aW9uJiBjb25uZWN0aW9uLCB1aW50OF90IHJlcGx5KQotewotICAgICplbmNvZGVyIDw8IHJl
cGx5OwotICAgIGNvbm5lY3Rpb24uc2VuZFN5bmNSZXBseShXVEZNb3ZlKGVuY29kZXIpKTsKLX0K
LQotdm9pZCBUZXN0U3luY2hyb25vdXNNZXNzYWdlOjpzZW5kKHN0ZDo6dW5pcXVlX3B0cjxJUEM6
OkVuY29kZXI+JiYgZW5jb2RlciwgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBP
cHRpb25hbDxXZWJLaXQ6OlRlc3RDbGFzc05hbWU+JiBvcHRpb25hbFJlcGx5KQotewotICAgICpl
bmNvZGVyIDw8IG9wdGlvbmFsUmVwbHk7Ci0gICAgY29ubmVjdGlvbi5zZW5kU3luY1JlcGx5KFdU
Rk1vdmUoZW5jb2RlcikpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJQYWdlCi0KLX0gLy8gbmFt
ZXNwYWNlIE1lc3NhZ2VzCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi12b2lkIFdlYlBhZ2U6OmRp
ZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVy
JiBkZWNvZGVyKQotewotICAgIGF1dG8gcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpOwot
ICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRV
Ukw6Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBh
Z2U6OkxvYWRVUkw+KGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjpsb2FkVVJMKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLSNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQotICAgIGlmIChkZWNvZGVy
Lm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RBc3luY01lc3NhZ2U6Om5h
bWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2VBc3luYzxNZXNzYWdlczo6V2ViUGFn
ZTo6VGVzdEFzeW5jTWVzc2FnZT4oY29ubmVjdGlvbiwgZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6
OnRlc3RBc3luY01lc3NhZ2UpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlmCi0jaWYg
RU5BQkxFKFRFU1RfRkVBVFVSRSkKLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1l
c3NhZ2VzOjpXZWJQYWdlOjpUZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJndW1lbnRzOjpuYW1lKCkp
IHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlQXN5bmM8TWVzc2FnZXM6OldlYlBhZ2U6OlRl
c3RBc3luY01lc3NhZ2VXaXRoTm9Bcmd1bWVudHM+KGNvbm5lY3Rpb24sIGRlY29kZXIsIHRoaXMs
ICZXZWJQYWdlOjp0ZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJndW1lbnRzKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLSNlbmRpZgotI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCi0gICAgaWYgKGRl
Y29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6VGVzdEFzeW5jTWVzc2Fn
ZVdpdGhNdWx0aXBsZUFyZ3VtZW50czo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVz
c2FnZUFzeW5jPE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxl
QXJndW1lbnRzPihjb25uZWN0aW9uLCBkZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6dGVzdEFzeW5j
TWVzc2FnZVdpdGhNdWx0aXBsZUFyZ3VtZW50cyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0j
ZW5kaWYKLSAgICBXZWJQYWdlQmFzZTo6ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVj
b2Rlcik7Ci19Ci0KLXZvaWQgV2ViUGFnZTo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBzdGQ6OnVuaXF1ZV9w
dHI8SVBDOjpFbmNvZGVyPiYgcmVwbHlFbmNvZGVyKQotewotICAgIGF1dG8gcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpOwotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVz
c2FnZXM6OldlYlBhZ2U6OlRlc3RTeW5jTWVzc2FnZTo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6
aGFuZGxlTWVzc2FnZVN5bmNocm9ub3VzPE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0U3luY01lc3Nh
Z2U+KGNvbm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5RW5jb2RlciwgdGhpcywgJldlYlBhZ2U6OnRl
c3RTeW5jTWVzc2FnZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKGRlY29kZXIu
bWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6VGVzdFN5bmNocm9ub3VzTWVzc2Fn
ZTo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZVN5bmNocm9ub3VzPE1lc3Nh
Z2VzOjpXZWJQYWdlOjpUZXN0U3luY2hyb25vdXNNZXNzYWdlPihjb25uZWN0aW9uLCBkZWNvZGVy
LCByZXBseUVuY29kZXIsIHRoaXMsICZXZWJQYWdlOjp0ZXN0U3luY2hyb25vdXNNZXNzYWdlKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7Ci0g
ICAgVU5VU0VEX1BBUkFNKGRlY29kZXIpOwotICAgIFVOVVNFRF9QQVJBTShyZXBseUVuY29kZXIp
OwotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQK
LQoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9NZXNz
YWdlUmVjZWl2ZXJTdXBlcmNsYXNzLWV4cGVjdGVkLmNwcApfX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2
bjplb2wtc3R5bGUKIyMgLTEgKzAsMCAjIwotbmF0aXZlClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
cHJvcGVydHkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvTWVzc2FnZXMtZXhw
ZWN0ZWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L01lc3Nh
Z2VzLWV4cGVjdGVkLmgJKHJldmlzaW9uIDI2MDc2NCkKKysrIFNvdXJjZS9XZWJLaXQvU2NyaXB0
cy93ZWJraXQvTWVzc2FnZXMtZXhwZWN0ZWQuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDU3MCArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKLSAqIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UgotICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTAotICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSAqIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSCi0gKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotICogT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiAoRU5BQkxFKFdFQktJ
VDIpICYmIChORVNURURfTUFTVEVSX0NPTkRJVElPTiB8fCBNQVNURVJfT1IgJiYgTUFTVEVSX0FO
RCkpCi0KLSNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgotI2luY2x1ZGUgIkNvbm5lY3Rpb24u
aCIKLSNpbmNsdWRlICJQbHVnaW4uaCIKLSNpbmNsdWRlICJXZWJQYWdlTWVzc2FnZXNSZXBsaWVz
LmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0xheWVyLmg+Ci0jaW5jbHVkZSA8V2ViQ29y
ZS9LZXlib2FyZEV2ZW50Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9QbHVnaW5EYXRhLmg+Ci0jaW5j
bHVkZSA8dXRpbGl0eT4KLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+Ci0jaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1l
c3BhY2UgSVBDIHsKLWNsYXNzIER1bW15VHlwZTsKLWNsYXNzIE1hY2hQb3J0OwotfQotCi1uYW1l
c3BhY2UgV2ViS2l0IHsKLWNsYXNzIFdlYlByZWZlcmVuY2VzU3RvcmU7Ci1jbGFzcyBXZWJUb3Vj
aEV2ZW50OwotfQotCi1uYW1lc3BhY2UgTWVzc2FnZXMgewotbmFtZXNwYWNlIFdlYlBhZ2Ugewot
Ci1zdGF0aWMgaW5saW5lIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUo
KQotewotICAgIHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiV2ViUGFnZSIpOwotfQotCi1j
bGFzcyBMb2FkVVJMIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8Y29uc3QgU3Ry
aW5nJj4gQXJndW1lbnRzOwotCi0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2Vp
dmVyTmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsgfQotICAgIHN0YXRpYyBJ
UEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2Uo
IkxvYWRVUkwiKTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOwotCi0g
ICAgZXhwbGljaXQgTG9hZFVSTChjb25zdCBTdHJpbmcmIHVybCkKLSAgICAgICAgOiBtX2FyZ3Vt
ZW50cyh1cmwpCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRz
KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0KLXBy
aXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLQotI2lmIEVOQUJMRShUT1VD
SF9FVkVOVFMpCi1jbGFzcyBMb2FkU29tZXRoaW5nIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0
ZDo6dHVwbGU8Y29uc3QgU3RyaW5nJj4gQXJndW1lbnRzOwotCi0gICAgc3RhdGljIElQQzo6U3Ry
aW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUo
KTsgfQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBD
OjpTdHJpbmdSZWZlcmVuY2UoIkxvYWRTb21ldGhpbmciKTsgfQotICAgIHN0YXRpYyBjb25zdCBi
b29sIGlzU3luYyA9IGZhbHNlOwotCi0gICAgZXhwbGljaXQgTG9hZFNvbWV0aGluZyhjb25zdCBT
dHJpbmcmIHVybCkKLSAgICAgICAgOiBtX2FyZ3VtZW50cyh1cmwpCi0gICAgewotICAgIH0KLQot
ICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJn
dW1lbnRzOwotfTsKLSNlbmRpZgotCi0jaWYgKEVOQUJMRShUT1VDSF9FVkVOVFMpICYmIChORVNU
RURfTUVTU0FHRV9DT05ESVRJT04gfHwgU09NRV9PVEhFUl9NRVNTQUdFX0NPTkRJVElPTikpCi1j
bGFzcyBUb3VjaEV2ZW50IHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8Y29uc3Qg
V2ViS2l0OjpXZWJUb3VjaEV2ZW50Jj4gQXJndW1lbnRzOwotCi0gICAgc3RhdGljIElQQzo6U3Ry
aW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUo
KTsgfQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBD
OjpTdHJpbmdSZWZlcmVuY2UoIlRvdWNoRXZlbnQiKTsgfQotICAgIHN0YXRpYyBjb25zdCBib29s
IGlzU3luYyA9IGZhbHNlOwotCi0gICAgZXhwbGljaXQgVG91Y2hFdmVudChjb25zdCBXZWJLaXQ6
OldlYlRvdWNoRXZlbnQmIGV2ZW50KQotICAgICAgICA6IG1fYXJndW1lbnRzKGV2ZW50KQotICAg
IHsKLSAgICB9Ci0KLSAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAg
ewotICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFy
Z3VtZW50cyBtX2FyZ3VtZW50czsKLX07Ci0jZW5kaWYKLQotI2lmIChFTkFCTEUoVE9VQ0hfRVZF
TlRTKSAmJiAoTkVTVEVEX01FU1NBR0VfQ09ORElUSU9OICYmIFNPTUVfT1RIRVJfTUVTU0FHRV9D
T05ESVRJT04pKQotY2xhc3MgQWRkRXZlbnQgewotcHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0
dXBsZTxjb25zdCBXZWJLaXQ6OldlYlRvdWNoRXZlbnQmPiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0
aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJl
Y2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7
IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiQWRkRXZlbnQiKTsgfQotICAgIHN0YXRpYyBj
b25zdCBib29sIGlzU3luYyA9IGZhbHNlOwotCi0gICAgZXhwbGljaXQgQWRkRXZlbnQoY29uc3Qg
V2ViS2l0OjpXZWJUb3VjaEV2ZW50JiBldmVudCkKLSAgICAgICAgOiBtX2FyZ3VtZW50cyhldmVu
dCkKLSAgICB7Ci0gICAgfQotCi0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25z
dAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToK
LSAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19OwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoVE9V
Q0hfRVZFTlRTKQotY2xhc3MgTG9hZFNvbWV0aGluZ0Vsc2UgewotcHVibGljOgotICAgIHR5cGVk
ZWYgc3RkOjp0dXBsZTxjb25zdCBTdHJpbmcmPiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBD
OjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVy
TmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVy
biBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiTG9hZFNvbWV0aGluZ0Vsc2UiKTsgfQotICAgIHN0YXRp
YyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOwotCi0gICAgZXhwbGljaXQgTG9hZFNvbWV0aGlu
Z0Vsc2UoY29uc3QgU3RyaW5nJiB1cmwpCi0gICAgICAgIDogbV9hcmd1bWVudHModXJsKQotICAg
IHsKLSAgICB9Ci0KLSAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAg
ewotICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFy
Z3VtZW50cyBtX2FyZ3VtZW50czsKLX07Ci0jZW5kaWYKLQotY2xhc3MgRGlkUmVjZWl2ZVBvbGlj
eURlY2lzaW9uIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8dWludDY0X3QsIHVp
bnQ2NF90LCB1aW50MzJfdD4gQXJndW1lbnRzOwotCi0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVm
ZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsgfQot
ICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpTdHJp
bmdSZWZlcmVuY2UoIkRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbiIpOyB9Ci0gICAgc3RhdGljIGNv
bnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7Ci0KLSAgICBEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24o
dWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbGlzdGVuZXJJRCwgdWludDMyX3QgcG9saWN5QWN0
aW9uKQotICAgICAgICA6IG1fYXJndW1lbnRzKGZyYW1lSUQsIGxpc3RlbmVySUQsIHBvbGljeUFj
dGlvbikKLSAgICB7Ci0gICAgfQotCi0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBj
b25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0
ZToKLSAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19OwotCi1jbGFzcyBDbG9zZSB7Ci1wdWJs
aWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPD4gQXJndW1lbnRzOwotCi0gICAgc3RhdGljIElQ
Qzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZl
ck5hbWUoKTsgfQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1
cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIkNsb3NlIik7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9v
bCBpc1N5bmMgPSBmYWxzZTsKLQotICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29u
c3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0KLXByaXZhdGU6
Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLQotY2xhc3MgUHJlZmVyZW5jZXNEaWRD
aGFuZ2UgewotcHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBXZWJLaXQ6Oldl
YlByZWZlcmVuY2VzU3RvcmUmPiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdS
ZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9
Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0
cmluZ1JlZmVyZW5jZSgiUHJlZmVyZW5jZXNEaWRDaGFuZ2UiKTsgfQotICAgIHN0YXRpYyBjb25z
dCBib29sIGlzU3luYyA9IGZhbHNlOwotCi0gICAgZXhwbGljaXQgUHJlZmVyZW5jZXNEaWRDaGFu
Z2UoY29uc3QgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSkKLSAgICAgICAgOiBt
X2FyZ3VtZW50cyhzdG9yZSkKLSAgICB7Ci0gICAgfQotCi0gICAgY29uc3QgQXJndW1lbnRzJiBh
cmd1bWVudHMoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAg
IH0KLQotcHJpdmF0ZToKLSAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19OwotCi1jbGFzcyBT
ZW5kRG91YmxlQW5kRmxvYXQgewotcHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxkb3Vi
bGUsIGZsb2F0PiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2Ug
cmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAgc3Rh
dGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVy
ZW5jZSgiU2VuZERvdWJsZUFuZEZsb2F0Iik7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5
bmMgPSBmYWxzZTsKLQotICAgIFNlbmREb3VibGVBbmRGbG9hdChkb3VibGUgZCwgZmxvYXQgZikK
LSAgICAgICAgOiBtX2FyZ3VtZW50cyhkLCBmKQotICAgIHsKLSAgICB9Ci0KLSAgICBjb25zdCBB
cmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9hcmd1
bWVudHM7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKLX07
Ci0KLWNsYXNzIFNlbmRJbnRzIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8Y29u
c3QgVmVjdG9yPHVpbnQ2NF90PiYsIGNvbnN0IFZlY3RvcjxWZWN0b3I8dWludDY0X3Q+PiY+IEFy
Z3VtZW50czsKLQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUo
KSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJp
bmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJTZW5kSW50
cyIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7Ci0KLSAgICBTZW5k
SW50cyhjb25zdCBWZWN0b3I8dWludDY0X3Q+JiBpbnRzLCBjb25zdCBWZWN0b3I8VmVjdG9yPHVp
bnQ2NF90Pj4mIGludFZlY3RvcnMpCi0gICAgICAgIDogbV9hcmd1bWVudHMoaW50cywgaW50VmVj
dG9ycykKLSAgICB7Ci0gICAgfQotCi0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBj
b25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0
ZToKLSAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19OwotCi1jbGFzcyBDcmVhdGVQbHVnaW4g
ewotcHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTx1aW50NjRfdCwgY29uc3QgV2ViS2l0
OjpQbHVnaW46OlBhcmFtZXRlcnMmPiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJp
bmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgp
OyB9Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6
OlN0cmluZ1JlZmVyZW5jZSgiQ3JlYXRlUGx1Z2luIik7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9v
bCBpc1N5bmMgPSB0cnVlOwotCi0gICAgdXNpbmcgUmVwbHkgPSBzdGQ6OnR1cGxlPGJvb2wmPjsK
LSAgICB1c2luZyBSZXBseUFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8Ym9vbD47Ci0gICAgQ3JlYXRl
UGx1Z2luKHVpbnQ2NF90IHBsdWdpbkluc3RhbmNlSUQsIGNvbnN0IFdlYktpdDo6UGx1Z2luOjpQ
YXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQotICAgICAgICA6IG1fYXJndW1lbnRzKHBsdWdpbkluc3Rh
bmNlSUQsIHBhcmFtZXRlcnMpCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0IEFyZ3VtZW50cyYg
YXJndW1lbnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAg
ICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLQotY2xhc3Mg
UnVuSmF2YVNjcmlwdEFsZXJ0IHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8dWlu
dDY0X3QsIGNvbnN0IFN0cmluZyY+IEFyZ3VtZW50czsKLQotICAgIHN0YXRpYyBJUEM6OlN0cmlu
Z1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7
IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6
U3RyaW5nUmVmZXJlbmNlKCJSdW5KYXZhU2NyaXB0QWxlcnQiKTsgfQotICAgIHN0YXRpYyBjb25z
dCBib29sIGlzU3luYyA9IHRydWU7Ci0KLSAgICB1c2luZyBSZXBseSA9IHN0ZDo6dHVwbGU8PjsK
LSAgICB1c2luZyBSZXBseUFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8PjsKLSAgICBSdW5KYXZhU2Ny
aXB0QWxlcnQodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQotICAgICAg
ICA6IG1fYXJndW1lbnRzKGZyYW1lSUQsIG1lc3NhZ2UpCi0gICAgewotICAgIH0KLQotICAgIGNv
bnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBt
X2FyZ3VtZW50czsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRz
OwotfTsKLQotY2xhc3MgR2V0UGx1Z2lucyB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1
cGxlPGJvb2w+IEFyZ3VtZW50czsKLQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBy
ZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0
aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJl
bmNlKCJHZXRQbHVnaW5zIik7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSB0cnVl
OwotCi0gICAgdXNpbmcgUmVwbHkgPSBzdGQ6OnR1cGxlPFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5J
bmZvPiY+OwotICAgIHVzaW5nIFJlcGx5QXJndW1lbnRzID0gc3RkOjp0dXBsZTxWZWN0b3I8V2Vi
Q29yZTo6UGx1Z2luSW5mbz4+OwotICAgIGV4cGxpY2l0IEdldFBsdWdpbnMoYm9vbCByZWZyZXNo
KQotICAgICAgICA6IG1fYXJndW1lbnRzKHJlZnJlc2gpCi0gICAgewotICAgIH0KLQotICAgIGNv
bnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBt
X2FyZ3VtZW50czsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRz
OwotfTsKLQotY2xhc3MgR2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24gewotcHVibGljOgotICAg
IHR5cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBTdHJpbmcmPiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0
aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJl
Y2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7
IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiR2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24i
KTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IHRydWU7Ci0KLSAgICB1c2luZyBE
ZWxheWVkUmVwbHkgPSBHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbkRlbGF5ZWRSZXBseTsKLSAg
ICBzdGF0aWMgdm9pZCBzZW5kKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiYsIElQQzo6
Q29ubmVjdGlvbiYsIGNvbnN0IElQQzo6Q29ubmVjdGlvbjo6SGFuZGxlJiBjb25uZWN0aW9uSGFu
ZGxlKTsKLSAgICB1c2luZyBSZXBseSA9IHN0ZDo6dHVwbGU8SVBDOjpDb25uZWN0aW9uOjpIYW5k
bGUmPjsKLSAgICB1c2luZyBSZXBseUFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8SVBDOjpDb25uZWN0
aW9uOjpIYW5kbGU+OwotICAgIGV4cGxpY2l0IEdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKGNv
bnN0IFN0cmluZyYgcGx1Z2luUGF0aCkKLSAgICAgICAgOiBtX2FyZ3VtZW50cyhwbHVnaW5QYXRo
KQotICAgIHsKLSAgICB9Ci0KLSAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0
Ci0gICAgewotICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRlOgot
ICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKLX07Ci0KLWNsYXNzIFRlc3RNdWx0aXBsZUF0dHJp
YnV0ZXMgewotcHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTw+IEFyZ3VtZW50czsKLQot
ICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVybiBt
ZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2Ug
bmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJUZXN0TXVsdGlwbGVBdHRyaWJ1
dGVzIik7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSB0cnVlOwotCi0gICAgdXNp
bmcgRGVsYXllZFJlcGx5ID0gVGVzdE11bHRpcGxlQXR0cmlidXRlc0RlbGF5ZWRSZXBseTsKLSAg
ICBzdGF0aWMgdm9pZCBzZW5kKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiYsIElQQzo6
Q29ubmVjdGlvbiYpOwotICAgIHVzaW5nIFJlcGx5ID0gc3RkOjp0dXBsZTw+OwotICAgIHVzaW5n
IFJlcGx5QXJndW1lbnRzID0gc3RkOjp0dXBsZTw+OwotICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJn
dW1lbnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAgICB9
Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLQotY2xhc3MgVGVz
dFBhcmFtZXRlckF0dHJpYnV0ZXMgewotcHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTx1
aW50NjRfdCwgZG91YmxlLCBkb3VibGU+IEFyZ3VtZW50czsKLQotICAgIHN0YXRpYyBJUEM6OlN0
cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1l
KCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQ
Qzo6U3RyaW5nUmVmZXJlbmNlKCJUZXN0UGFyYW1ldGVyQXR0cmlidXRlcyIpOyB9Ci0gICAgc3Rh
dGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7Ci0KLSAgICBUZXN0UGFyYW1ldGVyQXR0cmli
dXRlcyh1aW50NjRfdCBmb28sIGRvdWJsZSBiYXIsIGRvdWJsZSBiYXopCi0gICAgICAgIDogbV9h
cmd1bWVudHMoZm9vLCBiYXIsIGJheikKLSAgICB7Ci0gICAgfQotCi0gICAgY29uc3QgQXJndW1l
bnRzJiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRz
OwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19OwotCi1j
bGFzcyBUZW1wbGF0ZVRlc3QgewotcHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxjb25z
dCBIYXNoTWFwPFN0cmluZywgc3RkOjpwYWlyPFN0cmluZywgdWludDY0X3Q+PiY+IEFyZ3VtZW50
czsKLQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJl
dHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZl
cmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJUZW1wbGF0ZVRlc3Qi
KTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOwotCi0gICAgZXhwbGlj
aXQgVGVtcGxhdGVUZXN0KGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBzdGQ6OnBhaXI8U3RyaW5nLCB1
aW50NjRfdD4+JiBhKQotICAgICAgICA6IG1fYXJndW1lbnRzKGEpCi0gICAgewotICAgIH0KLQot
ICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJn
dW1lbnRzOwotfTsKLQotY2xhc3MgU2V0VmlkZW9MYXllcklEIHsKLXB1YmxpYzoKLSAgICB0eXBl
ZGVmIHN0ZDo6dHVwbGU8Y29uc3QgV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXll
cklEJj4gQXJndW1lbnRzOwotCi0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2Vp
dmVyTmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsgfQotICAgIHN0YXRpYyBJ
UEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2Uo
IlNldFZpZGVvTGF5ZXJJRCIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFs
c2U7Ci0KLSAgICBleHBsaWNpdCBTZXRWaWRlb0xheWVySUQoY29uc3QgV2ViQ29yZTo6R3JhcGhp
Y3NMYXllcjo6UGxhdGZvcm1MYXllcklEJiB2aWRlb0xheWVySUQpCi0gICAgICAgIDogbV9hcmd1
bWVudHModmlkZW9MYXllcklEKQotICAgIHsKLSAgICB9Ci0KLSAgICBjb25zdCBBcmd1bWVudHMm
IGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7Ci0g
ICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKLX07Ci0KLSNpZiBQ
TEFURk9STShNQUMpCi1jbGFzcyBEaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbiB7Ci1wdWJs
aWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGNvbnN0IElQQzo6TWFjaFBvcnQmPiBBcmd1bWVu
dHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyBy
ZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVm
ZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiRGlkQ3JlYXRlV2Vi
UHJvY2Vzc0Nvbm5lY3Rpb24iKTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZh
bHNlOwotCi0gICAgZXhwbGljaXQgRGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oY29uc3Qg
SVBDOjpNYWNoUG9ydCYgY29ubmVjdGlvbklkZW50aWZpZXIpCi0gICAgICAgIDogbV9hcmd1bWVu
dHMoY29ubmVjdGlvbklkZW50aWZpZXIpCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0IEFyZ3Vt
ZW50cyYgYXJndW1lbnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50
czsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLSNl
bmRpZgotCi0jaWYgUExBVEZPUk0oTUFDKQotY2xhc3MgSW50ZXJwcmV0S2V5RXZlbnQgewotcHVi
bGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTx1aW50MzJfdD4gQXJndW1lbnRzOwotCi0gICAg
c3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3Nh
Z2VSZWNlaXZlck5hbWUoKTsgfQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1l
KCkgeyByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIkludGVycHJldEtleUV2ZW50Iik7IH0K
LSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSB0cnVlOwotCi0gICAgdXNpbmcgUmVwbHkg
PSBzdGQ6OnR1cGxlPFZlY3RvcjxXZWJDb3JlOjpLZXlwcmVzc0NvbW1hbmQ+Jj47Ci0gICAgdXNp
bmcgUmVwbHlBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPFZlY3RvcjxXZWJDb3JlOjpLZXlwcmVzc0Nv
bW1hbmQ+PjsKLSAgICBleHBsaWNpdCBJbnRlcnByZXRLZXlFdmVudCh1aW50MzJfdCB0eXBlKQot
ICAgICAgICA6IG1fYXJndW1lbnRzKHR5cGUpCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0IEFy
Z3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3Vt
ZW50czsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsK
LSNlbmRpZgotCi0jaWYgRU5BQkxFKERFUFJFQ0FURURfRkVBVFVSRSkKLWNsYXNzIERlcHJlY2F0
ZWRPcGVyYXRpb24gewotcHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBJUEM6
OkR1bW15VHlwZSY+IEFyZ3VtZW50czsKLQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5j
ZSByZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBz
dGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVm
ZXJlbmNlKCJEZXByZWNhdGVkT3BlcmF0aW9uIik7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBp
c1N5bmMgPSBmYWxzZTsKLQotICAgIGV4cGxpY2l0IERlcHJlY2F0ZWRPcGVyYXRpb24oY29uc3Qg
SVBDOjpEdW1teVR5cGUmIGR1bW15KQotICAgICAgICA6IG1fYXJndW1lbnRzKGR1bW15KQotICAg
IHsKLSAgICB9Ci0KLSAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAg
ewotICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFy
Z3VtZW50cyBtX2FyZ3VtZW50czsKLX07Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShFWFBFUklNRU5U
QUxfRkVBVFVSRSkKLWNsYXNzIEV4cGVyaW1lbnRhbE9wZXJhdGlvbiB7Ci1wdWJsaWM6Ci0gICAg
dHlwZWRlZiBzdGQ6OnR1cGxlPGNvbnN0IElQQzo6RHVtbXlUeXBlJj4gQXJndW1lbnRzOwotCi0g
ICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1l
c3NhZ2VSZWNlaXZlck5hbWUoKTsgfQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBu
YW1lKCkgeyByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIkV4cGVyaW1lbnRhbE9wZXJhdGlv
biIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7Ci0KLSAgICBleHBs
aWNpdCBFeHBlcmltZW50YWxPcGVyYXRpb24oY29uc3QgSVBDOjpEdW1teVR5cGUmIGR1bW15KQot
ICAgICAgICA6IG1fYXJndW1lbnRzKGR1bW15KQotICAgIHsKLSAgICB9Ci0KLSAgICBjb25zdCBB
cmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9hcmd1
bWVudHM7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKLX07
Ci0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgV2ViUGFnZQotfSAvLyBuYW1lc3BhY2UgTWVzc2Fn
ZXMKLQotI2VuZGlmIC8vIChFTkFCTEUoV0VCS0lUMikgJiYgKE5FU1RFRF9NQVNURVJfQ09ORElU
SU9OIHx8IE1BU1RFUl9PUiAmJiBNQVNURVJfQU5EKSkKClByb3BlcnR5IGNoYW5nZXMgb246IFNv
dXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvTWVzc2FnZXMtZXhwZWN0ZWQuaApfX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
CkRlbGV0ZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTEgKzAsMCAjIwotbmF0aXZlClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQv
TWVzc2FnZXNSZXBsaWVzLWV4cGVjdGVkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9T
Y3JpcHRzL3dlYmtpdC9NZXNzYWdlc1JlcGxpZXMtZXhwZWN0ZWQuaAkocmV2aXNpb24gMjYwNzY0
KQorKysgU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9NZXNzYWdlc1JlcGxpZXMtZXhwZWN0
ZWQuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDQzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTAtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnIEFORAotICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0gKiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0gKiBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUgotICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSAqIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksCi0gKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
cHJhZ21hIG9uY2UKLQotI2lmIChFTkFCTEUoV0VCS0lUMikgJiYgKE5FU1RFRF9NQVNURVJfQ09O
RElUSU9OIHx8IE1BU1RFUl9PUiAmJiBNQVNURVJfQU5EKSkKLQotI2luY2x1ZGUgIkNvbm5lY3Rp
b24uaCIKLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotCi0KLW5hbWVzcGFjZSBNZXNzYWdlcyB7
Ci1uYW1lc3BhY2UgV2ViUGFnZSB7Ci0KLXVzaW5nIEdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9u
RGVsYXllZFJlcGx5ID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkNvbm5lY3Rp
b246OkhhbmRsZSYgY29ubmVjdGlvbkhhbmRsZSk+OwotCi11c2luZyBUZXN0TXVsdGlwbGVBdHRy
aWJ1dGVzRGVsYXllZFJlcGx5ID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPjsKLQotfSAvLyBu
YW1lc3BhY2UgV2ViUGFnZQotfSAvLyBuYW1lc3BhY2UgTWVzc2FnZXMKLQotI2VuZGlmIC8vIChF
TkFCTEUoV0VCS0lUMikgJiYgKE5FU1RFRF9NQVNURVJfQ09ORElUSU9OIHx8IE1BU1RFUl9PUiAm
JiBNQVNURVJfQU5EKSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvTWVzc2Fn
ZXNSZXBsaWVzU3VwZXJjbGFzc1JlcGxpZXMtZXhwZWN0ZWQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L01lc3NhZ2VzUmVwbGllc1N1cGVyY2xhc3NSZXBsaWVz
LWV4cGVjdGVkLmgJKHJldmlzaW9uIDI2MDc2NCkKKysrIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93
ZWJraXQvTWVzc2FnZXNSZXBsaWVzU3VwZXJjbGFzc1JlcGxpZXMtZXhwZWN0ZWQuaAkobm9uZXhp
c3RlbnQpCkBAIC0xLDUyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnIEFORAotICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
LSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0gKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0gKiBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUgotICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0gKiBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UK
LQotI2luY2x1ZGUgIlRlc3RDbGFzc05hbWUuaCIKLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgot
I2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgotCi0KLW5hbWVzcGFjZSBNZXNzYWdlcyB7Ci1uYW1l
c3BhY2UgV2ViUGFnZSB7Ci0KLSNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQotdXNpbmcgVGVzdEFz
eW5jTWVzc2FnZUFzeW5jUmVwbHkgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90IHJl
c3VsdCk+OwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQotdXNpbmcgVGVzdEFz
eW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50c0FzeW5jUmVwbHkgPSBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+OwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQotdXNpbmcgVGVzdEFz
eW5jTWVzc2FnZVdpdGhNdWx0aXBsZUFyZ3VtZW50c0FzeW5jUmVwbHkgPSBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wgZmxhZywgdWludDY0X3QgdmFsdWUpPjsKLSNlbmRpZgotCi11c2luZyBU
ZXN0U3luY01lc3NhZ2VEZWxheWVkUmVwbHkgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ4
X3QgcmVwbHkpPjsKLQotdXNpbmcgVGVzdFN5bmNocm9ub3VzTWVzc2FnZURlbGF5ZWRSZXBseSA9
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgT3B0aW9uYWw8V2ViS2l0OjpUZXN0Q2xhc3NO
YW1lPiYgb3B0aW9uYWxSZXBseSk+OwotCi19IC8vIG5hbWVzcGFjZSBXZWJQYWdlCi19IC8vIG5h
bWVzcGFjZSBNZXNzYWdlcwpJbmRleDogU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9NZXNz
YWdlc1N1cGVyY2xhc3MtZXhwZWN0ZWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1Nj
cmlwdHMvd2Via2l0L01lc3NhZ2VzU3VwZXJjbGFzcy1leHBlY3RlZC5oCShyZXZpc2lvbiAyNjA3
NjQpCisrKyBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L01lc3NhZ2VzU3VwZXJjbGFzcy1l
eHBlY3RlZC5oCShub25leGlzdGVudCkKQEAgLTEsMjA2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTAtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAotICogQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
LSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0gKiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
Ci0gKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUgotICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSAqIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksCi0gKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCi0jaW5jbHVk
ZSAiQ29ubmVjdGlvbi5oIgotI2luY2x1ZGUgIlRlc3RDbGFzc05hbWUuaCIKLSNpbmNsdWRlICJX
ZWJQYWdlTWVzc2FnZXNSZXBsaWVzLmgiCi0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNs
dWRlIDx3dGYvT3B0aW9uYWwuaD4KLSNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQu
aD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7
Ci1lbnVtIGNsYXNzIFRlc3RUd29TdGF0ZUVudW0gOiBib29sOwotfQotCi1uYW1lc3BhY2UgTWVz
c2FnZXMgewotbmFtZXNwYWNlIFdlYlBhZ2UgewotCi1zdGF0aWMgaW5saW5lIElQQzo6U3RyaW5n
UmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUoKQotewotICAgIHJldHVybiBJUEM6OlN0cmlu
Z1JlZmVyZW5jZSgiV2ViUGFnZSIpOwotfQotCi1jbGFzcyBMb2FkVVJMIHsKLXB1YmxpYzoKLSAg
ICB0eXBlZGVmIHN0ZDo6dHVwbGU8Y29uc3QgU3RyaW5nJj4gQXJndW1lbnRzOwotCi0gICAgc3Rh
dGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VS
ZWNlaXZlck5hbWUoKTsgfQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkg
eyByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIkxvYWRVUkwiKTsgfQotICAgIHN0YXRpYyBj
b25zdCBib29sIGlzU3luYyA9IGZhbHNlOwotCi0gICAgZXhwbGljaXQgTG9hZFVSTChjb25zdCBT
dHJpbmcmIHVybCkKLSAgICAgICAgOiBtX2FyZ3VtZW50cyh1cmwpCi0gICAgewotICAgIH0KLQot
ICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJn
dW1lbnRzOwotfTsKLQotI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCi1jbGFzcyBUZXN0QXN5bmNN
ZXNzYWdlIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8V2ViS2l0OjpUZXN0VHdv
U3RhdGVFbnVtPiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2Ug
cmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAgc3Rh
dGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVy
ZW5jZSgiVGVzdEFzeW5jTWVzc2FnZSIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5j
ID0gZmFsc2U7Ci0KLSAgICBzdGF0aWMgdm9pZCBjYWxsUmVwbHkoSVBDOjpEZWNvZGVyJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCYmKT4mJik7Ci0gICAgc3RhdGljIHZvaWQgY2Fu
Y2VsUmVwbHkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCYmKT4mJik7Ci0gICAgc3Rh
dGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIGFzeW5jTWVzc2FnZVJlcGx5TmFtZSgpIHsgcmV0dXJu
IHsgIlRlc3RBc3luY01lc3NhZ2VSZXBseSIgfTsgfQotICAgIHVzaW5nIEFzeW5jUmVwbHkgPSBU
ZXN0QXN5bmNNZXNzYWdlQXN5bmNSZXBseTsKLSAgICBzdGF0aWMgdm9pZCBzZW5kKHN0ZDo6dW5p
cXVlX3B0cjxJUEM6OkVuY29kZXI+JiYsIElQQzo6Q29ubmVjdGlvbiYsIHVpbnQ2NF90IHJlc3Vs
dCk7Ci0gICAgdXNpbmcgUmVwbHkgPSBzdGQ6OnR1cGxlPHVpbnQ2NF90Jj47Ci0gICAgdXNpbmcg
UmVwbHlBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPHVpbnQ2NF90PjsKLSAgICBleHBsaWNpdCBUZXN0
QXN5bmNNZXNzYWdlKFdlYktpdDo6VGVzdFR3b1N0YXRlRW51bSB0d29TdGF0ZUVudW0pCi0gICAg
ICAgIDogbV9hcmd1bWVudHModHdvU3RhdGVFbnVtKQotICAgIHsKLSAgICB9Ci0KLSAgICBjb25z
dCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9h
cmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsK
LX07Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCi1jbGFzcyBUZXN0QXN5bmNN
ZXNzYWdlV2l0aE5vQXJndW1lbnRzIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8
PiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJO
YW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6
U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiVGVz
dEFzeW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50cyIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wg
aXNTeW5jID0gZmFsc2U7Ci0KLSAgICBzdGF0aWMgdm9pZCBjYWxsUmVwbHkoSVBDOjpEZWNvZGVy
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICBzdGF0aWMgdm9pZCBjYW5jZWxS
ZXBseShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHN0YXRpYyBJUEM6OlN0cmlu
Z1JlZmVyZW5jZSBhc3luY01lc3NhZ2VSZXBseU5hbWUoKSB7IHJldHVybiB7ICJUZXN0QXN5bmNN
ZXNzYWdlV2l0aE5vQXJndW1lbnRzUmVwbHkiIH07IH0KLSAgICB1c2luZyBBc3luY1JlcGx5ID0g
VGVzdEFzeW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50c0FzeW5jUmVwbHk7Ci0gICAgc3RhdGljIHZv
aWQgc2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYmLCBJUEM6OkNvbm5lY3Rpb24m
KTsKLSAgICB1c2luZyBSZXBseSA9IHN0ZDo6dHVwbGU8PjsKLSAgICB1c2luZyBSZXBseUFyZ3Vt
ZW50cyA9IHN0ZDo6dHVwbGU8PjsKLSAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNv
bnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRl
OgotICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKLX07Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShU
RVNUX0ZFQVRVUkUpCi1jbGFzcyBUZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1lbnRz
IHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8PiBBcmd1bWVudHM7Ci0KLSAgICBz
dGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUo
KSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiVGVzdEFzeW5jTWVzc2FnZVdpdGhNdWx0
aXBsZUFyZ3VtZW50cyIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7
Ci0KLSAgICBzdGF0aWMgdm9pZCBjYWxsUmVwbHkoSVBDOjpEZWNvZGVyJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sJiYsIHVpbnQ2NF90JiYpPiYmKTsKLSAgICBzdGF0aWMgdm9pZCBjYW5j
ZWxSZXBseShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wmJiwgdWludDY0X3QmJik+JiYpOwot
ICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBhc3luY01lc3NhZ2VSZXBseU5hbWUoKSB7
IHJldHVybiB7ICJUZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1lbnRzUmVwbHkiIH07
IH0KLSAgICB1c2luZyBBc3luY1JlcGx5ID0gVGVzdEFzeW5jTWVzc2FnZVdpdGhNdWx0aXBsZUFy
Z3VtZW50c0FzeW5jUmVwbHk7Ci0gICAgc3RhdGljIHZvaWQgc2VuZChzdGQ6OnVuaXF1ZV9wdHI8
SVBDOjpFbmNvZGVyPiYmLCBJUEM6OkNvbm5lY3Rpb24mLCBib29sIGZsYWcsIHVpbnQ2NF90IHZh
bHVlKTsKLSAgICB1c2luZyBSZXBseSA9IHN0ZDo6dHVwbGU8Ym9vbCYsIHVpbnQ2NF90Jj47Ci0g
ICAgdXNpbmcgUmVwbHlBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPGJvb2wsIHVpbnQ2NF90PjsKLSAg
ICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1
cm4gbV9hcmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3Vt
ZW50czsKLX07Ci0jZW5kaWYKLQotY2xhc3MgVGVzdFN5bmNNZXNzYWdlIHsKLXB1YmxpYzoKLSAg
ICB0eXBlZGVmIHN0ZDo6dHVwbGU8dWludDMyX3Q+IEFyZ3VtZW50czsKLQotICAgIHN0YXRpYyBJ
UEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2
ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0
dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJUZXN0U3luY01lc3NhZ2UiKTsgfQotICAgIHN0YXRp
YyBjb25zdCBib29sIGlzU3luYyA9IHRydWU7Ci0KLSAgICB1c2luZyBEZWxheWVkUmVwbHkgPSBU
ZXN0U3luY01lc3NhZ2VEZWxheWVkUmVwbHk7Ci0gICAgc3RhdGljIHZvaWQgc2VuZChzdGQ6OnVu
aXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYmLCBJUEM6OkNvbm5lY3Rpb24mLCB1aW50OF90IHJlcGx5
KTsKLSAgICB1c2luZyBSZXBseSA9IHN0ZDo6dHVwbGU8dWludDhfdCY+OwotICAgIHVzaW5nIFJl
cGx5QXJndW1lbnRzID0gc3RkOjp0dXBsZTx1aW50OF90PjsKLSAgICBleHBsaWNpdCBUZXN0U3lu
Y01lc3NhZ2UodWludDMyX3QgcGFyYW0pCi0gICAgICAgIDogbV9hcmd1bWVudHMocGFyYW0pCi0g
ICAgewotICAgIH0KLQotICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAg
QXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLQotY2xhc3MgVGVzdFN5bmNocm9ub3VzTWVzc2Fn
ZSB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGJvb2w+IEFyZ3VtZW50czsKLQot
ICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVybiBt
ZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2Ug
bmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJUZXN0U3luY2hyb25vdXNNZXNz
YWdlIik7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSB0cnVlOwotCi0gICAgdXNp
bmcgRGVsYXllZFJlcGx5ID0gVGVzdFN5bmNocm9ub3VzTWVzc2FnZURlbGF5ZWRSZXBseTsKLSAg
ICBzdGF0aWMgdm9pZCBzZW5kKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiYsIElQQzo6
Q29ubmVjdGlvbiYsIGNvbnN0IE9wdGlvbmFsPFdlYktpdDo6VGVzdENsYXNzTmFtZT4mIG9wdGlv
bmFsUmVwbHkpOwotICAgIHVzaW5nIFJlcGx5ID0gc3RkOjp0dXBsZTxPcHRpb25hbDxXZWJLaXQ6
OlRlc3RDbGFzc05hbWU+Jj47Ci0gICAgdXNpbmcgUmVwbHlBcmd1bWVudHMgPSBzdGQ6OnR1cGxl
PE9wdGlvbmFsPFdlYktpdDo6VGVzdENsYXNzTmFtZT4+OwotICAgIGV4cGxpY2l0IFRlc3RTeW5j
aHJvbm91c01lc3NhZ2UoYm9vbCB2YWx1ZSkKLSAgICAgICAgOiBtX2FyZ3VtZW50cyh2YWx1ZSkK
LSAgICB7Ci0gICAgfQotCi0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAot
ICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAg
ICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJQYWdlCi19
IC8vIG5hbWVzcGFjZSBNZXNzYWdlcwoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dlYktp
dC9TY3JpcHRzL3dlYmtpdC9NZXNzYWdlc1N1cGVyY2xhc3MtZXhwZWN0ZWQuaApfX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
CkRlbGV0ZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTEgKzAsMCAjIwotbmF0aXZlClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQv
bWVzc2FnZXMucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9t
ZXNzYWdlcy5weQkocmV2aXNpb24gMjYwNzY0KQorKysgU291cmNlL1dlYktpdC9TY3JpcHRzL3dl
YmtpdC9tZXNzYWdlcy5weQkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQCBTWU5DSFJP
Tk9VU19BVFRSSUJVVEUgPSAnU3luY2hyb25vdXMnCiBBU1lOQ19BVFRSSUJVVEUgPSAnQXN5bmMn
CiAKIF9saWNlbnNlX2hlYWRlciA9ICIiIi8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTEzNCw3ICsxMzQsNyBAQCBkZWYgbWVzc2FnZV90b19yZXBseV9mb3J3YXJk
X2RlY2xhcmF0aW9uCiAgICAgcmV0dXJuIHN1cnJvdW5kX2luX2NvbmRpdGlvbignJy5qb2luKHJl
c3VsdCksIG1lc3NhZ2UuY29uZGl0aW9uKQogCiAKLWRlZiBtZXNzYWdlX3RvX3N0cnVjdF9kZWNs
YXJhdGlvbihtZXNzYWdlKToKK2RlZiBtZXNzYWdlX3RvX3N0cnVjdF9kZWNsYXJhdGlvbihyZWNl
aXZlciwgbWVzc2FnZSk6CiAgICAgcmVzdWx0ID0gW10KICAgICBmdW5jdGlvbl9wYXJhbWV0ZXJz
ID0gWyhmdW5jdGlvbl9wYXJhbWV0ZXJfdHlwZSh4LnR5cGUsIHgua2luZCksIHgubmFtZSkgZm9y
IHggaW4gbWVzc2FnZS5wYXJhbWV0ZXJzXQogCkBAIC0xNDIsOCArMTQyLDcgQEAgZGVmIG1lc3Nh
Z2VfdG9fc3RydWN0X2RlY2xhcmF0aW9uKG1lc3NhZwogICAgIHJlc3VsdC5hcHBlbmQoJ3B1Ymxp
YzpcbicpCiAgICAgcmVzdWx0LmFwcGVuZCgnICAgIHR5cGVkZWYgJXMgQXJndW1lbnRzO1xuJyAl
IGFyZ3VtZW50c190eXBlKG1lc3NhZ2UpKQogICAgIHJlc3VsdC5hcHBlbmQoJ1xuJykKLSAgICBy
ZXN1bHQuYXBwZW5kKCcgICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFt
ZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsgfVxuJykKLSAgICByZXN1bHQuYXBw
ZW5kKCcgICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6
OlN0cmluZ1JlZmVyZW5jZSgiJXMiKTsgfVxuJyAlIG1lc3NhZ2UubmFtZSkKKyAgICByZXN1bHQu
YXBwZW5kKCcgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6
TWVzc2FnZU5hbWU6OiVzXyVzOyB9XG4nICUgKHJlY2VpdmVyLm5hbWUsIG1lc3NhZ2UubmFtZSkp
CiAgICAgcmVzdWx0LmFwcGVuZCgnICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9ICVzO1xu
JyAlICgnZmFsc2UnLCAndHJ1ZScpW21lc3NhZ2UucmVwbHlfcGFyYW1ldGVycyAhPSBOb25lIGFu
ZCBub3QgbWVzc2FnZS5oYXNfYXR0cmlidXRlKEFTWU5DX0FUVFJJQlVURSldKQogICAgIHJlc3Vs
dC5hcHBlbmQoJ1xuJykKICAgICBpZiBtZXNzYWdlLnJlcGx5X3BhcmFtZXRlcnMgIT0gTm9uZToK
QEAgLTE1Myw3ICsxNTIsNyBAQCBkZWYgbWVzc2FnZV90b19zdHJ1Y3RfZGVjbGFyYXRpb24obWVz
c2FnCiAgICAgICAgICAgICBtb3ZlX3BhcmFtZXRlcnMgPSAnLCAnLmpvaW4oW21vdmVfdHlwZSh4
LnR5cGUpIGZvciB4IGluIG1lc3NhZ2UucmVwbHlfcGFyYW1ldGVyc10pCiAgICAgICAgICAgICBy
ZXN1bHQuYXBwZW5kKCcgICAgc3RhdGljIHZvaWQgY2FsbFJlcGx5KElQQzo6RGVjb2RlciYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoJXMpPiYmKTtcbicgJSBtb3ZlX3BhcmFtZXRlcnMpCiAgICAg
ICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgc3RhdGljIHZvaWQgY2FuY2VsUmVwbHkoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCglcyk+JiYpO1xuJyAlIG1vdmVfcGFyYW1ldGVycykKLSAgICAgICAg
ICAgIHJlc3VsdC5hcHBlbmQoJyAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgYXN5bmNN
ZXNzYWdlUmVwbHlOYW1lKCkgeyByZXR1cm4geyAiJXNSZXBseSIgfTsgfVxuJyAlIG1lc3NhZ2Uu
bmFtZSkKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBzdGF0aWMgSVBDOjpNZXNzYWdl
TmFtZSBhc3luY01lc3NhZ2VSZXBseU5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjol
c18lc1JlcGx5OyB9XG4nICUgKHJlY2VpdmVyLm5hbWUsIG1lc3NhZ2UubmFtZSkpCiAgICAgICAg
ICAgICByZXN1bHQuYXBwZW5kKCcgICAgdXNpbmcgQXN5bmNSZXBseSA9ICVzQXN5bmNSZXBseTtc
bicgJSBtZXNzYWdlLm5hbWUpCiAgICAgICAgIGVsaWYgbWVzc2FnZS5oYXNfYXR0cmlidXRlKFNZ
TkNIUk9OT1VTX0FUVFJJQlVURSk6CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgdXNp
bmcgRGVsYXllZFJlcGx5ID0gJXNEZWxheWVkUmVwbHk7XG4nICUgbWVzc2FnZS5uYW1lKQpAQCAt
Mjc3LDggKzI3Niw5IEBAIGRlZiBmb3J3YXJkX2RlY2xhcmF0aW9uc19hbmRfaGVhZGVycyhyZWMK
IAogICAgIGhlYWRlcnMgPSBzZXQoWwogICAgICAgICAnIkFyZ3VtZW50Q29kZXJzLmgiJywKLSAg
ICAgICAgJzx3dGYvRm9yd2FyZC5oPicsCiAgICAgICAgICciQ29ubmVjdGlvbi5oIicsCisgICAg
ICAgICciTWVzc2FnZU5hbWVzLmgiJywKKyAgICAgICAgJzx3dGYvRm9yd2FyZC5oPicsCiAgICAg
ICAgICc8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+JywKICAgICAgICAgJyIlc01lc3NhZ2Vz
UmVwbGllcy5oIicgJSByZWNlaXZlci5uYW1lLAogICAgIF0pCkBAIC0zMzUsNiArMzM1LDcgQEAg
ZGVmIGZvcndhcmRfZGVjbGFyYXRpb25zX2FuZF9oZWFkZXJzX2ZvcgogCiAgICAgaGVhZGVycyA9
IHNldChbCiAgICAgICAgICc8d3RmL0ZvcndhcmQuaD4nLAorICAgICAgICAnIk1lc3NhZ2VOYW1l
cy5oIicsCiAgICAgXSkKIAogICAgIG5vbl90ZW1wbGF0ZV93dGZfdHlwZXMgPSBmcm96ZW5zZXQo
WwpAQCAtNDQwLDEyICs0NDEsMTIgQEAgZGVmIGdlbmVyYXRlX21lc3NhZ2VzX2hlYWRlcihyZWNl
aXZlcik6CiAKICAgICByZXN1bHQuYXBwZW5kKCduYW1lc3BhY2UgTWVzc2FnZXMge1xubmFtZXNw
YWNlICVzIHtcbicgJSByZWNlaXZlci5uYW1lKQogICAgIHJlc3VsdC5hcHBlbmQoJ1xuJykKLSAg
ICByZXN1bHQuYXBwZW5kKCdzdGF0aWMgaW5saW5lIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3Nh
Z2VSZWNlaXZlck5hbWUoKVxuJykKKyAgICByZXN1bHQuYXBwZW5kKCdzdGF0aWMgaW5saW5lIElQ
Qzo6UmVjZWl2ZXJOYW1lIG1lc3NhZ2VSZWNlaXZlck5hbWUoKVxuJykKICAgICByZXN1bHQuYXBw
ZW5kKCd7XG4nKQotICAgIHJlc3VsdC5hcHBlbmQoJyAgICByZXR1cm4gSVBDOjpTdHJpbmdSZWZl
cmVuY2UoIiVzIik7XG4nICUgcmVjZWl2ZXIubmFtZSkKKyAgICByZXN1bHQuYXBwZW5kKCcgICAg
cmV0dXJuIElQQzo6UmVjZWl2ZXJOYW1lOjolcztcbicgJSByZWNlaXZlci5uYW1lKQogICAgIHJl
c3VsdC5hcHBlbmQoJ31cbicpCiAgICAgcmVzdWx0LmFwcGVuZCgnXG4nKQotICAgIHJlc3VsdC5h
cHBlbmQoJ1xuJy5qb2luKFttZXNzYWdlX3RvX3N0cnVjdF9kZWNsYXJhdGlvbih4KSBmb3IgeCBp
biByZWNlaXZlci5tZXNzYWdlc10pKQorICAgIHJlc3VsdC5hcHBlbmQoJ1xuJy5qb2luKFttZXNz
YWdlX3RvX3N0cnVjdF9kZWNsYXJhdGlvbihyZWNlaXZlciwgeCkgZm9yIHggaW4gcmVjZWl2ZXIu
bWVzc2FnZXNdKSkKICAgICByZXN1bHQuYXBwZW5kKCdcbicpCiAgICAgcmVzdWx0LmFwcGVuZCgn
fSAvLyBuYW1lc3BhY2UgJXNcbn0gLy8gbmFtZXNwYWNlIE1lc3NhZ2VzXG4nICUgcmVjZWl2ZXIu
bmFtZSkKIApAQCAtODQ3LDMgKzg0OCwxNjcgQEAgZGVmIGdlbmVyYXRlX21lc3NhZ2VfaGFuZGxl
cihyZWNlaXZlcik6CiAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ1xuI2VuZGlmIC8vICVzXG4nICUg
cmVjZWl2ZXIuY29uZGl0aW9uKQogCiAgICAgcmV0dXJuICcnLmpvaW4ocmVzdWx0KQorCisKK2Rl
ZiBnZW5lcmF0ZV9tZXNzYWdlX25hbWVzX2hlYWRlcihyZWNlaXZlcnMpOgorICAgIHJlc3VsdCA9
IFtdCisgICAgcmVzdWx0LmFwcGVuZChfbGljZW5zZV9oZWFkZXIpCisgICAgcmVzdWx0LmFwcGVu
ZCgnI3ByYWdtYSBvbmNlXG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJ1xuJykKKyAgICByZXN1bHQu
YXBwZW5kKCcjaW5jbHVkZSA8d3RmL0VudW1UcmFpdHMuaD5cbicpCisgICAgcmVzdWx0LmFwcGVu
ZCgnXG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJ25hbWVzcGFjZSBJUEMge1xuJykKKyAgICByZXN1
bHQuYXBwZW5kKCdcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnZW51bSBjbGFzcyBSZWNlaXZlck5h
bWUgOiB1aW50OF90IHsnKQorCisgICAgZW51bV92YWx1ZSA9IDEKKyAgICBmaXJzdF9yZWNlaXZl
ciA9IFRydWUKKyAgICBmb3IgcmVjZWl2ZXIgaW4gcmVjZWl2ZXJzOgorICAgICAgICByZXN1bHQu
YXBwZW5kKCdcbicpCisgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICAnKQorICAgICAgICBpZiBu
b3QgZmlyc3RfcmVjZWl2ZXI6CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcsICcpCisgICAg
ICAgIGZpcnN0X3JlY2VpdmVyID0gRmFsc2UKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgnJXMgPSAl
ZCcgJSAocmVjZWl2ZXIubmFtZSwgZW51bV92YWx1ZSkpCisgICAgICAgIGVudW1fdmFsdWUgPSBl
bnVtX3ZhbHVlICsgMQorICAgIHJlc3VsdC5hcHBlbmQoJ1xuICAgICwgSVBDID0gJWQnICUgZW51
bV92YWx1ZSkKKyAgICBlbnVtX3ZhbHVlID0gZW51bV92YWx1ZSArIDEKKyAgICByZXN1bHQuYXBw
ZW5kKCdcbiAgICAsIEFzeW5jUmVwbHkgPSAlZCcgJSBlbnVtX3ZhbHVlKQorICAgIGVudW1fdmFs
dWUgPSBlbnVtX3ZhbHVlICsgMQorICAgIHJlc3VsdC5hcHBlbmQoJ1xuICAgICwgSW52YWxpZCA9
ICVkJyAlIGVudW1fdmFsdWUpCisgICAgcmVzdWx0LmFwcGVuZCgnXG59O1xuJykKKyAgICByZXN1
bHQuYXBwZW5kKCdcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnZW51bSBjbGFzcyBNZXNzYWdlTmFt
ZSA6IHVpbnQxNl90IHsnKQorCisgICAgZW51bV92YWx1ZSA9IDEKKyAgICBmaXJzdF9tZXNzYWdl
ID0gVHJ1ZQorICAgIGZvciByZWNlaXZlciBpbiByZWNlaXZlcnM6CisgICAgICAgIGZvciBtZXNz
YWdlIGluIHJlY2VpdmVyLm1lc3NhZ2VzOgorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnXG4n
KQorICAgICAgICAgICAgaWYgbWVzc2FnZS5jb25kaXRpb246CisgICAgICAgICAgICAgICAgcmVz
dWx0LmFwcGVuZCgnI2lmICVzXG4nICUgbWVzc2FnZS5jb25kaXRpb24pCisgICAgICAgICAgICBy
ZXN1bHQuYXBwZW5kKCcgICAgJykKKyAgICAgICAgICAgIGlmIG5vdCBmaXJzdF9tZXNzYWdlOgor
ICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJywgJykKKyAgICAgICAgICAgIGZpcnN0X21l
c3NhZ2UgPSBGYWxzZQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnJXNfJXMgPSAlZCcgJSAo
cmVjZWl2ZXIubmFtZSwgbWVzc2FnZS5uYW1lLCBlbnVtX3ZhbHVlKSkKKyAgICAgICAgICAgIGVu
dW1fdmFsdWUgPSBlbnVtX3ZhbHVlICsgMQorICAgICAgICAgICAgaWYgbWVzc2FnZS5oYXNfYXR0
cmlidXRlKEFTWU5DX0FUVFJJQlVURSk6CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgn
XG4gICAgLCAlc18lc1JlcGx5ID0gJWQnICUgKHJlY2VpdmVyLm5hbWUsIG1lc3NhZ2UubmFtZSwg
ZW51bV92YWx1ZSkpCisgICAgICAgICAgICAgICAgZW51bV92YWx1ZSA9IGVudW1fdmFsdWUgKyAx
CisgICAgICAgICAgICBpZiBtZXNzYWdlLmNvbmRpdGlvbjoKKyAgICAgICAgICAgICAgICByZXN1
bHQuYXBwZW5kKCdcbiNlbmRpZicpCisgICAgcmVzdWx0LmFwcGVuZCgnXG4gICAgLCBXcmFwcGVk
QXN5bmNNZXNzYWdlRm9yVGVzdGluZyA9ICVkJyAlIGVudW1fdmFsdWUpCisgICAgZW51bV92YWx1
ZSA9IGVudW1fdmFsdWUgKyAxCisgICAgcmVzdWx0LmFwcGVuZCgnXG4gICAgLCBTeW5jTWVzc2Fn
ZVJlcGx5ID0gJWQnICUgZW51bV92YWx1ZSkKKyAgICBlbnVtX3ZhbHVlID0gZW51bV92YWx1ZSAr
IDEKKyAgICByZXN1bHQuYXBwZW5kKCdcbiAgICAsIEluaXRpYWxpemVDb25uZWN0aW9uID0gJWQn
ICUgZW51bV92YWx1ZSkKKyAgICByZXN1bHQuYXBwZW5kKCdcbn07XG4nKQorICAgIHJlc3VsdC5h
cHBlbmQoJ1xuJykKKyAgICByZXN1bHQuYXBwZW5kKCdSZWNlaXZlck5hbWUgcmVjZWl2ZXJOYW1l
KE1lc3NhZ2VOYW1lKTtcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnY29uc3QgY2hhciogZGVzY3Jp
cHRpb24oTWVzc2FnZU5hbWUpO1xuJykKKyAgICByZXN1bHQuYXBwZW5kKCdib29sIGlzVmFsaWRN
ZXNzYWdlTmFtZShNZXNzYWdlTmFtZSk7XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJ1xuJykKKyAg
ICByZXN1bHQuYXBwZW5kKCd9IC8vIG5hbWVzcGFjZSBJUENcbicpCisgICAgcmVzdWx0LmFwcGVu
ZCgnXG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJ25hbWVzcGFjZSBXVEYge1xuJykKKyAgICByZXN1
bHQuYXBwZW5kKCdcbicpCisgICAgcmVzdWx0LmFwcGVuZCgndGVtcGxhdGU8PlxuJykKKyAgICBy
ZXN1bHQuYXBwZW5kKCdjbGFzcyBIYXNDdXN0b21Jc1ZhbGlkRW51bTxJUEM6Ok1lc3NhZ2VOYW1l
PiA6IHB1YmxpYyBzdGQ6OnRydWVfdHlwZSB7IH07XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJ3Rl
bXBsYXRlPHR5cGVuYW1lIEUsIHR5cGVuYW1lIFQsIHR5cGVuYW1lID0gc3RkOjplbmFibGVfaWZf
dDxzdGQ6OmlzX3NhbWU8RSwgSVBDOjpNZXNzYWdlTmFtZT46OnZhbHVlPj5cbicpCisgICAgcmVz
dWx0LmFwcGVuZCgnYm9vbCBpc1ZhbGlkRW51bShUIG1lc3NhZ2VOYW1lKVxuJykKKyAgICByZXN1
bHQuYXBwZW5kKCd7XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJyAgICBzdGF0aWNfYXNzZXJ0KHNp
emVvZihUKSA9PSBzaXplb2YoSVBDOjpNZXNzYWdlTmFtZSksICJpc1ZhbGlkRW51bTxNZXNzYWdl
TmFtZT4gc2hvdWxkIG9ubHkgYmUgY2FsbGVkIHdpdGggMTYtYml0IHR5cGVzIik7XG4nKQorICAg
IHJlc3VsdC5hcHBlbmQoJyAgICByZXR1cm4gSVBDOjppc1ZhbGlkTWVzc2FnZU5hbWUoc3RhdGlj
X2Nhc3Q8SVBDOjpNZXNzYWdlTmFtZT4obWVzc2FnZU5hbWUpKTtcbicpCisgICAgcmVzdWx0LmFw
cGVuZCgnfTtcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnXG4nKQorICAgIHJlc3VsdC5hcHBlbmQo
J30gLy8gbmFtZXNwYWNlIFdURlxuJykKKyAgICByZXR1cm4gJycuam9pbihyZXN1bHQpCisKKwor
ZGVmIGdlbmVyYXRlX21lc3NhZ2VfbmFtZXNfaW1wbGVtZW50YXRpb24ocmVjZWl2ZXJzKToKKyAg
ICByZXN1bHQgPSBbXQorICAgIHJlc3VsdC5hcHBlbmQoX2xpY2Vuc2VfaGVhZGVyKQorICAgIHJl
c3VsdC5hcHBlbmQoJyNpbmNsdWRlICJjb25maWcuaCJcbicpCisgICAgcmVzdWx0LmFwcGVuZCgn
I2luY2x1ZGUgIk1lc3NhZ2VOYW1lcy5oIlxuJykKKyAgICByZXN1bHQuYXBwZW5kKCdcbicpCisg
ICAgcmVzdWx0LmFwcGVuZCgnbmFtZXNwYWNlIElQQyB7XG4nKQorICAgIHJlc3VsdC5hcHBlbmQo
J1xuJykKKyAgICByZXN1bHQuYXBwZW5kKCdjb25zdCBjaGFyKiBkZXNjcmlwdGlvbihNZXNzYWdl
TmFtZSBuYW1lKVxuJykKKyAgICByZXN1bHQuYXBwZW5kKCd7XG4nKQorICAgIHJlc3VsdC5hcHBl
bmQoJyAgICBzd2l0Y2ggKG5hbWUpIHtcbicpCisgICAgZm9yIHJlY2VpdmVyIGluIHJlY2VpdmVy
czoKKyAgICAgICAgZm9yIG1lc3NhZ2UgaW4gcmVjZWl2ZXIubWVzc2FnZXM6CisgICAgICAgICAg
ICBpZiBtZXNzYWdlLmNvbmRpdGlvbjoKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcj
aWYgJXNcbicgJSBtZXNzYWdlLmNvbmRpdGlvbikKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQo
JyAgICBjYXNlIE1lc3NhZ2VOYW1lOjolc18lczpcbicgJSAocmVjZWl2ZXIubmFtZSwgbWVzc2Fn
ZS5uYW1lKSkKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICAgICAgcmV0dXJuICIlczo6
JXMiO1xuJyAlIChyZWNlaXZlci5uYW1lLCBtZXNzYWdlLm5hbWUpKQorICAgICAgICAgICAgaWYg
bWVzc2FnZS5oYXNfYXR0cmlidXRlKEFTWU5DX0FUVFJJQlVURSk6CisgICAgICAgICAgICAgICAg
cmVzdWx0LmFwcGVuZCgnICAgIGNhc2UgTWVzc2FnZU5hbWU6OiVzXyVzUmVwbHk6XG4nICUgKHJl
Y2VpdmVyLm5hbWUsIG1lc3NhZ2UubmFtZSkpCisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVu
ZCgnICAgICAgICByZXR1cm4gIiVzOjolc1JlcGx5IjtcbicgJSAocmVjZWl2ZXIubmFtZSwgbWVz
c2FnZS5uYW1lKSkKKyAgICAgICAgICAgIGlmIG1lc3NhZ2UuY29uZGl0aW9uOgorICAgICAgICAg
ICAgICAgIHJlc3VsdC5hcHBlbmQoJyNlbmRpZlxuJykKKyAgICByZXN1bHQuYXBwZW5kKCcgICAg
Y2FzZSBNZXNzYWdlTmFtZTo6V3JhcHBlZEFzeW5jTWVzc2FnZUZvclRlc3Rpbmc6XG4nKQorICAg
IHJlc3VsdC5hcHBlbmQoJyAgICAgICAgcmV0dXJuICJJUEM6OldyYXBwZWRBc3luY01lc3NhZ2VG
b3JUZXN0aW5nIjtcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnICAgIGNhc2UgTWVzc2FnZU5hbWU6
OlN5bmNNZXNzYWdlUmVwbHk6XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJyAgICAgICAgcmV0dXJu
ICJJUEM6OlN5bmNNZXNzYWdlUmVwbHkiO1xuJykKKyAgICByZXN1bHQuYXBwZW5kKCcgICAgY2Fz
ZSBNZXNzYWdlTmFtZTo6SW5pdGlhbGl6ZUNvbm5lY3Rpb246XG4nKQorICAgIHJlc3VsdC5hcHBl
bmQoJyAgICAgICAgcmV0dXJuICJJUEM6OkluaXRpYWxpemVDb25uZWN0aW9uIjtcbicpCisgICAg
cmVzdWx0LmFwcGVuZCgnICAgIH1cbicpCisgICAgcmVzdWx0LmFwcGVuZCgnICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpO1xuJykKKyAgICByZXN1bHQuYXBwZW5kKCcgICAgcmV0dXJuICI8aW52YWxp
ZCBtZXNzYWdlIG5hbWU+IjtcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnfVxuJykKKyAgICByZXN1
bHQuYXBwZW5kKCdcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnUmVjZWl2ZXJOYW1lIHJlY2VpdmVy
TmFtZShNZXNzYWdlTmFtZSBtZXNzYWdlTmFtZSlcbicpCisgICAgcmVzdWx0LmFwcGVuZCgne1xu
JykKKyAgICByZXN1bHQuYXBwZW5kKCcgICAgc3dpdGNoIChtZXNzYWdlTmFtZSkge1xuJykKKyAg
ICBmb3IgcmVjZWl2ZXIgaW4gcmVjZWl2ZXJzOgorICAgICAgICBmb3IgbWVzc2FnZSBpbiByZWNl
aXZlci5tZXNzYWdlczoKKyAgICAgICAgICAgIGlmIG1lc3NhZ2UuY29uZGl0aW9uOgorICAgICAg
ICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyNpZiAlc1xuJyAlIG1lc3NhZ2UuY29uZGl0aW9uKQor
ICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIGNhc2UgTWVzc2FnZU5hbWU6OiVzXyVzOlxu
JyAlIChyZWNlaXZlci5uYW1lLCBtZXNzYWdlLm5hbWUpKQorICAgICAgICAgICAgaWYgbWVzc2Fn
ZS5jb25kaXRpb246CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnI2VuZGlmXG4nKQor
ICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgICAgIHJldHVybiBSZWNlaXZlck5hbWU6OiVzO1xu
JyAlIHJlY2VpdmVyLm5hbWUpCisgICAgZm9yIHJlY2VpdmVyIGluIHJlY2VpdmVyczoKKyAgICAg
ICAgZm9yIG1lc3NhZ2UgaW4gcmVjZWl2ZXIubWVzc2FnZXM6CisgICAgICAgICAgICBpZiBtZXNz
YWdlLmhhc19hdHRyaWJ1dGUoQVNZTkNfQVRUUklCVVRFKToKKyAgICAgICAgICAgICAgICBpZiBt
ZXNzYWdlLmNvbmRpdGlvbjoKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnI2lm
ICVzXG4nICUgbWVzc2FnZS5jb25kaXRpb24pCisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVu
ZCgnICAgIGNhc2UgTWVzc2FnZU5hbWU6OiVzXyVzUmVwbHk6XG4nICUgKHJlY2VpdmVyLm5hbWUs
IG1lc3NhZ2UubmFtZSkpCisgICAgICAgICAgICAgICAgaWYgbWVzc2FnZS5jb25kaXRpb246Cisg
ICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyNlbmRpZlxuJykKKyAgICByZXN1bHQu
YXBwZW5kKCcgICAgICAgIHJldHVybiBSZWNlaXZlck5hbWU6OkFzeW5jUmVwbHk7XG4nKQorICAg
IHJlc3VsdC5hcHBlbmQoJyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXcmFwcGVkQXN5bmNNZXNzYWdl
Rm9yVGVzdGluZzpcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnICAgIGNhc2UgTWVzc2FnZU5hbWU6
OlN5bmNNZXNzYWdlUmVwbHk6XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJyAgICBjYXNlIE1lc3Nh
Z2VOYW1lOjpJbml0aWFsaXplQ29ubmVjdGlvbjpcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnICAg
ICAgICByZXR1cm4gUmVjZWl2ZXJOYW1lOjpJUEM7XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJyAg
ICB9XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTtcbicp
CisgICAgcmVzdWx0LmFwcGVuZCgnICAgIHJldHVybiBSZWNlaXZlck5hbWU6OkludmFsaWQ7XG4n
KQorICAgIHJlc3VsdC5hcHBlbmQoJ31cbicpCisgICAgcmVzdWx0LmFwcGVuZCgnXG4nKQorICAg
IHJlc3VsdC5hcHBlbmQoJ2Jvb2wgaXNWYWxpZE1lc3NhZ2VOYW1lKE1lc3NhZ2VOYW1lIG1lc3Nh
Z2VOYW1lKVxuJykKKyAgICByZXN1bHQuYXBwZW5kKCd7XG4nKQorICAgIGZvciByZWNlaXZlciBp
biByZWNlaXZlcnM6CisgICAgICAgIGZvciBtZXNzYWdlIGluIHJlY2VpdmVyLm1lc3NhZ2VzOgor
ICAgICAgICAgICAgaWYgbWVzc2FnZS5jb25kaXRpb246CisgICAgICAgICAgICAgICAgcmVzdWx0
LmFwcGVuZCgnI2lmICVzXG4nICUgbWVzc2FnZS5jb25kaXRpb24pCisgICAgICAgICAgICByZXN1
bHQuYXBwZW5kKCcgICAgaWYgKG1lc3NhZ2VOYW1lID09IElQQzo6TWVzc2FnZU5hbWU6OiVzXyVz
KVxuJyAlIChyZWNlaXZlci5uYW1lLCBtZXNzYWdlLm5hbWUpKQorICAgICAgICAgICAgcmVzdWx0
LmFwcGVuZCgnICAgICAgICByZXR1cm4gdHJ1ZTtcbicpCisgICAgICAgICAgICBpZiBtZXNzYWdl
Lmhhc19hdHRyaWJ1dGUoQVNZTkNfQVRUUklCVVRFKToKKyAgICAgICAgICAgICAgICByZXN1bHQu
YXBwZW5kKCcgICAgaWYgKG1lc3NhZ2VOYW1lID09IElQQzo6TWVzc2FnZU5hbWU6OiVzXyVzUmVw
bHkpXG4nICUgKHJlY2VpdmVyLm5hbWUsIG1lc3NhZ2UubmFtZSkpCisgICAgICAgICAgICAgICAg
cmVzdWx0LmFwcGVuZCgnICAgICAgICByZXR1cm4gdHJ1ZTtcbicpCisgICAgICAgICAgICBpZiBt
ZXNzYWdlLmNvbmRpdGlvbjoKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcjZW5kaWZc
bicpCisgICAgcmVzdWx0LmFwcGVuZCgnICAgIGlmIChtZXNzYWdlTmFtZSA9PSBJUEM6Ok1lc3Nh
Z2VOYW1lOjpXcmFwcGVkQXN5bmNNZXNzYWdlRm9yVGVzdGluZylcbicpCisgICAgcmVzdWx0LmFw
cGVuZCgnICAgICAgICByZXR1cm4gdHJ1ZTtcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnICAgIGlm
IChtZXNzYWdlTmFtZSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpTeW5jTWVzc2FnZVJlcGx5KVxuJykK
KyAgICByZXN1bHQuYXBwZW5kKCcgICAgICAgIHJldHVybiB0cnVlO1xuJykKKyAgICByZXN1bHQu
YXBwZW5kKCcgICAgaWYgKG1lc3NhZ2VOYW1lID09IElQQzo6TWVzc2FnZU5hbWU6OkluaXRpYWxp
emVDb25uZWN0aW9uKVxuJykKKyAgICByZXN1bHQuYXBwZW5kKCcgICAgICAgIHJldHVybiB0cnVl
O1xuJykKKyAgICByZXN1bHQuYXBwZW5kKCcgICAgcmV0dXJuIGZhbHNlO1xuJykKKyAgICByZXN1
bHQuYXBwZW5kKCd9O1xuJykKKyAgICByZXN1bHQuYXBwZW5kKCdcbicpCisgICAgcmVzdWx0LmFw
cGVuZCgnfSAvLyBuYW1lc3BhY2UgSVBDXG4nKQorICAgIHJldHVybiAnJy5qb2luKHJlc3VsdCkK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdC1sZWdhY3ktbWVzc2FnZXMu
aW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0LWxlZ2Fj
eS1tZXNzYWdlcy5pbgkocmV2aXNpb24gMjYwNzY0KQorKysgU291cmNlL1dlYktpdC9TY3JpcHRz
L3dlYmtpdC90ZXN0LWxlZ2FjeS1tZXNzYWdlcy5pbgkobm9uZXhpc3RlbnQpCkBAIC0xLDc3ICsw
LDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAot
IyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCi0jIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0jIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSMg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IKLSMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSMgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwKLSMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotI2lmIEVOQUJM
RShXRUJLSVQyKQotI2lmIE5FU1RFRF9NQVNURVJfQ09ORElUSU9OIHx8IE1BU1RFUl9PUiAmJiBN
QVNURVJfQU5ECi0KLW1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewotICAgIExv
YWRVUkwoU3RyaW5nIHVybCkKLSNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQotICAgIExvYWRTb21l
dGhpbmcoU3RyaW5nIHVybCkKLSNpZiBORVNURURfTUVTU0FHRV9DT05ESVRJT04gfHwgU09NRV9P
VEhFUl9NRVNTQUdFX0NPTkRJVElPTgotICAgIFRvdWNoRXZlbnQoV2ViS2l0OjpXZWJUb3VjaEV2
ZW50IGV2ZW50KQotI2VuZGlmCi0jaWYgTkVTVEVEX01FU1NBR0VfQ09ORElUSU9OICYmIFNPTUVf
T1RIRVJfTUVTU0FHRV9DT05ESVRJT04KLSAgICBBZGRFdmVudChXZWJLaXQ6OldlYlRvdWNoRXZl
bnQgZXZlbnQpCi0jZW5kaWYKLSAgICBMb2FkU29tZXRoaW5nRWxzZShTdHJpbmcgdXJsKQotI2Vu
ZGlmCi0gICAgRGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2
NF90IGxpc3RlbmVySUQsIHVpbnQzMl90IHBvbGljeUFjdGlvbikKLSAgICBDbG9zZSgpCi0KLSAg
ICBQcmVmZXJlbmNlc0RpZENoYW5nZShXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmUgc3RvcmUp
Ci0gICAgU2VuZERvdWJsZUFuZEZsb2F0KGRvdWJsZSBkLCBmbG9hdCBmKQotICAgIFNlbmRJbnRz
KFZlY3Rvcjx1aW50NjRfdD4gaW50cywgVmVjdG9yPFZlY3Rvcjx1aW50NjRfdD4+IGludFZlY3Rv
cnMpCi0KLSAgICBDcmVhdGVQbHVnaW4odWludDY0X3QgcGx1Z2luSW5zdGFuY2VJRCwgV2ViS2l0
OjpQbHVnaW46OlBhcmFtZXRlcnMgcGFyYW1ldGVycykgLT4gKGJvb2wgcmVzdWx0KQotICAgIFJ1
bkphdmFTY3JpcHRBbGVydCh1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgbWVzc2FnZSkgLT4gKCkK
LSAgICBHZXRQbHVnaW5zKGJvb2wgcmVmcmVzaCkgLT4gKFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5J
bmZvPiBwbHVnaW5zKQotICAgIEdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKFN0cmluZyBwbHVn
aW5QYXRoKSAtPiAoSVBDOjpDb25uZWN0aW9uOjpIYW5kbGUgY29ubmVjdGlvbkhhbmRsZSkgU3lu
Y2hyb25vdXMKLQotICAgIFRlc3RNdWx0aXBsZUF0dHJpYnV0ZXMoKSAtPiAoKSBXYW50c0Nvbm5l
Y3Rpb24gU3luY2hyb25vdXMKLQotICAgIFRlc3RQYXJhbWV0ZXJBdHRyaWJ1dGVzKFtBdHRyaWJ1
dGVPbmUgQXR0cmlidXRlVHdvXSB1aW50NjRfdCBmb28sIGRvdWJsZSBiYXIsIFtBdHRyaWJ1dGVU
aHJlZV0gZG91YmxlIGJheikKLQotICAgIFRlbXBsYXRlVGVzdChIYXNoTWFwPFN0cmluZywgc3Rk
OjpwYWlyPFN0cmluZywgdWludDY0X3Q+PiBhKQotCi0gICAgU2V0VmlkZW9MYXllcklEKFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRCB2aWRlb0xheWVySUQpCi0KLSNpZiBQ
TEFURk9STShNQUMpCi0gICAgRGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oSVBDOjpNYWNo
UG9ydCBjb25uZWN0aW9uSWRlbnRpZmllcikKLSNlbmRpZgotCi0jaWYgUExBVEZPUk0oTUFDKQot
ICAgICMgS2V5Ym9hcmQgc3VwcG9ydAotICAgIEludGVycHJldEtleUV2ZW50KHVpbnQzMl90IHR5
cGUpIC0+IChWZWN0b3I8V2ViQ29yZTo6S2V5cHJlc3NDb21tYW5kPiBjb21tYW5kTmFtZSkKLSNl
bmRpZgotCi0jaWYgRU5BQkxFKERFUFJFQ0FURURfRkVBVFVSRSkKLSAgICBEZXByZWNhdGVkT3Bl
cmF0aW9uKElQQzo6RHVtbXlUeXBlIGR1bW15KQotI2VuZGlmCi0KLSNpZiBFTkFCTEUoRVhQRVJJ
TUVOVEFMX0ZFQVRVUkUpCi0gICAgRXhwZXJpbWVudGFsT3BlcmF0aW9uKElQQzo6RHVtbXlUeXBl
IGR1bW15KQotI2VuZGlmCi19Ci0KLSNlbmRpZgotI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1NjcmlwdHMvd2Via2l0L3Rlc3QtbGVnYWN5Lm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdC1sZWdhY3kubWVzc2FnZXMuaW4JKHJldmlz
aW9uIDI2MDc2NCkJKGZyb20gU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0LWxlZ2Fj
eS1tZXNzYWdlcy5pbjoyNjA3NjQpCisrKyBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rl
c3QtbGVnYWN5Lm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzcgQEAKKyMg
Q29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
IworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworI2lmIEVOQUJMRShXRUJLSVQy
KQorI2lmIE5FU1RFRF9NQVNURVJfQ09ORElUSU9OIHx8IE1BU1RFUl9PUiAmJiBNQVNURVJfQU5E
CisKK21lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgeworICAgIExvYWRVUkwoU3Ry
aW5nIHVybCkKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgIExvYWRTb21ldGhpbmcoU3Ry
aW5nIHVybCkKKyNpZiBORVNURURfTUVTU0FHRV9DT05ESVRJT04gfHwgU09NRV9PVEhFUl9NRVNT
QUdFX0NPTkRJVElPTgorICAgIFRvdWNoRXZlbnQoV2ViS2l0OjpXZWJUb3VjaEV2ZW50IGV2ZW50
KQorI2VuZGlmCisjaWYgTkVTVEVEX01FU1NBR0VfQ09ORElUSU9OICYmIFNPTUVfT1RIRVJfTUVT
U0FHRV9DT05ESVRJT04KKyAgICBBZGRFdmVudChXZWJLaXQ6OldlYlRvdWNoRXZlbnQgZXZlbnQp
CisjZW5kaWYKKyAgICBMb2FkU29tZXRoaW5nRWxzZShTdHJpbmcgdXJsKQorI2VuZGlmCisgICAg
RGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IGxpc3Rl
bmVySUQsIHVpbnQzMl90IHBvbGljeUFjdGlvbikKKyAgICBDbG9zZSgpCisKKyAgICBQcmVmZXJl
bmNlc0RpZENoYW5nZShXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmUgc3RvcmUpCisgICAgU2Vu
ZERvdWJsZUFuZEZsb2F0KGRvdWJsZSBkLCBmbG9hdCBmKQorICAgIFNlbmRJbnRzKFZlY3Rvcjx1
aW50NjRfdD4gaW50cywgVmVjdG9yPFZlY3Rvcjx1aW50NjRfdD4+IGludFZlY3RvcnMpCisKKyAg
ICBDcmVhdGVQbHVnaW4odWludDY0X3QgcGx1Z2luSW5zdGFuY2VJRCwgV2ViS2l0OjpQbHVnaW46
OlBhcmFtZXRlcnMgcGFyYW1ldGVycykgLT4gKGJvb2wgcmVzdWx0KQorICAgIFJ1bkphdmFTY3Jp
cHRBbGVydCh1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgbWVzc2FnZSkgLT4gKCkKKyAgICBHZXRQ
bHVnaW5zKGJvb2wgcmVmcmVzaCkgLT4gKFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiBwbHVn
aW5zKQorICAgIEdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKFN0cmluZyBwbHVnaW5QYXRoKSAt
PiAoSVBDOjpDb25uZWN0aW9uOjpIYW5kbGUgY29ubmVjdGlvbkhhbmRsZSkgU3luY2hyb25vdXMK
KworICAgIFRlc3RNdWx0aXBsZUF0dHJpYnV0ZXMoKSAtPiAoKSBXYW50c0Nvbm5lY3Rpb24gU3lu
Y2hyb25vdXMKKworICAgIFRlc3RQYXJhbWV0ZXJBdHRyaWJ1dGVzKFtBdHRyaWJ1dGVPbmUgQXR0
cmlidXRlVHdvXSB1aW50NjRfdCBmb28sIGRvdWJsZSBiYXIsIFtBdHRyaWJ1dGVUaHJlZV0gZG91
YmxlIGJheikKKworICAgIFRlbXBsYXRlVGVzdChIYXNoTWFwPFN0cmluZywgc3RkOjpwYWlyPFN0
cmluZywgdWludDY0X3Q+PiBhKQorCisgICAgU2V0VmlkZW9MYXllcklEKFdlYkNvcmU6OkdyYXBo
aWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRCB2aWRlb0xheWVySUQpCisKKyNpZiBQTEFURk9STShN
QUMpCisgICAgRGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oSVBDOjpNYWNoUG9ydCBjb25u
ZWN0aW9uSWRlbnRpZmllcikKKyNlbmRpZgorCisjaWYgUExBVEZPUk0oTUFDKQorICAgICMgS2V5
Ym9hcmQgc3VwcG9ydAorICAgIEludGVycHJldEtleUV2ZW50KHVpbnQzMl90IHR5cGUpIC0+IChW
ZWN0b3I8V2ViQ29yZTo6S2V5cHJlc3NDb21tYW5kPiBjb21tYW5kTmFtZSkKKyNlbmRpZgorCisj
aWYgRU5BQkxFKERFUFJFQ0FURURfRkVBVFVSRSkKKyAgICBEZXByZWNhdGVkT3BlcmF0aW9uKElQ
Qzo6RHVtbXlUeXBlIGR1bW15KQorI2VuZGlmCisKKyNpZiBFTkFCTEUoRVhQRVJJTUVOVEFMX0ZF
QVRVUkUpCisgICAgRXhwZXJpbWVudGFsT3BlcmF0aW9uKElQQzo6RHVtbXlUeXBlIGR1bW15KQor
I2VuZGlmCit9CisKKyNlbmRpZgorI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMv
d2Via2l0L3Rlc3QtbWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TY3Jp
cHRzL3dlYmtpdC90ZXN0LW1lc3NhZ2VzLmluCShyZXZpc2lvbiAyNjA3NjQpCisrKyBTb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3QtbWVzc2FnZXMuaW4JKG5vbmV4aXN0ZW50KQpAQCAt
MSw4NCArMCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0jIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKLSMgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElN
UExJRUQKLSMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQotIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgotIyBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0jIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0jIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksCi0jIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLSNp
ZiBFTkFCTEUoV0VCS0lUMikKLSNpZiBORVNURURfTUFTVEVSX0NPTkRJVElPTiB8fCBNQVNURVJf
T1IgJiYgTUFTVEVSX0FORAotCi0KLSMgVGhlIHBhcnNlciBzaG91bGQgdHJlYXQgYWxsIG9mIHRo
ZXNlIGFzIGNvbW1lbnRzCi0jRmFrZUxvYWRVUkxBKFN0cmluZyB1cmwpCi0jIEZha2VMb2FkVVJM
QihTdHJpbmcgdXJsKQotICAgICNGYWtlTG9hZFVSTEMoU3RyaW5nIHVybCkKLSAgICAjIEZha2VM
b2FkVVJMRChTdHJpbmcgdXJsKQotCi1tZXNzYWdlcyAtPiBXZWJQYWdlIHsKLSAgICBMb2FkVVJM
KFN0cmluZyB1cmwpCi0jaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLSAgICBMb2FkU29tZXRoaW5n
KFN0cmluZyB1cmwpCi0jaWYgTkVTVEVEX01FU1NBR0VfQ09ORElUSU9OIHx8IFNPTUVfT1RIRVJf
TUVTU0FHRV9DT05ESVRJT04KLSAgICBUb3VjaEV2ZW50KFdlYktpdDo6V2ViVG91Y2hFdmVudCBl
dmVudCkKLSNlbmRpZgotI2lmIE5FU1RFRF9NRVNTQUdFX0NPTkRJVElPTiAmJiBTT01FX09USEVS
X01FU1NBR0VfQ09ORElUSU9OCi0gICAgQWRkRXZlbnQoV2ViS2l0OjpXZWJUb3VjaEV2ZW50IGV2
ZW50KQotI2VuZGlmCi0gICAgTG9hZFNvbWV0aGluZ0Vsc2UoU3RyaW5nIHVybCkKLSNlbmRpZgot
ICAgIERpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbih1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBs
aXN0ZW5lcklELCB1aW50MzJfdCBwb2xpY3lBY3Rpb24pCi0gICAgQ2xvc2UoKQotCi0gICAgUHJl
ZmVyZW5jZXNEaWRDaGFuZ2UoV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlIHN0b3JlKQotICAg
IFNlbmREb3VibGVBbmRGbG9hdChkb3VibGUgZCwgZmxvYXQgZikKLSAgICBTZW5kSW50cyhWZWN0
b3I8dWludDY0X3Q+IGludHMsIFZlY3RvcjxWZWN0b3I8dWludDY0X3Q+PiBpbnRWZWN0b3JzKQot
Ci0gICAgQ3JlYXRlUGx1Z2luKHVpbnQ2NF90IHBsdWdpbkluc3RhbmNlSUQsIFdlYktpdDo6UGx1
Z2luOjpQYXJhbWV0ZXJzIHBhcmFtZXRlcnMpIC0+IChib29sIHJlc3VsdCkKLSAgICBSdW5KYXZh
U2NyaXB0QWxlcnQodWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG1lc3NhZ2UpIC0+ICgpCi0gICAg
R2V0UGx1Z2lucyhib29sIHJlZnJlc2gpIC0+IChWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4g
cGx1Z2lucykKLSAgICBHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbihTdHJpbmcgcGx1Z2luUGF0
aCkgLT4gKElQQzo6Q29ubmVjdGlvbjo6SGFuZGxlIGNvbm5lY3Rpb25IYW5kbGUpIFN5bmNocm9u
b3VzCi0KLSAgICBUZXN0TXVsdGlwbGVBdHRyaWJ1dGVzKCkgLT4gKCkgV2FudHNDb25uZWN0aW9u
IFN5bmNocm9ub3VzCi0KLSAgICBUZXN0UGFyYW1ldGVyQXR0cmlidXRlcyhbQXR0cmlidXRlT25l
IEF0dHJpYnV0ZVR3b10gdWludDY0X3QgZm9vLCBkb3VibGUgYmFyLCBbQXR0cmlidXRlVGhyZWVd
IGRvdWJsZSBiYXopCi0KLSAgICBUZW1wbGF0ZVRlc3QoSGFzaE1hcDxTdHJpbmcsIHN0ZDo6cGFp
cjxTdHJpbmcsIHVpbnQ2NF90Pj4gYSkKLQotICAgIFNldFZpZGVvTGF5ZXJJRChXZWJDb3JlOjpH
cmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQgdmlkZW9MYXllcklEKQotCi0jaWYgUExBVEZP
Uk0oTUFDKQotICAgIERpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKElQQzo6TWFjaFBvcnQg
Y29ubmVjdGlvbklkZW50aWZpZXIpCi0jZW5kaWYKLQotI2lmIFBMQVRGT1JNKE1BQykKLSAgICAj
IEtleWJvYXJkIHN1cHBvcnQKLSAgICBJbnRlcnByZXRLZXlFdmVudCh1aW50MzJfdCB0eXBlKSAt
PiAoVmVjdG9yPFdlYkNvcmU6OktleXByZXNzQ29tbWFuZD4gY29tbWFuZE5hbWUpCi0jZW5kaWYK
LQotI2lmIEVOQUJMRShERVBSRUNBVEVEX0ZFQVRVUkUpCi0gICAgRGVwcmVjYXRlZE9wZXJhdGlv
bihJUEM6OkR1bW15VHlwZSBkdW1teSkKLSNlbmRpZgotCi0jaWYgRU5BQkxFKEVYUEVSSU1FTlRB
TF9GRUFUVVJFKQotICAgIEV4cGVyaW1lbnRhbE9wZXJhdGlvbihJUEM6OkR1bW15VHlwZSBkdW1t
eSkKLSNlbmRpZgotfQotCi0jZW5kaWYKLSNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9TY3Jp
cHRzL3dlYmtpdC90ZXN0LXN1cGVyY2xhc3MtbWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0LXN1cGVyY2xhc3MtbWVzc2FnZXMuaW4JKHJl
dmlzaW9uIDI2MDc2NCkKKysrIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdC1zdXBl
cmNsYXNzLW1lc3NhZ2VzLmluCShub25leGlzdGVudCkKQEAgLTEsMzIgKzAsMCBAQAotIyBDb3B5
cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
IyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0jCi0j
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycgQU5ECi0jIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0jIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotIyBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUgotIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotIyBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi1tZXNzYWdlcyAtPiBXZWJQYWdlIDog
V2ViUGFnZUJhc2UgewotICAgIExvYWRVUkwoU3RyaW5nIHVybCkKLSNpZiBFTkFCTEUoVEVTVF9G
RUFUVVJFKQotICAgIFRlc3RBc3luY01lc3NhZ2UoZW51bTpib29sIFdlYktpdDo6VGVzdFR3b1N0
YXRlRW51bSB0d29TdGF0ZUVudW0pIC0+ICh1aW50NjRfdCByZXN1bHQpIEFzeW5jCi0gICAgVGVz
dEFzeW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50cygpIC0+ICgpIEFzeW5jCi0gICAgVGVzdEFzeW5j
TWVzc2FnZVdpdGhNdWx0aXBsZUFyZ3VtZW50cygpIC0+IChib29sIGZsYWcsIHVpbnQ2NF90IHZh
bHVlKSBBc3luYwotI2VuZGlmCi0gICAgVGVzdFN5bmNNZXNzYWdlKHVpbnQzMl90IHBhcmFtKSAt
PiAodWludDhfdCByZXBseSkgU3luY2hyb25vdXMKLSAgICBUZXN0U3luY2hyb25vdXNNZXNzYWdl
KGJvb2wgdmFsdWUpIC0+IChPcHRpb25hbDxXZWJLaXQ6OlRlc3RDbGFzc05hbWU+IG9wdGlvbmFs
UmVwbHkpIFN5bmNocm9ub3VzCi19CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0
L3Rlc3Qtc3VwZXJjbGFzcy5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1NjcmlwdHMvd2Via2l0L3Rlc3Qtc3VwZXJjbGFzcy5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjYw
NzY0KQkoZnJvbSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3Qtc3VwZXJjbGFzcy1t
ZXNzYWdlcy5pbjoyNjA3NjQpCisrKyBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3Qt
c3VwZXJjbGFzcy5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMyIEBACisj
IENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisj
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisj
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK21lc3NhZ2VzIC0+IFdlYlBh
Z2UgOiBXZWJQYWdlQmFzZSB7CisgICAgTG9hZFVSTChTdHJpbmcgdXJsKQorI2lmIEVOQUJMRShU
RVNUX0ZFQVRVUkUpCisgICAgVGVzdEFzeW5jTWVzc2FnZShlbnVtOmJvb2wgV2ViS2l0OjpUZXN0
VHdvU3RhdGVFbnVtIHR3b1N0YXRlRW51bSkgLT4gKHVpbnQ2NF90IHJlc3VsdCkgQXN5bmMKKyAg
ICBUZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJndW1lbnRzKCkgLT4gKCkgQXN5bmMKKyAgICBUZXN0
QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1lbnRzKCkgLT4gKGJvb2wgZmxhZywgdWludDY0
X3QgdmFsdWUpIEFzeW5jCisjZW5kaWYKKyAgICBUZXN0U3luY01lc3NhZ2UodWludDMyX3QgcGFy
YW0pIC0+ICh1aW50OF90IHJlcGx5KSBTeW5jaHJvbm91cworICAgIFRlc3RTeW5jaHJvbm91c01l
c3NhZ2UoYm9vbCB2YWx1ZSkgLT4gKE9wdGlvbmFsPFdlYktpdDo6VGVzdENsYXNzTmFtZT4gb3B0
aW9uYWxSZXBseSkgU3luY2hyb25vdXMKK30KSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93
ZWJraXQvdGVzdC5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkluZGV4OiBTb3VyY2UvV2ViS2l0L1No
YXJlZC9BdXhpbGlhcnlQcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1No
YXJlZC9BdXhpbGlhcnlQcm9jZXNzLmNwcAkocmV2aXNpb24gMjYwNzY0KQorKysgU291cmNlL1dl
YktpdC9TaGFyZWQvQXV4aWxpYXJ5UHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNywy
MiArMTA3LDIyIEBAIHZvaWQgQXV4aWxpYXJ5UHJvY2Vzczo6aW5pdGlhbGl6ZUNvbm5lY3QKIHsK
IH0KIAotdm9pZCBBdXhpbGlhcnlQcm9jZXNzOjphZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJp
bmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImIG1l
c3NhZ2VSZWNlaXZlcikKK3ZvaWQgQXV4aWxpYXJ5UHJvY2Vzczo6YWRkTWVzc2FnZVJlY2VpdmVy
KElQQzo6UmVjZWl2ZXJOYW1lIG1lc3NhZ2VSZWNlaXZlck5hbWUsIElQQzo6TWVzc2FnZVJlY2Vp
dmVyJiBtZXNzYWdlUmVjZWl2ZXIpCiB7CiAgICAgbV9tZXNzYWdlUmVjZWl2ZXJNYXAuYWRkTWVz
c2FnZVJlY2VpdmVyKG1lc3NhZ2VSZWNlaXZlck5hbWUsIG1lc3NhZ2VSZWNlaXZlcik7CiB9CiAK
LXZvaWQgQXV4aWxpYXJ5UHJvY2Vzczo6YWRkTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVm
ZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIElQQzo6
TWVzc2FnZVJlY2VpdmVyJiBtZXNzYWdlUmVjZWl2ZXIpCit2b2lkIEF1eGlsaWFyeVByb2Nlc3M6
OmFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlJlY2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1l
LCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYgbWVzc2FnZVJl
Y2VpdmVyKQogewogICAgIG1fbWVzc2FnZVJlY2VpdmVyTWFwLmFkZE1lc3NhZ2VSZWNlaXZlciht
ZXNzYWdlUmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklELCBtZXNzYWdlUmVjZWl2ZXIpOwogfQog
Ci12b2lkIEF1eGlsaWFyeVByb2Nlc3M6OnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmlu
Z1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKQor
dm9pZCBBdXhpbGlhcnlQcm9jZXNzOjpyZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpSZWNlaXZl
ck5hbWUgbWVzc2FnZVJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCkKIHsKICAg
ICBtX21lc3NhZ2VSZWNlaXZlck1hcC5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2Vp
dmVyTmFtZSwgZGVzdGluYXRpb25JRCk7CiB9CiAKLXZvaWQgQXV4aWxpYXJ5UHJvY2Vzczo6cmVt
b3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5h
bWUpCit2b2lkIEF1eGlsaWFyeVByb2Nlc3M6OnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlJl
Y2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1lKQogewogICAgIG1fbWVzc2FnZVJlY2VpdmVy
TWFwLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1lKTsKIH0KQEAgLTIz
Niw5ICsyMzYsOSBAQCB2b2lkIEF1eGlsaWFyeVByb2Nlc3M6OmluaXRpYWxpemVTYW5kYm94CiB7
CiB9CiAKLXZvaWQgQXV4aWxpYXJ5UHJvY2Vzczo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUs
IElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lKQordm9pZCBBdXhpbGlhcnlQcm9jZXNz
OjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdl
TmFtZSBtZXNzYWdlTmFtZSkKIHsKLSAgICBXVEZMb2dBbHdheXMoIlJlY2VpdmVkIGludmFsaWQg
bWVzc2FnZTogJyVzOjolcyciLCBtZXNzYWdlUmVjZWl2ZXJOYW1lLnRvU3RyaW5nKCkuZGF0YSgp
LCBtZXNzYWdlTmFtZS50b1N0cmluZygpLmRhdGEoKSk7CisgICAgV1RGTG9nQWx3YXlzKCJSZWNl
aXZlZCBpbnZhbGlkIG1lc3NhZ2U6ICclcyciLCBkZXNjcmlwdGlvbihtZXNzYWdlTmFtZSkpOwog
ICAgIENSQVNIKCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0F1eGlsaWFyeVBy
b2Nlc3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXhpbGlhcnlQcm9j
ZXNzLmgJKHJldmlzaW9uIDI2MDc2NCkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0F1eGlsaWFy
eVByb2Nlc3MuaAkod29ya2luZyBjb3B5KQpAQCAtNjAsMjAgKzYwLDIwIEBAIHB1YmxpYzoKICAg
ICB2b2lkIGRpc2FibGVUZXJtaW5hdGlvbigpOwogICAgIHZvaWQgZW5hYmxlVGVybWluYXRpb24o
KTsKIAotICAgIHZvaWQgYWRkTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1l
c3NhZ2VSZWNlaXZlck5hbWUsIElQQzo6TWVzc2FnZVJlY2VpdmVyJik7Ci0gICAgdm9pZCBhZGRN
ZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwg
dWludDY0X3QgZGVzdGluYXRpb25JRCwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImKTsKLSAgICB2b2lk
IHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2
ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKTsKLSAgICB2b2lkIHJlbW92ZU1lc3NhZ2VS
ZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lKTsKKyAgICB2
b2lkIGFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlJlY2VpdmVyTmFtZSwgSVBDOjpNZXNzYWdlUmVj
ZWl2ZXImKTsKKyAgICB2b2lkIGFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlJlY2VpdmVyTmFtZSwg
dWludDY0X3QgZGVzdGluYXRpb25JRCwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImKTsKKyAgICB2b2lk
IHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGlu
YXRpb25JRCk7CisgICAgdm9pZCByZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpSZWNlaXZlck5h
bWUpOwogICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6TWVzc2FnZVJlY2VpdmVy
Jik7CiAgICAgCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAgdm9pZCBhZGRNZXNzYWdl
UmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgT2JqZWN0
SWRlbnRpZmllcjxUPiBkZXN0aW5hdGlvbklELCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYgcmVjZWl2
ZXIpCisgICAgdm9pZCBhZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpSZWNlaXZlck5hbWUgbWVzc2Fn
ZVJlY2VpdmVyTmFtZSwgT2JqZWN0SWRlbnRpZmllcjxUPiBkZXN0aW5hdGlvbklELCBJUEM6Ok1l
c3NhZ2VSZWNlaXZlciYgcmVjZWl2ZXIpCiAgICAgewogICAgICAgICBhZGRNZXNzYWdlUmVjZWl2
ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRC50b1VJbnQ2NCgpLCByZWNlaXZl
cik7CiAgICAgfQogICAgIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgIHZvaWQgcmVt
b3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5h
bWUsIE9iamVjdElkZW50aWZpZXI8VD4gZGVzdGluYXRpb25JRCkKKyAgICB2b2lkIHJlbW92ZU1l
c3NhZ2VSZWNlaXZlcihJUEM6OlJlY2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBPYmpl
Y3RJZGVudGlmaWVyPFQ+IGRlc3RpbmF0aW9uSUQpCiAgICAgewogICAgICAgICByZW1vdmVNZXNz
YWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRC50b1VJbnQ2NCgp
KTsKICAgICB9CkBAIC0xMzgsNyArMTM4LDcgQEAgcHJpdmF0ZToKICAgICB1aW50NjRfdCBtZXNz
YWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgLy8gSVBDOjpD
b25uZWN0aW9uOjpDbGllbnQuCi0gICAgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwg
SVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUpIGZpbmFsOworICAgIHZvaWQgZGlkUmVj
ZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZU5hbWUpIGZp
bmFsOwogICAgIHZvaWQgZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJikgb3ZlcnJpZGU7CiAKICAg
ICB2b2lkIHNodXREb3duKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9X
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
U2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmgJKHJldmlzaW9uIDI2
MDc2NCkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTg2LDggKzg2LDYgQEAgcHVibGljOgogICAg
ICAgICB2aXJ0dWFsIGNvbnN0IFN0cmluZyYgcGF5bWVudENvb3JkaW5hdG9yQm91bmRJbnRlcmZh
Y2VJZGVudGlmaWVyKGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JikgPSAwOwogICAg
ICAgICB2aXJ0dWFsIGNvbnN0IFN0cmluZyYgcGF5bWVudENvb3JkaW5hdG9yU291cmNlQXBwbGlj
YXRpb25CdW5kbGVJZGVudGlmaWVyKGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5Jikg
PSAwOwogICAgICAgICB2aXJ0dWFsIGNvbnN0IFN0cmluZyYgcGF5bWVudENvb3JkaW5hdG9yU291
cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyKGNvbnN0IFdlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5JikgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgcGF5bWVudENvb3JkaW5hdG9y
QWRkTWVzc2FnZVJlY2VpdmVyKFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JiwgY29uc3QgSVBD
OjpTdHJpbmdSZWZlcmVuY2UmLCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYpID0gMDsKLSAgICAgICAg
dmlydHVhbCB2b2lkIHBheW1lbnRDb29yZGluYXRvclJlbW92ZU1lc3NhZ2VSZWNlaXZlcihXZWJQ
YXltZW50Q29vcmRpbmF0b3JQcm94eSYsIGNvbnN0IElQQzo6U3RyaW5nUmVmZXJlbmNlJikgPSAw
OwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIHZpcnR1YWwgVUlWaWV3Q29udHJv
bGxlciAqcGF5bWVudENvb3JkaW5hdG9yUHJlc2VudGluZ1ZpZXdDb250cm9sbGVyKGNvbnN0IFdl
YlBheW1lbnRDb29yZGluYXRvclByb3h5JikgPSAwOwogICAgICAgICB2aXJ0dWFsIGNvbnN0IFN0
cmluZyYgcGF5bWVudENvb3JkaW5hdG9yQ1REYXRhQ29ubmVjdGlvblNlcnZpY2VUeXBlKGNvbnN0
IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JikgPSAwOwpJbmRleDogU291cmNlL1dlYktpdC9T
aGFyZWQvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9jb2NvYS9XZWJQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLm1tCShyZXZpc2lvbiAyNjA3NjQpCisrKyBTb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNv
Y29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC03OSwxNSArNzksMTIgQEAgV2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHk6OldlYlBheW1lbnRDbwogICAgIDogbV9jbGllbnQoY2xpZW50KQogICAgICwg
bV9jYW5NYWtlUGF5bWVudHNRdWV1ZShXb3JrUXVldWU6OmNyZWF0ZSgiY29tLmFwcGxlLldlYktp
dC5DYW5NYWtlUGF5bWVudHMiKSkKIHsKLSAgICBtX2NsaWVudC5wYXltZW50Q29vcmRpbmF0b3JB
ZGRNZXNzYWdlUmVjZWl2ZXIoKnRoaXMsIE1lc3NhZ2VzOjpXZWJQYXltZW50Q29vcmRpbmF0b3JQ
cm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCAqdGhpcyk7CiB9CiAKIFdlYlBheW1lbnRDb29y
ZGluYXRvclByb3h5Ojp+V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkoKQogewogICAgIGlmICht
X3N0YXRlICE9IFN0YXRlOjpJZGxlKQogICAgICAgICBoaWRlUGF5bWVudFVJKCk7Ci0KLSAgICBt
X2NsaWVudC5wYXltZW50Q29vcmRpbmF0b3JSZW1vdmVNZXNzYWdlUmVjZWl2ZXIoKnRoaXMsIE1l
c3NhZ2VzOjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgp
KTsKIH0KIAogdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1DYW5NYWtl
UGF5bWVudHNXaXRoQWN0aXZlQ2FyZChjb25zdCBTdHJpbmcmIG1lcmNoYW50SWRlbnRpZmllciwg
Y29uc3QgU3RyaW5nJiBkb21haW5OYW1lLCBXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9BdXhpbGlh
cnlQcm9jZXNzQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvQ29j
b2EvQXV4aWxpYXJ5UHJvY2Vzc0NvY29hLm1tCShyZXZpc2lvbiAyNjA3NjQpCisrKyBTb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Db2NvYS9BdXhpbGlhcnlQcm9jZXNzQ29jb2EubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTMyLDkgKzMyLDkgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXZvaWQgQXV4aWxp
YXJ5UHJvY2Vzczo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQ
Qzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIElQQzo6U3RyaW5nUmVmZXJl
bmNlIG1lc3NhZ2VOYW1lKQordm9pZCBBdXhpbGlhcnlQcm9jZXNzOjpkaWRSZWNlaXZlSW52YWxp
ZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlTmFtZSBtZXNzYWdlTmFtZSkK
IHsKLSAgICBzZXRDcmFzaFJlcG9ydEFwcGxpY2F0aW9uU3BlY2lmaWNJbmZvcm1hdGlvbigoX19i
cmlkZ2UgQ0ZTdHJpbmdSZWYpW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJSZWNlaXZlZCBp
bnZhbGlkIG1lc3NhZ2U6ICclczo6JXMnIiwgbWVzc2FnZVJlY2VpdmVyTmFtZS50b1N0cmluZygp
LmRhdGEoKSwgbWVzc2FnZU5hbWUudG9TdHJpbmcoKS5kYXRhKCldKTsKKyAgICBzZXRDcmFzaFJl
cG9ydEFwcGxpY2F0aW9uU3BlY2lmaWNJbmZvcm1hdGlvbigoX19icmlkZ2UgQ0ZTdHJpbmdSZWYp
W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJSZWNlaXZlZCBpbnZhbGlkIG1lc3NhZ2U6ICcl
cyciLCBkZXNjcmlwdGlvbihtZXNzYWdlTmFtZSldKTsKICAgICBDUkFTSCgpOwogfQogCkluZGV4
OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5j
cHAJKHJldmlzaW9uIDI2MDc5MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFy
eVByb2Nlc3NQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3OCwyMiArMTc4LDIyIEBAIGJv
b2wgQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjpzZW5kTWVzc2FnZSgKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKLXZvaWQgQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjphZGRNZXNzYWdlUmVjZWl2ZXIoSVBD
OjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpNZXNzYWdlUmVjZWl2
ZXImIG1lc3NhZ2VSZWNlaXZlcikKK3ZvaWQgQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjphZGRNZXNz
YWdlUmVjZWl2ZXIoSVBDOjpSZWNlaXZlck5hbWUgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpN
ZXNzYWdlUmVjZWl2ZXImIG1lc3NhZ2VSZWNlaXZlcikKIHsKICAgICBtX21lc3NhZ2VSZWNlaXZl
ck1hcC5hZGRNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSwgbWVzc2FnZVJlY2Vp
dmVyKTsKIH0KIAotdm9pZCBBdXhpbGlhcnlQcm9jZXNzUHJveHk6OmFkZE1lc3NhZ2VSZWNlaXZl
cihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0
aW5hdGlvbklELCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYgbWVzc2FnZVJlY2VpdmVyKQordm9pZCBB
dXhpbGlhcnlQcm9jZXNzUHJveHk6OmFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlJlY2VpdmVyTmFt
ZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBJUEM6Ok1lc3Nh
Z2VSZWNlaXZlciYgbWVzc2FnZVJlY2VpdmVyKQogewogICAgIG1fbWVzc2FnZVJlY2VpdmVyTWFw
LmFkZE1lc3NhZ2VSZWNlaXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklELCBt
ZXNzYWdlUmVjZWl2ZXIpOwogfQogCi12b2lkIEF1eGlsaWFyeVByb2Nlc3NQcm94eTo6cmVtb3Zl
TWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUs
IHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpCit2b2lkIEF1eGlsaWFyeVByb2Nlc3NQcm94eTo6cmVt
b3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6UmVjZWl2ZXJOYW1lIG1lc3NhZ2VSZWNlaXZlck5hbWUs
IHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpCiB7CiAgICAgbV9tZXNzYWdlUmVjZWl2ZXJNYXAucmVt
b3ZlTWVzc2FnZVJlY2VpdmVyKG1lc3NhZ2VSZWNlaXZlck5hbWUsIGRlc3RpbmF0aW9uSUQpOwog
fQogCi12b2lkIEF1eGlsaWFyeVByb2Nlc3NQcm94eTo6cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQ
Qzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUpCit2b2lkIEF1eGlsaWFyeVBy
b2Nlc3NQcm94eTo6cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6UmVjZWl2ZXJOYW1lIG1lc3Nh
Z2VSZWNlaXZlck5hbWUpCiB7CiAgICAgbV9tZXNzYWdlUmVjZWl2ZXJNYXAucmVtb3ZlTWVzc2Fn
ZVJlY2VpdmVyKG1lc3NhZ2VSZWNlaXZlck5hbWUpOwogfQpAQCAtMjc4LDkgKzI3OCw5IEBAIHZv
aWQgQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5Ojpjb25uZWN0aW9uV2kKIHsKIH0KIAotdm9pZCBBdXhp
bGlhcnlQcm9jZXNzUHJveHk6OmxvZ0ludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29u
bmVjdGlvbiwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpT
dHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUpCit2b2lkIEF1eGlsaWFyeVByb2Nlc3NQcm94eTo6
bG9nSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6Ok1lc3Nh
Z2VOYW1lIG1lc3NhZ2VOYW1lKQogewotICAgIFJFTEVBU0VfTE9HX0ZBVUxUKElQQywgIlJlY2Vp
dmVkIGFuIGludmFsaWQgbWVzc2FnZSAnJSIgUFVCTElDX0xPR19TVFJJTkcgIjo6JSIgUFVCTElD
X0xPR19TVFJJTkcgIicgZnJvbSB0aGUgJSIgUFVCTElDX0xPR19TVFJJTkcgIiBwcm9jZXNzLiIs
IG1lc3NhZ2VSZWNlaXZlck5hbWUudG9TdHJpbmcoKS5kYXRhKCksIG1lc3NhZ2VOYW1lLnRvU3Ry
aW5nKCkuZGF0YSgpLCBwcm9jZXNzTmFtZSgpLmNoYXJhY3RlcnMoKSk7CisgICAgUkVMRUFTRV9M
T0dfRkFVTFQoSVBDLCAiUmVjZWl2ZWQgYW4gaW52YWxpZCBtZXNzYWdlICclIiBQVUJMSUNfTE9H
X1NUUklORyAiJyBmcm9tIHRoZSAlIiBQVUJMSUNfTE9HX1NUUklORyAiIHByb2Nlc3MuIiwgZGVz
Y3JpcHRpb24obWVzc2FnZU5hbWUpLCBwcm9jZXNzTmFtZSgpLmNoYXJhY3RlcnMoKSk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV4
aWxpYXJ5UHJvY2Vzc1Byb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmgJKHJldmlzaW9uIDI2MDc2NCkKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBA
IC03NSwxOSArNzUsMTkgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9jb25uZWN0aW9uID09
ICZjb25uZWN0aW9uOwogICAgIH0KIAotICAgIHZvaWQgYWRkTWVzc2FnZVJlY2VpdmVyKElQQzo6
U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIElQQzo6TWVzc2FnZVJlY2VpdmVy
Jik7Ci0gICAgdm9pZCBhZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVz
c2FnZVJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgSVBDOjpNZXNzYWdlUmVj
ZWl2ZXImKTsKLSAgICB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVy
ZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKTsKLSAgICB2
b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVj
ZWl2ZXJOYW1lKTsKKyAgICB2b2lkIGFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlJlY2VpdmVyTmFt
ZSwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImKTsKKyAgICB2b2lkIGFkZE1lc3NhZ2VSZWNlaXZlcihJ
UEM6OlJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgSVBDOjpNZXNzYWdlUmVj
ZWl2ZXImKTsKKyAgICB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlJlY2VpdmVyTmFt
ZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCk7CisgICAgdm9pZCByZW1vdmVNZXNzYWdlUmVjZWl2
ZXIoSVBDOjpSZWNlaXZlck5hbWUpOwogICAgIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgot
ICAgIHZvaWQgYWRkTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VS
ZWNlaXZlck5hbWUsIE9iamVjdElkZW50aWZpZXI8VD4gZGVzdGluYXRpb25JRCwgSVBDOjpNZXNz
YWdlUmVjZWl2ZXImIHJlY2VpdmVyKQorICAgIHZvaWQgYWRkTWVzc2FnZVJlY2VpdmVyKElQQzo6
UmVjZWl2ZXJOYW1lIG1lc3NhZ2VSZWNlaXZlck5hbWUsIE9iamVjdElkZW50aWZpZXI8VD4gZGVz
dGluYXRpb25JRCwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImIHJlY2VpdmVyKQogICAgIHsKICAgICAg
ICAgYWRkTWVzc2FnZVJlY2VpdmVyKG1lc3NhZ2VSZWNlaXZlck5hbWUsIGRlc3RpbmF0aW9uSUQu
dG9VSW50NjQoKSwgcmVjZWl2ZXIpOwogICAgIH0KICAgICAKICAgICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4KLSAgICB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5j
ZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBPYmplY3RJZGVudGlmaWVyPFQ+IGRlc3RpbmF0aW9uSUQp
CisgICAgdm9pZCByZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpSZWNlaXZlck5hbWUgbWVzc2Fn
ZVJlY2VpdmVyTmFtZSwgT2JqZWN0SWRlbnRpZmllcjxUPiBkZXN0aW5hdGlvbklEKQogICAgIHsK
ICAgICAgICAgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKG1lc3NhZ2VSZWNlaXZlck5hbWUsIGRlc3Rp
bmF0aW9uSUQudG9VSW50NjQoKSk7CiAgICAgfQpAQCAtMTE5LDcgKzExOSw3IEBAIHByb3RlY3Rl
ZDoKICAgICBib29sIGRpc3BhdGNoTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29k
ZXImKTsKICAgICBib29sIGRpc3BhdGNoU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBD
OjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKTsKIAotICAgIHZvaWQg
bG9nSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpTdHJpbmdSZWZlcmVuY2Ug
bWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUpOwor
ICAgIHZvaWQgbG9nSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdl
TmFtZSk7CiAgICAgdmlydHVhbCBBU0NJSUxpdGVyYWwgcHJvY2Vzc05hbWUoKSBjb25zdCA9IDA7
CiAKICAgICB2aXJ0dWFsIHZvaWQgZ2V0TGF1bmNoT3B0aW9ucyhQcm9jZXNzTGF1bmNoZXI6Okxh
dW5jaE9wdGlvbnMmKTsKQEAgLTE1MCw3ICsxNTAsNyBAQCBib29sIEF1eGlsaWFyeVByb2Nlc3NQ
cm94eTo6c2VuZChUJiYgbWVzCiB7CiAgICAgQ09NUElMRV9BU1NFUlQoIVQ6OmlzU3luYywgQXN5
bmNNZXNzYWdlRXhwZWN0ZWQpOwogCi0gICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZTxJUEM6
OkVuY29kZXI+KFQ6OnJlY2VpdmVyTmFtZSgpLCBUOjpuYW1lKCksIGRlc3RpbmF0aW9uSUQpOwor
ICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWU8SVBDOjpFbmNvZGVyPihUOjpuYW1lKCksIGRl
c3RpbmF0aW9uSUQpOwogICAgIGVuY29kZXItPmVuY29kZShtZXNzYWdlLmFyZ3VtZW50cygpKTsK
IAogICAgIHJldHVybiBzZW5kTWVzc2FnZShXVEZNb3ZlKGVuY29kZXIpLCBzZW5kT3B0aW9ucyk7
CkBAIC0xNzQsNyArMTc0LDcgQEAgdm9pZCBBdXhpbGlhcnlQcm9jZXNzUHJveHk6OnNlbmRXaXRo
QXN5bgogewogICAgIENPTVBJTEVfQVNTRVJUKCFUOjppc1N5bmMsIEFzeW5jTWVzc2FnZUV4cGVj
dGVkKTsKIAotICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWU8SVBDOjpFbmNvZGVyPihUOjpy
ZWNlaXZlck5hbWUoKSwgVDo6bmFtZSgpLCBkZXN0aW5hdGlvbklEKTsKKyAgICBhdXRvIGVuY29k
ZXIgPSBtYWtlVW5pcXVlPElQQzo6RW5jb2Rlcj4oVDo6bmFtZSgpLCBkZXN0aW5hdGlvbklEKTsK
ICAgICB1aW50NjRfdCBsaXN0ZW5lcklEID0gSVBDOjpuZXh0QXN5bmNSZXBseUhhbmRsZXJJRCgp
OwogICAgIGVuY29kZXItPmVuY29kZShsaXN0ZW5lcklEKTsKICAgICBlbmNvZGVyLT5lbmNvZGUo
bWVzc2FnZS5hcmd1bWVudHMoKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92
aXNpb25hbFBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCShyZXZpc2lvbiAyNjA3NjQpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTUxOSw3ICs1MTksNyBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRSZWNlaXZl
TWVzCiAgICAgfQogI2VuZGlmCiAKLSAgICBMT0coUHJvY2Vzc1N3YXBwaW5nLCAiVW5oYW5kbGVk
IG1lc3NhZ2UgJXM6OiVzIGZyb20gcHJvdmlzaW9uYWwgcHJvY2VzcyIsIGRlY29kZXIubWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpLnRvU3RyaW5nKCkuZGF0YSgpLCBkZWNvZGVyLm1lc3NhZ2VOYW1lKCku
dG9TdHJpbmcoKS5kYXRhKCkpOworICAgIExPRyhQcm9jZXNzU3dhcHBpbmcsICJVbmhhbmRsZWQg
bWVzc2FnZSAlcyBmcm9tIHByb3Zpc2lvbmFsIHByb2Nlc3MiLCBkZXNjcmlwdGlvbihkZWNvZGVy
Lm1lc3NhZ2VOYW1lKCkpKTsKIH0KIAogdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkUmVj
ZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVy
JiBkZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYgcmVwbHlFbmNvZGVyKQpJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3Bw
CShyZXZpc2lvbiAyNjA3NjQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQ
YWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MSwzMyArNjEsMzIgQEAgUmVmUHRyPFdl
YlByb2Nlc3NQcm94eT4gU3VzcGVuZGVkUGFnZVBybwogfQogCiAjaWYgIUxPR19ESVNBQkxFRAot
c3RhdGljIGNvbnN0IEhhc2hTZXQ8SVBDOjpTdHJpbmdSZWZlcmVuY2U+JiBtZXNzYWdlTmFtZXNU
b0lnbm9yZVdoaWxlU3VzcGVuZGVkKCkKK3N0YXRpYyBjb25zdCBIYXNoU2V0PHVpbnQxNl90PiYg
bWVzc2FnZU5hbWVzVG9JZ25vcmVXaGlsZVN1c3BlbmRlZCgpCiB7Ci0gICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPEhhc2hTZXQ8SVBDOjpTdHJpbmdSZWZlcmVuY2U+PiBtZXNzYWdlTmFtZXM7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8dWludDE2X3Q+PiBtZXNzYWdlTmFtZXM7
CiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwogICAgIHN0ZDo6Y2FsbF9vbmNl
KG9uY2VGbGFnLCBbXSB7Ci0gICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoIkJhY2tGb3J3
YXJkQWRkSXRlbSIpOwotICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJDbGVhckFsbEVk
aXRDb21tYW5kcyIpOwotICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJEaWRDaGFuZ2VD
b250ZW50U2l6ZSIpOwotICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJEaWRDaGFuZ2VN
YWluRG9jdW1lbnQiKTsKLSAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZCgiRGlkQ2hhbmdl
UHJvZ3Jlc3MiKTsKLSAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZCgiRGlkQ29tbWl0TG9h
ZEZvckZyYW1lIik7Ci0gICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoIkRpZERlc3Ryb3lO
YXZpZ2F0aW9uIik7Ci0gICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoIkRpZEZpbmlzaERv
Y3VtZW50TG9hZEZvckZyYW1lIik7Ci0gICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoIkRp
ZEZpbmlzaFByb2dyZXNzIik7Ci0gICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoIkRpZENv
bXBsZXRlUGFnZVRyYW5zaXRpb24iKTsKLSAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZCgi
RGlkRmlyc3RMYXlvdXRGb3JGcmFtZSIpOwotICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRk
KCJEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZSIpOwotICAgICAgICBtZXNz
YWdlTmFtZXMuZ2V0KCkuYWRkKCJEaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YSIpOwotICAg
ICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJEaWRSZWFjaExheW91dE1pbGVzdG9uZSIpOwot
ICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJEaWRSZXN0b3JlU2Nyb2xsUG9zaXRpb24i
KTsKLSAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZCgiRGlkU3RhcnRQcm9ncmVzcyIpOwot
ICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJEaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZv
ckZyYW1lIik7Ci0gICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoIkVkaXRvclN0YXRlQ2hh
bmdlZCIpOwotICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJQYWdlRXh0ZW5kZWRCYWNr
Z3JvdW5kQ29sb3JEaWRDaGFuZ2UiKTsKLSAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZCgi
U2V0UmVuZGVyVHJlZVNpemUiKTsKLSAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZCgiU2V0
U3RhdHVzVGV4dCIpOwotICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJTZXROZXR3b3Jr
UmVxdWVzdHNJblByb2dyZXNzIik7CisgICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoc3Rh
dGljX2Nhc3Q8dWludDE2X3Q+KElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VQcm94eV9CYWNrRm9y
d2FyZEFkZEl0ZW0pKTsKKyAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZChzdGF0aWNfY2Fz
dDx1aW50MTZfdD4oSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZVByb3h5X0NsZWFyQWxsRWRpdENv
bW1hbmRzKSk7CisgICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoc3RhdGljX2Nhc3Q8dWlu
dDE2X3Q+KElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VQcm94eV9EaWRDaGFuZ2VDb250ZW50U2l6
ZSkpOworICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKHN0YXRpY19jYXN0PHVpbnQxNl90
PihJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlUHJveHlfRGlkQ2hhbmdlTWFpbkRvY3VtZW50KSk7
CisgICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoc3RhdGljX2Nhc3Q8dWludDE2X3Q+KElQ
Qzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VQcm94eV9EaWRDaGFuZ2VQcm9ncmVzcykpOworICAgICAg
ICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKHN0YXRpY19jYXN0PHVpbnQxNl90PihJUEM6Ok1lc3Nh
Z2VOYW1lOjpXZWJQYWdlUHJveHlfRGlkQ29tbWl0TG9hZEZvckZyYW1lKSk7CisgICAgICAgIG1l
c3NhZ2VOYW1lcy5nZXQoKS5hZGQoc3RhdGljX2Nhc3Q8dWludDE2X3Q+KElQQzo6TWVzc2FnZU5h
bWU6OldlYlBhZ2VQcm94eV9EaWREZXN0cm95TmF2aWdhdGlvbikpOworICAgICAgICBtZXNzYWdl
TmFtZXMuZ2V0KCkuYWRkKHN0YXRpY19jYXN0PHVpbnQxNl90PihJUEM6Ok1lc3NhZ2VOYW1lOjpX
ZWJQYWdlUHJveHlfRGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUpKTsKKyAgICAgICAgbWVz
c2FnZU5hbWVzLmdldCgpLmFkZChzdGF0aWNfY2FzdDx1aW50MTZfdD4oSVBDOjpNZXNzYWdlTmFt
ZTo6V2ViUGFnZVByb3h5X0RpZEZpbmlzaFByb2dyZXNzKSk7CisgICAgICAgIG1lc3NhZ2VOYW1l
cy5nZXQoKS5hZGQoc3RhdGljX2Nhc3Q8dWludDE2X3Q+KElQQzo6TWVzc2FnZU5hbWU6OldlYlBh
Z2VQcm94eV9EaWRGaXJzdExheW91dEZvckZyYW1lKSk7CisgICAgICAgIG1lc3NhZ2VOYW1lcy5n
ZXQoKS5hZGQoc3RhdGljX2Nhc3Q8dWludDE2X3Q+KElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VQ
cm94eV9EaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZSkpOworICAgICAgICBt
ZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKHN0YXRpY19jYXN0PHVpbnQxNl90PihJUEM6Ok1lc3NhZ2VO
YW1lOjpXZWJQYWdlUHJveHlfRGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGEpKTsKKyAgICAg
ICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZChzdGF0aWNfY2FzdDx1aW50MTZfdD4oSVBDOjpNZXNz
YWdlTmFtZTo6V2ViUGFnZVByb3h5X0RpZFJlYWNoTGF5b3V0TWlsZXN0b25lKSk7CisgICAgICAg
IG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoc3RhdGljX2Nhc3Q8dWludDE2X3Q+KElQQzo6TWVzc2Fn
ZU5hbWU6OldlYlBhZ2VQcm94eV9EaWRSZXN0b3JlU2Nyb2xsUG9zaXRpb24pKTsKKyAgICAgICAg
bWVzc2FnZU5hbWVzLmdldCgpLmFkZChzdGF0aWNfY2FzdDx1aW50MTZfdD4oSVBDOjpNZXNzYWdl
TmFtZTo6V2ViUGFnZVByb3h5X0RpZFN0YXJ0UHJvZ3Jlc3MpKTsKKyAgICAgICAgbWVzc2FnZU5h
bWVzLmdldCgpLmFkZChzdGF0aWNfY2FzdDx1aW50MTZfdD4oSVBDOjpNZXNzYWdlTmFtZTo6V2Vi
UGFnZVByb3h5X0RpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUpKTsKKyAgICAgICAgbWVz
c2FnZU5hbWVzLmdldCgpLmFkZChzdGF0aWNfY2FzdDx1aW50MTZfdD4oSVBDOjpNZXNzYWdlTmFt
ZTo6V2ViUGFnZVByb3h5X0VkaXRvclN0YXRlQ2hhbmdlZCkpOworICAgICAgICBtZXNzYWdlTmFt
ZXMuZ2V0KCkuYWRkKHN0YXRpY19jYXN0PHVpbnQxNl90PihJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQ
YWdlUHJveHlfUGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yRGlkQ2hhbmdlKSk7CisgICAgICAg
IG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoc3RhdGljX2Nhc3Q8dWludDE2X3Q+KElQQzo6TWVzc2Fn
ZU5hbWU6OldlYlBhZ2VQcm94eV9TZXRSZW5kZXJUcmVlU2l6ZSkpOworICAgICAgICBtZXNzYWdl
TmFtZXMuZ2V0KCkuYWRkKHN0YXRpY19jYXN0PHVpbnQxNl90PihJUEM6Ok1lc3NhZ2VOYW1lOjpX
ZWJQYWdlUHJveHlfU2V0U3RhdHVzVGV4dCkpOworICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCku
YWRkKHN0YXRpY19jYXN0PHVpbnQxNl90PihJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlUHJveHlf
U2V0TmV0d29ya1JlcXVlc3RzSW5Qcm9ncmVzcykpOwogICAgIH0pOwogCiAgICAgcmV0dXJuIG1l
c3NhZ2VOYW1lczsKQEAgLTI1NCw4ICsyNTMsOCBAQCB2b2lkIFN1c3BlbmRlZFBhZ2VQcm94eTo6
ZGlkUmVjZWl2ZU1lc3NhCiAgICAgfQogCiAjaWYgIUxPR19ESVNBQkxFRAotICAgIGlmICghbWVz
c2FnZU5hbWVzVG9JZ25vcmVXaGlsZVN1c3BlbmRlZCgpLmNvbnRhaW5zKGRlY29kZXIubWVzc2Fn
ZU5hbWUoKSkpCi0gICAgICAgIExPRyhQcm9jZXNzU3dhcHBpbmcsICJTdXNwZW5kZWRQYWdlUHJv
eHkgcmVjZWl2ZWQgdW5leHBlY3RlZCBXZWJQYWdlUHJveHkgbWVzc2FnZSAnJXMnIiwgZGVjb2Rl
ci5tZXNzYWdlTmFtZSgpLnRvU3RyaW5nKCkuZGF0YSgpKTsKKyAgICBpZiAoIW1lc3NhZ2VOYW1l
c1RvSWdub3JlV2hpbGVTdXNwZW5kZWQoKS5jb250YWlucyhzdGF0aWNfY2FzdDx1aW50MTZfdD4o
ZGVjb2Rlci5tZXNzYWdlTmFtZSgpKSkpCisgICAgICAgIExPRyhQcm9jZXNzU3dhcHBpbmcsICJT
dXNwZW5kZWRQYWdlUHJveHkgcmVjZWl2ZWQgdW5leHBlY3RlZCBXZWJQYWdlUHJveHkgbWVzc2Fn
ZSAnJXMnIiwgZGVzY3JpcHRpb24oZGVjb2Rlci5tZXNzYWdlTmFtZSgpKSk7CiAjZW5kaWYKIH0K
IApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJldmlzaW9uIDI2
MDc2NCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yMjc3LDggKzIyNzcsNiBAQCBwcml2YXRlOgogICAgIGNvbnN0IFN0cmluZyYg
cGF5bWVudENvb3JkaW5hdG9yQm91bmRJbnRlcmZhY2VJZGVudGlmaWVyKGNvbnN0IFdlYlBheW1l
bnRDb29yZGluYXRvclByb3h5JikgZmluYWw7CiAgICAgY29uc3QgU3RyaW5nJiBwYXltZW50Q29v
cmRpbmF0b3JTb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoY29uc3QgV2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHkmKSBmaW5hbDsKICAgICBjb25zdCBTdHJpbmcmIHBheW1lbnRDb29y
ZGluYXRvclNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllcihjb25zdCBXZWJQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eSYpIGZpbmFsOwotICAgIHZvaWQgcGF5bWVudENvb3JkaW5hdG9y
QWRkTWVzc2FnZVJlY2VpdmVyKFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JiwgY29uc3QgSVBD
OjpTdHJpbmdSZWZlcmVuY2UmLCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYpIGZpbmFsOwotICAgIHZv
aWQgcGF5bWVudENvb3JkaW5hdG9yUmVtb3ZlTWVzc2FnZVJlY2VpdmVyKFdlYlBheW1lbnRDb29y
ZGluYXRvclByb3h5JiwgY29uc3QgSVBDOjpTdHJpbmdSZWZlcmVuY2UmKSBmaW5hbDsKICNlbmRp
ZgogI2lmIEVOQUJMRShBUFBMRV9QQVkpICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgVUlW
aWV3Q29udHJvbGxlciAqcGF5bWVudENvb3JkaW5hdG9yUHJlc2VudGluZ1ZpZXdDb250cm9sbGVy
KGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JikgZmluYWw7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCShyZXZpc2lvbiAyNjA3NjQpCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTg1MiwxNyArODUyLDEyIEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldEludmFsaWRN
ZXNzYWdlQ2EKICAgICBzX2ludmFsaWRNZXNzYWdlQ2FsbGJhY2sgPSBpbnZhbGlkTWVzc2FnZUNh
bGxiYWNrOwogfQogCi12b2lkIFdlYlByb2Nlc3NQb29sOjpkaWRSZWNlaXZlSW52YWxpZE1lc3Nh
Z2UoY29uc3QgSVBDOjpTdHJpbmdSZWZlcmVuY2UmIG1lc3NhZ2VSZWNlaXZlck5hbWUsIGNvbnN0
IElQQzo6U3RyaW5nUmVmZXJlbmNlJiBtZXNzYWdlTmFtZSkKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6
OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6Ok1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lKQog
ewogICAgIGlmICghc19pbnZhbGlkTWVzc2FnZUNhbGxiYWNrKQogICAgICAgICByZXR1cm47CiAK
LSAgICBTdHJpbmdCdWlsZGVyIG1lc3NhZ2VOYW1lU3RyaW5nQnVpbGRlcjsKLSAgICBtZXNzYWdl
TmFtZVN0cmluZ0J1aWxkZXIuYXBwZW5kQ2hhcmFjdGVycyhtZXNzYWdlUmVjZWl2ZXJOYW1lLmRh
dGEoKSwgbWVzc2FnZVJlY2VpdmVyTmFtZS5zaXplKCkpOwotICAgIG1lc3NhZ2VOYW1lU3RyaW5n
QnVpbGRlci5hcHBlbmQoJy4nKTsKLSAgICBtZXNzYWdlTmFtZVN0cmluZ0J1aWxkZXIuYXBwZW5k
Q2hhcmFjdGVycyhtZXNzYWdlTmFtZS5kYXRhKCksIG1lc3NhZ2VOYW1lLnNpemUoKSk7Ci0KLSAg
ICBzX2ludmFsaWRNZXNzYWdlQ2FsbGJhY2sodG9BUEkoQVBJOjpTdHJpbmc6OmNyZWF0ZShtZXNz
YWdlTmFtZVN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKSkucHRyKCkpKTsKKyAgICBzX2ludmFsaWRN
ZXNzYWdlQ2FsbGJhY2sodG9BUEkoQVBJOjpTdHJpbmc6OmNyZWF0ZShkZXNjcmlwdGlvbihtZXNz
YWdlTmFtZSkpLnB0cigpKSk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlc29sdmVQYXRo
c0ZvclNhbmRib3hFeHRlbnNpb25zKCkKQEAgLTE2NzMsMjIgKzE2NjgsMjIgQEAgdm9pZCBXZWJQ
cm9jZXNzUG9vbDo6c3ludGhlc2l6ZUFwcElzQmFjawogICAgIGVuc3VyZU5ldHdvcmtQcm9jZXNz
KCkuc3ludGhlc2l6ZUFwcElzQmFja2dyb3VuZChiYWNrZ3JvdW5kKTsKIH0KIAotdm9pZCBXZWJQ
cm9jZXNzUG9vbDo6YWRkTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3Nh
Z2VSZWNlaXZlck5hbWUsIElQQzo6TWVzc2FnZVJlY2VpdmVyJiBtZXNzYWdlUmVjZWl2ZXIpCit2
b2lkIFdlYlByb2Nlc3NQb29sOjphZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpSZWNlaXZlck5hbWUg
bWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImIG1lc3NhZ2VSZWNlaXZl
cikKIHsKICAgICBtX21lc3NhZ2VSZWNlaXZlck1hcC5hZGRNZXNzYWdlUmVjZWl2ZXIobWVzc2Fn
ZVJlY2VpdmVyTmFtZSwgbWVzc2FnZVJlY2VpdmVyKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzUG9v
bDo6YWRkTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZl
ck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIElQQzo6TWVzc2FnZVJlY2VpdmVyJiBtZXNz
YWdlUmVjZWl2ZXIpCit2b2lkIFdlYlByb2Nlc3NQb29sOjphZGRNZXNzYWdlUmVjZWl2ZXIoSVBD
OjpSZWNlaXZlck5hbWUgbWVzc2FnZVJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25J
RCwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImIG1lc3NhZ2VSZWNlaXZlcikKIHsKICAgICBtX21lc3Nh
Z2VSZWNlaXZlck1hcC5hZGRNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSwgZGVz
dGluYXRpb25JRCwgbWVzc2FnZVJlY2VpdmVyKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzUG9vbDo6
cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZl
ck5hbWUpCit2b2lkIFdlYlByb2Nlc3NQb29sOjpyZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpS
ZWNlaXZlck5hbWUgbWVzc2FnZVJlY2VpdmVyTmFtZSkKIHsKICAgICBtX21lc3NhZ2VSZWNlaXZl
ck1hcC5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSk7CiB9CiAKLXZv
aWQgV2ViUHJvY2Vzc1Bvb2w6OnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVy
ZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKQordm9pZCBX
ZWJQcm9jZXNzUG9vbDo6cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6UmVjZWl2ZXJOYW1lIG1l
c3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpCiB7CiAgICAgbV9tZXNz
YWdlUmVjZWl2ZXJNYXAucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKG1lc3NhZ2VSZWNlaXZlck5hbWUs
IGRlc3RpbmF0aW9uSUQpOwogfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5oCShyZXZpc2lvbiAyNjA3NjQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDgsMjEgKzE0OCwyMSBAQCBwdWJs
aWM6CiAgICAgICAgIG1fc3VwcGxlbWVudHMuYWRkKFQ6OnN1cHBsZW1lbnROYW1lKCksIFQ6OmNy
ZWF0ZSh0aGlzKSk7CiAgICAgfQogCi0gICAgdm9pZCBhZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpT
dHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpNZXNzYWdlUmVjZWl2ZXIm
KTsKLSAgICB2b2lkIGFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNz
YWdlUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBJUEM6Ok1lc3NhZ2VSZWNl
aXZlciYpOwotICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJl
bmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUpOwotICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVy
KElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3Rp
bmF0aW9uSUQpOworICAgIHZvaWQgYWRkTWVzc2FnZVJlY2VpdmVyKElQQzo6UmVjZWl2ZXJOYW1l
LCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYpOworICAgIHZvaWQgYWRkTWVzc2FnZVJlY2VpdmVyKElQ
Qzo6UmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBJUEM6Ok1lc3NhZ2VSZWNl
aXZlciYpOworICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6UmVjZWl2ZXJOYW1l
KTsKKyAgICB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlJlY2VpdmVyTmFtZSwgdWlu
dDY0X3QgZGVzdGluYXRpb25JRCk7CiAKICAgICBXZWJCYWNrRm9yd2FyZENhY2hlJiBiYWNrRm9y
d2FyZENhY2hlKCkgeyByZXR1cm4gbV9iYWNrRm9yd2FyZENhY2hlLmdldCgpOyB9CiAgICAgCiAg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAgdm9pZCBhZGRNZXNzYWdlUmVjZWl2ZXIoSVBD
OjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgT2JqZWN0SWRlbnRpZmllcjxU
PiBkZXN0aW5hdGlvbklELCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYgcmVjZWl2ZXIpCisgICAgdm9p
ZCBhZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpSZWNlaXZlck5hbWUgbWVzc2FnZVJlY2VpdmVyTmFt
ZSwgT2JqZWN0SWRlbnRpZmllcjxUPiBkZXN0aW5hdGlvbklELCBJUEM6Ok1lc3NhZ2VSZWNlaXZl
ciYgcmVjZWl2ZXIpCiAgICAgewogICAgICAgICBhZGRNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJl
Y2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRC50b1VJbnQ2NCgpLCByZWNlaXZlcik7CiAgICAgfQog
ICAgIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJl
Y2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIE9iamVjdElk
ZW50aWZpZXI8VD4gZGVzdGluYXRpb25JRCkKKyAgICB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZl
cihJUEM6OlJlY2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBPYmplY3RJZGVudGlmaWVy
PFQ+IGRlc3RpbmF0aW9uSUQpCiAgICAgewogICAgICAgICByZW1vdmVNZXNzYWdlUmVjZWl2ZXIo
bWVzc2FnZVJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRC50b1VJbnQ2NCgpKTsKICAgICB9CkBA
IC00MTcsNyArNDE3LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICBzdGF0aWMgdm9pZCBzZXRJ
bnZhbGlkTWVzc2FnZUNhbGxiYWNrKHZvaWQgKCopKFdLU3RyaW5nUmVmKSk7Ci0gICAgc3RhdGlj
IHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKGNvbnN0IElQQzo6U3RyaW5nUmVmZXJlbmNl
JiBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBjb25zdCBJUEM6OlN0cmluZ1JlZmVyZW5jZSYgbWVzc2Fn
ZU5hbWUpOworICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6Ok1l
c3NhZ2VOYW1lKTsKIAogICAgIGJvb2wgaXNVUkxLbm93bkhTVFNIb3N0KGNvbnN0IFN0cmluZyYg
dXJsU3RyaW5nKSBjb25zdDsKICAgICB2b2lkIHJlc2V0SFNUU0hvc3RzKCk7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAJKHJldmlzaW9uIDI2MDc2
NCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE2MSw4ICsxNjEsOCBAQCBjbGFzcyBVSVByb3h5Rm9yQ2FwdHVyZSBmaW5h
bCA6IHB1YmxpYyBVCiBwdWJsaWM6CiAgICAgZXhwbGljaXQgVUlQcm94eUZvckNhcHR1cmUoV2Vi
UHJvY2Vzc1Byb3h5JiBwcm9jZXNzKSA6IG1fcHJvY2Vzcyhwcm9jZXNzKSB7IH0KIHByaXZhdGU6
Ci0gICAgdm9pZCBhZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2Fn
ZVJlY2VpdmVyTmFtZSwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImIHJlY2VpdmVyKSBmaW5hbCB7IG1f
cHJvY2Vzcy5hZGRNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSwgcmVjZWl2ZXIp
OyB9Ci0gICAgdm9pZCByZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2Ug
bWVzc2FnZVJlY2VpdmVyTmFtZSkgZmluYWwgeyBtX3Byb2Nlc3MucmVtb3ZlTWVzc2FnZVJlY2Vp
dmVyKG1lc3NhZ2VSZWNlaXZlck5hbWUpOyB9CisgICAgdm9pZCBhZGRNZXNzYWdlUmVjZWl2ZXIo
SVBDOjpSZWNlaXZlck5hbWUgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpNZXNzYWdlUmVjZWl2
ZXImIHJlY2VpdmVyKSBmaW5hbCB7IG1fcHJvY2Vzcy5hZGRNZXNzYWdlUmVjZWl2ZXIobWVzc2Fn
ZVJlY2VpdmVyTmFtZSwgcmVjZWl2ZXIpOyB9CisgICAgdm9pZCByZW1vdmVNZXNzYWdlUmVjZWl2
ZXIoSVBDOjpSZWNlaXZlck5hbWUgbWVzc2FnZVJlY2VpdmVyTmFtZSkgZmluYWwgeyBtX3Byb2Nl
c3MucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKG1lc3NhZ2VSZWNlaXZlck5hbWUpOyB9CiAgICAgSVBD
OjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKCkgZmluYWwgeyByZXR1cm4gKm1fcHJvY2Vzcy5jb25u
ZWN0aW9uKCk7IH0KICAgICBMb2dnZXImIGxvZ2dlcigpIGZpbmFsCiAgICAgewpAQCAtMzUyLDcg
KzM1Miw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpwbGF0Zm9ybUdldExhdW5jaE8KIGJvb2wg
V2ViUHJvY2Vzc1Byb3h5OjpzaG91bGRTZW5kUGVuZGluZ01lc3NhZ2UoY29uc3QgUGVuZGluZ01l
c3NhZ2UmIG1lc3NhZ2UpCiB7CiAjaWYgSEFWRShTQU5EQk9YX0lTU1VFX1JFQURfRVhURU5TSU9O
X1RPX1BST0NFU1NfQllfQVVESVRfVE9LRU4pCi0gICAgaWYgKG1lc3NhZ2UuZW5jb2Rlci0+bWVz
c2FnZU5hbWUoKSA9PSAiTG9hZFJlcXVlc3RXYWl0aW5nRm9yUHJvY2Vzc0xhdW5jaCIpIHsKKyAg
ICBpZiAobWVzc2FnZS5lbmNvZGVyLT5tZXNzYWdlTmFtZSgpID09IElQQzo6TWVzc2FnZU5hbWU6
OldlYlBhZ2VfTG9hZFJlcXVlc3RXYWl0aW5nRm9yUHJvY2Vzc0xhdW5jaCkgewogICAgICAgICBh
dXRvIGJ1ZmZlciA9IG1lc3NhZ2UuZW5jb2Rlci0+YnVmZmVyKCk7CiAgICAgICAgIGF1dG8gYnVm
ZmVyU2l6ZSA9IG1lc3NhZ2UuZW5jb2Rlci0+YnVmZmVyU2l6ZSgpOwogICAgICAgICBzdGQ6OnVu
aXF1ZV9wdHI8SVBDOjpEZWNvZGVyPiBkZWNvZGVyID0gbWFrZVVuaXF1ZTxJUEM6OkRlY29kZXI+
KGJ1ZmZlciwgYnVmZmVyU2l6ZSwgbnVsbHB0ciwgVmVjdG9yPElQQzo6QXR0YWNobWVudD4geyB9
KTsKQEAgLTg0MCwxMSArODQwLDExIEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzRGlk
VGVybWluYXQKICAgICB9CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRSZWNlaXZlSW52
YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OlN0cmluZ1JlZmVy
ZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFt
ZSkKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6Ok1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lKQogewot
ICAgIGxvZ0ludmFsaWRNZXNzYWdlKGNvbm5lY3Rpb24sIG1lc3NhZ2VSZWNlaXZlck5hbWUsIG1l
c3NhZ2VOYW1lKTsKKyAgICBsb2dJbnZhbGlkTWVzc2FnZShjb25uZWN0aW9uLCBtZXNzYWdlTmFt
ZSk7CiAKLSAgICBXZWJQcm9jZXNzUG9vbDo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKG1lc3Nh
Z2VSZWNlaXZlck5hbWUsIG1lc3NhZ2VOYW1lKTsKKyAgICBXZWJQcm9jZXNzUG9vbDo6ZGlkUmVj
ZWl2ZUludmFsaWRNZXNzYWdlKG1lc3NhZ2VOYW1lKTsKIAogICAgIC8vIFRlcm1pbmF0ZSB0aGUg
V2ViQ29udGVudCBwcm9jZXNzLgogICAgIHRlcm1pbmF0ZSgpOwpJbmRleDogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgJKHJldmlzaW9uIDI2MDc2NCkKKysrIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC00
NTUsNyArNDU1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2
ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVl
X3B0cjxJUEM6OkVuY29kZXI+Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRDbG9zZShJUEM6OkNv
bm5lY3Rpb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1l
LCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBk
aWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlTmFt
ZSkgb3ZlcnJpZGU7CiAKICAgICAvLyBSZXNwb25zaXZlbmVzc1RpbWVyOjpDbGllbnQKICAgICB2
b2lkIGRpZEJlY29tZVVucmVzcG9uc2l2ZSgpIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5h
Z2VyUHJveHkuaAkocmV2aXNpb24gMjYwNzY0KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC01
MSw4ICs1MSw4IEBAIHB1YmxpYzoKICAgICBjbGFzcyBDb25uZWN0aW9uUHJveHkgewogICAgIHB1
YmxpYzoKICAgICAgICAgdmlydHVhbCB+Q29ubmVjdGlvblByb3h5KCkgPSBkZWZhdWx0OwotICAg
ICAgICB2aXJ0dWFsIHZvaWQgYWRkTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNl
LCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYpID0gMDsKLSAgICAgICAgdmlydHVhbCB2b2lkIHJlbW92
ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSkgPSAwOworICAgICAgICB2aXJ0
dWFsIHZvaWQgYWRkTWVzc2FnZVJlY2VpdmVyKElQQzo6UmVjZWl2ZXJOYW1lLCBJUEM6Ok1lc3Nh
Z2VSZWNlaXZlciYpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNl
aXZlcihJUEM6OlJlY2VpdmVyTmFtZSkgPSAwOwogICAgICAgICB2aXJ0dWFsIElQQzo6Q29ubmVj
dGlvbiYgY29ubmVjdGlvbigpID0gMDsKICAgICAgICAgdmlydHVhbCBib29sIHdpbGxTdGFydENh
cHR1cmUoV2ViQ29yZTo6Q2FwdHVyZURldmljZTo6RGV2aWNlVHlwZSkgY29uc3QgPSAwOwogICAg
ICAgICB2aXJ0dWFsIExvZ2dlciYgbG9nZ2VyKCkgPSAwOwpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0JKHJldmlzaW9uIDI2
MDc2NCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29h
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOTAsMTYgKzI5MCw2IEBAIGNvbnN0IFN0cmluZyYgV2Vi
UGFnZVByb3h5OjpwYXltZW50Q29vcmQKICAgICByZXR1cm4gd2Vic2l0ZURhdGFTdG9yZSgpLmNv
bmZpZ3VyYXRpb24oKS5zb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIoKTsKIH0K
IAotdm9pZCBXZWJQYWdlUHJveHk6OnBheW1lbnRDb29yZGluYXRvckFkZE1lc3NhZ2VSZWNlaXZl
cihXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYsIGNvbnN0IElQQzo6U3RyaW5nUmVmZXJlbmNl
JiBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYgbWVzc2FnZVJlY2Vp
dmVyKQotewotICAgIHByb2Nlc3MoKS5hZGRNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVy
TmFtZSwgbV93ZWJQYWdlSUQsIG1lc3NhZ2VSZWNlaXZlcik7Ci19Ci0KLXZvaWQgV2ViUGFnZVBy
b3h5OjpwYXltZW50Q29vcmRpbmF0b3JSZW1vdmVNZXNzYWdlUmVjZWl2ZXIoV2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHkmLCBjb25zdCBJUEM6OlN0cmluZ1JlZmVyZW5jZSYgbWVzc2FnZVJlY2Vp
dmVyTmFtZSkKLXsKLSAgICBwcm9jZXNzKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKG1lc3NhZ2VS
ZWNlaXZlck5hbWUsIG1fd2ViUGFnZUlEKTsKLX0KLQogI2VuZGlmCiAKICNpZiBFTkFCTEUoU1BF
RUNIX1NZTlRIRVNJUykKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dQVS9HUFVQcm9j
ZXNzUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dQVS9H
UFVQcm9jZXNzUHJveHkuY3BwCShyZXZpc2lvbiAyNjA3NjQpCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjExLDEx
ICsyMTEsMTEgQEAgdm9pZCBHUFVQcm9jZXNzUHJveHk6OmRpZENsb3NlKElQQzo6Q29ubgogICAg
IGdwdVByb2Nlc3NDcmFzaGVkKCk7CiB9CiAKLXZvaWQgR1BVUHJvY2Vzc1Byb3h5OjpkaWRSZWNl
aXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OlN0cmlu
Z1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNz
YWdlTmFtZSkKK3ZvaWQgR1BVUHJvY2Vzc1Byb3h5OjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6Ok1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1l
KQogewotICAgIGxvZ0ludmFsaWRNZXNzYWdlKGNvbm5lY3Rpb24sIG1lc3NhZ2VSZWNlaXZlck5h
bWUsIG1lc3NhZ2VOYW1lKTsKKyAgICBsb2dJbnZhbGlkTWVzc2FnZShjb25uZWN0aW9uLCBtZXNz
YWdlTmFtZSk7CiAKLSAgICBXZWJQcm9jZXNzUG9vbDo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdl
KG1lc3NhZ2VSZWNlaXZlck5hbWUsIG1lc3NhZ2VOYW1lKTsKKyAgICBXZWJQcm9jZXNzUG9vbDo6
ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKG1lc3NhZ2VOYW1lKTsKIAogICAgIC8vIFRlcm1pbmF0
ZSB0aGUgR1BVIHByb2Nlc3MuCiAgICAgdGVybWluYXRlKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5oCShyZXZpc2lvbiAyNjA3NjQpCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEwMCw3ICsxMDAsNyBAQCBwcml2YXRlOgogICAgIC8vIElQQzo6Q29ubmVjdGlv
bjo6Q2xpZW50CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJ
UEM6OkRlY29kZXImKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZENsb3NlKElQQzo6Q29ubmVjdGlv
biYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIElQQzo6
U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2Vp
dmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VOYW1lKSBvdmVy
cmlkZTsKIAogI2lmIEhBVkUoVklTSUJJTElUWV9QUk9QQUdBVElPTl9WSUVXKQogICAgIHZvaWQg
ZGlkQ3JlYXRlQ29udGV4dEZvclZpc2liaWxpdHlQcm9wYWdhdGlvbihMYXllckhvc3RpbmdDb250
ZXh0SUQpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCShyZXZpc2lvbiAyNjA3NjQpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNzcsOSArMjc3LDkgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRD
bG9zZShJUEM6OgogICAgIG5ldHdvcmtQcm9jZXNzQ3Jhc2hlZCgpOwogfQogCi12b2lkIE5ldHdv
cmtQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
IGNvbm5lY3Rpb24sIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIElQ
Qzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lKQordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5
OjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJ
UEM6Ok1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lKQogewotICAgIGxvZ0ludmFsaWRNZXNzYWdlKGNv
bm5lY3Rpb24sIG1lc3NhZ2VSZWNlaXZlck5hbWUsIG1lc3NhZ2VOYW1lKTsKKyAgICBsb2dJbnZh
bGlkTWVzc2FnZShjb25uZWN0aW9uLCBtZXNzYWdlTmFtZSk7CiAgICAgdGVybWluYXRlKCk7CiB9
CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5oCShyZXZpc2lvbiAyNjA3NjQpCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAt
MjQ1LDcgKzI0NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2Vp
dmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1
ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkQ2xvc2UoSVBDOjpD
b25uZWN0aW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFt
ZSwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUpIG92ZXJyaWRlOworICAgIHZvaWQg
ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZU5h
bWUpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNOZXR3b3JrUHJvY2Vzc1Byb3h5
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8
SVBDOjpFbmNvZGVyPiYpOwogCiAgICAgLy8gTWVzc2FnZSBoYW5kbGVycwpJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5
LmNwcAkocmV2aXNpb24gMjYwNzY0KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5Qcm9jZXNzUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTQsOSArMjE0LDkg
QEAgdm9pZCBQbHVnaW5Qcm9jZXNzUHJveHk6OmRpZENsb3NlKElQQzo6QwogICAgIHBsdWdpblBy
b2Nlc3NDcmFzaGVkT3JGYWlsZWRUb0xhdW5jaCgpOwogfQogCi12b2lkIFBsdWdpblByb2Nlc3NQ
cm94eTo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlv
biwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpTdHJpbmdS
ZWZlcmVuY2UgbWVzc2FnZU5hbWUpCit2b2lkIFBsdWdpblByb2Nlc3NQcm94eTo6ZGlkUmVjZWl2
ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpNZXNzYWdl
TmFtZSBtZXNzYWdlTmFtZSkKIHsKLSAgICBsb2dJbnZhbGlkTWVzc2FnZShjb25uZWN0aW9uLCBt
ZXNzYWdlUmVjZWl2ZXJOYW1lLCBtZXNzYWdlTmFtZSk7CisgICAgbG9nSW52YWxpZE1lc3NhZ2Uo
Y29ubmVjdGlvbiwgbWVzc2FnZU5hbWUpOwogICAgIHRlcm1pbmF0ZSgpOwogfQogCkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1By
b3h5LmgJKHJldmlzaW9uIDI2MDc2NCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNCw3ICsxMDQsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jikgb3ZlcnJp
ZGU7CiAKICAgICB2b2lkIGRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYpIG92ZXJyaWRlOwotICAg
IHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6U3Ry
aW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1l
c3NhZ2VOYW1lKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VOYW1lKSBvdmVycmlkZTsKIAogICAgIC8vIFBy
b2Nlc3NMYXVuY2hlcjo6Q2xpZW50CiAgICAgdm9pZCBkaWRGaW5pc2hMYXVuY2hpbmcoUHJvY2Vz
c0xhdW5jaGVyKiwgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyKSBvdmVycmlkZTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDI2MDc2NCkK
KysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNzkzLDcgKzc5Myw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2Uo
SVBDOjoKICAgICB9CiAjZW5kaWYKIAotICAgIExPR19FUlJPUigiVW5oYW5kbGVkIHdlYiBwcm9j
ZXNzIG1lc3NhZ2UgJyVzOjolcycgKGRlc3RpbmF0aW9uOiAlIiBQUkl1NjQgIiBwaWQ6ICVkKSIs
IGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpLnRvU3RyaW5nKCkuZGF0YSgpLCBkZWNvZGVy
Lm1lc3NhZ2VOYW1lKCkudG9TdHJpbmcoKS5kYXRhKCksIGRlY29kZXIuZGVzdGluYXRpb25JRCgp
LCBzdGF0aWNfY2FzdDxpbnQ+KGdldEN1cnJlbnRQcm9jZXNzSUQoKSkpOworICAgIExPR19FUlJP
UigiVW5oYW5kbGVkIHdlYiBwcm9jZXNzIG1lc3NhZ2UgJyVzJyAoZGVzdGluYXRpb246ICUiIFBS
SXU2NCAiIHBpZDogJWQpIiwgZGVzY3JpcHRpb24oZGVjb2Rlci5tZXNzYWdlTmFtZSgpKSwgZGVj
b2Rlci5kZXN0aW5hdGlvbklEKCksIHN0YXRpY19jYXN0PGludD4oZ2V0Q3VycmVudFByb2Nlc3NJ
RCgpKSk7CiB9CiAKIFdlYkZyYW1lKiBXZWJQcm9jZXNzOjp3ZWJGcmFtZShGcmFtZUlkZW50aWZp
ZXIgZnJhbWVJRCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BV
UHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCShyZXZpc2lvbiAyNjA3NjQpCisrKyBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNzMsNyArNzMsNyBAQCB2b2lkIEdQVVByb2Nlc3NDb25uZWN0aW9uOjpk
aWRDbG9zZShJUEM6CiB7CiB9CiAKLXZvaWQgR1BVUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2Vp
dmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSwg
SVBDOjpTdHJpbmdSZWZlcmVuY2UpCit2b2lkIEdQVVByb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNl
aXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlTmFtZSkKIHsK
IH0KIApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVj
dGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJv
Y2Vzc0Nvbm5lY3Rpb24uaAkocmV2aXNpb24gMjYwNzY0KQorKysgU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC04MCw3
ICs4MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mKSBv
dmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQ
Qzo6RGVjb2RlciYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+
JikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpTdHJp
bmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZUlu
dmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZU5hbWUpIG92ZXJyaWRl
OwogCiAgICAgYm9vbCBkaXNwYXRjaE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNv
ZGVyJik7CiAgICAgYm9vbCBkaXNwYXRjaFN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQ
Qzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jik7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3Rvci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yLmgJKHJl
dmlzaW9uIDI2MDc2NCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2Vi
SW5zcGVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogCiAg
ICAgLy8gSVBDOjpDb25uZWN0aW9uOjpDbGllbnQKICAgICB2b2lkIGRpZENsb3NlKElQQzo6Q29u
bmVjdGlvbiYpIG92ZXJyaWRlIHsgY2xvc2UoKTsgfQotICAgIHZvaWQgZGlkUmVjZWl2ZUludmFs
aWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6U3RyaW5nUmVmZXJlbmNlLCBJUEM6OlN0
cmluZ1JlZmVyZW5jZSkgb3ZlcnJpZGUgeyBjbG9zZSgpOyB9CisgICAgdm9pZCBkaWRSZWNlaXZl
SW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlTmFtZSkgb3ZlcnJp
ZGUgeyBjbG9zZSgpOyB9CiAKICAgICB2b2lkIHNob3coKTsKICAgICB2b2lkIGNsb3NlKCk7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNw
ZWN0b3JVSS5oCShyZXZpc2lvbiAyNjA3NjQpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5zcGVjdG9yL1dlYkluc3BlY3RvclVJLmgJKHdvcmtpbmcgY29weSkKQEAgLTUyLDcgKzUyLDcg
QEAgcHVibGljOgogCiAgICAgLy8gSVBDOjpDb25uZWN0aW9uOjpDbGllbnQKICAgICB2b2lkIGRp
ZENsb3NlKElQQzo6Q29ubmVjdGlvbiYpIG92ZXJyaWRlIHsgLyogRG8gbm90aGluZywgdGhlIGlu
c3BlY3RlZCBwYWdlIHByb2Nlc3MgbWF5IGhhdmUgY3Jhc2hlZCBhbmQgbWF5IGJlIGdldHRpbmcg
cmVwbGFjZWQuICovIH0KLSAgICB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSwgSVBDOjpTdHJpbmdSZWZlcmVuY2UpIG92
ZXJyaWRlIHsgY2xvc2VXaW5kb3coKTsgfQorICAgIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZU5hbWUpIG92ZXJyaWRlIHsgY2xvc2VX
aW5kb3coKTsgfQogCiAgICAgLy8gQ2FsbGVkIGJ5IFdlYkluc3BlY3RvclVJIG1lc3NhZ2VzCiAg
ICAgdm9pZCBlc3RhYmxpc2hDb25uZWN0aW9uKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgaW5zcGVj
dGVkUGFnZUlkZW50aWZpZXIsIGNvbnN0IERlYnVnZ2FibGVJbmZvRGF0YSYsIGJvb2wgdW5kZXJU
ZXN0LCB1bnNpZ25lZCBpbnNwZWN0aW9uTGV2ZWwpOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24uY3BwCShyZXZpc2lvbiAyNjA3NjQpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTks
NyArMjE5LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZENsb3NlKAogI2Vu
ZGlmCiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlSW52YWxp
ZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpTdHJpbmdSZWZlcmVuY2UsIElQQzo6U3Ry
aW5nUmVmZXJlbmNlKQordm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVJ
bnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VOYW1lKQogewogfQog
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaAkocmV2aXNpb24gMjYwNzY0KQorKysgU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgJKHdv
cmtpbmcgY29weSkKQEAgLTk4LDcgKzk4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2Vp
dmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwogICAg
IHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2Rl
ciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBk
aWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVJ
bnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNz
YWdlUmVjZWl2ZXJOYW1lLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZSkgb3ZlcnJp
ZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwg
SVBDOjpNZXNzYWdlTmFtZSkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRpZEZpbmlzaFBpbmdMb2Fk
KHVpbnQ2NF90IHBpbmdMb2FkSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmLCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYpOwogICAgIHZvaWQgZGlkRmluaXNoUHJlY29ubmVj
dGlvbih1aW50NjRfdCBwcmVjb25uZWN0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciYmKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblBy
b2Nlc3NDb25uZWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi5jcHAJKHJldmlzaW9uIDI2MDc2NCkK
KysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0
aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI4LDcgKzEyOCw3IEBAIHZvaWQgUGx1Z2luUHJv
Y2Vzc0Nvbm5lY3Rpb246OmRpZENsb3NlKEkKICAgICB9CiB9CiAKLXZvaWQgUGx1Z2luUHJvY2Vz
c0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJ
UEM6OlN0cmluZ1JlZmVyZW5jZSwgSVBDOjpTdHJpbmdSZWZlcmVuY2UpCit2b2lkIFBsdWdpblBy
b2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiwgSVBDOjpNZXNzYWdlTmFtZSkKIHsKIH0KIApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi5oCShy
ZXZpc2lvbiAyNjA3NjQpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5Qcm9jZXNzQ29ubmVjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC02Niw3ICs2Niw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6
OkRlY29kZXImKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVy
PiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJikgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwg
SVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpTdHJpbmdSZWZl
cmVuY2UgbWVzc2FnZU5hbWUpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZU5hbWUpIG92ZXJyaWRlOwogCiAg
ICAgLy8gTWVzc2FnZSBoYW5kbGVycy4KICAgICB2b2lkIGRpZFJlY2VpdmVTeW5jUGx1Z2luUHJv
Y2Vzc0Nvbm5lY3Rpb25NZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0
ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3Rl
TGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tCShyZXZpc2lvbiAyNjA3NjQp
CisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVt
b3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0JKHdvcmtpbmcgY29weSkKQEAgLTM4NSw3ICszODUs
NyBAQCB2b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjp1cGRhdGVSCiAgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6V2lsbENvbW1pdExheWVy
VHJlZShsYXllclRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSUQoKSkpOwogCiAgICAgTWVzc2FnZXM6
OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OkNvbW1pdExheWVyVHJlZSBtZXNzYWdl
KGxheWVyVHJhbnNhY3Rpb24sIHNjcm9sbGluZ1RyYW5zYWN0aW9uKTsKLSAgICBhdXRvIGNvbW1p
dEVuY29kZXIgPSBtYWtlVW5pcXVlPElQQzo6RW5jb2Rlcj4oTWVzc2FnZXM6OlJlbW90ZUxheWVy
VHJlZURyYXdpbmdBcmVhUHJveHk6OkNvbW1pdExheWVyVHJlZTo6cmVjZWl2ZXJOYW1lKCksIE1l
c3NhZ2VzOjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5OjpDb21taXRMYXllclRyZWU6
Om5hbWUoKSwgbV9pZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgIGF1dG8gY29tbWl0RW5jb2Rl
ciA9IG1ha2VVbmlxdWU8SVBDOjpFbmNvZGVyPihNZXNzYWdlczo6UmVtb3RlTGF5ZXJUcmVlRHJh
d2luZ0FyZWFQcm94eTo6Q29tbWl0TGF5ZXJUcmVlOjpuYW1lKCksIG1faWRlbnRpZmllci50b1VJ
bnQ2NCgpKTsKICAgICBjb21taXRFbmNvZGVyLT5lbmNvZGUobWVzc2FnZS5hcmd1bWVudHMoKSk7
CiAKICAgICAvLyBGSVhNRTogTW92ZSBhbGwgYmFja2luZyBzdG9yZSBmbHVzaGluZyBtYW5hZ2Vt
ZW50IHRvIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlQ29sbGVjdGlvbi4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>397841</attachid>
            <date>2020-04-28 08:43:29 -0700</date>
            <delta_ts>2020-05-01 15:24:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211112-20200428084315.patch</filename>
            <type>text/plain</type>
            <size>295910</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNjA3NjQpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDIwLTA0LTI3ICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVkdWNlIElQQyBvdmVyaGVhZCBm
b3IgbWVzc2FnZSByZWNlaXZlciBuYW1lIGFuZCBtZXNzYWdlIG5hbWUgdG8gMiBieXRlcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjExMTEyCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvRW51bVRy
YWl0cy5oOgorCiAyMDIwLTA0LTI2ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbQ29jb2FdIHN0b3AgdXNpbmcgb3V0IGFyZ3VtZW50cyBmb3IgZG9jdW1lbnQgYXR0
cmlidXRlcyB3aGVuIGNvbnZlcnRpbmcgdG8gYXR0cmlidXRlZCBzdHJpbmdzCkluZGV4OiBTb3Vy
Y2UvV1RGL3d0Zi9FbnVtVHJhaXRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvRW51
bVRyYWl0cy5oCShyZXZpc2lvbiAyNjA3NjQpCisrKyBTb3VyY2UvV1RGL3d0Zi9FbnVtVHJhaXRz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDkgQEAgc3RydWN0IEVudW1WYWx1ZUNoZWNr
ZXI8VCwgRW51bVZhbHVlczxFPgogICAgIH0KIH07CiAKLXRlbXBsYXRlPHR5cGVuYW1lIEUsIHR5
cGVuYW1lIFQsIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19lbnVtPEU+Ojp2YWx1ZSAmJiAhc3Rk
Ojppc19zYW1lPHN0ZDo6dW5kZXJseWluZ190eXBlX3Q8RT4sIGJvb2w+Ojp2YWx1ZT4qID0gbnVs
bHB0cj4KK3RlbXBsYXRlPHR5cGVuYW1lIFU+IGNsYXNzIEhhc0N1c3RvbUlzVmFsaWRFbnVtIDog
cHVibGljIHN0ZDo6ZmFsc2VfdHlwZSB7IH07CisKK3RlbXBsYXRlPHR5cGVuYW1lIEUsIHR5cGVu
YW1lIFQsIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19lbnVtPEU+Ojp2YWx1ZSAmJiAhc3RkOjpp
c19zYW1lPHN0ZDo6dW5kZXJseWluZ190eXBlX3Q8RT4sIGJvb2w+Ojp2YWx1ZSAmJiAhSGFzQ3Vz
dG9tSXNWYWxpZEVudW08RT46OnZhbHVlPiogPSBudWxscHRyPgogY29uc3RleHByIGJvb2wgaXNW
YWxpZEVudW0oVCB0KQogewogICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFQpID49IHN0ZDo6dW5k
ZXJseWluZ190eXBlX3Q8RT4oKSwgIkludGVncmFsIHR5cGUgbXVzdCBiZSBhdCBsZWFzdCB0aGUg
c2l6ZSBvZiB0aGUgdW5kZXJseWluZyBlbnVtIHR5cGUiKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lv
biAyNjA4MDYpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDI4NiBAQAorMjAyMC0wNC0yNyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNl
bkB3ZWJraXQub3JnPgorCisgICAgICAgIFJlZHVjZSBJUEMgb3ZlcmhlYWQgZm9yIG1lc3NhZ2Ug
cmVjZWl2ZXIgbmFtZSBhbmQgbWVzc2FnZSBuYW1lIHRvIDIgYnl0ZXMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMTExMgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtb3V0cHV0
LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBH
UFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0
OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UpOgor
ICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVN
ZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OmRpZFJlY2VpdmVTeW5jTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UpOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UHJvY2Vzczo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9pb3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NJT1MubW06CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpwYXltZW50Q29vcmRpbmF0b3JBZGRN
ZXNzYWdlUmVjZWl2ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6cGF5bWVudENvb3JkaW5hdG9yUmVtb3ZlTWVzc2FnZVJlY2VpdmVy
KTogRGVsZXRlZC4KKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHA6CisgICAg
ICAgIChJUEM6OkNvbm5lY3Rpb246OldhaXRGb3JNZXNzYWdlU3RhdGU6OldhaXRGb3JNZXNzYWdl
U3RhdGUpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjphZGRXb3JrUXVldWVNZXNzYWdlUmVj
ZWl2ZXIpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpyZW1vdmVXb3JrUXVldWVNZXNzYWdl
UmVjZWl2ZXIpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpkaXNwYXRjaFdvcmtRdWV1ZU1l
c3NhZ2VSZWNlaXZlck1lc3NhZ2UpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjphZGRUaHJl
YWRNZXNzYWdlUmVjZWl2ZXIpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpyZW1vdmVUaHJl
YWRNZXNzYWdlUmVjZWl2ZXIpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpkaXNwYXRjaFRo
cmVhZE1lc3NhZ2VSZWNlaXZlck1lc3NhZ2UpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpj
cmVhdGVTeW5jTWVzc2FnZUVuY29kZXIpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpzZW5k
TWVzc2FnZSk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OndhaXRGb3JNZXNzYWdlKToKKyAg
ICAgICAgKElQQzo6Q29ubmVjdGlvbjo6c2VuZFN5bmNNZXNzYWdlKToKKyAgICAgICAgKElQQzo6
Q29ubmVjdGlvbjo6d2FpdEZvclN5bmNSZXBseSk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246
OnByb2Nlc3NJbmNvbWluZ01lc3NhZ2UpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpkaXNw
YXRjaFN5bmNNZXNzYWdlKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6ZGlzcGF0Y2hEaWRS
ZWNlaXZlSW52YWxpZE1lc3NhZ2UpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpkaXNwYXRj
aE1lc3NhZ2UpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpkaXNwYXRjaE1lc3NhZ2VUb1dv
cmtRdWV1ZVJlY2VpdmVyKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6ZGlzcGF0Y2hNZXNz
YWdlVG9UaHJlYWRSZWNlaXZlcik6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OmRpc3BhdGNo
SW5jb21pbmdNZXNzYWdlcyk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaDoK
KyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6c2VuZCk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rp
b246OnNlbmRXaXRoQXN5bmNSZXBseSk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnNlbmRT
eW5jKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6d2FpdEZvckFuZERpc3BhdGNoSW1tZWRp
YXRlbHkpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9EZWNvZGVyLmNwcDoKKyAgICAgICAgKiBQ
bGF0Zm9ybS9JUEMvRGVjb2Rlci5oOgorICAgICAgICAoSVBDOjpEZWNvZGVyOjptZXNzYWdlUmVj
ZWl2ZXJOYW1lIGNvbnN0KToKKyAgICAgICAgKElQQzo6RGVjb2Rlcjo6bWVzc2FnZU5hbWUgY29u
c3QpOgorICAgICAgICAoSVBDOjpEZWNvZGVyOjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpEZWNv
ZGVyOjpvcGVyYXRvcj4+KToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvRW5jb2Rlci5jcHA6Cisg
ICAgICAgIChJUEM6OkVuY29kZXI6OkVuY29kZXIpOgorICAgICAgICAoSVBDOjpFbmNvZGVyOjpl
bmNvZGVIZWFkZXIpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9FbmNvZGVyLmg6CisgICAgICAg
ICogUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaDoKKyAgICAgICAgKElQQzo6aGFuZGxlTWVz
c2FnZUFzeW5jKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVyTWFwLmNw
cDoKKyAgICAgICAgKElQQzo6TWVzc2FnZVJlY2VpdmVyTWFwOjphZGRNZXNzYWdlUmVjZWl2ZXIp
OgorICAgICAgICAoSVBDOjpNZXNzYWdlUmVjZWl2ZXJNYXA6OnJlbW92ZU1lc3NhZ2VSZWNlaXZl
cik6CisgICAgICAgIChJUEM6Ok1lc3NhZ2VSZWNlaXZlck1hcDo6ZGlzcGF0Y2hNZXNzYWdlKToK
KyAgICAgICAgKElQQzo6TWVzc2FnZVJlY2VpdmVyTWFwOjpkaXNwYXRjaFN5bmNNZXNzYWdlKToK
KyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVyTWFwLmg6CisgICAgICAgICog
UGxhdGZvcm0vSVBDL01lc3NhZ2VTZW5kZXIuaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvY29j
b2EvQ29ubmVjdGlvbkNvY29hLm1tOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpvcGVuKToK
KyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6c2VuZE1lc3NhZ2UpOgorICAgICAgICAoSVBDOjpD
b25uZWN0aW9uOjpzZW5kT3V0Z29pbmdNZXNzYWdlKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlv
bjo6cmVjZWl2ZVNvdXJjZUV2ZW50SGFuZGxlcik6CisgICAgICAgICogUGxhdGZvcm0vSVBDL2Nv
Y29hL01hY2hNZXNzYWdlLmNwcDoKKyAgICAgICAgKElQQzo6TWFjaE1lc3NhZ2U6OmNyZWF0ZSk6
CisgICAgICAgIChJUEM6Ok1hY2hNZXNzYWdlOjpNYWNoTWVzc2FnZSk6CisgICAgICAgICogUGxh
dGZvcm0vSVBDL2NvY29hL01hY2hNZXNzYWdlLmg6CisgICAgICAgIChJUEM6Ok1hY2hNZXNzYWdl
OjptZXNzYWdlUmVjZWl2ZXJOYW1lIGNvbnN0KToKKyAgICAgICAgKElQQzo6TWFjaE1lc3NhZ2U6
Om1lc3NhZ2VOYW1lIGNvbnN0KToKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3ND
b25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmRp
ZFJlY2VpdmVJbnZhbGlkTWVzc2FnZSk6CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9XZWJQcm9j
ZXNzQ29ubmVjdGlvbi5oOgorICAgICAgICAqIFNjcmlwdHMvTWFrZWZpbGU6CisgICAgICAgICog
U2NyaXB0cy9nZW5lcmF0ZS1tZXNzYWdlLXJlY2VpdmVyLnB5OgorICAgICAgICAobWFpbik6Cisg
ICAgICAgICogU2NyaXB0cy93ZWJraXQvTGVnYWN5TWVzc2FnZXMtZXhwZWN0ZWQuaDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9MZWdhY3lNZXNzYWdlc1JlcGxpZXMtZXhwZWN0
ZWQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9NZXNzYWdlTmFtZXMuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKElQQzo6ZGVzY3JpcHRpb24pOgorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0L01lc3NhZ2VOYW1lcy5oOiBBZGRlZC4KKyAgICAgICAgKElQQzo6cmVjZWl2ZXJOYW1l
KToKKyAgICAgICAgKFdURjo6aXNWYWxpZEVudW0pOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
L01lc3NhZ2VSZWNlaXZlci1leHBlY3RlZC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogU2NyaXB0
cy93ZWJraXQvTWVzc2FnZVJlY2VpdmVyU3VwZXJjbGFzcy1leHBlY3RlZC5jcHA6IFJlbW92ZWQu
CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvTWVzc2FnZXMtZXhwZWN0ZWQuaDogUmVtb3ZlZC4K
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9NZXNzYWdlc1JlcGxpZXMtZXhwZWN0ZWQuaDogUmVt
b3ZlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9NZXNzYWdlc1JlcGxpZXNTdXBlcmNsYXNz
UmVwbGllcy1leHBlY3RlZC5oOiBSZW1vdmVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L01l
c3NhZ2VzU3VwZXJjbGFzcy1leHBlY3RlZC5oOiBSZW1vdmVkLgorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0L21lc3NhZ2VzLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3QtbGVnYWN5
LW1lc3NhZ2VzLmluOiBSZW1vdmVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3QtbGVn
YWN5Lm1lc3NhZ2VzLmluOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0
L3Rlc3QtbGVnYWN5LW1lc3NhZ2VzLmluLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3Qt
bGVnYWN5TWVzc2FnZVJlY2VpdmVyLmNwcDogQWRkZWQuCisgICAgICAgIChNZXNzYWdlczo6V2Vi
UGFnZTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OnNlbmQpOgorICAgICAgICAoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlRlc3RNdWx0aXBsZUF0dHJpYnV0ZXM6OnNlbmQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjpkaWRSZWNlaXZlV2ViUGFnZU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlOjpkaWRSZWNlaXZlU3luY1dlYlBhZ2VNZXNzYWdlKToKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdC90ZXN0LWxlZ2FjeU1lc3NhZ2VzLmg6IEFkZGVkLgorICAgICAgICAoTWVzc2Fn
ZXM6OldlYlBhZ2U6Om1lc3NhZ2VSZWNlaXZlck5hbWUpOgorICAgICAgICAoTWVzc2FnZXM6Oldl
YlBhZ2U6OkxvYWRVUkw6Om5hbWUpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRV
Ukw6OkxvYWRVUkwpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRVUkw6OmFyZ3Vt
ZW50cyBjb25zdCk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFNvbWV0aGluZzo6
bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFNvbWV0aGluZzo6TG9hZFNv
bWV0aGluZyk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFNvbWV0aGluZzo6YXJn
dW1lbnRzIGNvbnN0KToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUb3VjaEV2ZW50Ojpu
YW1lKToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUb3VjaEV2ZW50OjpUb3VjaEV2ZW50
KToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUb3VjaEV2ZW50Ojphcmd1bWVudHMgY29u
c3QpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OkFkZEV2ZW50OjpuYW1lKToKKyAgICAg
ICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpBZGRFdmVudDo6QWRkRXZlbnQpOgorICAgICAgICAoTWVz
c2FnZXM6OldlYlBhZ2U6OkFkZEV2ZW50Ojphcmd1bWVudHMgY29uc3QpOgorICAgICAgICAoTWVz
c2FnZXM6OldlYlBhZ2U6OkxvYWRTb21ldGhpbmdFbHNlOjpuYW1lKToKKyAgICAgICAgKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpMb2FkU29tZXRoaW5nRWxzZTo6TG9hZFNvbWV0aGluZ0Vsc2UpOgorICAg
ICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRTb21ldGhpbmdFbHNlOjphcmd1bWVudHMgY29u
c3QpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJlY2VpdmVQb2xpY3lEZWNpc2lv
bjo6bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVjZWl2ZVBvbGljeURl
Y2lzaW9uOjpEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24pOgorICAgICAgICAoTWVzc2FnZXM6Oldl
YlBhZ2U6OkRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbjo6YXJndW1lbnRzIGNvbnN0KToKKyAgICAg
ICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpDbG9zZTo6bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6
V2ViUGFnZTo6Q2xvc2U6OmFyZ3VtZW50cyBjb25zdCk6CisgICAgICAgIChNZXNzYWdlczo6V2Vi
UGFnZTo6UHJlZmVyZW5jZXNEaWRDaGFuZ2U6Om5hbWUpOgorICAgICAgICAoTWVzc2FnZXM6Oldl
YlBhZ2U6OlByZWZlcmVuY2VzRGlkQ2hhbmdlOjpQcmVmZXJlbmNlc0RpZENoYW5nZSk6CisgICAg
ICAgIChNZXNzYWdlczo6V2ViUGFnZTo6UHJlZmVyZW5jZXNEaWRDaGFuZ2U6OmFyZ3VtZW50cyBj
b25zdCk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6U2VuZERvdWJsZUFuZEZsb2F0Ojpu
YW1lKToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZW5kRG91YmxlQW5kRmxvYXQ6OlNl
bmREb3VibGVBbmRGbG9hdCk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6U2VuZERvdWJs
ZUFuZEZsb2F0Ojphcmd1bWVudHMgY29uc3QpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6
OlNlbmRJbnRzOjpuYW1lKToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZW5kSW50czo6
U2VuZEludHMpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlNlbmRJbnRzOjphcmd1bWVu
dHMgY29uc3QpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OkNyZWF0ZVBsdWdpbjo6bmFt
ZSk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6Q3JlYXRlUGx1Z2luOjpDcmVhdGVQbHVn
aW4pOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OkNyZWF0ZVBsdWdpbjo6YXJndW1lbnRz
IGNvbnN0KToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpSdW5KYXZhU2NyaXB0QWxlcnQ6
Om5hbWUpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlJ1bkphdmFTY3JpcHRBbGVydDo6
UnVuSmF2YVNjcmlwdEFsZXJ0KToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpSdW5KYXZh
U2NyaXB0QWxlcnQ6OmFyZ3VtZW50cyBjb25zdCk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFn
ZTo6R2V0UGx1Z2luczo6bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6R2V0UGx1
Z2luczo6R2V0UGx1Z2lucyk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6R2V0UGx1Z2lu
czo6YXJndW1lbnRzIGNvbnN0KToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRQbHVn
aW5Qcm9jZXNzQ29ubmVjdGlvbjo6bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6
R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKToK
KyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6
YXJndW1lbnRzIGNvbnN0KToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0TXVsdGlw
bGVBdHRyaWJ1dGVzOjpuYW1lKToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0TXVs
dGlwbGVBdHRyaWJ1dGVzOjphcmd1bWVudHMgY29uc3QpOgorICAgICAgICAoTWVzc2FnZXM6Oldl
YlBhZ2U6OlRlc3RQYXJhbWV0ZXJBdHRyaWJ1dGVzOjpuYW1lKToKKyAgICAgICAgKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpUZXN0UGFyYW1ldGVyQXR0cmlidXRlczo6VGVzdFBhcmFtZXRlckF0dHJpYnV0
ZXMpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RQYXJhbWV0ZXJBdHRyaWJ1dGVz
Ojphcmd1bWVudHMgY29uc3QpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlRlbXBsYXRl
VGVzdDo6bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6VGVtcGxhdGVUZXN0OjpU
ZW1wbGF0ZVRlc3QpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlRlbXBsYXRlVGVzdDo6
YXJndW1lbnRzIGNvbnN0KToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRWaWRlb0xh
eWVySUQ6Om5hbWUpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFZpZGVvTGF5ZXJJ
RDo6U2V0VmlkZW9MYXllcklEKToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRWaWRl
b0xheWVySUQ6OmFyZ3VtZW50cyBjb25zdCk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6
RGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb246Om5hbWUpOgorICAgICAgICAoTWVzc2FnZXM6
OldlYlBhZ2U6OkRpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uOjpEaWRDcmVhdGVXZWJQcm9j
ZXNzQ29ubmVjdGlvbik6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6RGlkQ3JlYXRlV2Vi
UHJvY2Vzc0Nvbm5lY3Rpb246OmFyZ3VtZW50cyBjb25zdCk6CisgICAgICAgIChNZXNzYWdlczo6
V2ViUGFnZTo6SW50ZXJwcmV0S2V5RXZlbnQ6Om5hbWUpOgorICAgICAgICAoTWVzc2FnZXM6Oldl
YlBhZ2U6OkludGVycHJldEtleUV2ZW50OjpJbnRlcnByZXRLZXlFdmVudCk6CisgICAgICAgIChN
ZXNzYWdlczo6V2ViUGFnZTo6SW50ZXJwcmV0S2V5RXZlbnQ6OmFyZ3VtZW50cyBjb25zdCk6Cisg
ICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6RGVwcmVjYXRlZE9wZXJhdGlvbjo6bmFtZSk6Cisg
ICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6RGVwcmVjYXRlZE9wZXJhdGlvbjo6RGVwcmVjYXRl
ZE9wZXJhdGlvbik6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6RGVwcmVjYXRlZE9wZXJh
dGlvbjo6YXJndW1lbnRzIGNvbnN0KToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpFeHBl
cmltZW50YWxPcGVyYXRpb246Om5hbWUpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OkV4
cGVyaW1lbnRhbE9wZXJhdGlvbjo6RXhwZXJpbWVudGFsT3BlcmF0aW9uKToKKyAgICAgICAgKE1l
c3NhZ2VzOjpXZWJQYWdlOjpFeHBlcmltZW50YWxPcGVyYXRpb246OmFyZ3VtZW50cyBjb25zdCk6
CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvdGVzdC1sZWdhY3lNZXNzYWdlc1JlcGxpZXMuaDog
QWRkZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXQvdGVzdC1tZXNzYWdlcy5pbjogUmVtb3Zl
ZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0LXN1cGVyY2xhc3MtbWVzc2FnZXMuaW46
IFJlbW92ZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXQvdGVzdC1zdXBlcmNsYXNzLm1lc3Nh
Z2VzLmluOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3Qtc3Vw
ZXJjbGFzcy1tZXNzYWdlcy5pbi4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0LXN1cGVy
Y2xhc3NNZXNzYWdlUmVjZWl2ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpUZXN0QXN5bmNNZXNzYWdlOjpjYWxsUmVwbHkpOgorICAgICAgICAoTWVzc2FnZXM6Oldl
YlBhZ2U6OlRlc3RBc3luY01lc3NhZ2U6OmNhbmNlbFJlcGx5KToKKyAgICAgICAgKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpUZXN0QXN5bmNNZXNzYWdlOjpzZW5kKToKKyAgICAgICAgKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpUZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJndW1lbnRzOjpjYWxsUmVwbHkpOgorICAg
ICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RBc3luY01lc3NhZ2VXaXRoTm9Bcmd1bWVudHM6
OmNhbmNlbFJlcGx5KToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0QXN5bmNNZXNz
YWdlV2l0aE5vQXJndW1lbnRzOjpzZW5kKToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpU
ZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1lbnRzOjpjYWxsUmVwbHkpOgorICAgICAg
ICAoTWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RBc3luY01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVu
dHM6OmNhbmNlbFJlcGx5KToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0QXN5bmNN
ZXNzYWdlV2l0aE11bHRpcGxlQXJndW1lbnRzOjpzZW5kKToKKyAgICAgICAgKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpUZXN0U3luY01lc3NhZ2U6OnNlbmQpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBh
Z2U6OlRlc3RTeW5jaHJvbm91c01lc3NhZ2U6OnNlbmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRpZFJl
Y2VpdmVTeW5jTWVzc2FnZSk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvdGVzdC1zdXBlcmNs
YXNzTWVzc2FnZXMuaDogQWRkZWQuCisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6bWVzc2Fn
ZVJlY2VpdmVyTmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFVSTDo6bmFt
ZSk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFVSTDo6TG9hZFVSTCk6CisgICAg
ICAgIChNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFVSTDo6YXJndW1lbnRzIGNvbnN0KToKKyAgICAg
ICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0QXN5bmNNZXNzYWdlOjpuYW1lKToKKyAgICAgICAg
KE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0QXN5bmNNZXNzYWdlOjphc3luY01lc3NhZ2VSZXBseU5h
bWUpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RBc3luY01lc3NhZ2U6OlRlc3RB
c3luY01lc3NhZ2UpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RBc3luY01lc3Nh
Z2U6OmFyZ3VtZW50cyBjb25zdCk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6VGVzdEFz
eW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50czo6bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6V2Vi
UGFnZTo6VGVzdEFzeW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50czo6YXN5bmNNZXNzYWdlUmVwbHlO
YW1lKToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0QXN5bmNNZXNzYWdlV2l0aE5v
QXJndW1lbnRzOjphcmd1bWVudHMgY29uc3QpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6
OlRlc3RBc3luY01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHM6Om5hbWUpOgorICAgICAgICAo
TWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RBc3luY01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHM6
OmFzeW5jTWVzc2FnZVJlcGx5TmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6VGVz
dEFzeW5jTWVzc2FnZVdpdGhNdWx0aXBsZUFyZ3VtZW50czo6YXJndW1lbnRzIGNvbnN0KToKKyAg
ICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0U3luY01lc3NhZ2U6Om5hbWUpOgorICAgICAg
ICAoTWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RTeW5jTWVzc2FnZTo6VGVzdFN5bmNNZXNzYWdlKToK
KyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0U3luY01lc3NhZ2U6OmFyZ3VtZW50cyBj
b25zdCk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6VGVzdFN5bmNocm9ub3VzTWVzc2Fn
ZTo6bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6VGVzdFN5bmNocm9ub3VzTWVz
c2FnZTo6VGVzdFN5bmNocm9ub3VzTWVzc2FnZSk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFn
ZTo6VGVzdFN5bmNocm9ub3VzTWVzc2FnZTo6YXJndW1lbnRzIGNvbnN0KToKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdC90ZXN0LXN1cGVyY2xhc3NNZXNzYWdlc1JlcGxpZXMuaDogQWRkZWQuCisg
ICAgICAgICogU2NyaXB0cy93ZWJraXQvdGVzdC5tZXNzYWdlcy5pbjogQWRkZWQuCisgICAgICAg
ICogU2NyaXB0cy93ZWJraXQvdGVzdE1lc3NhZ2VSZWNlaXZlci5jcHA6IEFkZGVkLgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0L3Rlc3RNZXNzYWdlcy5oOiBBZGRlZC4KKyAgICAgICAgKE1lc3Nh
Z2VzOjpOb25lOjptZXNzYWdlUmVjZWl2ZXJOYW1lKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dC90ZXN0TWVzc2FnZXNSZXBsaWVzLmg6IEFkZGVkLgorICAgICAgICAqIFNoYXJlZC9BcHBsZVBh
eS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5oOgorICAgICAgICAqIFNoYXJlZC9BcHBsZVBh
eS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLm1tOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJv
eHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6fldlYlBh
eW1lbnRDb29yZGluYXRvclByb3h5KToKKyAgICAgICAgKiBTaGFyZWQvQXV4aWxpYXJ5UHJvY2Vz
cy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkF1eGlsaWFyeVByb2Nlc3M6OmFkZE1lc3NhZ2VSZWNl
aXZlcik6CisgICAgICAgIChXZWJLaXQ6OkF1eGlsaWFyeVByb2Nlc3M6OnJlbW92ZU1lc3NhZ2VS
ZWNlaXZlcik6CisgICAgICAgIChXZWJLaXQ6OkF1eGlsaWFyeVByb2Nlc3M6OmRpZFJlY2VpdmVJ
bnZhbGlkTWVzc2FnZSk6CisgICAgICAgICogU2hhcmVkL0F1eGlsaWFyeVByb2Nlc3MuaDoKKyAg
ICAgICAgKFdlYktpdDo6QXV4aWxpYXJ5UHJvY2Vzczo6YWRkTWVzc2FnZVJlY2VpdmVyKToKKyAg
ICAgICAgKFdlYktpdDo6QXV4aWxpYXJ5UHJvY2Vzczo6cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKToK
KyAgICAgICAgKiBTaGFyZWQvQ29jb2EvQXV4aWxpYXJ5UHJvY2Vzc0NvY29hLm1tOgorICAgICAg
ICAoV2ViS2l0OjpBdXhpbGlhcnlQcm9jZXNzOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UpOgor
ICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0F1eGlsaWFy
eVByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkF1eGlsaWFyeVByb2Nlc3NQcm94
eTo6YWRkTWVzc2FnZVJlY2VpdmVyKToKKyAgICAgICAgKFdlYktpdDo6QXV4aWxpYXJ5UHJvY2Vz
c1Byb3h5OjpyZW1vdmVNZXNzYWdlUmVjZWl2ZXIpOgorICAgICAgICAoV2ViS2l0OjpBdXhpbGlh
cnlQcm9jZXNzUHJveHk6OmxvZ0ludmFsaWRNZXNzYWdlKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QXV4aWxpYXJ5UHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OkF1eGlsaWFyeVByb2Nl
c3NQcm94eTo6YWRkTWVzc2FnZVJlY2VpdmVyKToKKyAgICAgICAgKFdlYktpdDo6QXV4aWxpYXJ5
UHJvY2Vzc1Byb3h5OjpyZW1vdmVNZXNzYWdlUmVjZWl2ZXIpOgorICAgICAgICAoV2ViS2l0OjpB
dXhpbGlhcnlQcm9jZXNzUHJveHk6OnNlbmQpOgorICAgICAgICAoV2ViS2l0OjpBdXhpbGlhcnlQ
cm9jZXNzUHJveHk6OnNlbmRXaXRoQXN5bmNSZXBseSk6CisgICAgICAgICogVUlQcm9jZXNzL0Nv
Y29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
Q29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6cGF5bWVudENvb3JkaW5hdG9yQWRkTWVzc2FnZVJlY2VpdmVyKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpwYXltZW50Q29vcmRpbmF0b3JSZW1vdmVNZXNzYWdl
UmVjZWl2ZXIpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1By
b3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6R1BVUHJvY2Vzc1Byb3h5OjpkaWRSZWNlaXZlSW52
YWxpZE1lc3NhZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5Lmg6
CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVJbnZhbGlkTWVz
c2FnZSk6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NQcm94eTo6ZGlkUmVjZWl2ZUludmFsaWRNZXNz
YWdlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0Ojpt
ZXNzYWdlTmFtZXNUb0lnbm9yZVdoaWxlU3VzcGVuZGVkKToKKyAgICAgICAgKFdlYktpdDo6U3Vz
cGVuZGVkUGFnZVByb3h5OjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpkaWRSZWNlaXZlSW52YWxpZE1lc3Nh
Z2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6YWRkTWVzc2FnZVJlY2VpdmVy
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnJlbW92ZU1lc3NhZ2VSZWNlaXZl
cik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQ
cm94eTo6c2hvdWxkU2VuZFBlbmRpbmdNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzc1Byb3h5OjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNz
Q29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OkdQVVByb2Nlc3NDb25uZWN0aW9uOjpk
aWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL0dQVVBy
b2Nlc3NDb25uZWN0aW9uLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5z
cGVjdG9yLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUku
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNl
aXZlSW52YWxpZE1lc3NhZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
UHJvY2Vzc0Nvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzQ29u
bmVjdGlvbjo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6dXBkYXRlUmVuZGVy
aW5nKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZSk6CisKIDIwMjAtMDQtMjcgIEJyZW50
IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgRm9sbG93LXVwIGNoYW5n
ZSBhZnRlciByMjYwNzk4LgpJbmRleDogU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRw
dXQueGNmaWxlbGlzdAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2Vz
LW91dHB1dC54Y2ZpbGVsaXN0CShyZXZpc2lvbiAyNjA3NjQpCisrKyBTb3VyY2UvV2ViS2l0L0Rl
cml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CSh3b3JraW5nIGNvcHkpCkBAIC02Myw2ICs2
Myw4IEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWIKICQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL01lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZU1lc3NhZ2VSZWNlaXZlci5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJLaXQyL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZU1lc3NhZ2VzLmgKICQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL01lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZU1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViS2l0Mi9NZXNzYWdlTmFtZXMuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViS2l0Mi9NZXNzYWdlTmFtZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYktpdDIvTlBPYmplY3RNZXNzYWdlUmVjZWl2ZXJNZXNzYWdlUmVjZWl2
ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9OUE9i
amVjdE1lc3NhZ2VSZWNlaXZlck1lc3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJLaXQyL05QT2JqZWN0TWVzc2FnZVJlY2VpdmVyTWVzc2FnZXNSZXBsaWVz
LmgKSW5kZXg6IFNvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHJldmlzaW9uIDI2MDc2NCkKKysr
IFNvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQkod29ya2luZyBjb3B5KQpAQCAtMTEy
LDEzNCArMTEyLDEzNSBAQCBlbHNlCiBlbmRpZgogCiBNRVNTQUdFX1JFQ0VJVkVSUyA9IFwKLQlB
dWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvclByb3h5IFwKLSAgICBBdXRoZW50aWNhdGlvbk1h
bmFnZXIgXAotICAgIEF1eGlsaWFyeVByb2Nlc3MgXAotICAgIENhY2hlU3RvcmFnZUVuZ2luZUNv
bm5lY3Rpb24gXAotICAgIERvd25sb2FkUHJveHkgXAotICAgIERyYXdpbmdBcmVhIFwKLSAgICBE
cmF3aW5nQXJlYVByb3h5IFwKLSAgICBFZGl0YWJsZUltYWdlQ29udHJvbGxlciBcCi0gICAgRXZl
bnREaXNwYXRjaGVyIFwKLSAgICBHUFVQcm9jZXNzIFwKLSAgICBHUFVQcm9jZXNzUHJveHkgXAot
ICAgIEdQVVByb2Nlc3NDb25uZWN0aW9uIFwKLSAgICBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
IFwKLSAgICBMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIgXAotICAgIExlZ2FjeUN1c3RvbVBy
b3RvY29sTWFuYWdlclByb3h5IFwKLSAgICBMaWJXZWJSVENDb2RlY3MgXAotICAgIExpYldlYlJU
Q0NvZGVjc1Byb3h5IFwKLSAgICBNZWRpYVBsYXllclByaXZhdGVSZW1vdGUgXAotICAgIE5QT2Jq
ZWN0TWVzc2FnZVJlY2VpdmVyIFwKLSAgICBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBc
Ci0gICAgTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIgXAotICAgIE5ldHdvcmtNRE5TUmVn
aXN0ZXJcCi0gICAgTmV0d29ya1Byb2Nlc3MgXAotICAgIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
biBcCi0gICAgTmV0d29ya1Byb2Nlc3NQcm94eSBcCi0gICAgTmV0d29ya1JUQ01vbml0b3IgXAot
ICAgIE5ldHdvcmtSVENQcm92aWRlciBcCi0gICAgTmV0d29ya1JUQ1NvY2tldCBcCi0gICAgTmV0
d29ya1Jlc291cmNlTG9hZGVyIFwKLSAgICBOZXR3b3JrU29ja2V0Q2hhbm5lbCBcCi0gICAgTmV0
d29ya1NvY2tldFN0cmVhbSBcCi0gICAgUGxheWJhY2tTZXNzaW9uTWFuYWdlciBcCi0gICAgUGxh
eWJhY2tTZXNzaW9uTWFuYWdlclByb3h5IFwKLSAgICBQbHVnaW5Db250cm9sbGVyUHJveHkgXAot
ICAgIFBsdWdpblByb2Nlc3MgXAotICAgIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uIFwKLSAgICBQ
bHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIgXAotICAgIFBsdWdpblByb2Nlc3NQcm94eSBc
Ci0gICAgUGx1Z2luUHJveHkgXAotICAgIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyIFwK
LSAgICBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkgXAotICAgIFJlbW90ZUF1ZGlvU2Vzc2lv
biBcCi0gICAgUmVtb3RlQXVkaW9TZXNzaW9uUHJveHkgXAotICAgIFJlbW90ZUF1ZGlvTWVkaWFT
dHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlciBcCi0gICAgUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRy
YWNrUmVuZGVyZXIgXAotICAgIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkgXAotICAg
IFJlbW90ZUNETVByb3h5IFwKLSAgICBSZW1vdGVDRE1GYWN0b3J5UHJveHkgXAotICAgIFJlbW90
ZUNETUluc3RhbmNlUHJveHkgXAotICAgIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbiBcCi0gICAg
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkgXAotICAgIFJlbW90ZUxlZ2FjeUNETVByb3h5
IFwKLSAgICBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkgXAotICAgIFJlbW90ZUxlZ2FjeUNE
TVNlc3Npb24gXAotICAgIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eSBcCi0gICAgUmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyIFwKLSAgICBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSBc
Ci0gICAgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eSBcCi0gICAgUmVtb3RlTWVkaWFSZWNvcmRlciBc
Ci0gICAgUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXIgXAotICAgIFJlbW90ZU1lZGlhUmVzb3Vy
Y2VNYW5hZ2VyIFwKLSAgICBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXIgXAotICAgIFJlbW90ZU1l
ZGlhU2Vzc2lvbkhlbHBlclByb3h5IFwKLSAgICBSZW1vdGVPYmplY3RSZWdpc3RyeSBcCi0gICAg
UmVtb3RlUmVuZGVyaW5nQmFja2VuZCBcCi0gICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
IFwKLSAgICBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgXAotICAgIFJlbW90ZVNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIgXAotICAgIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5h
dG9yIFwKLSAgICBSZW1vdGVXZWJJbnNwZWN0b3JQcm94eSBcCi0gICAgUmVtb3RlV2ViSW5zcGVj
dG9yVUkgXAotICAgIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciBcCi0gICAgU2VjSXRlbVNoaW1Q
cm94eSBcCi0gICAgU2VydmljZVdvcmtlckZldGNoVGFzayBcCi0gICAgU21hcnRNYWduaWZpY2F0
aW9uQ29udHJvbGxlciBcCi0gICAgU3RvcmFnZUFyZWFNYXAgXAotICAgIFN0b3JhZ2VNYW5hZ2Vy
U2V0IFwKLSAgICBUZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHkgXAotICAgIFVzZXJNZWRpYUNh
cHR1cmVNYW5hZ2VyIFwKLSAgICBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5IFwKLSAgICBW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyIFwKLSAgICBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkg
XAotICAgIFZpZXdHZXN0dXJlQ29udHJvbGxlciBcCi0gICAgVmlld0dlc3R1cmVHZW9tZXRyeUNv
bGxlY3RvciBcCi0gICAgVmlld1VwZGF0ZURpc3BhdGNoZXIgXAotICAgIFZpc2l0ZWRMaW5rU3Rv
cmUgXAotICAgIFZpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVyIFwKLSAgICBXZWJBdXRoZW50aWNh
dG9yQ29vcmRpbmF0b3JQcm94eSBcCi0gICAgV2ViQXV0b21hdGlvblNlc3Npb24gXAotICAgIFdl
YkF1dG9tYXRpb25TZXNzaW9uUHJveHkgXAotICAgIFdlYkNvbm5lY3Rpb24gXAotICAgIFdlYkNv
b2tpZU1hbmFnZXIgXAotICAgIFdlYkNvb2tpZU1hbmFnZXJQcm94eSBcCi0gICAgV2ViRnVsbFNj
cmVlbk1hbmFnZXIgXAotICAgIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkgXAotICAgIFdlYkdl
b2xvY2F0aW9uTWFuYWdlciBcCi0gICAgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkgXAotICAg
IFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlciBcCi0gICAgV2ViSURCU2VydmVyIFwKLSAgICBXZWJJ
bnNwZWN0b3IgXAotICAgIFdlYkluc3BlY3RvckludGVycnVwdERpc3BhdGNoZXIgXAotICAgIFdl
Ykluc3BlY3RvclByb3h5IFwKLSAgICBXZWJJbnNwZWN0b3JVSSBcCi0gICAgV2ViTUROU1JlZ2lz
dGVyXAotICAgIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXIgXAotICAgIFdlYlBhZ2UgXAotICAgIFdl
YlBhZ2VQcm94eSBcCi0gICAgV2ViUGFzdGVib2FyZFByb3h5IFwKLSAgICBXZWJQYXltZW50Q29v
cmRpbmF0b3IgXAotICAgIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5IFwKLSAgICBXZWJQcm9j
ZXNzIFwKLSAgICBXZWJQcm9jZXNzQ29ubmVjdGlvbiBcCi0gICAgV2ViUHJvY2Vzc1Bvb2wgXAot
ICAgIFdlYlByb2Nlc3NQcm94eSBcCi0gICAgV2ViUlRDTW9uaXRvciBcCi0gICAgV2ViUlRDUmVz
b2x2ZXIgXAotICAgIFdlYlJUQ1NvY2tldCBcCi0gICAgV2ViUmVzb3VyY2VMb2FkZXIgXAotICAg
IFdlYlNXQ2xpZW50Q29ubmVjdGlvbiBcCi0gICAgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b24gXAotICAgIFdlYlNXU2VydmVyQ29ubmVjdGlvbiBcCi0gICAgV2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uIFwKLSAgICBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyIFwK
LSAgICBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyUHJveHkgXAotICAgIFdlYlNv
Y2tldENoYW5uZWwgXAotICAgIFdlYlNvY2tldFN0cmVhbSBcCi0gICAgV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyIFwKLSAgICBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSBcCisJTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgXAorCU5ldHdvcmtQcm9jZXNz
L0luZGV4ZWREQi9XZWJJREJTZXJ2ZXIgXAorCU5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb250ZW50
UnVsZUxpc3RNYW5hZ2VyIFwKKwlOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5h
Z2VyU2V0IFwKKwlOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0
aW9uIFwKKwlOZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9j
b2xNYW5hZ2VyIFwKKwlOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5lbCBcCisJTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24gXAorCU5ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzayBcCisJTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24gXAor
CU5ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0gXAorCU5ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzIFwKKwlOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIgXAor
CU5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrTUROU1JlZ2lzdGVyIFwKKwlOZXR3b3JrUHJv
Y2Vzcy93ZWJydGMvTmV0d29ya1JUQ1NvY2tldCBcCisJTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05l
dHdvcmtSVENQcm92aWRlciBcCisJTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENNb25p
dG9yIFwKKwlOZXR3b3JrUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIgXAorCVNoYXJl
ZC9QbHVnaW5zL05QT2JqZWN0TWVzc2FnZVJlY2VpdmVyIFwKKwlTaGFyZWQvQXV4aWxpYXJ5UHJv
Y2VzcyBcCisJU2hhcmVkL0FQSS9Db2NvYS9SZW1vdGVPYmplY3RSZWdpc3RyeSBcCisJU2hhcmVk
L0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5IFwKKwlTaGFyZWQvQXV0aGVudGlj
YXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyIFwKKwlTaGFyZWQvV2ViQ29ubmVjdGlvbiBcCisJ
VUlQcm9jZXNzL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkgXAorCVVJUHJvY2Vzcy9SZW1vdGVM
YXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eSBcCisJVUlQcm9jZXNzL0dQ
VS9HUFVQcm9jZXNzUHJveHkgXAorCVVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eSBcCisJVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94
eSBcCisJVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5
IFwKKwlVSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclByb3h5IFwKKwlVSVByb2Nlc3Mv
SW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclByb3h5IFwKKwlVSVByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5Qcm9jZXNzUHJveHkgXAorCVVJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5IFwKKwlVSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5IFwKKwlVSVByb2Nlc3MvTmV0d29yay9D
dXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkgXAorCVVJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkgXAorCVVJUHJvY2Vzcy9WaXNpdGVkTGlua1N0b3JlIFwKKwlVSVBy
b2Nlc3MvaW9zL1dlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94eSBcCisJVUlQ
cm9jZXNzL2lvcy9FZGl0YWJsZUltYWdlQ29udHJvbGxlciBcCisJVUlQcm9jZXNzL2lvcy9TbWFy
dE1hZ25pZmljYXRpb25Db250cm9sbGVyIFwKKwlVSVByb2Nlc3MvbWFjL1NlY0l0ZW1TaGltUHJv
eHkgXAorCVVJUHJvY2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eSBcCisJVUlQcm9jZXNz
L0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eSBcCisJVUlQcm9jZXNzL0NvY29hL1Zp
ZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eSBcCisJVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNh
cHR1cmVNYW5hZ2VyUHJveHkgXAorCVVJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkgXAor
CVVJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIgXAorCVVJUHJvY2Vzcy9XZWJQcm9jZXNz
UHJveHkgXAorCVVJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uIFwKKwlV
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wgXAorCVVJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQ
cm94eSBcCisJVUlQcm9jZXNzL01lZGlhL0F1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yUHJv
eHkgXAorCVdlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJDb25uZWN0aW9uVG9T
ZXJ2ZXIgXAorCVdlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uIFwKKwlXZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kIFwKKwlXZWJQcm9jZXNzL0dQ
VS93ZWJydGMvTGliV2ViUlRDQ29kZWNzIFwKKwlXZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyIFwKKwlXZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclBy
aXZhdGVSZW1vdGUgXAorCVdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vz
c2lvbiBcCisJV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbiBcCisJ
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlciBcCisJV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyIFwKKwlXZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkgXAorCVdlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvbiBcCisJV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3Jh
Z2VBcmVhTWFwIFwKKwlXZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJv
bGxlciBcCisJV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9ySW50ZXJydXB0RGlzcGF0
Y2hlciBcCisJV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUkgXAorCVdlYlByb2Nl
c3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvciBcCisJV2ViUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3Rl
V2ViSW5zcGVjdG9yVUkgXAorCVdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVj
dGlvbk1hbmFnZXIgXAorCVdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eSBcCisJV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uIFwKKwlXZWJQcm9jZXNzL05ldHdv
cmsvV2ViU29ja2V0Q2hhbm5lbCBcCisJV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbiBcCisJV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0cmVhbSBcCisJV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyIFwKKwlXZWJQcm9jZXNzL05ldHdvcmsv
d2VicnRjL1dlYlJUQ1NvY2tldCBcCisJV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJSVENN
b25pdG9yIFwKKwlXZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1dlYk1ETlNSZWdpc3RlciBcCisJ
V2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJSVENSZXNvbHZlciBcCisJV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyIFwKKwlXZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24gXAorCVdlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24gXAorCVdlYlByb2Nlc3MvV2ViUHJvY2Vz
cyBcCisJV2ViUHJvY2Vzcy9jb2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyIFwKKwlXZWJQcm9j
ZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyIFwKKwlXZWJQcm9jZXNzL2NvY29hL1Zp
ZGVvRnVsbHNjcmVlbk1hbmFnZXIgXAorCVdlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9j
YXRpb25NYW5hZ2VyIFwKKwlXZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Np
b25Qcm94eSBcCisJV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyIFwK
KwlXZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvciBcCisJV2ViUHJvY2Vz
cy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIgXAorCVdlYlByb2Nlc3MvV2Vi
UGFnZS9FdmVudERpc3BhdGNoZXIgXAorCVdlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRy
ZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3IgXAorCVdlYlByb2Nlc3MvV2ViUGFnZS9WaWV3
R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yIFwKKwlXZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0Fy
ZWEgXAorCVdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlIFwKKwlXZWJQcm9jZXNzL1dlYlBhZ2Uv
VmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXIgXAorCVdlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9U
ZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHkgXAorCVdlYlByb2Nlc3MvV2ViUGFnZS9WaWV3VXBk
YXRlRGlzcGF0Y2hlciBcCisJUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbiBcCisJ
UGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkgXAorCVBsdWdpblByb2Nlc3MvUGx1
Z2luUHJvY2VzcyBcCisJR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzIFwKKwlH
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSBcCisJR1BVUHJv
Y2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkgXAorCUdQVVByb2Nlc3Mvd2VicnRjL1Jl
bW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIgXAorCUdQVVByb2Nlc3Mvd2VicnRj
L1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlciBcCisJR1BVUHJvY2Vz
cy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXIgXAorCUdQVVByb2Nlc3Mvd2VicnRj
L1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciBcCisJR1BVUHJvY2Vzcy93ZWJydGMvUmVt
b3RlTWVkaWFSZWNvcmRlciBcCisJR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0
cmVhbVRyYWNrUmVuZGVyZXIgXAorCUdQVVByb2Nlc3MvR1BVUHJvY2VzcyBcCisJR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkgXAorCUdQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlQXVkaW9TZXNzaW9uUHJveHlNYW5hZ2VyIFwKKwlHUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUxlZ2FjeUNETUZhY3RvcnlQcm94eSBcCisJR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1Nl
c3Npb25Qcm94eSBcCisJR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Q
cm94eSBcCisJR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eSBcCisJR1BVUHJvY2Vzcy9t
ZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHkgXAorCUdQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eSBcCisJR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1G
YWN0b3J5UHJveHkgXAorCUdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFn
ZXIgXAorCUdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eSBcCisJR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eSBcCisJR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSBcCisJR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRp
b0Rlc3RpbmF0aW9uTWFuYWdlciBcCiAjCiAKIFNDUklQVFMgPSBcCkBAIC0yNTUsMTUgKzI1Niwx
NCBAQCBIRUFERVJfRkxBR1MgPSAkKHNoZWxsIGVjaG8gJChCVUlMVF9QUk9ECiAKIC5QSE9OWSA6
IGFsbAogCi1hbGwgOiBcCi0gICAgJChNRVNTQUdFX1JFQ0VJVkVSUzolPSVNZXNzYWdlUmVjZWl2
ZXIuY3BwKSBcCi0gICAgJChNRVNTQUdFX1JFQ0VJVkVSUzolPSVNZXNzYWdlcy5oKSBcCi0gICAg
JChNRVNTQUdFX1JFQ0VJVkVSUzolPSVNZXNzYWdlc1JlcGxpZXMuaCkgXAorYWxsIDogTWVzc2Fn
ZU5hbWVzLmggTWVzc2FnZU5hbWVzLmNwcCBcCisgICAgJChhZGRzdWZmaXggTWVzc2FnZVJlY2Vp
dmVyLmNwcCwkKG5vdGRpciAkKE1FU1NBR0VfUkVDRUlWRVJTKSkpIFwKKyAgICAkKGFkZHN1ZmZp
eCBNZXNzYWdlcy5oLCQobm90ZGlyICQoTUVTU0FHRV9SRUNFSVZFUlMpKSkgXAorICAgICQoYWRk
c3VmZml4IE1lc3NhZ2VzUmVwbGllcy5oLCQobm90ZGlyICQoTUVTU0FHRV9SRUNFSVZFUlMpKSkg
XAogIwogCi0lTWVzc2FnZVJlY2VpdmVyLmNwcCAlTWVzc2FnZXMuaCAlTWVzc2FnZXNSZXBsaWVz
LmggOiAlLm1lc3NhZ2VzLmluICQoU0NSSVBUUykKLQlAZWNobyBHZW5lcmF0aW5nIG1lc3NhZ2Ug
cmVjZWl2ZXIgZm9yICQqLi4uCi0JQHB5dGhvbiAkKFdlYktpdDIpL1NjcmlwdHMvZ2VuZXJhdGUt
bWVzc2FnZS1yZWNlaXZlci5weSAkPCAtLWltcGxlbWVudGF0aW9uICQqTWVzc2FnZVJlY2VpdmVy
LmNwcCAtLWhlYWRlciAkKk1lc3NhZ2VzLmggLS1yZXBseS1oZWFkZXIgJCpNZXNzYWdlc1JlcGxp
ZXMuaAorJChhZGRzdWZmaXggTWVzc2FnZVJlY2VpdmVyLmNwcCwkKG5vdGRpciAkKE1FU1NBR0Vf
UkVDRUlWRVJTKSkpICQoYWRkc3VmaXggTWVzc2FnZXMuaCwkKG5vdGRpciAkKE1FU1NBR0VfUkVD
RUlWRVJTKSkpICQoYWRkc3VmZml4IE1lc3NhZ2VzUmVwbGllcy5oLCQobm90ZGlyICQoTUVTU0FH
RV9SRUNFSVZFUlMpKSkgTWVzc2FnZU5hbWVzLmggTWVzc2FnZU5hbWVzLmNwcDogJChhZGRzdWZm
aXggLm1lc3NhZ2VzLmluLCQoTUVTU0FHRV9SRUNFSVZFUlMpKSAkKFNDUklQVFMpCisJQHB5dGhv
biAkKFdlYktpdDIpL1NjcmlwdHMvZ2VuZXJhdGUtbWVzc2FnZS1yZWNlaXZlci5weSAkKFdlYktp
dDIpICQoTUVTU0FHRV9SRUNFSVZFUlMpCiAKIFRFWFRfUFJFUFJPQ0VTU09SX0ZMQUdTPS1FIC1Q
IC13CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQJKHJldmlzaW9uIDI2MDc2NCkKKysrIFNv
dXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNjU3LDYgKzY1
Nyw3IEBAIEdQVVByb2Nlc3NQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKIEdQVVByb2Nlc3NNZXNz
YWdlUmVjZWl2ZXIuY3BwCiBMaWJXZWJSVENDb2RlY3NQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAK
IExpYldlYlJUQ0NvZGVjc01lc3NhZ2VSZWNlaXZlci5jcHAKK01lc3NhZ2VOYW1lcy5jcHAKIFJl
bW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcAogUmVtb3RlQXVk
aW9EZXN0aW5hdGlvblByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAogUmVtb3RlQXVkaW9TZXNzaW9u
TWVzc2FnZVJlY2VpdmVyLmNwcApJbmRleDogU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAkocmV2aXNpb24gMjYwNzY0KQor
KysgU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMTQsOCArMTE0LDggQEAgcHVibGljOgogCiBwcml2YXRlOgog
ICAgIExvZ2dlciYgbG9nZ2VyKCkgZmluYWwgeyByZXR1cm4gbV9wcm9jZXNzLmxvZ2dlcigpOyB9
Ci0gICAgdm9pZCBhZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2Fn
ZVJlY2VpdmVyTmFtZSwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImIHJlY2VpdmVyKSBmaW5hbCB7IH0K
LSAgICB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNz
YWdlUmVjZWl2ZXJOYW1lKSBmaW5hbCB7IH0KKyAgICB2b2lkIGFkZE1lc3NhZ2VSZWNlaXZlcihJ
UEM6OlJlY2VpdmVyTmFtZSwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImKSBmaW5hbCB7IH0KKyAgICB2
b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlJlY2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2
ZXJOYW1lKSBmaW5hbCB7IH0KICAgICBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24oKSBmaW5h
bCB7IHJldHVybiBtX3Byb2Nlc3MuY29ubmVjdGlvbigpOyB9CiAgICAgYm9vbCB3aWxsU3RhcnRD
YXB0dXJlKENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGUgdHlwZSkgY29uc3QgZmluYWwKICAgICB7
CkBAIC0xODUsOSArMTg1LDkgQEAgTG9nZ2VyJiBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjps
b2dnZQogICAgIHJldHVybiAqbV9sb2dnZXI7CiB9CiAKLXZvaWQgR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVj
dGlvbiwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpTdHJp
bmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUpCit2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQ
Qzo6TWVzc2FnZU5hbWUgbWVzc2FnZU5hbWUpCiB7Ci0gICAgV1RGTG9nQWx3YXlzKCJSZWNlaXZl
ZCBhbiBpbnZhbGlkIG1lc3NhZ2UgXCIlcy4lc1wiIGZyb20gdGhlIHdlYiBwcm9jZXNzLlxuIiwg
bWVzc2FnZVJlY2VpdmVyTmFtZS50b1N0cmluZygpLmRhdGEoKSwgbWVzc2FnZU5hbWUudG9TdHJp
bmcoKS5kYXRhKCkpOworICAgIFdURkxvZ0Fsd2F5cygiUmVjZWl2ZWQgYW4gaW52YWxpZCBtZXNz
YWdlIFwiJXNcIiBmcm9tIHRoZSB3ZWIgcHJvY2Vzcy5cbiIsIGRlc2NyaXB0aW9uKG1lc3NhZ2VO
YW1lKSk7CiAgICAgQ1JBU0goKTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCShyZXZpc2lvbiAyNjA3NjQp
CisrKyBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xNDQsNyArMTQ0LDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIElQ
Qzo6Q29ubmVjdGlvbjo6Q2xpZW50CiAgICAgdm9pZCBkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24m
KSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6OlN0cmlu
Z1JlZmVyZW5jZSBtZXNzYWdlTmFtZSkgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlSW52YWxp
ZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlTmFtZSkgZmluYWw7CiAgICAg
dm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBm
aW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJ
UEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIGZpbmFsOwogCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAkocmV2aXNpb24gMjYwNzY0KQorKysgU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI2NCw3ICsyNjQsNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpkaWRSCiAgICAgICAgIHJldHVybiBwYXltZW50Q29vcmRpbmF0b3Io
KS5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKICNlbmRpZgogCi0gICAg
V1RGTG9nQWx3YXlzKCJVbmhhbmRsZWQgbmV0d29yayBwcm9jZXNzIG1lc3NhZ2UgJyVzOiVzJyIs
IGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpLnRvU3RyaW5nKCkuZGF0YSgpLCBkZWNvZGVy
Lm1lc3NhZ2VOYW1lKCkudG9TdHJpbmcoKS5kYXRhKCkpOworICAgIFdURkxvZ0Fsd2F5cygiVW5o
YW5kbGVkIG5ldHdvcmsgcHJvY2VzcyBtZXNzYWdlICclcyciLCBkZXNjcmlwdGlvbihkZWNvZGVy
Lm1lc3NhZ2VOYW1lKCkpKTsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIApAQCAtMzA3
LDcgKzMwNyw3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFIKICAg
ICAgICAgcmV0dXJuIHBheW1lbnRDb29yZGluYXRvcigpLmRpZFJlY2VpdmVTeW5jTWVzc2FnZShj
b25uZWN0aW9uLCBkZWNvZGVyLCByZXBseSk7CiAjZW5kaWYKIAotICAgIFdURkxvZ0Fsd2F5cygi
VW5oYW5kbGVkIG5ldHdvcmsgcHJvY2VzcyBtZXNzYWdlICclczolcyciLCBkZWNvZGVyLm1lc3Nh
Z2VSZWNlaXZlck5hbWUoKS50b1N0cmluZygpLmRhdGEoKSwgZGVjb2Rlci5tZXNzYWdlTmFtZSgp
LnRvU3RyaW5nKCkuZGF0YSgpKTsKKyAgICBXVEZMb2dBbHdheXMoIlVuaGFuZGxlZCBuZXR3b3Jr
IHByb2Nlc3MgbWVzc2FnZSAnJXMnIiwgZGVzY3JpcHRpb24oZGVjb2Rlci5tZXNzYWdlTmFtZSgp
KSk7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKQEAgLTM1Niw5ICszNTYsOSBAQCB2
b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRDCiAjZW5kaWYKIH0KIAotdm9p
ZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5h
bWUsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lKQordm9pZCBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYsIElQQzo6TWVzc2FnZU5hbWUgbWVzc2FnZU5hbWUpCiB7Ci0gICAgUkVMRUFTRV9MT0dfRkFV
TFQoSVBDLCAiUmVjZWl2ZWQgYW4gaW52YWxpZCBtZXNzYWdlICclIiBQVUJMSUNfTE9HX1NUUklO
RyAiOjolIiBQVUJMSUNfTE9HX1NUUklORyAiJyBmcm9tIFdlYkNvbnRlbnQgcHJvY2VzcyAlIiBQ
Ukl1NjQgIiwgcmVxdWVzdGluZyBmb3IgaXQgdG8gYmUgdGVybWluYXRlZC4iLCBtZXNzYWdlUmVj
ZWl2ZXJOYW1lLnRvU3RyaW5nKCkuZGF0YSgpLCBtZXNzYWdlTmFtZS50b1N0cmluZygpLmRhdGEo
KSwgbV93ZWJQcm9jZXNzSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBSRUxFQVNFX0xPR19G
QVVMVChJUEMsICJSZWNlaXZlZCBhbiBpbnZhbGlkIG1lc3NhZ2UgJyUiIFBVQkxJQ19MT0dfU1RS
SU5HICInIGZyb20gV2ViQ29udGVudCBwcm9jZXNzICUiIFBSSXU2NCAiLCByZXF1ZXN0aW5nIGZv
ciBpdCB0byBiZSB0ZXJtaW5hdGVkLiIsIGRlc2NyaXB0aW9uKG1lc3NhZ2VOYW1lKSwgbV93ZWJQ
cm9jZXNzSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKICAgICBtX25ldHdvcmtQcm9jZXNzLT5wYXJl
bnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5
OjpUZXJtaW5hdGVXZWJQcm9jZXNzKG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIpLCAwKTsKIH0KIApJ
bmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAkocmV2aXNpb24gMjYwNzY0KQorKysgU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xODYsNyArMTg2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFJl
Y2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwog
ICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVj
b2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jikgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2Vp
dmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBt
ZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZSkgb3Zl
cnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiwgSVBDOjpNZXNzYWdlTmFtZSkgb3ZlcnJpZGU7CiAKICAgICAvLyBNZXNzYWdlIGhhbmRsZXJz
LgogICAgIHZvaWQgZGlkUmVjZWl2ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKQEAgLTMyNiw4ICszMjYsNiBAQCBw
cml2YXRlOgogICAgIGNvbnN0IFN0cmluZyYgcGF5bWVudENvb3JkaW5hdG9yU291cmNlQXBwbGlj
YXRpb25CdW5kbGVJZGVudGlmaWVyKGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5Jikg
ZmluYWw7CiAgICAgY29uc3QgU3RyaW5nJiBwYXltZW50Q29vcmRpbmF0b3JTb3VyY2VBcHBsaWNh
dGlvblNlY29uZGFyeUlkZW50aWZpZXIoY29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkm
KSBmaW5hbDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50
ZXI+IHBheW1lbnRDb29yZGluYXRvckF1dGhvcml6YXRpb25QcmVzZW50ZXIoV2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHkmLCBQS1BheW1lbnRSZXF1ZXN0ICopIGZpbmFsOwotICAgIHZvaWQgcGF5
bWVudENvb3JkaW5hdG9yQWRkTWVzc2FnZVJlY2VpdmVyKFdlYlBheW1lbnRDb29yZGluYXRvclBy
b3h5JiwgY29uc3QgSVBDOjpTdHJpbmdSZWZlcmVuY2UmLCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYp
IGZpbmFsOwotICAgIHZvaWQgcGF5bWVudENvb3JkaW5hdG9yUmVtb3ZlTWVzc2FnZVJlY2VpdmVy
KFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JiwgY29uc3QgSVBDOjpTdHJpbmdSZWZlcmVuY2Um
KSBmaW5hbDsKICNlbmRpZgogCiAgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9u
OwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5jcHAJKHJldmlzaW9uIDI2MDc5MSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTcsNyArMjE3LDcgQEAgdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSQogewogICAgIEFTU0VSVChwYXJl
bnRQcm9jZXNzQ29ubmVjdGlvbigpID09ICZjb25uZWN0aW9uKTsKICAgICBpZiAocGFyZW50UHJv
Y2Vzc0Nvbm5lY3Rpb24oKSAhPSAmY29ubmVjdGlvbikgewotICAgICAgICBXVEZMb2dBbHdheXMo
Iklnbm9yZWQgbWVzc2FnZSAnJXM6JXMnIGJlY2F1c2UgaXQgZGlkIG5vdCBjb21lIGZyb20gdGhl
IFVJUHJvY2VzcyAoZGVzdGluYXRpb246ICUiIFBSSXU2NCAiKSIsIGRlY29kZXIubWVzc2FnZVJl
Y2VpdmVyTmFtZSgpLnRvU3RyaW5nKCkuZGF0YSgpLCBkZWNvZGVyLm1lc3NhZ2VOYW1lKCkudG9T
dHJpbmcoKS5kYXRhKCksIGRlY29kZXIuZGVzdGluYXRpb25JRCgpKTsKKyAgICAgICAgV1RGTG9n
QWx3YXlzKCJJZ25vcmVkIG1lc3NhZ2UgJyVzJyBiZWNhdXNlIGl0IGRpZCBub3QgY29tZSBmcm9t
IHRoZSBVSVByb2Nlc3MgKGRlc3RpbmF0aW9uOiAlIiBQUkl1NjQgIikiLCBkZXNjcmlwdGlvbihk
ZWNvZGVyLm1lc3NhZ2VOYW1lKCkpLCBkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSk7CiAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjQ0LDcg
KzI0NCw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRpZFJlY2VpdmVTeW5jTWVzc2EKIHsKICAg
ICBBU1NFUlQocGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKSA9PSAmY29ubmVjdGlvbik7CiAgICAg
aWYgKHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkgIT0gJmNvbm5lY3Rpb24pIHsKLSAgICAgICAg
V1RGTG9nQWx3YXlzKCJJZ25vcmVkIG1lc3NhZ2UgJyVzOiVzJyBiZWNhdXNlIGl0IGRpZCBub3Qg
Y29tZSBmcm9tIHRoZSBVSVByb2Nlc3MgKGRlc3RpbmF0aW9uOiAlIiBQUkl1NjQgIikiLCBkZWNv
ZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKS50b1N0cmluZygpLmRhdGEoKSwgZGVjb2Rlci5tZXNz
YWdlTmFtZSgpLnRvU3RyaW5nKCkuZGF0YSgpLCBkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSk7Cisg
ICAgICAgIFdURkxvZ0Fsd2F5cygiSWdub3JlZCBtZXNzYWdlICclcycgYmVjYXVzZSBpdCBkaWQg
bm90IGNvbWUgZnJvbSB0aGUgVUlQcm9jZXNzIChkZXN0aW5hdGlvbjogJSIgUFJJdTY0ICIpIiwg
ZGVzY3JpcHRpb24oZGVjb2Rlci5tZXNzYWdlTmFtZSgpKSwgZGVjb2Rlci5kZXN0aW5hdGlvbklE
KCkpOwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzSU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvaW9zL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzSU9TLm1tCShyZXZpc2lv
biAyNjA3NjQpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzc0lPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtODUsMTQgKzg1LDYg
QEAgc3RkOjp1bmlxdWVfcHRyPFBheW1lbnRBdXRob3JpemF0aW9uUHJlcwogICAgIHJldHVybiBt
YWtlVW5pcXVlPFBheW1lbnRBdXRob3JpemF0aW9uQ29udHJvbGxlcj4oY29vcmRpbmF0b3IsIHJl
cXVlc3QpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpwYXltZW50
Q29vcmRpbmF0b3JBZGRNZXNzYWdlUmVjZWl2ZXIoV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkm
LCBjb25zdCBJUEM6OlN0cmluZ1JlZmVyZW5jZSYsIElQQzo6TWVzc2FnZVJlY2VpdmVyJikKLXsK
LX0KLQotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cGF5bWVudENvb3JkaW5h
dG9yUmVtb3ZlTWVzc2FnZVJlY2VpdmVyKFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JiwgY29u
c3QgSVBDOjpTdHJpbmdSZWZlcmVuY2UmKQotewotfQotCiAjZW5kaWYgLy8gRU5BQkxFKEFQUExF
X1BBWV9SRU1PVEVfVUkpCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAJKHJldmlzaW9uIDI2MDc2NCkKKysrIFNv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01NCwyMSArNTQsMTcgQEAgY29uc3Qgc2l6ZV90IG1heFBlbmRpbmdJbmNvbWluZ01lc3NhZ2Vz
Swogc3RkOjphdG9taWM8dW5zaWduZWQ+IFVuYm91bmRlZFN5bmNocm9ub3VzSVBDU2NvcGU6OnVu
Ym91bmRlZFN5bmNocm9ub3VzSVBDQ291bnQgPSAwOwogCiBzdHJ1Y3QgQ29ubmVjdGlvbjo6V2Fp
dEZvck1lc3NhZ2VTdGF0ZSB7Ci0gICAgV2FpdEZvck1lc3NhZ2VTdGF0ZShTdHJpbmdSZWZlcmVu
Y2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lLCB1aW50
NjRfdCBkZXN0aW5hdGlvbklELCBPcHRpb25TZXQ8V2FpdEZvck9wdGlvbj4gd2FpdEZvck9wdGlv
bnMpCi0gICAgICAgIDogbWVzc2FnZVJlY2VpdmVyTmFtZShtZXNzYWdlUmVjZWl2ZXJOYW1lKQot
ICAgICAgICAsIG1lc3NhZ2VOYW1lKG1lc3NhZ2VOYW1lKQorICAgIFdhaXRGb3JNZXNzYWdlU3Rh
dGUoTWVzc2FnZU5hbWUgbWVzc2FnZU5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIE9wdGlv
blNldDxXYWl0Rm9yT3B0aW9uPiB3YWl0Rm9yT3B0aW9ucykKKyAgICAgICAgOiBtZXNzYWdlTmFt
ZShtZXNzYWdlTmFtZSkKICAgICAgICAgLCBkZXN0aW5hdGlvbklEKGRlc3RpbmF0aW9uSUQpCiAg
ICAgICAgICwgd2FpdEZvck9wdGlvbnMod2FpdEZvck9wdGlvbnMpCiAgICAgewogICAgIH0KIAot
ICAgIFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lOwotICAgIFN0cmluZ1JlZmVy
ZW5jZSBtZXNzYWdlTmFtZTsKKyAgICBNZXNzYWdlTmFtZSBtZXNzYWdlTmFtZTsKICAgICB1aW50
NjRfdCBkZXN0aW5hdGlvbklEOwotCiAgICAgT3B0aW9uU2V0PFdhaXRGb3JPcHRpb24+IHdhaXRG
b3JPcHRpb25zOwogICAgIGJvb2wgbWVzc2FnZVdhaXRpbmdJbnRlcnJ1cHRlZCA9IGZhbHNlOwot
CiAgICAgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IGRlY29kZXI7CiB9OwogCkBAIC0zMTUsMjMg
KzMxMSwyMyBAQCB2b2lkIENvbm5lY3Rpb246OnNldFNob3VsZEV4aXRPblN5bmNNZXNzCiAgICAg
bV9zaG91bGRFeGl0T25TeW5jTWVzc2FnZVNlbmRGYWlsdXJlID0gc2hvdWxkRXhpdE9uU3luY01l
c3NhZ2VTZW5kRmFpbHVyZTsKIH0KIAotdm9pZCBDb25uZWN0aW9uOjphZGRXb3JrUXVldWVNZXNz
YWdlUmVjZWl2ZXIoU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIFdvcmtRdWV1
ZSYgd29ya1F1ZXVlLCBXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIqIHdvcmtRdWV1ZU1lc3NhZ2VS
ZWNlaXZlcikKK3ZvaWQgQ29ubmVjdGlvbjo6YWRkV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKFJl
Y2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBXb3JrUXVldWUmIHdvcmtRdWV1ZSwgV29y
a1F1ZXVlTWVzc2FnZVJlY2VpdmVyKiB3b3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIpCiB7CiAgICAg
QVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2so
bV93b3JrUXVldWVNZXNzYWdlUmVjZWl2ZXJzTXV0ZXgpOwotICAgIEFTU0VSVCghbV93b3JrUXVl
dWVNZXNzYWdlUmVjZWl2ZXJzLmNvbnRhaW5zKG1lc3NhZ2VSZWNlaXZlck5hbWUpKTsKKyAgICBB
U1NFUlQoIW1fd29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVycy5jb250YWlucyhzdGF0aWNfY2FzdDx1
aW50OF90PihtZXNzYWdlUmVjZWl2ZXJOYW1lKSkpOwogCi0gICAgbV93b3JrUXVldWVNZXNzYWdl
UmVjZWl2ZXJzLmFkZChtZXNzYWdlUmVjZWl2ZXJOYW1lLCBzdGQ6Om1ha2VfcGFpcigmd29ya1F1
ZXVlLCB3b3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIpKTsKKyAgICBtX3dvcmtRdWV1ZU1lc3NhZ2VS
ZWNlaXZlcnMuYWRkKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KG1lc3NhZ2VSZWNlaXZlck5hbWUpLCBz
dGQ6Om1ha2VfcGFpcigmd29ya1F1ZXVlLCB3b3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIpKTsKIH0K
IAotdm9pZCBDb25uZWN0aW9uOjpyZW1vdmVXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIoU3RyaW5n
UmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUpCit2b2lkIENvbm5lY3Rpb246OnJlbW92ZVdv
cmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcihSZWNlaXZlck5hbWUgbWVzc2FnZVJlY2VpdmVyTmFtZSkK
IHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAgYXV0byBsb2NrZXIgPSBo
b2xkTG9jayhtX3dvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcnNNdXRleCk7Ci0gICAgQVNTRVJUKG1f
d29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVycy5jb250YWlucyhtZXNzYWdlUmVjZWl2ZXJOYW1lKSk7
Ci0gICAgbV93b3JrUXVldWVNZXNzYWdlUmVjZWl2ZXJzLnJlbW92ZShtZXNzYWdlUmVjZWl2ZXJO
YW1lKTsKKyAgICBBU1NFUlQobV93b3JrUXVldWVNZXNzYWdlUmVjZWl2ZXJzLmNvbnRhaW5zKHN0
YXRpY19jYXN0PHVpbnQ4X3Q+KG1lc3NhZ2VSZWNlaXZlck5hbWUpKSk7CisgICAgbV93b3JrUXVl
dWVNZXNzYWdlUmVjZWl2ZXJzLnJlbW92ZShzdGF0aWNfY2FzdDx1aW50OF90PihtZXNzYWdlUmVj
ZWl2ZXJOYW1lKSk7CiB9CiAKIHZvaWQgQ29ubmVjdGlvbjo6ZGlzcGF0Y2hXb3JrUXVldWVNZXNz
YWdlUmVjZWl2ZXJNZXNzYWdlKFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlciYgd29ya1F1ZXVlTWVz
c2FnZVJlY2VpdmVyLCBEZWNvZGVyJiBkZWNvZGVyKQpAQCAtMzQ5LDcgKzM0NSw3IEBAIHZvaWQg
Q29ubmVjdGlvbjo6ZGlzcGF0Y2hXb3JrUXVldWVNZXNzYWcKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIGF1dG8gcmVwbHlFbmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNvZGVyPigiSVBDIiwg
IlN5bmNNZXNzYWdlUmVwbHkiLCBzeW5jUmVxdWVzdElEKTsKKyAgICBhdXRvIHJlcGx5RW5jb2Rl
ciA9IG1ha2VVbmlxdWU8RW5jb2Rlcj4oTWVzc2FnZU5hbWU6OlN5bmNNZXNzYWdlUmVwbHksIHN5
bmNSZXF1ZXN0SUQpOwogCiAgICAgLy8gSGFuZCBvZmYgYm90aCB0aGUgZGVjb2RlciBhbmQgZW5j
b2RlciB0byB0aGUgd29yayBxdWV1ZSBtZXNzYWdlIHJlY2VpdmVyLgogICAgIHdvcmtRdWV1ZU1l
c3NhZ2VSZWNlaXZlci5kaWRSZWNlaXZlU3luY01lc3NhZ2UoKnRoaXMsIGRlY29kZXIsIHJlcGx5
RW5jb2Rlcik7CkBAIC0zNjEsMjQgKzM1NywyNCBAQCB2b2lkIENvbm5lY3Rpb246OmRpc3BhdGNo
V29ya1F1ZXVlTWVzc2FnCiAgICAgICAgIHNlbmRTeW5jUmVwbHkoV1RGTW92ZShyZXBseUVuY29k
ZXIpKTsKIH0KIAotdm9pZCBDb25uZWN0aW9uOjphZGRUaHJlYWRNZXNzYWdlUmVjZWl2ZXIoU3Ry
aW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIFRocmVhZE1lc3NhZ2VSZWNlaXZlciog
dGhyZWFkTWVzc2FnZVJlY2VpdmVyKQordm9pZCBDb25uZWN0aW9uOjphZGRUaHJlYWRNZXNzYWdl
UmVjZWl2ZXIoUmVjZWl2ZXJOYW1lIG1lc3NhZ2VSZWNlaXZlck5hbWUsIFRocmVhZE1lc3NhZ2VS
ZWNlaXZlciogdGhyZWFkTWVzc2FnZVJlY2VpdmVyKQogewogICAgIEFTU0VSVChSdW5Mb29wOjpp
c01haW4oKSk7CiAKICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fdGhyZWFkTWVzc2FnZVJl
Y2VpdmVyc0xvY2spOwotICAgIEFTU0VSVCghbV90aHJlYWRNZXNzYWdlUmVjZWl2ZXJzLmNvbnRh
aW5zKG1lc3NhZ2VSZWNlaXZlck5hbWUpKTsKKyAgICBBU1NFUlQoIW1fdGhyZWFkTWVzc2FnZVJl
Y2VpdmVycy5jb250YWlucyhzdGF0aWNfY2FzdDx1aW50OF90PihtZXNzYWdlUmVjZWl2ZXJOYW1l
KSkpOwogCi0gICAgbV90aHJlYWRNZXNzYWdlUmVjZWl2ZXJzLmFkZChtZXNzYWdlUmVjZWl2ZXJO
YW1lLCB0aHJlYWRNZXNzYWdlUmVjZWl2ZXIpOworICAgIG1fdGhyZWFkTWVzc2FnZVJlY2VpdmVy
cy5hZGQoc3RhdGljX2Nhc3Q8dWludDhfdD4obWVzc2FnZVJlY2VpdmVyTmFtZSksIHRocmVhZE1l
c3NhZ2VSZWNlaXZlcik7CiB9CiAKLXZvaWQgQ29ubmVjdGlvbjo6cmVtb3ZlVGhyZWFkTWVzc2Fn
ZVJlY2VpdmVyKFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lKQordm9pZCBDb25u
ZWN0aW9uOjpyZW1vdmVUaHJlYWRNZXNzYWdlUmVjZWl2ZXIoUmVjZWl2ZXJOYW1lIG1lc3NhZ2VS
ZWNlaXZlck5hbWUpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAgIGF1
dG8gbG9ja2VyID0gaG9sZExvY2sobV90aHJlYWRNZXNzYWdlUmVjZWl2ZXJzTG9jayk7Ci0gICAg
QVNTRVJUKG1fdGhyZWFkTWVzc2FnZVJlY2VpdmVycy5jb250YWlucyhtZXNzYWdlUmVjZWl2ZXJO
YW1lKSk7CisgICAgQVNTRVJUKG1fdGhyZWFkTWVzc2FnZVJlY2VpdmVycy5jb250YWlucyhzdGF0
aWNfY2FzdDx1aW50OF90PihtZXNzYWdlUmVjZWl2ZXJOYW1lKSkpOwogCi0gICAgbV90aHJlYWRN
ZXNzYWdlUmVjZWl2ZXJzLnJlbW92ZShtZXNzYWdlUmVjZWl2ZXJOYW1lKTsKKyAgICBtX3RocmVh
ZE1lc3NhZ2VSZWNlaXZlcnMucmVtb3ZlKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KG1lc3NhZ2VSZWNl
aXZlck5hbWUpKTsKIH0KIAogdm9pZCBDb25uZWN0aW9uOjpkaXNwYXRjaFRocmVhZE1lc3NhZ2VS
ZWNlaXZlck1lc3NhZ2UoVGhyZWFkTWVzc2FnZVJlY2VpdmVyJiB0aHJlYWRNZXNzYWdlUmVjZWl2
ZXIsIERlY29kZXImIGRlY29kZXIpCkBAIC0zOTUsNyArMzkxLDcgQEAgdm9pZCBDb25uZWN0aW9u
OjpkaXNwYXRjaFRocmVhZE1lc3NhZ2VSZQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
YXV0byByZXBseUVuY29kZXIgPSBtYWtlVW5pcXVlPEVuY29kZXI+KCJJUEMiLCAiU3luY01lc3Nh
Z2VSZXBseSIsIHN5bmNSZXF1ZXN0SUQpOworICAgIGF1dG8gcmVwbHlFbmNvZGVyID0gbWFrZVVu
aXF1ZTxFbmNvZGVyPihNZXNzYWdlTmFtZTo6U3luY01lc3NhZ2VSZXBseSwgc3luY1JlcXVlc3RJ
RCk7CiAgICAgdGhyZWFkTWVzc2FnZVJlY2VpdmVyLmRpZFJlY2VpdmVTeW5jTWVzc2FnZSgqdGhp
cywgZGVjb2RlciwgcmVwbHlFbmNvZGVyKTsKIAogICAgIC8vIEZJWE1FOiBJZiB0aGUgbWVzc2Fn
ZSB3YXMgaW52YWxpZCwgd2Ugc2hvdWxkIHNlbmQgYmFjayBhIFN5bmNNZXNzYWdlRXJyb3IuCkBA
IC00MzYsOSArNDMyLDkgQEAgdm9pZCBDb25uZWN0aW9uOjptYXJrQ3VycmVudGx5RGlzcGF0Y2hl
ZAogICAgIG1fZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlID0gdHJ1ZTsKIH0KIAotc3RkOjp1bmlx
dWVfcHRyPEVuY29kZXI+IENvbm5lY3Rpb246OmNyZWF0ZVN5bmNNZXNzYWdlRW5jb2RlcihTdHJp
bmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VO
YW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCB1aW50NjRfdCYgc3luY1JlcXVlc3RJRCkKK3N0
ZDo6dW5pcXVlX3B0cjxFbmNvZGVyPiBDb25uZWN0aW9uOjpjcmVhdGVTeW5jTWVzc2FnZUVuY29k
ZXIoTWVzc2FnZU5hbWUgbWVzc2FnZU5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIHVpbnQ2
NF90JiBzeW5jUmVxdWVzdElEKQogewotICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWU8RW5j
b2Rlcj4obWVzc2FnZVJlY2VpdmVyTmFtZSwgbWVzc2FnZU5hbWUsIGRlc3RpbmF0aW9uSUQpOwor
ICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWU8RW5jb2Rlcj4obWVzc2FnZU5hbWUsIGRlc3Rp
bmF0aW9uSUQpOwogICAgIGVuY29kZXItPnNldElzU3luY01lc3NhZ2UodHJ1ZSk7CiAKICAgICAv
LyBFbmNvZGUgdGhlIHN5bmMgcmVxdWVzdCBJRC4KQEAgLTQ1Myw5ICs0NDksOSBAQCBib29sIENv
bm5lY3Rpb246OnNlbmRNZXNzYWdlKHN0ZDo6dW5pcXVlCiAgICAgaWYgKCFpc1ZhbGlkKCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmIChpc01haW5UaHJlYWQoKSAmJiBtX2luRGlz
cGF0Y2hNZXNzYWdlTWFya2VkVG9Vc2VGdWxseVN5bmNocm9ub3VzTW9kZUZvclRlc3RpbmcgJiYg
IWVuY29kZXItPmlzU3luY01lc3NhZ2UoKSAmJiAhKGVuY29kZXItPm1lc3NhZ2VSZWNlaXZlck5h
bWUoKSA9PSAiSVBDIikgJiYgIXNlbmRPcHRpb25zLmNvbnRhaW5zKFNlbmRPcHRpb246Oklnbm9y
ZUZ1bGx5U3luY2hyb25vdXNNb2RlKSkgeworICAgIGlmIChpc01haW5UaHJlYWQoKSAmJiBtX2lu
RGlzcGF0Y2hNZXNzYWdlTWFya2VkVG9Vc2VGdWxseVN5bmNocm9ub3VzTW9kZUZvclRlc3Rpbmcg
JiYgIWVuY29kZXItPmlzU3luY01lc3NhZ2UoKSAmJiAhKGVuY29kZXItPm1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSA9PSBSZWNlaXZlck5hbWU6OklQQykgJiYgIXNlbmRPcHRpb25zLmNvbnRhaW5zKFNl
bmRPcHRpb246Oklnbm9yZUZ1bGx5U3luY2hyb25vdXNNb2RlKSkgewogICAgICAgICB1aW50NjRf
dCBzeW5jUmVxdWVzdElEOwotICAgICAgICBhdXRvIHdyYXBwZWRNZXNzYWdlID0gY3JlYXRlU3lu
Y01lc3NhZ2VFbmNvZGVyKCJJUEMiLCAiV3JhcHBlZEFzeW5jTWVzc2FnZUZvclRlc3RpbmciLCBl
bmNvZGVyLT5kZXN0aW5hdGlvbklEKCksIHN5bmNSZXF1ZXN0SUQpOworICAgICAgICBhdXRvIHdy
YXBwZWRNZXNzYWdlID0gY3JlYXRlU3luY01lc3NhZ2VFbmNvZGVyKE1lc3NhZ2VOYW1lOjpXcmFw
cGVkQXN5bmNNZXNzYWdlRm9yVGVzdGluZywgZW5jb2Rlci0+ZGVzdGluYXRpb25JRCgpLCBzeW5j
UmVxdWVzdElEKTsKICAgICAgICAgd3JhcHBlZE1lc3NhZ2UtPnNldEZ1bGx5U3luY2hyb25vdXNN
b2RlRm9yVGVzdGluZygpOwogICAgICAgICB3cmFwcGVkTWVzc2FnZS0+d3JhcEZvclRlc3Rpbmco
V1RGTW92ZShlbmNvZGVyKSk7CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxib29sPihzZW5k
U3luY01lc3NhZ2Uoc3luY1JlcXVlc3RJRCwgV1RGTW92ZSh3cmFwcGVkTWVzc2FnZSksIFNlY29u
ZHM6OmluZmluaXR5KCksIHsgfSkpOwpAQCAtNDkwLDcgKzQ4Niw3IEBAIFNlY29uZHMgQ29ubmVj
dGlvbjo6dGltZW91dFJlc3BlY3RpbmdJZ24KICAgICByZXR1cm4gbV9pZ25vcmVUaW1lb3V0c0Zv
clRlc3RpbmcgPyBTZWNvbmRzOjppbmZpbml0eSgpIDogdGltZW91dDsKIH0KIAotc3RkOjp1bmlx
dWVfcHRyPERlY29kZXI+IENvbm5lY3Rpb246OndhaXRGb3JNZXNzYWdlKFN0cmluZ1JlZmVyZW5j
ZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUsIHVpbnQ2
NF90IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCwgT3B0aW9uU2V0PFdhaXRGb3JPcHRp
b24+IHdhaXRGb3JPcHRpb25zKQorc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IENvbm5lY3Rpb246
OndhaXRGb3JNZXNzYWdlKE1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lLCB1aW50NjRfdCBkZXN0aW5h
dGlvbklELCBTZWNvbmRzIHRpbWVvdXQsIE9wdGlvblNldDxXYWl0Rm9yT3B0aW9uPiB3YWl0Rm9y
T3B0aW9ucykKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIGF1dG8gcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpOwpAQCAtNTA2LDcgKzUwMiw3IEBAIHN0ZDo6dW5p
cXVlX3B0cjxEZWNvZGVyPiBDb25uZWN0aW9uOjp3YWkKICAgICAgICAgZm9yIChhdXRvIGl0ID0g
bV9pbmNvbWluZ01lc3NhZ2VzLmJlZ2luKCksIGVuZCA9IG1faW5jb21pbmdNZXNzYWdlcy5lbmQo
KTsgaXQgIT0gZW5kOyArK2l0KSB7CiAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rl
cj4mIG1lc3NhZ2UgPSAqaXQ7CiAKLSAgICAgICAgICAgIGlmIChtZXNzYWdlLT5tZXNzYWdlUmVj
ZWl2ZXJOYW1lKCkgPT0gbWVzc2FnZVJlY2VpdmVyTmFtZSAmJiBtZXNzYWdlLT5tZXNzYWdlTmFt
ZSgpID09IG1lc3NhZ2VOYW1lICYmIG1lc3NhZ2UtPmRlc3RpbmF0aW9uSUQoKSA9PSBkZXN0aW5h
dGlvbklEKSB7CisgICAgICAgICAgICBpZiAobWVzc2FnZS0+bWVzc2FnZU5hbWUoKSA9PSBtZXNz
YWdlTmFtZSAmJiBtZXNzYWdlLT5kZXN0aW5hdGlvbklEKCkgPT0gZGVzdGluYXRpb25JRCkgewog
ICAgICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiByZXR1cm5lZE1lc3NhZ2Ug
PSBXVEZNb3ZlKG1lc3NhZ2UpOwogCiAgICAgICAgICAgICAgICAgbV9pbmNvbWluZ01lc3NhZ2Vz
LnJlbW92ZShpdCk7CkBAIC01MjgsNyArNTI0LDcgQEAgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+
IENvbm5lY3Rpb246OndhaQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBX
YWl0Rm9yTWVzc2FnZVN0YXRlIHdhaXRpbmdGb3JNZXNzYWdlKG1lc3NhZ2VSZWNlaXZlck5hbWUs
IG1lc3NhZ2VOYW1lLCBkZXN0aW5hdGlvbklELCB3YWl0Rm9yT3B0aW9ucyk7CisgICAgV2FpdEZv
ck1lc3NhZ2VTdGF0ZSB3YWl0aW5nRm9yTWVzc2FnZShtZXNzYWdlTmFtZSwgZGVzdGluYXRpb25J
RCwgd2FpdEZvck9wdGlvbnMpOwogCiAgICAgewogICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRM
b2NrKG1fd2FpdEZvck1lc3NhZ2VNdXRleCk7CkBAIC02MDAsMTQgKzU5NiwxMyBAQCBzdGQ6OnVu
aXF1ZV9wdHI8RGVjb2Rlcj4gQ29ubmVjdGlvbjo6c2VuCiAgICAgaWYgKHNlbmRTeW5jT3B0aW9u
cy5jb250YWlucyhTZW5kU3luY09wdGlvbjo6Rm9yY2VEaXNwYXRjaFdoZW5EZXN0aW5hdGlvbklz
V2FpdGluZ0ZvclVuYm91bmRlZFN5bmNSZXBseSkpCiAgICAgICAgIHNlbmRPcHRpb25zID0gc2Vu
ZE9wdGlvbnMgfCBJUEM6OlNlbmRPcHRpb246OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGlu
Z0ZvclVuYm91bmRlZFN5bmNSZXBseTsKIAotICAgIGF1dG8gbWVzc2FnZVJlY2VpdmVyTmFtZSA9
IGVuY29kZXItPm1lc3NhZ2VSZWNlaXZlck5hbWUoKTsKICAgICBhdXRvIG1lc3NhZ2VOYW1lID0g
ZW5jb2Rlci0+bWVzc2FnZU5hbWUoKTsKICAgICBzZW5kTWVzc2FnZShXVEZNb3ZlKGVuY29kZXIp
LCBzZW5kT3B0aW9ucyk7CiAKICAgICAvLyBUaGVuIHdhaXQgZm9yIGEgcmVwbHkuIFdhaXRpbmcg
Zm9yIGEgcmVwbHkgY291bGQgaW52b2x2ZSBkaXNwYXRjaGluZyBpbmNvbWluZyBzeW5jIG1lc3Nh
Z2VzLCBzbwogICAgIC8vIGtlZXAgYW4gZXh0cmEgcmVmZXJlbmNlIHRvIHRoZSBjb25uZWN0aW9u
IGhlcmUgaW4gY2FzZSBpdCdzIGludmFsaWRhdGVkLgogICAgIFJlZjxDb25uZWN0aW9uPiBwcm90
ZWN0KCp0aGlzKTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gcmVwbHkgPSB3YWl0Rm9y
U3luY1JlcGx5KHN5bmNSZXF1ZXN0SUQsIG1lc3NhZ2VSZWNlaXZlck5hbWUsIG1lc3NhZ2VOYW1l
LCB0aW1lb3V0LCBzZW5kU3luY09wdGlvbnMpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVy
PiByZXBseSA9IHdhaXRGb3JTeW5jUmVwbHkoc3luY1JlcXVlc3RJRCwgbWVzc2FnZU5hbWUsIHRp
bWVvdXQsIHNlbmRTeW5jT3B0aW9ucyk7CiAKICAgICAtLW1faW5TZW5kU3luY0NvdW50OwogCkBA
IC02MjQsNyArNjE5LDcgQEAgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IENvbm5lY3Rpb246OnNl
bgogICAgIHJldHVybiByZXBseTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IENvbm5l
Y3Rpb246OndhaXRGb3JTeW5jUmVwbHkodWludDY0X3Qgc3luY1JlcXVlc3RJRCwgU3RyaW5nUmVm
ZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZSwg
U2Vjb25kcyB0aW1lb3V0LCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9u
cykKK3N0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiBDb25uZWN0aW9uOjp3YWl0Rm9yU3luY1JlcGx5
KHVpbnQ2NF90IHN5bmNSZXF1ZXN0SUQsIE1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lLCBTZWNvbmRz
IHRpbWVvdXQsIE9wdGlvblNldDxTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zKQogewog
ICAgIHRpbWVvdXQgPSB0aW1lb3V0UmVzcGVjdGluZ0lnbm9yZVRpbWVvdXRzRm9yVGVzdGluZyh0
aW1lb3V0KTsKICAgICBNb25vdG9uaWNUaW1lIGFic29sdXRlVGltZSA9IE1vbm90b25pY1RpbWU6
Om5vdygpICsgdGltZW91dDsKQEAgLTY2OSw5ICs2NjQsOSBAQCBzdGQ6OnVuaXF1ZV9wdHI8RGVj
b2Rlcj4gQ29ubmVjdGlvbjo6d2FpCiAgICAgfQogCiAjaWYgT1MoREFSV0lOKQotICAgIFJFTEVB
U0VfTE9HX0VSUk9SKElQQywgIkNvbm5lY3Rpb246OndhaXRGb3JTeW5jUmVwbHk6IFRpbWVkLW91
dCB3aGlsZSB3YWl0aW5nIGZvciByZXBseSBmb3IgJXtwdWJsaWN9czo6JXtwdWJsaWN9cyBmcm9t
IHByb2Nlc3MgJWQsIGlkID0gJSIgUFJJdTY0LCBtZXNzYWdlUmVjZWl2ZXJOYW1lLnRvU3RyaW5n
KCkuZGF0YSgpLCBtZXNzYWdlTmFtZS50b1N0cmluZygpLmRhdGEoKSwgcmVtb3RlUHJvY2Vzc0lE
KCksIHN5bmNSZXF1ZXN0SUQpOworICAgIFJFTEVBU0VfTE9HX0VSUk9SKElQQywgIkNvbm5lY3Rp
b246OndhaXRGb3JTeW5jUmVwbHk6IFRpbWVkLW91dCB3aGlsZSB3YWl0aW5nIGZvciByZXBseSBm
b3IgJXtwdWJsaWN9cyBmcm9tIHByb2Nlc3MgJWQsIGlkID0gJSIgUFJJdTY0LCBkZXNjcmlwdGlv
bihtZXNzYWdlTmFtZSksIHJlbW90ZVByb2Nlc3NJRCgpLCBzeW5jUmVxdWVzdElEKTsKICNlbHNl
Ci0gICAgUkVMRUFTRV9MT0dfRVJST1IoSVBDLCAiQ29ubmVjdGlvbjo6d2FpdEZvclN5bmNSZXBs
eTogVGltZWQtb3V0IHdoaWxlIHdhaXRpbmcgZm9yIHJlcGx5IGZvciAlczo6JXMsIGlkID0gJSIg
UFJJdTY0LCBtZXNzYWdlUmVjZWl2ZXJOYW1lLnRvU3RyaW5nKCkuZGF0YSgpLCBtZXNzYWdlTmFt
ZS50b1N0cmluZygpLmRhdGEoKSwgc3luY1JlcXVlc3RJRCk7CisgICAgUkVMRUFTRV9MT0dfRVJS
T1IoSVBDLCAiQ29ubmVjdGlvbjo6d2FpdEZvclN5bmNSZXBseTogVGltZWQtb3V0IHdoaWxlIHdh
aXRpbmcgZm9yIHJlcGx5IGZvciAlcywgaWQgPSAlIiBQUkl1NjQsIGRlc2NyaXB0aW9uKG1lc3Nh
Z2VOYW1lKSwgc3luY1JlcXVlc3RJRCk7CiAjZW5kaWYKIAogICAgIGRpZFJlY2VpdmVTeW5jUmVw
bHkoc2VuZFN5bmNPcHRpb25zKTsKQEAgLTcxMSwyMyArNzA2LDE2IEBAIHZvaWQgQ29ubmVjdGlv
bjo6cHJvY2Vzc0luY29taW5nU3luY1JlcGwKIAogdm9pZCBDb25uZWN0aW9uOjpwcm9jZXNzSW5j
b21pbmdNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiBtZXNzYWdlKQogewotICAgIEFT
U0VSVCghbWVzc2FnZS0+bWVzc2FnZVJlY2VpdmVyTmFtZSgpLmlzRW1wdHkoKSk7Ci0gICAgQVNT
RVJUKCFtZXNzYWdlLT5tZXNzYWdlTmFtZSgpLmlzRW1wdHkoKSk7CisgICAgQVNTRVJUKG1lc3Nh
Z2UtPm1lc3NhZ2VSZWNlaXZlck5hbWUoKSAhPSBSZWNlaXZlck5hbWU6OkludmFsaWQpOwogCi0g
ICAgaWYgKG1lc3NhZ2UtPm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSAiSVBDIiAmJiBtZXNzYWdl
LT5tZXNzYWdlTmFtZSgpID09ICJTeW5jTWVzc2FnZVJlcGx5IikgeworICAgIGlmIChtZXNzYWdl
LT5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VOYW1lOjpTeW5jTWVzc2FnZVJlcGx5KSB7CiAgICAg
ICAgIHByb2Nlc3NJbmNvbWluZ1N5bmNSZXBseShXVEZNb3ZlKG1lc3NhZ2UpKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIGlmICghV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyTWFwOjpp
c1ZhbGlkS2V5KG1lc3NhZ2UtPm1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgfHwgIVRocmVhZE1lc3Nh
Z2VSZWNlaXZlck1hcDo6aXNWYWxpZEtleShtZXNzYWdlLT5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkp
KSB7Ci0gICAgICAgIFJlZlB0cjxDb25uZWN0aW9uPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwotICAg
ICAgICBTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZVJlZmVyZW5jZSA9IG1lc3Nh
Z2UtPm1lc3NhZ2VSZWNlaXZlck5hbWUoKTsKLSAgICAgICAgU3RyaW5nIG1lc3NhZ2VSZWNlaXZl
ck5hbWUobWVzc2FnZVJlY2VpdmVyTmFtZVJlZmVyZW5jZS5pc0VtcHR5KCkgPyAiPHVua25vd24g
bWVzc2FnZSByZWNlaXZlcj4iIDogU3RyaW5nKG1lc3NhZ2VSZWNlaXZlck5hbWVSZWZlcmVuY2Uu
ZGF0YSgpLCBtZXNzYWdlUmVjZWl2ZXJOYW1lUmVmZXJlbmNlLnNpemUoKSkpOwotICAgICAgICBT
dHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWVSZWZlcmVuY2UgPSBtZXNzYWdlLT5tZXNzYWdlTmFt
ZSgpOwotICAgICAgICBTdHJpbmcgbWVzc2FnZU5hbWUobWVzc2FnZU5hbWVSZWZlcmVuY2UuaXNF
bXB0eSgpID8gIjx1bmtub3duIG1lc3NhZ2U+IiA6IFN0cmluZyhtZXNzYWdlTmFtZVJlZmVyZW5j
ZS5kYXRhKCksIG1lc3NhZ2VOYW1lUmVmZXJlbmNlLnNpemUoKSkpOwotCi0gICAgICAgIFJ1bkxv
b3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBtZXNz
YWdlUmVjZWl2ZXJOYW1lID0gV1RGTW92ZShtZXNzYWdlUmVjZWl2ZXJOYW1lKSwgbWVzc2FnZU5h
bWUgPSBXVEZNb3ZlKG1lc3NhZ2VOYW1lKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIHByb3Rl
Y3RlZFRoaXMtPmRpc3BhdGNoRGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKG1lc3NhZ2VSZWNlaXZl
ck5hbWUudXRmOCgpLCBtZXNzYWdlTmFtZS51dGY4KCkpOworICAgIGlmICghV29ya1F1ZXVlTWVz
c2FnZVJlY2VpdmVyTWFwOjppc1ZhbGlkS2V5KHN0YXRpY19jYXN0PHVpbnQ4X3Q+KG1lc3NhZ2Ut
Pm1lc3NhZ2VSZWNlaXZlck5hbWUoKSkpIHx8ICFUaHJlYWRNZXNzYWdlUmVjZWl2ZXJNYXA6Omlz
VmFsaWRLZXkoc3RhdGljX2Nhc3Q8dWludDhfdD4obWVzc2FnZS0+bWVzc2FnZVJlY2VpdmVyTmFt
ZSgpKSkpIHsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyksIG1lc3NhZ2VOYW1lID0gbWVzc2FnZS0+bWVzc2FnZU5hbWUoKV0o
KSBtdXRhYmxlIHsKKyAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPmRpc3BhdGNoRGlkUmVjZWl2
ZUludmFsaWRNZXNzYWdlKG1lc3NhZ2VOYW1lKTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CkBAIC03NTksNyArNzQ3LDcgQEAgdm9pZCBDb25uZWN0aW9uOjpwcm9jZXNzSW5j
b21pbmdNZXNzYWdlKAogICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fd2FpdEZvck1l
c3NhZ2VNdXRleCk7CiAKICAgICAgICAgaWYgKG1fd2FpdGluZ0Zvck1lc3NhZ2UgJiYgIW1fd2Fp
dGluZ0Zvck1lc3NhZ2UtPmRlY29kZXIpIHsKLSAgICAgICAgICAgIGlmIChtX3dhaXRpbmdGb3JN
ZXNzYWdlLT5tZXNzYWdlUmVjZWl2ZXJOYW1lID09IG1lc3NhZ2UtPm1lc3NhZ2VSZWNlaXZlck5h
bWUoKSAmJiBtX3dhaXRpbmdGb3JNZXNzYWdlLT5tZXNzYWdlTmFtZSA9PSBtZXNzYWdlLT5tZXNz
YWdlTmFtZSgpICYmIG1fd2FpdGluZ0Zvck1lc3NhZ2UtPmRlc3RpbmF0aW9uSUQgPT0gbWVzc2Fn
ZS0+ZGVzdGluYXRpb25JRCgpKSB7CisgICAgICAgICAgICBpZiAobV93YWl0aW5nRm9yTWVzc2Fn
ZS0+bWVzc2FnZU5hbWUgPT0gbWVzc2FnZS0+bWVzc2FnZU5hbWUoKSAmJiBtX3dhaXRpbmdGb3JN
ZXNzYWdlLT5kZXN0aW5hdGlvbklEID09IG1lc3NhZ2UtPmRlc3RpbmF0aW9uSUQoKSkgewogICAg
ICAgICAgICAgICAgIG1fd2FpdGluZ0Zvck1lc3NhZ2UtPmRlY29kZXIgPSBXVEZNb3ZlKG1lc3Nh
Z2UpOwogICAgICAgICAgICAgICAgIEFTU0VSVChtX3dhaXRpbmdGb3JNZXNzYWdlLT5kZWNvZGVy
KTsKICAgICAgICAgICAgICAgICBtX3dhaXRGb3JNZXNzYWdlQ29uZGl0aW9uLm5vdGlmeU9uZSgp
OwpAQCAtOTEyLDkgKzkwMCw5IEBAIHZvaWQgQ29ubmVjdGlvbjo6ZGlzcGF0Y2hTeW5jTWVzc2Fn
ZShEZWMKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gcmVwbHlFbmNvZGVyID0g
bWFrZVVuaXF1ZTxFbmNvZGVyPigiSVBDIiwgIlN5bmNNZXNzYWdlUmVwbHkiLCBzeW5jUmVxdWVz
dElEKTsKKyAgICBhdXRvIHJlcGx5RW5jb2RlciA9IG1ha2VVbmlxdWU8RW5jb2Rlcj4oTWVzc2Fn
ZU5hbWU6OlN5bmNNZXNzYWdlUmVwbHksIHN5bmNSZXF1ZXN0SUQpOwogCi0gICAgaWYgKGRlY29k
ZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09ICJJUEMiICYmIGRlY29kZXIubWVzc2FnZU5hbWUo
KSA9PSAiV3JhcHBlZEFzeW5jTWVzc2FnZUZvclRlc3RpbmciKSB7CisgICAgaWYgKGRlY29kZXIu
bWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlTmFtZTo6V3JhcHBlZEFzeW5jTWVzc2FnZUZvclRlc3Rp
bmcpIHsKICAgICAgICAgaWYgKCFtX2Z1bGx5U3luY2hyb25vdXNNb2RlSXNBbGxvd2VkRm9yVGVz
dGluZykgewogICAgICAgICAgICAgZGVjb2Rlci5tYXJrSW52YWxpZCgpOwogICAgICAgICAgICAg
cmV0dXJuOwpAQCAtOTM2LDE0ICs5MjQsMTQgQEAgdm9pZCBDb25uZWN0aW9uOjpkaXNwYXRjaFN5
bmNNZXNzYWdlKERlYwogICAgICAgICBzZW5kU3luY1JlcGx5KFdURk1vdmUocmVwbHlFbmNvZGVy
KSk7CiB9CiAKLXZvaWQgQ29ubmVjdGlvbjo6ZGlzcGF0Y2hEaWRSZWNlaXZlSW52YWxpZE1lc3Nh
Z2UoY29uc3QgQ1N0cmluZyYgbWVzc2FnZVJlY2VpdmVyTmFtZVN0cmluZywgY29uc3QgQ1N0cmlu
ZyYgbWVzc2FnZU5hbWVTdHJpbmcpCit2b2lkIENvbm5lY3Rpb246OmRpc3BhdGNoRGlkUmVjZWl2
ZUludmFsaWRNZXNzYWdlKE1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lKQogewogICAgIEFTU0VSVChS
dW5Mb29wOjppc01haW4oKSk7CiAKICAgICBpZiAoIWlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgbV9jbGllbnQuZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKCp0aGlzLCBTdHJpbmdS
ZWZlcmVuY2UobWVzc2FnZVJlY2VpdmVyTmFtZVN0cmluZy5kYXRhKCksIG1lc3NhZ2VSZWNlaXZl
ck5hbWVTdHJpbmcubGVuZ3RoKCkpLCBTdHJpbmdSZWZlcmVuY2UobWVzc2FnZU5hbWVTdHJpbmcu
ZGF0YSgpLCBtZXNzYWdlTmFtZVN0cmluZy5sZW5ndGgoKSkpOworICAgIG1fY2xpZW50LmRpZFJl
Y2VpdmVJbnZhbGlkTWVzc2FnZSgqdGhpcywgbWVzc2FnZU5hbWUpOwogfQogCiB2b2lkIENvbm5l
Y3Rpb246OmRpZEZhaWxUb1NlbmRTeW5jTWVzc2FnZSgpCkBAIC05ODksNyArOTc3LDcgQEAgdm9p
ZCBDb25uZWN0aW9uOjplbnF1ZXVlSW5jb21pbmdNZXNzYWdlKAogdm9pZCBDb25uZWN0aW9uOjpk
aXNwYXRjaE1lc3NhZ2UoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBSRUxFQVNFX0FTU0VSVChp
c1ZhbGlkKCkpOwotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSAiQXN5
bmNSZXBseSIpIHsKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gUmVj
ZWl2ZXJOYW1lOjpBc3luY1JlcGx5KSB7CiAgICAgICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBsaXN0
ZW5lcklEOwogICAgICAgICBkZWNvZGVyID4+IGxpc3RlbmVySUQ7CiAgICAgICAgIGlmICghbGlz
dGVuZXJJRCkgewpAQCAtMTAxMSw3ICs5OTksNyBAQCB2b2lkIENvbm5lY3Rpb246OmRpc3BhdGNo
TWVzc2FnZShEZWNvZGVyCiBib29sIENvbm5lY3Rpb246OmRpc3BhdGNoTWVzc2FnZVRvV29ya1F1
ZXVlUmVjZWl2ZXIoc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+JiBtZXNzYWdlKQogewogICAgIGF1
dG8gbG9ja2VyID0gaG9sZExvY2sobV93b3JrUXVldWVNZXNzYWdlUmVjZWl2ZXJzTXV0ZXgpOwot
ICAgIGF1dG8gaXQgPSBtX3dvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcnMuZmluZChtZXNzYWdlLT5t
ZXNzYWdlUmVjZWl2ZXJOYW1lKCkpOworICAgIGF1dG8gaXQgPSBtX3dvcmtRdWV1ZU1lc3NhZ2VS
ZWNlaXZlcnMuZmluZChzdGF0aWNfY2FzdDx1aW50OF90PihtZXNzYWdlLT5tZXNzYWdlUmVjZWl2
ZXJOYW1lKCkpKTsKICAgICBpZiAoaXQgIT0gbV93b3JrUXVldWVNZXNzYWdlUmVjZWl2ZXJzLmVu
ZCgpKSB7CiAgICAgICAgIGl0LT52YWx1ZS5maXJzdC0+ZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKSwgd29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyID0gaXQtPnZhbHVlLnNl
Y29uZCwgZGVjb2RlciA9IFdURk1vdmUobWVzc2FnZSldKCkgbXV0YWJsZSB7CiAgICAgICAgICAg
ICBwcm90ZWN0ZWRUaGlzLT5kaXNwYXRjaFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlck1lc3NhZ2Uo
KndvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlciwgKmRlY29kZXIpOwpAQCAtMTAyNiw3ICsxMDE0LDcg
QEAgYm9vbCBDb25uZWN0aW9uOjpkaXNwYXRjaE1lc3NhZ2VUb1RocmVhZAogICAgIFJlZlB0cjxU
aHJlYWRNZXNzYWdlUmVjZWl2ZXI+IHByb3RlY3RlZFRocmVhZE1lc3NhZ2VSZWNlaXZlcjsKICAg
ICB7CiAgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV90aHJlYWRNZXNzYWdlUmVjZWl2
ZXJzTG9jayk7Ci0gICAgICAgIHByb3RlY3RlZFRocmVhZE1lc3NhZ2VSZWNlaXZlciA9IG1fdGhy
ZWFkTWVzc2FnZVJlY2VpdmVycy5nZXQobWVzc2FnZS0+bWVzc2FnZVJlY2VpdmVyTmFtZSgpKTsK
KyAgICAgICAgcHJvdGVjdGVkVGhyZWFkTWVzc2FnZVJlY2VpdmVyID0gbV90aHJlYWRNZXNzYWdl
UmVjZWl2ZXJzLmdldChzdGF0aWNfY2FzdDx1aW50OF90PihtZXNzYWdlLT5tZXNzYWdlUmVjZWl2
ZXJOYW1lKCkpKTsKICAgICB9CiAKICAgICBpZiAocHJvdGVjdGVkVGhyZWFkTWVzc2FnZVJlY2Vp
dmVyKSB7CkBAIC0xMDU0LDcgKzEwNDIsNyBAQCB2b2lkIENvbm5lY3Rpb246OmRpc3BhdGNoTWVz
c2FnZShzdGQ6OnVuCiAKICAgICBpZiAobWVzc2FnZS0+c2hvdWxkVXNlRnVsbHlTeW5jaHJvbm91
c01vZGVGb3JUZXN0aW5nKCkpIHsKICAgICAgICAgaWYgKCFtX2Z1bGx5U3luY2hyb25vdXNNb2Rl
SXNBbGxvd2VkRm9yVGVzdGluZykgewotICAgICAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZUlu
dmFsaWRNZXNzYWdlKCp0aGlzLCBtZXNzYWdlLT5tZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1lc3Nh
Z2UtPm1lc3NhZ2VOYW1lKCkpOworICAgICAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZUludmFs
aWRNZXNzYWdlKCp0aGlzLCBtZXNzYWdlLT5tZXNzYWdlTmFtZSgpKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogICAgICAgICBtX2luRGlzcGF0Y2hNZXNzYWdlTWFya2VkVG9Vc2VG
dWxseVN5bmNocm9ub3VzTW9kZUZvclRlc3RpbmcrKzsKQEAgLTEwODgsNyArMTA3Niw3IEBAIHZv
aWQgQ29ubmVjdGlvbjo6ZGlzcGF0Y2hNZXNzYWdlKHN0ZDo6dW4KICAgICAgICAgbV9pbkRpc3Bh
dGNoTWVzc2FnZU1hcmtlZFRvVXNlRnVsbHlTeW5jaHJvbm91c01vZGVGb3JUZXN0aW5nLS07CiAK
ICAgICBpZiAobV9kaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UgJiYgaXNWYWxpZCgpKQotICAgICAg
ICBtX2NsaWVudC5kaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoKnRoaXMsIG1lc3NhZ2UtPm1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSwgbWVzc2FnZS0+bWVzc2FnZU5hbWUoKSk7CisgICAgICAgIG1fY2xp
ZW50LmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZSgqdGhpcywgbWVzc2FnZS0+bWVzc2FnZU5hbWUo
KSk7CiAKICAgICBtX2RpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZSA9IG9sZERpZFJlY2VpdmVJbnZh
bGlkTWVzc2FnZTsKIH0KQEAgLTExNjgsNyArMTE1Niw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6ZGlz
cGF0Y2hJbmNvbWluZ01lc3NhZ2UKICAgICAgICAgaWYgKG1lc3NhZ2VzVG9Qcm9jZXNzIDwgbV9p
bmNvbWluZ01lc3NhZ2VzLnNpemUoKSkgewogICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1Io
SVBDLCAiJXAgLSBDb25uZWN0aW9uOjpkaXNwYXRjaEluY29taW5nTWVzc2FnZXM6IElQQyB0aHJv
dHRsaW5nIHdhcyB0cmlnZ2VyZWQgKGhhcyAlenUgcGVuZGluZyBpbmNvbWluZyBtZXNzYWdlcywg
d2lsbCBvbmx5IHByb2Nlc3MgJXp1IGJlZm9yZSB5aWVsZGluZykiLCB0aGlzLCBtX2luY29taW5n
TWVzc2FnZXMuc2l6ZSgpLCBtZXNzYWdlc1RvUHJvY2Vzcyk7CiAjaWYgUExBVEZPUk0oQ09DT0Ep
Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihJUEMsICIlcCAtIENvbm5lY3Rpb246OmRp
c3BhdGNoSW5jb21pbmdNZXNzYWdlczogZmlyc3QgSVBDIG1lc3NhZ2UgaW4gcXVldWUgaXMgJXtw
dWJsaWN9czo6JXtwdWJsaWN9cyIsIHRoaXMsIG1lc3NhZ2UtPm1lc3NhZ2VSZWNlaXZlck5hbWUo
KS50b1N0cmluZygpLmRhdGEoKSwgbWVzc2FnZS0+bWVzc2FnZU5hbWUoKS50b1N0cmluZygpLmRh
dGEoKSk7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihJUEMsICIlcCAtIENvbm5lY3Rp
b246OmRpc3BhdGNoSW5jb21pbmdNZXNzYWdlczogZmlyc3QgSVBDIG1lc3NhZ2UgaW4gcXVldWUg
aXMgJXtwdWJsaWN9cyIsIHRoaXMsIGRlc2NyaXB0aW9uKG1lc3NhZ2UtPm1lc3NhZ2VOYW1lKCkp
KTsKICNlbmRpZgogICAgICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L0Nvbm5lY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9D
b25uZWN0aW9uLmgJKHJldmlzaW9uIDI2MDc2NCkKKysrIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL0Nvbm5lY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMTA3LDcgKzEwNyw3IEBAIHB1Ymxp
YzoKICAgICBjbGFzcyBDbGllbnQgOiBwdWJsaWMgTWVzc2FnZVJlY2VpdmVyIHsKICAgICBwdWJs
aWM6CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRDbG9zZShDb25uZWN0aW9uJikgPSAwOwotICAg
ICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKENvbm5lY3Rpb24mLCBT
dHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgU3RyaW5nUmVmZXJlbmNlIG1lc3Nh
Z2VOYW1lKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3Nh
Z2UoQ29ubmVjdGlvbiYsIE1lc3NhZ2VOYW1lKSA9IDA7CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAg
ICAgIHZpcnR1YWwgfkNsaWVudCgpIHsgfQpAQCAtMTg5LDExICsxODksMTEgQEAgcHVibGljOgog
ICAgIHR5cGVkZWYgdm9pZCAoKkRpZENsb3NlT25Db25uZWN0aW9uV29ya1F1ZXVlQ2FsbGJhY2sp
KENvbm5lY3Rpb24qKTsKICAgICB2b2lkIHNldERpZENsb3NlT25Db25uZWN0aW9uV29ya1F1ZXVl
Q2FsbGJhY2soRGlkQ2xvc2VPbkNvbm5lY3Rpb25Xb3JrUXVldWVDYWxsYmFjayk7CiAKLSAgICB2
b2lkIGFkZFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcihTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJl
Y2VpdmVyTmFtZSwgV29ya1F1ZXVlJiwgV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKik7Ci0gICAg
dm9pZCByZW1vdmVXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIoU3RyaW5nUmVmZXJlbmNlIG1lc3Nh
Z2VSZWNlaXZlck5hbWUpOworICAgIHZvaWQgYWRkV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKFJl
Y2VpdmVyTmFtZSwgV29ya1F1ZXVlJiwgV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKik7CisgICAg
dm9pZCByZW1vdmVXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIoUmVjZWl2ZXJOYW1lKTsKIAotICAg
IHZvaWQgYWRkVGhyZWFkTWVzc2FnZVJlY2VpdmVyKFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVj
ZWl2ZXJOYW1lLCBUaHJlYWRNZXNzYWdlUmVjZWl2ZXIqKTsKLSAgICB2b2lkIHJlbW92ZVRocmVh
ZE1lc3NhZ2VSZWNlaXZlcihTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSk7Cisg
ICAgdm9pZCBhZGRUaHJlYWRNZXNzYWdlUmVjZWl2ZXIoUmVjZWl2ZXJOYW1lLCBUaHJlYWRNZXNz
YWdlUmVjZWl2ZXIqKTsKKyAgICB2b2lkIHJlbW92ZVRocmVhZE1lc3NhZ2VSZWNlaXZlcihSZWNl
aXZlck5hbWUpOwogCiAgICAgYm9vbCBvcGVuKCk7CiAgICAgdm9pZCBpbnZhbGlkYXRlKCk7CkBA
IC0yMzUsNyArMjM1LDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIGJvb2wgc2VuZE1lc3NhZ2Uo
c3RkOjp1bmlxdWVfcHRyPEVuY29kZXI+LCBPcHRpb25TZXQ8U2VuZE9wdGlvbj4gc2VuZE9wdGlv
bnMpOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVyPiBjcmVhdGVTeW5jTWVzc2FnZUVuY29k
ZXIoU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIFN0cmluZ1JlZmVyZW5jZSBt
ZXNzYWdlTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgdWludDY0X3QmIHN5bmNSZXF1ZXN0
SUQpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVyPiBjcmVhdGVTeW5jTWVzc2FnZUVuY29k
ZXIoTWVzc2FnZU5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIHVpbnQ2NF90JiBzeW5jUmVx
dWVzdElEKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gc2VuZFN5bmNNZXNzYWdlKHVp
bnQ2NF90IHN5bmNSZXF1ZXN0SUQsIHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVyPiwgU2Vjb25kcyB0
aW1lb3V0LCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucyk7CiAgICAg
Ym9vbCBzZW5kU3luY1JlcGx5KHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVyPik7CiAKQEAgLTI3NCw5
ICsyNzQsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplKElkZW50aWZp
ZXIpOwogICAgIHZvaWQgcGxhdGZvcm1JbnZhbGlkYXRlKCk7CiAgICAgCi0gICAgc3RkOjp1bmlx
dWVfcHRyPERlY29kZXI+IHdhaXRGb3JNZXNzYWdlKFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVj
ZWl2ZXJOYW1lLCBTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0
aW9uSUQsIFNlY29uZHMgdGltZW91dCwgT3B0aW9uU2V0PFdhaXRGb3JPcHRpb24+KTsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gd2FpdEZvck1lc3NhZ2UoTWVzc2FnZU5hbWUsIHVpbnQ2
NF90IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCwgT3B0aW9uU2V0PFdhaXRGb3JPcHRp
b24+KTsKICAgICAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gd2FpdEZvclN5bmNSZXBs
eSh1aW50NjRfdCBzeW5jUmVxdWVzdElELCBTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVy
TmFtZSwgU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lLCBTZWNvbmRzIHRpbWVvdXQsIE9wdGlv
blNldDxTZW5kU3luY09wdGlvbj4pOworICAgIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiB3YWl0
Rm9yU3luY1JlcGx5KHVpbnQ2NF90IHN5bmNSZXF1ZXN0SUQsIE1lc3NhZ2VOYW1lLCBTZWNvbmRz
IHRpbWVvdXQsIE9wdGlvblNldDxTZW5kU3luY09wdGlvbj4pOwogCiAgICAgYm9vbCBkaXNwYXRj
aE1lc3NhZ2VUb1dvcmtRdWV1ZVJlY2VpdmVyKHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiYpOwog
ICAgIGJvb2wgZGlzcGF0Y2hNZXNzYWdlVG9UaHJlYWRSZWNlaXZlcihzdGQ6OnVuaXF1ZV9wdHI8
RGVjb2Rlcj4mKTsKQEAgLTMwMCw3ICszMDAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlzcGF0
Y2hNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPik7CiAgICAgdm9pZCBkaXNwYXRjaE1l
c3NhZ2UoRGVjb2RlciYpOwogICAgIHZvaWQgZGlzcGF0Y2hTeW5jTWVzc2FnZShEZWNvZGVyJik7
Ci0gICAgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShjb25zdCBDU3RyaW5n
JiBtZXNzYWdlUmVjZWl2ZXJOYW1lU3RyaW5nLCBjb25zdCBDU3RyaW5nJiBtZXNzYWdlTmFtZVN0
cmluZyk7CisgICAgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShNZXNzYWdl
TmFtZSk7CiAgICAgdm9pZCBkaWRGYWlsVG9TZW5kU3luY01lc3NhZ2UoKTsKIAogICAgIC8vIENh
biBiZSBjYWxsZWQgb24gYW55IHRocmVhZC4KQEAgLTM0NiwxMSArMzQ2LDExIEBAIHByaXZhdGU6
CiAgICAgUmVmPFdvcmtRdWV1ZT4gbV9jb25uZWN0aW9uUXVldWU7CiAKICAgICBMb2NrIG1fd29y
a1F1ZXVlTWVzc2FnZVJlY2VpdmVyc011dGV4OwotICAgIHVzaW5nIFdvcmtRdWV1ZU1lc3NhZ2VS
ZWNlaXZlck1hcCA9IEhhc2hNYXA8U3RyaW5nUmVmZXJlbmNlLCBzdGQ6OnBhaXI8UmVmUHRyPFdv
cmtRdWV1ZT4sIFJlZlB0cjxXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXI+Pj47CisgICAgdXNpbmcg
V29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyTWFwID0gSGFzaE1hcDx1aW50OF90LCBzdGQ6OnBhaXI8
UmVmUHRyPFdvcmtRdWV1ZT4sIFJlZlB0cjxXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXI+Pj47CiAg
ICAgV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyTWFwIG1fd29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVy
czsKIAogICAgIExvY2sgbV90aHJlYWRNZXNzYWdlUmVjZWl2ZXJzTG9jazsKLSAgICB1c2luZyBU
aHJlYWRNZXNzYWdlUmVjZWl2ZXJNYXAgPSBIYXNoTWFwPFN0cmluZ1JlZmVyZW5jZSwgUmVmUHRy
PFRocmVhZE1lc3NhZ2VSZWNlaXZlcj4+OworICAgIHVzaW5nIFRocmVhZE1lc3NhZ2VSZWNlaXZl
ck1hcCA9IEhhc2hNYXA8dWludDhfdCwgUmVmUHRyPFRocmVhZE1lc3NhZ2VSZWNlaXZlcj4+Owog
ICAgIFRocmVhZE1lc3NhZ2VSZWNlaXZlck1hcCBtX3RocmVhZE1lc3NhZ2VSZWNlaXZlcnM7CiAK
ICAgICB1bnNpZ25lZCBtX2luU2VuZFN5bmNDb3VudDsKQEAgLTQ2Miw3ICs0NjIsNyBAQCBib29s
IENvbm5lY3Rpb246OnNlbmQoVCYmIG1lc3NhZ2UsIHVpbnQ2CiB7CiAgICAgQ09NUElMRV9BU1NF
UlQoIVQ6OmlzU3luYywgQXN5bmNNZXNzYWdlRXhwZWN0ZWQpOwogCi0gICAgYXV0byBlbmNvZGVy
ID0gbWFrZVVuaXF1ZTxFbmNvZGVyPihUOjpyZWNlaXZlck5hbWUoKSwgVDo6bmFtZSgpLCBkZXN0
aW5hdGlvbklEKTsKKyAgICBhdXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlPEVuY29kZXI+KFQ6Om5h
bWUoKSwgZGVzdGluYXRpb25JRCk7CiAgICAgZW5jb2Rlci0+ZW5jb2RlKG1lc3NhZ2UuYXJndW1l
bnRzKCkpOwogICAgIAogICAgIHJldHVybiBzZW5kTWVzc2FnZShXVEZNb3ZlKGVuY29kZXIpLCBz
ZW5kT3B0aW9ucyk7CkBAIC00NzcsNyArNDc3LDcgQEAgdm9pZCBDb25uZWN0aW9uOjpzZW5kV2l0
aEFzeW5jUmVwbHkoVCYmIAogewogICAgIENPTVBJTEVfQVNTRVJUKCFUOjppc1N5bmMsIEFzeW5j
TWVzc2FnZUV4cGVjdGVkKTsKIAotICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWU8RW5jb2Rl
cj4oVDo6cmVjZWl2ZXJOYW1lKCksIFQ6Om5hbWUoKSwgZGVzdGluYXRpb25JRCk7CisgICAgYXV0
byBlbmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNvZGVyPihUOjpuYW1lKCksIGRlc3RpbmF0aW9uSUQp
OwogICAgIHVpbnQ2NF90IGxpc3RlbmVySUQgPSBuZXh0QXN5bmNSZXBseUhhbmRsZXJJRCgpOwog
ICAgIGVuY29kZXItPmVuY29kZShsaXN0ZW5lcklEKTsKICAgICBlbmNvZGVyLT5lbmNvZGUobWVz
c2FnZS5hcmd1bWVudHMoKSk7CkBAIC01MTUsNyArNTE1LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUg
VD4gYm9vbCBDb25uZWN0aW9uOjpzZQogICAgIFJFTEVBU0VfQVNTRVJUKFJ1bkxvb3A6OmlzTWFp
bigpKTsKIAogICAgIHVpbnQ2NF90IHN5bmNSZXF1ZXN0SUQgPSAwOwotICAgIHN0ZDo6dW5pcXVl
X3B0cjxFbmNvZGVyPiBlbmNvZGVyID0gY3JlYXRlU3luY01lc3NhZ2VFbmNvZGVyKFQ6OnJlY2Vp
dmVyTmFtZSgpLCBUOjpuYW1lKCksIGRlc3RpbmF0aW9uSUQsIHN5bmNSZXF1ZXN0SUQpOworICAg
IHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVyPiBlbmNvZGVyID0gY3JlYXRlU3luY01lc3NhZ2VFbmNv
ZGVyKFQ6Om5hbWUoKSwgZGVzdGluYXRpb25JRCwgc3luY1JlcXVlc3RJRCk7CiAKICAgICBpZiAo
c2VuZFN5bmNPcHRpb25zLmNvbnRhaW5zKFNlbmRTeW5jT3B0aW9uOjpVc2VGdWxseVN5bmNocm9u
b3VzTW9kZUZvclRlc3RpbmcpKSB7CiAgICAgICAgIGVuY29kZXItPnNldEZ1bGx5U3luY2hyb25v
dXNNb2RlRm9yVGVzdGluZygpOwpAQCAtNTQyLDcgKzU0Miw3IEBAIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+IGJvb2wgQ29ubmVjdGlvbjo6c2UKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgQ29ubmVj
dGlvbjo6d2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRlbHkodWludDY0X3QgZGVzdGluYXRpb25J
RCwgU2Vjb25kcyB0aW1lb3V0LCBPcHRpb25TZXQ8V2FpdEZvck9wdGlvbj4gd2FpdEZvck9wdGlv
bnMpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIHN0ZDo6
dW5pcXVlX3B0cjxEZWNvZGVyPiBkZWNvZGVyID0gd2FpdEZvck1lc3NhZ2UoVDo6cmVjZWl2ZXJO
YW1lKCksIFQ6Om5hbWUoKSwgZGVzdGluYXRpb25JRCwgdGltZW91dCwgd2FpdEZvck9wdGlvbnMp
OworICAgIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiBkZWNvZGVyID0gd2FpdEZvck1lc3NhZ2Uo
VDo6bmFtZSgpLCBkZXN0aW5hdGlvbklELCB0aW1lb3V0LCB3YWl0Rm9yT3B0aW9ucyk7CiAgICAg
aWYgKCFkZWNvZGVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwCShyZXZpc2lvbiAyNjA3NjQpCisrKyBTb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjYsOSArNjYs
NiBAQCBEZWNvZGVyOjpEZWNvZGVyKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgCiAgICAgaWYgKCFk
ZWNvZGUobV9tZXNzYWdlRmxhZ3MpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIWRlY29k
ZShtX21lc3NhZ2VSZWNlaXZlck5hbWUpKQotICAgICAgICByZXR1cm47Ci0KICAgICBpZiAoIWRl
Y29kZShtX21lc3NhZ2VOYW1lKSkKICAgICAgICAgcmV0dXJuOwogCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvRGVjb2Rlci5oCShyZXZpc2lvbiAyNjA3NjQpCisrKyBTb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAK
IAogI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXIuaCIKICNpbmNsdWRlICJBdHRhY2htZW50LmgiCisj
aW5jbHVkZSAiTWVzc2FnZU5hbWVzLmgiCiAjaW5jbHVkZSAiU3RyaW5nUmVmZXJlbmNlLmgiCiAj
aW5jbHVkZSA8d3RmL0VudW1UcmFpdHMuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC01
MSw4ICs1Miw4IEBAIHB1YmxpYzoKICAgICBEZWNvZGVyKGNvbnN0IERlY29kZXImKSA9IGRlbGV0
ZTsKICAgICBEZWNvZGVyKERlY29kZXImJikgPSBkZWxldGU7CiAKLSAgICBTdHJpbmdSZWZlcmVu
Y2UgbWVzc2FnZVJlY2VpdmVyTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWVzc2FnZVJlY2VpdmVy
TmFtZTsgfQotICAgIFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZSgpIGNvbnN0IHsgcmV0dXJu
IG1fbWVzc2FnZU5hbWU7IH0KKyAgICBSZWNlaXZlck5hbWUgbWVzc2FnZVJlY2VpdmVyTmFtZSgp
IGNvbnN0IHsgcmV0dXJuIHJlY2VpdmVyTmFtZShtX21lc3NhZ2VOYW1lKTsgfQorICAgIE1lc3Nh
Z2VOYW1lIG1lc3NhZ2VOYW1lKCkgY29uc3QgeyByZXR1cm4gbV9tZXNzYWdlTmFtZTsgfQogICAg
IHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQoKSBjb25zdCB7IHJldHVybiBtX2Rlc3RpbmF0aW9uSUQ7
IH0KIAogICAgIGJvb2wgaXNTeW5jTWVzc2FnZSgpIGNvbnN0OwpAQCAtMTExLDcgKzExMiw3IEBA
IHB1YmxpYzoKICAgICAgICAgdHlwZW5hbWUgc3RkOjp1bmRlcmx5aW5nX3R5cGU8RT46OnR5cGUg
dmFsdWU7CiAgICAgICAgIGlmICghZGVjb2RlKHZhbHVlKSkKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAgICAgaWYgKCFpc1ZhbGlkRW51bTxFPih2YWx1ZSkpCisgICAgICAgIGlmICgh
V1RGOjppc1ZhbGlkRW51bTxFPih2YWx1ZSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICAgICAgZSA9IHN0YXRpY19jYXN0PEU+KHZhbHVlKTsKQEAgLTEyMyw3ICsxMjQsNyBAQCBw
dWJsaWM6CiAgICAgewogICAgICAgICBPcHRpb25hbDx0eXBlbmFtZSBzdGQ6OnVuZGVybHlpbmdf
dHlwZTxFPjo6dHlwZT4gdmFsdWU7CiAgICAgICAgICp0aGlzID4+IHZhbHVlOwotICAgICAgICBp
ZiAodmFsdWUgJiYgaXNWYWxpZEVudW08RT4oKnZhbHVlKSkKKyAgICAgICAgaWYgKHZhbHVlICYm
IFdURjo6aXNWYWxpZEVudW08RT4oKnZhbHVlKSkKICAgICAgICAgICAgIG9wdGlvbmFsID0gc3Rh
dGljX2Nhc3Q8RT4oKnZhbHVlKTsKICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0KQEAgLTIw
Myw4ICsyMDQsNyBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxBdHRhY2htZW50PiBtX2F0dGFjaG1l
bnRzOwogCiAgICAgdWludDhfdCBtX21lc3NhZ2VGbGFnczsKLSAgICBTdHJpbmdSZWZlcmVuY2Ug
bV9tZXNzYWdlUmVjZWl2ZXJOYW1lOwotICAgIFN0cmluZ1JlZmVyZW5jZSBtX21lc3NhZ2VOYW1l
OworICAgIE1lc3NhZ2VOYW1lIG1fbWVzc2FnZU5hbWU7CiAKICAgICB1aW50NjRfdCBtX2Rlc3Rp
bmF0aW9uSUQ7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0VuY29kZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0VuY29kZXIuY3BwCShy
ZXZpc2lvbiAyNjA3NjQpCisrKyBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9FbmNvZGVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNjEsOSArNjEsOCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZnJl
ZUJ1ZmZlcih2b2lkKiBhZGRyCiAjZW5kaWYKIH0KIAotRW5jb2Rlcjo6RW5jb2RlcihTdHJpbmdS
ZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1l
LCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKQotICAgIDogbV9tZXNzYWdlUmVjZWl2ZXJOYW1lKG1l
c3NhZ2VSZWNlaXZlck5hbWUpCi0gICAgLCBtX21lc3NhZ2VOYW1lKG1lc3NhZ2VOYW1lKQorRW5j
b2Rlcjo6RW5jb2RlcihNZXNzYWdlTmFtZSBtZXNzYWdlTmFtZSwgdWludDY0X3QgZGVzdGluYXRp
b25JRCkKKyAgICA6IG1fbWVzc2FnZU5hbWUobWVzc2FnZU5hbWUpCiAgICAgLCBtX2Rlc3RpbmF0
aW9uSUQoZGVzdGluYXRpb25JRCkKICAgICAsIG1fYnVmZmVyKG1faW5saW5lQnVmZmVyKQogICAg
ICwgbV9idWZmZXJQb2ludGVyKG1faW5saW5lQnVmZmVyKQpAQCAtMTY4LDEwICsxNjcsNyBAQCB2
b2lkIEVuY29kZXI6OnJlc2VydmUoc2l6ZV90IHNpemUpCiAKIHZvaWQgRW5jb2Rlcjo6ZW5jb2Rl
SGVhZGVyKCkKIHsKLSAgICBBU1NFUlQoIW1fbWVzc2FnZVJlY2VpdmVyTmFtZS5pc0VtcHR5KCkp
OwotCiAgICAgKnRoaXMgPDwgZGVmYXVsdE1lc3NhZ2VGbGFnczsKLSAgICAqdGhpcyA8PCBtX21l
c3NhZ2VSZWNlaXZlck5hbWU7CiAgICAgKnRoaXMgPDwgbV9tZXNzYWdlTmFtZTsKICAgICAqdGhp
cyA8PCBtX2Rlc3RpbmF0aW9uSUQ7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9FbmNvZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRW5j
b2Rlci5oCShyZXZpc2lvbiAyNjA3NjQpCisrKyBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9F
bmNvZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkFy
Z3VtZW50Q29kZXIuaCIKICNpbmNsdWRlICJBdHRhY2htZW50LmgiCisjaW5jbHVkZSAiTWVzc2Fn
ZU5hbWVzLmgiCiAjaW5jbHVkZSAiU3RyaW5nUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSA8d3RmL0Vu
dW1UcmFpdHMuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC0zNSwxNSArMzYsMTYgQEAg
bmFtZXNwYWNlIElQQyB7CiAKIGNsYXNzIERhdGFSZWZlcmVuY2U7CiBlbnVtIGNsYXNzIFNob3Vs
ZERpc3BhdGNoV2hlbldhaXRpbmdGb3JTeW5jUmVwbHk7CitlbnVtIGNsYXNzIE1lc3NhZ2VOYW1l
IDogdWludDE2X3Q7CiAKIGNsYXNzIEVuY29kZXIgZmluYWwgewogICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgotICAgIEVuY29kZXIoU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VS
ZWNlaXZlck5hbWUsIFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZSwgdWludDY0X3QgZGVzdGlu
YXRpb25JRCk7CisgICAgRW5jb2RlcihNZXNzYWdlTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25J
RCk7CiAgICAgfkVuY29kZXIoKTsKIAotICAgIFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2
ZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gbV9tZXNzYWdlUmVjZWl2ZXJOYW1lOyB9Ci0gICAgU3Ry
aW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lKCkgY29uc3QgeyByZXR1cm4gbV9tZXNzYWdlTmFtZTsg
fQorICAgIFJlY2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1lKCkgY29uc3QgeyByZXR1cm4g
cmVjZWl2ZXJOYW1lKG1fbWVzc2FnZU5hbWUpOyB9CisgICAgTWVzc2FnZU5hbWUgbWVzc2FnZU5h
bWUoKSBjb25zdCB7IHJldHVybiBtX21lc3NhZ2VOYW1lOyB9CiAgICAgdWludDY0X3QgZGVzdGlu
YXRpb25JRCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVzdGluYXRpb25JRDsgfQogCiAgICAgdm9pZCBz
ZXRJc1N5bmNNZXNzYWdlKGJvb2wpOwpAQCAtMTEyLDE0ICsxMTQsMTMgQEAgcHJpdmF0ZToKICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBFPgogICAgIGF1dG8gZW5jb2RlKEUgdmFsdWUpIC0+IHN0ZDo6
ZW5hYmxlX2lmX3Q8c3RkOjppc19lbnVtPEU+Ojp2YWx1ZT4KICAgICB7Ci0gICAgICAgIEFTU0VS
VChpc1ZhbGlkRW51bTxFPihzdGF0aWNfY2FzdDx0eXBlbmFtZSBzdGQ6OnVuZGVybHlpbmdfdHlw
ZTxFPjo6dHlwZT4odmFsdWUpKSk7CisgICAgICAgIEFTU0VSVChXVEY6OmlzVmFsaWRFbnVtPEU+
KHN0YXRpY19jYXN0PHR5cGVuYW1lIHN0ZDo6dW5kZXJseWluZ190eXBlPEU+Ojp0eXBlPih2YWx1
ZSkpKTsKICAgICAgICAgZW5jb2RlKHN0YXRpY19jYXN0PHR5cGVuYW1lIHN0ZDo6dW5kZXJseWlu
Z190eXBlPEU+Ojp0eXBlPih2YWx1ZSkpOwogICAgIH0KIAogICAgIHZvaWQgZW5jb2RlSGVhZGVy
KCk7CiAKLSAgICBTdHJpbmdSZWZlcmVuY2UgbV9tZXNzYWdlUmVjZWl2ZXJOYW1lOwotICAgIFN0
cmluZ1JlZmVyZW5jZSBtX21lc3NhZ2VOYW1lOworICAgIE1lc3NhZ2VOYW1lIG1fbWVzc2FnZU5h
bWU7CiAgICAgdWludDY0X3QgbV9kZXN0aW5hdGlvbklEOwogCiAgICAgdWludDhfdCBtX2lubGlu
ZUJ1ZmZlcls1MTJdOwpJbmRleDogU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVz
c2FnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1l
c3NhZ2UuaAkocmV2aXNpb24gMjYwNzY0KQorKysgU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
SGFuZGxlTWVzc2FnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzYsNyArMTc2LDcgQEAgdm9pZCBo
YW5kbGVNZXNzYWdlQXN5bmMoQ29ubmVjdGlvbiYgY29ubgogICAgIH0KIAogICAgIHR5cGVuYW1l
IFQ6OkFzeW5jUmVwbHkgY29tcGxldGlvbkhhbmRsZXIgPSBbbGlzdGVuZXJJRCA9ICpsaXN0ZW5l
cklELCBjb25uZWN0aW9uID0gbWFrZVJlZihjb25uZWN0aW9uKV0gKGF1dG8mJi4uLiBhcmdzKSBt
dXRhYmxlIHsKLSAgICAgICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNvZGVyPigiQXN5
bmNSZXBseSIsIFQ6OmFzeW5jTWVzc2FnZVJlcGx5TmFtZSgpLCAwKTsKKyAgICAgICAgYXV0byBl
bmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNvZGVyPihUOjphc3luY01lc3NhZ2VSZXBseU5hbWUoKSwg
MCk7CiAgICAgICAgICplbmNvZGVyIDw8IGxpc3RlbmVySUQ7CiAgICAgICAgIFQ6OnNlbmQoV1RG
TW92ZShlbmNvZGVyKSwgV1RGTW92ZShjb25uZWN0aW9uKSwgYXJncy4uLik7CiAgICAgfTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VSZWNlaXZlck1hcC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVyTWFw
LmNwcAkocmV2aXNpb24gMjYwNzY0KQorKysgU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVz
c2FnZVJlY2VpdmVyTWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksMzkgKzM5LDM5IEBAIE1l
c3NhZ2VSZWNlaXZlck1hcDo6fk1lc3NhZ2VSZWNlaXZlck1hcCgKIHsKIH0KIAotdm9pZCBNZXNz
YWdlUmVjZWl2ZXJNYXA6OmFkZE1lc3NhZ2VSZWNlaXZlcihTdHJpbmdSZWZlcmVuY2UgbWVzc2Fn
ZVJlY2VpdmVyTmFtZSwgTWVzc2FnZVJlY2VpdmVyJiBtZXNzYWdlUmVjZWl2ZXIpCit2b2lkIE1l
c3NhZ2VSZWNlaXZlck1hcDo6YWRkTWVzc2FnZVJlY2VpdmVyKFJlY2VpdmVyTmFtZSBtZXNzYWdl
UmVjZWl2ZXJOYW1lLCBNZXNzYWdlUmVjZWl2ZXImIG1lc3NhZ2VSZWNlaXZlcikKIHsKLSAgICBB
U1NFUlQoIW1fZ2xvYmFsTWVzc2FnZVJlY2VpdmVycy5jb250YWlucyhtZXNzYWdlUmVjZWl2ZXJO
YW1lKSk7CisgICAgQVNTRVJUKCFtX2dsb2JhbE1lc3NhZ2VSZWNlaXZlcnMuY29udGFpbnMoc3Rh
dGljX2Nhc3Q8dWludDhfdD4obWVzc2FnZVJlY2VpdmVyTmFtZSkpKTsKIAogICAgIG1lc3NhZ2VS
ZWNlaXZlci53aWxsQmVBZGRlZFRvTWVzc2FnZVJlY2VpdmVyTWFwKCk7Ci0gICAgbV9nbG9iYWxN
ZXNzYWdlUmVjZWl2ZXJzLnNldChtZXNzYWdlUmVjZWl2ZXJOYW1lLCAmbWVzc2FnZVJlY2VpdmVy
KTsKKyAgICBtX2dsb2JhbE1lc3NhZ2VSZWNlaXZlcnMuc2V0KHN0YXRpY19jYXN0PHVpbnQ4X3Q+
KG1lc3NhZ2VSZWNlaXZlck5hbWUpLCAmbWVzc2FnZVJlY2VpdmVyKTsKIH0KIAotdm9pZCBNZXNz
YWdlUmVjZWl2ZXJNYXA6OmFkZE1lc3NhZ2VSZWNlaXZlcihTdHJpbmdSZWZlcmVuY2UgbWVzc2Fn
ZVJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgTWVzc2FnZVJlY2VpdmVyJiBt
ZXNzYWdlUmVjZWl2ZXIpCit2b2lkIE1lc3NhZ2VSZWNlaXZlck1hcDo6YWRkTWVzc2FnZVJlY2Vp
dmVyKFJlY2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlv
bklELCBNZXNzYWdlUmVjZWl2ZXImIG1lc3NhZ2VSZWNlaXZlcikKIHsKICAgICBBU1NFUlQoZGVz
dGluYXRpb25JRCk7Ci0gICAgQVNTRVJUKCFtX21lc3NhZ2VSZWNlaXZlcnMuY29udGFpbnMoc3Rk
OjptYWtlX3BhaXIobWVzc2FnZVJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRCkpKTsKLSAgICBB
U1NFUlQoIW1fZ2xvYmFsTWVzc2FnZVJlY2VpdmVycy5jb250YWlucyhtZXNzYWdlUmVjZWl2ZXJO
YW1lKSk7CisgICAgQVNTRVJUKCFtX21lc3NhZ2VSZWNlaXZlcnMuY29udGFpbnMoc3RkOjptYWtl
X3BhaXIoc3RhdGljX2Nhc3Q8dWludDhfdD4obWVzc2FnZVJlY2VpdmVyTmFtZSksIGRlc3RpbmF0
aW9uSUQpKSk7CisgICAgQVNTRVJUKCFtX2dsb2JhbE1lc3NhZ2VSZWNlaXZlcnMuY29udGFpbnMo
c3RhdGljX2Nhc3Q8dWludDhfdD4obWVzc2FnZVJlY2VpdmVyTmFtZSkpKTsKIAogICAgIG1lc3Nh
Z2VSZWNlaXZlci53aWxsQmVBZGRlZFRvTWVzc2FnZVJlY2VpdmVyTWFwKCk7Ci0gICAgbV9tZXNz
YWdlUmVjZWl2ZXJzLnNldChzdGQ6Om1ha2VfcGFpcihtZXNzYWdlUmVjZWl2ZXJOYW1lLCBkZXN0
aW5hdGlvbklEKSwgJm1lc3NhZ2VSZWNlaXZlcik7CisgICAgbV9tZXNzYWdlUmVjZWl2ZXJzLnNl
dChzdGQ6Om1ha2VfcGFpcihzdGF0aWNfY2FzdDx1aW50OF90PihtZXNzYWdlUmVjZWl2ZXJOYW1l
KSwgZGVzdGluYXRpb25JRCksICZtZXNzYWdlUmVjZWl2ZXIpOwogfQogCi12b2lkIE1lc3NhZ2VS
ZWNlaXZlck1hcDo6cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdl
UmVjZWl2ZXJOYW1lKQordm9pZCBNZXNzYWdlUmVjZWl2ZXJNYXA6OnJlbW92ZU1lc3NhZ2VSZWNl
aXZlcihSZWNlaXZlck5hbWUgbWVzc2FnZVJlY2VpdmVyTmFtZSkKIHsKLSAgICBBU1NFUlQobV9n
bG9iYWxNZXNzYWdlUmVjZWl2ZXJzLmNvbnRhaW5zKG1lc3NhZ2VSZWNlaXZlck5hbWUpKTsKKyAg
ICBBU1NFUlQobV9nbG9iYWxNZXNzYWdlUmVjZWl2ZXJzLmNvbnRhaW5zKHN0YXRpY19jYXN0PHVp
bnQ4X3Q+KG1lc3NhZ2VSZWNlaXZlck5hbWUpKSk7CiAKLSAgICBhdXRvIGl0ID0gbV9nbG9iYWxN
ZXNzYWdlUmVjZWl2ZXJzLmZpbmQobWVzc2FnZVJlY2VpdmVyTmFtZSk7CisgICAgYXV0byBpdCA9
IG1fZ2xvYmFsTWVzc2FnZVJlY2VpdmVycy5maW5kKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KG1lc3Nh
Z2VSZWNlaXZlck5hbWUpKTsKICAgICBpdC0+dmFsdWUtPndpbGxCZVJlbW92ZWRGcm9tTWVzc2Fn
ZVJlY2VpdmVyTWFwKCk7CiAKICAgICBtX2dsb2JhbE1lc3NhZ2VSZWNlaXZlcnMucmVtb3ZlKGl0
KTsKIH0KIAotdm9pZCBNZXNzYWdlUmVjZWl2ZXJNYXA6OnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihT
dHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25J
RCkKK3ZvaWQgTWVzc2FnZVJlY2VpdmVyTWFwOjpyZW1vdmVNZXNzYWdlUmVjZWl2ZXIoUmVjZWl2
ZXJOYW1lIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpCiB7Ci0g
ICAgQVNTRVJUKG1fbWVzc2FnZVJlY2VpdmVycy5jb250YWlucyhzdGQ6Om1ha2VfcGFpcihtZXNz
YWdlUmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklEKSkpOworICAgIEFTU0VSVChtX21lc3NhZ2VS
ZWNlaXZlcnMuY29udGFpbnMoc3RkOjptYWtlX3BhaXIoc3RhdGljX2Nhc3Q8dWludDhfdD4obWVz
c2FnZVJlY2VpdmVyTmFtZSksIGRlc3RpbmF0aW9uSUQpKSk7CiAKLSAgICBhdXRvIGl0ID0gbV9t
ZXNzYWdlUmVjZWl2ZXJzLmZpbmQoc3RkOjptYWtlX3BhaXIobWVzc2FnZVJlY2VpdmVyTmFtZSwg
ZGVzdGluYXRpb25JRCkpOworICAgIGF1dG8gaXQgPSBtX21lc3NhZ2VSZWNlaXZlcnMuZmluZChz
dGQ6Om1ha2VfcGFpcihzdGF0aWNfY2FzdDx1aW50OF90PihtZXNzYWdlUmVjZWl2ZXJOYW1lKSwg
ZGVzdGluYXRpb25JRCkpOwogICAgIGl0LT52YWx1ZS0+d2lsbEJlUmVtb3ZlZEZyb21NZXNzYWdl
UmVjZWl2ZXJNYXAoKTsKIAogICAgIG1fbWVzc2FnZVJlY2VpdmVycy5yZW1vdmUoaXQpOwpAQCAt
NzksMjMgKzc5LDIzIEBAIHZvaWQgTWVzc2FnZVJlY2VpdmVyTWFwOjpyZW1vdmVNZXNzYWdlUmUK
IAogdm9pZCBNZXNzYWdlUmVjZWl2ZXJNYXA6OnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdl
UmVjZWl2ZXImIG1lc3NhZ2VSZWNlaXZlcikKIHsKLSAgICBWZWN0b3I8U3RyaW5nUmVmZXJlbmNl
PiBnbG9iYWxSZWNlaXZlcnNUb1JlbW92ZTsKKyAgICBWZWN0b3I8UmVjZWl2ZXJOYW1lPiBnbG9i
YWxSZWNlaXZlcnNUb1JlbW92ZTsKICAgICBmb3IgKGF1dG8mIFtuYW1lLCByZWNlaXZlcl0gOiBt
X2dsb2JhbE1lc3NhZ2VSZWNlaXZlcnMpIHsKICAgICAgICAgaWYgKHJlY2VpdmVyID09ICZtZXNz
YWdlUmVjZWl2ZXIpCi0gICAgICAgICAgICBnbG9iYWxSZWNlaXZlcnNUb1JlbW92ZS5hcHBlbmQo
bmFtZSk7CisgICAgICAgICAgICBnbG9iYWxSZWNlaXZlcnNUb1JlbW92ZS5hcHBlbmQoc3RhdGlj
X2Nhc3Q8UmVjZWl2ZXJOYW1lPihuYW1lKSk7CiAgICAgfQogCiAgICAgZm9yIChhdXRvJiBnbG9i
YWxSZWNlaXZlclRvUmVtb3ZlIDogZ2xvYmFsUmVjZWl2ZXJzVG9SZW1vdmUpCiAgICAgICAgIHJl
bW92ZU1lc3NhZ2VSZWNlaXZlcihnbG9iYWxSZWNlaXZlclRvUmVtb3ZlKTsKIAotICAgIFZlY3Rv
cjxzdGQ6OnBhaXI8U3RyaW5nUmVmZXJlbmNlLCB1aW50NjRfdD4+IHJlY2VpdmVyc1RvUmVtb3Zl
OworICAgIFZlY3RvcjxzdGQ6OnBhaXI8dWludDhfdCwgdWludDY0X3Q+PiByZWNlaXZlcnNUb1Jl
bW92ZTsKICAgICBmb3IgKGF1dG8mIFtuYW1lQW5kRGVzdGluYXRpb25JRCwgcmVjZWl2ZXJdIDog
bV9tZXNzYWdlUmVjZWl2ZXJzKSB7CiAgICAgICAgIGlmIChyZWNlaXZlciA9PSAmbWVzc2FnZVJl
Y2VpdmVyKQotICAgICAgICAgICAgcmVjZWl2ZXJzVG9SZW1vdmUuYXBwZW5kKHN0ZDo6bWFrZV9w
YWlyKG5hbWVBbmREZXN0aW5hdGlvbklELmZpcnN0LCBuYW1lQW5kRGVzdGluYXRpb25JRC5zZWNv
bmQpKTsKKyAgICAgICAgICAgIHJlY2VpdmVyc1RvUmVtb3ZlLmFwcGVuZChzdGQ6Om1ha2VfcGFp
cihzdGF0aWNfY2FzdDx1aW50OF90PihuYW1lQW5kRGVzdGluYXRpb25JRC5maXJzdCksIG5hbWVB
bmREZXN0aW5hdGlvbklELnNlY29uZCkpOwogICAgIH0KIAogICAgIGZvciAoYXV0byYgW25hbWUs
IGRlc3RpbmF0aW9uSURdIDogcmVjZWl2ZXJzVG9SZW1vdmUpCi0gICAgICAgIHJlbW92ZU1lc3Nh
Z2VSZWNlaXZlcihuYW1lLCBkZXN0aW5hdGlvbklEKTsKKyAgICAgICAgcmVtb3ZlTWVzc2FnZVJl
Y2VpdmVyKHN0YXRpY19jYXN0PFJlY2VpdmVyTmFtZT4obmFtZSksIGRlc3RpbmF0aW9uSUQpOwog
fQogCiB2b2lkIE1lc3NhZ2VSZWNlaXZlck1hcDo6aW52YWxpZGF0ZSgpCkBAIC0xMTIsMTQgKzEx
MiwxNCBAQCB2b2lkIE1lc3NhZ2VSZWNlaXZlck1hcDo6aW52YWxpZGF0ZSgpCiAKIGJvb2wgTWVz
c2FnZVJlY2VpdmVyTWFwOjpkaXNwYXRjaE1lc3NhZ2UoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwg
RGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBpZiAoTWVzc2FnZVJlY2VpdmVyKiBtZXNzYWdlUmVj
ZWl2ZXIgPSBtX2dsb2JhbE1lc3NhZ2VSZWNlaXZlcnMuZ2V0KGRlY29kZXIubWVzc2FnZVJlY2Vp
dmVyTmFtZSgpKSkgeworICAgIGlmIChNZXNzYWdlUmVjZWl2ZXIqIG1lc3NhZ2VSZWNlaXZlciA9
IG1fZ2xvYmFsTWVzc2FnZVJlY2VpdmVycy5nZXQoc3RhdGljX2Nhc3Q8dWludDhfdD4oZGVjb2Rl
ci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkpKSkgewogICAgICAgICBBU1NFUlQoIWRlY29kZXIuZGVz
dGluYXRpb25JRCgpKTsKIAogICAgICAgICBtZXNzYWdlUmVjZWl2ZXItPmRpZFJlY2VpdmVNZXNz
YWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAK
LSAgICBpZiAoTWVzc2FnZVJlY2VpdmVyKiBtZXNzYWdlUmVjZWl2ZXIgPSBtX21lc3NhZ2VSZWNl
aXZlcnMuZ2V0KHN0ZDo6bWFrZV9wYWlyKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBk
ZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSkpKSB7CisgICAgaWYgKE1lc3NhZ2VSZWNlaXZlciogbWVz
c2FnZVJlY2VpdmVyID0gbV9tZXNzYWdlUmVjZWl2ZXJzLmdldChzdGQ6Om1ha2VfcGFpcihzdGF0
aWNfY2FzdDx1aW50OF90PihkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSksIGRlY29kZXIu
ZGVzdGluYXRpb25JRCgpKSkpIHsKICAgICAgICAgbWVzc2FnZVJlY2VpdmVyLT5kaWRSZWNlaXZl
TWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQpAQCAtMTI5LDE0ICsxMjksMTQgQEAgYm9vbCBNZXNzYWdlUmVjZWl2ZXJNYXA6OmRpc3BhdGNo
TWVzc2FnZQogCiBib29sIE1lc3NhZ2VSZWNlaXZlck1hcDo6ZGlzcGF0Y2hTeW5jTWVzc2FnZShD
b25uZWN0aW9uJiBjb25uZWN0aW9uLCBEZWNvZGVyJiBkZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8
RW5jb2Rlcj4mIHJlcGx5RW5jb2RlcikKIHsKLSAgICBpZiAoTWVzc2FnZVJlY2VpdmVyKiBtZXNz
YWdlUmVjZWl2ZXIgPSBtX2dsb2JhbE1lc3NhZ2VSZWNlaXZlcnMuZ2V0KGRlY29kZXIubWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpKSkgeworICAgIGlmIChNZXNzYWdlUmVjZWl2ZXIqIG1lc3NhZ2VSZWNl
aXZlciA9IG1fZ2xvYmFsTWVzc2FnZVJlY2VpdmVycy5nZXQoc3RhdGljX2Nhc3Q8dWludDhfdD4o
ZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkpKSkgewogICAgICAgICBBU1NFUlQoIWRlY29k
ZXIuZGVzdGluYXRpb25JRCgpKTsKIAogICAgICAgICBtZXNzYWdlUmVjZWl2ZXItPmRpZFJlY2Vp
dmVTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIpOwogICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBpZiAoTWVzc2FnZVJlY2VpdmVyKiBtZXNzYWdl
UmVjZWl2ZXIgPSBtX21lc3NhZ2VSZWNlaXZlcnMuZ2V0KHN0ZDo6bWFrZV9wYWlyKGRlY29kZXIu
bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSkpKSB7CisgICAg
aWYgKE1lc3NhZ2VSZWNlaXZlciogbWVzc2FnZVJlY2VpdmVyID0gbV9tZXNzYWdlUmVjZWl2ZXJz
LmdldChzdGQ6Om1ha2VfcGFpcihzdGF0aWNfY2FzdDx1aW50OF90PihkZWNvZGVyLm1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSksIGRlY29kZXIuZGVzdGluYXRpb25JRCgpKSkpIHsKICAgICAgICAgbWVz
c2FnZVJlY2VpdmVyLT5kaWRSZWNlaXZlU3luY01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlciwg
cmVwbHlFbmNvZGVyKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpJbmRleDogU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVyTWFwLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVyTWFwLmgJKHJldmlzaW9u
IDI2MDc2NCkKKysrIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VSZWNlaXZlck1h
cC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw4ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBNZXNzYWdlUmVjZWl2ZXJNYXBfaAotI2Rl
ZmluZSBNZXNzYWdlUmVjZWl2ZXJNYXBfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJTdHJp
bmdSZWZlcmVuY2UuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAtMzYsMTcgKzM1LDE4
IEBAIGNsYXNzIENvbm5lY3Rpb247CiBjbGFzcyBFbmNvZGVyOwogY2xhc3MgRGVjb2RlcjsKIGNs
YXNzIE1lc3NhZ2VSZWNlaXZlcjsKK2VudW0gY2xhc3MgUmVjZWl2ZXJOYW1lIDogdWludDhfdDsK
IAogY2xhc3MgTWVzc2FnZVJlY2VpdmVyTWFwIHsKIHB1YmxpYzoKICAgICBNZXNzYWdlUmVjZWl2
ZXJNYXAoKTsKICAgICB+TWVzc2FnZVJlY2VpdmVyTWFwKCk7CiAKLSAgICB2b2lkIGFkZE1lc3Nh
Z2VSZWNlaXZlcihTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgTWVzc2FnZVJl
Y2VpdmVyJik7Ci0gICAgdm9pZCBhZGRNZXNzYWdlUmVjZWl2ZXIoU3RyaW5nUmVmZXJlbmNlIG1l
c3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIE1lc3NhZ2VSZWNlaXZl
ciYpOworICAgIHZvaWQgYWRkTWVzc2FnZVJlY2VpdmVyKFJlY2VpdmVyTmFtZSwgTWVzc2FnZVJl
Y2VpdmVyJik7CisgICAgdm9pZCBhZGRNZXNzYWdlUmVjZWl2ZXIoUmVjZWl2ZXJOYW1lLCB1aW50
NjRfdCBkZXN0aW5hdGlvbklELCBNZXNzYWdlUmVjZWl2ZXImKTsKIAotICAgIHZvaWQgcmVtb3Zl
TWVzc2FnZVJlY2VpdmVyKFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lKTsKLSAg
ICB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2Vp
dmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCk7CisgICAgdm9pZCByZW1vdmVNZXNzYWdl
UmVjZWl2ZXIoUmVjZWl2ZXJOYW1lKTsKKyAgICB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihS
ZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpOwogICAgIHZvaWQgcmVtb3ZlTWVz
c2FnZVJlY2VpdmVyKE1lc3NhZ2VSZWNlaXZlciYpOwogCiAgICAgdm9pZCBpbnZhbGlkYXRlKCk7
CkBAIC01NiwxMSArNTYsOSBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgLy8gTWVzc2FnZSBy
ZWNlaXZlcnMgdGhhdCBkb24ndCByZXF1aXJlIGEgZGVzdGluYXRpb24gSUQuCi0gICAgSGFzaE1h
cDxTdHJpbmdSZWZlcmVuY2UsIE1lc3NhZ2VSZWNlaXZlcio+IG1fZ2xvYmFsTWVzc2FnZVJlY2Vp
dmVyczsKKyAgICBIYXNoTWFwPHVpbnQ4X3QsIE1lc3NhZ2VSZWNlaXZlcio+IG1fZ2xvYmFsTWVz
c2FnZVJlY2VpdmVyczsKIAotICAgIEhhc2hNYXA8c3RkOjpwYWlyPFN0cmluZ1JlZmVyZW5jZSwg
dWludDY0X3Q+LCBNZXNzYWdlUmVjZWl2ZXIqPiBtX21lc3NhZ2VSZWNlaXZlcnM7CisgICAgSGFz
aE1hcDxzdGQ6OnBhaXI8dWludDhfdCwgdWludDY0X3Q+LCBNZXNzYWdlUmVjZWl2ZXIqPiBtX21l
c3NhZ2VSZWNlaXZlcnM7CiB9OwogCiB9OwotCi0jZW5kaWYgLy8gTWVzc2FnZVJlY2VpdmVyTWFw
X2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VTZW5kZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVyLmgJKHJl
dmlzaW9uIDI2MDc2NCkKKysrIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VTZW5k
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAgICAgewogICAg
ICAgICBzdGF0aWNfYXNzZXJ0KCFVOjppc1N5bmMsICJNZXNzYWdlIGlzIHN5bmMhIik7CiAKLSAg
ICAgICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNvZGVyPihVOjpyZWNlaXZlck5hbWUo
KSwgVTo6bmFtZSgpLCBkZXN0aW5hdGlvbklEKTsKKyAgICAgICAgYXV0byBlbmNvZGVyID0gbWFr
ZVVuaXF1ZTxFbmNvZGVyPihVOjpuYW1lKCksIGRlc3RpbmF0aW9uSUQpOwogICAgICAgICBlbmNv
ZGVyLT5lbmNvZGUobWVzc2FnZS5hcmd1bWVudHMoKSk7CiAgICAgICAgIAogICAgICAgICByZXR1
cm4gc2VuZE1lc3NhZ2UoV1RGTW92ZShlbmNvZGVyKSwgc2VuZE9wdGlvbnMpOwpAQCAtODgsNyAr
ODgsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBDT01QSUxFX0FTU0VSVCghVDo6aXNTeW5j
LCBBc3luY01lc3NhZ2VFeHBlY3RlZCk7CiAKLSAgICAgICAgYXV0byBlbmNvZGVyID0gbWFrZVVu
aXF1ZTxJUEM6OkVuY29kZXI+KFQ6OnJlY2VpdmVyTmFtZSgpLCBUOjpuYW1lKCksIGRlc3RpbmF0
aW9uSUQpOworICAgICAgICBhdXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlPElQQzo6RW5jb2Rlcj4o
VDo6bmFtZSgpLCBkZXN0aW5hdGlvbklEKTsKICAgICAgICAgdWludDY0X3QgbGlzdGVuZXJJRCA9
IElQQzo6bmV4dEFzeW5jUmVwbHlIYW5kbGVySUQoKTsKICAgICAgICAgZW5jb2Rlci0+ZW5jb2Rl
KGxpc3RlbmVySUQpOwogICAgICAgICBlbmNvZGVyLT5lbmNvZGUobWVzc2FnZS5hcmd1bWVudHMo
KSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9Db25uZWN0aW9uQ29j
b2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvQ29u
bmVjdGlvbkNvY29hLm1tCShyZXZpc2lvbiAyNjA4MDcpCisrKyBTb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9jb2NvYS9Db25uZWN0aW9uQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTIxNCw3
ICsyMTQsNyBAQCBib29sIENvbm5lY3Rpb246Om9wZW4oKQogICAgICAgICBtX2lzQ29ubmVjdGVk
ID0gdHJ1ZTsKICAgICAgICAgCiAgICAgICAgIC8vIFNlbmQgdGhlIGluaXRpYWxpemUgbWVzc2Fn
ZSwgd2hpY2ggY29udGFpbnMgYSBzZW5kIHJpZ2h0IGZvciB0aGUgc2VydmVyIHRvIHVzZS4KLSAg
ICAgICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNvZGVyPigiSVBDIiwgIkluaXRpYWxp
emVDb25uZWN0aW9uIiwgMCk7CisgICAgICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWU8RW5j
b2Rlcj4oTWVzc2FnZU5hbWU6OkluaXRpYWxpemVDb25uZWN0aW9uLCAwKTsKICAgICAgICAgZW5j
b2Rlci0+ZW5jb2RlKE1hY2hQb3J0KG1fcmVjZWl2ZVBvcnQsIE1BQ0hfTVNHX1RZUEVfTUFLRV9T
RU5EKSk7CiAKICAgICAgICAgaW5pdGlhbGl6ZVNlbmRTb3VyY2UoKTsKQEAgLTI3Myw3ICsyNzMs
NyBAQCBib29sIENvbm5lY3Rpb246OnNlbmRNZXNzYWdlKHN0ZDo6dW5pcXVlCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIGRlZmF1bHQ6Ci0gICAgICAgIENTdHJpbmcgbWVzc2FnZU5hbWUg
PSBtYWtlU3RyaW5nKG1lc3NhZ2UtPm1lc3NhZ2VSZWNlaXZlck5hbWUoKS5kYXRhKCksICI6OiIs
IG1lc3NhZ2UtPm1lc3NhZ2VOYW1lKCkuZGF0YSgpKS51dGY4KCk7CisgICAgICAgIENTdHJpbmcg
bWVzc2FnZU5hbWUoZGVzY3JpcHRpb24obWVzc2FnZS0+bWVzc2FnZU5hbWUoKSkpOwogICAgICAg
ICBXZWJLaXQ6OnNldENyYXNoUmVwb3J0QXBwbGljYXRpb25TcGVjaWZpY0luZm9ybWF0aW9uKChf
X2JyaWRnZSBDRlN0cmluZ1JlZilbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIlVuaGFuZGxl
ZCBlcnJvciBjb2RlICV4LCBtZXNzYWdlICclcycsIGhhc2ggJWQiLCBrciwgbWVzc2FnZU5hbWUu
ZGF0YSgpLCBtZXNzYWdlTmFtZS5oYXNoKCldKTsKICAgICAgICAgQ1JBU0hfV0lUSF9JTkZPKGty
LCBtZXNzYWdlTmFtZS5oYXNoKCkpOwogICAgIH0KQEAgLTMwOCw3ICszMDgsNyBAQCBib29sIENv
bm5lY3Rpb246OnNlbmRPdXRnb2luZ01lc3NhZ2Uoc3RkCiAgICAgfQogCiAgICAgc2l6ZV90IHNh
ZmVNZXNzYWdlU2l6ZSA9IG1lc3NhZ2VTaXplLnVuc2FmZUdldCgpOwotICAgIGF1dG8gbWVzc2Fn
ZSA9IE1hY2hNZXNzYWdlOjpjcmVhdGUoZW5jb2Rlci0+bWVzc2FnZVJlY2VpdmVyTmFtZSgpLnRv
U3RyaW5nKCksIGVuY29kZXItPm1lc3NhZ2VOYW1lKCkudG9TdHJpbmcoKSwgc2FmZU1lc3NhZ2VT
aXplKTsKKyAgICBhdXRvIG1lc3NhZ2UgPSBNYWNoTWVzc2FnZTo6Y3JlYXRlKGVuY29kZXItPm1l
c3NhZ2VOYW1lKCksIHNhZmVNZXNzYWdlU2l6ZSk7CiAgICAgaWYgKCFtZXNzYWdlKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKQEAgLTUzMiw3ICs1MzIsNyBAQCB2b2lkIENvbm5lY3Rpb246OnJl
Y2VpdmVTb3VyY2VFdmVudEhhbmRsCiAgICAgZGVjb2Rlci0+c2V0SW1wb3J0YW5jZUFzc2VydGlv
bihtYWtlVW5pcXVlPEltcG9ydGFuY2VBc3NlcnRpb24+KGhlYWRlcikpOwogI2VuZGlmCiAKLSAg
ICBpZiAoZGVjb2Rlci0+bWVzc2FnZVJlY2VpdmVyTmFtZSgpID09ICJJUEMiICYmIGRlY29kZXIt
Pm1lc3NhZ2VOYW1lKCkgPT0gIkluaXRpYWxpemVDb25uZWN0aW9uIikgeworICAgIGlmIChkZWNv
ZGVyLT5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VOYW1lOjpJbml0aWFsaXplQ29ubmVjdGlvbikg
ewogICAgICAgICBBU1NFUlQobV9pc1NlcnZlcik7CiAgICAgICAgIEFTU0VSVCghbV9pc0Nvbm5l
Y3RlZCk7CiAgICAgICAgIEFTU0VSVCghbV9zZW5kUG9ydCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9jb2NvYS9NYWNoTWVzc2FnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvTWFjaE1lc3NhZ2UuY3BwCShyZXZpc2lvbiAyNjA3
NjQpCisrKyBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9NYWNoTWVzc2FnZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM5LDE4ICszOSwxNyBAQCBzdGF0aWMgaW5saW5lIENoZWNrZWRT
aXplIHNhZmVSb3VuZE1zZyhDCiAgICAgcmV0dXJuICgodmFsdWUgKyAoYWxpZ25tZW50IC0gMSkp
IC8gYWxpZ25tZW50KSAqIGFsaWdubWVudDsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPE1hY2hNZXNz
YWdlPiBNYWNoTWVzc2FnZTo6Y3JlYXRlKENTdHJpbmcmJiBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBD
U3RyaW5nJiYgbWVzc2FnZU5hbWUsIHNpemVfdCBzaXplKQorc3RkOjp1bmlxdWVfcHRyPE1hY2hN
ZXNzYWdlPiBNYWNoTWVzc2FnZTo6Y3JlYXRlKE1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lLCBzaXpl
X3Qgc2l6ZSkKIHsKICAgICBhdXRvIGJ1ZmZlclNpemUgPSBDaGVja2VkU2l6ZShzaXplb2YoTWFj
aE1lc3NhZ2UpKSArIHNpemU7CiAgICAgaWYgKGJ1ZmZlclNpemUuaGFzT3ZlcmZsb3dlZCgpKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB2b2lkKiBtZW1vcnkgPSBXVEY6OmZhc3RaZXJv
ZWRNYWxsb2MoYnVmZmVyU2l6ZS51bnNhZmVHZXQoKSk7Ci0gICAgcmV0dXJuIHN0ZDo6dW5pcXVl
X3B0cjxNYWNoTWVzc2FnZT4geyBuZXcgKE5vdE51bGwsIG1lbW9yeSkgTWFjaE1lc3NhZ2UgeyBX
VEZNb3ZlKG1lc3NhZ2VSZWNlaXZlck5hbWUpLCBXVEZNb3ZlKG1lc3NhZ2VOYW1lKSwgc2l6ZSB9
IH07CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxNYWNoTWVzc2FnZT4geyBuZXcgKE5vdE51
bGwsIG1lbW9yeSkgTWFjaE1lc3NhZ2UgeyBtZXNzYWdlTmFtZSwgc2l6ZSB9IH07CiB9CiAKLU1h
Y2hNZXNzYWdlOjpNYWNoTWVzc2FnZShDU3RyaW5nJiYgbWVzc2FnZVJlY2VpdmVyTmFtZSwgQ1N0
cmluZyYmIG1lc3NhZ2VOYW1lLCBzaXplX3Qgc2l6ZSkKLSAgICA6IG1fbWVzc2FnZVJlY2VpdmVy
TmFtZShXVEZNb3ZlKG1lc3NhZ2VSZWNlaXZlck5hbWUpKQotICAgICwgbV9tZXNzYWdlTmFtZShX
VEZNb3ZlKG1lc3NhZ2VOYW1lKSkKK01hY2hNZXNzYWdlOjpNYWNoTWVzc2FnZShNZXNzYWdlTmFt
ZSBtZXNzYWdlTmFtZSwgc2l6ZV90IHNpemUpCisgICAgOiBtX21lc3NhZ2VOYW1lIHsgbWVzc2Fn
ZU5hbWUgfQogICAgICwgbV9zaXplIHsgc2l6ZSB9CiB7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9jb2NvYS9NYWNoTWVzc2FnZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL01hY2hNZXNzYWdlLmgJKHJldmlzaW9uIDI2MDc2NCkK
KysrIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL01hY2hNZXNzYWdlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogCisjaW5j
bHVkZSAiTWVzc2FnZU5hbWVzLmgiCiAjaW5jbHVkZSA8bWFjaC9tZXNzYWdlLmg+CiAjaW5jbHVk
ZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgpAQCAtMzcsNyAr
MzgsNyBAQCBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIE1hY2hNZXNzYWdlIHsKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPE1h
Y2hNZXNzYWdlPiBjcmVhdGUoQ1N0cmluZyYmIG1lc3NhZ2VSZWNlaXZlck5hbWUsIENTdHJpbmcm
JiBtZXNzYWdlTmFtZSwgc2l6ZV90KTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPE1hY2hN
ZXNzYWdlPiBjcmVhdGUoTWVzc2FnZU5hbWUsIHNpemVfdCk7CiAgICAgfk1hY2hNZXNzYWdlKCk7
CiAKICAgICBzdGF0aWMgQ2hlY2tlZFNpemUgbWVzc2FnZVNpemUoc2l6ZV90IGJvZHlTaXplLCBz
aXplX3QgcG9ydERlc2NyaXB0b3JDb3VudCwgc2l6ZV90IG1lbW9yeURlc2NyaXB0b3JDb3VudCk7
CkBAIC00NywxNCArNDgsMTMgQEAgcHVibGljOgogCiAgICAgdm9pZCBsZWFrRGVzY3JpcHRvcnMo
KTsKIAotICAgIGNvbnN0IENTdHJpbmcmIG1lc3NhZ2VSZWNlaXZlck5hbWUoKSBjb25zdCB7IHJl
dHVybiBtX21lc3NhZ2VSZWNlaXZlck5hbWU7IH0KLSAgICBjb25zdCBDU3RyaW5nJiBtZXNzYWdl
TmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWVzc2FnZU5hbWU7IH0KKyAgICBSZWNlaXZlck5hbWUg
bWVzc2FnZVJlY2VpdmVyTmFtZSgpIGNvbnN0IHsgcmV0dXJuIHJlY2VpdmVyTmFtZShtX21lc3Nh
Z2VOYW1lKTsgfQorICAgIE1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lKCkgY29uc3QgeyByZXR1cm4g
bV9tZXNzYWdlTmFtZTsgfQogCiBwcml2YXRlOgotICAgIE1hY2hNZXNzYWdlKENTdHJpbmcmJiBt
ZXNzYWdlUmVjZWl2ZXJOYW1lLCBDU3RyaW5nJiYgbWVzc2FnZU5hbWUsIHNpemVfdCk7CisgICAg
TWFjaE1lc3NhZ2UoTWVzc2FnZU5hbWUsIHNpemVfdCk7CiAKLSAgICBDU3RyaW5nIG1fbWVzc2Fn
ZVJlY2VpdmVyTmFtZTsKLSAgICBDU3RyaW5nIG1fbWVzc2FnZU5hbWU7CisgICAgTWVzc2FnZU5h
bWUgbV9tZXNzYWdlTmFtZTsKICAgICBzaXplX3QgbV9zaXplOwogICAgIGJvb2wgbV9zaG91bGRG
cmVlRGVzY3JpcHRvcnMgeyB0cnVlIH07CiAgICAgbWFjaF9tc2dfaGVhZGVyX3QgbV9tZXNzYWdl
SGVhZGVyW107CkluZGV4OiBTb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nv
bm5lY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9X
ZWJQcm9jZXNzQ29ubmVjdGlvbi5jcHAJKHJldmlzaW9uIDI2MDc2NCkKKysrIFNvdXJjZS9XZWJL
aXQvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTIwNSw3ICsyMDUsNyBAQCB2b2lkIFdlYlByb2Nlc3NDb25uZWN0aW9uOjpkZXN0cm95UGx1
Z2luCiAgICAgZGVzdHJveVBsdWdpbkNvbnRyb2xsZXJQcm94eShwbHVnaW5Db250cm9sbGVyUHJv
eHkpOwogfQogCi12b2lkIFdlYlByb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlSW52YWxpZE1l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpTdHJpbmdSZWZlcmVuY2UsIElQQzo6U3RyaW5n
UmVmZXJlbmNlKQordm9pZCBXZWJQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZUludmFsaWRN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZU5hbWUpCiB7CiAgICAgLy8gRklY
TUU6IEltcGxlbWVudC4KIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9XZWJQ
cm9jZXNzQ29ubmVjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUGx1Z2luUHJv
Y2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5oCShyZXZpc2lvbiAyNjA3NjQpCisrKyBTb3VyY2Uv
V2ViS2l0L1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uaAkod29ya2luZyBjb3B5
KQpAQCAtNjQsNyArNjQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRS
ZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1
bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZENsb3NlKElQ
Qzo6Q29ubmVjdGlvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZl
ck5hbWUsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lKSBvdmVycmlkZTsKKyAgICB2
b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3Nh
Z2VOYW1lKSBvdmVycmlkZTsKIAogICAgIC8vIE1lc3NhZ2UgaGFuZGxlcnMuCiAgICAgdm9pZCBk
aWRSZWNlaXZlV2ViUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQ
Qzo6RGVjb2RlciYpOwpJbmRleDogU291cmNlL1dlYktpdC9TY3JpcHRzL01ha2VmaWxlCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy9NYWtlZmlsZQkocmV2aXNpb24gMjYwNzY0
KQorKysgU291cmNlL1dlYktpdC9TY3JpcHRzL01ha2VmaWxlCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsMiBAQAogYWxsOgotCXB5dGhvbiAuL2dlbmVyYXRlLW1lc3NhZ2UtcmVjZWl2ZXIucHkg
d2Via2l0L3Rlc3Qtc3VwZXJjbGFzcy1tZXNzYWdlcy5pbiAtLWltcGxlbWVudGF0aW9uIHdlYmtp
dC9NZXNzYWdlUmVjZWl2ZXJTdXBlcmNsYXNzLWV4cGVjdGVkLmNwcCAtLWhlYWRlciB3ZWJraXQv
TWVzc2FnZXNTdXBlcmNsYXNzLWV4cGVjdGVkLmggLS1yZXBseS1oZWFkZXIgd2Via2l0L01lc3Nh
Z2VzUmVwbGllc1N1cGVyY2xhc3NSZXBsaWVzLWV4cGVjdGVkLmgKLQlweXRob24gLi9nZW5lcmF0
ZS1tZXNzYWdlLXJlY2VpdmVyLnB5IHdlYmtpdC90ZXN0LWxlZ2FjeS1tZXNzYWdlcy5pbiAtLWlt
cGxlbWVudGF0aW9uIHdlYmtpdC9MZWdhY3lNZXNzYWdlUmVjZWl2ZXItZXhwZWN0ZWQuY3BwIC0t
aGVhZGVyIHdlYmtpdC9MZWdhY3lNZXNzYWdlcy1leHBlY3RlZC5oIC0tcmVwbHktaGVhZGVyIHdl
YmtpdC9MZWdhY3lNZXNzYWdlc1JlcGxpZXMtZXhwZWN0ZWQuaAotCXB5dGhvbiAuL2dlbmVyYXRl
LW1lc3NhZ2UtcmVjZWl2ZXIucHkgd2Via2l0L3Rlc3QtbWVzc2FnZXMuaW4gLS1pbXBsZW1lbnRh
dGlvbiB3ZWJraXQvTWVzc2FnZVJlY2VpdmVyLWV4cGVjdGVkLmNwcCAtLWhlYWRlciB3ZWJraXQv
TWVzc2FnZXMtZXhwZWN0ZWQuaCAtLXJlcGx5LWhlYWRlciB3ZWJraXQvTWVzc2FnZXNSZXBsaWVz
LWV4cGVjdGVkLmgKLQorCXB5dGhvbiBnZW5lcmF0ZS1tZXNzYWdlLXJlY2VpdmVyLnB5IHdlYmtp
dCB0ZXN0LXN1cGVyY2xhc3MgdGVzdC1sZWdhY3kgdGVzdApJbmRleDogU291cmNlL1dlYktpdC9T
Y3JpcHRzL01lc3NhZ2VOYW1lcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TY3Jp
cHRzL01lc3NhZ2VOYW1lcy5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9TY3Jp
cHRzL01lc3NhZ2VOYW1lcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyOTggQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIK
KyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTWVzc2FnZU5h
bWVzLmgiCisKK25hbWVzcGFjZSBJUEMgeworCitjb25zdCBjaGFyKiBkZXNjcmlwdGlvbihNZXNz
YWdlTmFtZSBuYW1lKQoreworICAgIHN3aXRjaCAobmFtZSkgeworICAgIGNhc2UgTWVzc2FnZU5h
bWU6OldlYlBhZ2VfTG9hZFVSTDoKKyAgICAgICAgcmV0dXJuICJXZWJQYWdlOjpMb2FkVVJMIjsK
KyNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQorICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2Vf
VGVzdEFzeW5jTWVzc2FnZToKKyAgICAgICAgcmV0dXJuICJXZWJQYWdlOjpUZXN0QXN5bmNNZXNz
YWdlIjsKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX1Rlc3RBc3luY01lc3NhZ2VSZXBs
eToKKyAgICAgICAgcmV0dXJuICJXZWJQYWdlOjpUZXN0QXN5bmNNZXNzYWdlUmVwbHkiOworI2Vu
ZGlmCisjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQ
YWdlX1Rlc3RBc3luY01lc3NhZ2VXaXRoTm9Bcmd1bWVudHM6CisgICAgICAgIHJldHVybiAiV2Vi
UGFnZTo6VGVzdEFzeW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50cyI7CisgICAgY2FzZSBNZXNzYWdl
TmFtZTo6V2ViUGFnZV9UZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJndW1lbnRzUmVwbHk6CisgICAg
ICAgIHJldHVybiAiV2ViUGFnZTo6VGVzdEFzeW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50c1JlcGx5
IjsKKyNlbmRpZgorI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCisgICAgY2FzZSBNZXNzYWdlTmFt
ZTo6V2ViUGFnZV9UZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1lbnRzOgorICAgICAg
ICByZXR1cm4gIldlYlBhZ2U6OlRlc3RBc3luY01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHMi
OworICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVzdEFzeW5jTWVzc2FnZVdpdGhNdWx0
aXBsZUFyZ3VtZW50c1JlcGx5OgorICAgICAgICByZXR1cm4gIldlYlBhZ2U6OlRlc3RBc3luY01l
c3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHNSZXBseSI7CisjZW5kaWYKKyAgICBjYXNlIE1lc3Nh
Z2VOYW1lOjpXZWJQYWdlX1Rlc3RTeW5jTWVzc2FnZToKKyAgICAgICAgcmV0dXJuICJXZWJQYWdl
OjpUZXN0U3luY01lc3NhZ2UiOworICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVzdFN5
bmNocm9ub3VzTWVzc2FnZToKKyAgICAgICAgcmV0dXJuICJXZWJQYWdlOjpUZXN0U3luY2hyb25v
dXNNZXNzYWdlIjsKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX0xvYWRVUkw6CisgICAg
ICAgIHJldHVybiAiV2ViUGFnZTo6TG9hZFVSTCI7CisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykK
KyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX0xvYWRTb21ldGhpbmc6CisgICAgICAgIHJl
dHVybiAiV2ViUGFnZTo6TG9hZFNvbWV0aGluZyI7CisjZW5kaWYKKyNpZiAoRU5BQkxFKFRPVUNI
X0VWRU5UUykgJiYgKE5FU1RFRF9NRVNTQUdFX0NPTkRJVElPTiB8fCBTT01FX09USEVSX01FU1NB
R0VfQ09ORElUSU9OKSkKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX1RvdWNoRXZlbnQ6
CisgICAgICAgIHJldHVybiAiV2ViUGFnZTo6VG91Y2hFdmVudCI7CisjZW5kaWYKKyNpZiAoRU5B
QkxFKFRPVUNIX0VWRU5UUykgJiYgKE5FU1RFRF9NRVNTQUdFX0NPTkRJVElPTiAmJiBTT01FX09U
SEVSX01FU1NBR0VfQ09ORElUSU9OKSkKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX0Fk
ZEV2ZW50OgorICAgICAgICByZXR1cm4gIldlYlBhZ2U6OkFkZEV2ZW50IjsKKyNlbmRpZgorI2lm
IEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9Mb2Fk
U29tZXRoaW5nRWxzZToKKyAgICAgICAgcmV0dXJuICJXZWJQYWdlOjpMb2FkU29tZXRoaW5nRWxz
ZSI7CisjZW5kaWYKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX0RpZFJlY2VpdmVQb2xp
Y3lEZWNpc2lvbjoKKyAgICAgICAgcmV0dXJuICJXZWJQYWdlOjpEaWRSZWNlaXZlUG9saWN5RGVj
aXNpb24iOworICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfQ2xvc2U6CisgICAgICAgIHJl
dHVybiAiV2ViUGFnZTo6Q2xvc2UiOworICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfUHJl
ZmVyZW5jZXNEaWRDaGFuZ2U6CisgICAgICAgIHJldHVybiAiV2ViUGFnZTo6UHJlZmVyZW5jZXNE
aWRDaGFuZ2UiOworICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfU2VuZERvdWJsZUFuZEZs
b2F0OgorICAgICAgICByZXR1cm4gIldlYlBhZ2U6OlNlbmREb3VibGVBbmRGbG9hdCI7CisgICAg
Y2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9TZW5kSW50czoKKyAgICAgICAgcmV0dXJuICJXZWJQ
YWdlOjpTZW5kSW50cyI7CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9DcmVhdGVQbHVn
aW46CisgICAgICAgIHJldHVybiAiV2ViUGFnZTo6Q3JlYXRlUGx1Z2luIjsKKyAgICBjYXNlIE1l
c3NhZ2VOYW1lOjpXZWJQYWdlX1J1bkphdmFTY3JpcHRBbGVydDoKKyAgICAgICAgcmV0dXJuICJX
ZWJQYWdlOjpSdW5KYXZhU2NyaXB0QWxlcnQiOworICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBh
Z2VfR2V0UGx1Z2luczoKKyAgICAgICAgcmV0dXJuICJXZWJQYWdlOjpHZXRQbHVnaW5zIjsKKyAg
ICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX0dldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOgor
ICAgICAgICByZXR1cm4gIldlYlBhZ2U6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uIjsKKyAg
ICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX1Rlc3RNdWx0aXBsZUF0dHJpYnV0ZXM6CisgICAg
ICAgIHJldHVybiAiV2ViUGFnZTo6VGVzdE11bHRpcGxlQXR0cmlidXRlcyI7CisgICAgY2FzZSBN
ZXNzYWdlTmFtZTo6V2ViUGFnZV9UZXN0UGFyYW1ldGVyQXR0cmlidXRlczoKKyAgICAgICAgcmV0
dXJuICJXZWJQYWdlOjpUZXN0UGFyYW1ldGVyQXR0cmlidXRlcyI7CisgICAgY2FzZSBNZXNzYWdl
TmFtZTo6V2ViUGFnZV9UZW1wbGF0ZVRlc3Q6CisgICAgICAgIHJldHVybiAiV2ViUGFnZTo6VGVt
cGxhdGVUZXN0IjsKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX1NldFZpZGVvTGF5ZXJJ
RDoKKyAgICAgICAgcmV0dXJuICJXZWJQYWdlOjpTZXRWaWRlb0xheWVySUQiOworI2lmIFBMQVRG
T1JNKE1BQykKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX0RpZENyZWF0ZVdlYlByb2Nl
c3NDb25uZWN0aW9uOgorICAgICAgICByZXR1cm4gIldlYlBhZ2U6OkRpZENyZWF0ZVdlYlByb2Nl
c3NDb25uZWN0aW9uIjsKKyNlbmRpZgorI2lmIFBMQVRGT1JNKE1BQykKKyAgICBjYXNlIE1lc3Nh
Z2VOYW1lOjpXZWJQYWdlX0ludGVycHJldEtleUV2ZW50OgorICAgICAgICByZXR1cm4gIldlYlBh
Z2U6OkludGVycHJldEtleUV2ZW50IjsKKyNlbmRpZgorI2lmIEVOQUJMRShERVBSRUNBVEVEX0ZF
QVRVUkUpCisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9EZXByZWNhdGVkT3BlcmF0aW9u
OgorICAgICAgICByZXR1cm4gIldlYlBhZ2U6OkRlcHJlY2F0ZWRPcGVyYXRpb24iOworI2VuZGlm
CisjaWYgRU5BQkxFKEVYUEVSSU1FTlRBTF9GRUFUVVJFKQorICAgIGNhc2UgTWVzc2FnZU5hbWU6
OldlYlBhZ2VfRXhwZXJpbWVudGFsT3BlcmF0aW9uOgorICAgICAgICByZXR1cm4gIldlYlBhZ2U6
OkV4cGVyaW1lbnRhbE9wZXJhdGlvbiI7CisjZW5kaWYKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpX
cmFwcGVkQXN5bmNNZXNzYWdlRm9yVGVzdGluZzoKKyAgICAgICAgcmV0dXJuICJJUEM6OldyYXBw
ZWRBc3luY01lc3NhZ2VGb3JUZXN0aW5nIjsKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpTeW5jTWVz
c2FnZVJlcGx5OgorICAgICAgICByZXR1cm4gIklQQzo6U3luY01lc3NhZ2VSZXBseSI7CisgICAg
Y2FzZSBNZXNzYWdlTmFtZTo6SW5pdGlhbGl6ZUNvbm5lY3Rpb246CisgICAgICAgIHJldHVybiAi
SVBDOjpJbml0aWFsaXplQ29ubmVjdGlvbiI7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgIHJldHVybiAiPGludmFsaWQgbWVzc2FnZSBuYW1lPiI7Cit9CisKK1JlY2VpdmVy
TmFtZSByZWNlaXZlck5hbWUoTWVzc2FnZU5hbWUgbWVzc2FnZU5hbWUpCit7CisgICAgc3dpdGNo
IChtZXNzYWdlTmFtZSkgeworICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfTG9hZFVSTDoK
KyNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQorICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2Vf
VGVzdEFzeW5jTWVzc2FnZToKKyNlbmRpZgorI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCisgICAg
Y2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9UZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJndW1lbnRz
OgorI2VuZGlmCisjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKKyAgICBjYXNlIE1lc3NhZ2VOYW1l
OjpXZWJQYWdlX1Rlc3RBc3luY01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHM6CisjZW5kaWYK
KyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX1Rlc3RTeW5jTWVzc2FnZToKKyAgICBjYXNl
IE1lc3NhZ2VOYW1lOjpXZWJQYWdlX1Rlc3RTeW5jaHJvbm91c01lc3NhZ2U6CisgICAgICAgIHJl
dHVybiBSZWNlaXZlck5hbWU6OldlYlBhZ2U7CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFn
ZV9Mb2FkVVJMOgorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAgY2FzZSBNZXNzYWdlTmFt
ZTo6V2ViUGFnZV9Mb2FkU29tZXRoaW5nOgorI2VuZGlmCisjaWYgKEVOQUJMRShUT1VDSF9FVkVO
VFMpICYmIChORVNURURfTUVTU0FHRV9DT05ESVRJT04gfHwgU09NRV9PVEhFUl9NRVNTQUdFX0NP
TkRJVElPTikpCisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9Ub3VjaEV2ZW50OgorI2Vu
ZGlmCisjaWYgKEVOQUJMRShUT1VDSF9FVkVOVFMpICYmIChORVNURURfTUVTU0FHRV9DT05ESVRJ
T04gJiYgU09NRV9PVEhFUl9NRVNTQUdFX0NPTkRJVElPTikpCisgICAgY2FzZSBNZXNzYWdlTmFt
ZTo6V2ViUGFnZV9BZGRFdmVudDoKKyNlbmRpZgorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisg
ICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9Mb2FkU29tZXRoaW5nRWxzZToKKyNlbmRpZgor
ICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfRGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uOgor
ICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfQ2xvc2U6CisgICAgY2FzZSBNZXNzYWdlTmFt
ZTo6V2ViUGFnZV9QcmVmZXJlbmNlc0RpZENoYW5nZToKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpX
ZWJQYWdlX1NlbmREb3VibGVBbmRGbG9hdDoKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdl
X1NlbmRJbnRzOgorICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfQ3JlYXRlUGx1Z2luOgor
ICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfUnVuSmF2YVNjcmlwdEFsZXJ0OgorICAgIGNh
c2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfR2V0UGx1Z2luczoKKyAgICBjYXNlIE1lc3NhZ2VOYW1l
OjpXZWJQYWdlX0dldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOgorICAgIGNhc2UgTWVzc2FnZU5h
bWU6OldlYlBhZ2VfVGVzdE11bHRpcGxlQXR0cmlidXRlczoKKyAgICBjYXNlIE1lc3NhZ2VOYW1l
OjpXZWJQYWdlX1Rlc3RQYXJhbWV0ZXJBdHRyaWJ1dGVzOgorICAgIGNhc2UgTWVzc2FnZU5hbWU6
OldlYlBhZ2VfVGVtcGxhdGVUZXN0OgorICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfU2V0
VmlkZW9MYXllcklEOgorI2lmIFBMQVRGT1JNKE1BQykKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpX
ZWJQYWdlX0RpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uOgorI2VuZGlmCisjaWYgUExBVEZP
Uk0oTUFDKQorICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfSW50ZXJwcmV0S2V5RXZlbnQ6
CisjZW5kaWYKKyNpZiBFTkFCTEUoREVQUkVDQVRFRF9GRUFUVVJFKQorICAgIGNhc2UgTWVzc2Fn
ZU5hbWU6OldlYlBhZ2VfRGVwcmVjYXRlZE9wZXJhdGlvbjoKKyNlbmRpZgorI2lmIEVOQUJMRShF
WFBFUklNRU5UQUxfRkVBVFVSRSkKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX0V4cGVy
aW1lbnRhbE9wZXJhdGlvbjoKKyNlbmRpZgorICAgICAgICByZXR1cm4gUmVjZWl2ZXJOYW1lOjpX
ZWJQYWdlOworICAgICAgICByZXR1cm4gUmVjZWl2ZXJOYW1lOjpOb25lOworI2lmIEVOQUJMRShU
RVNUX0ZFQVRVUkUpCisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9UZXN0QXN5bmNNZXNz
YWdlUmVwbHk6CisjZW5kaWYKKyNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQorICAgIGNhc2UgTWVz
c2FnZU5hbWU6OldlYlBhZ2VfVGVzdEFzeW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50c1JlcGx5Ogor
I2VuZGlmCisjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpX
ZWJQYWdlX1Rlc3RBc3luY01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHNSZXBseToKKyNlbmRp
ZgorICAgICAgICByZXR1cm4gUmVjZWl2ZXJOYW1lOjpBc3luY1JlcGx5OworICAgIGNhc2UgTWVz
c2FnZU5hbWU6OldyYXBwZWRBc3luY01lc3NhZ2VGb3JUZXN0aW5nOgorICAgIGNhc2UgTWVzc2Fn
ZU5hbWU6OlN5bmNNZXNzYWdlUmVwbHk6CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6SW5pdGlhbGl6
ZUNvbm5lY3Rpb246CisgICAgICAgIHJldHVybiBSZWNlaXZlck5hbWU6OklQQzsKKyAgICB9Cisg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIFJlY2VpdmVyTmFtZTo6SW52YWxp
ZDsKK30KKworYm9vbCBpc1ZhbGlkTWVzc2FnZU5hbWUoTWVzc2FnZU5hbWUgbWVzc2FnZU5hbWUp
Cit7CisgICAgaWYgKG1lc3NhZ2VOYW1lID09IElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfTG9h
ZFVSTCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKKyAg
ICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9UZXN0QXN5bmNN
ZXNzYWdlKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAobWVzc2FnZU5hbWUgPT0gSVBD
OjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9UZXN0QXN5bmNNZXNzYWdlUmVwbHkpCisgICAgICAgIHJl
dHVybiB0cnVlOworI2VuZGlmCisjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKKyAgICBpZiAobWVz
c2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9UZXN0QXN5bmNNZXNzYWdlV2l0
aE5vQXJndW1lbnRzKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAobWVzc2FnZU5hbWUg
PT0gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9UZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJndW1l
bnRzUmVwbHkpCisgICAgICAgIHJldHVybiB0cnVlOworI2VuZGlmCisjaWYgRU5BQkxFKFRFU1Rf
RkVBVFVSRSkKKyAgICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFn
ZV9UZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1lbnRzKQorICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9U
ZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1lbnRzUmVwbHkpCisgICAgICAgIHJldHVy
biB0cnVlOworI2VuZGlmCisgICAgaWYgKG1lc3NhZ2VOYW1lID09IElQQzo6TWVzc2FnZU5hbWU6
OldlYlBhZ2VfVGVzdFN5bmNNZXNzYWdlKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAo
bWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9UZXN0U3luY2hyb25vdXNN
ZXNzYWdlKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAobWVzc2FnZU5hbWUgPT0gSVBD
OjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9Mb2FkVVJMKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyNp
ZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgIGlmIChtZXNzYWdlTmFtZSA9PSBJUEM6Ok1lc3Nh
Z2VOYW1lOjpXZWJQYWdlX0xvYWRTb21ldGhpbmcpCisgICAgICAgIHJldHVybiB0cnVlOworI2Vu
ZGlmCisjaWYgKEVOQUJMRShUT1VDSF9FVkVOVFMpICYmIChORVNURURfTUVTU0FHRV9DT05ESVRJ
T04gfHwgU09NRV9PVEhFUl9NRVNTQUdFX0NPTkRJVElPTikpCisgICAgaWYgKG1lc3NhZ2VOYW1l
ID09IElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfVG91Y2hFdmVudCkKKyAgICAgICAgcmV0dXJu
IHRydWU7CisjZW5kaWYKKyNpZiAoRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgKE5FU1RFRF9NRVNT
QUdFX0NPTkRJVElPTiAmJiBTT01FX09USEVSX01FU1NBR0VfQ09ORElUSU9OKSkKKyAgICBpZiAo
bWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9BZGRFdmVudCkKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisjZW5kaWYKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgIGlm
IChtZXNzYWdlTmFtZSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX0xvYWRTb21ldGhpbmdF
bHNlKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyNlbmRpZgorICAgIGlmIChtZXNzYWdlTmFtZSA9
PSBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX0RpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbikKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKG1lc3NhZ2VOYW1lID09IElQQzo6TWVzc2FnZU5h
bWU6OldlYlBhZ2VfQ2xvc2UpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmIChtZXNzYWdl
TmFtZSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX1ByZWZlcmVuY2VzRGlkQ2hhbmdlKQor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdl
TmFtZTo6V2ViUGFnZV9TZW5kRG91YmxlQW5kRmxvYXQpCisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIGlmIChtZXNzYWdlTmFtZSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX1NlbmRJbnRz
KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNz
YWdlTmFtZTo6V2ViUGFnZV9DcmVhdGVQbHVnaW4pCisgICAgICAgIHJldHVybiB0cnVlOworICAg
IGlmIChtZXNzYWdlTmFtZSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX1J1bkphdmFTY3Jp
cHRBbGVydCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKG1lc3NhZ2VOYW1lID09IElQ
Qzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfR2V0UGx1Z2lucykKKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgaWYgKG1lc3NhZ2VOYW1lID09IElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfR2V0UGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb24pCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmIChtZXNz
YWdlTmFtZSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX1Rlc3RNdWx0aXBsZUF0dHJpYnV0
ZXMpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmIChtZXNzYWdlTmFtZSA9PSBJUEM6Ok1l
c3NhZ2VOYW1lOjpXZWJQYWdlX1Rlc3RQYXJhbWV0ZXJBdHRyaWJ1dGVzKQorICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFn
ZV9UZW1wbGF0ZVRlc3QpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmIChtZXNzYWdlTmFt
ZSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX1NldFZpZGVvTGF5ZXJJRCkKKyAgICAgICAg
cmV0dXJuIHRydWU7CisjaWYgUExBVEZPUk0oTUFDKQorICAgIGlmIChtZXNzYWdlTmFtZSA9PSBJ
UEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX0RpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKQor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyNlbmRpZgorI2lmIFBMQVRGT1JNKE1BQykKKyAgICBpZiAo
bWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9JbnRlcnByZXRLZXlFdmVu
dCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisjZW5kaWYKKyNpZiBFTkFCTEUoREVQUkVDQVRFRF9G
RUFUVVJFKQorICAgIGlmIChtZXNzYWdlTmFtZSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdl
X0RlcHJlY2F0ZWRPcGVyYXRpb24pCisgICAgICAgIHJldHVybiB0cnVlOworI2VuZGlmCisjaWYg
RU5BQkxFKEVYUEVSSU1FTlRBTF9GRUFUVVJFKQorICAgIGlmIChtZXNzYWdlTmFtZSA9PSBJUEM6
Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX0V4cGVyaW1lbnRhbE9wZXJhdGlvbikKKyAgICAgICAgcmV0
dXJuIHRydWU7CisjZW5kaWYKKyAgICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFt
ZTo6V3JhcHBlZEFzeW5jTWVzc2FnZUZvclRlc3RpbmcpCisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIGlmIChtZXNzYWdlTmFtZSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpTeW5jTWVzc2FnZVJlcGx5
KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNz
YWdlTmFtZTo6SW5pdGlhbGl6ZUNvbm5lY3Rpb24pCisgICAgICAgIHJldHVybiB0cnVlOworICAg
IHJldHVybiBmYWxzZTsKK307CisKK30gLy8gbmFtZXNwYWNlIElQQwpJbmRleDogU291cmNlL1dl
YktpdC9TY3JpcHRzL01lc3NhZ2VOYW1lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
U2NyaXB0cy9NZXNzYWdlTmFtZXMuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1Nj
cmlwdHMvTWVzc2FnZU5hbWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMTYgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIK
KyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9FbnVtVHJhaXRz
Lmg+CisKK25hbWVzcGFjZSBJUEMgeworCitlbnVtIGNsYXNzIFJlY2VpdmVyTmFtZSA6IHVpbnQ4
X3QgeworICAgIFdlYlBhZ2UgPSAxCisgICAgLCBXZWJQYWdlID0gMgorICAgICwgTm9uZSA9IDMK
KyAgICAsIElQQyA9IDQKKyAgICAsIEFzeW5jUmVwbHkgPSA1CisgICAgLCBJbnZhbGlkID0gNgor
fTsKKworZW51bSBjbGFzcyBNZXNzYWdlTmFtZSA6IHVpbnQxNl90IHsKKyAgICBXZWJQYWdlX0xv
YWRVUkwgPSAxCisjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKKyAgICAsIFdlYlBhZ2VfVGVzdEFz
eW5jTWVzc2FnZSA9IDIKKyAgICAsIFdlYlBhZ2VfVGVzdEFzeW5jTWVzc2FnZVJlcGx5ID0gMwor
I2VuZGlmCisjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKKyAgICAsIFdlYlBhZ2VfVGVzdEFzeW5j
TWVzc2FnZVdpdGhOb0FyZ3VtZW50cyA9IDQKKyAgICAsIFdlYlBhZ2VfVGVzdEFzeW5jTWVzc2Fn
ZVdpdGhOb0FyZ3VtZW50c1JlcGx5ID0gNQorI2VuZGlmCisjaWYgRU5BQkxFKFRFU1RfRkVBVFVS
RSkKKyAgICAsIFdlYlBhZ2VfVGVzdEFzeW5jTWVzc2FnZVdpdGhNdWx0aXBsZUFyZ3VtZW50cyA9
IDYKKyAgICAsIFdlYlBhZ2VfVGVzdEFzeW5jTWVzc2FnZVdpdGhNdWx0aXBsZUFyZ3VtZW50c1Jl
cGx5ID0gNworI2VuZGlmCisgICAgLCBXZWJQYWdlX1Rlc3RTeW5jTWVzc2FnZSA9IDgKKyAgICAs
IFdlYlBhZ2VfVGVzdFN5bmNocm9ub3VzTWVzc2FnZSA9IDkKKyAgICAsIFdlYlBhZ2VfTG9hZFVS
TCA9IDEwCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAgICAsIFdlYlBhZ2VfTG9hZFNvbWV0
aGluZyA9IDExCisjZW5kaWYKKyNpZiAoRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgKE5FU1RFRF9N
RVNTQUdFX0NPTkRJVElPTiB8fCBTT01FX09USEVSX01FU1NBR0VfQ09ORElUSU9OKSkKKyAgICAs
IFdlYlBhZ2VfVG91Y2hFdmVudCA9IDEyCisjZW5kaWYKKyNpZiAoRU5BQkxFKFRPVUNIX0VWRU5U
UykgJiYgKE5FU1RFRF9NRVNTQUdFX0NPTkRJVElPTiAmJiBTT01FX09USEVSX01FU1NBR0VfQ09O
RElUSU9OKSkKKyAgICAsIFdlYlBhZ2VfQWRkRXZlbnQgPSAxMworI2VuZGlmCisjaWYgRU5BQkxF
KFRPVUNIX0VWRU5UUykKKyAgICAsIFdlYlBhZ2VfTG9hZFNvbWV0aGluZ0Vsc2UgPSAxNAorI2Vu
ZGlmCisgICAgLCBXZWJQYWdlX0RpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbiA9IDE1CisgICAgLCBX
ZWJQYWdlX0Nsb3NlID0gMTYKKyAgICAsIFdlYlBhZ2VfUHJlZmVyZW5jZXNEaWRDaGFuZ2UgPSAx
NworICAgICwgV2ViUGFnZV9TZW5kRG91YmxlQW5kRmxvYXQgPSAxOAorICAgICwgV2ViUGFnZV9T
ZW5kSW50cyA9IDE5CisgICAgLCBXZWJQYWdlX0NyZWF0ZVBsdWdpbiA9IDIwCisgICAgLCBXZWJQ
YWdlX1J1bkphdmFTY3JpcHRBbGVydCA9IDIxCisgICAgLCBXZWJQYWdlX0dldFBsdWdpbnMgPSAy
MgorICAgICwgV2ViUGFnZV9HZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbiA9IDIzCisgICAgLCBX
ZWJQYWdlX1Rlc3RNdWx0aXBsZUF0dHJpYnV0ZXMgPSAyNAorICAgICwgV2ViUGFnZV9UZXN0UGFy
YW1ldGVyQXR0cmlidXRlcyA9IDI1CisgICAgLCBXZWJQYWdlX1RlbXBsYXRlVGVzdCA9IDI2Cisg
ICAgLCBXZWJQYWdlX1NldFZpZGVvTGF5ZXJJRCA9IDI3CisjaWYgUExBVEZPUk0oTUFDKQorICAg
ICwgV2ViUGFnZV9EaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbiA9IDI4CisjZW5kaWYKKyNp
ZiBQTEFURk9STShNQUMpCisgICAgLCBXZWJQYWdlX0ludGVycHJldEtleUV2ZW50ID0gMjkKKyNl
bmRpZgorI2lmIEVOQUJMRShERVBSRUNBVEVEX0ZFQVRVUkUpCisgICAgLCBXZWJQYWdlX0RlcHJl
Y2F0ZWRPcGVyYXRpb24gPSAzMAorI2VuZGlmCisjaWYgRU5BQkxFKEVYUEVSSU1FTlRBTF9GRUFU
VVJFKQorICAgICwgV2ViUGFnZV9FeHBlcmltZW50YWxPcGVyYXRpb24gPSAzMQorI2VuZGlmCisg
ICAgLCBXcmFwcGVkQXN5bmNNZXNzYWdlRm9yVGVzdGluZyA9IDMyCisgICAgLCBTeW5jTWVzc2Fn
ZVJlcGx5ID0gMzMKKyAgICAsIEluaXRpYWxpemVDb25uZWN0aW9uID0gMzQKK307CisKK1JlY2Vp
dmVyTmFtZSByZWNlaXZlck5hbWUoTWVzc2FnZU5hbWUpOworY29uc3QgY2hhciogZGVzY3JpcHRp
b24oTWVzc2FnZU5hbWUpOworYm9vbCBpc1ZhbGlkTWVzc2FnZU5hbWUoTWVzc2FnZU5hbWUpOwor
Cit9IC8vIG5hbWVzcGFjZSBJUEMKKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPD4KK2Ns
YXNzIEhhc0N1c3RvbUlzVmFsaWRFbnVtPElQQzo6TWVzc2FnZU5hbWU+IDogcHVibGljIHN0ZDo6
dHJ1ZV90eXBlIHsgfTsKK3RlbXBsYXRlPHR5cGVuYW1lIEUsIHR5cGVuYW1lIFQsIHR5cGVuYW1l
ID0gc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX3NhbWU8RSwgSVBDOjpNZXNzYWdlTmFtZT46OnZh
bHVlPj4KK2Jvb2wgaXNWYWxpZEVudW0oVCBtZXNzYWdlTmFtZSkKK3sKKyAgICBzdGF0aWNfYXNz
ZXJ0KHNpemVvZihUKSA9PSBzaXplb2YoSVBDOjpNZXNzYWdlTmFtZSksICJpc1ZhbGlkRW51bTxN
ZXNzYWdlTmFtZT4gc2hvdWxkIG9ubHkgYmUgY2FsbGVkIHdpdGggMTYtYml0IHR5cGVzIik7Cisg
ICAgcmV0dXJuIElQQzo6aXNWYWxpZE1lc3NhZ2VOYW1lKHN0YXRpY19jYXN0PElQQzo6TWVzc2Fn
ZU5hbWU+KG1lc3NhZ2VOYW1lKSk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXVEYKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvU2NyaXB0cy9nZW5lcmF0ZS1tZXNzYWdlLXJlY2VpdmVyLnB5Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy9nZW5lcmF0ZS1tZXNzYWdlLXJlY2VpdmVyLnB5
CShyZXZpc2lvbiAyNjA3NjQpCisrKyBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvZ2VuZXJhdGUtbWVz
c2FnZS1yZWNlaXZlci5weQkod29ya2luZyBjb3B5KQpAQCAtMjMsMzMgKzIzLDQ4IEBACiAjIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAKIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgd2l0aF9zdGF0ZW1lbnQKLWltcG9y
dCBhcmdwYXJzZQogaW1wb3J0IHN5cwogCiBpbXBvcnQgd2Via2l0Lm1lc3NhZ2VzCiBpbXBvcnQg
d2Via2l0LnBhcnNlcgogCiAKLWRlZiBtYWluKGFyZ3Y9Tm9uZSk6Ci0gICAgcGFyc2VyID0gYXJn
cGFyc2UuQXJndW1lbnRQYXJzZXIoKQotICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJ3NvdXJjZScp
Ci0gICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1pbXBsZW1lbnRhdGlvbicsIHJlcXVpcmVkPVRy
dWUpCi0gICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1oZWFkZXInLCByZXF1aXJlZD1UcnVlKQot
ICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tcmVwbHktaGVhZGVyJywgcmVxdWlyZWQ9VHJ1ZSkK
LQotICAgIGFyZ3MgPSBwYXJzZXIucGFyc2VfYXJncygpCi0KLSAgICB3aXRoIG9wZW4oYXJncy5z
b3VyY2UpIGFzIHNvdXJjZV9maWxlOgotICAgICAgICByZWNlaXZlciA9IHdlYmtpdC5wYXJzZXIu
cGFyc2Uoc291cmNlX2ZpbGUpCitkZWYgbWFpbihhcmd2KToKKyAgICByZWNlaXZlcnMgPSBbXQog
Ci0gICAgd2l0aCBvcGVuKGFyZ3MuaW1wbGVtZW50YXRpb24sICJ3KyIpIGFzIGltcGxlbWVudGF0
aW9uX291dHB1dDoKLSAgICAgICAgaW1wbGVtZW50YXRpb25fb3V0cHV0LndyaXRlKHdlYmtpdC5t
ZXNzYWdlcy5nZW5lcmF0ZV9tZXNzYWdlX2hhbmRsZXIocmVjZWl2ZXIpKQorICAgIGZpcnN0X2Fy
ZyA9IFRydWUKKyAgICBzZWNvbmRfYXJnID0gRmFsc2UKKyAgICBmb3IgcGFyYW1ldGVyIGluIGFy
Z3Y6CisgICAgICAgIGlmIGZpcnN0X2FyZzoKKyAgICAgICAgICAgIGZpcnN0X2FyZyA9IEZhbHNl
CisgICAgICAgICAgICBzZWNvbmRfYXJnID0gVHJ1ZQorICAgICAgICAgICAgY29udGludWUKKyAg
ICAgICAgaWYgc2Vjb25kX2FyZzoKKyAgICAgICAgICAgIGJhc2VfZGlyID0gcGFyYW1ldGVyCisg
ICAgICAgICAgICBzZWNvbmRfYXJnID0gRmFsc2UKKyAgICAgICAgICAgIGNvbnRpbnVlCisKKyAg
ICAgICAgcmVjZWl2ZXJfbmFtZSA9IHBhcmFtZXRlci5yc3BsaXQoJy8nLCAxKS5wb3AoKQorICAg
ICAgICBwcmludCAnR2VuZXJhdGluZyBtZXNzYWdlIHJlY2VpdmVyIGZvciAlcycgJSByZWNlaXZl
cl9uYW1lCisKKyAgICAgICAgd2l0aCBvcGVuKCclcy8lcy5tZXNzYWdlcy5pbicgJSAoYmFzZV9k
aXIsIHBhcmFtZXRlcikpIGFzIHNvdXJjZV9maWxlOgorICAgICAgICAgICAgcmVjZWl2ZXIgPSB3
ZWJraXQucGFyc2VyLnBhcnNlKHNvdXJjZV9maWxlKQorICAgICAgICByZWNlaXZlcnMuYXBwZW5k
KHJlY2VpdmVyKQorCisgICAgICAgIHdpdGggb3BlbignJXNNZXNzYWdlUmVjZWl2ZXIuY3BwJyAl
IHJlY2VpdmVyX25hbWUsICJ3KyIpIGFzIGltcGxlbWVudGF0aW9uX291dHB1dDoKKyAgICAgICAg
ICAgIGltcGxlbWVudGF0aW9uX291dHB1dC53cml0ZSh3ZWJraXQubWVzc2FnZXMuZ2VuZXJhdGVf
bWVzc2FnZV9oYW5kbGVyKHJlY2VpdmVyKSkKKworICAgICAgICB3aXRoIG9wZW4oJyVzTWVzc2Fn
ZXMuaCcgJSByZWNlaXZlcl9uYW1lLCAidysiKSBhcyBoZWFkZXJfb3V0cHV0OgorICAgICAgICAg
ICAgaGVhZGVyX291dHB1dC53cml0ZSh3ZWJraXQubWVzc2FnZXMuZ2VuZXJhdGVfbWVzc2FnZXNf
aGVhZGVyKHJlY2VpdmVyKSkKIAotICAgIHdpdGggb3BlbihhcmdzLmhlYWRlciwgIncrIikgYXMg
aGVhZGVyX291dHB1dDoKLSAgICAgICAgaGVhZGVyX291dHB1dC53cml0ZSh3ZWJraXQubWVzc2Fn
ZXMuZ2VuZXJhdGVfbWVzc2FnZXNfaGVhZGVyKHJlY2VpdmVyKSkKKyAgICAgICAgd2l0aCBvcGVu
KCclc01lc3NhZ2VzUmVwbGllcy5oJyAlIHJlY2VpdmVyX25hbWUsICJ3KyIpIGFzIHJlcGx5X2hl
YWRlcl9vdXRwdXQ6CisgICAgICAgICAgICByZXBseV9oZWFkZXJfb3V0cHV0LndyaXRlKHdlYmtp
dC5tZXNzYWdlcy5nZW5lcmF0ZV9tZXNzYWdlc19yZXBseV9oZWFkZXIocmVjZWl2ZXIpKQogCi0g
ICAgd2l0aCBvcGVuKGFyZ3MucmVwbHlfaGVhZGVyLCAidysiKSBhcyByZXBseV9oZWFkZXJfb3V0
cHV0OgotICAgICAgICByZXBseV9oZWFkZXJfb3V0cHV0LndyaXRlKHdlYmtpdC5tZXNzYWdlcy5n
ZW5lcmF0ZV9tZXNzYWdlc19yZXBseV9oZWFkZXIocmVjZWl2ZXIpKQorICAgIHdpdGggb3Blbign
TWVzc2FnZU5hbWVzLmgnLCAidysiKSBhcyBtZXNzYWdlX25hbWVzX2hlYWRlcl9vdXRwdXQ6Cisg
ICAgICAgIG1lc3NhZ2VfbmFtZXNfaGVhZGVyX291dHB1dC53cml0ZSh3ZWJraXQubWVzc2FnZXMu
Z2VuZXJhdGVfbWVzc2FnZV9uYW1lc19oZWFkZXIocmVjZWl2ZXJzKSkKKworICAgIHdpdGggb3Bl
bignTWVzc2FnZU5hbWVzLmNwcCcsICJ3KyIpIGFzIG1lc3NhZ2VfbmFtZXNfaW1wbGVtZW50YXRp
b25fb3V0cHV0OgorICAgICAgICBtZXNzYWdlX25hbWVzX2ltcGxlbWVudGF0aW9uX291dHB1dC53
cml0ZSh3ZWJraXQubWVzc2FnZXMuZ2VuZXJhdGVfbWVzc2FnZV9uYW1lc19pbXBsZW1lbnRhdGlv
bihyZWNlaXZlcnMpKQogCiAgICAgcmV0dXJuIDAKIApJbmRleDogU291cmNlL1dlYktpdC9TY3Jp
cHRzL3Rlc3QtbGVnYWN5TWVzc2FnZVJlY2VpdmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvdGVzdC1sZWdhY3lNZXNzYWdlUmVjZWl2ZXIuY3BwCShub25leGlzdGVu
dCkKKysrIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy90ZXN0LWxlZ2FjeU1lc3NhZ2VSZWNlaXZlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyMDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTAtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiAoRU5BQkxFKFdFQktJVDIpICYmIChORVNURURfTUFT
VEVSX0NPTkRJVElPTiB8fCBNQVNURVJfT1IgJiYgTUFTVEVSX0FORCkpCisKKyNpbmNsdWRlICJX
ZWJQYWdlLmgiCisKKyNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgIkNvbm5l
Y3Rpb24uaCIKKyNpbmNsdWRlICJEZWNvZGVyLmgiCisjaWYgRU5BQkxFKERFUFJFQ0FURURfRkVB
VFVSRSkgfHwgRU5BQkxFKEVYUEVSSU1FTlRBTF9GRUFUVVJFKQorI2luY2x1ZGUgIkR1bW15VHlw
ZS5oIgorI2VuZGlmCisjaW5jbHVkZSAiSGFuZGxlTWVzc2FnZS5oIgorI2lmIFBMQVRGT1JNKE1B
QykKKyNpbmNsdWRlICJNYWNoUG9ydC5oIgorI2VuZGlmCisjaW5jbHVkZSAiUGx1Z2luLmgiCisj
aW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaWYgKEVOQUJMRShUT1VDSF9FVkVO
VFMpICYmIChORVNURURfTUVTU0FHRV9DT05ESVRJT04gJiYgU09NRV9PVEhFUl9NRVNTQUdFX0NP
TkRJVElPTikpIHx8IChFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiAoTkVTVEVEX01FU1NBR0VfQ09O
RElUSU9OIHx8IFNPTUVfT1RIRVJfTUVTU0FHRV9DT05ESVRJT04pKQorI2luY2x1ZGUgIldlYkV2
ZW50LmgiCisjZW5kaWYKKyNpbmNsdWRlICJXZWJQYWdlTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJX
ZWJQcmVmZXJlbmNlc1N0b3JlLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0xheWVyLmg+
CisjaWYgUExBVEZPUk0oTUFDKQorI2luY2x1ZGUgPFdlYkNvcmUvS2V5Ym9hcmRFdmVudC5oPgor
I2VuZGlmCisjaW5jbHVkZSA8V2ViQ29yZS9QbHVnaW5EYXRhLmg+CisjaW5jbHVkZSA8dXRpbGl0
eT4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIE1lc3NhZ2VzIHsKKwor
bmFtZXNwYWNlIFdlYlBhZ2UgeworCit2b2lkIEdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpz
ZW5kKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiYgZW5jb2RlciwgSVBDOjpDb25uZWN0
aW9uJiBjb25uZWN0aW9uLCBjb25zdCBJUEM6OkNvbm5lY3Rpb246OkhhbmRsZSYgY29ubmVjdGlv
bkhhbmRsZSkKK3sKKyAgICAqZW5jb2RlciA8PCBjb25uZWN0aW9uSGFuZGxlOworICAgIGNvbm5l
Y3Rpb24uc2VuZFN5bmNSZXBseShXVEZNb3ZlKGVuY29kZXIpKTsKK30KKwordm9pZCBUZXN0TXVs
dGlwbGVBdHRyaWJ1dGVzOjpzZW5kKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiYgZW5j
b2RlciwgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQoreworICAgIGNvbm5lY3Rpb24uc2Vu
ZFN5bmNSZXBseShXVEZNb3ZlKGVuY29kZXIpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViUGFn
ZQorCit9IC8vIG5hbWVzcGFjZSBNZXNzYWdlcworCituYW1lc3BhY2UgV2ViS2l0IHsKKwordm9p
ZCBXZWJQYWdlOjpkaWRSZWNlaXZlV2ViUGFnZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25u
ZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpCit7CisgICAgYXV0byBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyk7CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNz
YWdlczo6V2ViUGFnZTo6TG9hZFVSTDo6bmFtZSgpKSB7CisgICAgICAgIElQQzo6aGFuZGxlTWVz
c2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFVSTD4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6
OmxvYWRVUkwpOworICAgICAgICByZXR1cm47CisgICAgfQorI2lmIEVOQUJMRShUT1VDSF9FVkVO
VFMpCisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6
TG9hZFNvbWV0aGluZzo6bmFtZSgpKSB7CisgICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNz
YWdlczo6V2ViUGFnZTo6TG9hZFNvbWV0aGluZz4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6Omxv
YWRTb21ldGhpbmcpOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisjaWYgKEVOQUJM
RShUT1VDSF9FVkVOVFMpICYmIChORVNURURfTUVTU0FHRV9DT05ESVRJT04gfHwgU09NRV9PVEhF
Ul9NRVNTQUdFX0NPTkRJVElPTikpCisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBN
ZXNzYWdlczo6V2ViUGFnZTo6VG91Y2hFdmVudDo6bmFtZSgpKSB7CisgICAgICAgIElQQzo6aGFu
ZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6VG91Y2hFdmVudD4oZGVjb2RlciwgdGhpcywg
JldlYlBhZ2U6OnRvdWNoRXZlbnQpOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisj
aWYgKEVOQUJMRShUT1VDSF9FVkVOVFMpICYmIChORVNURURfTUVTU0FHRV9DT05ESVRJT04gJiYg
U09NRV9PVEhFUl9NRVNTQUdFX0NPTkRJVElPTikpCisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5h
bWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6QWRkRXZlbnQ6Om5hbWUoKSkgeworICAgICAgICBJ
UEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OkFkZEV2ZW50PihkZWNvZGVyLCB0
aGlzLCAmV2ViUGFnZTo6YWRkRXZlbnQpOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlm
CisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgp
ID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkU29tZXRoaW5nRWxzZTo6bmFtZSgpKSB7CisgICAg
ICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFNvbWV0aGluZ0Vs
c2U+KGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjpsb2FkU29tZXRoaW5nRWxzZSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisjZW5kaWYKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09
IE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZWNlaXZlUG9saWN5RGVjaXNpb246Om5hbWUoKSkgewor
ICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJlY2VpdmVQ
b2xpY3lEZWNpc2lvbj4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OmRpZFJlY2VpdmVQb2xpY3lE
ZWNpc2lvbik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKGRlY29kZXIubWVzc2Fn
ZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6Q2xvc2U6Om5hbWUoKSkgeworICAgICAgICBJ
UEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OkNsb3NlPihkZWNvZGVyLCB0aGlz
LCAmV2ViUGFnZTo6Y2xvc2UpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChkZWNv
ZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OlByZWZlcmVuY2VzRGlkQ2hh
bmdlOjpuYW1lKCkpIHsKKyAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQ
YWdlOjpQcmVmZXJlbmNlc0RpZENoYW5nZT4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OnByZWZl
cmVuY2VzRGlkQ2hhbmdlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoZGVjb2Rl
ci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpTZW5kRG91YmxlQW5kRmxvYXQ6
Om5hbWUoKSkgeworICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6
OlNlbmREb3VibGVBbmRGbG9hdD4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OnNlbmREb3VibGVB
bmRGbG9hdCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKGRlY29kZXIubWVzc2Fn
ZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6U2VuZEludHM6Om5hbWUoKSkgeworICAgICAg
ICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OlNlbmRJbnRzPihkZWNvZGVy
LCB0aGlzLCAmV2ViUGFnZTo6c2VuZEludHMpOworICAgICAgICByZXR1cm47CisgICAgfQorICAg
IGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RQYXJh
bWV0ZXJBdHRyaWJ1dGVzOjpuYW1lKCkpIHsKKyAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1l
c3NhZ2VzOjpXZWJQYWdlOjpUZXN0UGFyYW1ldGVyQXR0cmlidXRlcz4oZGVjb2RlciwgdGhpcywg
JldlYlBhZ2U6OnRlc3RQYXJhbWV0ZXJBdHRyaWJ1dGVzKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpU
ZW1wbGF0ZVRlc3Q6Om5hbWUoKSkgeworICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2Fn
ZXM6OldlYlBhZ2U6OlRlbXBsYXRlVGVzdD4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OnRlbXBs
YXRlVGVzdCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKGRlY29kZXIubWVzc2Fn
ZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6U2V0VmlkZW9MYXllcklEOjpuYW1lKCkpIHsK
KyAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRWaWRlb0xh
eWVySUQ+KGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjpzZXRWaWRlb0xheWVySUQpOworICAgICAg
ICByZXR1cm47CisgICAgfQorI2lmIFBMQVRGT1JNKE1BQykKKyAgICBpZiAoZGVjb2Rlci5tZXNz
YWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVj
dGlvbjo6bmFtZSgpKSB7CisgICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2Vi
UGFnZTo6RGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24+KGRlY29kZXIsIHRoaXMsICZXZWJQ
YWdlOjpkaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbik7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisjZW5kaWYKKyNpZiBFTkFCTEUoREVQUkVDQVRFRF9GRUFUVVJFKQorICAgIGlmIChkZWNv
ZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OkRlcHJlY2F0ZWRPcGVyYXRp
b246Om5hbWUoKSkgeworICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBh
Z2U6OkRlcHJlY2F0ZWRPcGVyYXRpb24+KGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjpkZXByZWNh
dGVkT3BlcmF0aW9uKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorI2lmIEVOQUJM
RShFWFBFUklNRU5UQUxfRkVBVFVSRSkKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09
IE1lc3NhZ2VzOjpXZWJQYWdlOjpFeHBlcmltZW50YWxPcGVyYXRpb246Om5hbWUoKSkgeworICAg
ICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OkV4cGVyaW1lbnRhbE9w
ZXJhdGlvbj4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OmV4cGVyaW1lbnRhbE9wZXJhdGlvbik7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKyAgICBVTlVTRURfUEFSQU0oY29ubmVj
dGlvbik7CisgICAgVU5VU0VEX1BBUkFNKGRlY29kZXIpOworICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworfQorCit2b2lkIFdlYlBhZ2U6OmRpZFJlY2VpdmVTeW5jV2ViUGFnZU1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIHN0ZDo6dW5p
cXVlX3B0cjxJUEM6OkVuY29kZXI+JiByZXBseUVuY29kZXIpCit7CisgICAgYXV0byBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyk7CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9
PSBNZXNzYWdlczo6V2ViUGFnZTo6Q3JlYXRlUGx1Z2luOjpuYW1lKCkpIHsKKyAgICAgICAgSVBD
OjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpDcmVhdGVQbHVnaW4+KGRlY29kZXIs
ICpyZXBseUVuY29kZXIsIHRoaXMsICZXZWJQYWdlOjpjcmVhdGVQbHVnaW4pOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6
OldlYlBhZ2U6OlJ1bkphdmFTY3JpcHRBbGVydDo6bmFtZSgpKSB7CisgICAgICAgIElQQzo6aGFu
ZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6UnVuSmF2YVNjcmlwdEFsZXJ0PihkZWNvZGVy
LCAqcmVwbHlFbmNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6cnVuSmF2YVNjcmlwdEFsZXJ0KTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1l
c3NhZ2VzOjpXZWJQYWdlOjpHZXRQbHVnaW5zOjpuYW1lKCkpIHsKKyAgICAgICAgSVBDOjpoYW5k
bGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRQbHVnaW5zPihkZWNvZGVyLCAqcmVwbHlF
bmNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6Z2V0UGx1Z2lucyk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6
R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246Om5hbWUoKSkgeworICAgICAgICBJUEM6OmhhbmRs
ZU1lc3NhZ2VTeW5jaHJvbm91czxNZXNzYWdlczo6V2ViUGFnZTo6R2V0UGx1Z2luUHJvY2Vzc0Nv
bm5lY3Rpb24+KGNvbm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5RW5jb2RlciwgdGhpcywgJldlYlBh
Z2U6OmdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0
TXVsdGlwbGVBdHRyaWJ1dGVzOjpuYW1lKCkpIHsKKyAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdl
U3luY2hyb25vdXNXYW50c0Nvbm5lY3Rpb248TWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RNdWx0aXBs
ZUF0dHJpYnV0ZXM+KGNvbm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5RW5jb2RlciwgdGhpcywgJldl
YlBhZ2U6OnRlc3RNdWx0aXBsZUF0dHJpYnV0ZXMpOworICAgICAgICByZXR1cm47CisgICAgfQor
I2lmIFBMQVRGT1JNKE1BQykKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3Nh
Z2VzOjpXZWJQYWdlOjpJbnRlcnByZXRLZXlFdmVudDo6bmFtZSgpKSB7CisgICAgICAgIElQQzo6
aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6SW50ZXJwcmV0S2V5RXZlbnQ+KGRlY29k
ZXIsICpyZXBseUVuY29kZXIsIHRoaXMsICZXZWJQYWdlOjppbnRlcnByZXRLZXlFdmVudCk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKyAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlv
bik7CisgICAgVU5VU0VEX1BBUkFNKGRlY29kZXIpOworICAgIFVOVVNFRF9QQVJBTShyZXBseUVu
Y29kZXIpOworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKKworCisjZW5kaWYgLy8gKEVOQUJMRShXRUJLSVQyKSAmJiAoTkVTVEVEX01BU1RFUl9D
T05ESVRJT04gfHwgTUFTVEVSX09SICYmIE1BU1RFUl9BTkQpKQpJbmRleDogU291cmNlL1dlYktp
dC9TY3JpcHRzL3Rlc3QtbGVnYWN5TWVzc2FnZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1NjcmlwdHMvdGVzdC1sZWdhY3lNZXNzYWdlcy5oCShub25leGlzdGVudCkKKysrIFNvdXJj
ZS9XZWJLaXQvU2NyaXB0cy90ZXN0LWxlZ2FjeU1lc3NhZ2VzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSw1NDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
IEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICog
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIChF
TkFCTEUoV0VCS0lUMikgJiYgKE5FU1RFRF9NQVNURVJfQ09ORElUSU9OIHx8IE1BU1RFUl9PUiAm
JiBNQVNURVJfQU5EKSkKKworI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAi
Q29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIk1lc3NhZ2VOYW1lcy5oIgorI2luY2x1ZGUgIlBsdWdp
bi5oIgorI2luY2x1ZGUgIldlYlBhZ2VNZXNzYWdlc1JlcGxpZXMuaCIKKyNpbmNsdWRlIDxXZWJD
b3JlL0dyYXBoaWNzTGF5ZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0tleWJvYXJkRXZlbnQuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL1BsdWdpbkRhdGEuaD4KKyNpbmNsdWRlIDx1dGlsaXR5PgorI2lu
Y2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRl
IDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Cisj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBJUEMgeworY2xhc3Mg
RHVtbXlUeXBlOworY2xhc3MgTWFjaFBvcnQ7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworY2xh
c3MgV2ViUHJlZmVyZW5jZXNTdG9yZTsKK2NsYXNzIFdlYlRvdWNoRXZlbnQ7Cit9CisKK25hbWVz
cGFjZSBNZXNzYWdlcyB7CituYW1lc3BhY2UgV2ViUGFnZSB7CisKK3N0YXRpYyBpbmxpbmUgSVBD
OjpSZWNlaXZlck5hbWUgbWVzc2FnZVJlY2VpdmVyTmFtZSgpCit7CisgICAgcmV0dXJuIElQQzo6
UmVjZWl2ZXJOYW1lOjpXZWJQYWdlOworfQorCitjbGFzcyBMb2FkVVJMIHsKK3B1YmxpYzoKKyAg
ICB0eXBlZGVmIHN0ZDo6dHVwbGU8Y29uc3QgU3RyaW5nJj4gQXJndW1lbnRzOworCisgICAgc3Rh
dGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6Oldl
YlBhZ2VfTG9hZFVSTDsgfQorICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOwor
CisgICAgZXhwbGljaXQgTG9hZFVSTChjb25zdCBTdHJpbmcmIHVybCkKKyAgICAgICAgOiBtX2Fy
Z3VtZW50cyh1cmwpCisgICAgeworICAgIH0KKworICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1l
bnRzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKKyAgICB9CisK
K3ByaXZhdGU6CisgICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOworfTsKKworI2lmIEVOQUJMRShU
T1VDSF9FVkVOVFMpCitjbGFzcyBMb2FkU29tZXRoaW5nIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVm
IHN0ZDo6dHVwbGU8Y29uc3QgU3RyaW5nJj4gQXJndW1lbnRzOworCisgICAgc3RhdGljIElQQzo6
TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfTG9h
ZFNvbWV0aGluZzsgfQorICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOworCisg
ICAgZXhwbGljaXQgTG9hZFNvbWV0aGluZyhjb25zdCBTdHJpbmcmIHVybCkKKyAgICAgICAgOiBt
X2FyZ3VtZW50cyh1cmwpCisgICAgeworICAgIH0KKworICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJn
dW1lbnRzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKKyAgICB9
CisKK3ByaXZhdGU6CisgICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOworfTsKKyNlbmRpZgorCisj
aWYgKEVOQUJMRShUT1VDSF9FVkVOVFMpICYmIChORVNURURfTUVTU0FHRV9DT05ESVRJT04gfHwg
U09NRV9PVEhFUl9NRVNTQUdFX0NPTkRJVElPTikpCitjbGFzcyBUb3VjaEV2ZW50IHsKK3B1Ymxp
YzoKKyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8Y29uc3QgV2ViS2l0OjpXZWJUb3VjaEV2ZW50Jj4g
QXJndW1lbnRzOworCisgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJu
IElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfVG91Y2hFdmVudDsgfQorICAgIHN0YXRpYyBjb25z
dCBib29sIGlzU3luYyA9IGZhbHNlOworCisgICAgZXhwbGljaXQgVG91Y2hFdmVudChjb25zdCBX
ZWJLaXQ6OldlYlRvdWNoRXZlbnQmIGV2ZW50KQorICAgICAgICA6IG1fYXJndW1lbnRzKGV2ZW50
KQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0
CisgICAgeworICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7CisgICAgfQorCitwcml2YXRlOgor
ICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKK307CisjZW5kaWYKKworI2lmIChFTkFCTEUoVE9V
Q0hfRVZFTlRTKSAmJiAoTkVTVEVEX01FU1NBR0VfQ09ORElUSU9OICYmIFNPTUVfT1RIRVJfTUVT
U0FHRV9DT05ESVRJT04pKQorY2xhc3MgQWRkRXZlbnQgeworcHVibGljOgorICAgIHR5cGVkZWYg
c3RkOjp0dXBsZTxjb25zdCBXZWJLaXQ6OldlYlRvdWNoRXZlbnQmPiBBcmd1bWVudHM7CisKKyAg
ICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFt
ZTo6V2ViUGFnZV9BZGRFdmVudDsgfQorICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZh
bHNlOworCisgICAgZXhwbGljaXQgQWRkRXZlbnQoY29uc3QgV2ViS2l0OjpXZWJUb3VjaEV2ZW50
JiBldmVudCkKKyAgICAgICAgOiBtX2FyZ3VtZW50cyhldmVudCkKKyAgICB7CisgICAgfQorCisg
ICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0
dXJuIG1fYXJndW1lbnRzOworICAgIH0KKworcHJpdmF0ZToKKyAgICBBcmd1bWVudHMgbV9hcmd1
bWVudHM7Cit9OworI2VuZGlmCisKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorY2xhc3MgTG9h
ZFNvbWV0aGluZ0Vsc2UgeworcHVibGljOgorICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBT
dHJpbmcmPiBBcmd1bWVudHM7CisKKyAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkg
eyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9Mb2FkU29tZXRoaW5nRWxzZTsgfQor
ICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOworCisgICAgZXhwbGljaXQgTG9h
ZFNvbWV0aGluZ0Vsc2UoY29uc3QgU3RyaW5nJiB1cmwpCisgICAgICAgIDogbV9hcmd1bWVudHMo
dXJsKQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNv
bnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7CisgICAgfQorCitwcml2YXRl
OgorICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKK307CisjZW5kaWYKKworY2xhc3MgRGlkUmVj
ZWl2ZVBvbGljeURlY2lzaW9uIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8dWlu
dDY0X3QsIHVpbnQ2NF90LCB1aW50MzJfdD4gQXJndW1lbnRzOworCisgICAgc3RhdGljIElQQzo6
TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfRGlk
UmVjZWl2ZVBvbGljeURlY2lzaW9uOyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0g
ZmFsc2U7CisKKyAgICBEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24odWludDY0X3QgZnJhbWVJRCwg
dWludDY0X3QgbGlzdGVuZXJJRCwgdWludDMyX3QgcG9saWN5QWN0aW9uKQorICAgICAgICA6IG1f
YXJndW1lbnRzKGZyYW1lSUQsIGxpc3RlbmVySUQsIHBvbGljeUFjdGlvbikKKyAgICB7CisgICAg
fQorCisgICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAorICAgIHsKKyAgICAg
ICAgcmV0dXJuIG1fYXJndW1lbnRzOworICAgIH0KKworcHJpdmF0ZToKKyAgICBBcmd1bWVudHMg
bV9hcmd1bWVudHM7Cit9OworCitjbGFzcyBDbG9zZSB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBz
dGQ6OnR1cGxlPD4gQXJndW1lbnRzOworCisgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFt
ZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfQ2xvc2U7IH0KKyAgICBzdGF0
aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKKworICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJn
dW1lbnRzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKKyAgICB9
CisKK3ByaXZhdGU6CisgICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOworfTsKKworY2xhc3MgUHJl
ZmVyZW5jZXNEaWRDaGFuZ2UgeworcHVibGljOgorICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxjb25z
dCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmUmPiBBcmd1bWVudHM7CisKKyAgICBzdGF0aWMg
SVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFn
ZV9QcmVmZXJlbmNlc0RpZENoYW5nZTsgfQorICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9
IGZhbHNlOworCisgICAgZXhwbGljaXQgUHJlZmVyZW5jZXNEaWRDaGFuZ2UoY29uc3QgV2ViS2l0
OjpXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSkKKyAgICAgICAgOiBtX2FyZ3VtZW50cyhzdG9y
ZSkKKyAgICB7CisgICAgfQorCisgICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25z
dAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOworICAgIH0KKworcHJpdmF0ZToK
KyAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Cit9OworCitjbGFzcyBTZW5kRG91YmxlQW5kRmxv
YXQgeworcHVibGljOgorICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxkb3VibGUsIGZsb2F0PiBBcmd1
bWVudHM7CisKKyAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBD
OjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9TZW5kRG91YmxlQW5kRmxvYXQ7IH0KKyAgICBzdGF0aWMg
Y29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKKworICAgIFNlbmREb3VibGVBbmRGbG9hdChkb3Vi
bGUgZCwgZmxvYXQgZikKKyAgICAgICAgOiBtX2FyZ3VtZW50cyhkLCBmKQorICAgIHsKKyAgICB9
CisKKyAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0CisgICAgeworICAgICAg
ICByZXR1cm4gbV9hcmd1bWVudHM7CisgICAgfQorCitwcml2YXRlOgorICAgIEFyZ3VtZW50cyBt
X2FyZ3VtZW50czsKK307CisKK2NsYXNzIFNlbmRJbnRzIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVm
IHN0ZDo6dHVwbGU8Y29uc3QgVmVjdG9yPHVpbnQ2NF90PiYsIGNvbnN0IFZlY3RvcjxWZWN0b3I8
dWludDY0X3Q+PiY+IEFyZ3VtZW50czsKKworICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5h
bWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX1NlbmRJbnRzOyB9CisgICAg
c3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7CisKKyAgICBTZW5kSW50cyhjb25zdCBW
ZWN0b3I8dWludDY0X3Q+JiBpbnRzLCBjb25zdCBWZWN0b3I8VmVjdG9yPHVpbnQ2NF90Pj4mIGlu
dFZlY3RvcnMpCisgICAgICAgIDogbV9hcmd1bWVudHMoaW50cywgaW50VmVjdG9ycykKKyAgICB7
CisgICAgfQorCisgICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAorICAgIHsK
KyAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOworICAgIH0KKworcHJpdmF0ZToKKyAgICBBcmd1
bWVudHMgbV9hcmd1bWVudHM7Cit9OworCitjbGFzcyBDcmVhdGVQbHVnaW4geworcHVibGljOgor
ICAgIHR5cGVkZWYgc3RkOjp0dXBsZTx1aW50NjRfdCwgY29uc3QgV2ViS2l0OjpQbHVnaW46OlBh
cmFtZXRlcnMmPiBBcmd1bWVudHM7CisKKyAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1l
KCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9DcmVhdGVQbHVnaW47IH0KKyAg
ICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSB0cnVlOworCisgICAgdXNpbmcgUmVwbHkgPSBz
dGQ6OnR1cGxlPGJvb2wmPjsKKyAgICB1c2luZyBSZXBseUFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8
Ym9vbD47CisgICAgQ3JlYXRlUGx1Z2luKHVpbnQ2NF90IHBsdWdpbkluc3RhbmNlSUQsIGNvbnN0
IFdlYktpdDo6UGx1Z2luOjpQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQorICAgICAgICA6IG1fYXJn
dW1lbnRzKHBsdWdpbkluc3RhbmNlSUQsIHBhcmFtZXRlcnMpCisgICAgeworICAgIH0KKworICAg
IGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVy
biBtX2FyZ3VtZW50czsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQXJndW1lbnRzIG1fYXJndW1l
bnRzOworfTsKKworY2xhc3MgUnVuSmF2YVNjcmlwdEFsZXJ0IHsKK3B1YmxpYzoKKyAgICB0eXBl
ZGVmIHN0ZDo6dHVwbGU8dWludDY0X3QsIGNvbnN0IFN0cmluZyY+IEFyZ3VtZW50czsKKworICAg
IHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1l
OjpXZWJQYWdlX1J1bkphdmFTY3JpcHRBbGVydDsgfQorICAgIHN0YXRpYyBjb25zdCBib29sIGlz
U3luYyA9IHRydWU7CisKKyAgICB1c2luZyBSZXBseSA9IHN0ZDo6dHVwbGU8PjsKKyAgICB1c2lu
ZyBSZXBseUFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8PjsKKyAgICBSdW5KYXZhU2NyaXB0QWxlcnQo
dWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQorICAgICAgICA6IG1fYXJn
dW1lbnRzKGZyYW1lSUQsIG1lc3NhZ2UpCisgICAgeworICAgIH0KKworICAgIGNvbnN0IEFyZ3Vt
ZW50cyYgYXJndW1lbnRzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2FyZ3VtZW50
czsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOworfTsKKwor
Y2xhc3MgR2V0UGx1Z2lucyB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGJvb2w+
IEFyZ3VtZW50czsKKworICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVy
biBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX0dldFBsdWdpbnM7IH0KKyAgICBzdGF0aWMgY29u
c3QgYm9vbCBpc1N5bmMgPSB0cnVlOworCisgICAgdXNpbmcgUmVwbHkgPSBzdGQ6OnR1cGxlPFZl
Y3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiY+OworICAgIHVzaW5nIFJlcGx5QXJndW1lbnRzID0g
c3RkOjp0dXBsZTxWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4+OworICAgIGV4cGxpY2l0IEdl
dFBsdWdpbnMoYm9vbCByZWZyZXNoKQorICAgICAgICA6IG1fYXJndW1lbnRzKHJlZnJlc2gpCisg
ICAgeworICAgIH0KKworICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKKyAg
ICB7CisgICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKKyAgICB9CisKK3ByaXZhdGU6CisgICAg
QXJndW1lbnRzIG1fYXJndW1lbnRzOworfTsKKworY2xhc3MgR2V0UGx1Z2luUHJvY2Vzc0Nvbm5l
Y3Rpb24geworcHVibGljOgorICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBTdHJpbmcmPiBB
cmd1bWVudHM7CisKKyAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4g
SVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9HZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjsgfQor
ICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IHRydWU7CisKKyAgICB1c2luZyBEZWxheWVk
UmVwbHkgPSBHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbkRlbGF5ZWRSZXBseTsKKyAgICBzdGF0
aWMgdm9pZCBzZW5kKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiYsIElQQzo6Q29ubmVj
dGlvbiYsIGNvbnN0IElQQzo6Q29ubmVjdGlvbjo6SGFuZGxlJiBjb25uZWN0aW9uSGFuZGxlKTsK
KyAgICB1c2luZyBSZXBseSA9IHN0ZDo6dHVwbGU8SVBDOjpDb25uZWN0aW9uOjpIYW5kbGUmPjsK
KyAgICB1c2luZyBSZXBseUFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8SVBDOjpDb25uZWN0aW9uOjpI
YW5kbGU+OworICAgIGV4cGxpY2l0IEdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKGNvbnN0IFN0
cmluZyYgcGx1Z2luUGF0aCkKKyAgICAgICAgOiBtX2FyZ3VtZW50cyhwbHVnaW5QYXRoKQorICAg
IHsKKyAgICB9CisKKyAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0CisgICAg
eworICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7CisgICAgfQorCitwcml2YXRlOgorICAgIEFy
Z3VtZW50cyBtX2FyZ3VtZW50czsKK307CisKK2NsYXNzIFRlc3RNdWx0aXBsZUF0dHJpYnV0ZXMg
eworcHVibGljOgorICAgIHR5cGVkZWYgc3RkOjp0dXBsZTw+IEFyZ3VtZW50czsKKworICAgIHN0
YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpX
ZWJQYWdlX1Rlc3RNdWx0aXBsZUF0dHJpYnV0ZXM7IH0KKyAgICBzdGF0aWMgY29uc3QgYm9vbCBp
c1N5bmMgPSB0cnVlOworCisgICAgdXNpbmcgRGVsYXllZFJlcGx5ID0gVGVzdE11bHRpcGxlQXR0
cmlidXRlc0RlbGF5ZWRSZXBseTsKKyAgICBzdGF0aWMgdm9pZCBzZW5kKHN0ZDo6dW5pcXVlX3B0
cjxJUEM6OkVuY29kZXI+JiYsIElQQzo6Q29ubmVjdGlvbiYpOworICAgIHVzaW5nIFJlcGx5ID0g
c3RkOjp0dXBsZTw+OworICAgIHVzaW5nIFJlcGx5QXJndW1lbnRzID0gc3RkOjp0dXBsZTw+Owor
ICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJl
dHVybiBtX2FyZ3VtZW50czsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQXJndW1lbnRzIG1fYXJn
dW1lbnRzOworfTsKKworY2xhc3MgVGVzdFBhcmFtZXRlckF0dHJpYnV0ZXMgeworcHVibGljOgor
ICAgIHR5cGVkZWYgc3RkOjp0dXBsZTx1aW50NjRfdCwgZG91YmxlLCBkb3VibGU+IEFyZ3VtZW50
czsKKworICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1l
c3NhZ2VOYW1lOjpXZWJQYWdlX1Rlc3RQYXJhbWV0ZXJBdHRyaWJ1dGVzOyB9CisgICAgc3RhdGlj
IGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7CisKKyAgICBUZXN0UGFyYW1ldGVyQXR0cmlidXRl
cyh1aW50NjRfdCBmb28sIGRvdWJsZSBiYXIsIGRvdWJsZSBiYXopCisgICAgICAgIDogbV9hcmd1
bWVudHMoZm9vLCBiYXIsIGJheikKKyAgICB7CisgICAgfQorCisgICAgY29uc3QgQXJndW1lbnRz
JiBhcmd1bWVudHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwor
ICAgIH0KKworcHJpdmF0ZToKKyAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Cit9OworCitjbGFz
cyBUZW1wbGF0ZVRlc3QgeworcHVibGljOgorICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBI
YXNoTWFwPFN0cmluZywgc3RkOjpwYWlyPFN0cmluZywgdWludDY0X3Q+PiY+IEFyZ3VtZW50czsK
KworICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3Nh
Z2VOYW1lOjpXZWJQYWdlX1RlbXBsYXRlVGVzdDsgfQorICAgIHN0YXRpYyBjb25zdCBib29sIGlz
U3luYyA9IGZhbHNlOworCisgICAgZXhwbGljaXQgVGVtcGxhdGVUZXN0KGNvbnN0IEhhc2hNYXA8
U3RyaW5nLCBzdGQ6OnBhaXI8U3RyaW5nLCB1aW50NjRfdD4+JiBhKQorICAgICAgICA6IG1fYXJn
dW1lbnRzKGEpCisgICAgeworICAgIH0KKworICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRz
KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKKyAgICB9CisKK3By
aXZhdGU6CisgICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOworfTsKKworY2xhc3MgU2V0VmlkZW9M
YXllcklEIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8Y29uc3QgV2ViQ29yZTo6
R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklEJj4gQXJndW1lbnRzOworCisgICAgc3RhdGlj
IElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OldlYlBh
Z2VfU2V0VmlkZW9MYXllcklEOyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFs
c2U7CisKKyAgICBleHBsaWNpdCBTZXRWaWRlb0xheWVySUQoY29uc3QgV2ViQ29yZTo6R3JhcGhp
Y3NMYXllcjo6UGxhdGZvcm1MYXllcklEJiB2aWRlb0xheWVySUQpCisgICAgICAgIDogbV9hcmd1
bWVudHModmlkZW9MYXllcklEKQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdCBBcmd1bWVudHMm
IGFyZ3VtZW50cygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7Cisg
ICAgfQorCitwcml2YXRlOgorICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKK307CisKKyNpZiBQ
TEFURk9STShNQUMpCitjbGFzcyBEaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbiB7CitwdWJs
aWM6CisgICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGNvbnN0IElQQzo6TWFjaFBvcnQmPiBBcmd1bWVu
dHM7CisKKyAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpN
ZXNzYWdlTmFtZTo6V2ViUGFnZV9EaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbjsgfQorICAg
IHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOworCisgICAgZXhwbGljaXQgRGlkQ3Jl
YXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oY29uc3QgSVBDOjpNYWNoUG9ydCYgY29ubmVjdGlvbklk
ZW50aWZpZXIpCisgICAgICAgIDogbV9hcmd1bWVudHMoY29ubmVjdGlvbklkZW50aWZpZXIpCisg
ICAgeworICAgIH0KKworICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKKyAg
ICB7CisgICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKKyAgICB9CisKK3ByaXZhdGU6CisgICAg
QXJndW1lbnRzIG1fYXJndW1lbnRzOworfTsKKyNlbmRpZgorCisjaWYgUExBVEZPUk0oTUFDKQor
Y2xhc3MgSW50ZXJwcmV0S2V5RXZlbnQgeworcHVibGljOgorICAgIHR5cGVkZWYgc3RkOjp0dXBs
ZTx1aW50MzJfdD4gQXJndW1lbnRzOworCisgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFt
ZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfSW50ZXJwcmV0S2V5RXZlbnQ7
IH0KKyAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSB0cnVlOworCisgICAgdXNpbmcgUmVw
bHkgPSBzdGQ6OnR1cGxlPFZlY3RvcjxXZWJDb3JlOjpLZXlwcmVzc0NvbW1hbmQ+Jj47CisgICAg
dXNpbmcgUmVwbHlBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPFZlY3RvcjxXZWJDb3JlOjpLZXlwcmVz
c0NvbW1hbmQ+PjsKKyAgICBleHBsaWNpdCBJbnRlcnByZXRLZXlFdmVudCh1aW50MzJfdCB0eXBl
KQorICAgICAgICA6IG1fYXJndW1lbnRzKHR5cGUpCisgICAgeworICAgIH0KKworICAgIGNvbnN0
IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2Fy
Z3VtZW50czsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwor
fTsKKyNlbmRpZgorCisjaWYgRU5BQkxFKERFUFJFQ0FURURfRkVBVFVSRSkKK2NsYXNzIERlcHJl
Y2F0ZWRPcGVyYXRpb24geworcHVibGljOgorICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBJ
UEM6OkR1bW15VHlwZSY+IEFyZ3VtZW50czsKKworICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1l
IG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX0RlcHJlY2F0ZWRPcGVy
YXRpb247IH0KKyAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKKworICAgIGV4
cGxpY2l0IERlcHJlY2F0ZWRPcGVyYXRpb24oY29uc3QgSVBDOjpEdW1teVR5cGUmIGR1bW15KQor
ICAgICAgICA6IG1fYXJndW1lbnRzKGR1bW15KQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdCBB
cmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9hcmd1
bWVudHM7CisgICAgfQorCitwcml2YXRlOgorICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKK307
CisjZW5kaWYKKworI2lmIEVOQUJMRShFWFBFUklNRU5UQUxfRkVBVFVSRSkKK2NsYXNzIEV4cGVy
aW1lbnRhbE9wZXJhdGlvbiB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGNvbnN0
IElQQzo6RHVtbXlUeXBlJj4gQXJndW1lbnRzOworCisgICAgc3RhdGljIElQQzo6TWVzc2FnZU5h
bWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfRXhwZXJpbWVudGFs
T3BlcmF0aW9uOyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7CisKKyAg
ICBleHBsaWNpdCBFeHBlcmltZW50YWxPcGVyYXRpb24oY29uc3QgSVBDOjpEdW1teVR5cGUmIGR1
bW15KQorICAgICAgICA6IG1fYXJndW1lbnRzKGR1bW15KQorICAgIHsKKyAgICB9CisKKyAgICBj
b25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4g
bV9hcmd1bWVudHM7CisgICAgfQorCitwcml2YXRlOgorICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50
czsKK307CisjZW5kaWYKKworfSAvLyBuYW1lc3BhY2UgV2ViUGFnZQorfSAvLyBuYW1lc3BhY2Ug
TWVzc2FnZXMKKworI2VuZGlmIC8vIChFTkFCTEUoV0VCS0lUMikgJiYgKE5FU1RFRF9NQVNURVJf
Q09ORElUSU9OIHx8IE1BU1RFUl9PUiAmJiBNQVNURVJfQU5EKSkKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvU2NyaXB0cy90ZXN0LWxlZ2FjeU1lc3NhZ2VzUmVwbGllcy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvU2NyaXB0cy90ZXN0LWxlZ2FjeU1lc3NhZ2VzUmVwbGllcy5oCShub25leGlz
dGVudCkKKysrIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy90ZXN0LWxlZ2FjeU1lc3NhZ2VzUmVwbGll
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTAtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2lmIChFTkFCTEUoV0VCS0lUMikgJiYgKE5FU1RFRF9NQVNURVJfQ09O
RElUSU9OIHx8IE1BU1RFUl9PUiAmJiBNQVNURVJfQU5EKSkKKworI2luY2x1ZGUgIkNvbm5lY3Rp
b24uaCIKKyNpbmNsdWRlICJNZXNzYWdlTmFtZXMuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgorCisKK25hbWVzcGFjZSBNZXNzYWdlcyB7CituYW1lc3BhY2UgV2ViUGFnZSB7CisKK3VzaW5n
IEdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uRGVsYXllZFJlcGx5ID0gQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChjb25zdCBJUEM6OkNvbm5lY3Rpb246OkhhbmRsZSYgY29ubmVjdGlvbkhhbmRsZSk+
OworCit1c2luZyBUZXN0TXVsdGlwbGVBdHRyaWJ1dGVzRGVsYXllZFJlcGx5ID0gQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPjsKKworfSAvLyBuYW1lc3BhY2UgV2ViUGFnZQorfSAvLyBuYW1lc3Bh
Y2UgTWVzc2FnZXMKKworI2VuZGlmIC8vIChFTkFCTEUoV0VCS0lUMikgJiYgKE5FU1RFRF9NQVNU
RVJfQ09ORElUSU9OIHx8IE1BU1RFUl9PUiAmJiBNQVNURVJfQU5EKSkKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvU2NyaXB0cy90ZXN0LXN1cGVyY2xhc3NNZXNzYWdlUmVjZWl2ZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy90ZXN0LXN1cGVyY2xhc3NNZXNzYWdlUmVjZWl2
ZXIuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy90ZXN0LXN1cGVy
Y2xhc3NNZXNzYWdlUmVjZWl2ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTg5IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgor
ICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSCisgKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiV2Vi
UGFnZS5oIgorCisjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJEZWNvZGVy
LmgiCisjaW5jbHVkZSAiSGFuZGxlTWVzc2FnZS5oIgorI2luY2x1ZGUgIlRlc3RDbGFzc05hbWUu
aCIKKyNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQorI2luY2x1ZGUgIlRlc3RUd29TdGF0ZUVudW0u
aCIKKyNlbmRpZgorI2luY2x1ZGUgIldlYlBhZ2VNZXNzYWdlcy5oIgorI2luY2x1ZGUgPHd0Zi9P
cHRpb25hbC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2Ug
TWVzc2FnZXMgeworCituYW1lc3BhY2UgV2ViUGFnZSB7CisKKyNpZiBFTkFCTEUoVEVTVF9GRUFU
VVJFKQorCit2b2lkIFRlc3RBc3luY01lc3NhZ2U6OmNhbGxSZXBseShJUEM6OkRlY29kZXImIGRl
Y29kZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0X3QmJik+JiYgY29tcGxldGlvbkhh
bmRsZXIpCit7CisgICAgT3B0aW9uYWw8dWludDY0X3Q+IHJlc3VsdDsKKyAgICBkZWNvZGVyID4+
IHJlc3VsdDsKKyAgICBpZiAoIXJlc3VsdCkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgY2FuY2VsUmVwbHkoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAg
ICAgICByZXR1cm47CisgICAgfQorICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoKnJlc3Vs
dCkpOworfQorCit2b2lkIFRlc3RBc3luY01lc3NhZ2U6OmNhbmNlbFJlcGx5KENvbXBsZXRpb25I
YW5kbGVyPHZvaWQodWludDY0X3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgY29t
cGxldGlvbkhhbmRsZXIoSVBDOjpBc3luY1JlcGx5RXJyb3I8dWludDY0X3Q+OjpjcmVhdGUoKSk7
Cit9CisKK3ZvaWQgVGVzdEFzeW5jTWVzc2FnZTo6c2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpF
bmNvZGVyPiYmIGVuY29kZXIsIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgdWludDY0X3Qg
cmVzdWx0KQoreworICAgICplbmNvZGVyIDw8IHJlc3VsdDsKKyAgICBjb25uZWN0aW9uLnNlbmRT
eW5jUmVwbHkoV1RGTW92ZShlbmNvZGVyKSk7Cit9CisKKyNlbmRpZgorCisjaWYgRU5BQkxFKFRF
U1RfRkVBVFVSRSkKKwordm9pZCBUZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJndW1lbnRzOjpjYWxs
UmVwbHkoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKK30KKwordm9p
ZCBUZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJndW1lbnRzOjpjYW5jZWxSZXBseShDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgY29tcGxldGlvbkhh
bmRsZXIoKTsKK30KKwordm9pZCBUZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJndW1lbnRzOjpzZW5k
KHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiYgZW5jb2RlciwgSVBDOjpDb25uZWN0aW9u
JiBjb25uZWN0aW9uKQoreworICAgIGNvbm5lY3Rpb24uc2VuZFN5bmNSZXBseShXVEZNb3ZlKGVu
Y29kZXIpKTsKK30KKworI2VuZGlmCisKKyNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQorCit2b2lk
IFRlc3RBc3luY01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHM6OmNhbGxSZXBseShJUEM6OkRl
Y29kZXImIGRlY29kZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCYmLCB1aW50NjRfdCYm
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBPcHRpb25hbDxib29sPiBmbGFnOworICAg
IGRlY29kZXIgPj4gZmxhZzsKKyAgICBpZiAoIWZsYWcpIHsKKyAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgICAgIGNhbmNlbFJlcGx5KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBPcHRpb25hbDx1aW50NjRfdD4gdmFsdWU7
CisgICAgZGVjb2RlciA+PiB2YWx1ZTsKKyAgICBpZiAoIXZhbHVlKSB7CisgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBjYW5jZWxSZXBseShXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgY29tcGxldGlvbkhhbmRsZXIo
V1RGTW92ZSgqZmxhZyksIFdURk1vdmUoKnZhbHVlKSk7Cit9CisKK3ZvaWQgVGVzdEFzeW5jTWVz
c2FnZVdpdGhNdWx0aXBsZUFyZ3VtZW50czo6Y2FuY2VsUmVwbHkoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sJiYsIHVpbnQ2NF90JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGNv
bXBsZXRpb25IYW5kbGVyKElQQzo6QXN5bmNSZXBseUVycm9yPGJvb2w+OjpjcmVhdGUoKSwgSVBD
OjpBc3luY1JlcGx5RXJyb3I8dWludDY0X3Q+OjpjcmVhdGUoKSk7Cit9CisKK3ZvaWQgVGVzdEFz
eW5jTWVzc2FnZVdpdGhNdWx0aXBsZUFyZ3VtZW50czo6c2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBD
OjpFbmNvZGVyPiYmIGVuY29kZXIsIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgYm9vbCBm
bGFnLCB1aW50NjRfdCB2YWx1ZSkKK3sKKyAgICAqZW5jb2RlciA8PCBmbGFnOworICAgICplbmNv
ZGVyIDw8IHZhbHVlOworICAgIGNvbm5lY3Rpb24uc2VuZFN5bmNSZXBseShXVEZNb3ZlKGVuY29k
ZXIpKTsKK30KKworI2VuZGlmCisKK3ZvaWQgVGVzdFN5bmNNZXNzYWdlOjpzZW5kKHN0ZDo6dW5p
cXVlX3B0cjxJUEM6OkVuY29kZXI+JiYgZW5jb2RlciwgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0
aW9uLCB1aW50OF90IHJlcGx5KQoreworICAgICplbmNvZGVyIDw8IHJlcGx5OworICAgIGNvbm5l
Y3Rpb24uc2VuZFN5bmNSZXBseShXVEZNb3ZlKGVuY29kZXIpKTsKK30KKwordm9pZCBUZXN0U3lu
Y2hyb25vdXNNZXNzYWdlOjpzZW5kKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiYgZW5j
b2RlciwgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBPcHRpb25hbDxXZWJLaXQ6
OlRlc3RDbGFzc05hbWU+JiBvcHRpb25hbFJlcGx5KQoreworICAgICplbmNvZGVyIDw8IG9wdGlv
bmFsUmVwbHk7CisgICAgY29ubmVjdGlvbi5zZW5kU3luY1JlcGx5KFdURk1vdmUoZW5jb2Rlcikp
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJQYWdlCisKK30gLy8gbmFtZXNwYWNlIE1lc3NhZ2Vz
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit2b2lkIFdlYlBhZ2U6OmRpZFJlY2VpdmVNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQorewor
ICAgIGF1dG8gcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpOworICAgIGlmIChkZWNvZGVy
Lm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRVUkw6Om5hbWUoKSkgewor
ICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRVUkw+KGRl
Y29kZXIsIHRoaXMsICZXZWJQYWdlOjpsb2FkVVJMKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkg
PT0gTWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RBc3luY01lc3NhZ2U6Om5hbWUoKSkgeworICAgICAg
ICBJUEM6OmhhbmRsZU1lc3NhZ2VBc3luYzxNZXNzYWdlczo6V2ViUGFnZTo6VGVzdEFzeW5jTWVz
c2FnZT4oY29ubmVjdGlvbiwgZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OnRlc3RBc3luY01lc3Nh
Z2UpOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisjaWYgRU5BQkxFKFRFU1RfRkVB
VFVSRSkKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdl
OjpUZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJndW1lbnRzOjpuYW1lKCkpIHsKKyAgICAgICAgSVBD
OjpoYW5kbGVNZXNzYWdlQXN5bmM8TWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RBc3luY01lc3NhZ2VX
aXRoTm9Bcmd1bWVudHM+KGNvbm5lY3Rpb24sIGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjp0ZXN0
QXN5bmNNZXNzYWdlV2l0aE5vQXJndW1lbnRzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNl
bmRpZgorI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5h
bWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6VGVzdEFzeW5jTWVzc2FnZVdpdGhNdWx0aXBsZUFy
Z3VtZW50czo6bmFtZSgpKSB7CisgICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZUFzeW5jPE1lc3Nh
Z2VzOjpXZWJQYWdlOjpUZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1lbnRzPihjb25u
ZWN0aW9uLCBkZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6dGVzdEFzeW5jTWVzc2FnZVdpdGhNdWx0
aXBsZUFyZ3VtZW50cyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKyAgICBXZWJQ
YWdlQmFzZTo6ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7Cit9CisKK3Zv
aWQgV2ViUGFnZTo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVj
dGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVy
PiYgcmVwbHlFbmNvZGVyKQoreworICAgIGF1dG8gcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpOworICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6
OlRlc3RTeW5jTWVzc2FnZTo6bmFtZSgpKSB7CisgICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZVN5
bmNocm9ub3VzPE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0U3luY01lc3NhZ2U+KGNvbm5lY3Rpb24s
IGRlY29kZXIsIHJlcGx5RW5jb2RlciwgdGhpcywgJldlYlBhZ2U6OnRlc3RTeW5jTWVzc2FnZSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9
PSBNZXNzYWdlczo6V2ViUGFnZTo6VGVzdFN5bmNocm9ub3VzTWVzc2FnZTo6bmFtZSgpKSB7Cisg
ICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZVN5bmNocm9ub3VzPE1lc3NhZ2VzOjpXZWJQYWdlOjpU
ZXN0U3luY2hyb25vdXNNZXNzYWdlPihjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIs
IHRoaXMsICZXZWJQYWdlOjp0ZXN0U3luY2hyb25vdXNNZXNzYWdlKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKyAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7CisgICAgVU5VU0VEX1BBUkFN
KGRlY29kZXIpOworICAgIFVOVVNFRF9QQVJBTShyZXBseUVuY29kZXIpOworICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKwpJbmRleDogU291cmNl
L1dlYktpdC9TY3JpcHRzL3Rlc3Qtc3VwZXJjbGFzc01lc3NhZ2VzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9TY3JpcHRzL3Rlc3Qtc3VwZXJjbGFzc01lc3NhZ2VzLmgJKG5vbmV4aXN0
ZW50KQorKysgU291cmNlL1dlYktpdC9TY3JpcHRzL3Rlc3Qtc3VwZXJjbGFzc01lc3NhZ2VzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyMDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTAtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiQ29ubmVj
dGlvbi5oIgorI2luY2x1ZGUgIk1lc3NhZ2VOYW1lcy5oIgorI2luY2x1ZGUgIlRlc3RDbGFzc05h
bWUuaCIKKyNpbmNsdWRlICJXZWJQYWdlTWVzc2FnZXNSZXBsaWVzLmgiCisjaW5jbHVkZSA8d3Rm
L0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KKyNpbmNsdWRlIDx3dGYvVGhy
ZWFkU2FmZVJlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKwor
bmFtZXNwYWNlIFdlYktpdCB7CitlbnVtIGNsYXNzIFRlc3RUd29TdGF0ZUVudW0gOiBib29sOwor
fQorCituYW1lc3BhY2UgTWVzc2FnZXMgeworbmFtZXNwYWNlIFdlYlBhZ2UgeworCitzdGF0aWMg
aW5saW5lIElQQzo6UmVjZWl2ZXJOYW1lIG1lc3NhZ2VSZWNlaXZlck5hbWUoKQoreworICAgIHJl
dHVybiBJUEM6OlJlY2VpdmVyTmFtZTo6V2ViUGFnZTsKK30KKworY2xhc3MgTG9hZFVSTCB7Citw
dWJsaWM6CisgICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGNvbnN0IFN0cmluZyY+IEFyZ3VtZW50czsK
KworICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3Nh
Z2VOYW1lOjpXZWJQYWdlX0xvYWRVUkw7IH0KKyAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMg
PSBmYWxzZTsKKworICAgIGV4cGxpY2l0IExvYWRVUkwoY29uc3QgU3RyaW5nJiB1cmwpCisgICAg
ICAgIDogbV9hcmd1bWVudHModXJsKQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdCBBcmd1bWVu
dHMmIGFyZ3VtZW50cygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7
CisgICAgfQorCitwcml2YXRlOgorICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKK307CisKKyNp
ZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQorY2xhc3MgVGVzdEFzeW5jTWVzc2FnZSB7CitwdWJsaWM6
CisgICAgdHlwZWRlZiBzdGQ6OnR1cGxlPFdlYktpdDo6VGVzdFR3b1N0YXRlRW51bT4gQXJndW1l
bnRzOworCisgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6
TWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVzdEFzeW5jTWVzc2FnZTsgfQorICAgIHN0YXRpYyBjb25z
dCBib29sIGlzU3luYyA9IGZhbHNlOworCisgICAgc3RhdGljIHZvaWQgY2FsbFJlcGx5KElQQzo6
RGVjb2RlciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0X3QmJik+JiYpOworICAgIHN0
YXRpYyB2b2lkIGNhbmNlbFJlcGx5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0X3QmJik+
JiYpOworICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIGFzeW5jTWVzc2FnZVJlcGx5TmFtZSgp
IHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVzdEFzeW5jTWVzc2FnZVJlcGx5
OyB9CisgICAgdXNpbmcgQXN5bmNSZXBseSA9IFRlc3RBc3luY01lc3NhZ2VBc3luY1JlcGx5Owor
ICAgIHN0YXRpYyB2b2lkIHNlbmQoc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mJiwgSVBD
OjpDb25uZWN0aW9uJiwgdWludDY0X3QgcmVzdWx0KTsKKyAgICB1c2luZyBSZXBseSA9IHN0ZDo6
dHVwbGU8dWludDY0X3QmPjsKKyAgICB1c2luZyBSZXBseUFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8
dWludDY0X3Q+OworICAgIGV4cGxpY2l0IFRlc3RBc3luY01lc3NhZ2UoV2ViS2l0OjpUZXN0VHdv
U3RhdGVFbnVtIHR3b1N0YXRlRW51bSkKKyAgICAgICAgOiBtX2FyZ3VtZW50cyh0d29TdGF0ZUVu
dW0pCisgICAgeworICAgIH0KKworICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29u
c3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKKyAgICB9CisKK3ByaXZhdGU6
CisgICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOworfTsKKyNlbmRpZgorCisjaWYgRU5BQkxFKFRF
U1RfRkVBVFVSRSkKK2NsYXNzIFRlc3RBc3luY01lc3NhZ2VXaXRoTm9Bcmd1bWVudHMgeworcHVi
bGljOgorICAgIHR5cGVkZWYgc3RkOjp0dXBsZTw+IEFyZ3VtZW50czsKKworICAgIHN0YXRpYyBJ
UEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdl
X1Rlc3RBc3luY01lc3NhZ2VXaXRoTm9Bcmd1bWVudHM7IH0KKyAgICBzdGF0aWMgY29uc3QgYm9v
bCBpc1N5bmMgPSBmYWxzZTsKKworICAgIHN0YXRpYyB2b2lkIGNhbGxSZXBseShJUEM6OkRlY29k
ZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHN0YXRpYyB2b2lkIGNhbmNl
bFJlcGx5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgc3RhdGljIElQQzo6TWVz
c2FnZU5hbWUgYXN5bmNNZXNzYWdlUmVwbHlOYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFt
ZTo6V2ViUGFnZV9UZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJndW1lbnRzUmVwbHk7IH0KKyAgICB1
c2luZyBBc3luY1JlcGx5ID0gVGVzdEFzeW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50c0FzeW5jUmVw
bHk7CisgICAgc3RhdGljIHZvaWQgc2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYm
LCBJUEM6OkNvbm5lY3Rpb24mKTsKKyAgICB1c2luZyBSZXBseSA9IHN0ZDo6dHVwbGU8PjsKKyAg
ICB1c2luZyBSZXBseUFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8PjsKKyAgICBjb25zdCBBcmd1bWVu
dHMmIGFyZ3VtZW50cygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7
CisgICAgfQorCitwcml2YXRlOgorICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKK307CisjZW5k
aWYKKworI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCitjbGFzcyBUZXN0QXN5bmNNZXNzYWdlV2l0
aE11bHRpcGxlQXJndW1lbnRzIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8PiBB
cmd1bWVudHM7CisKKyAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4g
SVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9UZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJn
dW1lbnRzOyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7CisKKyAgICBz
dGF0aWMgdm9pZCBjYWxsUmVwbHkoSVBDOjpEZWNvZGVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sJiYsIHVpbnQ2NF90JiYpPiYmKTsKKyAgICBzdGF0aWMgdm9pZCBjYW5jZWxSZXBseShD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wmJiwgdWludDY0X3QmJik+JiYpOworICAgIHN0YXRp
YyBJUEM6Ok1lc3NhZ2VOYW1lIGFzeW5jTWVzc2FnZVJlcGx5TmFtZSgpIHsgcmV0dXJuIElQQzo6
TWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVzdEFzeW5jTWVzc2FnZVdpdGhNdWx0aXBsZUFyZ3VtZW50
c1JlcGx5OyB9CisgICAgdXNpbmcgQXN5bmNSZXBseSA9IFRlc3RBc3luY01lc3NhZ2VXaXRoTXVs
dGlwbGVBcmd1bWVudHNBc3luY1JlcGx5OworICAgIHN0YXRpYyB2b2lkIHNlbmQoc3RkOjp1bmlx
dWVfcHRyPElQQzo6RW5jb2Rlcj4mJiwgSVBDOjpDb25uZWN0aW9uJiwgYm9vbCBmbGFnLCB1aW50
NjRfdCB2YWx1ZSk7CisgICAgdXNpbmcgUmVwbHkgPSBzdGQ6OnR1cGxlPGJvb2wmLCB1aW50NjRf
dCY+OworICAgIHVzaW5nIFJlcGx5QXJndW1lbnRzID0gc3RkOjp0dXBsZTxib29sLCB1aW50NjRf
dD47CisgICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAorICAgIHsKKyAgICAg
ICAgcmV0dXJuIG1fYXJndW1lbnRzOworICAgIH0KKworcHJpdmF0ZToKKyAgICBBcmd1bWVudHMg
bV9hcmd1bWVudHM7Cit9OworI2VuZGlmCisKK2NsYXNzIFRlc3RTeW5jTWVzc2FnZSB7CitwdWJs
aWM6CisgICAgdHlwZWRlZiBzdGQ6OnR1cGxlPHVpbnQzMl90PiBBcmd1bWVudHM7CisKKyAgICBz
dGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6
V2ViUGFnZV9UZXN0U3luY01lc3NhZ2U7IH0KKyAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMg
PSB0cnVlOworCisgICAgdXNpbmcgRGVsYXllZFJlcGx5ID0gVGVzdFN5bmNNZXNzYWdlRGVsYXll
ZFJlcGx5OworICAgIHN0YXRpYyB2b2lkIHNlbmQoc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rl
cj4mJiwgSVBDOjpDb25uZWN0aW9uJiwgdWludDhfdCByZXBseSk7CisgICAgdXNpbmcgUmVwbHkg
PSBzdGQ6OnR1cGxlPHVpbnQ4X3QmPjsKKyAgICB1c2luZyBSZXBseUFyZ3VtZW50cyA9IHN0ZDo6
dHVwbGU8dWludDhfdD47CisgICAgZXhwbGljaXQgVGVzdFN5bmNNZXNzYWdlKHVpbnQzMl90IHBh
cmFtKQorICAgICAgICA6IG1fYXJndW1lbnRzKHBhcmFtKQorICAgIHsKKyAgICB9CisKKyAgICBj
b25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4g
bV9hcmd1bWVudHM7CisgICAgfQorCitwcml2YXRlOgorICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50
czsKK307CisKK2NsYXNzIFRlc3RTeW5jaHJvbm91c01lc3NhZ2UgeworcHVibGljOgorICAgIHR5
cGVkZWYgc3RkOjp0dXBsZTxib29sPiBBcmd1bWVudHM7CisKKyAgICBzdGF0aWMgSVBDOjpNZXNz
YWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9UZXN0U3lu
Y2hyb25vdXNNZXNzYWdlOyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gdHJ1ZTsK
KworICAgIHVzaW5nIERlbGF5ZWRSZXBseSA9IFRlc3RTeW5jaHJvbm91c01lc3NhZ2VEZWxheWVk
UmVwbHk7CisgICAgc3RhdGljIHZvaWQgc2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVy
PiYmLCBJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBPcHRpb25hbDxXZWJLaXQ6OlRlc3RDbGFzc05h
bWU+JiBvcHRpb25hbFJlcGx5KTsKKyAgICB1c2luZyBSZXBseSA9IHN0ZDo6dHVwbGU8T3B0aW9u
YWw8V2ViS2l0OjpUZXN0Q2xhc3NOYW1lPiY+OworICAgIHVzaW5nIFJlcGx5QXJndW1lbnRzID0g
c3RkOjp0dXBsZTxPcHRpb25hbDxXZWJLaXQ6OlRlc3RDbGFzc05hbWU+PjsKKyAgICBleHBsaWNp
dCBUZXN0U3luY2hyb25vdXNNZXNzYWdlKGJvb2wgdmFsdWUpCisgICAgICAgIDogbV9hcmd1bWVu
dHModmFsdWUpCisgICAgeworICAgIH0KKworICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRz
KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKKyAgICB9CisKK3By
aXZhdGU6CisgICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViUGFnZQorfSAvLyBuYW1lc3BhY2UgTWVzc2FnZXMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2Ny
aXB0cy90ZXN0LXN1cGVyY2xhc3NNZXNzYWdlc1JlcGxpZXMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1NjcmlwdHMvdGVzdC1zdXBlcmNsYXNzTWVzc2FnZXNSZXBsaWVzLmgJKG5vbmV4
aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9TY3JpcHRzL3Rlc3Qtc3VwZXJjbGFzc01lc3NhZ2Vz
UmVwbGllcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTAtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
CisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1lc3NhZ2VOYW1lcy5oIgorI2luY2x1ZGUg
IlRlc3RDbGFzc05hbWUuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0
Zi9PcHRpb25hbC5oPgorCisKK25hbWVzcGFjZSBNZXNzYWdlcyB7CituYW1lc3BhY2UgV2ViUGFn
ZSB7CisKKyNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQordXNpbmcgVGVzdEFzeW5jTWVzc2FnZUFz
eW5jUmVwbHkgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90IHJlc3VsdCk+OworI2Vu
ZGlmCisKKyNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQordXNpbmcgVGVzdEFzeW5jTWVzc2FnZVdp
dGhOb0FyZ3VtZW50c0FzeW5jUmVwbHkgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+OworI2Vu
ZGlmCisKKyNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQordXNpbmcgVGVzdEFzeW5jTWVzc2FnZVdp
dGhNdWx0aXBsZUFyZ3VtZW50c0FzeW5jUmVwbHkgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wgZmxhZywgdWludDY0X3QgdmFsdWUpPjsKKyNlbmRpZgorCit1c2luZyBUZXN0U3luY01lc3Nh
Z2VEZWxheWVkUmVwbHkgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ4X3QgcmVwbHkpPjsK
KwordXNpbmcgVGVzdFN5bmNocm9ub3VzTWVzc2FnZURlbGF5ZWRSZXBseSA9IENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoY29uc3QgT3B0aW9uYWw8V2ViS2l0OjpUZXN0Q2xhc3NOYW1lPiYgb3B0aW9u
YWxSZXBseSk+OworCit9IC8vIG5hbWVzcGFjZSBXZWJQYWdlCit9IC8vIG5hbWVzcGFjZSBNZXNz
YWdlcwpJbmRleDogU291cmNlL1dlYktpdC9TY3JpcHRzL3Rlc3RNZXNzYWdlUmVjZWl2ZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy90ZXN0TWVzc2FnZVJlY2VpdmVy
LmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvdGVzdE1lc3NhZ2VS
ZWNlaXZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIk5vbmUuaCIKKworI2luY2x1
ZGUgIkRlY29kZXIuaCIKKyNpbmNsdWRlICJIYW5kbGVNZXNzYWdlLmgiCisjaW5jbHVkZSAiTm9u
ZU1lc3NhZ2VzLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdAorCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvdGVzdE1lc3NhZ2VzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9TY3JpcHRzL3Rlc3RNZXNzYWdlcy5oCShub25leGlzdGVu
dCkKKysrIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy90ZXN0TWVzc2FnZXMuaAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUgorICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IK
KyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSCisgKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorICogT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlICJBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNs
dWRlICJNZXNzYWdlTmFtZXMuaCIKKyNpbmNsdWRlICJOb25lTWVzc2FnZXNSZXBsaWVzLmgiCisj
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50
ZWQuaD4KKworCituYW1lc3BhY2UgTWVzc2FnZXMgeworbmFtZXNwYWNlIE5vbmUgeworCitzdGF0
aWMgaW5saW5lIElQQzo6UmVjZWl2ZXJOYW1lIG1lc3NhZ2VSZWNlaXZlck5hbWUoKQoreworICAg
IHJldHVybiBJUEM6OlJlY2VpdmVyTmFtZTo6Tm9uZTsKK30KKworCit9IC8vIG5hbWVzcGFjZSBO
b25lCit9IC8vIG5hbWVzcGFjZSBNZXNzYWdlcwpJbmRleDogU291cmNlL1dlYktpdC9TY3JpcHRz
L3Rlc3RNZXNzYWdlc1JlcGxpZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1Njcmlw
dHMvdGVzdE1lc3NhZ2VzUmVwbGllcy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQv
U2NyaXB0cy90ZXN0TWVzc2FnZXNSZXBsaWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwz
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IKKyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTWVzc2Fn
ZU5hbWVzLmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKworCituYW1lc3BhY2UgTWVzc2Fn
ZXMgeworbmFtZXNwYWNlIE5vbmUgeworCisKK30gLy8gbmFtZXNwYWNlIE5vbmUKK30gLy8gbmFt
ZXNwYWNlIE1lc3NhZ2VzCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L0xlZ2Fj
eU1lc3NhZ2VSZWNlaXZlci1leHBlY3RlZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9TY3JpcHRzL3dlYmtpdC9MZWdhY3lNZXNzYWdlUmVjZWl2ZXItZXhwZWN0ZWQuY3BwCShyZXZp
c2lvbiAyNjA3NjQpCisrKyBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L0xlZ2FjeU1lc3Nh
Z2VSZWNlaXZlci1leHBlY3RlZC5jcHAJKG5vbmV4aXN0ZW50KQpAQCAtMSwyMDMgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECi0gKiBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSAq
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwKLSAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0gKiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UgotICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lmIChFTkFCTEUoV0VC
S0lUMikgJiYgKE5FU1RFRF9NQVNURVJfQ09ORElUSU9OIHx8IE1BU1RFUl9PUiAmJiBNQVNURVJf
QU5EKSkKLQotI2luY2x1ZGUgIldlYlBhZ2UuaCIKLQotI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJz
LmgiCi0jaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgotI2luY2x1ZGUgIkRlY29kZXIuaCIKLSNpZiBF
TkFCTEUoREVQUkVDQVRFRF9GRUFUVVJFKSB8fCBFTkFCTEUoRVhQRVJJTUVOVEFMX0ZFQVRVUkUp
Ci0jaW5jbHVkZSAiRHVtbXlUeXBlLmgiCi0jZW5kaWYKLSNpbmNsdWRlICJIYW5kbGVNZXNzYWdl
LmgiCi0jaWYgUExBVEZPUk0oTUFDKQotI2luY2x1ZGUgIk1hY2hQb3J0LmgiCi0jZW5kaWYKLSNp
bmNsdWRlICJQbHVnaW4uaCIKLSNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKLSNp
ZiAoRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgKE5FU1RFRF9NRVNTQUdFX0NPTkRJVElPTiAmJiBT
T01FX09USEVSX01FU1NBR0VfQ09ORElUSU9OKSkgfHwgKEVOQUJMRShUT1VDSF9FVkVOVFMpICYm
IChORVNURURfTUVTU0FHRV9DT05ESVRJT04gfHwgU09NRV9PVEhFUl9NRVNTQUdFX0NPTkRJVElP
TikpCi0jaW5jbHVkZSAiV2ViRXZlbnQuaCIKLSNlbmRpZgotI2luY2x1ZGUgIldlYlBhZ2VNZXNz
YWdlcy5oIgotI2luY2x1ZGUgIldlYlByZWZlcmVuY2VzU3RvcmUuaCIKLSNpbmNsdWRlIDxXZWJD
b3JlL0dyYXBoaWNzTGF5ZXIuaD4KLSNpZiBQTEFURk9STShNQUMpCi0jaW5jbHVkZSA8V2ViQ29y
ZS9LZXlib2FyZEV2ZW50Lmg+Ci0jZW5kaWYKLSNpbmNsdWRlIDxXZWJDb3JlL1BsdWdpbkRhdGEu
aD4KLSNpbmNsdWRlIDx1dGlsaXR5PgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1l
c3BhY2UgTWVzc2FnZXMgewotCi1uYW1lc3BhY2UgV2ViUGFnZSB7Ci0KLXZvaWQgR2V0UGx1Z2lu
UHJvY2Vzc0Nvbm5lY3Rpb246OnNlbmQoc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mJiBl
bmNvZGVyLCBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IElQQzo6Q29ubmVjdGlv
bjo6SGFuZGxlJiBjb25uZWN0aW9uSGFuZGxlKQotewotICAgICplbmNvZGVyIDw8IGNvbm5lY3Rp
b25IYW5kbGU7Ci0gICAgY29ubmVjdGlvbi5zZW5kU3luY1JlcGx5KFdURk1vdmUoZW5jb2Rlcikp
OwotfQotCi12b2lkIFRlc3RNdWx0aXBsZUF0dHJpYnV0ZXM6OnNlbmQoc3RkOjp1bmlxdWVfcHRy
PElQQzo6RW5jb2Rlcj4mJiBlbmNvZGVyLCBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCi17
Ci0gICAgY29ubmVjdGlvbi5zZW5kU3luY1JlcGx5KFdURk1vdmUoZW5jb2RlcikpOwotfQotCi19
IC8vIG5hbWVzcGFjZSBXZWJQYWdlCi0KLX0gLy8gbmFtZXNwYWNlIE1lc3NhZ2VzCi0KLW5hbWVz
cGFjZSBXZWJLaXQgewotCi12b2lkIFdlYlBhZ2U6OmRpZFJlY2VpdmVXZWJQYWdlTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikKLXsKLSAg
ICBhdXRvIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKTsKLSAgICBpZiAoZGVjb2Rlci5t
ZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkVVJMOjpuYW1lKCkpIHsKLSAg
ICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkVVJMPihkZWNv
ZGVyLCB0aGlzLCAmV2ViUGFnZTo6bG9hZFVSTCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0j
aWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09
IE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkU29tZXRoaW5nOjpuYW1lKCkpIHsKLSAgICAgICAgSVBD
OjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkU29tZXRoaW5nPihkZWNvZGVy
LCB0aGlzLCAmV2ViUGFnZTo6bG9hZFNvbWV0aGluZyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0jZW5kaWYKLSNpZiAoRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgKE5FU1RFRF9NRVNTQUdFX0NP
TkRJVElPTiB8fCBTT01FX09USEVSX01FU1NBR0VfQ09ORElUSU9OKSkKLSAgICBpZiAoZGVjb2Rl
ci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpUb3VjaEV2ZW50OjpuYW1lKCkp
IHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpUb3VjaEV2
ZW50PihkZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6dG91Y2hFdmVudCk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0jZW5kaWYKLSNpZiAoRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgKE5FU1RFRF9N
RVNTQUdFX0NPTkRJVElPTiAmJiBTT01FX09USEVSX01FU1NBR0VfQ09ORElUSU9OKSkKLSAgICBp
ZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpBZGRFdmVudDo6
bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6
QWRkRXZlbnQ+KGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjphZGRFdmVudCk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0jZW5kaWYKLSNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQotICAgIGlmIChk
ZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRTb21ldGhpbmdF
bHNlOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQ
YWdlOjpMb2FkU29tZXRoaW5nRWxzZT4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OmxvYWRTb21l
dGhpbmdFbHNlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNlbmRpZgotICAgIGlmIChkZWNv
ZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJlY2VpdmVQb2xpY3lE
ZWNpc2lvbjo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6
V2ViUGFnZTo6RGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uPihkZWNvZGVyLCB0aGlzLCAmV2ViUGFn
ZTo6ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAg
ICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpDbG9zZTo6
bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6
Q2xvc2U+KGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjpjbG9zZSk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFn
ZTo6UHJlZmVyZW5jZXNEaWRDaGFuZ2U6Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1l
c3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OlByZWZlcmVuY2VzRGlkQ2hhbmdlPihkZWNvZGVyLCB0
aGlzLCAmV2ViUGFnZTo6cHJlZmVyZW5jZXNEaWRDaGFuZ2UpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6
OlNlbmREb3VibGVBbmRGbG9hdDo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2Fn
ZTxNZXNzYWdlczo6V2ViUGFnZTo6U2VuZERvdWJsZUFuZEZsb2F0PihkZWNvZGVyLCB0aGlzLCAm
V2ViUGFnZTo6c2VuZERvdWJsZUFuZEZsb2F0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAg
ICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpTZW5kSW50
czo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFn
ZTo6U2VuZEludHM+KGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjpzZW5kSW50cyk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdl
czo6V2ViUGFnZTo6VGVzdFBhcmFtZXRlckF0dHJpYnV0ZXM6Om5hbWUoKSkgewotICAgICAgICBJ
UEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RQYXJhbWV0ZXJBdHRyaWJ1
dGVzPihkZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6dGVzdFBhcmFtZXRlckF0dHJpYnV0ZXMpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0g
TWVzc2FnZXM6OldlYlBhZ2U6OlRlbXBsYXRlVGVzdDo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6
aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6VGVtcGxhdGVUZXN0PihkZWNvZGVyLCB0
aGlzLCAmV2ViUGFnZTo6dGVtcGxhdGVUZXN0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAg
ICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRWaWRl
b0xheWVySUQ6Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6
OldlYlBhZ2U6OlNldFZpZGVvTGF5ZXJJRD4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OnNldFZp
ZGVvTGF5ZXJJRCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jaWYgUExBVEZPUk0oTUFDKQot
ICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OkRpZENy
ZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVN
ZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbj4o
ZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OmRpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNlbmRpZgotI2lmIEVOQUJMRShERVBSRUNBVEVEX0ZF
QVRVUkUpCi0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFn
ZTo6RGVwcmVjYXRlZE9wZXJhdGlvbjo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVz
c2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6RGVwcmVjYXRlZE9wZXJhdGlvbj4oZGVjb2RlciwgdGhp
cywgJldlYlBhZ2U6OmRlcHJlY2F0ZWRPcGVyYXRpb24pOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotI2VuZGlmCi0jaWYgRU5BQkxFKEVYUEVSSU1FTlRBTF9GRUFUVVJFKQotICAgIGlmIChkZWNv
ZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OkV4cGVyaW1lbnRhbE9wZXJh
dGlvbjo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2Vi
UGFnZTo6RXhwZXJpbWVudGFsT3BlcmF0aW9uPihkZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6ZXhw
ZXJpbWVudGFsT3BlcmF0aW9uKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNlbmRpZgotICAg
IFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsKLSAgICBVTlVTRURfUEFSQU0oZGVjb2Rlcik7Ci0g
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLXZvaWQgV2ViUGFnZTo6ZGlkUmVjZWl2ZVN5
bmNXZWJQYWdlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2Rl
ciYgZGVjb2Rlciwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mIHJlcGx5RW5jb2RlcikK
LXsKLSAgICBhdXRvIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKTsKLSAgICBpZiAoZGVj
b2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpDcmVhdGVQbHVnaW46Om5h
bWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OkNy
ZWF0ZVBsdWdpbj4oZGVjb2RlciwgKnJlcGx5RW5jb2RlciwgdGhpcywgJldlYlBhZ2U6OmNyZWF0
ZVBsdWdpbik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKGRlY29kZXIubWVzc2Fn
ZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6UnVuSmF2YVNjcmlwdEFsZXJ0OjpuYW1lKCkp
IHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpSdW5KYXZh
U2NyaXB0QWxlcnQ+KGRlY29kZXIsICpyZXBseUVuY29kZXIsIHRoaXMsICZXZWJQYWdlOjpydW5K
YXZhU2NyaXB0QWxlcnQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChkZWNvZGVy
Lm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OkdldFBsdWdpbnM6Om5hbWUoKSkg
ewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OkdldFBsdWdp
bnM+KGRlY29kZXIsICpyZXBseUVuY29kZXIsIHRoaXMsICZXZWJQYWdlOjpnZXRQbHVnaW5zKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09
IE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6bmFtZSgpKSB7
Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZVN5bmNocm9ub3VzPE1lc3NhZ2VzOjpXZWJQYWdl
OjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbj4oY29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlF
bmNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6Z2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24pOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVz
c2FnZXM6OldlYlBhZ2U6OlRlc3RNdWx0aXBsZUF0dHJpYnV0ZXM6Om5hbWUoKSkgewotICAgICAg
ICBJUEM6OmhhbmRsZU1lc3NhZ2VTeW5jaHJvbm91c1dhbnRzQ29ubmVjdGlvbjxNZXNzYWdlczo6
V2ViUGFnZTo6VGVzdE11bHRpcGxlQXR0cmlidXRlcz4oY29ubmVjdGlvbiwgZGVjb2RlciwgcmVw
bHlFbmNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6dGVzdE11bHRpcGxlQXR0cmlidXRlcyk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0jaWYgUExBVEZPUk0oTUFDKQotICAgIGlmIChkZWNvZGVyLm1l
c3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OkludGVycHJldEtleUV2ZW50OjpuYW1l
KCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpJbnRl
cnByZXRLZXlFdmVudD4oZGVjb2RlciwgKnJlcGx5RW5jb2RlciwgdGhpcywgJldlYlBhZ2U6Omlu
dGVycHJldEtleUV2ZW50KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNlbmRpZgotICAgIFVO
VVNFRF9QQVJBTShjb25uZWN0aW9uKTsKLSAgICBVTlVTRURfUEFSQU0oZGVjb2Rlcik7Ci0gICAg
VU5VU0VEX1BBUkFNKHJlcGx5RW5jb2Rlcik7Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0KLSNlbmRpZiAvLyAoRU5BQkxFKFdFQktJVDIp
ICYmIChORVNURURfTUFTVEVSX0NPTkRJVElPTiB8fCBNQVNURVJfT1IgJiYgTUFTVEVSX0FORCkp
CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L0xlZ2Fj
eU1lc3NhZ2VSZWNlaXZlci1leHBlY3RlZC5jcHAKX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46ZW9s
LXN0eWxlCiMjIC0xICswLDAgIyMKLW5hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3Bl
cnR5CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L0xlZ2FjeU1lc3NhZ2VzLWV4
cGVjdGVkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9MZWdh
Y3lNZXNzYWdlcy1leHBlY3RlZC5oCShyZXZpc2lvbiAyNjA3NjQpCisrKyBTb3VyY2UvV2ViS2l0
L1NjcmlwdHMvd2Via2l0L0xlZ2FjeU1lc3NhZ2VzLWV4cGVjdGVkLmgJKG5vbmV4aXN0ZW50KQpA
QCAtMSw1NzAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMC0yMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycgQU5ECi0gKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IKLSAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSAqIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0g
KiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUgotICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSAqIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYg
KEVOQUJMRShXRUJLSVQyKSAmJiAoTkVTVEVEX01BU1RFUl9DT05ESVRJT04gfHwgTUFTVEVSX09S
ICYmIE1BU1RFUl9BTkQpKQotCi0jaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKLSNpbmNsdWRl
ICJDb25uZWN0aW9uLmgiCi0jaW5jbHVkZSAiUGx1Z2luLmgiCi0jaW5jbHVkZSAiV2ViUGFnZU1l
c3NhZ2VzUmVwbGllcy5oIgotI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NMYXllci5oPgotI2lu
Y2x1ZGUgPFdlYkNvcmUvS2V5Ym9hcmRFdmVudC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvUGx1Z2lu
RGF0YS5oPgotI2luY2x1ZGUgPHV0aWxpdHk+Ci0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRl
ZC5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KLQotbmFtZXNwYWNlIElQQyB7Ci1jbGFzcyBEdW1teVR5cGU7Ci1jbGFzcyBNYWNoUG9y
dDsKLX0KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci1jbGFzcyBXZWJQcmVmZXJlbmNlc1N0b3JlOwot
Y2xhc3MgV2ViVG91Y2hFdmVudDsKLX0KLQotbmFtZXNwYWNlIE1lc3NhZ2VzIHsKLW5hbWVzcGFj
ZSBXZWJQYWdlIHsKLQotc3RhdGljIGlubGluZSBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdl
UmVjZWl2ZXJOYW1lKCkKLXsKLSAgICByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIldlYlBh
Z2UiKTsKLX0KLQotY2xhc3MgTG9hZFVSTCB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1
cGxlPGNvbnN0IFN0cmluZyY+IEFyZ3VtZW50czsKLQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1Jl
ZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0K
LSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3Ry
aW5nUmVmZXJlbmNlKCJMb2FkVVJMIik7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMg
PSBmYWxzZTsKLQotICAgIGV4cGxpY2l0IExvYWRVUkwoY29uc3QgU3RyaW5nJiB1cmwpCi0gICAg
ICAgIDogbV9hcmd1bWVudHModXJsKQotICAgIHsKLSAgICB9Ci0KLSAgICBjb25zdCBBcmd1bWVu
dHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7
Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKLX07Ci0KLSNp
ZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQotY2xhc3MgTG9hZFNvbWV0aGluZyB7Ci1wdWJsaWM6Ci0g
ICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGNvbnN0IFN0cmluZyY+IEFyZ3VtZW50czsKLQotICAgIHN0
YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNzYWdl
UmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgp
IHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJMb2FkU29tZXRoaW5nIik7IH0KLSAgICBz
dGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKLQotICAgIGV4cGxpY2l0IExvYWRTb21l
dGhpbmcoY29uc3QgU3RyaW5nJiB1cmwpCi0gICAgICAgIDogbV9hcmd1bWVudHModXJsKQotICAg
IHsKLSAgICB9Ci0KLSAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAg
ewotICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFy
Z3VtZW50cyBtX2FyZ3VtZW50czsKLX07Ci0jZW5kaWYKLQotI2lmIChFTkFCTEUoVE9VQ0hfRVZF
TlRTKSAmJiAoTkVTVEVEX01FU1NBR0VfQ09ORElUSU9OIHx8IFNPTUVfT1RIRVJfTUVTU0FHRV9D
T05ESVRJT04pKQotY2xhc3MgVG91Y2hFdmVudCB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6
OnR1cGxlPGNvbnN0IFdlYktpdDo6V2ViVG91Y2hFdmVudCY+IEFyZ3VtZW50czsKLQotICAgIHN0
YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNzYWdl
UmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgp
IHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJUb3VjaEV2ZW50Iik7IH0KLSAgICBzdGF0
aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKLQotICAgIGV4cGxpY2l0IFRvdWNoRXZlbnQo
Y29uc3QgV2ViS2l0OjpXZWJUb3VjaEV2ZW50JiBldmVudCkKLSAgICAgICAgOiBtX2FyZ3VtZW50
cyhldmVudCkKLSAgICB7Ci0gICAgfQotCi0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMo
KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJp
dmF0ZToKLSAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19OwotI2VuZGlmCi0KLSNpZiAoRU5B
QkxFKFRPVUNIX0VWRU5UUykgJiYgKE5FU1RFRF9NRVNTQUdFX0NPTkRJVElPTiAmJiBTT01FX09U
SEVSX01FU1NBR0VfQ09ORElUSU9OKSkKLWNsYXNzIEFkZEV2ZW50IHsKLXB1YmxpYzoKLSAgICB0
eXBlZGVmIHN0ZDo6dHVwbGU8Y29uc3QgV2ViS2l0OjpXZWJUb3VjaEV2ZW50Jj4gQXJndW1lbnRz
OwotCi0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0
dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsgfQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVy
ZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIkFkZEV2ZW50Iik7IH0K
LSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKLQotICAgIGV4cGxpY2l0IEFk
ZEV2ZW50KGNvbnN0IFdlYktpdDo6V2ViVG91Y2hFdmVudCYgZXZlbnQpCi0gICAgICAgIDogbV9h
cmd1bWVudHMoZXZlbnQpCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJn
dW1lbnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAgICB9
Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLSNlbmRpZgotCi0j
aWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLWNsYXNzIExvYWRTb21ldGhpbmdFbHNlIHsKLXB1Ymxp
YzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8Y29uc3QgU3RyaW5nJj4gQXJndW1lbnRzOwotCi0g
ICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1l
c3NhZ2VSZWNlaXZlck5hbWUoKTsgfQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBu
YW1lKCkgeyByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIkxvYWRTb21ldGhpbmdFbHNlIik7
IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKLQotICAgIGV4cGxpY2l0
IExvYWRTb21ldGhpbmdFbHNlKGNvbnN0IFN0cmluZyYgdXJsKQotICAgICAgICA6IG1fYXJndW1l
bnRzKHVybCkKLSAgICB7Ci0gICAgfQotCi0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMo
KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJp
dmF0ZToKLSAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19OwotI2VuZGlmCi0KLWNsYXNzIERp
ZFJlY2VpdmVQb2xpY3lEZWNpc2lvbiB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxl
PHVpbnQ2NF90LCB1aW50NjRfdCwgdWludDMyX3Q+IEFyZ3VtZW50czsKLQotICAgIHN0YXRpYyBJ
UEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2
ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0
dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24iKTsgfQot
ICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOwotCi0gICAgRGlkUmVjZWl2ZVBv
bGljeURlY2lzaW9uKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IGxpc3RlbmVySUQsIHVpbnQz
Ml90IHBvbGljeUFjdGlvbikKLSAgICAgICAgOiBtX2FyZ3VtZW50cyhmcmFtZUlELCBsaXN0ZW5l
cklELCBwb2xpY3lBY3Rpb24pCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0IEFyZ3VtZW50cyYg
YXJndW1lbnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAg
ICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLQotY2xhc3Mg
Q2xvc2UgewotcHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTw+IEFyZ3VtZW50czsKLQot
ICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVybiBt
ZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2Ug
bmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJDbG9zZSIpOyB9Ci0gICAgc3Rh
dGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7Ci0KLSAgICBjb25zdCBBcmd1bWVudHMmIGFy
Z3VtZW50cygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7Ci0gICAg
fQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKLX07Ci0KLWNsYXNzIFBy
ZWZlcmVuY2VzRGlkQ2hhbmdlIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8Y29u
c3QgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlJj4gQXJndW1lbnRzOwotCi0gICAgc3RhdGlj
IElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNl
aXZlck5hbWUoKTsgfQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyBy
ZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIlByZWZlcmVuY2VzRGlkQ2hhbmdlIik7IH0KLSAg
ICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKLQotICAgIGV4cGxpY2l0IFByZWZl
cmVuY2VzRGlkQ2hhbmdlKGNvbnN0IFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUp
Ci0gICAgICAgIDogbV9hcmd1bWVudHMoc3RvcmUpCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0
IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2Fy
Z3VtZW50czsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwot
fTsKLQotY2xhc3MgU2VuZERvdWJsZUFuZEZsb2F0IHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0
ZDo6dHVwbGU8ZG91YmxlLCBmbG9hdD4gQXJndW1lbnRzOwotCi0gICAgc3RhdGljIElQQzo6U3Ry
aW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUo
KTsgfQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBD
OjpTdHJpbmdSZWZlcmVuY2UoIlNlbmREb3VibGVBbmRGbG9hdCIpOyB9Ci0gICAgc3RhdGljIGNv
bnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7Ci0KLSAgICBTZW5kRG91YmxlQW5kRmxvYXQoZG91Ymxl
IGQsIGZsb2F0IGYpCi0gICAgICAgIDogbV9hcmd1bWVudHMoZCwgZikKLSAgICB7Ci0gICAgfQot
Ci0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsKLSAgICAgICAg
cmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1bWVudHMgbV9h
cmd1bWVudHM7Ci19OwotCi1jbGFzcyBTZW5kSW50cyB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBz
dGQ6OnR1cGxlPGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mLCBjb25zdCBWZWN0b3I8VmVjdG9yPHVp
bnQ2NF90Pj4mPiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2Ug
cmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAgc3Rh
dGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVy
ZW5jZSgiU2VuZEludHMiKTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNl
OwotCi0gICAgU2VuZEludHMoY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgaW50cywgY29uc3QgVmVj
dG9yPFZlY3Rvcjx1aW50NjRfdD4+JiBpbnRWZWN0b3JzKQotICAgICAgICA6IG1fYXJndW1lbnRz
KGludHMsIGludFZlY3RvcnMpCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0IEFyZ3VtZW50cyYg
YXJndW1lbnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAg
ICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLQotY2xhc3Mg
Q3JlYXRlUGx1Z2luIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8dWludDY0X3Qs
IGNvbnN0IFdlYktpdDo6UGx1Z2luOjpQYXJhbWV0ZXJzJj4gQXJndW1lbnRzOwotCi0gICAgc3Rh
dGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VS
ZWNlaXZlck5hbWUoKTsgfQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkg
eyByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIkNyZWF0ZVBsdWdpbiIpOyB9Ci0gICAgc3Rh
dGljIGNvbnN0IGJvb2wgaXNTeW5jID0gdHJ1ZTsKLQotICAgIHVzaW5nIFJlcGx5ID0gc3RkOjp0
dXBsZTxib29sJj47Ci0gICAgdXNpbmcgUmVwbHlBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPGJvb2w+
OwotICAgIENyZWF0ZVBsdWdpbih1aW50NjRfdCBwbHVnaW5JbnN0YW5jZUlELCBjb25zdCBXZWJL
aXQ6OlBsdWdpbjo6UGFyYW1ldGVycyYgcGFyYW1ldGVycykKLSAgICAgICAgOiBtX2FyZ3VtZW50
cyhwbHVnaW5JbnN0YW5jZUlELCBwYXJhbWV0ZXJzKQotICAgIHsKLSAgICB9Ci0KLSAgICBjb25z
dCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9h
cmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsK
LX07Ci0KLWNsYXNzIFJ1bkphdmFTY3JpcHRBbGVydCB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBz
dGQ6OnR1cGxlPHVpbnQ2NF90LCBjb25zdCBTdHJpbmcmPiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0
aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJl
Y2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7
IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiUnVuSmF2YVNjcmlwdEFsZXJ0Iik7IH0KLSAg
ICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSB0cnVlOwotCi0gICAgdXNpbmcgUmVwbHkgPSBz
dGQ6OnR1cGxlPD47Ci0gICAgdXNpbmcgUmVwbHlBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPD47Ci0g
ICAgUnVuSmF2YVNjcmlwdEFsZXJ0KHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgbWVz
c2FnZSkKLSAgICAgICAgOiBtX2FyZ3VtZW50cyhmcmFtZUlELCBtZXNzYWdlKQotICAgIHsKLSAg
ICB9Ci0KLSAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewotICAg
ICAgICByZXR1cm4gbV9hcmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50
cyBtX2FyZ3VtZW50czsKLX07Ci0KLWNsYXNzIEdldFBsdWdpbnMgewotcHVibGljOgotICAgIHR5
cGVkZWYgc3RkOjp0dXBsZTxib29sPiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJp
bmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgp
OyB9Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6
OlN0cmluZ1JlZmVyZW5jZSgiR2V0UGx1Z2lucyIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wg
aXNTeW5jID0gdHJ1ZTsKLQotICAgIHVzaW5nIFJlcGx5ID0gc3RkOjp0dXBsZTxWZWN0b3I8V2Vi
Q29yZTo6UGx1Z2luSW5mbz4mPjsKLSAgICB1c2luZyBSZXBseUFyZ3VtZW50cyA9IHN0ZDo6dHVw
bGU8VmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+PjsKLSAgICBleHBsaWNpdCBHZXRQbHVnaW5z
KGJvb2wgcmVmcmVzaCkKLSAgICAgICAgOiBtX2FyZ3VtZW50cyhyZWZyZXNoKQotICAgIHsKLSAg
ICB9Ci0KLSAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewotICAg
ICAgICByZXR1cm4gbV9hcmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50
cyBtX2FyZ3VtZW50czsKLX07Ci0KLWNsYXNzIEdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uIHsK
LXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8Y29uc3QgU3RyaW5nJj4gQXJndW1lbnRz
OwotCi0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0
dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsgfQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVy
ZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIkdldFBsdWdpblByb2Nl
c3NDb25uZWN0aW9uIik7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSB0cnVlOwot
Ci0gICAgdXNpbmcgRGVsYXllZFJlcGx5ID0gR2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25EZWxh
eWVkUmVwbHk7Ci0gICAgc3RhdGljIHZvaWQgc2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNv
ZGVyPiYmLCBJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBJUEM6OkNvbm5lY3Rpb246OkhhbmRsZSYg
Y29ubmVjdGlvbkhhbmRsZSk7Ci0gICAgdXNpbmcgUmVwbHkgPSBzdGQ6OnR1cGxlPElQQzo6Q29u
bmVjdGlvbjo6SGFuZGxlJj47Ci0gICAgdXNpbmcgUmVwbHlBcmd1bWVudHMgPSBzdGQ6OnR1cGxl
PElQQzo6Q29ubmVjdGlvbjo6SGFuZGxlPjsKLSAgICBleHBsaWNpdCBHZXRQbHVnaW5Qcm9jZXNz
Q29ubmVjdGlvbihjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgpCi0gICAgICAgIDogbV9hcmd1bWVu
dHMocGx1Z2luUGF0aCkKLSAgICB7Ci0gICAgfQotCi0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1
bWVudHMoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0K
LQotcHJpdmF0ZToKLSAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19OwotCi1jbGFzcyBUZXN0
TXVsdGlwbGVBdHRyaWJ1dGVzIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8PiBB
cmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1l
KCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6U3Ry
aW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiVGVzdE11
bHRpcGxlQXR0cmlidXRlcyIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gdHJ1
ZTsKLQotICAgIHVzaW5nIERlbGF5ZWRSZXBseSA9IFRlc3RNdWx0aXBsZUF0dHJpYnV0ZXNEZWxh
eWVkUmVwbHk7Ci0gICAgc3RhdGljIHZvaWQgc2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNv
ZGVyPiYmLCBJUEM6OkNvbm5lY3Rpb24mKTsKLSAgICB1c2luZyBSZXBseSA9IHN0ZDo6dHVwbGU8
PjsKLSAgICB1c2luZyBSZXBseUFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8PjsKLSAgICBjb25zdCBB
cmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9hcmd1
bWVudHM7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKLX07
Ci0KLWNsYXNzIFRlc3RQYXJhbWV0ZXJBdHRyaWJ1dGVzIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVm
IHN0ZDo6dHVwbGU8dWludDY0X3QsIGRvdWJsZSwgZG91YmxlPiBBcmd1bWVudHM7Ci0KLSAgICBz
dGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUo
KSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiVGVzdFBhcmFtZXRlckF0dHJpYnV0ZXMi
KTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOwotCi0gICAgVGVzdFBh
cmFtZXRlckF0dHJpYnV0ZXModWludDY0X3QgZm9vLCBkb3VibGUgYmFyLCBkb3VibGUgYmF6KQot
ICAgICAgICA6IG1fYXJndW1lbnRzKGZvbywgYmFyLCBiYXopCi0gICAgewotICAgIH0KLQotICAg
IGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVy
biBtX2FyZ3VtZW50czsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJndW1l
bnRzOwotfTsKLQotY2xhc3MgVGVtcGxhdGVUZXN0IHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0
ZDo6dHVwbGU8Y29uc3QgSGFzaE1hcDxTdHJpbmcsIHN0ZDo6cGFpcjxTdHJpbmcsIHVpbnQ2NF90
Pj4mPiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2
ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGljIElQ
Qzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgi
VGVtcGxhdGVUZXN0Iik7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsK
LQotICAgIGV4cGxpY2l0IFRlbXBsYXRlVGVzdChjb25zdCBIYXNoTWFwPFN0cmluZywgc3RkOjpw
YWlyPFN0cmluZywgdWludDY0X3Q+PiYgYSkKLSAgICAgICAgOiBtX2FyZ3VtZW50cyhhKQotICAg
IHsKLSAgICB9Ci0KLSAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAg
ewotICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFy
Z3VtZW50cyBtX2FyZ3VtZW50czsKLX07Ci0KLWNsYXNzIFNldFZpZGVvTGF5ZXJJRCB7Ci1wdWJs
aWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6
OlBsYXRmb3JtTGF5ZXJJRCY+IEFyZ3VtZW50czsKLQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1Jl
ZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0K
LSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3Ry
aW5nUmVmZXJlbmNlKCJTZXRWaWRlb0xheWVySUQiKTsgfQotICAgIHN0YXRpYyBjb25zdCBib29s
IGlzU3luYyA9IGZhbHNlOwotCi0gICAgZXhwbGljaXQgU2V0VmlkZW9MYXllcklEKGNvbnN0IFdl
YkNvcmU6OkdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRCYgdmlkZW9MYXllcklEKQotICAg
ICAgICA6IG1fYXJndW1lbnRzKHZpZGVvTGF5ZXJJRCkKLSAgICB7Ci0gICAgfQotCi0gICAgY29u
c3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1f
YXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7
Ci19OwotCi0jaWYgUExBVEZPUk0oTUFDKQotY2xhc3MgRGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5l
Y3Rpb24gewotcHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBJUEM6Ok1hY2hQ
b3J0Jj4gQXJndW1lbnRzOwotCi0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2Vp
dmVyTmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsgfQotICAgIHN0YXRpYyBJ
UEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2Uo
IkRpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uIik7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9v
bCBpc1N5bmMgPSBmYWxzZTsKLQotICAgIGV4cGxpY2l0IERpZENyZWF0ZVdlYlByb2Nlc3NDb25u
ZWN0aW9uKGNvbnN0IElQQzo6TWFjaFBvcnQmIGNvbm5lY3Rpb25JZGVudGlmaWVyKQotICAgICAg
ICA6IG1fYXJndW1lbnRzKGNvbm5lY3Rpb25JZGVudGlmaWVyKQotICAgIHsKLSAgICB9Ci0KLSAg
ICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1
cm4gbV9hcmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3Vt
ZW50czsKLX07Ci0jZW5kaWYKLQotI2lmIFBMQVRGT1JNKE1BQykKLWNsYXNzIEludGVycHJldEtl
eUV2ZW50IHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8dWludDMyX3Q+IEFyZ3Vt
ZW50czsKLQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7
IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdS
ZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJJbnRlcnByZXRL
ZXlFdmVudCIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gdHJ1ZTsKLQotICAg
IHVzaW5nIFJlcGx5ID0gc3RkOjp0dXBsZTxWZWN0b3I8V2ViQ29yZTo6S2V5cHJlc3NDb21tYW5k
PiY+OwotICAgIHVzaW5nIFJlcGx5QXJndW1lbnRzID0gc3RkOjp0dXBsZTxWZWN0b3I8V2ViQ29y
ZTo6S2V5cHJlc3NDb21tYW5kPj47Ci0gICAgZXhwbGljaXQgSW50ZXJwcmV0S2V5RXZlbnQodWlu
dDMyX3QgdHlwZSkKLSAgICAgICAgOiBtX2FyZ3VtZW50cyh0eXBlKQotICAgIHsKLSAgICB9Ci0K
LSAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewotICAgICAgICBy
ZXR1cm4gbV9hcmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBtX2Fy
Z3VtZW50czsKLX07Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShERVBSRUNBVEVEX0ZFQVRVUkUpCi1j
bGFzcyBEZXByZWNhdGVkT3BlcmF0aW9uIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVw
bGU8Y29uc3QgSVBDOjpEdW1teVR5cGUmPiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpT
dHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFt
ZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJ
UEM6OlN0cmluZ1JlZmVyZW5jZSgiRGVwcmVjYXRlZE9wZXJhdGlvbiIpOyB9Ci0gICAgc3RhdGlj
IGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7Ci0KLSAgICBleHBsaWNpdCBEZXByZWNhdGVkT3Bl
cmF0aW9uKGNvbnN0IElQQzo6RHVtbXlUeXBlJiBkdW1teSkKLSAgICAgICAgOiBtX2FyZ3VtZW50
cyhkdW1teSkKLSAgICB7Ci0gICAgfQotCi0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMo
KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJp
dmF0ZToKLSAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19OwotI2VuZGlmCi0KLSNpZiBFTkFC
TEUoRVhQRVJJTUVOVEFMX0ZFQVRVUkUpCi1jbGFzcyBFeHBlcmltZW50YWxPcGVyYXRpb24gewot
cHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBJUEM6OkR1bW15VHlwZSY+IEFy
Z3VtZW50czsKLQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUo
KSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJp
bmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJFeHBlcmlt
ZW50YWxPcGVyYXRpb24iKTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNl
OwotCi0gICAgZXhwbGljaXQgRXhwZXJpbWVudGFsT3BlcmF0aW9uKGNvbnN0IElQQzo6RHVtbXlU
eXBlJiBkdW1teSkKLSAgICAgICAgOiBtX2FyZ3VtZW50cyhkdW1teSkKLSAgICB7Ci0gICAgfQot
Ci0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsKLSAgICAgICAg
cmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1bWVudHMgbV9h
cmd1bWVudHM7Ci19OwotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIFdlYlBhZ2UKLX0gLy8gbmFt
ZXNwYWNlIE1lc3NhZ2VzCi0KLSNlbmRpZiAvLyAoRU5BQkxFKFdFQktJVDIpICYmIChORVNURURf
TUFTVEVSX0NPTkRJVElPTiB8fCBNQVNURVJfT1IgJiYgTUFTVEVSX0FORCkpCgpQcm9wZXJ0eSBj
aGFuZ2VzIG9uOiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L0xlZ2FjeU1lc3NhZ2VzLWV4
cGVjdGVkLmgKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0xICswLDAgIyMK
LW5hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1NjcmlwdHMvd2Via2l0L0xlZ2FjeU1lc3NhZ2VzUmVwbGllcy1leHBlY3RlZC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvTGVnYWN5TWVzc2FnZXNSZXBs
aWVzLWV4cGVjdGVkLmgJKHJldmlzaW9uIDI2MDc2NCkKKysrIFNvdXJjZS9XZWJLaXQvU2NyaXB0
cy93ZWJraXQvTGVnYWN5TWVzc2FnZXNSZXBsaWVzLWV4cGVjdGVkLmgJKG5vbmV4aXN0ZW50KQpA
QCAtMSw0MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JyBBTkQKLSAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUgotICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotICogREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSAq
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSCi0gKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotICogT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiAo
RU5BQkxFKFdFQktJVDIpICYmIChORVNURURfTUFTVEVSX0NPTkRJVElPTiB8fCBNQVNURVJfT1Ig
JiYgTUFTVEVSX0FORCkpCi0KLSNpbmNsdWRlICJDb25uZWN0aW9uLmgiCi0jaW5jbHVkZSA8d3Rm
L0ZvcndhcmQuaD4KLQotCi1uYW1lc3BhY2UgTWVzc2FnZXMgewotbmFtZXNwYWNlIFdlYlBhZ2Ug
ewotCi11c2luZyBHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbkRlbGF5ZWRSZXBseSA9IENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpDb25uZWN0aW9uOjpIYW5kbGUmIGNvbm5lY3Rp
b25IYW5kbGUpPjsKLQotdXNpbmcgVGVzdE11bHRpcGxlQXR0cmlidXRlc0RlbGF5ZWRSZXBseSA9
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT47Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYlBhZ2UKLX0g
Ly8gbmFtZXNwYWNlIE1lc3NhZ2VzCi0KLSNlbmRpZiAvLyAoRU5BQkxFKFdFQktJVDIpICYmIChO
RVNURURfTUFTVEVSX0NPTkRJVElPTiB8fCBNQVNURVJfT1IgJiYgTUFTVEVSX0FORCkpCkluZGV4
OiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L01lc3NhZ2VSZWNlaXZlci1leHBlY3RlZC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9NZXNzYWdlUmVj
ZWl2ZXItZXhwZWN0ZWQuY3BwCShyZXZpc2lvbiAyNjA3NjQpCisrKyBTb3VyY2UvV2ViS2l0L1Nj
cmlwdHMvd2Via2l0L01lc3NhZ2VSZWNlaXZlci1leHBlY3RlZC5jcHAJKG5vbmV4aXN0ZW50KQpA
QCAtMSwyMDMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMC0yMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycgQU5ECi0gKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IKLSAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSAqIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0g
KiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUgotICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSAqIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LQotI2lmIChFTkFCTEUoV0VCS0lUMikgJiYgKE5FU1RFRF9NQVNURVJfQ09ORElUSU9OIHx8IE1B
U1RFUl9PUiAmJiBNQVNURVJfQU5EKSkKLQotI2luY2x1ZGUgIldlYlBhZ2UuaCIKLQotI2luY2x1
ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCi0jaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgotI2luY2x1ZGUg
IkRlY29kZXIuaCIKLSNpZiBFTkFCTEUoREVQUkVDQVRFRF9GRUFUVVJFKSB8fCBFTkFCTEUoRVhQ
RVJJTUVOVEFMX0ZFQVRVUkUpCi0jaW5jbHVkZSAiRHVtbXlUeXBlLmgiCi0jZW5kaWYKLSNpbmNs
dWRlICJIYW5kbGVNZXNzYWdlLmgiCi0jaWYgUExBVEZPUk0oTUFDKQotI2luY2x1ZGUgIk1hY2hQ
b3J0LmgiCi0jZW5kaWYKLSNpbmNsdWRlICJQbHVnaW4uaCIKLSNpbmNsdWRlICJXZWJDb3JlQXJn
dW1lbnRDb2RlcnMuaCIKLSNpZiAoRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgKE5FU1RFRF9NRVNT
QUdFX0NPTkRJVElPTiAmJiBTT01FX09USEVSX01FU1NBR0VfQ09ORElUSU9OKSkgfHwgKEVOQUJM
RShUT1VDSF9FVkVOVFMpICYmIChORVNURURfTUVTU0FHRV9DT05ESVRJT04gfHwgU09NRV9PVEhF
Ul9NRVNTQUdFX0NPTkRJVElPTikpCi0jaW5jbHVkZSAiV2ViRXZlbnQuaCIKLSNlbmRpZgotI2lu
Y2x1ZGUgIldlYlBhZ2VNZXNzYWdlcy5oIgotI2luY2x1ZGUgIldlYlByZWZlcmVuY2VzU3RvcmUu
aCIKLSNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXIuaD4KLSNpZiBQTEFURk9STShNQUMp
Ci0jaW5jbHVkZSA8V2ViQ29yZS9LZXlib2FyZEV2ZW50Lmg+Ci0jZW5kaWYKLSNpbmNsdWRlIDxX
ZWJDb3JlL1BsdWdpbkRhdGEuaD4KLSNpbmNsdWRlIDx1dGlsaXR5PgotI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgotCi1uYW1lc3BhY2UgTWVzc2FnZXMgewotCi1uYW1lc3BhY2UgV2ViUGFnZSB7
Ci0KLXZvaWQgR2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OnNlbmQoc3RkOjp1bmlxdWVfcHRy
PElQQzo6RW5jb2Rlcj4mJiBlbmNvZGVyLCBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNv
bnN0IElQQzo6Q29ubmVjdGlvbjo6SGFuZGxlJiBjb25uZWN0aW9uSGFuZGxlKQotewotICAgICpl
bmNvZGVyIDw8IGNvbm5lY3Rpb25IYW5kbGU7Ci0gICAgY29ubmVjdGlvbi5zZW5kU3luY1JlcGx5
KFdURk1vdmUoZW5jb2RlcikpOwotfQotCi12b2lkIFRlc3RNdWx0aXBsZUF0dHJpYnV0ZXM6OnNl
bmQoc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mJiBlbmNvZGVyLCBJUEM6OkNvbm5lY3Rp
b24mIGNvbm5lY3Rpb24pCi17Ci0gICAgY29ubmVjdGlvbi5zZW5kU3luY1JlcGx5KFdURk1vdmUo
ZW5jb2RlcikpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJQYWdlCi0KLX0gLy8gbmFtZXNwYWNl
IE1lc3NhZ2VzCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi12b2lkIFdlYlBhZ2U6OmRpZFJlY2Vp
dmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNv
ZGVyKQotewotICAgIGF1dG8gcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpOwotICAgIGlm
IChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRVUkw6Om5h
bWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6Okxv
YWRVUkw+KGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjpsb2FkVVJMKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLSNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQotICAgIGlmIChkZWNvZGVyLm1lc3Nh
Z2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRTb21ldGhpbmc6Om5hbWUoKSkgewot
ICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRTb21ldGhp
bmc+KGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjpsb2FkU29tZXRoaW5nKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLSNlbmRpZgotI2lmIChFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiAoTkVTVEVE
X01FU1NBR0VfQ09ORElUSU9OIHx8IFNPTUVfT1RIRVJfTUVTU0FHRV9DT05ESVRJT04pKQotICAg
IGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OlRvdWNoRXZl
bnQ6Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBh
Z2U6OlRvdWNoRXZlbnQ+KGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjp0b3VjaEV2ZW50KTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLSNlbmRpZgotI2lmIChFTkFCTEUoVE9VQ0hfRVZFTlRTKSAm
JiAoTkVTVEVEX01FU1NBR0VfQ09ORElUSU9OICYmIFNPTUVfT1RIRVJfTUVTU0FHRV9DT05ESVRJ
T04pKQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6
OkFkZEV2ZW50OjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2Vz
OjpXZWJQYWdlOjpBZGRFdmVudD4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OmFkZEV2ZW50KTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNlbmRpZgotI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMp
Ci0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6TG9h
ZFNvbWV0aGluZ0Vsc2U6Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVz
c2FnZXM6OldlYlBhZ2U6OkxvYWRTb21ldGhpbmdFbHNlPihkZWNvZGVyLCB0aGlzLCAmV2ViUGFn
ZTo6bG9hZFNvbWV0aGluZ0Vsc2UpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlmCi0g
ICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVj
ZWl2ZVBvbGljeURlY2lzaW9uOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdl
PE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24+KGRlY29kZXIsIHRo
aXMsICZXZWJQYWdlOjpkaWRSZWNlaXZlUG9saWN5RGVjaXNpb24pOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBh
Z2U6OkNsb3NlOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2Vz
OjpXZWJQYWdlOjpDbG9zZT4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OmNsb3NlKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3Nh
Z2VzOjpXZWJQYWdlOjpQcmVmZXJlbmNlc0RpZENoYW5nZTo6bmFtZSgpKSB7Ci0gICAgICAgIElQ
Qzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6UHJlZmVyZW5jZXNEaWRDaGFuZ2U+
KGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjpwcmVmZXJlbmNlc0RpZENoYW5nZSk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdl
czo6V2ViUGFnZTo6U2VuZERvdWJsZUFuZEZsb2F0OjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpo
YW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpTZW5kRG91YmxlQW5kRmxvYXQ+KGRlY29k
ZXIsIHRoaXMsICZXZWJQYWdlOjpzZW5kRG91YmxlQW5kRmxvYXQpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBh
Z2U6OlNlbmRJbnRzOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3Nh
Z2VzOjpXZWJQYWdlOjpTZW5kSW50cz4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OnNlbmRJbnRz
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgp
ID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0UGFyYW1ldGVyQXR0cmlidXRlczo6bmFtZSgpKSB7
Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6VGVzdFBhcmFt
ZXRlckF0dHJpYnV0ZXM+KGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjp0ZXN0UGFyYW1ldGVyQXR0
cmlidXRlcyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKGRlY29kZXIubWVzc2Fn
ZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6VGVtcGxhdGVUZXN0OjpuYW1lKCkpIHsKLSAg
ICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpUZW1wbGF0ZVRlc3Q+
KGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjp0ZW1wbGF0ZVRlc3QpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBh
Z2U6OlNldFZpZGVvTGF5ZXJJRDo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2Fn
ZTxNZXNzYWdlczo6V2ViUGFnZTo6U2V0VmlkZW9MYXllcklEPihkZWNvZGVyLCB0aGlzLCAmV2Vi
UGFnZTo6c2V0VmlkZW9MYXllcklEKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNpZiBQTEFU
Rk9STShNQUMpCi0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2Vi
UGFnZTo6RGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb246Om5hbWUoKSkgewotICAgICAgICBJ
UEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OkRpZENyZWF0ZVdlYlByb2Nlc3ND
b25uZWN0aW9uPihkZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6ZGlkQ3JlYXRlV2ViUHJvY2Vzc0Nv
bm5lY3Rpb24pOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlmCi0jaWYgRU5BQkxFKERF
UFJFQ0FURURfRkVBVFVSRSkKLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3Nh
Z2VzOjpXZWJQYWdlOjpEZXByZWNhdGVkT3BlcmF0aW9uOjpuYW1lKCkpIHsKLSAgICAgICAgSVBD
OjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpEZXByZWNhdGVkT3BlcmF0aW9uPihk
ZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6ZGVwcmVjYXRlZE9wZXJhdGlvbik7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0jZW5kaWYKLSNpZiBFTkFCTEUoRVhQRVJJTUVOVEFMX0ZFQVRVUkUpCi0g
ICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6RXhwZXJp
bWVudGFsT3BlcmF0aW9uOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1l
c3NhZ2VzOjpXZWJQYWdlOjpFeHBlcmltZW50YWxPcGVyYXRpb24+KGRlY29kZXIsIHRoaXMsICZX
ZWJQYWdlOjpleHBlcmltZW50YWxPcGVyYXRpb24pOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
I2VuZGlmCi0gICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pOwotICAgIFVOVVNFRF9QQVJBTShk
ZWNvZGVyKTsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotdm9pZCBXZWJQYWdlOjpk
aWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRl
Y29kZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiByZXBseUVuY29k
ZXIpCi17Ci0gICAgYXV0byBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyk7Ci0gICAgaWYg
KGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6Q3JlYXRlUGx1Z2lu
OjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdl
OjpDcmVhdGVQbHVnaW4+KGRlY29kZXIsICpyZXBseUVuY29kZXIsIHRoaXMsICZXZWJQYWdlOjpj
cmVhdGVQbHVnaW4pOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChkZWNvZGVyLm1l
c3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OlJ1bkphdmFTY3JpcHRBbGVydDo6bmFt
ZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6UnVu
SmF2YVNjcmlwdEFsZXJ0PihkZWNvZGVyLCAqcmVwbHlFbmNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6
cnVuSmF2YVNjcmlwdEFsZXJ0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoZGVj
b2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRQbHVnaW5zOjpuYW1l
KCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRQ
bHVnaW5zPihkZWNvZGVyLCAqcmVwbHlFbmNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6Z2V0UGx1Z2lu
cyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUo
KSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246Om5hbWUo
KSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2VTeW5jaHJvbm91czxNZXNzYWdlczo6V2Vi
UGFnZTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24+KGNvbm5lY3Rpb24sIGRlY29kZXIsIHJl
cGx5RW5jb2RlciwgdGhpcywgJldlYlBhZ2U6OmdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09
IE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0TXVsdGlwbGVBdHRyaWJ1dGVzOjpuYW1lKCkpIHsKLSAg
ICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlU3luY2hyb25vdXNXYW50c0Nvbm5lY3Rpb248TWVzc2Fn
ZXM6OldlYlBhZ2U6OlRlc3RNdWx0aXBsZUF0dHJpYnV0ZXM+KGNvbm5lY3Rpb24sIGRlY29kZXIs
IHJlcGx5RW5jb2RlciwgdGhpcywgJldlYlBhZ2U6OnRlc3RNdWx0aXBsZUF0dHJpYnV0ZXMpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotI2lmIFBMQVRGT1JNKE1BQykKLSAgICBpZiAoZGVjb2Rl
ci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpJbnRlcnByZXRLZXlFdmVudDo6
bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6
SW50ZXJwcmV0S2V5RXZlbnQ+KGRlY29kZXIsICpyZXBseUVuY29kZXIsIHRoaXMsICZXZWJQYWdl
OjppbnRlcnByZXRLZXlFdmVudCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYKLSAg
ICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7Ci0gICAgVU5VU0VEX1BBUkFNKGRlY29kZXIpOwot
ICAgIFVOVVNFRF9QQVJBTShyZXBseUVuY29kZXIpOwotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotCi0jZW5kaWYgLy8gKEVOQUJMRShXRUJL
SVQyKSAmJiAoTkVTVEVEX01BU1RFUl9DT05ESVRJT04gfHwgTUFTVEVSX09SICYmIE1BU1RFUl9B
TkQpKQoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9N
ZXNzYWdlUmVjZWl2ZXItZXhwZWN0ZWQuY3BwCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOmVvbC1z
dHlsZQojIyAtMSArMCwwICMjCi1uYXRpdmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0
eQpJbmRleDogU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9NZXNzYWdlUmVjZWl2ZXJTdXBl
cmNsYXNzLWV4cGVjdGVkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMv
d2Via2l0L01lc3NhZ2VSZWNlaXZlclN1cGVyY2xhc3MtZXhwZWN0ZWQuY3BwCShyZXZpc2lvbiAy
NjA3NjQpCisrKyBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L01lc3NhZ2VSZWNlaXZlclN1
cGVyY2xhc3MtZXhwZWN0ZWQuY3BwCShub25leGlzdGVudCkKQEAgLTEsMTg5ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAotICogQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0gKiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMCi0gKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgotICogU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIK
LSAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0gKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpbmNsdWRlICJXZWJQYWdl
LmgiCi0KLSNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgotI2luY2x1ZGUgIkRlY29kZXIuaCIK
LSNpbmNsdWRlICJIYW5kbGVNZXNzYWdlLmgiCi0jaW5jbHVkZSAiVGVzdENsYXNzTmFtZS5oIgot
I2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCi0jaW5jbHVkZSAiVGVzdFR3b1N0YXRlRW51bS5oIgot
I2VuZGlmCi0jaW5jbHVkZSAiV2ViUGFnZU1lc3NhZ2VzLmgiCi0jaW5jbHVkZSA8d3RmL09wdGlv
bmFsLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBNZXNz
YWdlcyB7Ci0KLW5hbWVzcGFjZSBXZWJQYWdlIHsKLQotI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUp
Ci0KLXZvaWQgVGVzdEFzeW5jTWVzc2FnZTo6Y2FsbFJlcGx5KElQQzo6RGVjb2RlciYgZGVjb2Rl
ciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKLXsKLSAgICBPcHRpb25hbDx1aW50NjRfdD4gcmVzdWx0OwotICAgIGRlY29kZXIgPj4gcmVz
dWx0OwotICAgIGlmICghcmVzdWx0KSB7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgICAgICBjYW5jZWxSZXBseShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0gICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZSgqcmVzdWx0KSk7
Ci19Ci0KLXZvaWQgVGVzdEFzeW5jTWVzc2FnZTo6Y2FuY2VsUmVwbHkoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCh1aW50NjRfdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAgICBjb21wbGV0
aW9uSGFuZGxlcihJUEM6OkFzeW5jUmVwbHlFcnJvcjx1aW50NjRfdD46OmNyZWF0ZSgpKTsKLX0K
LQotdm9pZCBUZXN0QXN5bmNNZXNzYWdlOjpzZW5kKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29k
ZXI+JiYgZW5jb2RlciwgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCB1aW50NjRfdCByZXN1
bHQpCi17Ci0gICAgKmVuY29kZXIgPDwgcmVzdWx0OwotICAgIGNvbm5lY3Rpb24uc2VuZFN5bmNS
ZXBseShXVEZNb3ZlKGVuY29kZXIpKTsKLX0KLQotI2VuZGlmCi0KLSNpZiBFTkFCTEUoVEVTVF9G
RUFUVVJFKQotCi12b2lkIFRlc3RBc3luY01lc3NhZ2VXaXRoTm9Bcmd1bWVudHM6OmNhbGxSZXBs
eShJUEM6OkRlY29kZXImIGRlY29kZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKLXsKLSAgICBjb21wbGV0aW9uSGFuZGxlcigpOwotfQotCi12b2lkIFRl
c3RBc3luY01lc3NhZ2VXaXRoTm9Bcmd1bWVudHM6OmNhbmNlbFJlcGx5KENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAgICBjb21wbGV0aW9uSGFuZGxl
cigpOwotfQotCi12b2lkIFRlc3RBc3luY01lc3NhZ2VXaXRoTm9Bcmd1bWVudHM6OnNlbmQoc3Rk
Ojp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mJiBlbmNvZGVyLCBJUEM6OkNvbm5lY3Rpb24mIGNv
bm5lY3Rpb24pCi17Ci0gICAgY29ubmVjdGlvbi5zZW5kU3luY1JlcGx5KFdURk1vdmUoZW5jb2Rl
cikpOwotfQotCi0jZW5kaWYKLQotI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCi0KLXZvaWQgVGVz
dEFzeW5jTWVzc2FnZVdpdGhNdWx0aXBsZUFyZ3VtZW50czo6Y2FsbFJlcGx5KElQQzo6RGVjb2Rl
ciYgZGVjb2RlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sJiYsIHVpbnQ2NF90JiYpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIE9wdGlvbmFsPGJvb2w+IGZsYWc7Ci0gICAgZGVj
b2RlciA+PiBmbGFnOwotICAgIGlmICghZmxhZykgewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICAgICAgY2FuY2VsUmVwbHkoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiB2YWx1ZTsKLSAg
ICBkZWNvZGVyID4+IHZhbHVlOwotICAgIGlmICghdmFsdWUpIHsKLSAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0gICAgICAgIGNhbmNlbFJlcGx5KFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZN
b3ZlKCpmbGFnKSwgV1RGTW92ZSgqdmFsdWUpKTsKLX0KLQotdm9pZCBUZXN0QXN5bmNNZXNzYWdl
V2l0aE11bHRpcGxlQXJndW1lbnRzOjpjYW5jZWxSZXBseShDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wmJiwgdWludDY0X3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCi17Ci0gICAgY29tcGxl
dGlvbkhhbmRsZXIoSVBDOjpBc3luY1JlcGx5RXJyb3I8Ym9vbD46OmNyZWF0ZSgpLCBJUEM6OkFz
eW5jUmVwbHlFcnJvcjx1aW50NjRfdD46OmNyZWF0ZSgpKTsKLX0KLQotdm9pZCBUZXN0QXN5bmNN
ZXNzYWdlV2l0aE11bHRpcGxlQXJndW1lbnRzOjpzZW5kKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVu
Y29kZXI+JiYgZW5jb2RlciwgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBib29sIGZsYWcs
IHVpbnQ2NF90IHZhbHVlKQotewotICAgICplbmNvZGVyIDw8IGZsYWc7Ci0gICAgKmVuY29kZXIg
PDwgdmFsdWU7Ci0gICAgY29ubmVjdGlvbi5zZW5kU3luY1JlcGx5KFdURk1vdmUoZW5jb2Rlcikp
OwotfQotCi0jZW5kaWYKLQotdm9pZCBUZXN0U3luY01lc3NhZ2U6OnNlbmQoc3RkOjp1bmlxdWVf
cHRyPElQQzo6RW5jb2Rlcj4mJiBlbmNvZGVyLCBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24s
IHVpbnQ4X3QgcmVwbHkpCi17Ci0gICAgKmVuY29kZXIgPDwgcmVwbHk7Ci0gICAgY29ubmVjdGlv
bi5zZW5kU3luY1JlcGx5KFdURk1vdmUoZW5jb2RlcikpOwotfQotCi12b2lkIFRlc3RTeW5jaHJv
bm91c01lc3NhZ2U6OnNlbmQoc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mJiBlbmNvZGVy
LCBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IE9wdGlvbmFsPFdlYktpdDo6VGVz
dENsYXNzTmFtZT4mIG9wdGlvbmFsUmVwbHkpCi17Ci0gICAgKmVuY29kZXIgPDwgb3B0aW9uYWxS
ZXBseTsKLSAgICBjb25uZWN0aW9uLnNlbmRTeW5jUmVwbHkoV1RGTW92ZShlbmNvZGVyKSk7Ci19
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYlBhZ2UKLQotfSAvLyBuYW1lc3BhY2UgTWVzc2FnZXMKLQot
bmFtZXNwYWNlIFdlYktpdCB7Ci0KLXZvaWQgV2ViUGFnZTo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpCi17Ci0gICAg
YXV0byBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyk7Ci0gICAgaWYgKGRlY29kZXIubWVz
c2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFVSTDo6bmFtZSgpKSB7Ci0gICAg
ICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFVSTD4oZGVjb2Rl
ciwgdGhpcywgJldlYlBhZ2U6OmxvYWRVUkwpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2lm
IEVOQUJMRShURVNUX0ZFQVRVUkUpCi0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBN
ZXNzYWdlczo6V2ViUGFnZTo6VGVzdEFzeW5jTWVzc2FnZTo6bmFtZSgpKSB7Ci0gICAgICAgIElQ
Qzo6aGFuZGxlTWVzc2FnZUFzeW5jPE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0QXN5bmNNZXNzYWdl
Pihjb25uZWN0aW9uLCBkZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6dGVzdEFzeW5jTWVzc2FnZSk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYKLSNpZiBFTkFCTEUoVEVTVF9GRUFUVVJF
KQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OlRl
c3RBc3luY01lc3NhZ2VXaXRoTm9Bcmd1bWVudHM6Om5hbWUoKSkgewotICAgICAgICBJUEM6Omhh
bmRsZU1lc3NhZ2VBc3luYzxNZXNzYWdlczo6V2ViUGFnZTo6VGVzdEFzeW5jTWVzc2FnZVdpdGhO
b0FyZ3VtZW50cz4oY29ubmVjdGlvbiwgZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OnRlc3RBc3lu
Y01lc3NhZ2VXaXRoTm9Bcmd1bWVudHMpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlm
Ci0jaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgp
ID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1l
bnRzOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlQXN5bmM8TWVzc2FnZXM6
OldlYlBhZ2U6OlRlc3RBc3luY01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHM+KGNvbm5lY3Rp
b24sIGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjp0ZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxl
QXJndW1lbnRzKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNlbmRpZgotICAgIFdlYlBhZ2VC
YXNlOjpkaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKLX0KLQotdm9pZCBX
ZWJQYWdlOjpkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9u
LCBJUEM6OkRlY29kZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiBy
ZXBseUVuY29kZXIpCi17Ci0gICAgYXV0byBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyk7
Ci0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6VGVz
dFN5bmNNZXNzYWdlOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlU3luY2hy
b25vdXM8TWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RTeW5jTWVzc2FnZT4oY29ubmVjdGlvbiwgZGVj
b2RlciwgcmVwbHlFbmNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6dGVzdFN5bmNNZXNzYWdlKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1l
c3NhZ2VzOjpXZWJQYWdlOjpUZXN0U3luY2hyb25vdXNNZXNzYWdlOjpuYW1lKCkpIHsKLSAgICAg
ICAgSVBDOjpoYW5kbGVNZXNzYWdlU3luY2hyb25vdXM8TWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RT
eW5jaHJvbm91c01lc3NhZ2U+KGNvbm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5RW5jb2RlciwgdGhp
cywgJldlYlBhZ2U6OnRlc3RTeW5jaHJvbm91c01lc3NhZ2UpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsKLSAgICBVTlVTRURfUEFSQU0oZGVj
b2Rlcik7Ci0gICAgVU5VU0VEX1BBUkFNKHJlcGx5RW5jb2Rlcik7Ci0gICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCgpQcm9wZXJ0eSBjaGFuZ2Vz
IG9uOiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L01lc3NhZ2VSZWNlaXZlclN1cGVyY2xh
c3MtZXhwZWN0ZWQuY3BwCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMSAr
MCwwICMjCi1uYXRpdmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogU291
cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9NZXNzYWdlcy1leHBlY3RlZC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvTWVzc2FnZXMtZXhwZWN0ZWQuaAkocmV2
aXNpb24gMjYwNzY0KQorKysgU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9NZXNzYWdlcy1l
eHBlY3RlZC5oCShub25leGlzdGVudCkKQEAgLTEsNTcwICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTAtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAotICogQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
LSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0gKiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
Ci0gKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUgotICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSAqIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksCi0gKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIChFTkFCTEUoV0VCS0lUMikgJiYgKE5FU1RFRF9NQVNU
RVJfQ09ORElUSU9OIHx8IE1BU1RFUl9PUiAmJiBNQVNURVJfQU5EKSkKLQotI2luY2x1ZGUgIkFy
Z3VtZW50Q29kZXJzLmgiCi0jaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgotI2luY2x1ZGUgIlBsdWdp
bi5oIgotI2luY2x1ZGUgIldlYlBhZ2VNZXNzYWdlc1JlcGxpZXMuaCIKLSNpbmNsdWRlIDxXZWJD
b3JlL0dyYXBoaWNzTGF5ZXIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0tleWJvYXJkRXZlbnQuaD4K
LSNpbmNsdWRlIDxXZWJDb3JlL1BsdWdpbkRhdGEuaD4KLSNpbmNsdWRlIDx1dGlsaXR5PgotI2lu
Y2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRl
IDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0j
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBJUEMgewotY2xhc3Mg
RHVtbXlUeXBlOwotY2xhc3MgTWFjaFBvcnQ7Ci19Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotY2xh
c3MgV2ViUHJlZmVyZW5jZXNTdG9yZTsKLWNsYXNzIFdlYlRvdWNoRXZlbnQ7Ci19Ci0KLW5hbWVz
cGFjZSBNZXNzYWdlcyB7Ci1uYW1lc3BhY2UgV2ViUGFnZSB7Ci0KLXN0YXRpYyBpbmxpbmUgSVBD
OjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSgpCi17Ci0gICAgcmV0dXJuIElQ
Qzo6U3RyaW5nUmVmZXJlbmNlKCJXZWJQYWdlIik7Ci19Ci0KLWNsYXNzIExvYWRVUkwgewotcHVi
bGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBTdHJpbmcmPiBBcmd1bWVudHM7Ci0K
LSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4g
bWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNl
IG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiTG9hZFVSTCIpOyB9Ci0gICAg
c3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7Ci0KLSAgICBleHBsaWNpdCBMb2FkVVJM
KGNvbnN0IFN0cmluZyYgdXJsKQotICAgICAgICA6IG1fYXJndW1lbnRzKHVybCkKLSAgICB7Ci0g
ICAgfQotCi0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsKLSAg
ICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1bWVu
dHMgbV9hcmd1bWVudHM7Ci19OwotCi0jaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLWNsYXNzIExv
YWRTb21ldGhpbmcgewotcHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBTdHJp
bmcmPiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2
ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGljIElQ
Qzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgi
TG9hZFNvbWV0aGluZyIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7
Ci0KLSAgICBleHBsaWNpdCBMb2FkU29tZXRoaW5nKGNvbnN0IFN0cmluZyYgdXJsKQotICAgICAg
ICA6IG1fYXJndW1lbnRzKHVybCkKLSAgICB7Ci0gICAgfQotCi0gICAgY29uc3QgQXJndW1lbnRz
JiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwot
ICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19OwotI2VuZGlm
Ci0KLSNpZiAoRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgKE5FU1RFRF9NRVNTQUdFX0NPTkRJVElP
TiB8fCBTT01FX09USEVSX01FU1NBR0VfQ09ORElUSU9OKSkKLWNsYXNzIFRvdWNoRXZlbnQgewot
cHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBXZWJLaXQ6OldlYlRvdWNoRXZl
bnQmPiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2
ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGljIElQ
Qzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgi
VG91Y2hFdmVudCIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7Ci0K
LSAgICBleHBsaWNpdCBUb3VjaEV2ZW50KGNvbnN0IFdlYktpdDo6V2ViVG91Y2hFdmVudCYgZXZl
bnQpCi0gICAgICAgIDogbV9hcmd1bWVudHMoZXZlbnQpCi0gICAgewotICAgIH0KLQotICAgIGNv
bnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBt
X2FyZ3VtZW50czsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRz
OwotfTsKLSNlbmRpZgotCi0jaWYgKEVOQUJMRShUT1VDSF9FVkVOVFMpICYmIChORVNURURfTUVT
U0FHRV9DT05ESVRJT04gJiYgU09NRV9PVEhFUl9NRVNTQUdFX0NPTkRJVElPTikpCi1jbGFzcyBB
ZGRFdmVudCB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGNvbnN0IFdlYktpdDo6
V2ViVG91Y2hFdmVudCY+IEFyZ3VtZW50czsKLQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVy
ZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAg
ICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5n
UmVmZXJlbmNlKCJBZGRFdmVudCIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0g
ZmFsc2U7Ci0KLSAgICBleHBsaWNpdCBBZGRFdmVudChjb25zdCBXZWJLaXQ6OldlYlRvdWNoRXZl
bnQmIGV2ZW50KQotICAgICAgICA6IG1fYXJndW1lbnRzKGV2ZW50KQotICAgIHsKLSAgICB9Ci0K
LSAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewotICAgICAgICBy
ZXR1cm4gbV9hcmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBtX2Fy
Z3VtZW50czsKLX07Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCi1jbGFzcyBM
b2FkU29tZXRoaW5nRWxzZSB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGNvbnN0
IFN0cmluZyY+IEFyZ3VtZW50czsKLQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBy
ZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0
aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJl
bmNlKCJMb2FkU29tZXRoaW5nRWxzZSIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5j
ID0gZmFsc2U7Ci0KLSAgICBleHBsaWNpdCBMb2FkU29tZXRoaW5nRWxzZShjb25zdCBTdHJpbmcm
IHVybCkKLSAgICAgICAgOiBtX2FyZ3VtZW50cyh1cmwpCi0gICAgewotICAgIH0KLQotICAgIGNv
bnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBt
X2FyZ3VtZW50czsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRz
OwotfTsKLSNlbmRpZgotCi1jbGFzcyBEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24gewotcHVibGlj
OgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTx1aW50NjRfdCwgdWludDY0X3QsIHVpbnQzMl90PiBB
cmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1l
KCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6U3Ry
aW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiRGlkUmVj
ZWl2ZVBvbGljeURlY2lzaW9uIik7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBm
YWxzZTsKLQotICAgIERpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbih1aW50NjRfdCBmcmFtZUlELCB1
aW50NjRfdCBsaXN0ZW5lcklELCB1aW50MzJfdCBwb2xpY3lBY3Rpb24pCi0gICAgICAgIDogbV9h
cmd1bWVudHMoZnJhbWVJRCwgbGlzdGVuZXJJRCwgcG9saWN5QWN0aW9uKQotICAgIHsKLSAgICB9
Ci0KLSAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewotICAgICAg
ICByZXR1cm4gbV9hcmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBt
X2FyZ3VtZW50czsKLX07Ci0KLWNsYXNzIENsb3NlIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0
ZDo6dHVwbGU8PiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2Ug
cmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAgc3Rh
dGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVy
ZW5jZSgiQ2xvc2UiKTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOwot
Ci0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsKLSAgICAgICAg
cmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1bWVudHMgbV9h
cmd1bWVudHM7Ci19OwotCi1jbGFzcyBQcmVmZXJlbmNlc0RpZENoYW5nZSB7Ci1wdWJsaWM6Ci0g
ICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGNvbnN0IFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZSY+
IEFyZ3VtZW50czsKLQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5h
bWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpT
dHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJQcmVm
ZXJlbmNlc0RpZENoYW5nZSIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFs
c2U7Ci0KLSAgICBleHBsaWNpdCBQcmVmZXJlbmNlc0RpZENoYW5nZShjb25zdCBXZWJLaXQ6Oldl
YlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlKQotICAgICAgICA6IG1fYXJndW1lbnRzKHN0b3JlKQot
ICAgIHsKLSAgICB9Ci0KLSAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0g
ICAgewotICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRlOgotICAg
IEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKLX07Ci0KLWNsYXNzIFNlbmREb3VibGVBbmRGbG9hdCB7
Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGRvdWJsZSwgZmxvYXQ+IEFyZ3VtZW50
czsKLQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJl
dHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZl
cmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJTZW5kRG91YmxlQW5k
RmxvYXQiKTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOwotCi0gICAg
U2VuZERvdWJsZUFuZEZsb2F0KGRvdWJsZSBkLCBmbG9hdCBmKQotICAgICAgICA6IG1fYXJndW1l
bnRzKGQsIGYpCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRz
KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0KLXBy
aXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLQotY2xhc3MgU2VuZEludHMg
ewotcHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBWZWN0b3I8dWludDY0X3Q+
JiwgY29uc3QgVmVjdG9yPFZlY3Rvcjx1aW50NjRfdD4+Jj4gQXJndW1lbnRzOwotCi0gICAgc3Rh
dGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VS
ZWNlaXZlck5hbWUoKTsgfQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkg
eyByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIlNlbmRJbnRzIik7IH0KLSAgICBzdGF0aWMg
Y29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKLQotICAgIFNlbmRJbnRzKGNvbnN0IFZlY3Rvcjx1
aW50NjRfdD4mIGludHMsIGNvbnN0IFZlY3RvcjxWZWN0b3I8dWludDY0X3Q+PiYgaW50VmVjdG9y
cykKLSAgICAgICAgOiBtX2FyZ3VtZW50cyhpbnRzLCBpbnRWZWN0b3JzKQotICAgIHsKLSAgICB9
Ci0KLSAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewotICAgICAg
ICByZXR1cm4gbV9hcmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBt
X2FyZ3VtZW50czsKLX07Ci0KLWNsYXNzIENyZWF0ZVBsdWdpbiB7Ci1wdWJsaWM6Ci0gICAgdHlw
ZWRlZiBzdGQ6OnR1cGxlPHVpbnQ2NF90LCBjb25zdCBXZWJLaXQ6OlBsdWdpbjo6UGFyYW1ldGVy
cyY+IEFyZ3VtZW50czsKLQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZl
ck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMgSVBD
OjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJD
cmVhdGVQbHVnaW4iKTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IHRydWU7Ci0K
LSAgICB1c2luZyBSZXBseSA9IHN0ZDo6dHVwbGU8Ym9vbCY+OwotICAgIHVzaW5nIFJlcGx5QXJn
dW1lbnRzID0gc3RkOjp0dXBsZTxib29sPjsKLSAgICBDcmVhdGVQbHVnaW4odWludDY0X3QgcGx1
Z2luSW5zdGFuY2VJRCwgY29uc3QgV2ViS2l0OjpQbHVnaW46OlBhcmFtZXRlcnMmIHBhcmFtZXRl
cnMpCi0gICAgICAgIDogbV9hcmd1bWVudHMocGx1Z2luSW5zdGFuY2VJRCwgcGFyYW1ldGVycykK
LSAgICB7Ci0gICAgfQotCi0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAot
ICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAg
ICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19OwotCi1jbGFzcyBSdW5KYXZhU2NyaXB0QWxlcnQg
ewotcHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTx1aW50NjRfdCwgY29uc3QgU3RyaW5n
Jj4gQXJndW1lbnRzOwotCi0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVy
TmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsgfQotICAgIHN0YXRpYyBJUEM6
OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIlJ1
bkphdmFTY3JpcHRBbGVydCIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gdHJ1
ZTsKLQotICAgIHVzaW5nIFJlcGx5ID0gc3RkOjp0dXBsZTw+OwotICAgIHVzaW5nIFJlcGx5QXJn
dW1lbnRzID0gc3RkOjp0dXBsZTw+OwotICAgIFJ1bkphdmFTY3JpcHRBbGVydCh1aW50NjRfdCBm
cmFtZUlELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCi0gICAgICAgIDogbV9hcmd1bWVudHMoZnJh
bWVJRCwgbWVzc2FnZSkKLSAgICB7Ci0gICAgfQotCi0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1
bWVudHMoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0K
LQotcHJpdmF0ZToKLSAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19OwotCi1jbGFzcyBHZXRQ
bHVnaW5zIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8Ym9vbD4gQXJndW1lbnRz
OwotCi0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0
dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsgfQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVy
ZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIkdldFBsdWdpbnMiKTsg
fQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IHRydWU7Ci0KLSAgICB1c2luZyBSZXBs
eSA9IHN0ZDo6dHVwbGU8VmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+Jj47Ci0gICAgdXNpbmcg
UmVwbHlBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPj47
Ci0gICAgZXhwbGljaXQgR2V0UGx1Z2lucyhib29sIHJlZnJlc2gpCi0gICAgICAgIDogbV9hcmd1
bWVudHMocmVmcmVzaCkKLSAgICB7Ci0gICAgfQotCi0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1
bWVudHMoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0K
LQotcHJpdmF0ZToKLSAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19OwotCi1jbGFzcyBHZXRQ
bHVnaW5Qcm9jZXNzQ29ubmVjdGlvbiB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxl
PGNvbnN0IFN0cmluZyY+IEFyZ3VtZW50czsKLQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVy
ZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAg
ICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5n
UmVmZXJlbmNlKCJHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbiIpOyB9Ci0gICAgc3RhdGljIGNv
bnN0IGJvb2wgaXNTeW5jID0gdHJ1ZTsKLQotICAgIHVzaW5nIERlbGF5ZWRSZXBseSA9IEdldFBs
dWdpblByb2Nlc3NDb25uZWN0aW9uRGVsYXllZFJlcGx5OwotICAgIHN0YXRpYyB2b2lkIHNlbmQo
c3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mJiwgSVBDOjpDb25uZWN0aW9uJiwgY29uc3Qg
SVBDOjpDb25uZWN0aW9uOjpIYW5kbGUmIGNvbm5lY3Rpb25IYW5kbGUpOwotICAgIHVzaW5nIFJl
cGx5ID0gc3RkOjp0dXBsZTxJUEM6OkNvbm5lY3Rpb246OkhhbmRsZSY+OwotICAgIHVzaW5nIFJl
cGx5QXJndW1lbnRzID0gc3RkOjp0dXBsZTxJUEM6OkNvbm5lY3Rpb246OkhhbmRsZT47Ci0gICAg
ZXhwbGljaXQgR2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24oY29uc3QgU3RyaW5nJiBwbHVnaW5Q
YXRoKQotICAgICAgICA6IG1fYXJndW1lbnRzKHBsdWdpblBhdGgpCi0gICAgewotICAgIH0KLQot
ICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJn
dW1lbnRzOwotfTsKLQotY2xhc3MgVGVzdE11bHRpcGxlQXR0cmlidXRlcyB7Ci1wdWJsaWM6Ci0g
ICAgdHlwZWRlZiBzdGQ6OnR1cGxlPD4gQXJndW1lbnRzOwotCi0gICAgc3RhdGljIElQQzo6U3Ry
aW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUo
KTsgfQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBD
OjpTdHJpbmdSZWZlcmVuY2UoIlRlc3RNdWx0aXBsZUF0dHJpYnV0ZXMiKTsgfQotICAgIHN0YXRp
YyBjb25zdCBib29sIGlzU3luYyA9IHRydWU7Ci0KLSAgICB1c2luZyBEZWxheWVkUmVwbHkgPSBU
ZXN0TXVsdGlwbGVBdHRyaWJ1dGVzRGVsYXllZFJlcGx5OwotICAgIHN0YXRpYyB2b2lkIHNlbmQo
c3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mJiwgSVBDOjpDb25uZWN0aW9uJik7Ci0gICAg
dXNpbmcgUmVwbHkgPSBzdGQ6OnR1cGxlPD47Ci0gICAgdXNpbmcgUmVwbHlBcmd1bWVudHMgPSBz
dGQ6OnR1cGxlPD47Ci0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAotICAg
IHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBB
cmd1bWVudHMgbV9hcmd1bWVudHM7Ci19OwotCi1jbGFzcyBUZXN0UGFyYW1ldGVyQXR0cmlidXRl
cyB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPHVpbnQ2NF90LCBkb3VibGUsIGRv
dWJsZT4gQXJndW1lbnRzOwotCi0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2Vp
dmVyTmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsgfQotICAgIHN0YXRpYyBJ
UEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2Uo
IlRlc3RQYXJhbWV0ZXJBdHRyaWJ1dGVzIik7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5
bmMgPSBmYWxzZTsKLQotICAgIFRlc3RQYXJhbWV0ZXJBdHRyaWJ1dGVzKHVpbnQ2NF90IGZvbywg
ZG91YmxlIGJhciwgZG91YmxlIGJheikKLSAgICAgICAgOiBtX2FyZ3VtZW50cyhmb28sIGJhciwg
YmF6KQotICAgIHsKLSAgICB9Ci0KLSAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNv
bnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRl
OgotICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKLX07Ci0KLWNsYXNzIFRlbXBsYXRlVGVzdCB7
Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBz
dGQ6OnBhaXI8U3RyaW5nLCB1aW50NjRfdD4+Jj4gQXJndW1lbnRzOwotCi0gICAgc3RhdGljIElQ
Qzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZl
ck5hbWUoKTsgfQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1
cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIlRlbXBsYXRlVGVzdCIpOyB9Ci0gICAgc3RhdGljIGNv
bnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7Ci0KLSAgICBleHBsaWNpdCBUZW1wbGF0ZVRlc3QoY29u
c3QgSGFzaE1hcDxTdHJpbmcsIHN0ZDo6cGFpcjxTdHJpbmcsIHVpbnQ2NF90Pj4mIGEpCi0gICAg
ICAgIDogbV9hcmd1bWVudHMoYSkKLSAgICB7Ci0gICAgfQotCi0gICAgY29uc3QgQXJndW1lbnRz
JiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwot
ICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19OwotCi1jbGFz
cyBTZXRWaWRlb0xheWVySUQgewotcHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxjb25z
dCBXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQmPiBBcmd1bWVudHM7Ci0K
LSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4g
bWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNl
IG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiU2V0VmlkZW9MYXllcklEIik7
IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKLQotICAgIGV4cGxpY2l0
IFNldFZpZGVvTGF5ZXJJRChjb25zdCBXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxh
eWVySUQmIHZpZGVvTGF5ZXJJRCkKLSAgICAgICAgOiBtX2FyZ3VtZW50cyh2aWRlb0xheWVySUQp
Ci0gICAgewotICAgIH0KLQotICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QK
LSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0KLXByaXZhdGU6Ci0g
ICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLQotI2lmIFBMQVRGT1JNKE1BQykKLWNsYXNz
IERpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0
ZDo6dHVwbGU8Y29uc3QgSVBDOjpNYWNoUG9ydCY+IEFyZ3VtZW50czsKLQotICAgIHN0YXRpYyBJ
UEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2
ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0
dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJEaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbiIp
OyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7Ci0KLSAgICBleHBsaWNp
dCBEaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbihjb25zdCBJUEM6Ok1hY2hQb3J0JiBjb25u
ZWN0aW9uSWRlbnRpZmllcikKLSAgICAgICAgOiBtX2FyZ3VtZW50cyhjb25uZWN0aW9uSWRlbnRp
ZmllcikKLSAgICB7Ci0gICAgfQotCi0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBj
b25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0
ZToKLSAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19OwotI2VuZGlmCi0KLSNpZiBQTEFURk9S
TShNQUMpCi1jbGFzcyBJbnRlcnByZXRLZXlFdmVudCB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBz
dGQ6OnR1cGxlPHVpbnQzMl90PiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdS
ZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9
Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0
cmluZ1JlZmVyZW5jZSgiSW50ZXJwcmV0S2V5RXZlbnQiKTsgfQotICAgIHN0YXRpYyBjb25zdCBi
b29sIGlzU3luYyA9IHRydWU7Ci0KLSAgICB1c2luZyBSZXBseSA9IHN0ZDo6dHVwbGU8VmVjdG9y
PFdlYkNvcmU6OktleXByZXNzQ29tbWFuZD4mPjsKLSAgICB1c2luZyBSZXBseUFyZ3VtZW50cyA9
IHN0ZDo6dHVwbGU8VmVjdG9yPFdlYkNvcmU6OktleXByZXNzQ29tbWFuZD4+OwotICAgIGV4cGxp
Y2l0IEludGVycHJldEtleUV2ZW50KHVpbnQzMl90IHR5cGUpCi0gICAgICAgIDogbV9hcmd1bWVu
dHModHlwZSkKLSAgICB7Ci0gICAgfQotCi0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMo
KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJp
dmF0ZToKLSAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19OwotI2VuZGlmCi0KLSNpZiBFTkFC
TEUoREVQUkVDQVRFRF9GRUFUVVJFKQotY2xhc3MgRGVwcmVjYXRlZE9wZXJhdGlvbiB7Ci1wdWJs
aWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGNvbnN0IElQQzo6RHVtbXlUeXBlJj4gQXJndW1l
bnRzOwotCi0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsg
cmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsgfQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1Jl
ZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIkRlcHJlY2F0ZWRP
cGVyYXRpb24iKTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOwotCi0g
ICAgZXhwbGljaXQgRGVwcmVjYXRlZE9wZXJhdGlvbihjb25zdCBJUEM6OkR1bW15VHlwZSYgZHVt
bXkpCi0gICAgICAgIDogbV9hcmd1bWVudHMoZHVtbXkpCi0gICAgewotICAgIH0KLQotICAgIGNv
bnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBt
X2FyZ3VtZW50czsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRz
OwotfTsKLSNlbmRpZgotCi0jaWYgRU5BQkxFKEVYUEVSSU1FTlRBTF9GRUFUVVJFKQotY2xhc3Mg
RXhwZXJpbWVudGFsT3BlcmF0aW9uIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8
Y29uc3QgSVBDOjpEdW1teVR5cGUmPiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJp
bmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgp
OyB9Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6
OlN0cmluZ1JlZmVyZW5jZSgiRXhwZXJpbWVudGFsT3BlcmF0aW9uIik7IH0KLSAgICBzdGF0aWMg
Y29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKLQotICAgIGV4cGxpY2l0IEV4cGVyaW1lbnRhbE9w
ZXJhdGlvbihjb25zdCBJUEM6OkR1bW15VHlwZSYgZHVtbXkpCi0gICAgICAgIDogbV9hcmd1bWVu
dHMoZHVtbXkpCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRz
KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0KLXBy
aXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLSNlbmRpZgotCi19IC8vIG5h
bWVzcGFjZSBXZWJQYWdlCi19IC8vIG5hbWVzcGFjZSBNZXNzYWdlcwotCi0jZW5kaWYgLy8gKEVO
QUJMRShXRUJLSVQyKSAmJiAoTkVTVEVEX01BU1RFUl9DT05ESVRJT04gfHwgTUFTVEVSX09SICYm
IE1BU1RFUl9BTkQpKQoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dlYktpdC9TY3JpcHRz
L3dlYmtpdC9NZXNzYWdlcy1leHBlY3RlZC5oCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOmVvbC1z
dHlsZQojIyAtMSArMCwwICMjCi1uYXRpdmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0
eQpJbmRleDogU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9NZXNzYWdlc1JlcGxpZXMtZXhw
ZWN0ZWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L01lc3Nh
Z2VzUmVwbGllcy1leHBlY3RlZC5oCShyZXZpc2lvbiAyNjA3NjQpCisrKyBTb3VyY2UvV2ViS2l0
L1NjcmlwdHMvd2Via2l0L01lc3NhZ2VzUmVwbGllcy1leHBlY3RlZC5oCShub25leGlzdGVudCkK
QEAgLTEsNDMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMC0yMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycgQU5ECi0gKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IKLSAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSAqIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0g
KiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUgotICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSAqIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYg
KEVOQUJMRShXRUJLSVQyKSAmJiAoTkVTVEVEX01BU1RFUl9DT05ESVRJT04gfHwgTUFTVEVSX09S
ICYmIE1BU1RFUl9BTkQpKQotCi0jaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgotI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+Ci0KLQotbmFtZXNwYWNlIE1lc3NhZ2VzIHsKLW5hbWVzcGFjZSBXZWJQYWdl
IHsKLQotdXNpbmcgR2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25EZWxheWVkUmVwbHkgPSBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6Q29ubmVjdGlvbjo6SGFuZGxlJiBjb25uZWN0
aW9uSGFuZGxlKT47Ci0KLXVzaW5nIFRlc3RNdWx0aXBsZUF0dHJpYnV0ZXNEZWxheWVkUmVwbHkg
PSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+OwotCi19IC8vIG5hbWVzcGFjZSBXZWJQYWdlCi19
IC8vIG5hbWVzcGFjZSBNZXNzYWdlcwotCi0jZW5kaWYgLy8gKEVOQUJMRShXRUJLSVQyKSAmJiAo
TkVTVEVEX01BU1RFUl9DT05ESVRJT04gfHwgTUFTVEVSX09SICYmIE1BU1RFUl9BTkQpKQpJbmRl
eDogU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9NZXNzYWdlc1JlcGxpZXNTdXBlcmNsYXNz
UmVwbGllcy1leHBlY3RlZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93
ZWJraXQvTWVzc2FnZXNSZXBsaWVzU3VwZXJjbGFzc1JlcGxpZXMtZXhwZWN0ZWQuaAkocmV2aXNp
b24gMjYwNzY0KQorKysgU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9NZXNzYWdlc1JlcGxp
ZXNTdXBlcmNsYXNzUmVwbGllcy1leHBlY3RlZC5oCShub25leGlzdGVudCkKQEAgLTEsNTIgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECi0gKiBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IKLSAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwKLSAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0gKiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUgotICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSAqIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiVGVzdENs
YXNzTmFtZS5oIgotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL09wdGlv
bmFsLmg+Ci0KLQotbmFtZXNwYWNlIE1lc3NhZ2VzIHsKLW5hbWVzcGFjZSBXZWJQYWdlIHsKLQot
I2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCi11c2luZyBUZXN0QXN5bmNNZXNzYWdlQXN5bmNSZXBs
eSA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0X3QgcmVzdWx0KT47Ci0jZW5kaWYKLQot
I2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCi11c2luZyBUZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJn
dW1lbnRzQXN5bmNSZXBseSA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT47Ci0jZW5kaWYKLQot
I2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCi11c2luZyBUZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRp
cGxlQXJndW1lbnRzQXN5bmNSZXBseSA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBmbGFn
LCB1aW50NjRfdCB2YWx1ZSk+OwotI2VuZGlmCi0KLXVzaW5nIFRlc3RTeW5jTWVzc2FnZURlbGF5
ZWRSZXBseSA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDhfdCByZXBseSk+OwotCi11c2lu
ZyBUZXN0U3luY2hyb25vdXNNZXNzYWdlRGVsYXllZFJlcGx5ID0gQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBPcHRpb25hbDxXZWJLaXQ6OlRlc3RDbGFzc05hbWU+JiBvcHRpb25hbFJlcGx5
KT47Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYlBhZ2UKLX0gLy8gbmFtZXNwYWNlIE1lc3NhZ2VzCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L01lc3NhZ2VzU3VwZXJjbGFzcy1leHBl
Y3RlZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvTWVzc2Fn
ZXNTdXBlcmNsYXNzLWV4cGVjdGVkLmgJKHJldmlzaW9uIDI2MDc2NCkKKysrIFNvdXJjZS9XZWJL
aXQvU2NyaXB0cy93ZWJraXQvTWVzc2FnZXNTdXBlcmNsYXNzLWV4cGVjdGVkLmgJKG5vbmV4aXN0
ZW50KQpAQCAtMSwyMDYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMC0yMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycgQU5ECi0gKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQot
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IKLSAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSAqIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SCi0gKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSAqIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQot
Ci0jaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKLSNpbmNsdWRlICJDb25uZWN0aW9uLmgiCi0j
aW5jbHVkZSAiVGVzdENsYXNzTmFtZS5oIgotI2luY2x1ZGUgIldlYlBhZ2VNZXNzYWdlc1JlcGxp
ZXMuaCIKLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5o
PgotI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLWVudW0gY2xhc3MgVGVzdFR3
b1N0YXRlRW51bSA6IGJvb2w7Ci19Ci0KLW5hbWVzcGFjZSBNZXNzYWdlcyB7Ci1uYW1lc3BhY2Ug
V2ViUGFnZSB7Ci0KLXN0YXRpYyBpbmxpbmUgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJl
Y2VpdmVyTmFtZSgpCi17Ci0gICAgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJXZWJQYWdl
Iik7Ci19Ci0KLWNsYXNzIExvYWRVUkwgewotcHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBs
ZTxjb25zdCBTdHJpbmcmPiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZl
cmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0g
ICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmlu
Z1JlZmVyZW5jZSgiTG9hZFVSTCIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0g
ZmFsc2U7Ci0KLSAgICBleHBsaWNpdCBMb2FkVVJMKGNvbnN0IFN0cmluZyYgdXJsKQotICAgICAg
ICA6IG1fYXJndW1lbnRzKHVybCkKLSAgICB7Ci0gICAgfQotCi0gICAgY29uc3QgQXJndW1lbnRz
JiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwot
ICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19OwotCi0jaWYg
RU5BQkxFKFRFU1RfRkVBVFVSRSkKLWNsYXNzIFRlc3RBc3luY01lc3NhZ2UgewotcHVibGljOgot
ICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxXZWJLaXQ6OlRlc3RUd29TdGF0ZUVudW0+IEFyZ3VtZW50
czsKLQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJl
dHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZl
cmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJUZXN0QXN5bmNNZXNz
YWdlIik7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKLQotICAgIHN0
YXRpYyB2b2lkIGNhbGxSZXBseShJUEM6OkRlY29kZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KHVpbnQ2NF90JiYpPiYmKTsKLSAgICBzdGF0aWMgdm9pZCBjYW5jZWxSZXBseShDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKHVpbnQ2NF90JiYpPiYmKTsKLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZl
cmVuY2UgYXN5bmNNZXNzYWdlUmVwbHlOYW1lKCkgeyByZXR1cm4geyAiVGVzdEFzeW5jTWVzc2Fn
ZVJlcGx5IiB9OyB9Ci0gICAgdXNpbmcgQXN5bmNSZXBseSA9IFRlc3RBc3luY01lc3NhZ2VBc3lu
Y1JlcGx5OwotICAgIHN0YXRpYyB2b2lkIHNlbmQoc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rl
cj4mJiwgSVBDOjpDb25uZWN0aW9uJiwgdWludDY0X3QgcmVzdWx0KTsKLSAgICB1c2luZyBSZXBs
eSA9IHN0ZDo6dHVwbGU8dWludDY0X3QmPjsKLSAgICB1c2luZyBSZXBseUFyZ3VtZW50cyA9IHN0
ZDo6dHVwbGU8dWludDY0X3Q+OwotICAgIGV4cGxpY2l0IFRlc3RBc3luY01lc3NhZ2UoV2ViS2l0
OjpUZXN0VHdvU3RhdGVFbnVtIHR3b1N0YXRlRW51bSkKLSAgICAgICAgOiBtX2FyZ3VtZW50cyh0
d29TdGF0ZUVudW0pCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1l
bnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0K
LXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLSNlbmRpZgotCi0jaWYg
RU5BQkxFKFRFU1RfRkVBVFVSRSkKLWNsYXNzIFRlc3RBc3luY01lc3NhZ2VXaXRoTm9Bcmd1bWVu
dHMgewotcHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTw+IEFyZ3VtZW50czsKLQotICAg
IHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNz
YWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFt
ZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJUZXN0QXN5bmNNZXNzYWdlV2l0aE5v
QXJndW1lbnRzIik7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKLQot
ICAgIHN0YXRpYyB2b2lkIGNhbGxSZXBseShJUEM6OkRlY29kZXImLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOwotICAgIHN0YXRpYyB2b2lkIGNhbmNlbFJlcGx5KENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJik7Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIGFzeW5jTWVz
c2FnZVJlcGx5TmFtZSgpIHsgcmV0dXJuIHsgIlRlc3RBc3luY01lc3NhZ2VXaXRoTm9Bcmd1bWVu
dHNSZXBseSIgfTsgfQotICAgIHVzaW5nIEFzeW5jUmVwbHkgPSBUZXN0QXN5bmNNZXNzYWdlV2l0
aE5vQXJndW1lbnRzQXN5bmNSZXBseTsKLSAgICBzdGF0aWMgdm9pZCBzZW5kKHN0ZDo6dW5pcXVl
X3B0cjxJUEM6OkVuY29kZXI+JiYsIElQQzo6Q29ubmVjdGlvbiYpOwotICAgIHVzaW5nIFJlcGx5
ID0gc3RkOjp0dXBsZTw+OwotICAgIHVzaW5nIFJlcGx5QXJndW1lbnRzID0gc3RkOjp0dXBsZTw+
OwotICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAg
IHJldHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1f
YXJndW1lbnRzOwotfTsKLSNlbmRpZgotCi0jaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKLWNsYXNz
IFRlc3RBc3luY01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHMgewotcHVibGljOgotICAgIHR5
cGVkZWYgc3RkOjp0dXBsZTw+IEFyZ3VtZW50czsKLQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1Jl
ZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0K
LSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3Ry
aW5nUmVmZXJlbmNlKCJUZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1lbnRzIik7IH0K
LSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKLQotICAgIHN0YXRpYyB2b2lk
IGNhbGxSZXBseShJUEM6OkRlY29kZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wmJiwg
dWludDY0X3QmJik+JiYpOwotICAgIHN0YXRpYyB2b2lkIGNhbmNlbFJlcGx5KENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCYmLCB1aW50NjRfdCYmKT4mJik7Ci0gICAgc3RhdGljIElQQzo6U3Ry
aW5nUmVmZXJlbmNlIGFzeW5jTWVzc2FnZVJlcGx5TmFtZSgpIHsgcmV0dXJuIHsgIlRlc3RBc3lu
Y01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHNSZXBseSIgfTsgfQotICAgIHVzaW5nIEFzeW5j
UmVwbHkgPSBUZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1lbnRzQXN5bmNSZXBseTsK
LSAgICBzdGF0aWMgdm9pZCBzZW5kKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiYsIElQ
Qzo6Q29ubmVjdGlvbiYsIGJvb2wgZmxhZywgdWludDY0X3QgdmFsdWUpOwotICAgIHVzaW5nIFJl
cGx5ID0gc3RkOjp0dXBsZTxib29sJiwgdWludDY0X3QmPjsKLSAgICB1c2luZyBSZXBseUFyZ3Vt
ZW50cyA9IHN0ZDo6dHVwbGU8Ym9vbCwgdWludDY0X3Q+OwotICAgIGNvbnN0IEFyZ3VtZW50cyYg
YXJndW1lbnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAg
ICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLSNlbmRpZgot
Ci1jbGFzcyBUZXN0U3luY01lc3NhZ2UgewotcHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBs
ZTx1aW50MzJfdD4gQXJndW1lbnRzOwotCi0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNl
IHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsgfQotICAgIHN0
YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpTdHJpbmdSZWZl
cmVuY2UoIlRlc3RTeW5jTWVzc2FnZSIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5j
ID0gdHJ1ZTsKLQotICAgIHVzaW5nIERlbGF5ZWRSZXBseSA9IFRlc3RTeW5jTWVzc2FnZURlbGF5
ZWRSZXBseTsKLSAgICBzdGF0aWMgdm9pZCBzZW5kKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29k
ZXI+JiYsIElQQzo6Q29ubmVjdGlvbiYsIHVpbnQ4X3QgcmVwbHkpOwotICAgIHVzaW5nIFJlcGx5
ID0gc3RkOjp0dXBsZTx1aW50OF90Jj47Ci0gICAgdXNpbmcgUmVwbHlBcmd1bWVudHMgPSBzdGQ6
OnR1cGxlPHVpbnQ4X3Q+OwotICAgIGV4cGxpY2l0IFRlc3RTeW5jTWVzc2FnZSh1aW50MzJfdCBw
YXJhbSkKLSAgICAgICAgOiBtX2FyZ3VtZW50cyhwYXJhbSkKLSAgICB7Ci0gICAgfQotCi0gICAg
Y29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJu
IG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1bWVudHMgbV9hcmd1bWVu
dHM7Ci19OwotCi1jbGFzcyBUZXN0U3luY2hyb25vdXNNZXNzYWdlIHsKLXB1YmxpYzoKLSAgICB0
eXBlZGVmIHN0ZDo6dHVwbGU8Ym9vbD4gQXJndW1lbnRzOwotCi0gICAgc3RhdGljIElQQzo6U3Ry
aW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUo
KTsgfQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBD
OjpTdHJpbmdSZWZlcmVuY2UoIlRlc3RTeW5jaHJvbm91c01lc3NhZ2UiKTsgfQotICAgIHN0YXRp
YyBjb25zdCBib29sIGlzU3luYyA9IHRydWU7Ci0KLSAgICB1c2luZyBEZWxheWVkUmVwbHkgPSBU
ZXN0U3luY2hyb25vdXNNZXNzYWdlRGVsYXllZFJlcGx5OwotICAgIHN0YXRpYyB2b2lkIHNlbmQo
c3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mJiwgSVBDOjpDb25uZWN0aW9uJiwgY29uc3Qg
T3B0aW9uYWw8V2ViS2l0OjpUZXN0Q2xhc3NOYW1lPiYgb3B0aW9uYWxSZXBseSk7Ci0gICAgdXNp
bmcgUmVwbHkgPSBzdGQ6OnR1cGxlPE9wdGlvbmFsPFdlYktpdDo6VGVzdENsYXNzTmFtZT4mPjsK
LSAgICB1c2luZyBSZXBseUFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8T3B0aW9uYWw8V2ViS2l0OjpU
ZXN0Q2xhc3NOYW1lPj47Ci0gICAgZXhwbGljaXQgVGVzdFN5bmNocm9ub3VzTWVzc2FnZShib29s
IHZhbHVlKQotICAgICAgICA6IG1fYXJndW1lbnRzKHZhbHVlKQotICAgIHsKLSAgICB9Ci0KLSAg
ICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1
cm4gbV9hcmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3Vt
ZW50czsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYlBhZ2UKLX0gLy8gbmFtZXNwYWNlIE1lc3Nh
Z2VzCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L01l
c3NhZ2VzU3VwZXJjbGFzcy1leHBlY3RlZC5oCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOmVvbC1z
dHlsZQojIyAtMSArMCwwICMjCi1uYXRpdmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0
eQpJbmRleDogU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CShyZXZpc2lv
biAyNjA3NjQpCisrKyBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CSh3
b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBAIFNZTkNIUk9OT1VTX0FUVFJJQlVURSA9ICdT
eW5jaHJvbm91cycKIEFTWU5DX0FUVFJJQlVURSA9ICdBc3luYycKIAogX2xpY2Vuc2VfaGVhZGVy
ID0gIiIiLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTM0LDcg
KzEzNCw3IEBAIGRlZiBtZXNzYWdlX3RvX3JlcGx5X2ZvcndhcmRfZGVjbGFyYXRpb24KICAgICBy
ZXR1cm4gc3Vycm91bmRfaW5fY29uZGl0aW9uKCcnLmpvaW4ocmVzdWx0KSwgbWVzc2FnZS5jb25k
aXRpb24pCiAKIAotZGVmIG1lc3NhZ2VfdG9fc3RydWN0X2RlY2xhcmF0aW9uKG1lc3NhZ2UpOgor
ZGVmIG1lc3NhZ2VfdG9fc3RydWN0X2RlY2xhcmF0aW9uKHJlY2VpdmVyLCBtZXNzYWdlKToKICAg
ICByZXN1bHQgPSBbXQogICAgIGZ1bmN0aW9uX3BhcmFtZXRlcnMgPSBbKGZ1bmN0aW9uX3BhcmFt
ZXRlcl90eXBlKHgudHlwZSwgeC5raW5kKSwgeC5uYW1lKSBmb3IgeCBpbiBtZXNzYWdlLnBhcmFt
ZXRlcnNdCiAKQEAgLTE0Miw4ICsxNDIsNyBAQCBkZWYgbWVzc2FnZV90b19zdHJ1Y3RfZGVjbGFy
YXRpb24obWVzc2FnCiAgICAgcmVzdWx0LmFwcGVuZCgncHVibGljOlxuJykKICAgICByZXN1bHQu
YXBwZW5kKCcgICAgdHlwZWRlZiAlcyBBcmd1bWVudHM7XG4nICUgYXJndW1lbnRzX3R5cGUobWVz
c2FnZSkpCiAgICAgcmVzdWx0LmFwcGVuZCgnXG4nKQotICAgIHJlc3VsdC5hcHBlbmQoJyAgICBz
dGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpOyB9XG4nKQotICAgIHJlc3VsdC5hcHBlbmQoJyAgICBzdGF0aWMgSVBD
OjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCIl
cyIpOyB9XG4nICUgbWVzc2FnZS5uYW1lKQorICAgIHJlc3VsdC5hcHBlbmQoJyAgICBzdGF0aWMg
SVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6JXNfJXM7
IH1cbicgJSAocmVjZWl2ZXIubmFtZSwgbWVzc2FnZS5uYW1lKSkKICAgICByZXN1bHQuYXBwZW5k
KCcgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gJXM7XG4nICUgKCdmYWxzZScsICd0cnVl
JylbbWVzc2FnZS5yZXBseV9wYXJhbWV0ZXJzICE9IE5vbmUgYW5kIG5vdCBtZXNzYWdlLmhhc19h
dHRyaWJ1dGUoQVNZTkNfQVRUUklCVVRFKV0pCiAgICAgcmVzdWx0LmFwcGVuZCgnXG4nKQogICAg
IGlmIG1lc3NhZ2UucmVwbHlfcGFyYW1ldGVycyAhPSBOb25lOgpAQCAtMTUzLDcgKzE1Miw3IEBA
IGRlZiBtZXNzYWdlX3RvX3N0cnVjdF9kZWNsYXJhdGlvbihtZXNzYWcKICAgICAgICAgICAgIG1v
dmVfcGFyYW1ldGVycyA9ICcsICcuam9pbihbbW92ZV90eXBlKHgudHlwZSkgZm9yIHggaW4gbWVz
c2FnZS5yZXBseV9wYXJhbWV0ZXJzXSkKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBz
dGF0aWMgdm9pZCBjYWxsUmVwbHkoSVBDOjpEZWNvZGVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCglcyk+JiYpO1xuJyAlIG1vdmVfcGFyYW1ldGVycykKICAgICAgICAgICAgIHJlc3VsdC5hcHBl
bmQoJyAgICBzdGF0aWMgdm9pZCBjYW5jZWxSZXBseShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCVz
KT4mJik7XG4nICUgbW92ZV9wYXJhbWV0ZXJzKQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgn
ICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBhc3luY01lc3NhZ2VSZXBseU5hbWUoKSB7
IHJldHVybiB7ICIlc1JlcGx5IiB9OyB9XG4nICUgbWVzc2FnZS5uYW1lKQorICAgICAgICAgICAg
cmVzdWx0LmFwcGVuZCgnICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIGFzeW5jTWVzc2FnZVJl
cGx5TmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OiVzXyVzUmVwbHk7IH1cbicgJSAo
cmVjZWl2ZXIubmFtZSwgbWVzc2FnZS5uYW1lKSkKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQo
JyAgICB1c2luZyBBc3luY1JlcGx5ID0gJXNBc3luY1JlcGx5O1xuJyAlIG1lc3NhZ2UubmFtZSkK
ICAgICAgICAgZWxpZiBtZXNzYWdlLmhhc19hdHRyaWJ1dGUoU1lOQ0hST05PVVNfQVRUUklCVVRF
KToKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICB1c2luZyBEZWxheWVkUmVwbHkgPSAl
c0RlbGF5ZWRSZXBseTtcbicgJSBtZXNzYWdlLm5hbWUpCkBAIC0yNzcsOCArMjc2LDkgQEAgZGVm
IGZvcndhcmRfZGVjbGFyYXRpb25zX2FuZF9oZWFkZXJzKHJlYwogCiAgICAgaGVhZGVycyA9IHNl
dChbCiAgICAgICAgICciQXJndW1lbnRDb2RlcnMuaCInLAotICAgICAgICAnPHd0Zi9Gb3J3YXJk
Lmg+JywKICAgICAgICAgJyJDb25uZWN0aW9uLmgiJywKKyAgICAgICAgJyJNZXNzYWdlTmFtZXMu
aCInLAorICAgICAgICAnPHd0Zi9Gb3J3YXJkLmg+JywKICAgICAgICAgJzx3dGYvVGhyZWFkU2Fm
ZVJlZkNvdW50ZWQuaD4nLAogICAgICAgICAnIiVzTWVzc2FnZXNSZXBsaWVzLmgiJyAlIHJlY2Vp
dmVyLm5hbWUsCiAgICAgXSkKQEAgLTMzNSw2ICszMzUsNyBAQCBkZWYgZm9yd2FyZF9kZWNsYXJh
dGlvbnNfYW5kX2hlYWRlcnNfZm9yCiAKICAgICBoZWFkZXJzID0gc2V0KFsKICAgICAgICAgJzx3
dGYvRm9yd2FyZC5oPicsCisgICAgICAgICciTWVzc2FnZU5hbWVzLmgiJywKICAgICBdKQogCiAg
ICAgbm9uX3RlbXBsYXRlX3d0Zl90eXBlcyA9IGZyb3plbnNldChbCkBAIC00NDAsMTIgKzQ0MSwx
MiBAQCBkZWYgZ2VuZXJhdGVfbWVzc2FnZXNfaGVhZGVyKHJlY2VpdmVyKToKIAogICAgIHJlc3Vs
dC5hcHBlbmQoJ25hbWVzcGFjZSBNZXNzYWdlcyB7XG5uYW1lc3BhY2UgJXMge1xuJyAlIHJlY2Vp
dmVyLm5hbWUpCiAgICAgcmVzdWx0LmFwcGVuZCgnXG4nKQotICAgIHJlc3VsdC5hcHBlbmQoJ3N0
YXRpYyBpbmxpbmUgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSgpXG4n
KQorICAgIHJlc3VsdC5hcHBlbmQoJ3N0YXRpYyBpbmxpbmUgSVBDOjpSZWNlaXZlck5hbWUgbWVz
c2FnZVJlY2VpdmVyTmFtZSgpXG4nKQogICAgIHJlc3VsdC5hcHBlbmQoJ3tcbicpCi0gICAgcmVz
dWx0LmFwcGVuZCgnICAgIHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiJXMiKTtcbicgJSBy
ZWNlaXZlci5uYW1lKQorICAgIHJlc3VsdC5hcHBlbmQoJyAgICByZXR1cm4gSVBDOjpSZWNlaXZl
ck5hbWU6OiVzO1xuJyAlIHJlY2VpdmVyLm5hbWUpCiAgICAgcmVzdWx0LmFwcGVuZCgnfVxuJykK
ICAgICByZXN1bHQuYXBwZW5kKCdcbicpCi0gICAgcmVzdWx0LmFwcGVuZCgnXG4nLmpvaW4oW21l
c3NhZ2VfdG9fc3RydWN0X2RlY2xhcmF0aW9uKHgpIGZvciB4IGluIHJlY2VpdmVyLm1lc3NhZ2Vz
XSkpCisgICAgcmVzdWx0LmFwcGVuZCgnXG4nLmpvaW4oW21lc3NhZ2VfdG9fc3RydWN0X2RlY2xh
cmF0aW9uKHJlY2VpdmVyLCB4KSBmb3IgeCBpbiByZWNlaXZlci5tZXNzYWdlc10pKQogICAgIHJl
c3VsdC5hcHBlbmQoJ1xuJykKICAgICByZXN1bHQuYXBwZW5kKCd9IC8vIG5hbWVzcGFjZSAlc1xu
fSAvLyBuYW1lc3BhY2UgTWVzc2FnZXNcbicgJSByZWNlaXZlci5uYW1lKQogCkBAIC04NDcsMyAr
ODQ4LDE2NyBAQCBkZWYgZ2VuZXJhdGVfbWVzc2FnZV9oYW5kbGVyKHJlY2VpdmVyKToKICAgICAg
ICAgcmVzdWx0LmFwcGVuZCgnXG4jZW5kaWYgLy8gJXNcbicgJSByZWNlaXZlci5jb25kaXRpb24p
CiAKICAgICByZXR1cm4gJycuam9pbihyZXN1bHQpCisKKworZGVmIGdlbmVyYXRlX21lc3NhZ2Vf
bmFtZXNfaGVhZGVyKHJlY2VpdmVycyk6CisgICAgcmVzdWx0ID0gW10KKyAgICByZXN1bHQuYXBw
ZW5kKF9saWNlbnNlX2hlYWRlcikKKyAgICByZXN1bHQuYXBwZW5kKCcjcHJhZ21hIG9uY2Vcbicp
CisgICAgcmVzdWx0LmFwcGVuZCgnXG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJyNpbmNsdWRlIDx3
dGYvRW51bVRyYWl0cy5oPlxuJykKKyAgICByZXN1bHQuYXBwZW5kKCdcbicpCisgICAgcmVzdWx0
LmFwcGVuZCgnbmFtZXNwYWNlIElQQyB7XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJ1xuJykKKyAg
ICByZXN1bHQuYXBwZW5kKCdlbnVtIGNsYXNzIFJlY2VpdmVyTmFtZSA6IHVpbnQ4X3QgeycpCisK
KyAgICBlbnVtX3ZhbHVlID0gMQorICAgIGZpcnN0X3JlY2VpdmVyID0gVHJ1ZQorICAgIGZvciBy
ZWNlaXZlciBpbiByZWNlaXZlcnM6CisgICAgICAgIHJlc3VsdC5hcHBlbmQoJ1xuJykKKyAgICAg
ICAgcmVzdWx0LmFwcGVuZCgnICAgICcpCisgICAgICAgIGlmIG5vdCBmaXJzdF9yZWNlaXZlcjoK
KyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJywgJykKKyAgICAgICAgZmlyc3RfcmVjZWl2ZXIg
PSBGYWxzZQorICAgICAgICByZXN1bHQuYXBwZW5kKCclcyA9ICVkJyAlIChyZWNlaXZlci5uYW1l
LCBlbnVtX3ZhbHVlKSkKKyAgICAgICAgZW51bV92YWx1ZSA9IGVudW1fdmFsdWUgKyAxCisgICAg
cmVzdWx0LmFwcGVuZCgnXG4gICAgLCBJUEMgPSAlZCcgJSBlbnVtX3ZhbHVlKQorICAgIGVudW1f
dmFsdWUgPSBlbnVtX3ZhbHVlICsgMQorICAgIHJlc3VsdC5hcHBlbmQoJ1xuICAgICwgQXN5bmNS
ZXBseSA9ICVkJyAlIGVudW1fdmFsdWUpCisgICAgZW51bV92YWx1ZSA9IGVudW1fdmFsdWUgKyAx
CisgICAgcmVzdWx0LmFwcGVuZCgnXG4gICAgLCBJbnZhbGlkID0gJWQnICUgZW51bV92YWx1ZSkK
KyAgICByZXN1bHQuYXBwZW5kKCdcbn07XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJ1xuJykKKyAg
ICByZXN1bHQuYXBwZW5kKCdlbnVtIGNsYXNzIE1lc3NhZ2VOYW1lIDogdWludDE2X3QgeycpCisK
KyAgICBlbnVtX3ZhbHVlID0gMQorICAgIGZpcnN0X21lc3NhZ2UgPSBUcnVlCisgICAgZm9yIHJl
Y2VpdmVyIGluIHJlY2VpdmVyczoKKyAgICAgICAgZm9yIG1lc3NhZ2UgaW4gcmVjZWl2ZXIubWVz
c2FnZXM6CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCdcbicpCisgICAgICAgICAgICBpZiBt
ZXNzYWdlLmNvbmRpdGlvbjoKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcjaWYgJXNc
bicgJSBtZXNzYWdlLmNvbmRpdGlvbikKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICAn
KQorICAgICAgICAgICAgaWYgbm90IGZpcnN0X21lc3NhZ2U6CisgICAgICAgICAgICAgICAgcmVz
dWx0LmFwcGVuZCgnLCAnKQorICAgICAgICAgICAgZmlyc3RfbWVzc2FnZSA9IEZhbHNlCisgICAg
ICAgICAgICByZXN1bHQuYXBwZW5kKCclc18lcyA9ICVkJyAlIChyZWNlaXZlci5uYW1lLCBtZXNz
YWdlLm5hbWUsIGVudW1fdmFsdWUpKQorICAgICAgICAgICAgZW51bV92YWx1ZSA9IGVudW1fdmFs
dWUgKyAxCisgICAgICAgICAgICBpZiBtZXNzYWdlLmhhc19hdHRyaWJ1dGUoQVNZTkNfQVRUUklC
VVRFKToKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCdcbiAgICAsICVzXyVzUmVwbHkg
PSAlZCcgJSAocmVjZWl2ZXIubmFtZSwgbWVzc2FnZS5uYW1lLCBlbnVtX3ZhbHVlKSkKKyAgICAg
ICAgICAgICAgICBlbnVtX3ZhbHVlID0gZW51bV92YWx1ZSArIDEKKyAgICAgICAgICAgIGlmIG1l
c3NhZ2UuY29uZGl0aW9uOgorICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ1xuI2VuZGlm
JykKKyAgICByZXN1bHQuYXBwZW5kKCdcbiAgICAsIFdyYXBwZWRBc3luY01lc3NhZ2VGb3JUZXN0
aW5nID0gJWQnICUgZW51bV92YWx1ZSkKKyAgICBlbnVtX3ZhbHVlID0gZW51bV92YWx1ZSArIDEK
KyAgICByZXN1bHQuYXBwZW5kKCdcbiAgICAsIFN5bmNNZXNzYWdlUmVwbHkgPSAlZCcgJSBlbnVt
X3ZhbHVlKQorICAgIGVudW1fdmFsdWUgPSBlbnVtX3ZhbHVlICsgMQorICAgIHJlc3VsdC5hcHBl
bmQoJ1xuICAgICwgSW5pdGlhbGl6ZUNvbm5lY3Rpb24gPSAlZCcgJSBlbnVtX3ZhbHVlKQorICAg
IHJlc3VsdC5hcHBlbmQoJ1xufTtcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnXG4nKQorICAgIHJl
c3VsdC5hcHBlbmQoJ1JlY2VpdmVyTmFtZSByZWNlaXZlck5hbWUoTWVzc2FnZU5hbWUpO1xuJykK
KyAgICByZXN1bHQuYXBwZW5kKCdjb25zdCBjaGFyKiBkZXNjcmlwdGlvbihNZXNzYWdlTmFtZSk7
XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJ2Jvb2wgaXNWYWxpZE1lc3NhZ2VOYW1lKE1lc3NhZ2VO
YW1lKTtcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnXG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJ30g
Ly8gbmFtZXNwYWNlIElQQ1xuJykKKyAgICByZXN1bHQuYXBwZW5kKCdcbicpCisgICAgcmVzdWx0
LmFwcGVuZCgnbmFtZXNwYWNlIFdURiB7XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJ1xuJykKKyAg
ICByZXN1bHQuYXBwZW5kKCd0ZW1wbGF0ZTw+XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJ2NsYXNz
IEhhc0N1c3RvbUlzVmFsaWRFbnVtPElQQzo6TWVzc2FnZU5hbWU+IDogcHVibGljIHN0ZDo6dHJ1
ZV90eXBlIHsgfTtcbicpCisgICAgcmVzdWx0LmFwcGVuZCgndGVtcGxhdGU8dHlwZW5hbWUgRSwg
dHlwZW5hbWUgVCwgdHlwZW5hbWUgPSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfc2FtZTxFLCBJ
UEM6Ok1lc3NhZ2VOYW1lPjo6dmFsdWU+PlxuJykKKyAgICByZXN1bHQuYXBwZW5kKCdib29sIGlz
VmFsaWRFbnVtKFQgbWVzc2FnZU5hbWUpXG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJ3tcbicpCisg
ICAgcmVzdWx0LmFwcGVuZCgnICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFQpID09IHNpemVvZihJ
UEM6Ok1lc3NhZ2VOYW1lKSwgImlzVmFsaWRFbnVtPE1lc3NhZ2VOYW1lPiBzaG91bGQgb25seSBi
ZSBjYWxsZWQgd2l0aCAxNi1iaXQgdHlwZXMiKTtcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnICAg
IHJldHVybiBJUEM6OmlzVmFsaWRNZXNzYWdlTmFtZShzdGF0aWNfY2FzdDxJUEM6Ok1lc3NhZ2VO
YW1lPihtZXNzYWdlTmFtZSkpO1xuJykKKyAgICByZXN1bHQuYXBwZW5kKCd9O1xuJykKKyAgICBy
ZXN1bHQuYXBwZW5kKCdcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnfSAvLyBuYW1lc3BhY2UgV1RG
XG4nKQorICAgIHJldHVybiAnJy5qb2luKHJlc3VsdCkKKworCitkZWYgZ2VuZXJhdGVfbWVzc2Fn
ZV9uYW1lc19pbXBsZW1lbnRhdGlvbihyZWNlaXZlcnMpOgorICAgIHJlc3VsdCA9IFtdCisgICAg
cmVzdWx0LmFwcGVuZChfbGljZW5zZV9oZWFkZXIpCisgICAgcmVzdWx0LmFwcGVuZCgnI2luY2x1
ZGUgImNvbmZpZy5oIlxuJykKKyAgICByZXN1bHQuYXBwZW5kKCcjaW5jbHVkZSAiTWVzc2FnZU5h
bWVzLmgiXG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJ1xuJykKKyAgICByZXN1bHQuYXBwZW5kKCdu
YW1lc3BhY2UgSVBDIHtcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnXG4nKQorICAgIHJlc3VsdC5h
cHBlbmQoJ2NvbnN0IGNoYXIqIGRlc2NyaXB0aW9uKE1lc3NhZ2VOYW1lIG5hbWUpXG4nKQorICAg
IHJlc3VsdC5hcHBlbmQoJ3tcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnICAgIHN3aXRjaCAobmFt
ZSkge1xuJykKKyAgICBmb3IgcmVjZWl2ZXIgaW4gcmVjZWl2ZXJzOgorICAgICAgICBmb3IgbWVz
c2FnZSBpbiByZWNlaXZlci5tZXNzYWdlczoKKyAgICAgICAgICAgIGlmIG1lc3NhZ2UuY29uZGl0
aW9uOgorICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyNpZiAlc1xuJyAlIG1lc3NhZ2Uu
Y29uZGl0aW9uKQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIGNhc2UgTWVzc2FnZU5h
bWU6OiVzXyVzOlxuJyAlIChyZWNlaXZlci5uYW1lLCBtZXNzYWdlLm5hbWUpKQorICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZCgnICAgICAgICByZXR1cm4gIiVzOjolcyI7XG4nICUgKHJlY2VpdmVy
Lm5hbWUsIG1lc3NhZ2UubmFtZSkpCisgICAgICAgICAgICBpZiBtZXNzYWdlLmhhc19hdHRyaWJ1
dGUoQVNZTkNfQVRUUklCVVRFKToKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAg
Y2FzZSBNZXNzYWdlTmFtZTo6JXNfJXNSZXBseTpcbicgJSAocmVjZWl2ZXIubmFtZSwgbWVzc2Fn
ZS5uYW1lKSkKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgICAgIHJldHVybiAi
JXM6OiVzUmVwbHkiO1xuJyAlIChyZWNlaXZlci5uYW1lLCBtZXNzYWdlLm5hbWUpKQorICAgICAg
ICAgICAgaWYgbWVzc2FnZS5jb25kaXRpb246CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVu
ZCgnI2VuZGlmXG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpX
cmFwcGVkQXN5bmNNZXNzYWdlRm9yVGVzdGluZzpcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnICAg
ICAgICByZXR1cm4gIklQQzo6V3JhcHBlZEFzeW5jTWVzc2FnZUZvclRlc3RpbmciO1xuJykKKyAg
ICByZXN1bHQuYXBwZW5kKCcgICAgY2FzZSBNZXNzYWdlTmFtZTo6U3luY01lc3NhZ2VSZXBseTpc
bicpCisgICAgcmVzdWx0LmFwcGVuZCgnICAgICAgICByZXR1cm4gIklQQzo6U3luY01lc3NhZ2VS
ZXBseSI7XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpJbml0
aWFsaXplQ29ubmVjdGlvbjpcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnICAgICAgICByZXR1cm4g
IklQQzo6SW5pdGlhbGl6ZUNvbm5lY3Rpb24iO1xuJykKKyAgICByZXN1bHQuYXBwZW5kKCcgICAg
fVxuJykKKyAgICByZXN1bHQuYXBwZW5kKCcgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7XG4nKQor
ICAgIHJlc3VsdC5hcHBlbmQoJyAgICByZXR1cm4gIjxpbnZhbGlkIG1lc3NhZ2UgbmFtZT4iO1xu
JykKKyAgICByZXN1bHQuYXBwZW5kKCd9XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJ1xuJykKKyAg
ICByZXN1bHQuYXBwZW5kKCdSZWNlaXZlck5hbWUgcmVjZWl2ZXJOYW1lKE1lc3NhZ2VOYW1lIG1l
c3NhZ2VOYW1lKVxuJykKKyAgICByZXN1bHQuYXBwZW5kKCd7XG4nKQorICAgIHJlc3VsdC5hcHBl
bmQoJyAgICBzd2l0Y2ggKG1lc3NhZ2VOYW1lKSB7XG4nKQorICAgIGZvciByZWNlaXZlciBpbiBy
ZWNlaXZlcnM6CisgICAgICAgIGZvciBtZXNzYWdlIGluIHJlY2VpdmVyLm1lc3NhZ2VzOgorICAg
ICAgICAgICAgaWYgbWVzc2FnZS5jb25kaXRpb246CisgICAgICAgICAgICAgICAgcmVzdWx0LmFw
cGVuZCgnI2lmICVzXG4nICUgbWVzc2FnZS5jb25kaXRpb24pCisgICAgICAgICAgICByZXN1bHQu
YXBwZW5kKCcgICAgY2FzZSBNZXNzYWdlTmFtZTo6JXNfJXM6XG4nICUgKHJlY2VpdmVyLm5hbWUs
IG1lc3NhZ2UubmFtZSkpCisgICAgICAgICAgICBpZiBtZXNzYWdlLmNvbmRpdGlvbjoKKyAgICAg
ICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcjZW5kaWZcbicpCisgICAgICAgIHJlc3VsdC5hcHBl
bmQoJyAgICAgICAgcmV0dXJuIFJlY2VpdmVyTmFtZTo6JXM7XG4nICUgcmVjZWl2ZXIubmFtZSkK
KyAgICBmb3IgcmVjZWl2ZXIgaW4gcmVjZWl2ZXJzOgorICAgICAgICBmb3IgbWVzc2FnZSBpbiBy
ZWNlaXZlci5tZXNzYWdlczoKKyAgICAgICAgICAgIGlmIG1lc3NhZ2UuaGFzX2F0dHJpYnV0ZShB
U1lOQ19BVFRSSUJVVEUpOgorICAgICAgICAgICAgICAgIGlmIG1lc3NhZ2UuY29uZGl0aW9uOgor
ICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcjaWYgJXNcbicgJSBtZXNzYWdlLmNv
bmRpdGlvbikKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgY2FzZSBNZXNzYWdl
TmFtZTo6JXNfJXNSZXBseTpcbicgJSAocmVjZWl2ZXIubmFtZSwgbWVzc2FnZS5uYW1lKSkKKyAg
ICAgICAgICAgICAgICBpZiBtZXNzYWdlLmNvbmRpdGlvbjoKKyAgICAgICAgICAgICAgICAgICAg
cmVzdWx0LmFwcGVuZCgnI2VuZGlmXG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJyAgICAgICAgcmV0
dXJuIFJlY2VpdmVyTmFtZTo6QXN5bmNSZXBseTtcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnICAg
IGNhc2UgTWVzc2FnZU5hbWU6OldyYXBwZWRBc3luY01lc3NhZ2VGb3JUZXN0aW5nOlxuJykKKyAg
ICByZXN1bHQuYXBwZW5kKCcgICAgY2FzZSBNZXNzYWdlTmFtZTo6U3luY01lc3NhZ2VSZXBseTpc
bicpCisgICAgcmVzdWx0LmFwcGVuZCgnICAgIGNhc2UgTWVzc2FnZU5hbWU6OkluaXRpYWxpemVD
b25uZWN0aW9uOlxuJykKKyAgICByZXN1bHQuYXBwZW5kKCcgICAgICAgIHJldHVybiBSZWNlaXZl
ck5hbWU6OklQQztcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnICAgIH1cbicpCisgICAgcmVzdWx0
LmFwcGVuZCgnICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpO1xuJykKKyAgICByZXN1bHQuYXBwZW5k
KCcgICAgcmV0dXJuIFJlY2VpdmVyTmFtZTo6SW52YWxpZDtcbicpCisgICAgcmVzdWx0LmFwcGVu
ZCgnfVxuJykKKyAgICByZXN1bHQuYXBwZW5kKCdcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnYm9v
bCBpc1ZhbGlkTWVzc2FnZU5hbWUoTWVzc2FnZU5hbWUgbWVzc2FnZU5hbWUpXG4nKQorICAgIHJl
c3VsdC5hcHBlbmQoJ3tcbicpCisgICAgZm9yIHJlY2VpdmVyIGluIHJlY2VpdmVyczoKKyAgICAg
ICAgZm9yIG1lc3NhZ2UgaW4gcmVjZWl2ZXIubWVzc2FnZXM6CisgICAgICAgICAgICBpZiBtZXNz
YWdlLmNvbmRpdGlvbjoKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcjaWYgJXNcbicg
JSBtZXNzYWdlLmNvbmRpdGlvbikKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBpZiAo
bWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6JXNfJXMpXG4nICUgKHJlY2VpdmVyLm5h
bWUsIG1lc3NhZ2UubmFtZSkpCisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgICAgIHJl
dHVybiB0cnVlO1xuJykKKyAgICAgICAgICAgIGlmIG1lc3NhZ2UuaGFzX2F0dHJpYnV0ZShBU1lO
Q19BVFRSSUJVVEUpOgorICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBpZiAobWVz
c2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6JXNfJXNSZXBseSlcbicgJSAocmVjZWl2ZXIu
bmFtZSwgbWVzc2FnZS5uYW1lKSkKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAg
ICAgIHJldHVybiB0cnVlO1xuJykKKyAgICAgICAgICAgIGlmIG1lc3NhZ2UuY29uZGl0aW9uOgor
ICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyNlbmRpZlxuJykKKyAgICByZXN1bHQuYXBw
ZW5kKCcgICAgaWYgKG1lc3NhZ2VOYW1lID09IElQQzo6TWVzc2FnZU5hbWU6OldyYXBwZWRBc3lu
Y01lc3NhZ2VGb3JUZXN0aW5nKVxuJykKKyAgICByZXN1bHQuYXBwZW5kKCcgICAgICAgIHJldHVy
biB0cnVlO1xuJykKKyAgICByZXN1bHQuYXBwZW5kKCcgICAgaWYgKG1lc3NhZ2VOYW1lID09IElQ
Qzo6TWVzc2FnZU5hbWU6OlN5bmNNZXNzYWdlUmVwbHkpXG4nKQorICAgIHJlc3VsdC5hcHBlbmQo
JyAgICAgICAgcmV0dXJuIHRydWU7XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJyAgICBpZiAobWVz
c2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6SW5pdGlhbGl6ZUNvbm5lY3Rpb24pXG4nKQor
ICAgIHJlc3VsdC5hcHBlbmQoJyAgICAgICAgcmV0dXJuIHRydWU7XG4nKQorICAgIHJlc3VsdC5h
cHBlbmQoJyAgICByZXR1cm4gZmFsc2U7XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJ307XG4nKQor
ICAgIHJlc3VsdC5hcHBlbmQoJ1xuJykKKyAgICByZXN1bHQuYXBwZW5kKCd9IC8vIG5hbWVzcGFj
ZSBJUENcbicpCisgICAgcmV0dXJuICcnLmpvaW4ocmVzdWx0KQpJbmRleDogU291cmNlL1dlYktp
dC9TY3JpcHRzL3dlYmtpdC90ZXN0LWxlZ2FjeS1tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3QtbGVnYWN5LW1lc3NhZ2VzLmluCShyZXZp
c2lvbiAyNjA3NjQpCisrKyBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3QtbGVnYWN5
LW1lc3NhZ2VzLmluCShub25leGlzdGVudCkKQEAgLTEsNzcgKzAsMCBAQAotIyBDb3B5cmlnaHQg
KEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0jCi0jIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycgQU5ECi0jIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0jIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSMg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IKLSMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotIyBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgot
IyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUgotIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotIyBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0jaWYgRU5BQkxFKFdFQktJVDIpCi0jaWYgTkVT
VEVEX01BU1RFUl9DT05ESVRJT04gfHwgTUFTVEVSX09SICYmIE1BU1RFUl9BTkQKLQotbWVzc2Fn
ZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7Ci0gICAgTG9hZFVSTChTdHJpbmcgdXJsKQot
I2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCi0gICAgTG9hZFNvbWV0aGluZyhTdHJpbmcgdXJsKQot
I2lmIE5FU1RFRF9NRVNTQUdFX0NPTkRJVElPTiB8fCBTT01FX09USEVSX01FU1NBR0VfQ09ORElU
SU9OCi0gICAgVG91Y2hFdmVudChXZWJLaXQ6OldlYlRvdWNoRXZlbnQgZXZlbnQpCi0jZW5kaWYK
LSNpZiBORVNURURfTUVTU0FHRV9DT05ESVRJT04gJiYgU09NRV9PVEhFUl9NRVNTQUdFX0NPTkRJ
VElPTgotICAgIEFkZEV2ZW50KFdlYktpdDo6V2ViVG91Y2hFdmVudCBldmVudCkKLSNlbmRpZgot
ICAgIExvYWRTb21ldGhpbmdFbHNlKFN0cmluZyB1cmwpCi0jZW5kaWYKLSAgICBEaWRSZWNlaXZl
UG9saWN5RGVjaXNpb24odWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbGlzdGVuZXJJRCwgdWlu
dDMyX3QgcG9saWN5QWN0aW9uKQotICAgIENsb3NlKCkKLQotICAgIFByZWZlcmVuY2VzRGlkQ2hh
bmdlKFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZSBzdG9yZSkKLSAgICBTZW5kRG91YmxlQW5k
RmxvYXQoZG91YmxlIGQsIGZsb2F0IGYpCi0gICAgU2VuZEludHMoVmVjdG9yPHVpbnQ2NF90PiBp
bnRzLCBWZWN0b3I8VmVjdG9yPHVpbnQ2NF90Pj4gaW50VmVjdG9ycykKLQotICAgIENyZWF0ZVBs
dWdpbih1aW50NjRfdCBwbHVnaW5JbnN0YW5jZUlELCBXZWJLaXQ6OlBsdWdpbjo6UGFyYW1ldGVy
cyBwYXJhbWV0ZXJzKSAtPiAoYm9vbCByZXN1bHQpCi0gICAgUnVuSmF2YVNjcmlwdEFsZXJ0KHVp
bnQ2NF90IGZyYW1lSUQsIFN0cmluZyBtZXNzYWdlKSAtPiAoKQotICAgIEdldFBsdWdpbnMoYm9v
bCByZWZyZXNoKSAtPiAoVmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+IHBsdWdpbnMpCi0gICAg
R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24oU3RyaW5nIHBsdWdpblBhdGgpIC0+IChJUEM6OkNv
bm5lY3Rpb246OkhhbmRsZSBjb25uZWN0aW9uSGFuZGxlKSBTeW5jaHJvbm91cwotCi0gICAgVGVz
dE11bHRpcGxlQXR0cmlidXRlcygpIC0+ICgpIFdhbnRzQ29ubmVjdGlvbiBTeW5jaHJvbm91cwot
Ci0gICAgVGVzdFBhcmFtZXRlckF0dHJpYnV0ZXMoW0F0dHJpYnV0ZU9uZSBBdHRyaWJ1dGVUd29d
IHVpbnQ2NF90IGZvbywgZG91YmxlIGJhciwgW0F0dHJpYnV0ZVRocmVlXSBkb3VibGUgYmF6KQot
Ci0gICAgVGVtcGxhdGVUZXN0KEhhc2hNYXA8U3RyaW5nLCBzdGQ6OnBhaXI8U3RyaW5nLCB1aW50
NjRfdD4+IGEpCi0KLSAgICBTZXRWaWRlb0xheWVySUQoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6
UGxhdGZvcm1MYXllcklEIHZpZGVvTGF5ZXJJRCkKLQotI2lmIFBMQVRGT1JNKE1BQykKLSAgICBE
aWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbihJUEM6Ok1hY2hQb3J0IGNvbm5lY3Rpb25JZGVu
dGlmaWVyKQotI2VuZGlmCi0KLSNpZiBQTEFURk9STShNQUMpCi0gICAgIyBLZXlib2FyZCBzdXBw
b3J0Ci0gICAgSW50ZXJwcmV0S2V5RXZlbnQodWludDMyX3QgdHlwZSkgLT4gKFZlY3RvcjxXZWJD
b3JlOjpLZXlwcmVzc0NvbW1hbmQ+IGNvbW1hbmROYW1lKQotI2VuZGlmCi0KLSNpZiBFTkFCTEUo
REVQUkVDQVRFRF9GRUFUVVJFKQotICAgIERlcHJlY2F0ZWRPcGVyYXRpb24oSVBDOjpEdW1teVR5
cGUgZHVtbXkpCi0jZW5kaWYKLQotI2lmIEVOQUJMRShFWFBFUklNRU5UQUxfRkVBVFVSRSkKLSAg
ICBFeHBlcmltZW50YWxPcGVyYXRpb24oSVBDOjpEdW1teVR5cGUgZHVtbXkpCi0jZW5kaWYKLX0K
LQotI2VuZGlmCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVz
dC1sZWdhY3kubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TY3JpcHRz
L3dlYmtpdC90ZXN0LWxlZ2FjeS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjYwNzY0KQkoZnJvbSBT
b3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3QtbGVnYWN5LW1lc3NhZ2VzLmluOjI2MDc2
NCkKKysrIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdC1sZWdhY3kubWVzc2FnZXMu
aW4JKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3NyBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycg
QU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorCisjaWYgRU5BQkxFKFdFQktJVDIpCisjaWYgTkVTVEVEX01BU1RF
Ul9DT05ESVRJT04gfHwgTUFTVEVSX09SICYmIE1BU1RFUl9BTkQKKworbWVzc2FnZXMgLT4gV2Vi
UGFnZSBMZWdhY3lSZWNlaXZlciB7CisgICAgTG9hZFVSTChTdHJpbmcgdXJsKQorI2lmIEVOQUJM
RShUT1VDSF9FVkVOVFMpCisgICAgTG9hZFNvbWV0aGluZyhTdHJpbmcgdXJsKQorI2lmIE5FU1RF
RF9NRVNTQUdFX0NPTkRJVElPTiB8fCBTT01FX09USEVSX01FU1NBR0VfQ09ORElUSU9OCisgICAg
VG91Y2hFdmVudChXZWJLaXQ6OldlYlRvdWNoRXZlbnQgZXZlbnQpCisjZW5kaWYKKyNpZiBORVNU
RURfTUVTU0FHRV9DT05ESVRJT04gJiYgU09NRV9PVEhFUl9NRVNTQUdFX0NPTkRJVElPTgorICAg
IEFkZEV2ZW50KFdlYktpdDo6V2ViVG91Y2hFdmVudCBldmVudCkKKyNlbmRpZgorICAgIExvYWRT
b21ldGhpbmdFbHNlKFN0cmluZyB1cmwpCisjZW5kaWYKKyAgICBEaWRSZWNlaXZlUG9saWN5RGVj
aXNpb24odWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbGlzdGVuZXJJRCwgdWludDMyX3QgcG9s
aWN5QWN0aW9uKQorICAgIENsb3NlKCkKKworICAgIFByZWZlcmVuY2VzRGlkQ2hhbmdlKFdlYktp
dDo6V2ViUHJlZmVyZW5jZXNTdG9yZSBzdG9yZSkKKyAgICBTZW5kRG91YmxlQW5kRmxvYXQoZG91
YmxlIGQsIGZsb2F0IGYpCisgICAgU2VuZEludHMoVmVjdG9yPHVpbnQ2NF90PiBpbnRzLCBWZWN0
b3I8VmVjdG9yPHVpbnQ2NF90Pj4gaW50VmVjdG9ycykKKworICAgIENyZWF0ZVBsdWdpbih1aW50
NjRfdCBwbHVnaW5JbnN0YW5jZUlELCBXZWJLaXQ6OlBsdWdpbjo6UGFyYW1ldGVycyBwYXJhbWV0
ZXJzKSAtPiAoYm9vbCByZXN1bHQpCisgICAgUnVuSmF2YVNjcmlwdEFsZXJ0KHVpbnQ2NF90IGZy
YW1lSUQsIFN0cmluZyBtZXNzYWdlKSAtPiAoKQorICAgIEdldFBsdWdpbnMoYm9vbCByZWZyZXNo
KSAtPiAoVmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+IHBsdWdpbnMpCisgICAgR2V0UGx1Z2lu
UHJvY2Vzc0Nvbm5lY3Rpb24oU3RyaW5nIHBsdWdpblBhdGgpIC0+IChJUEM6OkNvbm5lY3Rpb246
OkhhbmRsZSBjb25uZWN0aW9uSGFuZGxlKSBTeW5jaHJvbm91cworCisgICAgVGVzdE11bHRpcGxl
QXR0cmlidXRlcygpIC0+ICgpIFdhbnRzQ29ubmVjdGlvbiBTeW5jaHJvbm91cworCisgICAgVGVz
dFBhcmFtZXRlckF0dHJpYnV0ZXMoW0F0dHJpYnV0ZU9uZSBBdHRyaWJ1dGVUd29dIHVpbnQ2NF90
IGZvbywgZG91YmxlIGJhciwgW0F0dHJpYnV0ZVRocmVlXSBkb3VibGUgYmF6KQorCisgICAgVGVt
cGxhdGVUZXN0KEhhc2hNYXA8U3RyaW5nLCBzdGQ6OnBhaXI8U3RyaW5nLCB1aW50NjRfdD4+IGEp
CisKKyAgICBTZXRWaWRlb0xheWVySUQoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1M
YXllcklEIHZpZGVvTGF5ZXJJRCkKKworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBEaWRDcmVhdGVX
ZWJQcm9jZXNzQ29ubmVjdGlvbihJUEM6Ok1hY2hQb3J0IGNvbm5lY3Rpb25JZGVudGlmaWVyKQor
I2VuZGlmCisKKyNpZiBQTEFURk9STShNQUMpCisgICAgIyBLZXlib2FyZCBzdXBwb3J0CisgICAg
SW50ZXJwcmV0S2V5RXZlbnQodWludDMyX3QgdHlwZSkgLT4gKFZlY3RvcjxXZWJDb3JlOjpLZXlw
cmVzc0NvbW1hbmQ+IGNvbW1hbmROYW1lKQorI2VuZGlmCisKKyNpZiBFTkFCTEUoREVQUkVDQVRF
RF9GRUFUVVJFKQorICAgIERlcHJlY2F0ZWRPcGVyYXRpb24oSVBDOjpEdW1teVR5cGUgZHVtbXkp
CisjZW5kaWYKKworI2lmIEVOQUJMRShFWFBFUklNRU5UQUxfRkVBVFVSRSkKKyAgICBFeHBlcmlt
ZW50YWxPcGVyYXRpb24oSVBDOjpEdW1teVR5cGUgZHVtbXkpCisjZW5kaWYKK30KKworI2VuZGlm
CisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdC1tZXNzYWdl
cy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3QtbWVz
c2FnZXMuaW4JKHJldmlzaW9uIDI2MDc2NCkKKysrIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJr
aXQvdGVzdC1tZXNzYWdlcy5pbgkobm9uZXhpc3RlbnQpCkBAIC0xLDg0ICswLDAgQEAKLSMgQ29w
eXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwot
IyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnIEFORAotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotIyBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCi0jIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0jIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSMgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IKLSMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSMgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotI2lmIEVOQUJMRShXRUJLSVQyKQot
I2lmIE5FU1RFRF9NQVNURVJfQ09ORElUSU9OIHx8IE1BU1RFUl9PUiAmJiBNQVNURVJfQU5ECi0K
LQotIyBUaGUgcGFyc2VyIHNob3VsZCB0cmVhdCBhbGwgb2YgdGhlc2UgYXMgY29tbWVudHMKLSNG
YWtlTG9hZFVSTEEoU3RyaW5nIHVybCkKLSMgRmFrZUxvYWRVUkxCKFN0cmluZyB1cmwpCi0gICAg
I0Zha2VMb2FkVVJMQyhTdHJpbmcgdXJsKQotICAgICMgRmFrZUxvYWRVUkxEKFN0cmluZyB1cmwp
Ci0KLW1lc3NhZ2VzIC0+IFdlYlBhZ2UgewotICAgIExvYWRVUkwoU3RyaW5nIHVybCkKLSNpZiBF
TkFCTEUoVE9VQ0hfRVZFTlRTKQotICAgIExvYWRTb21ldGhpbmcoU3RyaW5nIHVybCkKLSNpZiBO
RVNURURfTUVTU0FHRV9DT05ESVRJT04gfHwgU09NRV9PVEhFUl9NRVNTQUdFX0NPTkRJVElPTgot
ICAgIFRvdWNoRXZlbnQoV2ViS2l0OjpXZWJUb3VjaEV2ZW50IGV2ZW50KQotI2VuZGlmCi0jaWYg
TkVTVEVEX01FU1NBR0VfQ09ORElUSU9OICYmIFNPTUVfT1RIRVJfTUVTU0FHRV9DT05ESVRJT04K
LSAgICBBZGRFdmVudChXZWJLaXQ6OldlYlRvdWNoRXZlbnQgZXZlbnQpCi0jZW5kaWYKLSAgICBM
b2FkU29tZXRoaW5nRWxzZShTdHJpbmcgdXJsKQotI2VuZGlmCi0gICAgRGlkUmVjZWl2ZVBvbGlj
eURlY2lzaW9uKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IGxpc3RlbmVySUQsIHVpbnQzMl90
IHBvbGljeUFjdGlvbikKLSAgICBDbG9zZSgpCi0KLSAgICBQcmVmZXJlbmNlc0RpZENoYW5nZShX
ZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmUgc3RvcmUpCi0gICAgU2VuZERvdWJsZUFuZEZsb2F0
KGRvdWJsZSBkLCBmbG9hdCBmKQotICAgIFNlbmRJbnRzKFZlY3Rvcjx1aW50NjRfdD4gaW50cywg
VmVjdG9yPFZlY3Rvcjx1aW50NjRfdD4+IGludFZlY3RvcnMpCi0KLSAgICBDcmVhdGVQbHVnaW4o
dWludDY0X3QgcGx1Z2luSW5zdGFuY2VJRCwgV2ViS2l0OjpQbHVnaW46OlBhcmFtZXRlcnMgcGFy
YW1ldGVycykgLT4gKGJvb2wgcmVzdWx0KQotICAgIFJ1bkphdmFTY3JpcHRBbGVydCh1aW50NjRf
dCBmcmFtZUlELCBTdHJpbmcgbWVzc2FnZSkgLT4gKCkKLSAgICBHZXRQbHVnaW5zKGJvb2wgcmVm
cmVzaCkgLT4gKFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiBwbHVnaW5zKQotICAgIEdldFBs
dWdpblByb2Nlc3NDb25uZWN0aW9uKFN0cmluZyBwbHVnaW5QYXRoKSAtPiAoSVBDOjpDb25uZWN0
aW9uOjpIYW5kbGUgY29ubmVjdGlvbkhhbmRsZSkgU3luY2hyb25vdXMKLQotICAgIFRlc3RNdWx0
aXBsZUF0dHJpYnV0ZXMoKSAtPiAoKSBXYW50c0Nvbm5lY3Rpb24gU3luY2hyb25vdXMKLQotICAg
IFRlc3RQYXJhbWV0ZXJBdHRyaWJ1dGVzKFtBdHRyaWJ1dGVPbmUgQXR0cmlidXRlVHdvXSB1aW50
NjRfdCBmb28sIGRvdWJsZSBiYXIsIFtBdHRyaWJ1dGVUaHJlZV0gZG91YmxlIGJheikKLQotICAg
IFRlbXBsYXRlVGVzdChIYXNoTWFwPFN0cmluZywgc3RkOjpwYWlyPFN0cmluZywgdWludDY0X3Q+
PiBhKQotCi0gICAgU2V0VmlkZW9MYXllcklEKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OlBsYXRm
b3JtTGF5ZXJJRCB2aWRlb0xheWVySUQpCi0KLSNpZiBQTEFURk9STShNQUMpCi0gICAgRGlkQ3Jl
YXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oSVBDOjpNYWNoUG9ydCBjb25uZWN0aW9uSWRlbnRpZmll
cikKLSNlbmRpZgotCi0jaWYgUExBVEZPUk0oTUFDKQotICAgICMgS2V5Ym9hcmQgc3VwcG9ydAot
ICAgIEludGVycHJldEtleUV2ZW50KHVpbnQzMl90IHR5cGUpIC0+IChWZWN0b3I8V2ViQ29yZTo6
S2V5cHJlc3NDb21tYW5kPiBjb21tYW5kTmFtZSkKLSNlbmRpZgotCi0jaWYgRU5BQkxFKERFUFJF
Q0FURURfRkVBVFVSRSkKLSAgICBEZXByZWNhdGVkT3BlcmF0aW9uKElQQzo6RHVtbXlUeXBlIGR1
bW15KQotI2VuZGlmCi0KLSNpZiBFTkFCTEUoRVhQRVJJTUVOVEFMX0ZFQVRVUkUpCi0gICAgRXhw
ZXJpbWVudGFsT3BlcmF0aW9uKElQQzo6RHVtbXlUeXBlIGR1bW15KQotI2VuZGlmCi19Ci0KLSNl
bmRpZgotI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3Qtc3Vw
ZXJjbGFzcy1tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMv
d2Via2l0L3Rlc3Qtc3VwZXJjbGFzcy1tZXNzYWdlcy5pbgkocmV2aXNpb24gMjYwNzY0KQorKysg
U291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0LXN1cGVyY2xhc3MtbWVzc2FnZXMuaW4J
KG5vbmV4aXN0ZW50KQpAQCAtMSwzMiArMCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAxMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSMgYXJlIG1ldDoKLSMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQK
LSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKLSMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotIyBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUgotIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0jIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSCi0jIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0jIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0j
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0KLW1lc3NhZ2VzIC0+IFdlYlBhZ2UgOiBXZWJQYWdlQmFzZSB7Ci0gICAg
TG9hZFVSTChTdHJpbmcgdXJsKQotI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCi0gICAgVGVzdEFz
eW5jTWVzc2FnZShlbnVtOmJvb2wgV2ViS2l0OjpUZXN0VHdvU3RhdGVFbnVtIHR3b1N0YXRlRW51
bSkgLT4gKHVpbnQ2NF90IHJlc3VsdCkgQXN5bmMKLSAgICBUZXN0QXN5bmNNZXNzYWdlV2l0aE5v
QXJndW1lbnRzKCkgLT4gKCkgQXN5bmMKLSAgICBUZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxl
QXJndW1lbnRzKCkgLT4gKGJvb2wgZmxhZywgdWludDY0X3QgdmFsdWUpIEFzeW5jCi0jZW5kaWYK
LSAgICBUZXN0U3luY01lc3NhZ2UodWludDMyX3QgcGFyYW0pIC0+ICh1aW50OF90IHJlcGx5KSBT
eW5jaHJvbm91cwotICAgIFRlc3RTeW5jaHJvbm91c01lc3NhZ2UoYm9vbCB2YWx1ZSkgLT4gKE9w
dGlvbmFsPFdlYktpdDo6VGVzdENsYXNzTmFtZT4gb3B0aW9uYWxSZXBseSkgU3luY2hyb25vdXMK
LX0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdC1zdXBlcmNsYXNzLm1l
c3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVz
dC1zdXBlcmNsYXNzLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyNjA3NjQpCShmcm9tIFNvdXJjZS9X
ZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdC1zdXBlcmNsYXNzLW1lc3NhZ2VzLmluOjI2MDc2NCkK
KysrIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdC1zdXBlcmNsYXNzLm1lc3NhZ2Vz
LmluCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzIgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDEw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
IEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKworbWVzc2FnZXMgLT4gV2ViUGFnZSA6IFdlYlBhZ2VCYXNlIHsK
KyAgICBMb2FkVVJMKFN0cmluZyB1cmwpCisjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKKyAgICBU
ZXN0QXN5bmNNZXNzYWdlKGVudW06Ym9vbCBXZWJLaXQ6OlRlc3RUd29TdGF0ZUVudW0gdHdvU3Rh
dGVFbnVtKSAtPiAodWludDY0X3QgcmVzdWx0KSBBc3luYworICAgIFRlc3RBc3luY01lc3NhZ2VX
aXRoTm9Bcmd1bWVudHMoKSAtPiAoKSBBc3luYworICAgIFRlc3RBc3luY01lc3NhZ2VXaXRoTXVs
dGlwbGVBcmd1bWVudHMoKSAtPiAoYm9vbCBmbGFnLCB1aW50NjRfdCB2YWx1ZSkgQXN5bmMKKyNl
bmRpZgorICAgIFRlc3RTeW5jTWVzc2FnZSh1aW50MzJfdCBwYXJhbSkgLT4gKHVpbnQ4X3QgcmVw
bHkpIFN5bmNocm9ub3VzCisgICAgVGVzdFN5bmNocm9ub3VzTWVzc2FnZShib29sIHZhbHVlKSAt
PiAoT3B0aW9uYWw8V2ViS2l0OjpUZXN0Q2xhc3NOYW1lPiBvcHRpb25hbFJlcGx5KSBTeW5jaHJv
bm91cworfQpJbmRleDogU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0Lm1lc3NhZ2Vz
LmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0F1eGlsaWFyeVByb2Nl
c3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0F1eGlsaWFyeVByb2Nl
c3MuY3BwCShyZXZpc2lvbiAyNjA3NjQpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXhpbGlh
cnlQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA3LDIyICsxMDcsMjIgQEAgdm9pZCBB
dXhpbGlhcnlQcm9jZXNzOjppbml0aWFsaXplQ29ubmVjdAogewogfQogCi12b2lkIEF1eGlsaWFy
eVByb2Nlc3M6OmFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdl
UmVjZWl2ZXJOYW1lLCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYgbWVzc2FnZVJlY2VpdmVyKQordm9p
ZCBBdXhpbGlhcnlQcm9jZXNzOjphZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpSZWNlaXZlck5hbWUg
bWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImIG1lc3NhZ2VSZWNlaXZl
cikKIHsKICAgICBtX21lc3NhZ2VSZWNlaXZlck1hcC5hZGRNZXNzYWdlUmVjZWl2ZXIobWVzc2Fn
ZVJlY2VpdmVyTmFtZSwgbWVzc2FnZVJlY2VpdmVyKTsKIH0KIAotdm9pZCBBdXhpbGlhcnlQcm9j
ZXNzOjphZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2Vp
dmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImIG1l
c3NhZ2VSZWNlaXZlcikKK3ZvaWQgQXV4aWxpYXJ5UHJvY2Vzczo6YWRkTWVzc2FnZVJlY2VpdmVy
KElQQzo6UmVjZWl2ZXJOYW1lIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0
aW9uSUQsIElQQzo6TWVzc2FnZVJlY2VpdmVyJiBtZXNzYWdlUmVjZWl2ZXIpCiB7CiAgICAgbV9t
ZXNzYWdlUmVjZWl2ZXJNYXAuYWRkTWVzc2FnZVJlY2VpdmVyKG1lc3NhZ2VSZWNlaXZlck5hbWUs
IGRlc3RpbmF0aW9uSUQsIG1lc3NhZ2VSZWNlaXZlcik7CiB9CiAKLXZvaWQgQXV4aWxpYXJ5UHJv
Y2Vzczo6cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VS
ZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpCit2b2lkIEF1eGlsaWFyeVByb2Nl
c3M6OnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlJlY2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2
ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKQogewogICAgIG1fbWVzc2FnZVJlY2VpdmVy
TWFwLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlv
bklEKTsKIH0KIAotdm9pZCBBdXhpbGlhcnlQcm9jZXNzOjpyZW1vdmVNZXNzYWdlUmVjZWl2ZXIo
SVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSkKK3ZvaWQgQXV4aWxpYXJ5
UHJvY2Vzczo6cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6UmVjZWl2ZXJOYW1lIG1lc3NhZ2VS
ZWNlaXZlck5hbWUpCiB7CiAgICAgbV9tZXNzYWdlUmVjZWl2ZXJNYXAucmVtb3ZlTWVzc2FnZVJl
Y2VpdmVyKG1lc3NhZ2VSZWNlaXZlck5hbWUpOwogfQpAQCAtMjM2LDkgKzIzNiw5IEBAIHZvaWQg
QXV4aWxpYXJ5UHJvY2Vzczo6aW5pdGlhbGl6ZVNhbmRib3gKIHsKIH0KIAotdm9pZCBBdXhpbGlh
cnlQcm9jZXNzOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBD
OjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpTdHJpbmdSZWZlcmVu
Y2UgbWVzc2FnZU5hbWUpCit2b2lkIEF1eGlsaWFyeVByb2Nlc3M6OmRpZFJlY2VpdmVJbnZhbGlk
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lKQog
ewotICAgIFdURkxvZ0Fsd2F5cygiUmVjZWl2ZWQgaW52YWxpZCBtZXNzYWdlOiAnJXM6OiVzJyIs
IG1lc3NhZ2VSZWNlaXZlck5hbWUudG9TdHJpbmcoKS5kYXRhKCksIG1lc3NhZ2VOYW1lLnRvU3Ry
aW5nKCkuZGF0YSgpKTsKKyAgICBXVEZMb2dBbHdheXMoIlJlY2VpdmVkIGludmFsaWQgbWVzc2Fn
ZTogJyVzJyIsIGRlc2NyaXB0aW9uKG1lc3NhZ2VOYW1lKSk7CiAgICAgQ1JBU0goKTsKIH0KIApJ
bmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvQXV4aWxpYXJ5UHJvY2Vzcy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0F1eGlsaWFyeVByb2Nlc3MuaAkocmV2aXNpb24gMjYw
NzY0KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvQXV4aWxpYXJ5UHJvY2Vzcy5oCSh3b3JraW5n
IGNvcHkpCkBAIC02MCwyMCArNjAsMjAgQEAgcHVibGljOgogICAgIHZvaWQgZGlzYWJsZVRlcm1p
bmF0aW9uKCk7CiAgICAgdm9pZCBlbmFibGVUZXJtaW5hdGlvbigpOwogCi0gICAgdm9pZCBhZGRN
ZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwg
SVBDOjpNZXNzYWdlUmVjZWl2ZXImKTsKLSAgICB2b2lkIGFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6
OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlv
bklELCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYpOwotICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2Vp
dmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRl
c3RpbmF0aW9uSUQpOwotICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5n
UmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUpOworICAgIHZvaWQgYWRkTWVzc2FnZVJlY2Vp
dmVyKElQQzo6UmVjZWl2ZXJOYW1lLCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYpOworICAgIHZvaWQg
YWRkTWVzc2FnZVJlY2VpdmVyKElQQzo6UmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlv
bklELCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYpOworICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2Vp
dmVyKElQQzo6UmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKTsKKyAgICB2b2lk
IHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlJlY2VpdmVyTmFtZSk7CiAgICAgdm9pZCByZW1v
dmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpNZXNzYWdlUmVjZWl2ZXImKTsKICAgICAKICAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4KLSAgICB2b2lkIGFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmlu
Z1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBPYmplY3RJZGVudGlmaWVyPFQ+IGRlc3Rp
bmF0aW9uSUQsIElQQzo6TWVzc2FnZVJlY2VpdmVyJiByZWNlaXZlcikKKyAgICB2b2lkIGFkZE1l
c3NhZ2VSZWNlaXZlcihJUEM6OlJlY2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBPYmpl
Y3RJZGVudGlmaWVyPFQ+IGRlc3RpbmF0aW9uSUQsIElQQzo6TWVzc2FnZVJlY2VpdmVyJiByZWNl
aXZlcikKICAgICB7CiAgICAgICAgIGFkZE1lc3NhZ2VSZWNlaXZlcihtZXNzYWdlUmVjZWl2ZXJO
YW1lLCBkZXN0aW5hdGlvbklELnRvVUludDY0KCksIHJlY2VpdmVyKTsKICAgICB9CiAgICAgCiAg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAgdm9pZCByZW1vdmVNZXNzYWdlUmVjZWl2ZXIo
SVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgT2JqZWN0SWRlbnRpZmll
cjxUPiBkZXN0aW5hdGlvbklEKQorICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6
UmVjZWl2ZXJOYW1lIG1lc3NhZ2VSZWNlaXZlck5hbWUsIE9iamVjdElkZW50aWZpZXI8VD4gZGVz
dGluYXRpb25JRCkKICAgICB7CiAgICAgICAgIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihtZXNzYWdl
UmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklELnRvVUludDY0KCkpOwogICAgIH0KQEAgLTEzOCw3
ICsxMzgsNyBAQCBwcml2YXRlOgogICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlv
bklEKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICAvLyBJUEM6OkNvbm5lY3Rpb246OkNsaWVudC4K
LSAgICB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6
OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6OlN0cmluZ1JlZmVyZW5j
ZSBtZXNzYWdlTmFtZSkgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlTmFtZSkgZmluYWw7CiAgICAgdm9pZCBkaWRD
bG9zZShJUEM6OkNvbm5lY3Rpb24mKSBvdmVycmlkZTsKIAogICAgIHZvaWQgc2h1dERvd24oKTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRv
clByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHkuaAkocmV2aXNpb24gMjYwNzY0KQorKysgU291cmNlL1dl
YktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaAkod29ya2lu
ZyBjb3B5KQpAQCAtODYsOCArODYsNiBAQCBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgY29uc3Qg
U3RyaW5nJiBwYXltZW50Q29vcmRpbmF0b3JCb3VuZEludGVyZmFjZUlkZW50aWZpZXIoY29uc3Qg
V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgY29uc3Qg
U3RyaW5nJiBwYXltZW50Q29vcmRpbmF0b3JTb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZp
ZXIoY29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmKSA9IDA7CiAgICAgICAgIHZpcnR1
YWwgY29uc3QgU3RyaW5nJiBwYXltZW50Q29vcmRpbmF0b3JTb3VyY2VBcHBsaWNhdGlvblNlY29u
ZGFyeUlkZW50aWZpZXIoY29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmKSA9IDA7Ci0g
ICAgICAgIHZpcnR1YWwgdm9pZCBwYXltZW50Q29vcmRpbmF0b3JBZGRNZXNzYWdlUmVjZWl2ZXIo
V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmLCBjb25zdCBJUEM6OlN0cmluZ1JlZmVyZW5jZSYs
IElQQzo6TWVzc2FnZVJlY2VpdmVyJikgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgcGF5bWVu
dENvb3JkaW5hdG9yUmVtb3ZlTWVzc2FnZVJlY2VpdmVyKFdlYlBheW1lbnRDb29yZGluYXRvclBy
b3h5JiwgY29uc3QgSVBDOjpTdHJpbmdSZWZlcmVuY2UmKSA9IDA7CiAjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICAgICAgICAgdmlydHVhbCBVSVZpZXdDb250cm9sbGVyICpwYXltZW50Q29vcmRp
bmF0b3JQcmVzZW50aW5nVmlld0NvbnRyb2xsZXIoY29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHkmKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nJiBwYXltZW50Q29vcmRp
bmF0b3JDVERhdGFDb25uZWN0aW9uU2VydmljZVR5cGUoY29uc3QgV2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHkmKSA9IDA7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9jb2Nv
YS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5
Q29jb2EubW0JKHJldmlzaW9uIDI2MDc2NCkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxl
UGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTc5LDE1ICs3OSwxMiBAQCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6V2ViUGF5
bWVudENvCiAgICAgOiBtX2NsaWVudChjbGllbnQpCiAgICAgLCBtX2Nhbk1ha2VQYXltZW50c1F1
ZXVlKFdvcmtRdWV1ZTo6Y3JlYXRlKCJjb20uYXBwbGUuV2ViS2l0LkNhbk1ha2VQYXltZW50cyIp
KQogewotICAgIG1fY2xpZW50LnBheW1lbnRDb29yZGluYXRvckFkZE1lc3NhZ2VSZWNlaXZlcigq
dGhpcywgTWVzc2FnZXM6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjptZXNzYWdlUmVjZWl2
ZXJOYW1lKCksICp0aGlzKTsKIH0KIAogV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6On5XZWJQ
YXltZW50Q29vcmRpbmF0b3JQcm94eSgpCiB7CiAgICAgaWYgKG1fc3RhdGUgIT0gU3RhdGU6Oklk
bGUpCiAgICAgICAgIGhpZGVQYXltZW50VUkoKTsKLQotICAgIG1fY2xpZW50LnBheW1lbnRDb29y
ZGluYXRvclJlbW92ZU1lc3NhZ2VSZWNlaXZlcigqdGhpcywgTWVzc2FnZXM6OldlYlBheW1lbnRD
b29yZGluYXRvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpOwogfQogCiB2b2lkIFdlYlBh
eW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybUNhbk1ha2VQYXltZW50c1dpdGhBY3RpdmVD
YXJkKGNvbnN0IFN0cmluZyYgbWVyY2hhbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGRvbWFp
bk5hbWUsIFdURjo6RnVuY3Rpb248dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0F1eGlsaWFyeVByb2Nlc3NDb2NvYS5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9BdXhpbGlhcnlQcm9jZXNz
Q29jb2EubW0JKHJldmlzaW9uIDI2MDc2NCkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29h
L0F1eGlsaWFyeVByb2Nlc3NDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMzIsOSArMzIsOSBA
QAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotdm9pZCBBdXhpbGlhcnlQcm9jZXNzOjpkaWRSZWNl
aXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpTdHJpbmdSZWZlcmVuY2Ug
bWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUpCit2
b2lkIEF1eGlsaWFyeVByb2Nlc3M6OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mLCBJUEM6Ok1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lKQogewotICAgIHNldENyYXNoUmVw
b3J0QXBwbGljYXRpb25TcGVjaWZpY0luZm9ybWF0aW9uKChfX2JyaWRnZSBDRlN0cmluZ1JlZilb
TlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIlJlY2VpdmVkIGludmFsaWQgbWVzc2FnZTogJyVz
OjolcyciLCBtZXNzYWdlUmVjZWl2ZXJOYW1lLnRvU3RyaW5nKCkuZGF0YSgpLCBtZXNzYWdlTmFt
ZS50b1N0cmluZygpLmRhdGEoKV0pOworICAgIHNldENyYXNoUmVwb3J0QXBwbGljYXRpb25TcGVj
aWZpY0luZm9ybWF0aW9uKChfX2JyaWRnZSBDRlN0cmluZ1JlZilbTlNTdHJpbmcgc3RyaW5nV2l0
aEZvcm1hdDpAIlJlY2VpdmVkIGludmFsaWQgbWVzc2FnZTogJyVzJyIsIGRlc2NyaXB0aW9uKG1l
c3NhZ2VOYW1lKV0pOwogICAgIENSQVNIKCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmNwcAkocmV2aXNpb24gMjYwNzkw
KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTc4LDIyICsxNzgsMjIgQEAgYm9vbCBBdXhpbGlhcnlQcm9jZXNz
UHJveHk6OnNlbmRNZXNzYWdlKAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBBdXhpbGlh
cnlQcm9jZXNzUHJveHk6OmFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBt
ZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYgbWVzc2FnZVJlY2VpdmVy
KQordm9pZCBBdXhpbGlhcnlQcm9jZXNzUHJveHk6OmFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlJl
Y2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYgbWVz
c2FnZVJlY2VpdmVyKQogewogICAgIG1fbWVzc2FnZVJlY2VpdmVyTWFwLmFkZE1lc3NhZ2VSZWNl
aXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1lLCBtZXNzYWdlUmVjZWl2ZXIpOwogfQogCi12b2lkIEF1
eGlsaWFyeVByb2Nlc3NQcm94eTo6YWRkTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJl
bmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIElQQzo6TWVz
c2FnZVJlY2VpdmVyJiBtZXNzYWdlUmVjZWl2ZXIpCit2b2lkIEF1eGlsaWFyeVByb2Nlc3NQcm94
eTo6YWRkTWVzc2FnZVJlY2VpdmVyKElQQzo6UmVjZWl2ZXJOYW1lIG1lc3NhZ2VSZWNlaXZlck5h
bWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIElQQzo6TWVzc2FnZVJlY2VpdmVyJiBtZXNzYWdl
UmVjZWl2ZXIpCiB7CiAgICAgbV9tZXNzYWdlUmVjZWl2ZXJNYXAuYWRkTWVzc2FnZVJlY2VpdmVy
KG1lc3NhZ2VSZWNlaXZlck5hbWUsIGRlc3RpbmF0aW9uSUQsIG1lc3NhZ2VSZWNlaXZlcik7CiB9
CiAKLXZvaWQgQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjpyZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBD
OjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRp
b25JRCkKK3ZvaWQgQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjpyZW1vdmVNZXNzYWdlUmVjZWl2ZXIo
SVBDOjpSZWNlaXZlck5hbWUgbWVzc2FnZVJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRp
b25JRCkKIHsKICAgICBtX21lc3NhZ2VSZWNlaXZlck1hcC5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIo
bWVzc2FnZVJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRCk7CiB9CiAKLXZvaWQgQXV4aWxpYXJ5
UHJvY2Vzc1Byb3h5OjpyZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2Ug
bWVzc2FnZVJlY2VpdmVyTmFtZSkKK3ZvaWQgQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjpyZW1vdmVN
ZXNzYWdlUmVjZWl2ZXIoSVBDOjpSZWNlaXZlck5hbWUgbWVzc2FnZVJlY2VpdmVyTmFtZSkKIHsK
ICAgICBtX21lc3NhZ2VSZWNlaXZlck1hcC5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJl
Y2VpdmVyTmFtZSk7CiB9CkBAIC0yNzgsOSArMjc4LDkgQEAgdm9pZCBBdXhpbGlhcnlQcm9jZXNz
UHJveHk6OmNvbm5lY3Rpb25XaQogewogfQogCi12b2lkIEF1eGlsaWFyeVByb2Nlc3NQcm94eTo6
bG9nSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OlN0cmlu
Z1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNz
YWdlTmFtZSkKK3ZvaWQgQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5Ojpsb2dJbnZhbGlkTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6TWVzc2FnZU5hbWUgbWVzc2FnZU5hbWUp
CiB7Ci0gICAgUkVMRUFTRV9MT0dfRkFVTFQoSVBDLCAiUmVjZWl2ZWQgYW4gaW52YWxpZCBtZXNz
YWdlICclIiBQVUJMSUNfTE9HX1NUUklORyAiOjolIiBQVUJMSUNfTE9HX1NUUklORyAiJyBmcm9t
IHRoZSAlIiBQVUJMSUNfTE9HX1NUUklORyAiIHByb2Nlc3MuIiwgbWVzc2FnZVJlY2VpdmVyTmFt
ZS50b1N0cmluZygpLmRhdGEoKSwgbWVzc2FnZU5hbWUudG9TdHJpbmcoKS5kYXRhKCksIHByb2Nl
c3NOYW1lKCkuY2hhcmFjdGVycygpKTsKKyAgICBSRUxFQVNFX0xPR19GQVVMVChJUEMsICJSZWNl
aXZlZCBhbiBpbnZhbGlkIG1lc3NhZ2UgJyUiIFBVQkxJQ19MT0dfU1RSSU5HICInIGZyb20gdGhl
ICUiIFBVQkxJQ19MT0dfU1RSSU5HICIgcHJvY2Vzcy4iLCBkZXNjcmlwdGlvbihtZXNzYWdlTmFt
ZSksIHByb2Nlc3NOYW1lKCkuY2hhcmFjdGVycygpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHku
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNz
UHJveHkuaAkocmV2aXNpb24gMjYwNzY0KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV4
aWxpYXJ5UHJvY2Vzc1Byb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTc1LDE5ICs3NSwxOSBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiBtX2Nvbm5lY3Rpb24gPT0gJmNvbm5lY3Rpb247CiAgICAg
fQogCi0gICAgdm9pZCBhZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVz
c2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImKTsKLSAgICB2b2lkIGFkZE1l
c3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCB1
aW50NjRfdCBkZXN0aW5hdGlvbklELCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYpOwotICAgIHZvaWQg
cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZl
ck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpOwotICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJl
Y2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUpOworICAgIHZv
aWQgYWRkTWVzc2FnZVJlY2VpdmVyKElQQzo6UmVjZWl2ZXJOYW1lLCBJUEM6Ok1lc3NhZ2VSZWNl
aXZlciYpOworICAgIHZvaWQgYWRkTWVzc2FnZVJlY2VpdmVyKElQQzo6UmVjZWl2ZXJOYW1lLCB1
aW50NjRfdCBkZXN0aW5hdGlvbklELCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYpOworICAgIHZvaWQg
cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6UmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5h
dGlvbklEKTsKKyAgICB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlJlY2VpdmVyTmFt
ZSk7CiAgICAgCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAgdm9pZCBhZGRNZXNzYWdl
UmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgT2JqZWN0
SWRlbnRpZmllcjxUPiBkZXN0aW5hdGlvbklELCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYgcmVjZWl2
ZXIpCisgICAgdm9pZCBhZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpSZWNlaXZlck5hbWUgbWVzc2Fn
ZVJlY2VpdmVyTmFtZSwgT2JqZWN0SWRlbnRpZmllcjxUPiBkZXN0aW5hdGlvbklELCBJUEM6Ok1l
c3NhZ2VSZWNlaXZlciYgcmVjZWl2ZXIpCiAgICAgewogICAgICAgICBhZGRNZXNzYWdlUmVjZWl2
ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRC50b1VJbnQ2NCgpLCByZWNlaXZl
cik7CiAgICAgfQogICAgIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgIHZvaWQgcmVt
b3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5h
bWUsIE9iamVjdElkZW50aWZpZXI8VD4gZGVzdGluYXRpb25JRCkKKyAgICB2b2lkIHJlbW92ZU1l
c3NhZ2VSZWNlaXZlcihJUEM6OlJlY2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBPYmpl
Y3RJZGVudGlmaWVyPFQ+IGRlc3RpbmF0aW9uSUQpCiAgICAgewogICAgICAgICByZW1vdmVNZXNz
YWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRC50b1VJbnQ2NCgp
KTsKICAgICB9CkBAIC0xMTksNyArMTE5LDcgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgZGlzcGF0
Y2hNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwogICAgIGJvb2wgZGlz
cGF0Y2hTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVu
aXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpOwogCi0gICAgdm9pZCBsb2dJbnZhbGlkTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1l
LCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZSk7CisgICAgdm9pZCBsb2dJbnZhbGlk
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VOYW1lKTsKICAgICB2aXJ0dWFs
IEFTQ0lJTGl0ZXJhbCBwcm9jZXNzTmFtZSgpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwgdm9p
ZCBnZXRMYXVuY2hPcHRpb25zKFByb2Nlc3NMYXVuY2hlcjo6TGF1bmNoT3B0aW9ucyYpOwpAQCAt
MTUwLDcgKzE1MCw3IEBAIGJvb2wgQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjpzZW5kKFQmJiBtZXMK
IHsKICAgICBDT01QSUxFX0FTU0VSVCghVDo6aXNTeW5jLCBBc3luY01lc3NhZ2VFeHBlY3RlZCk7
CiAKLSAgICBhdXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlPElQQzo6RW5jb2Rlcj4oVDo6cmVjZWl2
ZXJOYW1lKCksIFQ6Om5hbWUoKSwgZGVzdGluYXRpb25JRCk7CisgICAgYXV0byBlbmNvZGVyID0g
bWFrZVVuaXF1ZTxJUEM6OkVuY29kZXI+KFQ6Om5hbWUoKSwgZGVzdGluYXRpb25JRCk7CiAgICAg
ZW5jb2Rlci0+ZW5jb2RlKG1lc3NhZ2UuYXJndW1lbnRzKCkpOwogCiAgICAgcmV0dXJuIHNlbmRN
ZXNzYWdlKFdURk1vdmUoZW5jb2RlciksIHNlbmRPcHRpb25zKTsKQEAgLTE3NCw3ICsxNzQsNyBA
QCB2b2lkIEF1eGlsaWFyeVByb2Nlc3NQcm94eTo6c2VuZFdpdGhBc3luCiB7CiAgICAgQ09NUElM
RV9BU1NFUlQoIVQ6OmlzU3luYywgQXN5bmNNZXNzYWdlRXhwZWN0ZWQpOwogCi0gICAgYXV0byBl
bmNvZGVyID0gbWFrZVVuaXF1ZTxJUEM6OkVuY29kZXI+KFQ6OnJlY2VpdmVyTmFtZSgpLCBUOjpu
YW1lKCksIGRlc3RpbmF0aW9uSUQpOworICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWU8SVBD
OjpFbmNvZGVyPihUOjpuYW1lKCksIGRlc3RpbmF0aW9uSUQpOwogICAgIHVpbnQ2NF90IGxpc3Rl
bmVySUQgPSBJUEM6Om5leHRBc3luY1JlcGx5SGFuZGxlcklEKCk7CiAgICAgZW5jb2Rlci0+ZW5j
b2RlKGxpc3RlbmVySUQpOwogICAgIGVuY29kZXItPmVuY29kZShtZXNzYWdlLmFyZ3VtZW50cygp
KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQ
cm94eS5jcHAJKHJldmlzaW9uIDI2MDc2NCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1By
b3Zpc2lvbmFsUGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTE5LDcgKzUxOSw3IEBA
IHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRpZFJlY2VpdmVNZXMKICAgICB9CiAjZW5kaWYK
IAotICAgIExPRyhQcm9jZXNzU3dhcHBpbmcsICJVbmhhbmRsZWQgbWVzc2FnZSAlczo6JXMgZnJv
bSBwcm92aXNpb25hbCBwcm9jZXNzIiwgZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkudG9T
dHJpbmcoKS5kYXRhKCksIGRlY29kZXIubWVzc2FnZU5hbWUoKS50b1N0cmluZygpLmRhdGEoKSk7
CisgICAgTE9HKFByb2Nlc3NTd2FwcGluZywgIlVuaGFuZGxlZCBtZXNzYWdlICVzIGZyb20gcHJv
dmlzaW9uYWwgcHJvY2VzcyIsIGRlc2NyaXB0aW9uKGRlY29kZXIubWVzc2FnZU5hbWUoKSkpOwog
fQogCiB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIHN0ZDo6dW5p
cXVlX3B0cjxJUEM6OkVuY29kZXI+JiByZXBseUVuY29kZXIpCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDI2MDc2NCkK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTYxLDMzICs2MSwzMiBAQCBSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiBTdXNw
ZW5kZWRQYWdlUHJvCiB9CiAKICNpZiAhTE9HX0RJU0FCTEVECi1zdGF0aWMgY29uc3QgSGFzaFNl
dDxJUEM6OlN0cmluZ1JlZmVyZW5jZT4mIG1lc3NhZ2VOYW1lc1RvSWdub3JlV2hpbGVTdXNwZW5k
ZWQoKQorc3RhdGljIGNvbnN0IEhhc2hTZXQ8dWludDE2X3Q+JiBtZXNzYWdlTmFtZXNUb0lnbm9y
ZVdoaWxlU3VzcGVuZGVkKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxJ
UEM6OlN0cmluZ1JlZmVyZW5jZT4+IG1lc3NhZ2VOYW1lczsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8SGFzaFNldDx1aW50MTZfdD4+IG1lc3NhZ2VOYW1lczsKICAgICBzdGF0aWMgc3RkOjpv
bmNlX2ZsYWcgb25jZUZsYWc7CiAgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKLSAg
ICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZCgiQmFja0ZvcndhcmRBZGRJdGVtIik7Ci0gICAg
ICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoIkNsZWFyQWxsRWRpdENvbW1hbmRzIik7Ci0gICAg
ICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoIkRpZENoYW5nZUNvbnRlbnRTaXplIik7Ci0gICAg
ICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoIkRpZENoYW5nZU1haW5Eb2N1bWVudCIpOwotICAg
ICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJEaWRDaGFuZ2VQcm9ncmVzcyIpOwotICAgICAg
ICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJEaWRDb21taXRMb2FkRm9yRnJhbWUiKTsKLSAgICAg
ICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZCgiRGlkRGVzdHJveU5hdmlnYXRpb24iKTsKLSAgICAg
ICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZCgiRGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUi
KTsKLSAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZCgiRGlkRmluaXNoUHJvZ3Jlc3MiKTsK
LSAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZCgiRGlkQ29tcGxldGVQYWdlVHJhbnNpdGlv
biIpOwotICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJEaWRGaXJzdExheW91dEZvckZy
YW1lIik7Ci0gICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoIkRpZEZpcnN0VmlzdWFsbHlO
b25FbXB0eUxheW91dEZvckZyYW1lIik7Ci0gICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQo
IkRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhIik7Ci0gICAgICAgIG1lc3NhZ2VOYW1lcy5n
ZXQoKS5hZGQoIkRpZFJlYWNoTGF5b3V0TWlsZXN0b25lIik7Ci0gICAgICAgIG1lc3NhZ2VOYW1l
cy5nZXQoKS5hZGQoIkRpZFJlc3RvcmVTY3JvbGxQb3NpdGlvbiIpOwotICAgICAgICBtZXNzYWdl
TmFtZXMuZ2V0KCkuYWRkKCJEaWRTdGFydFByb2dyZXNzIik7Ci0gICAgICAgIG1lc3NhZ2VOYW1l
cy5nZXQoKS5hZGQoIkRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUiKTsKLSAgICAgICAg
bWVzc2FnZU5hbWVzLmdldCgpLmFkZCgiRWRpdG9yU3RhdGVDaGFuZ2VkIik7Ci0gICAgICAgIG1l
c3NhZ2VOYW1lcy5nZXQoKS5hZGQoIlBhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvckRpZENoYW5n
ZSIpOwotICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJTZXRSZW5kZXJUcmVlU2l6ZSIp
OwotICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJTZXRTdGF0dXNUZXh0Iik7Ci0gICAg
ICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoIlNldE5ldHdvcmtSZXF1ZXN0c0luUHJvZ3Jlc3Mi
KTsKKyAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZChzdGF0aWNfY2FzdDx1aW50MTZfdD4o
SVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZVByb3h5X0JhY2tGb3J3YXJkQWRkSXRlbSkpOworICAg
ICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKHN0YXRpY19jYXN0PHVpbnQxNl90PihJUEM6Ok1l
c3NhZ2VOYW1lOjpXZWJQYWdlUHJveHlfQ2xlYXJBbGxFZGl0Q29tbWFuZHMpKTsKKyAgICAgICAg
bWVzc2FnZU5hbWVzLmdldCgpLmFkZChzdGF0aWNfY2FzdDx1aW50MTZfdD4oSVBDOjpNZXNzYWdl
TmFtZTo6V2ViUGFnZVByb3h5X0RpZENoYW5nZUNvbnRlbnRTaXplKSk7CisgICAgICAgIG1lc3Nh
Z2VOYW1lcy5nZXQoKS5hZGQoc3RhdGljX2Nhc3Q8dWludDE2X3Q+KElQQzo6TWVzc2FnZU5hbWU6
OldlYlBhZ2VQcm94eV9EaWRDaGFuZ2VNYWluRG9jdW1lbnQpKTsKKyAgICAgICAgbWVzc2FnZU5h
bWVzLmdldCgpLmFkZChzdGF0aWNfY2FzdDx1aW50MTZfdD4oSVBDOjpNZXNzYWdlTmFtZTo6V2Vi
UGFnZVByb3h5X0RpZENoYW5nZVByb2dyZXNzKSk7CisgICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQo
KS5hZGQoc3RhdGljX2Nhc3Q8dWludDE2X3Q+KElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VQcm94
eV9EaWRDb21taXRMb2FkRm9yRnJhbWUpKTsKKyAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFk
ZChzdGF0aWNfY2FzdDx1aW50MTZfdD4oSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZVByb3h5X0Rp
ZERlc3Ryb3lOYXZpZ2F0aW9uKSk7CisgICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoc3Rh
dGljX2Nhc3Q8dWludDE2X3Q+KElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VQcm94eV9EaWRGaW5p
c2hEb2N1bWVudExvYWRGb3JGcmFtZSkpOworICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRk
KHN0YXRpY19jYXN0PHVpbnQxNl90PihJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlUHJveHlfRGlk
RmluaXNoUHJvZ3Jlc3MpKTsKKyAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZChzdGF0aWNf
Y2FzdDx1aW50MTZfdD4oSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZVByb3h5X0RpZEZpcnN0TGF5
b3V0Rm9yRnJhbWUpKTsKKyAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZChzdGF0aWNfY2Fz
dDx1aW50MTZfdD4oSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZVByb3h5X0RpZEZpcnN0VmlzdWFs
bHlOb25FbXB0eUxheW91dEZvckZyYW1lKSk7CisgICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5h
ZGQoc3RhdGljX2Nhc3Q8dWludDE2X3Q+KElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VQcm94eV9E
aWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YSkpOworICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0
KCkuYWRkKHN0YXRpY19jYXN0PHVpbnQxNl90PihJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlUHJv
eHlfRGlkUmVhY2hMYXlvdXRNaWxlc3RvbmUpKTsKKyAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgp
LmFkZChzdGF0aWNfY2FzdDx1aW50MTZfdD4oSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZVByb3h5
X0RpZFJlc3RvcmVTY3JvbGxQb3NpdGlvbikpOworICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCku
YWRkKHN0YXRpY19jYXN0PHVpbnQxNl90PihJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlUHJveHlf
RGlkU3RhcnRQcm9ncmVzcykpOworICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKHN0YXRp
Y19jYXN0PHVpbnQxNl90PihJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlUHJveHlfRGlkU3RhcnRQ
cm92aXNpb25hbExvYWRGb3JGcmFtZSkpOworICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRk
KHN0YXRpY19jYXN0PHVpbnQxNl90PihJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlUHJveHlfRWRp
dG9yU3RhdGVDaGFuZ2VkKSk7CisgICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoc3RhdGlj
X2Nhc3Q8dWludDE2X3Q+KElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VQcm94eV9QYWdlRXh0ZW5k
ZWRCYWNrZ3JvdW5kQ29sb3JEaWRDaGFuZ2UpKTsKKyAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgp
LmFkZChzdGF0aWNfY2FzdDx1aW50MTZfdD4oSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZVByb3h5
X1NldFJlbmRlclRyZWVTaXplKSk7CisgICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoc3Rh
dGljX2Nhc3Q8dWludDE2X3Q+KElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VQcm94eV9TZXRTdGF0
dXNUZXh0KSk7CisgICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoc3RhdGljX2Nhc3Q8dWlu
dDE2X3Q+KElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VQcm94eV9TZXROZXR3b3JrUmVxdWVzdHNJ
blByb2dyZXNzKSk7CiAgICAgfSk7CiAKICAgICByZXR1cm4gbWVzc2FnZU5hbWVzOwpAQCAtMjU0
LDggKzI1Myw4IEBAIHZvaWQgU3VzcGVuZGVkUGFnZVByb3h5OjpkaWRSZWNlaXZlTWVzc2EKICAg
ICB9CiAKICNpZiAhTE9HX0RJU0FCTEVECi0gICAgaWYgKCFtZXNzYWdlTmFtZXNUb0lnbm9yZVdo
aWxlU3VzcGVuZGVkKCkuY29udGFpbnMoZGVjb2Rlci5tZXNzYWdlTmFtZSgpKSkKLSAgICAgICAg
TE9HKFByb2Nlc3NTd2FwcGluZywgIlN1c3BlbmRlZFBhZ2VQcm94eSByZWNlaXZlZCB1bmV4cGVj
dGVkIFdlYlBhZ2VQcm94eSBtZXNzYWdlICclcyciLCBkZWNvZGVyLm1lc3NhZ2VOYW1lKCkudG9T
dHJpbmcoKS5kYXRhKCkpOworICAgIGlmICghbWVzc2FnZU5hbWVzVG9JZ25vcmVXaGlsZVN1c3Bl
bmRlZCgpLmNvbnRhaW5zKHN0YXRpY19jYXN0PHVpbnQxNl90PihkZWNvZGVyLm1lc3NhZ2VOYW1l
KCkpKSkKKyAgICAgICAgTE9HKFByb2Nlc3NTd2FwcGluZywgIlN1c3BlbmRlZFBhZ2VQcm94eSBy
ZWNlaXZlZCB1bmV4cGVjdGVkIFdlYlBhZ2VQcm94eSBtZXNzYWdlICclcyciLCBkZXNjcmlwdGlv
bihkZWNvZGVyLm1lc3NhZ2VOYW1lKCkpKTsKICNlbmRpZgogfQogCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24gMjYwNzY0KQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTIyNzcsOCAr
MjI3Nyw2IEBAIHByaXZhdGU6CiAgICAgY29uc3QgU3RyaW5nJiBwYXltZW50Q29vcmRpbmF0b3JC
b3VuZEludGVyZmFjZUlkZW50aWZpZXIoY29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkm
KSBmaW5hbDsKICAgICBjb25zdCBTdHJpbmcmIHBheW1lbnRDb29yZGluYXRvclNvdXJjZUFwcGxp
Y2F0aW9uQnVuZGxlSWRlbnRpZmllcihjb25zdCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYp
IGZpbmFsOwogICAgIGNvbnN0IFN0cmluZyYgcGF5bWVudENvb3JkaW5hdG9yU291cmNlQXBwbGlj
YXRpb25TZWNvbmRhcnlJZGVudGlmaWVyKGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5
JikgZmluYWw7Ci0gICAgdm9pZCBwYXltZW50Q29vcmRpbmF0b3JBZGRNZXNzYWdlUmVjZWl2ZXIo
V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmLCBjb25zdCBJUEM6OlN0cmluZ1JlZmVyZW5jZSYs
IElQQzo6TWVzc2FnZVJlY2VpdmVyJikgZmluYWw7Ci0gICAgdm9pZCBwYXltZW50Q29vcmRpbmF0
b3JSZW1vdmVNZXNzYWdlUmVjZWl2ZXIoV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmLCBjb25z
dCBJUEM6OlN0cmluZ1JlZmVyZW5jZSYpIGZpbmFsOwogI2VuZGlmCiAjaWYgRU5BQkxFKEFQUExF
X1BBWSkgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBVSVZpZXdDb250cm9sbGVyICpwYXlt
ZW50Q29vcmRpbmF0b3JQcmVzZW50aW5nVmlld0NvbnRyb2xsZXIoY29uc3QgV2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHkmKSBmaW5hbDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5jcHAJKHJldmlzaW9uIDI2MDc2NCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODUyLDE3ICs4NTIs
MTIgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0SW52YWxpZE1lc3NhZ2VDYQogICAgIHNfaW52
YWxpZE1lc3NhZ2VDYWxsYmFjayA9IGludmFsaWRNZXNzYWdlQ2FsbGJhY2s7CiB9CiAKLXZvaWQg
V2ViUHJvY2Vzc1Bvb2w6OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShjb25zdCBJUEM6OlN0cmlu
Z1JlZmVyZW5jZSYgbWVzc2FnZVJlY2VpdmVyTmFtZSwgY29uc3QgSVBDOjpTdHJpbmdSZWZlcmVu
Y2UmIG1lc3NhZ2VOYW1lKQordm9pZCBXZWJQcm9jZXNzUG9vbDo6ZGlkUmVjZWl2ZUludmFsaWRN
ZXNzYWdlKElQQzo6TWVzc2FnZU5hbWUgbWVzc2FnZU5hbWUpCiB7CiAgICAgaWYgKCFzX2ludmFs
aWRNZXNzYWdlQ2FsbGJhY2spCiAgICAgICAgIHJldHVybjsKIAotICAgIFN0cmluZ0J1aWxkZXIg
bWVzc2FnZU5hbWVTdHJpbmdCdWlsZGVyOwotICAgIG1lc3NhZ2VOYW1lU3RyaW5nQnVpbGRlci5h
cHBlbmRDaGFyYWN0ZXJzKG1lc3NhZ2VSZWNlaXZlck5hbWUuZGF0YSgpLCBtZXNzYWdlUmVjZWl2
ZXJOYW1lLnNpemUoKSk7Ci0gICAgbWVzc2FnZU5hbWVTdHJpbmdCdWlsZGVyLmFwcGVuZCgnLicp
OwotICAgIG1lc3NhZ2VOYW1lU3RyaW5nQnVpbGRlci5hcHBlbmRDaGFyYWN0ZXJzKG1lc3NhZ2VO
YW1lLmRhdGEoKSwgbWVzc2FnZU5hbWUuc2l6ZSgpKTsKLQotICAgIHNfaW52YWxpZE1lc3NhZ2VD
YWxsYmFjayh0b0FQSShBUEk6OlN0cmluZzo6Y3JlYXRlKG1lc3NhZ2VOYW1lU3RyaW5nQnVpbGRl
ci50b1N0cmluZygpKS5wdHIoKSkpOworICAgIHNfaW52YWxpZE1lc3NhZ2VDYWxsYmFjayh0b0FQ
SShBUEk6OlN0cmluZzo6Y3JlYXRlKGRlc2NyaXB0aW9uKG1lc3NhZ2VOYW1lKSkucHRyKCkpKTsK
IH0KIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVzb2x2ZVBhdGhzRm9yU2FuZGJveEV4dGVuc2lv
bnMoKQpAQCAtMTY3MywyMiArMTY2OCwyMiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpzeW50aGVz
aXplQXBwSXNCYWNrCiAgICAgZW5zdXJlTmV0d29ya1Byb2Nlc3MoKS5zeW50aGVzaXplQXBwSXNC
YWNrZ3JvdW5kKGJhY2tncm91bmQpOwogfQogCi12b2lkIFdlYlByb2Nlc3NQb29sOjphZGRNZXNz
YWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBD
OjpNZXNzYWdlUmVjZWl2ZXImIG1lc3NhZ2VSZWNlaXZlcikKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6
OmFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlJlY2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1l
LCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYgbWVzc2FnZVJlY2VpdmVyKQogewogICAgIG1fbWVzc2Fn
ZVJlY2VpdmVyTWFwLmFkZE1lc3NhZ2VSZWNlaXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1lLCBtZXNz
YWdlUmVjZWl2ZXIpOwogfQogCi12b2lkIFdlYlByb2Nlc3NQb29sOjphZGRNZXNzYWdlUmVjZWl2
ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVz
dGluYXRpb25JRCwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImIG1lc3NhZ2VSZWNlaXZlcikKK3ZvaWQg
V2ViUHJvY2Vzc1Bvb2w6OmFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlJlY2VpdmVyTmFtZSBtZXNz
YWdlUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBJUEM6Ok1lc3NhZ2VSZWNl
aXZlciYgbWVzc2FnZVJlY2VpdmVyKQogewogICAgIG1fbWVzc2FnZVJlY2VpdmVyTWFwLmFkZE1l
c3NhZ2VSZWNlaXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklELCBtZXNzYWdl
UmVjZWl2ZXIpOwogfQogCi12b2lkIFdlYlByb2Nlc3NQb29sOjpyZW1vdmVNZXNzYWdlUmVjZWl2
ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSkKK3ZvaWQgV2ViUHJv
Y2Vzc1Bvb2w6OnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlJlY2VpdmVyTmFtZSBtZXNzYWdl
UmVjZWl2ZXJOYW1lKQogewogICAgIG1fbWVzc2FnZVJlY2VpdmVyTWFwLnJlbW92ZU1lc3NhZ2VS
ZWNlaXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1lKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzUG9vbDo6
cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZl
ck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpCit2b2lkIFdlYlByb2Nlc3NQb29sOjpyZW1v
dmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpSZWNlaXZlck5hbWUgbWVzc2FnZVJlY2VpdmVyTmFtZSwg
dWludDY0X3QgZGVzdGluYXRpb25JRCkKIHsKICAgICBtX21lc3NhZ2VSZWNlaXZlck1hcC5yZW1v
dmVNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRCk7CiB9
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgJKHJldmlzaW9u
IDI2MDc2NCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgJKHdv
cmtpbmcgY29weSkKQEAgLTE0OCwyMSArMTQ4LDIxIEBAIHB1YmxpYzoKICAgICAgICAgbV9zdXBw
bGVtZW50cy5hZGQoVDo6c3VwcGxlbWVudE5hbWUoKSwgVDo6Y3JlYXRlKHRoaXMpKTsKICAgICB9
CiAKLSAgICB2b2lkIGFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNz
YWdlUmVjZWl2ZXJOYW1lLCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYpOwotICAgIHZvaWQgYWRkTWVz
c2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVp
bnQ2NF90IGRlc3RpbmF0aW9uSUQsIElQQzo6TWVzc2FnZVJlY2VpdmVyJik7Ci0gICAgdm9pZCBy
ZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVy
TmFtZSk7Ci0gICAgdm9pZCByZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVu
Y2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCk7CisgICAgdm9p
ZCBhZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpSZWNlaXZlck5hbWUsIElQQzo6TWVzc2FnZVJlY2Vp
dmVyJik7CisgICAgdm9pZCBhZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpSZWNlaXZlck5hbWUsIHVp
bnQ2NF90IGRlc3RpbmF0aW9uSUQsIElQQzo6TWVzc2FnZVJlY2VpdmVyJik7CisgICAgdm9pZCBy
ZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpSZWNlaXZlck5hbWUpOworICAgIHZvaWQgcmVtb3Zl
TWVzc2FnZVJlY2VpdmVyKElQQzo6UmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklE
KTsKIAogICAgIFdlYkJhY2tGb3J3YXJkQ2FjaGUmIGJhY2tGb3J3YXJkQ2FjaGUoKSB7IHJldHVy
biBtX2JhY2tGb3J3YXJkQ2FjaGUuZ2V0KCk7IH0KICAgICAKICAgICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4KLSAgICB2b2lkIGFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBt
ZXNzYWdlUmVjZWl2ZXJOYW1lLCBPYmplY3RJZGVudGlmaWVyPFQ+IGRlc3RpbmF0aW9uSUQsIElQ
Qzo6TWVzc2FnZVJlY2VpdmVyJiByZWNlaXZlcikKKyAgICB2b2lkIGFkZE1lc3NhZ2VSZWNlaXZl
cihJUEM6OlJlY2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBPYmplY3RJZGVudGlmaWVy
PFQ+IGRlc3RpbmF0aW9uSUQsIElQQzo6TWVzc2FnZVJlY2VpdmVyJiByZWNlaXZlcikKICAgICB7
CiAgICAgICAgIGFkZE1lc3NhZ2VSZWNlaXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1lLCBkZXN0aW5h
dGlvbklELnRvVUludDY0KCksIHJlY2VpdmVyKTsKICAgICB9CiAgICAgCiAgICAgdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+Ci0gICAgdm9pZCByZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdS
ZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgT2JqZWN0SWRlbnRpZmllcjxUPiBkZXN0aW5h
dGlvbklEKQorICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6UmVjZWl2ZXJOYW1l
IG1lc3NhZ2VSZWNlaXZlck5hbWUsIE9iamVjdElkZW50aWZpZXI8VD4gZGVzdGluYXRpb25JRCkK
ICAgICB7CiAgICAgICAgIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1l
LCBkZXN0aW5hdGlvbklELnRvVUludDY0KCkpOwogICAgIH0KQEAgLTQxNyw3ICs0MTcsNyBAQCBw
dWJsaWM6CiAjZW5kaWYKIAogICAgIHN0YXRpYyB2b2lkIHNldEludmFsaWRNZXNzYWdlQ2FsbGJh
Y2sodm9pZCAoKikoV0tTdHJpbmdSZWYpKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlSW52
YWxpZE1lc3NhZ2UoY29uc3QgSVBDOjpTdHJpbmdSZWZlcmVuY2UmIG1lc3NhZ2VSZWNlaXZlck5h
bWUsIGNvbnN0IElQQzo6U3RyaW5nUmVmZXJlbmNlJiBtZXNzYWdlTmFtZSk7CisgICAgc3RhdGlj
IHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6TWVzc2FnZU5hbWUpOwogCiAgICAg
Ym9vbCBpc1VSTEtub3duSFNUU0hvc3QoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpIGNvbnN0Owog
ICAgIHZvaWQgcmVzZXRIU1RTSG9zdHMoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAkocmV2aXNpb24gMjYwNzY0KQorKysgU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYxLDgg
KzE2MSw4IEBAIGNsYXNzIFVJUHJveHlGb3JDYXB0dXJlIGZpbmFsIDogcHVibGljIFUKIHB1Ymxp
YzoKICAgICBleHBsaWNpdCBVSVByb3h5Rm9yQ2FwdHVyZShXZWJQcm9jZXNzUHJveHkmIHByb2Nl
c3MpIDogbV9wcm9jZXNzKHByb2Nlc3MpIHsgfQogcHJpdmF0ZToKLSAgICB2b2lkIGFkZE1lc3Nh
Z2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6
Ok1lc3NhZ2VSZWNlaXZlciYgcmVjZWl2ZXIpIGZpbmFsIHsgbV9wcm9jZXNzLmFkZE1lc3NhZ2VS
ZWNlaXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1lLCByZWNlaXZlcik7IH0KLSAgICB2b2lkIHJlbW92
ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1l
KSBmaW5hbCB7IG1fcHJvY2Vzcy5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVy
TmFtZSk7IH0KKyAgICB2b2lkIGFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlJlY2VpdmVyTmFtZSBt
ZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYgcmVjZWl2ZXIpIGZpbmFs
IHsgbV9wcm9jZXNzLmFkZE1lc3NhZ2VSZWNlaXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1lLCByZWNl
aXZlcik7IH0KKyAgICB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlJlY2VpdmVyTmFt
ZSBtZXNzYWdlUmVjZWl2ZXJOYW1lKSBmaW5hbCB7IG1fcHJvY2Vzcy5yZW1vdmVNZXNzYWdlUmVj
ZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSk7IH0KICAgICBJUEM6OkNvbm5lY3Rpb24mIGNvbm5l
Y3Rpb24oKSBmaW5hbCB7IHJldHVybiAqbV9wcm9jZXNzLmNvbm5lY3Rpb24oKTsgfQogICAgIExv
Z2dlciYgbG9nZ2VyKCkgZmluYWwKICAgICB7CkBAIC0zNTIsNyArMzUyLDcgQEAgdm9pZCBXZWJQ
cm9jZXNzUHJveHk6OnBsYXRmb3JtR2V0TGF1bmNoTwogYm9vbCBXZWJQcm9jZXNzUHJveHk6OnNo
b3VsZFNlbmRQZW5kaW5nTWVzc2FnZShjb25zdCBQZW5kaW5nTWVzc2FnZSYgbWVzc2FnZSkKIHsK
ICNpZiBIQVZFKFNBTkRCT1hfSVNTVUVfUkVBRF9FWFRFTlNJT05fVE9fUFJPQ0VTU19CWV9BVURJ
VF9UT0tFTikKLSAgICBpZiAobWVzc2FnZS5lbmNvZGVyLT5tZXNzYWdlTmFtZSgpID09ICJMb2Fk
UmVxdWVzdFdhaXRpbmdGb3JQcm9jZXNzTGF1bmNoIikgeworICAgIGlmIChtZXNzYWdlLmVuY29k
ZXItPm1lc3NhZ2VOYW1lKCkgPT0gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9Mb2FkUmVxdWVz
dFdhaXRpbmdGb3JQcm9jZXNzTGF1bmNoKSB7CiAgICAgICAgIGF1dG8gYnVmZmVyID0gbWVzc2Fn
ZS5lbmNvZGVyLT5idWZmZXIoKTsKICAgICAgICAgYXV0byBidWZmZXJTaXplID0gbWVzc2FnZS5l
bmNvZGVyLT5idWZmZXJTaXplKCk7CiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkRlY29k
ZXI+IGRlY29kZXIgPSBtYWtlVW5pcXVlPElQQzo6RGVjb2Rlcj4oYnVmZmVyLCBidWZmZXJTaXpl
LCBudWxscHRyLCBWZWN0b3I8SVBDOjpBdHRhY2htZW50PiB7IH0pOwpAQCAtODQwLDExICs4NDAs
MTEgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnByb2Nlc3NEaWRUZXJtaW5hdAogICAgIH0KIH0K
IAotdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZl
ck5hbWUsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lKQordm9pZCBXZWJQcm9jZXNz
UHJveHk6OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rp
b24sIElQQzo6TWVzc2FnZU5hbWUgbWVzc2FnZU5hbWUpCiB7Ci0gICAgbG9nSW52YWxpZE1lc3Nh
Z2UoY29ubmVjdGlvbiwgbWVzc2FnZVJlY2VpdmVyTmFtZSwgbWVzc2FnZU5hbWUpOworICAgIGxv
Z0ludmFsaWRNZXNzYWdlKGNvbm5lY3Rpb24sIG1lc3NhZ2VOYW1lKTsKIAotICAgIFdlYlByb2Nl
c3NQb29sOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UobWVzc2FnZVJlY2VpdmVyTmFtZSwgbWVz
c2FnZU5hbWUpOworICAgIFdlYlByb2Nlc3NQb29sOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2Uo
bWVzc2FnZU5hbWUpOwogCiAgICAgLy8gVGVybWluYXRlIHRoZSBXZWJDb250ZW50IHByb2Nlc3Mu
CiAgICAgdGVybWluYXRlKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuaAkocmV2aXNpb24gMjYwNzY0KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1NSw3ICs0NTUsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpE
ZWNvZGVyJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4m
KSBvdmVycmlkZTsKICAgICB2b2lkIGRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYpIG92ZXJyaWRl
OwotICAgIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQ
Qzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIElQQzo6U3RyaW5nUmVmZXJl
bmNlIG1lc3NhZ2VOYW1lKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VOYW1lKSBvdmVycmlkZTsKIAogICAg
IC8vIFJlc3BvbnNpdmVuZXNzVGltZXI6OkNsaWVudAogICAgIHZvaWQgZGlkQmVjb21lVW5yZXNw
b25zaXZlKCkgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9V
c2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5oCShyZXZpc2lv
biAyNjA3NjQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0
dXJlTWFuYWdlclByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDggKzUxLDggQEAgcHVibGlj
OgogICAgIGNsYXNzIENvbm5lY3Rpb25Qcm94eSB7CiAgICAgcHVibGljOgogICAgICAgICB2aXJ0
dWFsIH5Db25uZWN0aW9uUHJveHkoKSA9IGRlZmF1bHQ7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBh
ZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UsIElQQzo6TWVzc2FnZVJlY2Vp
dmVyJikgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQ
Qzo6U3RyaW5nUmVmZXJlbmNlKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBhZGRNZXNzYWdl
UmVjZWl2ZXIoSVBDOjpSZWNlaXZlck5hbWUsIElQQzo6TWVzc2FnZVJlY2VpdmVyJikgPSAwOwor
ICAgICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6UmVjZWl2ZXJO
YW1lKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKCkg
PSAwOwogICAgICAgICB2aXJ0dWFsIGJvb2wgd2lsbFN0YXJ0Q2FwdHVyZShXZWJDb3JlOjpDYXB0
dXJlRGV2aWNlOjpEZXZpY2VUeXBlKSBjb25zdCA9IDA7CiAgICAgICAgIHZpcnR1YWwgTG9nZ2Vy
JiBsb2dnZXIoKSA9IDA7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQ
YWdlUHJveHlDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQkocmV2aXNpb24gMjYwNzY0KQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0JKHdvcmtpbmcgY29weSkK
QEAgLTI5MCwxNiArMjkwLDYgQEAgY29uc3QgU3RyaW5nJiBXZWJQYWdlUHJveHk6OnBheW1lbnRD
b29yZAogICAgIHJldHVybiB3ZWJzaXRlRGF0YVN0b3JlKCkuY29uZmlndXJhdGlvbigpLnNvdXJj
ZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllcigpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94
eTo6cGF5bWVudENvb3JkaW5hdG9yQWRkTWVzc2FnZVJlY2VpdmVyKFdlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5JiwgY29uc3QgSVBDOjpTdHJpbmdSZWZlcmVuY2UmIG1lc3NhZ2VSZWNlaXZlck5h
bWUsIElQQzo6TWVzc2FnZVJlY2VpdmVyJiBtZXNzYWdlUmVjZWl2ZXIpCi17Ci0gICAgcHJvY2Vz
cygpLmFkZE1lc3NhZ2VSZWNlaXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1lLCBtX3dlYlBhZ2VJRCwg
bWVzc2FnZVJlY2VpdmVyKTsKLX0KLQotdm9pZCBXZWJQYWdlUHJveHk6OnBheW1lbnRDb29yZGlu
YXRvclJlbW92ZU1lc3NhZ2VSZWNlaXZlcihXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYsIGNv
bnN0IElQQzo6U3RyaW5nUmVmZXJlbmNlJiBtZXNzYWdlUmVjZWl2ZXJOYW1lKQotewotICAgIHBy
b2Nlc3MoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSwgbV93ZWJQ
YWdlSUQpOwotfQotCiAjZW5kaWYKIAogI2lmIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQpJbmRl
eDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5jcHAJ
KHJldmlzaW9uIDI2MDc2NCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dQVS9HUFVQcm9j
ZXNzUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTEsMTEgKzIxMSwxMSBAQCB2b2lkIEdQ
VVByb2Nlc3NQcm94eTo6ZGlkQ2xvc2UoSVBDOjpDb25uCiAgICAgZ3B1UHJvY2Vzc0NyYXNoZWQo
KTsKIH0KIAotdm9pZCBHUFVQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VS
ZWNlaXZlck5hbWUsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lKQordm9pZCBHUFVQ
cm9jZXNzUHJveHk6OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNv
bm5lY3Rpb24sIElQQzo6TWVzc2FnZU5hbWUgbWVzc2FnZU5hbWUpCiB7Ci0gICAgbG9nSW52YWxp
ZE1lc3NhZ2UoY29ubmVjdGlvbiwgbWVzc2FnZVJlY2VpdmVyTmFtZSwgbWVzc2FnZU5hbWUpOwor
ICAgIGxvZ0ludmFsaWRNZXNzYWdlKGNvbm5lY3Rpb24sIG1lc3NhZ2VOYW1lKTsKIAotICAgIFdl
YlByb2Nlc3NQb29sOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UobWVzc2FnZVJlY2VpdmVyTmFt
ZSwgbWVzc2FnZU5hbWUpOworICAgIFdlYlByb2Nlc3NQb29sOjpkaWRSZWNlaXZlSW52YWxpZE1l
c3NhZ2UobWVzc2FnZU5hbWUpOwogCiAgICAgLy8gVGVybWluYXRlIHRoZSBHUFUgcHJvY2Vzcy4K
ICAgICB0ZXJtaW5hdGUoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dQVS9HUFVQ
cm9jZXNzUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HUFUv
R1BVUHJvY2Vzc1Byb3h5LmgJKHJldmlzaW9uIDI2MDc2NCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMTAwLDcgKzEw
MCw3IEBAIHByaXZhdGU6CiAgICAgLy8gSVBDOjpDb25uZWN0aW9uOjpDbGllbnQKICAgICB2b2lk
IGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJy
aWRlOwogICAgIHZvaWQgZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpTdHJp
bmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVz
c2FnZU5hbWUpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZU5hbWUpIG92ZXJyaWRlOwogCiAjaWYgSEFWRShW
SVNJQklMSVRZX1BST1BBR0FUSU9OX1ZJRVcpCiAgICAgdm9pZCBkaWRDcmVhdGVDb250ZXh0Rm9y
VmlzaWJpbGl0eVByb3BhZ2F0aW9uKExheWVySG9zdGluZ0NvbnRleHRJRCk7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5jcHAJKHJldmlzaW9uIDI2MDc2NCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3Nyw5ICsy
NzcsOSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZENsb3NlKElQQzo6CiAgICAgbmV0
d29ya1Byb2Nlc3NDcmFzaGVkKCk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlk
UmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpT
dHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpTdHJpbmdSZWZlcmVuY2Ug
bWVzc2FnZU5hbWUpCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVJbnZhbGlk
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6TWVzc2FnZU5hbWUgbWVz
c2FnZU5hbWUpCiB7Ci0gICAgbG9nSW52YWxpZE1lc3NhZ2UoY29ubmVjdGlvbiwgbWVzc2FnZVJl
Y2VpdmVyTmFtZSwgbWVzc2FnZU5hbWUpOworICAgIGxvZ0ludmFsaWRNZXNzYWdlKGNvbm5lY3Rp
b24sIG1lc3NhZ2VOYW1lKTsKICAgICB0ZXJtaW5hdGUoKTsKIH0KIApJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgJ
KHJldmlzaW9uIDI2MDc2NCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNDUsNyArMjQ1LDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6
RGVjb2RlciYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+
Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mKSBvdmVycmlk
ZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJ
UEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6OlN0cmluZ1JlZmVy
ZW5jZSBtZXNzYWdlTmFtZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlTmFtZSkgb3ZlcnJpZGU7CiAgICAg
dm9pZCBkaWRSZWNlaXZlU3luY05ldHdvcmtQcm9jZXNzUHJveHlNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jik7CiAK
ICAgICAvLyBNZXNzYWdlIGhhbmRsZXJzCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuY3BwCShyZXZpc2lvbiAyNjA3
NjQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94
eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxNCw5ICsyMTQsOSBAQCB2b2lkIFBsdWdpblByb2Nl
c3NQcm94eTo6ZGlkQ2xvc2UoSVBDOjpDCiAgICAgcGx1Z2luUHJvY2Vzc0NyYXNoZWRPckZhaWxl
ZFRvTGF1bmNoKCk7CiB9CiAKLXZvaWQgUGx1Z2luUHJvY2Vzc1Byb3h5OjpkaWRSZWNlaXZlSW52
YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OlN0cmluZ1JlZmVy
ZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFt
ZSkKK3ZvaWQgUGx1Z2luUHJvY2Vzc1Byb3h5OjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6Ok1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lKQog
ewotICAgIGxvZ0ludmFsaWRNZXNzYWdlKGNvbm5lY3Rpb24sIG1lc3NhZ2VSZWNlaXZlck5hbWUs
IG1lc3NhZ2VOYW1lKTsKKyAgICBsb2dJbnZhbGlkTWVzc2FnZShjb25uZWN0aW9uLCBtZXNzYWdl
TmFtZSk7CiAgICAgdGVybWluYXRlKCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuaAkocmV2aXNpb24gMjYw
NzY0KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJv
eHkuaAkod29ya2luZyBjb3B5KQpAQCAtMTA0LDcgKzEwNCw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwg
c3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZGlk
Q2xvc2UoSVBDOjpDb25uZWN0aW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlSW52
YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2Fn
ZVJlY2VpdmVyTmFtZSwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUpIG92ZXJyaWRl
OworICAgIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQ
Qzo6TWVzc2FnZU5hbWUpIG92ZXJyaWRlOwogCiAgICAgLy8gUHJvY2Vzc0xhdW5jaGVyOjpDbGll
bnQKICAgICB2b2lkIGRpZEZpbmlzaExhdW5jaGluZyhQcm9jZXNzTGF1bmNoZXIqLCBJUEM6OkNv
bm5lY3Rpb246OklkZW50aWZpZXIpIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmNwcAkocmV2aXNpb24gMjYwNzY0KQorKysgU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OTMsNyArNzkzLDcg
QEAgdm9pZCBXZWJQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OgogICAgIH0KICNlbmRp
ZgogCi0gICAgTE9HX0VSUk9SKCJVbmhhbmRsZWQgd2ViIHByb2Nlc3MgbWVzc2FnZSAnJXM6OiVz
JyAoZGVzdGluYXRpb246ICUiIFBSSXU2NCAiIHBpZDogJWQpIiwgZGVjb2Rlci5tZXNzYWdlUmVj
ZWl2ZXJOYW1lKCkudG9TdHJpbmcoKS5kYXRhKCksIGRlY29kZXIubWVzc2FnZU5hbWUoKS50b1N0
cmluZygpLmRhdGEoKSwgZGVjb2Rlci5kZXN0aW5hdGlvbklEKCksIHN0YXRpY19jYXN0PGludD4o
Z2V0Q3VycmVudFByb2Nlc3NJRCgpKSk7CisgICAgTE9HX0VSUk9SKCJVbmhhbmRsZWQgd2ViIHBy
b2Nlc3MgbWVzc2FnZSAnJXMnIChkZXN0aW5hdGlvbjogJSIgUFJJdTY0ICIgcGlkOiAlZCkiLCBk
ZXNjcmlwdGlvbihkZWNvZGVyLm1lc3NhZ2VOYW1lKCkpLCBkZWNvZGVyLmRlc3RpbmF0aW9uSUQo
KSwgc3RhdGljX2Nhc3Q8aW50PihnZXRDdXJyZW50UHJvY2Vzc0lEKCkpKTsKIH0KIAogV2ViRnJh
bWUqIFdlYlByb2Nlc3M6OndlYkZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlEKSBjb25zdApJ
bmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNz
Q29ubmVjdGlvbi5jcHAJKHJldmlzaW9uIDI2MDc2NCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Myw3
ICs3Myw3IEBAIHZvaWQgR1BVUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZENsb3NlKElQQzoKIHsKIH0K
IAotdm9pZCBHUFVQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYsIElQQzo6U3RyaW5nUmVmZXJlbmNlLCBJUEM6OlN0cmluZ1JlZmVyZW5j
ZSkKK3ZvaWQgR1BVUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VOYW1lKQogewogfQogCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5oCShy
ZXZpc2lvbiAyNjA3NjQpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nl
c3NDb25uZWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTgwLDcgKzgwLDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYpIG92ZXJyaWRlOwogICAgIHZvaWQg
ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7
CiAgICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpE
ZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBmaW5hbDsKLSAgICB2b2lk
IGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OlN0cmluZ1Jl
ZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdl
TmFtZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlTmFtZSkgb3ZlcnJpZGU7CiAKICAgICBib29sIGRpc3Bh
dGNoTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKICAgICBib29sIGRp
c3BhdGNoU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1
bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3IuaAkocmV2aXNpb24gMjYwNzY0KQorKysg
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3IuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAKICAgICAvLyBJUEM6OkNvbm5lY3Rp
b246OkNsaWVudAogICAgIHZvaWQgZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJikgb3ZlcnJpZGUg
eyBjbG9zZSgpOyB9Ci0gICAgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiwgSVBDOjpTdHJpbmdSZWZlcmVuY2UsIElQQzo6U3RyaW5nUmVmZXJlbmNlKSBvdmVy
cmlkZSB7IGNsb3NlKCk7IH0KKyAgICB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VOYW1lKSBvdmVycmlkZSB7IGNsb3NlKCk7IH0KIAog
ICAgIHZvaWQgc2hvdygpOwogICAgIHZvaWQgY2xvc2UoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUkuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJLmgJKHJldmlzaW9u
IDI2MDc2NCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVj
dG9yVUkuaAkod29ya2luZyBjb3B5KQpAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAKICAgICAv
LyBJUEM6OkNvbm5lY3Rpb246OkNsaWVudAogICAgIHZvaWQgZGlkQ2xvc2UoSVBDOjpDb25uZWN0
aW9uJikgb3ZlcnJpZGUgeyAvKiBEbyBub3RoaW5nLCB0aGUgaW5zcGVjdGVkIHBhZ2UgcHJvY2Vz
cyBtYXkgaGF2ZSBjcmFzaGVkIGFuZCBtYXkgYmUgZ2V0dGluZyByZXBsYWNlZC4gKi8gfQotICAg
IHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6U3Ry
aW5nUmVmZXJlbmNlLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSkgb3ZlcnJpZGUgeyBjbG9zZVdpbmRv
dygpOyB9CisgICAgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiwgSVBDOjpNZXNzYWdlTmFtZSkgb3ZlcnJpZGUgeyBjbG9zZVdpbmRvdygpOyB9CiAKICAgICAv
LyBDYWxsZWQgYnkgV2ViSW5zcGVjdG9yVUkgbWVzc2FnZXMKICAgICB2b2lkIGVzdGFibGlzaENv
bm5lY3Rpb24oV2ViUGFnZVByb3h5SWRlbnRpZmllciBpbnNwZWN0ZWRQYWdlSWRlbnRpZmllciwg
Y29uc3QgRGVidWdnYWJsZUluZm9EYXRhJiwgYm9vbCB1bmRlclRlc3QsIHVuc2lnbmVkIGluc3Bl
Y3Rpb25MZXZlbCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAJKHJldmlzaW9uIDI2
MDc2NCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxOSw3ICsyMTksNyBAQCB2b2lkIE5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkQ2xvc2UoCiAjZW5kaWYKIH0KIAotdm9pZCBOZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSwgSVBDOjpTdHJpbmdSZWZlcmVuY2UpCit2b2lk
IE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZU5hbWUpCiB7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbi5oCShyZXZpc2lvbiAyNjA3NjQpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtOTgs
NyArOTgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlU3lu
Y01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRy
PElQQzo6RW5jb2Rlcj4mKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZENsb3NlKElQQzo6Q29ubmVj
dGlvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIElQ
Qzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJl
Y2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VOYW1lKSBv
dmVycmlkZTsKIAogICAgIHZvaWQgZGlkRmluaXNoUGluZ0xvYWQodWludDY0X3QgcGluZ0xvYWRJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiYsIFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmJik7CiAgICAgdm9pZCBkaWRGaW5pc2hQcmVjb25uZWN0aW9uKHVpbnQ2NF90IHByZWNv
bm5lY3Rpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiYpOwpJbmRleDogU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblBy
b2Nlc3NDb25uZWN0aW9uLmNwcAkocmV2aXNpb24gMjYwNzY0KQorKysgU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMjgsNyArMTI4LDcgQEAgdm9pZCBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6ZGlk
Q2xvc2UoSQogICAgIH0KIH0KIAotdm9pZCBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVj
ZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6U3RyaW5nUmVmZXJlbmNl
LCBJUEM6OlN0cmluZ1JlZmVyZW5jZSkKK3ZvaWQgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OmRp
ZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VOYW1l
KQogewogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Q
cm9jZXNzQ29ubmVjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uLmgJKHJldmlzaW9uIDI2MDc2NCkKKysr
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9u
LmgJKHdvcmtpbmcgY29weSkKQEAgLTY2LDcgKzY2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRp
ZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRl
OwogICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6
RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jikgb3ZlcnJpZGU7CiAgICAg
dm9pZCBkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJl
Y2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OlN0cmluZ1JlZmVyZW5j
ZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZSkg
b3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiwgSVBDOjpNZXNzYWdlTmFtZSkgb3ZlcnJpZGU7CiAKICAgICAvLyBNZXNzYWdlIGhhbmRs
ZXJzLgogICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6
RW5jb2Rlcj4mKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90
ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5
ZXJUcmVlRHJhd2luZ0FyZWEubW0JKHJldmlzaW9uIDI2MDc2NCkKKysrIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5n
QXJlYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMzg1LDcgKzM4NSw3IEBAIHZvaWQgUmVtb3RlTGF5
ZXJUcmVlRHJhd2luZ0FyZWE6OnVwZGF0ZVIKICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVMYXll
clRyZWVEcmF3aW5nQXJlYVByb3h5OjpXaWxsQ29tbWl0TGF5ZXJUcmVlKGxheWVyVHJhbnNhY3Rp
b24udHJhbnNhY3Rpb25JRCgpKSk7CiAKICAgICBNZXNzYWdlczo6UmVtb3RlTGF5ZXJUcmVlRHJh
d2luZ0FyZWFQcm94eTo6Q29tbWl0TGF5ZXJUcmVlIG1lc3NhZ2UobGF5ZXJUcmFuc2FjdGlvbiwg
c2Nyb2xsaW5nVHJhbnNhY3Rpb24pOwotICAgIGF1dG8gY29tbWl0RW5jb2RlciA9IG1ha2VVbmlx
dWU8SVBDOjpFbmNvZGVyPihNZXNzYWdlczo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94
eTo6Q29tbWl0TGF5ZXJUcmVlOjpyZWNlaXZlck5hbWUoKSwgTWVzc2FnZXM6OlJlbW90ZUxheWVy
VHJlZURyYXdpbmdBcmVhUHJveHk6OkNvbW1pdExheWVyVHJlZTo6bmFtZSgpLCBtX2lkZW50aWZp
ZXIudG9VSW50NjQoKSk7CisgICAgYXV0byBjb21taXRFbmNvZGVyID0gbWFrZVVuaXF1ZTxJUEM6
OkVuY29kZXI+KE1lc3NhZ2VzOjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5OjpDb21t
aXRMYXllclRyZWU6Om5hbWUoKSwgbV9pZGVudGlmaWVyLnRvVUludDY0KCkpOwogICAgIGNvbW1p
dEVuY29kZXItPmVuY29kZShtZXNzYWdlLmFyZ3VtZW50cygpKTsKIAogICAgIC8vIEZJWE1FOiBN
b3ZlIGFsbCBiYWNraW5nIHN0b3JlIGZsdXNoaW5nIG1hbmFnZW1lbnQgdG8gUmVtb3RlTGF5ZXJC
YWNraW5nU3RvcmVDb2xsZWN0aW9uLgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398233</attachid>
            <date>2020-05-01 13:57:43 -0700</date>
            <delta_ts>2020-05-01 15:00:32 -0700</delta_ts>
            <desc>Patch CMake</desc>
            <filename>bug-211112-cmake.diff</filename>
            <type>text/plain</type>
            <size>14240</size>
            <attacher name="Don Olmstead">don.olmstead</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViS2l0
L0NNYWtlTGlzdHMudHh0CmluZGV4IGRhZWNkODZjNzRjOC4uNjZkYTMyMDhiYmI4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvQ01h
a2VMaXN0cy50eHQKQEAgLTExOSwxNDggKzExOSwxNDggQEAgbGlzdChBUFBFTkQgV2ViS2l0X1VO
SUZJRURfU09VUkNFX0xJU1RfRklMRVMKICkKIAogc2V0KFdlYktpdF9NRVNTQUdFU19JTl9GSUxF
UwotICAgIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgot
ICAgIEdQVVByb2Nlc3MvR1BVUHJvY2Vzcy5tZXNzYWdlcy5pbgorICAgIEdQVVByb2Nlc3MvR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2VzcworICAgIEdQVVByb2Nlc3MvR1BVUHJvY2VzcwogCi0gICAg
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkubWVzc2FnZXMu
aW4KKyAgICBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eQog
Ci0gICAgR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5tZXNz
YWdlcy5pbgotICAgIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9TZXNzaW9uUHJveHkubWVz
c2FnZXMuaW4KLSAgICBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUZhY3RvcnlQcm94eS5tZXNz
YWdlcy5pbgotICAgIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5tZXNz
YWdlcy5pbgotICAgIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJv
eHkubWVzc2FnZXMuaW4KLSAgICBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5Lm1lc3Nh
Z2VzLmluCi0gICAgR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHku
bWVzc2FnZXMuaW4KLSAgICBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5Lm1l
c3NhZ2VzLmluCi0gICAgR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJv
eHkubWVzc2FnZXMuaW4KLSAgICBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFu
YWdlclByb3h5Lm1lc3NhZ2VzLmluCi0gICAgR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBs
YXllclByb3h5Lm1lc3NhZ2VzLmluCi0gICAgR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJl
c291cmNlTWFuYWdlci5tZXNzYWdlcy5pbgorICAgIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVk
aW9EZXN0aW5hdGlvbk1hbmFnZXIKKyAgICBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvU2Vz
c2lvblByb3h5CisgICAgR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5UHJveHkKKyAg
ICBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkKKyAgICBHUFVQcm9jZXNz
L21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5CisgICAgR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVDRE1Qcm94eQorICAgIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFj
dG9yeVByb3h5CisgICAgR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eQorICAg
IEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5CisgICAgR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eQorICAgIEdQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eQorICAgIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
TWVkaWFSZXNvdXJjZU1hbmFnZXIKIAotICAgIEdQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0Nv
ZGVjc1Byb3h5Lm1lc3NhZ2VzLmluCi0gICAgR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlQXVkaW9N
ZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIubWVzc2FnZXMuaW4KLSAgICBHUFVQcm9jZXNzL3dlYnJ0
Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXIubWVzc2FnZXMuaW4K
LSAgICBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLm1lc3NhZ2VzLmluCi0g
ICAgR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXIubWVzc2FnZXMu
aW4KLSAgICBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIu
bWVzc2FnZXMuaW4KLSAgICBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXJNYW5hZ2VyLm1lc3NhZ2VzLmluCisgICAgR1BVUHJvY2Vzcy93ZWJydGMvTGliV2Vi
UlRDQ29kZWNzUHJveHkKKyAgICBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlcgorICAgIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFT
dHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlcgorICAgIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1l
ZGlhUmVjb3JkZXIKKyAgICBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyTWFu
YWdlcgorICAgIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
cgorICAgIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1h
bmFnZXIKIAotICAgIE5ldHdvcmtQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5tZXNz
YWdlcy5pbgorICAgIE5ldHdvcmtQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlcgogCi0g
ICAgTmV0d29ya1Byb2Nlc3MvSW5kZXhlZERCL1dlYklEQlNlcnZlci5tZXNzYWdlcy5pbgorICAg
IE5ldHdvcmtQcm9jZXNzL0luZGV4ZWREQi9XZWJJREJTZXJ2ZXIKIAotICAgIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCi0gICAgTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIubWVzc2FnZXMuaW4KLSAgICBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgotICAgIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbgotICAgIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtTb2NrZXRDaGFubmVsLm1lc3NhZ2VzLmluCi0gICAgTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1NvY2tldFN0cmVhbS5tZXNzYWdlcy5pbgorICAgIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzCisgICAgTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NvbnRlbnRS
dWxlTGlzdE1hbmFnZXIKKyAgICBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2VzcworICAgIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlcgorICAgIE5ldHdvcmtQcm9jZXNzL05l
dHdvcmtTb2NrZXRDaGFubmVsCisgICAgTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVh
bQogCi0gICAgTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrLm1lc3NhZ2VzLmluCi0gICAgTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1Nl
cnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KLSAgICBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgorICAgIE5ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzaworICAgIE5ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uCisgICAgTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24KIAot
ICAgIE5ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXJTZXQubWVzc2FnZXMu
aW4KKyAgICBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyU2V0CiAKLSAg
ICBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLm1lc3Nh
Z2VzLmluCisgICAgTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVj
dGlvbgogCi0gICAgTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtNRE5TUmVnaXN0ZXIubWVz
c2FnZXMuaW4KLSAgICBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ01vbml0b3IubWVz
c2FnZXMuaW4KLSAgICBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLm1l
c3NhZ2VzLmluCi0gICAgTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENTb2NrZXQubWVz
c2FnZXMuaW4KKyAgICBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya01ETlNSZWdpc3Rlcgor
ICAgIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDTW9uaXRvcgorICAgIE5ldHdvcmtQ
cm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIKKyAgICBOZXR3b3JrUHJvY2Vzcy93ZWJy
dGMvTmV0d29ya1JUQ1NvY2tldAogCi0gICAgUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVy
UHJveHkubWVzc2FnZXMuaW4KLSAgICBQbHVnaW5Qcm9jZXNzL1BsdWdpblByb2Nlc3MubWVzc2Fn
ZXMuaW4KLSAgICBQbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmlu
CisgICAgUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkKKyAgICBQbHVnaW5Qcm9j
ZXNzL1BsdWdpblByb2Nlc3MKKyAgICBQbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9u
CiAKLSAgICBTaGFyZWQvQXV4aWxpYXJ5UHJvY2Vzcy5tZXNzYWdlcy5pbgotICAgIFNoYXJlZC9X
ZWJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCisgICAgU2hhcmVkL0F1eGlsaWFyeVByb2Nlc3MKKyAg
ICBTaGFyZWQvV2ViQ29ubmVjdGlvbgogCi0gICAgU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhl
bnRpY2F0aW9uTWFuYWdlci5tZXNzYWdlcy5pbgorICAgIFNoYXJlZC9BdXRoZW50aWNhdGlvbi9B
dXRoZW50aWNhdGlvbk1hbmFnZXIKIAotICAgIFNoYXJlZC9QbHVnaW5zL05QT2JqZWN0TWVzc2Fn
ZVJlY2VpdmVyLm1lc3NhZ2VzLmluCisgICAgU2hhcmVkL1BsdWdpbnMvTlBPYmplY3RNZXNzYWdl
UmVjZWl2ZXIKIAotICAgIFVJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5Lm1lc3NhZ2VzLmluCi0g
ICAgVUlQcm9jZXNzL1Zpc2l0ZWRMaW5rU3RvcmUubWVzc2FnZXMuaW4KLSAgICBVSVByb2Nlc3Mv
V2ViQ29va2llTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCi0gICAgVUlQcm9jZXNzL1dlYkZ1bGxT
Y3JlZW5NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KLSAgICBVSVByb2Nlc3MvV2ViR2VvbG9jYXRp
b25NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KLSAgICBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1l
c3NhZ2VzLmluCi0gICAgVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5tZXNzYWdlcy5pbgot
ICAgIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5tZXNzYWdlcy5pbgotICAgIFVJUHJvY2Vzcy9X
ZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KKyAgICBVSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94
eQorICAgIFVJUHJvY2Vzcy9WaXNpdGVkTGlua1N0b3JlCisgICAgVUlQcm9jZXNzL1dlYkNvb2tp
ZU1hbmFnZXJQcm94eQorICAgIFVJUHJvY2Vzcy9XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5Cisg
ICAgVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5CisgICAgVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eQorICAgIFVJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkKKyAgICBVSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wKKyAgICBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5CiAKLSAgICBV
SVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5tZXNzYWdlcy5pbgorICAg
IFVJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uCiAKLSAgICBVSVByb2Nl
c3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkubWVzc2FnZXMuaW4KKyAgICBVSVByb2Nlc3MvRG93
bmxvYWRzL0Rvd25sb2FkUHJveHkKIAotICAgIFVJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5
Lm1lc3NhZ2VzLmluCisgICAgVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkKIAotICAgIFVJ
UHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHkubWVzc2FnZXMuaW4KLSAg
ICBVSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclByb3h5Lm1lc3NhZ2VzLmluCisgICAg
VUlQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eQorICAgIFVJUHJvY2Vz
cy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yUHJveHkKIAotICAgIFVJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KKyAgICBVSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5CiAKLSAgICBVSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJv
eHkubWVzc2FnZXMuaW4KKyAgICBVSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkK
IAotICAgIFVJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94
eS5tZXNzYWdlcy5pbgorICAgIFVJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENv
bnRyb2xsZXJQcm94eQogCi0gICAgV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisg
ICAgV2ViUHJvY2Vzcy9XZWJQcm9jZXNzCiAKLSAgICBXZWJQcm9jZXNzL0F1dG9tYXRpb24vV2Vi
QXV0b21hdGlvblNlc3Npb25Qcm94eS5tZXNzYWdlcy5pbgorICAgIFdlYlByb2Nlc3MvQXV0b21h
dGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5CiAKLSAgICBXZWJQcm9jZXNzL0RhdGFiYXNl
cy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRvU2VydmVyLm1lc3NhZ2VzLmluCisgICAgV2Vi
UHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcgogCi0g
ICAgV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyLm1lc3NhZ2VzLmlu
CisgICAgV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyCiAKLSAgICBX
ZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgorICAgIFdlYlBy
b2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uCiAKLSAgICBXZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluCisgICAgV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZAogCi0gICAgV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLm1lc3NhZ2VzLmluCi0gICAgV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5Lm1lc3NhZ2VzLmluCi0gICAg
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9TZXNzaW9uLm1lc3NhZ2VzLmluCi0gICAg
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLm1lc3NhZ2VzLmlu
Ci0gICAgV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5tZXNzYWdl
cy5pbgotICAgIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5t
ZXNzYWdlcy5pbgorICAgIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZQorICAgIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94
eQorICAgIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvbgorICAgIFdlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbgorICAgIFdlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb24KKyAgICBXZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIKIAotICAgIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9M
aWJXZWJSVENDb2RlY3MubWVzc2FnZXMuaW4KLSAgICBXZWJQcm9jZXNzL0dQVS93ZWJydGMvU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyLm1lc3NhZ2VzLmluCisgICAgV2ViUHJvY2Vzcy9HUFUvd2Vi
cnRjL0xpYldlYlJUQ0NvZGVjcworICAgIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXIKIAotICAgIFdlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRp
b25NYW5hZ2VyLm1lc3NhZ2VzLmluCisgICAgV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9s
b2NhdGlvbk1hbmFnZXIKIAotICAgIFdlYlByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3Bl
Y3RvclVJLm1lc3NhZ2VzLmluCi0gICAgV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9y
Lm1lc3NhZ2VzLmluCi0gICAgV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9ySW50ZXJy
dXB0RGlzcGF0Y2hlci5tZXNzYWdlcy5pbgotICAgIFdlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYklu
c3BlY3RvclVJLm1lc3NhZ2VzLmluCisgICAgV2ViUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2Vi
SW5zcGVjdG9yVUkKKyAgICBXZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3IKKyAgICBX
ZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JJbnRlcnJ1cHREaXNwYXRjaGVyCisgICAg
V2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUkKIAotICAgIFdlYlByb2Nlc3MvTmV0
d29yay93ZWJydGMvV2ViTUROU1JlZ2lzdGVyLm1lc3NhZ2VzLmluCi0gICAgV2ViUHJvY2Vzcy9O
ZXR3b3JrL3dlYnJ0Yy9XZWJSVENNb25pdG9yLm1lc3NhZ2VzLmluCi0gICAgV2ViUHJvY2Vzcy9O
ZXR3b3JrL3dlYnJ0Yy9XZWJSVENSZXNvbHZlci5tZXNzYWdlcy5pbgotICAgIFdlYlByb2Nlc3Mv
TmV0d29yay93ZWJydGMvV2ViUlRDU29ja2V0Lm1lc3NhZ2VzLmluCisgICAgV2ViUHJvY2Vzcy9O
ZXR3b3JrL3dlYnJ0Yy9XZWJNRE5TUmVnaXN0ZXIKKyAgICBXZWJQcm9jZXNzL05ldHdvcmsvd2Vi
cnRjL1dlYlJUQ01vbml0b3IKKyAgICBXZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1dlYlJUQ1Jl
c29sdmVyCisgICAgV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJSVENTb2NrZXQKIAotICAg
IFdlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW4K
LSAgICBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW4KLSAg
ICBXZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5tZXNzYWdlcy5pbgotICAgIFdl
YlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0ubWVzc2FnZXMuaW4KKyAgICBXZWJQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uCisgICAgV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYlJlc291cmNlTG9hZGVyCisgICAgV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENo
YW5uZWwKKyAgICBXZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0U3RyZWFtCiAKLSAgICBXZWJQ
cm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5tZXNzYWdlcy5pbgor
ICAgIFdlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyCiAKLSAg
ICBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW4K
LSAgICBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLm1l
c3NhZ2VzLmluCi0gICAgV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5Lm1lc3NhZ2VzLmlu
CisgICAgV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uCisgICAgV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcgorICAgIFdlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eQogCi0gICAgV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNX
Q2xpZW50Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgotICAgIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgorICAgIFdlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24KKyAgICBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb24KIAotICAgIFdlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyLm1lc3NhZ2VzLmluCisgICAgV2ViUHJvY2Vzcy9Vc2VyQ29u
dGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIKIAotICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9E
cmF3aW5nQXJlYS5tZXNzYWdlcy5pbgotICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3Bh
dGNoZXIubWVzc2FnZXMuaW4KLSAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvVmlzaXRlZExpbmtUYWJs
ZUNvbnRyb2xsZXIubWVzc2FnZXMuaW4KLSAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5t
ZXNzYWdlcy5pbgorICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYQorICAgIFdlYlBy
b2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIKKyAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvVmlz
aXRlZExpbmtUYWJsZUNvbnRyb2xsZXIKKyAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZQog
Ci0gICAgV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLm1lc3NhZ2VzLmluCisg
ICAgV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwCiApCiAKICMgRklYTUU6IGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTAzNjYKQEAgLTQwNiwyMyAr
NDA2LDM4IEBAIGVuZGlmICgpCiAKICMgSGVscGVyIG1hY3JvIHdoaWNoIHdyYXBzIHRoZSBnZW5l
cmF0ZS1tZXNzYWdlLXJlY2VpdmVyLnB5IHNjcmlwdAogIyAgIF9vdXRwdXRfc291cmNlIGlzIGEg
bGlzdCBuYW1lIHdoaWNoIHdpbGwgY29udGFpbiBnZW5lcmF0ZWQgc291cmNlcy4oZWcuIFdlYktp
dF9TT1VSQ0VTKQotIyAgIF9pbnB1dF9maWxlcyBhcmUgbWVzc2FnZXMuaW4gZmlsZXMgdG8gZ2Vu
ZXJhdGUuCi1tYWNybyhHRU5FUkFURV9NRVNTQUdFX1NPVVJDRVMgX291dHB1dF9zb3VyY2UgX2lu
cHV0X2ZpbGVzKQotICAgIGZvcmVhY2ggKF9maWxlICR7X2lucHV0X2ZpbGVzfSkKKyMgICBfaW5w
dXRzIGFyZSBtZXNzYWdlcy5pbiBmaWxlcyB0byBnZW5lcmF0ZS4KK21hY3JvKEdFTkVSQVRFX01F
U1NBR0VfU09VUkNFUyBfb3V0cHV0X3NvdXJjZSBfaW5wdXRzKQorICAgIHVuc2V0KF9pbnB1dF9m
aWxlcykKKyAgICB1bnNldChfb3V0cHV0cykKKyAgICBmb3JlYWNoIChfZmlsZSBJTiBMSVNUUyAk
e19pbnB1dHN9KQogICAgICAgICBnZXRfZmlsZW5hbWVfY29tcG9uZW50KF9uYW1lICR7X2ZpbGV9
IE5BTUVfV0UpCi0gICAgICAgIGFkZF9jdXN0b21fY29tbWFuZCgKLSAgICAgICAgICAgIE9VVFBV
VCAke1dlYktpdF9ERVJJVkVEX1NPVVJDRVNfRElSfS8ke19uYW1lfU1lc3NhZ2VSZWNlaXZlci5j
cHAgJHtXZWJLaXRfREVSSVZFRF9TT1VSQ0VTX0RJUn0vJHtfbmFtZX1NZXNzYWdlcy5oICR7V2Vi
S2l0X0RFUklWRURfU09VUkNFU19ESVJ9LyR7X25hbWV9TWVzc2FnZXNSZXBsaWVzLmgKLSAgICAg
ICAgICAgIE1BSU5fREVQRU5ERU5DWSAke19maWxlfQotICAgICAgICAgICAgREVQRU5EUyAke1dF
QktJVF9ESVJ9L1NjcmlwdHMvd2Via2l0L19faW5pdF9fLnB5Ci0gICAgICAgICAgICAgICAgICAg
ICR7V0VCS0lUX0RJUn0vU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKLSAgICAgICAgICAgICAg
ICAgICAgJHtXRUJLSVRfRElSfS9TY3JpcHRzL3dlYmtpdC9tb2RlbC5weQotICAgICAgICAgICAg
ICAgICAgICAke1dFQktJVF9ESVJ9L1NjcmlwdHMvd2Via2l0L3BhcnNlci5weQotICAgICAgICAg
ICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAke1dFQktJVF9ESVJ9L1NjcmlwdHMvZ2Vu
ZXJhdGUtbWVzc2FnZS1yZWNlaXZlci5weSAke19maWxlfSAtLWltcGxlbWVudGF0aW9uICR7V2Vi
S2l0X0RFUklWRURfU09VUkNFU19ESVJ9LyR7X25hbWV9TWVzc2FnZVJlY2VpdmVyLmNwcCAtLWhl
YWRlciAke1dlYktpdF9ERVJJVkVEX1NPVVJDRVNfRElSfS8ke19uYW1lfU1lc3NhZ2VzLmggLS1y
ZXBseS1oZWFkZXIgJHtXZWJLaXRfREVSSVZFRF9TT1VSQ0VTX0RJUn0vJHtfbmFtZX1NZXNzYWdl
c1JlcGxpZXMuaAotICAgICAgICAgICAgV09SS0lOR19ESVJFQ1RPUlkgJHtXRUJLSVRfRElSfQot
ICAgICAgICAgICAgVkVSQkFUSU0pCi0KKyAgICAgICAgbGlzdChBUFBFTkQgX2lucHV0X2ZpbGVz
ICR7V0VCS0lUX0RJUn0vJHtfZmlsZX0ubWVzc2FnZXMuaW4pCisgICAgICAgIGxpc3QoQVBQRU5E
IF9vdXRwdXRzCisgICAgICAgICAgICAke1dlYktpdF9ERVJJVkVEX1NPVVJDRVNfRElSfS8ke19u
YW1lfU1lc3NhZ2VSZWNlaXZlci5jcHAKKyAgICAgICAgICAgICR7V2ViS2l0X0RFUklWRURfU09V
UkNFU19ESVJ9LyR7X25hbWV9TWVzc2FnZXMuaAorICAgICAgICAgICAgJHtXZWJLaXRfREVSSVZF
RF9TT1VSQ0VTX0RJUn0vJHtfbmFtZX1NZXNzYWdlc1JlcGxpZXMuaAorICAgICAgICApCiAgICAg
ICAgIGxpc3QoQVBQRU5EICR7X291dHB1dF9zb3VyY2V9ICR7V2ViS2l0X0RFUklWRURfU09VUkNF
U19ESVJ9LyR7X25hbWV9TWVzc2FnZVJlY2VpdmVyLmNwcCkKICAgICBlbmRmb3JlYWNoICgpCisg
ICAgbGlzdChBUFBFTkQgJHtfb3V0cHV0X3NvdXJjZX0gJHtXZWJLaXRfREVSSVZFRF9TT1VSQ0VT
X0RJUn0vTWVzc2FnZU5hbWVzLmNwcCkKKworICAgIGFkZF9jdXN0b21fY29tbWFuZCgKKyAgICAg
ICAgT1VUUFVUCisgICAgICAgICAgICAke19vdXRwdXRzfQorICAgICAgICAgICAgJHtXZWJLaXRf
REVSSVZFRF9TT1VSQ0VTX0RJUn0vTWVzc2FnZU5hbWVzLmNwcAorICAgICAgICAgICAgJHtXZWJL
aXRfREVSSVZFRF9TT1VSQ0VTX0RJUn0vTWVzc2FnZU5hbWVzLmgKKyAgICAgICAgTUFJTl9ERVBF
TkRFTkNZICR7V0VCS0lUX0RJUn0vU2NyaXB0cy9nZW5lcmF0ZS1tZXNzYWdlLXJlY2VpdmVyLnB5
CisgICAgICAgIERFUEVORFMKKyAgICAgICAgICAgICR7V0VCS0lUX0RJUn0vU2NyaXB0cy93ZWJr
aXQvX19pbml0X18ucHkKKyAgICAgICAgICAgICR7V0VCS0lUX0RJUn0vU2NyaXB0cy93ZWJraXQv
bWVzc2FnZXMucHkKKyAgICAgICAgICAgICR7V0VCS0lUX0RJUn0vU2NyaXB0cy93ZWJraXQvbW9k
ZWwucHkKKyAgICAgICAgICAgICR7V0VCS0lUX0RJUn0vU2NyaXB0cy93ZWJraXQvcGFyc2VyLnB5
CisgICAgICAgICAgICAke19pbnB1dF9maWxlc30KKyAgICAgICAgQ09NTUFORCAke1BZVEhPTl9F
WEVDVVRBQkxFfSAke1dFQktJVF9ESVJ9L1NjcmlwdHMvZ2VuZXJhdGUtbWVzc2FnZS1yZWNlaXZl
ci5weSAke1dFQktJVF9ESVJ9ICR7X2lucHV0c30KKyAgICAgICAgV09SS0lOR19ESVJFQ1RPUlkg
JHtXZWJLaXRfREVSSVZFRF9TT1VSQ0VTX0RJUn0KKyAgICAgICAgVkVSQkFUSU0KKyAgICApCiBl
bmRtYWNybygpCiBHRU5FUkFURV9NRVNTQUdFX1NPVVJDRVMoV2ViS2l0X0RFUklWRURfU09VUkNF
UyAiJHtXZWJLaXRfTUVTU0FHRVNfSU5fRklMRVN9IikKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1HVEsuY21ha2UK
aW5kZXggYzA4M2YzMmQxOTJkLi5mODI5ZGMzNjE3MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm1HVEsuY21ha2UKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybUdUSy5jbWFr
ZQpAQCAtNDMsOSArNDMsOSBAQCBpZiAoTk9UIFVTRV9HVEs0KQogICAgICAgICBXZWJQcm9jZXNz
L1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5jcHAKICAgICApCiAgICAgbGlz
dChBUFBFTkQgV2ViS2l0X01FU1NBR0VTX0lOX0ZJTEVTCi0gICAgICAgIFVJUHJvY2Vzcy9WaWV3
R2VzdHVyZUNvbnRyb2xsZXIubWVzc2FnZXMuaW4KKyAgICAgICAgVUlQcm9jZXNzL1ZpZXdHZXN0
dXJlQ29udHJvbGxlcgogCi0gICAgICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdl
b21ldHJ5Q29sbGVjdG9yLm1lc3NhZ2VzLmluCisgICAgICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9W
aWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yCiAgICAgKQogZW5kaWYgKCkKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398245</attachid>
            <date>2020-05-01 15:00:32 -0700</date>
            <delta_ts>2020-05-01 15:24:47 -0700</delta_ts>
            <desc>Patch CMake</desc>
            <filename>bug-211112-cmake.diff</filename>
            <type>text/plain</type>
            <size>14240</size>
            <attacher name="Don Olmstead">don.olmstead</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViS2l0
L0NNYWtlTGlzdHMudHh0CmluZGV4IGRhZWNkODZjNzRjOC4uMzhlYmQyN2Q2MjQwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvQ01h
a2VMaXN0cy50eHQKQEAgLTExOSwxNDggKzExOSwxNDggQEAgbGlzdChBUFBFTkQgV2ViS2l0X1VO
SUZJRURfU09VUkNFX0xJU1RfRklMRVMKICkKIAogc2V0KFdlYktpdF9NRVNTQUdFU19JTl9GSUxF
UwotICAgIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgot
ICAgIEdQVVByb2Nlc3MvR1BVUHJvY2Vzcy5tZXNzYWdlcy5pbgorICAgIEdQVVByb2Nlc3MvR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2VzcworICAgIEdQVVByb2Nlc3MvR1BVUHJvY2VzcwogCi0gICAg
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkubWVzc2FnZXMu
aW4KKyAgICBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eQog
Ci0gICAgR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5tZXNz
YWdlcy5pbgotICAgIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9TZXNzaW9uUHJveHkubWVz
c2FnZXMuaW4KLSAgICBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUZhY3RvcnlQcm94eS5tZXNz
YWdlcy5pbgotICAgIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5tZXNz
YWdlcy5pbgotICAgIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJv
eHkubWVzc2FnZXMuaW4KLSAgICBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5Lm1lc3Nh
Z2VzLmluCi0gICAgR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHku
bWVzc2FnZXMuaW4KLSAgICBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5Lm1l
c3NhZ2VzLmluCi0gICAgR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJv
eHkubWVzc2FnZXMuaW4KLSAgICBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFu
YWdlclByb3h5Lm1lc3NhZ2VzLmluCi0gICAgR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBs
YXllclByb3h5Lm1lc3NhZ2VzLmluCi0gICAgR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJl
c291cmNlTWFuYWdlci5tZXNzYWdlcy5pbgorICAgIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVk
aW9EZXN0aW5hdGlvbk1hbmFnZXIKKyAgICBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvU2Vz
c2lvblByb3h5CisgICAgR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5UHJveHkKKyAg
ICBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkKKyAgICBHUFVQcm9jZXNz
L21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5CisgICAgR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVDRE1Qcm94eQorICAgIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFj
dG9yeVByb3h5CisgICAgR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eQorICAg
IEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5CisgICAgR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eQorICAgIEdQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eQorICAgIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
TWVkaWFSZXNvdXJjZU1hbmFnZXIKIAotICAgIEdQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0Nv
ZGVjc1Byb3h5Lm1lc3NhZ2VzLmluCi0gICAgR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlQXVkaW9N
ZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIubWVzc2FnZXMuaW4KLSAgICBHUFVQcm9jZXNzL3dlYnJ0
Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXIubWVzc2FnZXMuaW4K
LSAgICBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLm1lc3NhZ2VzLmluCi0g
ICAgR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXIubWVzc2FnZXMu
aW4KLSAgICBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIu
bWVzc2FnZXMuaW4KLSAgICBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXJNYW5hZ2VyLm1lc3NhZ2VzLmluCisgICAgR1BVUHJvY2Vzcy93ZWJydGMvTGliV2Vi
UlRDQ29kZWNzUHJveHkKKyAgICBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlcgorICAgIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFT
dHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlcgorICAgIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1l
ZGlhUmVjb3JkZXIKKyAgICBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyTWFu
YWdlcgorICAgIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
cgorICAgIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1h
bmFnZXIKIAotICAgIE5ldHdvcmtQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5tZXNz
YWdlcy5pbgorICAgIE5ldHdvcmtQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlcgogCi0g
ICAgTmV0d29ya1Byb2Nlc3MvSW5kZXhlZERCL1dlYklEQlNlcnZlci5tZXNzYWdlcy5pbgorICAg
IE5ldHdvcmtQcm9jZXNzL0luZGV4ZWREQi9XZWJJREJTZXJ2ZXIKIAotICAgIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCi0gICAgTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIubWVzc2FnZXMuaW4KLSAgICBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgotICAgIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbgotICAgIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtTb2NrZXRDaGFubmVsLm1lc3NhZ2VzLmluCi0gICAgTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1NvY2tldFN0cmVhbS5tZXNzYWdlcy5pbgorICAgIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzCisgICAgTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NvbnRlbnRS
dWxlTGlzdE1hbmFnZXIKKyAgICBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2VzcworICAgIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlcgorICAgIE5ldHdvcmtQcm9jZXNzL05l
dHdvcmtTb2NrZXRDaGFubmVsCisgICAgTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVh
bQogCi0gICAgTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrLm1lc3NhZ2VzLmluCi0gICAgTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1Nl
cnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KLSAgICBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgorICAgIE5ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzaworICAgIE5ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uCisgICAgTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24KIAot
ICAgIE5ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXJTZXQubWVzc2FnZXMu
aW4KKyAgICBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyU2V0CiAKLSAg
ICBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLm1lc3Nh
Z2VzLmluCisgICAgTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVj
dGlvbgogCi0gICAgTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtNRE5TUmVnaXN0ZXIubWVz
c2FnZXMuaW4KLSAgICBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ01vbml0b3IubWVz
c2FnZXMuaW4KLSAgICBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLm1l
c3NhZ2VzLmluCi0gICAgTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENTb2NrZXQubWVz
c2FnZXMuaW4KKyAgICBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya01ETlNSZWdpc3Rlcgor
ICAgIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDTW9uaXRvcgorICAgIE5ldHdvcmtQ
cm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIKKyAgICBOZXR3b3JrUHJvY2Vzcy93ZWJy
dGMvTmV0d29ya1JUQ1NvY2tldAogCi0gICAgUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVy
UHJveHkubWVzc2FnZXMuaW4KLSAgICBQbHVnaW5Qcm9jZXNzL1BsdWdpblByb2Nlc3MubWVzc2Fn
ZXMuaW4KLSAgICBQbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmlu
CisgICAgUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkKKyAgICBQbHVnaW5Qcm9j
ZXNzL1BsdWdpblByb2Nlc3MKKyAgICBQbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9u
CiAKLSAgICBTaGFyZWQvQXV4aWxpYXJ5UHJvY2Vzcy5tZXNzYWdlcy5pbgotICAgIFNoYXJlZC9X
ZWJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCisgICAgU2hhcmVkL0F1eGlsaWFyeVByb2Nlc3MKKyAg
ICBTaGFyZWQvV2ViQ29ubmVjdGlvbgogCi0gICAgU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhl
bnRpY2F0aW9uTWFuYWdlci5tZXNzYWdlcy5pbgorICAgIFNoYXJlZC9BdXRoZW50aWNhdGlvbi9B
dXRoZW50aWNhdGlvbk1hbmFnZXIKIAotICAgIFNoYXJlZC9QbHVnaW5zL05QT2JqZWN0TWVzc2Fn
ZVJlY2VpdmVyLm1lc3NhZ2VzLmluCisgICAgU2hhcmVkL1BsdWdpbnMvTlBPYmplY3RNZXNzYWdl
UmVjZWl2ZXIKIAotICAgIFVJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5Lm1lc3NhZ2VzLmluCi0g
ICAgVUlQcm9jZXNzL1Zpc2l0ZWRMaW5rU3RvcmUubWVzc2FnZXMuaW4KLSAgICBVSVByb2Nlc3Mv
V2ViQ29va2llTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCi0gICAgVUlQcm9jZXNzL1dlYkZ1bGxT
Y3JlZW5NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KLSAgICBVSVByb2Nlc3MvV2ViR2VvbG9jYXRp
b25NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KLSAgICBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1l
c3NhZ2VzLmluCi0gICAgVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5tZXNzYWdlcy5pbgot
ICAgIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5tZXNzYWdlcy5pbgotICAgIFVJUHJvY2Vzcy9X
ZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KKyAgICBVSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94
eQorICAgIFVJUHJvY2Vzcy9WaXNpdGVkTGlua1N0b3JlCisgICAgVUlQcm9jZXNzL1dlYkNvb2tp
ZU1hbmFnZXJQcm94eQorICAgIFVJUHJvY2Vzcy9XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5Cisg
ICAgVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5CisgICAgVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eQorICAgIFVJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkKKyAgICBVSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wKKyAgICBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5CiAKLSAgICBV
SVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5tZXNzYWdlcy5pbgorICAg
IFVJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uCiAKLSAgICBVSVByb2Nl
c3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkubWVzc2FnZXMuaW4KKyAgICBVSVByb2Nlc3MvRG93
bmxvYWRzL0Rvd25sb2FkUHJveHkKIAotICAgIFVJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5
Lm1lc3NhZ2VzLmluCisgICAgVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkKIAotICAgIFVJ
UHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHkubWVzc2FnZXMuaW4KLSAg
ICBVSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclByb3h5Lm1lc3NhZ2VzLmluCisgICAg
VUlQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eQorICAgIFVJUHJvY2Vz
cy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yUHJveHkKIAotICAgIFVJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KKyAgICBVSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5CiAKLSAgICBVSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJv
eHkubWVzc2FnZXMuaW4KKyAgICBVSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkK
IAotICAgIFVJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94
eS5tZXNzYWdlcy5pbgorICAgIFVJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENv
bnRyb2xsZXJQcm94eQogCi0gICAgV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisg
ICAgV2ViUHJvY2Vzcy9XZWJQcm9jZXNzCiAKLSAgICBXZWJQcm9jZXNzL0F1dG9tYXRpb24vV2Vi
QXV0b21hdGlvblNlc3Npb25Qcm94eS5tZXNzYWdlcy5pbgorICAgIFdlYlByb2Nlc3MvQXV0b21h
dGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5CiAKLSAgICBXZWJQcm9jZXNzL0RhdGFiYXNl
cy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRvU2VydmVyLm1lc3NhZ2VzLmluCisgICAgV2Vi
UHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcgogCi0g
ICAgV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyLm1lc3NhZ2VzLmlu
CisgICAgV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyCiAKLSAgICBX
ZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgorICAgIFdlYlBy
b2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uCiAKLSAgICBXZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluCisgICAgV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZAogCi0gICAgV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLm1lc3NhZ2VzLmluCi0gICAgV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5Lm1lc3NhZ2VzLmluCi0gICAg
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9TZXNzaW9uLm1lc3NhZ2VzLmluCi0gICAg
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLm1lc3NhZ2VzLmlu
Ci0gICAgV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5tZXNzYWdl
cy5pbgotICAgIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5t
ZXNzYWdlcy5pbgorICAgIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZQorICAgIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94
eQorICAgIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvbgorICAgIFdlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbgorICAgIFdlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb24KKyAgICBXZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIKIAotICAgIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9M
aWJXZWJSVENDb2RlY3MubWVzc2FnZXMuaW4KLSAgICBXZWJQcm9jZXNzL0dQVS93ZWJydGMvU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyLm1lc3NhZ2VzLmluCisgICAgV2ViUHJvY2Vzcy9HUFUvd2Vi
cnRjL0xpYldlYlJUQ0NvZGVjcworICAgIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXIKIAotICAgIFdlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRp
b25NYW5hZ2VyLm1lc3NhZ2VzLmluCisgICAgV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9s
b2NhdGlvbk1hbmFnZXIKIAotICAgIFdlYlByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3Bl
Y3RvclVJLm1lc3NhZ2VzLmluCi0gICAgV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9y
Lm1lc3NhZ2VzLmluCi0gICAgV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9ySW50ZXJy
dXB0RGlzcGF0Y2hlci5tZXNzYWdlcy5pbgotICAgIFdlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYklu
c3BlY3RvclVJLm1lc3NhZ2VzLmluCisgICAgV2ViUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2Vi
SW5zcGVjdG9yVUkKKyAgICBXZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3IKKyAgICBX
ZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JJbnRlcnJ1cHREaXNwYXRjaGVyCisgICAg
V2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUkKIAotICAgIFdlYlByb2Nlc3MvTmV0
d29yay93ZWJydGMvV2ViTUROU1JlZ2lzdGVyLm1lc3NhZ2VzLmluCi0gICAgV2ViUHJvY2Vzcy9O
ZXR3b3JrL3dlYnJ0Yy9XZWJSVENNb25pdG9yLm1lc3NhZ2VzLmluCi0gICAgV2ViUHJvY2Vzcy9O
ZXR3b3JrL3dlYnJ0Yy9XZWJSVENSZXNvbHZlci5tZXNzYWdlcy5pbgotICAgIFdlYlByb2Nlc3Mv
TmV0d29yay93ZWJydGMvV2ViUlRDU29ja2V0Lm1lc3NhZ2VzLmluCisgICAgV2ViUHJvY2Vzcy9O
ZXR3b3JrL3dlYnJ0Yy9XZWJNRE5TUmVnaXN0ZXIKKyAgICBXZWJQcm9jZXNzL05ldHdvcmsvd2Vi
cnRjL1dlYlJUQ01vbml0b3IKKyAgICBXZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1dlYlJUQ1Jl
c29sdmVyCisgICAgV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJSVENTb2NrZXQKIAotICAg
IFdlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW4K
LSAgICBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW4KLSAg
ICBXZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5tZXNzYWdlcy5pbgotICAgIFdl
YlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0ubWVzc2FnZXMuaW4KKyAgICBXZWJQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uCisgICAgV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYlJlc291cmNlTG9hZGVyCisgICAgV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENo
YW5uZWwKKyAgICBXZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0U3RyZWFtCiAKLSAgICBXZWJQ
cm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5tZXNzYWdlcy5pbgor
ICAgIFdlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyCiAKLSAg
ICBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW4K
LSAgICBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLm1l
c3NhZ2VzLmluCi0gICAgV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5Lm1lc3NhZ2VzLmlu
CisgICAgV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uCisgICAgV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcgorICAgIFdlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eQogCi0gICAgV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNX
Q2xpZW50Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgotICAgIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgorICAgIFdlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24KKyAgICBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb24KIAotICAgIFdlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyLm1lc3NhZ2VzLmluCisgICAgV2ViUHJvY2Vzcy9Vc2VyQ29u
dGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIKIAotICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9E
cmF3aW5nQXJlYS5tZXNzYWdlcy5pbgotICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3Bh
dGNoZXIubWVzc2FnZXMuaW4KLSAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvVmlzaXRlZExpbmtUYWJs
ZUNvbnRyb2xsZXIubWVzc2FnZXMuaW4KLSAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5t
ZXNzYWdlcy5pbgorICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYQorICAgIFdlYlBy
b2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIKKyAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvVmlz
aXRlZExpbmtUYWJsZUNvbnRyb2xsZXIKKyAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZQog
Ci0gICAgV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLm1lc3NhZ2VzLmluCisg
ICAgV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwCiApCiAKICMgRklYTUU6IGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTAzNjYKQEAgLTQwNiwyMyAr
NDA2LDM4IEBAIGVuZGlmICgpCiAKICMgSGVscGVyIG1hY3JvIHdoaWNoIHdyYXBzIHRoZSBnZW5l
cmF0ZS1tZXNzYWdlLXJlY2VpdmVyLnB5IHNjcmlwdAogIyAgIF9vdXRwdXRfc291cmNlIGlzIGEg
bGlzdCBuYW1lIHdoaWNoIHdpbGwgY29udGFpbiBnZW5lcmF0ZWQgc291cmNlcy4oZWcuIFdlYktp
dF9TT1VSQ0VTKQotIyAgIF9pbnB1dF9maWxlcyBhcmUgbWVzc2FnZXMuaW4gZmlsZXMgdG8gZ2Vu
ZXJhdGUuCi1tYWNybyhHRU5FUkFURV9NRVNTQUdFX1NPVVJDRVMgX291dHB1dF9zb3VyY2UgX2lu
cHV0X2ZpbGVzKQotICAgIGZvcmVhY2ggKF9maWxlICR7X2lucHV0X2ZpbGVzfSkKKyMgICBfaW5w
dXRzIGFyZSBtZXNzYWdlcy5pbiBmaWxlcyB0byBnZW5lcmF0ZS4KK21hY3JvKEdFTkVSQVRFX01F
U1NBR0VfU09VUkNFUyBfb3V0cHV0X3NvdXJjZSBfaW5wdXRzKQorICAgIHVuc2V0KF9pbnB1dF9m
aWxlcykKKyAgICB1bnNldChfb3V0cHV0cykKKyAgICBmb3JlYWNoIChfZmlsZSBJTiBJVEVNUyAk
e19pbnB1dHN9KQogICAgICAgICBnZXRfZmlsZW5hbWVfY29tcG9uZW50KF9uYW1lICR7X2ZpbGV9
IE5BTUVfV0UpCi0gICAgICAgIGFkZF9jdXN0b21fY29tbWFuZCgKLSAgICAgICAgICAgIE9VVFBV
VCAke1dlYktpdF9ERVJJVkVEX1NPVVJDRVNfRElSfS8ke19uYW1lfU1lc3NhZ2VSZWNlaXZlci5j
cHAgJHtXZWJLaXRfREVSSVZFRF9TT1VSQ0VTX0RJUn0vJHtfbmFtZX1NZXNzYWdlcy5oICR7V2Vi
S2l0X0RFUklWRURfU09VUkNFU19ESVJ9LyR7X25hbWV9TWVzc2FnZXNSZXBsaWVzLmgKLSAgICAg
ICAgICAgIE1BSU5fREVQRU5ERU5DWSAke19maWxlfQotICAgICAgICAgICAgREVQRU5EUyAke1dF
QktJVF9ESVJ9L1NjcmlwdHMvd2Via2l0L19faW5pdF9fLnB5Ci0gICAgICAgICAgICAgICAgICAg
ICR7V0VCS0lUX0RJUn0vU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKLSAgICAgICAgICAgICAg
ICAgICAgJHtXRUJLSVRfRElSfS9TY3JpcHRzL3dlYmtpdC9tb2RlbC5weQotICAgICAgICAgICAg
ICAgICAgICAke1dFQktJVF9ESVJ9L1NjcmlwdHMvd2Via2l0L3BhcnNlci5weQotICAgICAgICAg
ICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAke1dFQktJVF9ESVJ9L1NjcmlwdHMvZ2Vu
ZXJhdGUtbWVzc2FnZS1yZWNlaXZlci5weSAke19maWxlfSAtLWltcGxlbWVudGF0aW9uICR7V2Vi
S2l0X0RFUklWRURfU09VUkNFU19ESVJ9LyR7X25hbWV9TWVzc2FnZVJlY2VpdmVyLmNwcCAtLWhl
YWRlciAke1dlYktpdF9ERVJJVkVEX1NPVVJDRVNfRElSfS8ke19uYW1lfU1lc3NhZ2VzLmggLS1y
ZXBseS1oZWFkZXIgJHtXZWJLaXRfREVSSVZFRF9TT1VSQ0VTX0RJUn0vJHtfbmFtZX1NZXNzYWdl
c1JlcGxpZXMuaAotICAgICAgICAgICAgV09SS0lOR19ESVJFQ1RPUlkgJHtXRUJLSVRfRElSfQot
ICAgICAgICAgICAgVkVSQkFUSU0pCi0KKyAgICAgICAgbGlzdChBUFBFTkQgX2lucHV0X2ZpbGVz
ICR7V0VCS0lUX0RJUn0vJHtfZmlsZX0ubWVzc2FnZXMuaW4pCisgICAgICAgIGxpc3QoQVBQRU5E
IF9vdXRwdXRzCisgICAgICAgICAgICAke1dlYktpdF9ERVJJVkVEX1NPVVJDRVNfRElSfS8ke19u
YW1lfU1lc3NhZ2VSZWNlaXZlci5jcHAKKyAgICAgICAgICAgICR7V2ViS2l0X0RFUklWRURfU09V
UkNFU19ESVJ9LyR7X25hbWV9TWVzc2FnZXMuaAorICAgICAgICAgICAgJHtXZWJLaXRfREVSSVZF
RF9TT1VSQ0VTX0RJUn0vJHtfbmFtZX1NZXNzYWdlc1JlcGxpZXMuaAorICAgICAgICApCiAgICAg
ICAgIGxpc3QoQVBQRU5EICR7X291dHB1dF9zb3VyY2V9ICR7V2ViS2l0X0RFUklWRURfU09VUkNF
U19ESVJ9LyR7X25hbWV9TWVzc2FnZVJlY2VpdmVyLmNwcCkKICAgICBlbmRmb3JlYWNoICgpCisg
ICAgbGlzdChBUFBFTkQgJHtfb3V0cHV0X3NvdXJjZX0gJHtXZWJLaXRfREVSSVZFRF9TT1VSQ0VT
X0RJUn0vTWVzc2FnZU5hbWVzLmNwcCkKKworICAgIGFkZF9jdXN0b21fY29tbWFuZCgKKyAgICAg
ICAgT1VUUFVUCisgICAgICAgICAgICAke1dlYktpdF9ERVJJVkVEX1NPVVJDRVNfRElSfS9NZXNz
YWdlTmFtZXMuY3BwCisgICAgICAgICAgICAke1dlYktpdF9ERVJJVkVEX1NPVVJDRVNfRElSfS9N
ZXNzYWdlTmFtZXMuaAorICAgICAgICAgICAgJHtfb3V0cHV0c30KKyAgICAgICAgTUFJTl9ERVBF
TkRFTkNZICR7V0VCS0lUX0RJUn0vU2NyaXB0cy9nZW5lcmF0ZS1tZXNzYWdlLXJlY2VpdmVyLnB5
CisgICAgICAgIERFUEVORFMKKyAgICAgICAgICAgICR7V0VCS0lUX0RJUn0vU2NyaXB0cy93ZWJr
aXQvX19pbml0X18ucHkKKyAgICAgICAgICAgICR7V0VCS0lUX0RJUn0vU2NyaXB0cy93ZWJraXQv
bWVzc2FnZXMucHkKKyAgICAgICAgICAgICR7V0VCS0lUX0RJUn0vU2NyaXB0cy93ZWJraXQvbW9k
ZWwucHkKKyAgICAgICAgICAgICR7V0VCS0lUX0RJUn0vU2NyaXB0cy93ZWJraXQvcGFyc2VyLnB5
CisgICAgICAgICAgICAke19pbnB1dF9maWxlc30KKyAgICAgICAgQ09NTUFORCAke1BZVEhPTl9F
WEVDVVRBQkxFfSAke1dFQktJVF9ESVJ9L1NjcmlwdHMvZ2VuZXJhdGUtbWVzc2FnZS1yZWNlaXZl
ci5weSAke1dFQktJVF9ESVJ9ICR7X2lucHV0c30KKyAgICAgICAgV09SS0lOR19ESVJFQ1RPUlkg
JHtXZWJLaXRfREVSSVZFRF9TT1VSQ0VTX0RJUn0KKyAgICAgICAgVkVSQkFUSU0KKyAgICApCiBl
bmRtYWNybygpCiBHRU5FUkFURV9NRVNTQUdFX1NPVVJDRVMoV2ViS2l0X0RFUklWRURfU09VUkNF
UyAiJHtXZWJLaXRfTUVTU0FHRVNfSU5fRklMRVN9IikKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1HVEsuY21ha2UK
aW5kZXggYzA4M2YzMmQxOTJkLi5mODI5ZGMzNjE3MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm1HVEsuY21ha2UKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybUdUSy5jbWFr
ZQpAQCAtNDMsOSArNDMsOSBAQCBpZiAoTk9UIFVTRV9HVEs0KQogICAgICAgICBXZWJQcm9jZXNz
L1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5jcHAKICAgICApCiAgICAgbGlz
dChBUFBFTkQgV2ViS2l0X01FU1NBR0VTX0lOX0ZJTEVTCi0gICAgICAgIFVJUHJvY2Vzcy9WaWV3
R2VzdHVyZUNvbnRyb2xsZXIubWVzc2FnZXMuaW4KKyAgICAgICAgVUlQcm9jZXNzL1ZpZXdHZXN0
dXJlQ29udHJvbGxlcgogCi0gICAgICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdl
b21ldHJ5Q29sbGVjdG9yLm1lc3NhZ2VzLmluCisgICAgICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9W
aWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yCiAgICAgKQogZW5kaWYgKCkKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398252</attachid>
            <date>2020-05-01 15:24:49 -0700</date>
            <delta_ts>2020-05-01 16:46:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211112-20200501152448.patch</filename>
            <type>text/plain</type>
            <size>312165</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNjA5MzUpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDIwLTA1LTAxICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVkdWNlIElQQyBvdmVyaGVhZCBm
b3IgbWVzc2FnZSByZWNlaXZlciBuYW1lIGFuZCBtZXNzYWdlIG5hbWUgdG8gMiBieXRlcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjExMTEyCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvRW51bVRy
YWl0cy5oOgorCiAyMDIwLTA0LTI5ICBGdWppaSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNv
bnkuY29tPgogCiAgICAgICAgIFtXaW5dIERlYWRsb2NrIGluIFdURjo6VGhyZWFkOjpkaWRFeGl0
KCkgd2hpbGUgV2ViS2l0TmV0d29ya1Byb2Nlc3MuZXhlIGlzIGV4aXRpbmcKSW5kZXg6IFNvdXJj
ZS9XVEYvd3RmL0VudW1UcmFpdHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9FbnVt
VHJhaXRzLmgJKHJldmlzaW9uIDI2MDkzNSkKKysrIFNvdXJjZS9XVEYvd3RmL0VudW1UcmFpdHMu
aAkod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEsOSBAQCBzdHJ1Y3QgRW51bVZhbHVlQ2hlY2tl
cjxULCBFbnVtVmFsdWVzPEU+CiAgICAgfQogfTsKIAotdGVtcGxhdGU8dHlwZW5hbWUgRSwgdHlw
ZW5hbWUgVCwgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2VudW08RT46OnZhbHVlICYmICFzdGQ6
OmlzX3NhbWU8c3RkOjp1bmRlcmx5aW5nX3R5cGVfdDxFPiwgYm9vbD46OnZhbHVlPiogPSBudWxs
cHRyPgordGVtcGxhdGU8dHlwZW5hbWUgVT4gY2xhc3MgSGFzQ3VzdG9tSXNWYWxpZEVudW0gOiBw
dWJsaWMgc3RkOjpmYWxzZV90eXBlIHsgfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgRSwgdHlwZW5h
bWUgVCwgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2VudW08RT46OnZhbHVlICYmICFzdGQ6Omlz
X3NhbWU8c3RkOjp1bmRlcmx5aW5nX3R5cGVfdDxFPiwgYm9vbD46OnZhbHVlICYmICFIYXNDdXN0
b21Jc1ZhbGlkRW51bTxFPjo6dmFsdWU+KiA9IG51bGxwdHI+CiBjb25zdGV4cHIgYm9vbCBpc1Zh
bGlkRW51bShUIHQpCiB7CiAgICAgc3RhdGljX2Fzc2VydChzaXplb2YoVCkgPj0gc3RkOjp1bmRl
cmx5aW5nX3R5cGVfdDxFPigpLCAiSW50ZWdyYWwgdHlwZSBtdXN0IGJlIGF0IGxlYXN0IHRoZSBz
aXplIG9mIHRoZSB1bmRlcmx5aW5nIGVudW0gdHlwZSIpOwpJbmRleDogU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9u
IDI2MDk3MSkKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMjg2IEBACisyMDIwLTA1LTAxICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2Vu
QHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVkdWNlIElQQyBvdmVyaGVhZCBmb3IgbWVzc2FnZSBy
ZWNlaXZlciBuYW1lIGFuZCBtZXNzYWdlIG5hbWUgdG8gMiBieXRlcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjExMTEyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1vdXRwdXQu
eGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIEdQ
VVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZSk6Cisg
ICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZU1l
c3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZSk6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzOjpkaWRSZWNlaXZlU3luY01lc3NhZ2UpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L2lvcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc0lPUy5tbToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnBheW1lbnRDb29yZGluYXRvckFkZE1l
c3NhZ2VSZWNlaXZlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpwYXltZW50Q29vcmRpbmF0b3JSZW1vdmVNZXNzYWdlUmVjZWl2ZXIp
OiBEZWxldGVkLgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcDoKKyAgICAg
ICAgKElQQzo6Q29ubmVjdGlvbjo6V2FpdEZvck1lc3NhZ2VTdGF0ZTo6V2FpdEZvck1lc3NhZ2VT
dGF0ZSk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OmFkZFdvcmtRdWV1ZU1lc3NhZ2VSZWNl
aXZlcik6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnJlbW92ZVdvcmtRdWV1ZU1lc3NhZ2VS
ZWNlaXZlcik6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OmRpc3BhdGNoV29ya1F1ZXVlTWVz
c2FnZVJlY2VpdmVyTWVzc2FnZSk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OmFkZFRocmVh
ZE1lc3NhZ2VSZWNlaXZlcik6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnJlbW92ZVRocmVh
ZE1lc3NhZ2VSZWNlaXZlcik6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OmRpc3BhdGNoVGhy
ZWFkTWVzc2FnZVJlY2VpdmVyTWVzc2FnZSk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OmNy
ZWF0ZVN5bmNNZXNzYWdlRW5jb2Rlcik6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnNlbmRN
ZXNzYWdlKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6d2FpdEZvck1lc3NhZ2UpOgorICAg
ICAgICAoSVBDOjpDb25uZWN0aW9uOjpzZW5kU3luY01lc3NhZ2UpOgorICAgICAgICAoSVBDOjpD
b25uZWN0aW9uOjp3YWl0Rm9yU3luY1JlcGx5KToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6
cHJvY2Vzc0luY29taW5nTWVzc2FnZSk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OmRpc3Bh
dGNoU3luY01lc3NhZ2UpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpkaXNwYXRjaERpZFJl
Y2VpdmVJbnZhbGlkTWVzc2FnZSk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OmRpc3BhdGNo
TWVzc2FnZSk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OmRpc3BhdGNoTWVzc2FnZVRvV29y
a1F1ZXVlUmVjZWl2ZXIpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpkaXNwYXRjaE1lc3Nh
Z2VUb1RocmVhZFJlY2VpdmVyKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6ZGlzcGF0Y2hJ
bmNvbWluZ01lc3NhZ2VzKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oOgor
ICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpzZW5kKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlv
bjo6c2VuZFdpdGhBc3luY1JlcGx5KToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6c2VuZFN5
bmMpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjp3YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlh
dGVseSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwOgorICAgICAgICAqIFBs
YXRmb3JtL0lQQy9EZWNvZGVyLmg6CisgICAgICAgIChJUEM6OkRlY29kZXI6Om1lc3NhZ2VSZWNl
aXZlck5hbWUgY29uc3QpOgorICAgICAgICAoSVBDOjpEZWNvZGVyOjptZXNzYWdlTmFtZSBjb25z
dCk6CisgICAgICAgIChJUEM6OkRlY29kZXI6OmRlY29kZSk6CisgICAgICAgIChJUEM6OkRlY29k
ZXI6Om9wZXJhdG9yPj4pOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9FbmNvZGVyLmNwcDoKKyAg
ICAgICAgKElQQzo6RW5jb2Rlcjo6RW5jb2Rlcik6CisgICAgICAgIChJUEM6OkVuY29kZXI6OmVu
Y29kZUhlYWRlcik6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0VuY29kZXIuaDoKKyAgICAgICAg
KiBQbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oOgorICAgICAgICAoSVBDOjpoYW5kbGVNZXNz
YWdlQXN5bmMpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9NZXNzYWdlUmVjZWl2ZXJNYXAuY3Bw
OgorICAgICAgICAoSVBDOjpNZXNzYWdlUmVjZWl2ZXJNYXA6OmFkZE1lc3NhZ2VSZWNlaXZlcik6
CisgICAgICAgIChJUEM6Ok1lc3NhZ2VSZWNlaXZlck1hcDo6cmVtb3ZlTWVzc2FnZVJlY2VpdmVy
KToKKyAgICAgICAgKElQQzo6TWVzc2FnZVJlY2VpdmVyTWFwOjpkaXNwYXRjaE1lc3NhZ2UpOgor
ICAgICAgICAoSVBDOjpNZXNzYWdlUmVjZWl2ZXJNYXA6OmRpc3BhdGNoU3luY01lc3NhZ2UpOgor
ICAgICAgICAqIFBsYXRmb3JtL0lQQy9NZXNzYWdlUmVjZWl2ZXJNYXAuaDoKKyAgICAgICAgKiBQ
bGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRlci5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9jb2Nv
YS9Db25uZWN0aW9uQ29jb2EubW06CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246Om9wZW4pOgor
ICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpzZW5kTWVzc2FnZSk6CisgICAgICAgIChJUEM6OkNv
bm5lY3Rpb246OnNlbmRPdXRnb2luZ01lc3NhZ2UpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9u
OjpyZWNlaXZlU291cmNlRXZlbnRIYW5kbGVyKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvY29j
b2EvTWFjaE1lc3NhZ2UuY3BwOgorICAgICAgICAoSVBDOjpNYWNoTWVzc2FnZTo6Y3JlYXRlKToK
KyAgICAgICAgKElQQzo6TWFjaE1lc3NhZ2U6Ok1hY2hNZXNzYWdlKToKKyAgICAgICAgKiBQbGF0
Zm9ybS9JUEMvY29jb2EvTWFjaE1lc3NhZ2UuaDoKKyAgICAgICAgKElQQzo6TWFjaE1lc3NhZ2U6
Om1lc3NhZ2VSZWNlaXZlck5hbWUgY29uc3QpOgorICAgICAgICAoSVBDOjpNYWNoTWVzc2FnZTo6
bWVzc2FnZU5hbWUgY29uc3QpOgorICAgICAgICAqIFBsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nv
bm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ29ubmVjdGlvbjo6ZGlk
UmVjZWl2ZUludmFsaWRNZXNzYWdlKToKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1dlYlByb2Nl
c3NDb25uZWN0aW9uLmg6CisgICAgICAgICogU2NyaXB0cy9NYWtlZmlsZToKKyAgICAgICAgKiBT
Y3JpcHRzL2dlbmVyYXRlLW1lc3NhZ2UtcmVjZWl2ZXIucHk6CisgICAgICAgIChtYWluKToKKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdC9MZWdhY3lNZXNzYWdlcy1leHBlY3RlZC5oOiBSZW1vdmVk
LgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L0xlZ2FjeU1lc3NhZ2VzUmVwbGllcy1leHBlY3Rl
ZC5oOiBSZW1vdmVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L01lc3NhZ2VOYW1lcy5jcHA6
IEFkZGVkLgorICAgICAgICAoSVBDOjpkZXNjcmlwdGlvbik6CisgICAgICAgICogU2NyaXB0cy93
ZWJraXQvTWVzc2FnZU5hbWVzLmg6IEFkZGVkLgorICAgICAgICAoSVBDOjpyZWNlaXZlck5hbWUp
OgorICAgICAgICAoV1RGOjppc1ZhbGlkRW51bSk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXQv
TWVzc2FnZVJlY2VpdmVyLWV4cGVjdGVkLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdC9NZXNzYWdlUmVjZWl2ZXJTdXBlcmNsYXNzLWV4cGVjdGVkLmNwcDogUmVtb3ZlZC4K
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9NZXNzYWdlcy1leHBlY3RlZC5oOiBSZW1vdmVkLgor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0L01lc3NhZ2VzUmVwbGllcy1leHBlY3RlZC5oOiBSZW1v
dmVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L01lc3NhZ2VzUmVwbGllc1N1cGVyY2xhc3NS
ZXBsaWVzLWV4cGVjdGVkLmg6IFJlbW92ZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXQvTWVz
c2FnZXNTdXBlcmNsYXNzLWV4cGVjdGVkLmg6IFJlbW92ZWQuCisgICAgICAgICogU2NyaXB0cy93
ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvdGVzdC1sZWdhY3kt
bWVzc2FnZXMuaW46IFJlbW92ZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXQvdGVzdC1sZWdh
Y3kubWVzc2FnZXMuaW46IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQv
dGVzdC1sZWdhY3ktbWVzc2FnZXMuaW4uCisgICAgICAgICogU2NyaXB0cy93ZWJraXQvdGVzdC1s
ZWdhY3lNZXNzYWdlUmVjZWl2ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6c2VuZCk6CisgICAgICAgIChNZXNzYWdl
czo6V2ViUGFnZTo6VGVzdE11bHRpcGxlQXR0cmlidXRlczo6c2VuZCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OmRpZFJlY2VpdmVXZWJQYWdlTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OmRpZFJlY2VpdmVTeW5jV2ViUGFnZU1lc3NhZ2UpOgorICAgICAgICAqIFNjcmlw
dHMvd2Via2l0L3Rlc3QtbGVnYWN5TWVzc2FnZXMuaDogQWRkZWQuCisgICAgICAgIChNZXNzYWdl
czo6V2ViUGFnZTo6bWVzc2FnZVJlY2VpdmVyTmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6V2Vi
UGFnZTo6TG9hZFVSTDo6bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFVS
TDo6TG9hZFVSTCk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFVSTDo6YXJndW1l
bnRzIGNvbnN0KToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkU29tZXRoaW5nOjpu
YW1lKToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkU29tZXRoaW5nOjpMb2FkU29t
ZXRoaW5nKToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkU29tZXRoaW5nOjphcmd1
bWVudHMgY29uc3QpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlRvdWNoRXZlbnQ6Om5h
bWUpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlRvdWNoRXZlbnQ6OlRvdWNoRXZlbnQp
OgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlRvdWNoRXZlbnQ6OmFyZ3VtZW50cyBjb25z
dCk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6QWRkRXZlbnQ6Om5hbWUpOgorICAgICAg
ICAoTWVzc2FnZXM6OldlYlBhZ2U6OkFkZEV2ZW50OjpBZGRFdmVudCk6CisgICAgICAgIChNZXNz
YWdlczo6V2ViUGFnZTo6QWRkRXZlbnQ6OmFyZ3VtZW50cyBjb25zdCk6CisgICAgICAgIChNZXNz
YWdlczo6V2ViUGFnZTo6TG9hZFNvbWV0aGluZ0Vsc2U6Om5hbWUpOgorICAgICAgICAoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkxvYWRTb21ldGhpbmdFbHNlOjpMb2FkU29tZXRoaW5nRWxzZSk6CisgICAg
ICAgIChNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFNvbWV0aGluZ0Vsc2U6OmFyZ3VtZW50cyBjb25z
dCk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVjZWl2ZVBvbGljeURlY2lzaW9u
OjpuYW1lKToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZWNlaXZlUG9saWN5RGVj
aXNpb246OkRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbik6CisgICAgICAgIChNZXNzYWdlczo6V2Vi
UGFnZTo6RGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uOjphcmd1bWVudHMgY29uc3QpOgorICAgICAg
ICAoTWVzc2FnZXM6OldlYlBhZ2U6OkNsb3NlOjpuYW1lKToKKyAgICAgICAgKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpDbG9zZTo6YXJndW1lbnRzIGNvbnN0KToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpQcmVmZXJlbmNlc0RpZENoYW5nZTo6bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6V2Vi
UGFnZTo6UHJlZmVyZW5jZXNEaWRDaGFuZ2U6OlByZWZlcmVuY2VzRGlkQ2hhbmdlKToKKyAgICAg
ICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpQcmVmZXJlbmNlc0RpZENoYW5nZTo6YXJndW1lbnRzIGNv
bnN0KToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZW5kRG91YmxlQW5kRmxvYXQ6Om5h
bWUpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlNlbmREb3VibGVBbmRGbG9hdDo6U2Vu
ZERvdWJsZUFuZEZsb2F0KToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZW5kRG91Ymxl
QW5kRmxvYXQ6OmFyZ3VtZW50cyBjb25zdCk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6
U2VuZEludHM6Om5hbWUpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlNlbmRJbnRzOjpT
ZW5kSW50cyk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6U2VuZEludHM6OmFyZ3VtZW50
cyBjb25zdCk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6Q3JlYXRlUGx1Z2luOjpuYW1l
KToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpDcmVhdGVQbHVnaW46OkNyZWF0ZVBsdWdp
bik6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6Q3JlYXRlUGx1Z2luOjphcmd1bWVudHMg
Y29uc3QpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlJ1bkphdmFTY3JpcHRBbGVydDo6
bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6UnVuSmF2YVNjcmlwdEFsZXJ0OjpS
dW5KYXZhU2NyaXB0QWxlcnQpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlJ1bkphdmFT
Y3JpcHRBbGVydDo6YXJndW1lbnRzIGNvbnN0KToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdl
OjpHZXRQbHVnaW5zOjpuYW1lKToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRQbHVn
aW5zOjpHZXRQbHVnaW5zKToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRQbHVnaW5z
Ojphcmd1bWVudHMgY29uc3QpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFBsdWdp
blByb2Nlc3NDb25uZWN0aW9uOjpuYW1lKToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpH
ZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24pOgor
ICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjph
cmd1bWVudHMgY29uc3QpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RNdWx0aXBs
ZUF0dHJpYnV0ZXM6Om5hbWUpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RNdWx0
aXBsZUF0dHJpYnV0ZXM6OmFyZ3VtZW50cyBjb25zdCk6CisgICAgICAgIChNZXNzYWdlczo6V2Vi
UGFnZTo6VGVzdFBhcmFtZXRlckF0dHJpYnV0ZXM6Om5hbWUpOgorICAgICAgICAoTWVzc2FnZXM6
OldlYlBhZ2U6OlRlc3RQYXJhbWV0ZXJBdHRyaWJ1dGVzOjpUZXN0UGFyYW1ldGVyQXR0cmlidXRl
cyk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6VGVzdFBhcmFtZXRlckF0dHJpYnV0ZXM6
OmFyZ3VtZW50cyBjb25zdCk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6VGVtcGxhdGVU
ZXN0OjpuYW1lKToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUZW1wbGF0ZVRlc3Q6OlRl
bXBsYXRlVGVzdCk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6VGVtcGxhdGVUZXN0Ojph
cmd1bWVudHMgY29uc3QpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFZpZGVvTGF5
ZXJJRDo6bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6U2V0VmlkZW9MYXllcklE
OjpTZXRWaWRlb0xheWVySUQpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFZpZGVv
TGF5ZXJJRDo6YXJndW1lbnRzIGNvbnN0KToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpE
aWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbjo6bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6
V2ViUGFnZTo6RGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OkRpZENyZWF0ZVdlYlByb2Nl
c3NDb25uZWN0aW9uKToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRDcmVhdGVXZWJQ
cm9jZXNzQ29ubmVjdGlvbjo6YXJndW1lbnRzIGNvbnN0KToKKyAgICAgICAgKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpJbnRlcnByZXRLZXlFdmVudDo6bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6V2Vi
UGFnZTo6SW50ZXJwcmV0S2V5RXZlbnQ6OkludGVycHJldEtleUV2ZW50KToKKyAgICAgICAgKE1l
c3NhZ2VzOjpXZWJQYWdlOjpJbnRlcnByZXRLZXlFdmVudDo6YXJndW1lbnRzIGNvbnN0KToKKyAg
ICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpEZXByZWNhdGVkT3BlcmF0aW9uOjpuYW1lKToKKyAg
ICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpEZXByZWNhdGVkT3BlcmF0aW9uOjpEZXByZWNhdGVk
T3BlcmF0aW9uKToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpEZXByZWNhdGVkT3BlcmF0
aW9uOjphcmd1bWVudHMgY29uc3QpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OkV4cGVy
aW1lbnRhbE9wZXJhdGlvbjo6bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6RXhw
ZXJpbWVudGFsT3BlcmF0aW9uOjpFeHBlcmltZW50YWxPcGVyYXRpb24pOgorICAgICAgICAoTWVz
c2FnZXM6OldlYlBhZ2U6OkV4cGVyaW1lbnRhbE9wZXJhdGlvbjo6YXJndW1lbnRzIGNvbnN0KToK
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0LWxlZ2FjeU1lc3NhZ2VzUmVwbGllcy5oOiBB
ZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0LW1lc3NhZ2VzLmluOiBSZW1vdmVk
LgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3Qtc3VwZXJjbGFzcy1tZXNzYWdlcy5pbjog
UmVtb3ZlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0LXN1cGVyY2xhc3MubWVzc2Fn
ZXMuaW46IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdC1zdXBl
cmNsYXNzLW1lc3NhZ2VzLmluLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3Qtc3VwZXJj
bGFzc01lc3NhZ2VSZWNlaXZlci5jcHA6IEFkZGVkLgorICAgICAgICAoTWVzc2FnZXM6OldlYlBh
Z2U6OlRlc3RBc3luY01lc3NhZ2U6OmNhbGxSZXBseSk6CisgICAgICAgIChNZXNzYWdlczo6V2Vi
UGFnZTo6VGVzdEFzeW5jTWVzc2FnZTo6Y2FuY2VsUmVwbHkpOgorICAgICAgICAoTWVzc2FnZXM6
OldlYlBhZ2U6OlRlc3RBc3luY01lc3NhZ2U6OnNlbmQpOgorICAgICAgICAoTWVzc2FnZXM6Oldl
YlBhZ2U6OlRlc3RBc3luY01lc3NhZ2VXaXRoTm9Bcmd1bWVudHM6OmNhbGxSZXBseSk6CisgICAg
ICAgIChNZXNzYWdlczo6V2ViUGFnZTo6VGVzdEFzeW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50czo6
Y2FuY2VsUmVwbHkpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RBc3luY01lc3Nh
Z2VXaXRoTm9Bcmd1bWVudHM6OnNlbmQpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlRl
c3RBc3luY01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHM6OmNhbGxSZXBseSk6CisgICAgICAg
IChNZXNzYWdlczo6V2ViUGFnZTo6VGVzdEFzeW5jTWVzc2FnZVdpdGhNdWx0aXBsZUFyZ3VtZW50
czo6Y2FuY2VsUmVwbHkpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RBc3luY01l
c3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHM6OnNlbmQpOgorICAgICAgICAoTWVzc2FnZXM6Oldl
YlBhZ2U6OlRlc3RTeW5jTWVzc2FnZTo6c2VuZCk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFn
ZTo6VGVzdFN5bmNocm9ub3VzTWVzc2FnZTo6c2VuZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGlkUmVj
ZWl2ZVN5bmNNZXNzYWdlKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0LXN1cGVyY2xh
c3NNZXNzYWdlcy5oOiBBZGRlZC4KKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjptZXNzYWdl
UmVjZWl2ZXJOYW1lKToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkVVJMOjpuYW1l
KToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkVVJMOjpMb2FkVVJMKToKKyAgICAg
ICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkVVJMOjphcmd1bWVudHMgY29uc3QpOgorICAgICAg
ICAoTWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RBc3luY01lc3NhZ2U6Om5hbWUpOgorICAgICAgICAo
TWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RBc3luY01lc3NhZ2U6OmFzeW5jTWVzc2FnZVJlcGx5TmFt
ZSk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6VGVzdEFzeW5jTWVzc2FnZTo6VGVzdEFz
eW5jTWVzc2FnZSk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6VGVzdEFzeW5jTWVzc2Fn
ZTo6YXJndW1lbnRzIGNvbnN0KToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0QXN5
bmNNZXNzYWdlV2l0aE5vQXJndW1lbnRzOjpuYW1lKToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpUZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJndW1lbnRzOjphc3luY01lc3NhZ2VSZXBseU5h
bWUpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RBc3luY01lc3NhZ2VXaXRoTm9B
cmd1bWVudHM6OmFyZ3VtZW50cyBjb25zdCk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6
VGVzdEFzeW5jTWVzc2FnZVdpdGhNdWx0aXBsZUFyZ3VtZW50czo6bmFtZSk6CisgICAgICAgIChN
ZXNzYWdlczo6V2ViUGFnZTo6VGVzdEFzeW5jTWVzc2FnZVdpdGhNdWx0aXBsZUFyZ3VtZW50czo6
YXN5bmNNZXNzYWdlUmVwbHlOYW1lKToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0
QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1lbnRzOjphcmd1bWVudHMgY29uc3QpOgorICAg
ICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RTeW5jTWVzc2FnZTo6bmFtZSk6CisgICAgICAg
IChNZXNzYWdlczo6V2ViUGFnZTo6VGVzdFN5bmNNZXNzYWdlOjpUZXN0U3luY01lc3NhZ2UpOgor
ICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RTeW5jTWVzc2FnZTo6YXJndW1lbnRzIGNv
bnN0KToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0U3luY2hyb25vdXNNZXNzYWdl
OjpuYW1lKToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0U3luY2hyb25vdXNNZXNz
YWdlOjpUZXN0U3luY2hyb25vdXNNZXNzYWdlKToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdl
OjpUZXN0U3luY2hyb25vdXNNZXNzYWdlOjphcmd1bWVudHMgY29uc3QpOgorICAgICAgICAqIFNj
cmlwdHMvd2Via2l0L3Rlc3Qtc3VwZXJjbGFzc01lc3NhZ2VzUmVwbGllcy5oOiBBZGRlZC4KKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0Lm1lc3NhZ2VzLmluOiBBZGRlZC4KKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdC90ZXN0TWVzc2FnZVJlY2VpdmVyLmNwcDogQWRkZWQuCisgICAgICAg
ICogU2NyaXB0cy93ZWJraXQvdGVzdE1lc3NhZ2VzLmg6IEFkZGVkLgorICAgICAgICAoTWVzc2Fn
ZXM6Ok5vbmU6Om1lc3NhZ2VSZWNlaXZlck5hbWUpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
L3Rlc3RNZXNzYWdlc1JlcGxpZXMuaDogQWRkZWQuCisgICAgICAgICogU2hhcmVkL0FwcGxlUGF5
L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Lmg6CisgICAgICAgICogU2hhcmVkL0FwcGxlUGF5
L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EubW06CisgICAgICAgIChXZWJL
aXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94
eSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5Ojp+V2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHkpOgorICAgICAgICAqIFNoYXJlZC9BdXhpbGlhcnlQcm9jZXNz
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6QXV4aWxpYXJ5UHJvY2Vzczo6YWRkTWVzc2FnZVJlY2Vp
dmVyKToKKyAgICAgICAgKFdlYktpdDo6QXV4aWxpYXJ5UHJvY2Vzczo6cmVtb3ZlTWVzc2FnZVJl
Y2VpdmVyKToKKyAgICAgICAgKFdlYktpdDo6QXV4aWxpYXJ5UHJvY2Vzczo6ZGlkUmVjZWl2ZUlu
dmFsaWRNZXNzYWdlKToKKyAgICAgICAgKiBTaGFyZWQvQXV4aWxpYXJ5UHJvY2Vzcy5oOgorICAg
ICAgICAoV2ViS2l0OjpBdXhpbGlhcnlQcm9jZXNzOjphZGRNZXNzYWdlUmVjZWl2ZXIpOgorICAg
ICAgICAoV2ViS2l0OjpBdXhpbGlhcnlQcm9jZXNzOjpyZW1vdmVNZXNzYWdlUmVjZWl2ZXIpOgor
ICAgICAgICAqIFNoYXJlZC9Db2NvYS9BdXhpbGlhcnlQcm9jZXNzQ29jb2EubW06CisgICAgICAg
IChXZWJLaXQ6OkF1eGlsaWFyeVByb2Nlc3M6OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZSk6Cisg
ICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV4aWxpYXJ5
UHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6QXV4aWxpYXJ5UHJvY2Vzc1Byb3h5
OjphZGRNZXNzYWdlUmVjZWl2ZXIpOgorICAgICAgICAoV2ViS2l0OjpBdXhpbGlhcnlQcm9jZXNz
UHJveHk6OnJlbW92ZU1lc3NhZ2VSZWNlaXZlcik6CisgICAgICAgIChXZWJLaXQ6OkF1eGlsaWFy
eVByb2Nlc3NQcm94eTo6bG9nSW52YWxpZE1lc3NhZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
dXhpbGlhcnlQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6QXV4aWxpYXJ5UHJvY2Vz
c1Byb3h5OjphZGRNZXNzYWdlUmVjZWl2ZXIpOgorICAgICAgICAoV2ViS2l0OjpBdXhpbGlhcnlQ
cm9jZXNzUHJveHk6OnJlbW92ZU1lc3NhZ2VSZWNlaXZlcik6CisgICAgICAgIChXZWJLaXQ6OkF1
eGlsaWFyeVByb2Nlc3NQcm94eTo6c2VuZCk6CisgICAgICAgIChXZWJLaXQ6OkF1eGlsaWFyeVBy
b2Nlc3NQcm94eTo6c2VuZFdpdGhBc3luY1JlcGx5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29j
b2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9D
b2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpwYXltZW50Q29vcmRpbmF0b3JBZGRNZXNzYWdlUmVjZWl2ZXIpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnBheW1lbnRDb29yZGluYXRvclJlbW92ZU1lc3NhZ2VS
ZWNlaXZlcik6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpHUFVQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVJbnZh
bGlkTWVzc2FnZSk6CisgICAgICAgICogVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkUmVjZWl2ZUludmFsaWRNZXNz
YWdlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6
CisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc1Byb3h5OjpkaWRSZWNlaXZlSW52YWxpZE1lc3Nh
Z2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAgICAg
ICogVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Om1l
c3NhZ2VOYW1lc1RvSWdub3JlV2hpbGVTdXNwZW5kZWQpOgorICAgICAgICAoV2ViS2l0OjpTdXNw
ZW5kZWRQYWdlUHJveHk6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2Fn
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjphZGRNZXNzYWdlUmVjZWl2ZXIp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cmVtb3ZlTWVzc2FnZVJlY2VpdmVy
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1By
b3h5OjpzaG91bGRTZW5kUGVuZGluZ01lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzUHJveHk6OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZSk6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlByb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3ND
b25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6R1BVUHJvY2Vzc0Nvbm5lY3Rpb246OmRp
ZFJlY2VpdmVJbnZhbGlkTWVzc2FnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvR1BVUHJv
Y2Vzc0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNw
ZWN0b3IuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSS5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24u
Y3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2Vp
dmVJbnZhbGlkTWVzc2FnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Q
cm9jZXNzQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NDb25u
ZWN0aW9uOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW06Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjp1cGRhdGVSZW5kZXJp
bmcpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKToKKwogMjAyMC0wNC0zMCAgSmlld2Vu
IFRhbiAgPGppZXdlbl90YW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJBdXRobl0gT3B0aW1p
emUgTG9jYWxBdXRoZW50aWNhdG9yCkluZGV4OiBTb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDI2
MDkzNSkKKysrIFNvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTExOSwxNDggKzExOSwxNDggQEAgbGlzdChBUFBFTkQgV2ViS2l0X1VOSUZJRURfU09VUkNFX0xJ
U1RfRgogKQogCiBzZXQoV2ViS2l0X01FU1NBR0VTX0lOX0ZJTEVTCi0gICAgR1BVUHJvY2Vzcy9H
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCi0gICAgR1BVUHJvY2Vzcy9HUFVQ
cm9jZXNzLm1lc3NhZ2VzLmluCisgICAgR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzCisgICAgR1BVUHJvY2Vzcy9HUFVQcm9jZXNzCiAKLSAgICBHUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5tZXNzYWdlcy5pbgorICAgIEdQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5CiAKLSAgICBHUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluCi0gICAgR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1Nlc3Npb25Qcm94eS5tZXNzYWdlcy5pbgotICAgIEdQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5Lm1lc3NhZ2VzLmluCi0gICAgR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5Lm1lc3NhZ2VzLmluCi0gICAgR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5tZXNzYWdlcy5pbgotICAg
IEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkubWVzc2FnZXMuaW4KLSAgICBHUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eS5tZXNzYWdlcy5pbgotICAgIEdQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkubWVzc2FnZXMuaW4KLSAgICBHUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5tZXNzYWdlcy5pbgotICAg
IEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkubWVzc2FnZXMu
aW4KLSAgICBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkubWVzc2FnZXMu
aW4KLSAgICBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLm1lc3Nh
Z2VzLmluCisgICAgR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdl
cgorICAgIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9TZXNzaW9uUHJveHkKKyAgICBHUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUNETUZhY3RvcnlQcm94eQorICAgIEdQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlQ0RNSW5zdGFuY2VQcm94eQorICAgIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uUHJveHkKKyAgICBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5Cisg
ICAgR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkKKyAgICBHUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5CisgICAgR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkKKyAgICBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlclByb3h5CisgICAgR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBs
YXllclByb3h5CisgICAgR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdl
cgogCi0gICAgR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubWVzc2FnZXMu
aW4KLSAgICBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5k
ZXJlci5tZXNzYWdlcy5pbgotICAgIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFT
dHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlci5tZXNzYWdlcy5pbgotICAgIEdQVVByb2Nlc3Mvd2Vi
cnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIubWVzc2FnZXMuaW4KLSAgICBHUFVQcm9jZXNzL3dlYnJ0
Yy9SZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlci5tZXNzYWdlcy5pbgotICAgIEdQVVByb2Nlc3Mv
d2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5tZXNzYWdlcy5pbgotICAgIEdQ
VVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIubWVz
c2FnZXMuaW4KKyAgICBHUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eQorICAg
IEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyCisg
ICAgR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJN
YW5hZ2VyCisgICAgR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlcgorICAgIEdQ
VVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyCisgICAgR1BVUHJvY2Vz
cy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyCisgICAgR1BVUHJvY2Vzcy93
ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcgogCi0gICAgTmV0d29y
a1Byb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLm1lc3NhZ2VzLmluCisgICAgTmV0d29y
a1Byb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyCiAKLSAgICBOZXR3b3JrUHJvY2Vzcy9J
bmRleGVkREIvV2ViSURCU2VydmVyLm1lc3NhZ2VzLmluCisgICAgTmV0d29ya1Byb2Nlc3MvSW5k
ZXhlZERCL1dlYklEQlNlcnZlcgogCi0gICAgTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KLSAgICBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29u
dGVudFJ1bGVMaXN0TWFuYWdlci5tZXNzYWdlcy5pbgotICAgIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLm1lc3NhZ2VzLmluCi0gICAgTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNl
TG9hZGVyLm1lc3NhZ2VzLmluCi0gICAgTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5u
ZWwubWVzc2FnZXMuaW4KLSAgICBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLm1l
c3NhZ2VzLmluCisgICAgTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MKKyAgICBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlcgorICAg
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzCisgICAgTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZGVyCisgICAgTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwK
KyAgICBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtCiAKLSAgICBOZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2subWVzc2FnZXMuaW4KLSAg
ICBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5tZXNz
YWdlcy5pbgotICAgIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCisgICAgTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrCisgICAgTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24KKyAgICBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbgogCi0gICAgTmV0d29ya1Byb2Nlc3Mv
V2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlclNldC5tZXNzYWdlcy5pbgorICAgIE5ldHdvcmtQcm9j
ZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXJTZXQKIAotICAgIE5ldHdvcmtQcm9jZXNzL2Nh
Y2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KKyAgICBOZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uCiAKLSAgICBOZXR3b3Jr
UHJvY2Vzcy93ZWJydGMvTmV0d29ya01ETlNSZWdpc3Rlci5tZXNzYWdlcy5pbgotICAgIE5ldHdv
cmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDTW9uaXRvci5tZXNzYWdlcy5pbgotICAgIE5ldHdv
cmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIubWVzc2FnZXMuaW4KLSAgICBOZXR3
b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1NvY2tldC5tZXNzYWdlcy5pbgorICAgIE5ldHdv
cmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrTUROU1JlZ2lzdGVyCisgICAgTmV0d29ya1Byb2Nlc3Mv
d2VicnRjL05ldHdvcmtSVENNb25pdG9yCisgICAgTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdv
cmtSVENQcm92aWRlcgorICAgIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDU29ja2V0
CiAKLSAgICBQbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5tZXNzYWdlcy5pbgot
ICAgIFBsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vzcy5tZXNzYWdlcy5pbgotICAgIFBsdWdpblBy
b2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW4KKyAgICBQbHVnaW5Qcm9jZXNz
L1BsdWdpbkNvbnRyb2xsZXJQcm94eQorICAgIFBsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vzcwor
ICAgIFBsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24KIAotICAgIFNoYXJlZC9BdXhp
bGlhcnlQcm9jZXNzLm1lc3NhZ2VzLmluCi0gICAgU2hhcmVkL1dlYkNvbm5lY3Rpb24ubWVzc2Fn
ZXMuaW4KKyAgICBTaGFyZWQvQXV4aWxpYXJ5UHJvY2VzcworICAgIFNoYXJlZC9XZWJDb25uZWN0
aW9uCiAKLSAgICBTaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyLm1l
c3NhZ2VzLmluCisgICAgU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdl
cgogCi0gICAgU2hhcmVkL1BsdWdpbnMvTlBPYmplY3RNZXNzYWdlUmVjZWl2ZXIubWVzc2FnZXMu
aW4KKyAgICBTaGFyZWQvUGx1Z2lucy9OUE9iamVjdE1lc3NhZ2VSZWNlaXZlcgogCi0gICAgVUlQ
cm9jZXNzL0RyYXdpbmdBcmVhUHJveHkubWVzc2FnZXMuaW4KLSAgICBVSVByb2Nlc3MvVmlzaXRl
ZExpbmtTdG9yZS5tZXNzYWdlcy5pbgotICAgIFVJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJv
eHkubWVzc2FnZXMuaW4KLSAgICBVSVByb2Nlc3MvV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eS5t
ZXNzYWdlcy5pbgotICAgIFVJUHJvY2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5tZXNz
YWdlcy5pbgotICAgIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KLSAgICBVSVBy
b2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5Lm1lc3NhZ2VzLmluCi0gICAgVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLm1lc3NhZ2VzLmluCi0gICAgVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5tZXNz
YWdlcy5pbgorICAgIFVJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5CisgICAgVUlQcm9jZXNzL1Zp
c2l0ZWRMaW5rU3RvcmUKKyAgICBVSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5CisgICAg
VUlQcm9jZXNzL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkKKyAgICBVSVByb2Nlc3MvV2ViR2Vv
bG9jYXRpb25NYW5hZ2VyUHJveHkKKyAgICBVSVByb2Nlc3MvV2ViUGFnZVByb3h5CisgICAgVUlQ
cm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eQorICAgIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbAor
ICAgIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkKIAotICAgIFVJUHJvY2Vzcy9BdXRvbWF0aW9u
L1dlYkF1dG9tYXRpb25TZXNzaW9uLm1lc3NhZ2VzLmluCisgICAgVUlQcm9jZXNzL0F1dG9tYXRp
b24vV2ViQXV0b21hdGlvblNlc3Npb24KIAotICAgIFVJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxv
YWRQcm94eS5tZXNzYWdlcy5pbgorICAgIFVJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94
eQogCi0gICAgVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KKyAgICBV
SVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eQogCi0gICAgVUlQcm9jZXNzL0luc3BlY3Rvci9S
ZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5tZXNzYWdlcy5pbgotICAgIFVJUHJvY2Vzcy9JbnNwZWN0
b3IvV2ViSW5zcGVjdG9yUHJveHkubWVzc2FnZXMuaW4KKyAgICBVSVByb2Nlc3MvSW5zcGVjdG9y
L1JlbW90ZVdlYkluc3BlY3RvclByb3h5CisgICAgVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNw
ZWN0b3JQcm94eQogCi0gICAgVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5t
ZXNzYWdlcy5pbgorICAgIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkKIAot
ICAgIFVJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgorICAg
IFVJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eQogCi0gICAgVUlQcm9jZXNzL1Vz
ZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Lm1lc3NhZ2VzLmluCisgICAg
VUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5CiAKLSAg
ICBXZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKyAgICBXZWJQcm9jZXNzL1dlYlBy
b2Nlc3MKIAotICAgIFdlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblBy
b3h5Lm1lc3NhZ2VzLmluCisgICAgV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25T
ZXNzaW9uUHJveHkKIAotICAgIFdlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJD
b25uZWN0aW9uVG9TZXJ2ZXIubWVzc2FnZXMuaW4KKyAgICBXZWJQcm9jZXNzL0RhdGFiYXNlcy9J
bmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRvU2VydmVyCiAKLSAgICBXZWJQcm9jZXNzL0Z1bGxT
Y3JlZW4vV2ViRnVsbFNjcmVlbk1hbmFnZXIubWVzc2FnZXMuaW4KKyAgICBXZWJQcm9jZXNzL0Z1
bGxTY3JlZW4vV2ViRnVsbFNjcmVlbk1hbmFnZXIKIAotICAgIFdlYlByb2Nlc3MvR1BVL0dQVVBy
b2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluCisgICAgV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vz
c0Nvbm5lY3Rpb24KIAotICAgIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQubWVzc2FnZXMuaW4KKyAgICBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kCiAKLSAgICBXZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclBy
aXZhdGVSZW1vdGUubWVzc2FnZXMuaW4KLSAgICBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVB
dWRpb0Rlc3RpbmF0aW9uUHJveHkubWVzc2FnZXMuaW4KLSAgICBXZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVBdWRpb1Nlc3Npb24ubWVzc2FnZXMuaW4KLSAgICBXZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24ubWVzc2FnZXMuaW4KLSAgICBXZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uLm1lc3NhZ2VzLmluCi0gICAgV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLm1lc3NhZ2VzLmluCisgICAgV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlCisgICAgV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5CisgICAgV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlQXVkaW9TZXNzaW9uCisgICAgV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uCisgICAgV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVn
YWN5Q0RNU2Vzc2lvbgorICAgIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVy
TWFuYWdlcgogCi0gICAgV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5tZXNz
YWdlcy5pbgotICAgIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXIubWVzc2FnZXMuaW4KKyAgICBXZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNz
CisgICAgV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcgogCi0g
ICAgV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIubWVzc2FnZXMu
aW4KKyAgICBXZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlcgogCi0g
ICAgV2ViUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yVUkubWVzc2FnZXMuaW4K
LSAgICBXZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3IubWVzc2FnZXMuaW4KLSAgICBX
ZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JJbnRlcnJ1cHREaXNwYXRjaGVyLm1lc3Nh
Z2VzLmluCi0gICAgV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUkubWVzc2FnZXMu
aW4KKyAgICBXZWJQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JVSQorICAgIFdl
YlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvcgorICAgIFdlYlByb2Nlc3MvSW5zcGVjdG9y
L1dlYkluc3BlY3RvckludGVycnVwdERpc3BhdGNoZXIKKyAgICBXZWJQcm9jZXNzL0luc3BlY3Rv
ci9XZWJJbnNwZWN0b3JVSQogCi0gICAgV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJNRE5T
UmVnaXN0ZXIubWVzc2FnZXMuaW4KLSAgICBXZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1dlYlJU
Q01vbml0b3IubWVzc2FnZXMuaW4KLSAgICBXZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1dlYlJU
Q1Jlc29sdmVyLm1lc3NhZ2VzLmluCi0gICAgV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJS
VENTb2NrZXQubWVzc2FnZXMuaW4KKyAgICBXZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1dlYk1E
TlNSZWdpc3RlcgorICAgIFdlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvV2ViUlRDTW9uaXRvcgor
ICAgIFdlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvV2ViUlRDUmVzb2x2ZXIKKyAgICBXZWJQcm9j
ZXNzL05ldHdvcmsvd2VicnRjL1dlYlJUQ1NvY2tldAogCi0gICAgV2ViUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgotICAgIFdlYlByb2Nlc3MvTmV0
d29yay9XZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbgotICAgIFdlYlByb2Nlc3MvTmV0d29y
ay9XZWJTb2NrZXRDaGFubmVsLm1lc3NhZ2VzLmluCi0gICAgV2ViUHJvY2Vzcy9OZXR3b3JrL1dl
YlNvY2tldFN0cmVhbS5tZXNzYWdlcy5pbgorICAgIFdlYlByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb24KKyAgICBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2Fk
ZXIKKyAgICBXZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbAorICAgIFdlYlByb2Nl
c3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0KIAotICAgIFdlYlByb2Nlc3MvTm90aWZpY2F0aW9u
cy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluCisgICAgV2ViUHJvY2Vzcy9Ob3Rp
ZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIKIAotICAgIFdlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgotICAgIFdlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4KLSAgICBXZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkubWVzc2FnZXMuaW4KKyAgICBXZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24KKyAgICBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyCisgICAgV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blByb3h5CiAKLSAgICBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLm1l
c3NhZ2VzLmluCi0gICAgV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uLm1lc3NhZ2VzLmluCisgICAgV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29u
bmVjdGlvbgorICAgIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbgogCi0gICAgV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xs
ZXIubWVzc2FnZXMuaW4KKyAgICBXZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50
Q29udHJvbGxlcgogCi0gICAgV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLm1lc3NhZ2Vz
LmluCi0gICAgV2ViUHJvY2Vzcy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5tZXNzYWdlcy5pbgot
ICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9WaXNpdGVkTGlua1RhYmxlQ29udHJvbGxlci5tZXNzYWdl
cy5pbgotICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisgICAgV2Vi
UHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhCisgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL0V2ZW50
RGlzcGF0Y2hlcgorICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9WaXNpdGVkTGlua1RhYmxlQ29udHJv
bGxlcgorICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlCiAKLSAgICBXZWJQcm9jZXNzL1dl
YlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAubWVzc2FnZXMuaW4KKyAgICBXZWJQcm9jZXNzL1dlYlN0
b3JhZ2UvU3RvcmFnZUFyZWFNYXAKICkKIAogIyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxMDM2NgpAQCAtNDA2LDIzICs0MDYsMzggQEAgZW5kaWYgKCkK
IAogIyBIZWxwZXIgbWFjcm8gd2hpY2ggd3JhcHMgdGhlIGdlbmVyYXRlLW1lc3NhZ2UtcmVjZWl2
ZXIucHkgc2NyaXB0CiAjICAgX291dHB1dF9zb3VyY2UgaXMgYSBsaXN0IG5hbWUgd2hpY2ggd2ls
bCBjb250YWluIGdlbmVyYXRlZCBzb3VyY2VzLihlZy4gV2ViS2l0X1NPVVJDRVMpCi0jICAgX2lu
cHV0X2ZpbGVzIGFyZSBtZXNzYWdlcy5pbiBmaWxlcyB0byBnZW5lcmF0ZS4KLW1hY3JvKEdFTkVS
QVRFX01FU1NBR0VfU09VUkNFUyBfb3V0cHV0X3NvdXJjZSBfaW5wdXRfZmlsZXMpCi0gICAgZm9y
ZWFjaCAoX2ZpbGUgJHtfaW5wdXRfZmlsZXN9KQorIyAgIF9pbnB1dHMgYXJlIG1lc3NhZ2VzLmlu
IGZpbGVzIHRvIGdlbmVyYXRlLgorbWFjcm8oR0VORVJBVEVfTUVTU0FHRV9TT1VSQ0VTIF9vdXRw
dXRfc291cmNlIF9pbnB1dHMpCisgICAgdW5zZXQoX2lucHV0X2ZpbGVzKQorICAgIHVuc2V0KF9v
dXRwdXRzKQorICAgIGZvcmVhY2ggKF9maWxlIElOIElURU1TICR7X2lucHV0c30pCiAgICAgICAg
IGdldF9maWxlbmFtZV9jb21wb25lbnQoX25hbWUgJHtfZmlsZX0gTkFNRV9XRSkKLSAgICAgICAg
YWRkX2N1c3RvbV9jb21tYW5kKAotICAgICAgICAgICAgT1VUUFVUICR7V2ViS2l0X0RFUklWRURf
U09VUkNFU19ESVJ9LyR7X25hbWV9TWVzc2FnZVJlY2VpdmVyLmNwcCAke1dlYktpdF9ERVJJVkVE
X1NPVVJDRVNfRElSfS8ke19uYW1lfU1lc3NhZ2VzLmggJHtXZWJLaXRfREVSSVZFRF9TT1VSQ0VT
X0RJUn0vJHtfbmFtZX1NZXNzYWdlc1JlcGxpZXMuaAotICAgICAgICAgICAgTUFJTl9ERVBFTkRF
TkNZICR7X2ZpbGV9Ci0gICAgICAgICAgICBERVBFTkRTICR7V0VCS0lUX0RJUn0vU2NyaXB0cy93
ZWJraXQvX19pbml0X18ucHkKLSAgICAgICAgICAgICAgICAgICAgJHtXRUJLSVRfRElSfS9TY3Jp
cHRzL3dlYmtpdC9tZXNzYWdlcy5weQotICAgICAgICAgICAgICAgICAgICAke1dFQktJVF9ESVJ9
L1NjcmlwdHMvd2Via2l0L21vZGVsLnB5Ci0gICAgICAgICAgICAgICAgICAgICR7V0VCS0lUX0RJ
Un0vU2NyaXB0cy93ZWJraXQvcGFyc2VyLnB5Ci0gICAgICAgICAgICBDT01NQU5EICR7UFlUSE9O
X0VYRUNVVEFCTEV9ICR7V0VCS0lUX0RJUn0vU2NyaXB0cy9nZW5lcmF0ZS1tZXNzYWdlLXJlY2Vp
dmVyLnB5ICR7X2ZpbGV9IC0taW1wbGVtZW50YXRpb24gJHtXZWJLaXRfREVSSVZFRF9TT1VSQ0VT
X0RJUn0vJHtfbmFtZX1NZXNzYWdlUmVjZWl2ZXIuY3BwIC0taGVhZGVyICR7V2ViS2l0X0RFUklW
RURfU09VUkNFU19ESVJ9LyR7X25hbWV9TWVzc2FnZXMuaCAtLXJlcGx5LWhlYWRlciAke1dlYktp
dF9ERVJJVkVEX1NPVVJDRVNfRElSfS8ke19uYW1lfU1lc3NhZ2VzUmVwbGllcy5oCi0gICAgICAg
ICAgICBXT1JLSU5HX0RJUkVDVE9SWSAke1dFQktJVF9ESVJ9Ci0gICAgICAgICAgICBWRVJCQVRJ
TSkKLQorICAgICAgICBsaXN0KEFQUEVORCBfaW5wdXRfZmlsZXMgJHtXRUJLSVRfRElSfS8ke19m
aWxlfS5tZXNzYWdlcy5pbikKKyAgICAgICAgbGlzdChBUFBFTkQgX291dHB1dHMKKyAgICAgICAg
ICAgICR7V2ViS2l0X0RFUklWRURfU09VUkNFU19ESVJ9LyR7X25hbWV9TWVzc2FnZVJlY2VpdmVy
LmNwcAorICAgICAgICAgICAgJHtXZWJLaXRfREVSSVZFRF9TT1VSQ0VTX0RJUn0vJHtfbmFtZX1N
ZXNzYWdlcy5oCisgICAgICAgICAgICAke1dlYktpdF9ERVJJVkVEX1NPVVJDRVNfRElSfS8ke19u
YW1lfU1lc3NhZ2VzUmVwbGllcy5oCisgICAgICAgICkKICAgICAgICAgbGlzdChBUFBFTkQgJHtf
b3V0cHV0X3NvdXJjZX0gJHtXZWJLaXRfREVSSVZFRF9TT1VSQ0VTX0RJUn0vJHtfbmFtZX1NZXNz
YWdlUmVjZWl2ZXIuY3BwKQogICAgIGVuZGZvcmVhY2ggKCkKKyAgICBsaXN0KEFQUEVORCAke19v
dXRwdXRfc291cmNlfSAke1dlYktpdF9ERVJJVkVEX1NPVVJDRVNfRElSfS9NZXNzYWdlTmFtZXMu
Y3BwKQorCisgICAgYWRkX2N1c3RvbV9jb21tYW5kKAorICAgICAgICBPVVRQVVQKKyAgICAgICAg
ICAgICR7V2ViS2l0X0RFUklWRURfU09VUkNFU19ESVJ9L01lc3NhZ2VOYW1lcy5jcHAKKyAgICAg
ICAgICAgICR7V2ViS2l0X0RFUklWRURfU09VUkNFU19ESVJ9L01lc3NhZ2VOYW1lcy5oCisgICAg
ICAgICAgICAke19vdXRwdXRzfQorICAgICAgICBNQUlOX0RFUEVOREVOQ1kgJHtXRUJLSVRfRElS
fS9TY3JpcHRzL2dlbmVyYXRlLW1lc3NhZ2UtcmVjZWl2ZXIucHkKKyAgICAgICAgREVQRU5EUwor
ICAgICAgICAgICAgJHtXRUJLSVRfRElSfS9TY3JpcHRzL3dlYmtpdC9fX2luaXRfXy5weQorICAg
ICAgICAgICAgJHtXRUJLSVRfRElSfS9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQorICAgICAg
ICAgICAgJHtXRUJLSVRfRElSfS9TY3JpcHRzL3dlYmtpdC9tb2RlbC5weQorICAgICAgICAgICAg
JHtXRUJLSVRfRElSfS9TY3JpcHRzL3dlYmtpdC9wYXJzZXIucHkKKyAgICAgICAgICAgICR7X2lu
cHV0X2ZpbGVzfQorICAgICAgICBDT01NQU5EICR7UFlUSE9OX0VYRUNVVEFCTEV9ICR7V0VCS0lU
X0RJUn0vU2NyaXB0cy9nZW5lcmF0ZS1tZXNzYWdlLXJlY2VpdmVyLnB5ICR7V0VCS0lUX0RJUn0g
JHtfaW5wdXRzfQorICAgICAgICBXT1JLSU5HX0RJUkVDVE9SWSAke1dlYktpdF9ERVJJVkVEX1NP
VVJDRVNfRElSfQorICAgICAgICBWRVJCQVRJTQorICAgICkKIGVuZG1hY3JvKCkKIEdFTkVSQVRF
X01FU1NBR0VfU09VUkNFUyhXZWJLaXRfREVSSVZFRF9TT1VSQ0VTICIke1dlYktpdF9NRVNTQUdF
U19JTl9GSUxFU30iKQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1
dC54Y2ZpbGVsaXN0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMt
b3V0cHV0LnhjZmlsZWxpc3QJKHJldmlzaW9uIDI2MDkzNSkKKysrIFNvdXJjZS9XZWJLaXQvRGVy
aXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QJKHdvcmtpbmcgY29weSkKQEAgLTYzLDYgKzYz
LDggQEAgJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYgogJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlTWVzc2FnZVJlY2VpdmVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYktpdDIvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlTWVzc2FnZXMuaAogJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlTWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJLaXQyL01lc3NhZ2VOYW1lcy5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJLaXQyL01lc3NhZ2VOYW1lcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViS2l0Mi9OUE9iamVjdE1lc3NhZ2VSZWNlaXZlck1lc3NhZ2VSZWNlaXZl
ci5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL05QT2Jq
ZWN0TWVzc2FnZVJlY2VpdmVyTWVzc2FnZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYktpdDIvTlBPYmplY3RNZXNzYWdlUmVjZWl2ZXJNZXNzYWdlc1JlcGxpZXMu
aApJbmRleDogU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQkocmV2aXNpb24gMjYwOTM1KQorKysg
U291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0xMTIs
MTM0ICsxMTIsMTM1IEBAIGVsc2UKIGVuZGlmCiAKIE1FU1NBR0VfUkVDRUlWRVJTID0gXAotCUF1
ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yUHJveHkgXAotICAgIEF1dGhlbnRpY2F0aW9uTWFu
YWdlciBcCi0gICAgQXV4aWxpYXJ5UHJvY2VzcyBcCi0gICAgQ2FjaGVTdG9yYWdlRW5naW5lQ29u
bmVjdGlvbiBcCi0gICAgRG93bmxvYWRQcm94eSBcCi0gICAgRHJhd2luZ0FyZWEgXAotICAgIERy
YXdpbmdBcmVhUHJveHkgXAotICAgIEVkaXRhYmxlSW1hZ2VDb250cm9sbGVyIFwKLSAgICBFdmVu
dERpc3BhdGNoZXIgXAotICAgIEdQVVByb2Nlc3MgXAotICAgIEdQVVByb2Nlc3NQcm94eSBcCi0g
ICAgR1BVUHJvY2Vzc0Nvbm5lY3Rpb24gXAotICAgIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mg
XAotICAgIExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlciBcCi0gICAgTGVnYWN5Q3VzdG9tUHJv
dG9jb2xNYW5hZ2VyUHJveHkgXAotICAgIExpYldlYlJUQ0NvZGVjcyBcCi0gICAgTGliV2ViUlRD
Q29kZWNzUHJveHkgXAotICAgIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZSBcCi0gICAgTlBPYmpl
Y3RNZXNzYWdlUmVjZWl2ZXIgXAotICAgIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzIFwK
LSAgICBOZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlciBcCi0gICAgTmV0d29ya01ETlNSZWdp
c3RlclwKLSAgICBOZXR3b3JrUHJvY2VzcyBcCi0gICAgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
IFwKLSAgICBOZXR3b3JrUHJvY2Vzc1Byb3h5IFwKLSAgICBOZXR3b3JrUlRDTW9uaXRvciBcCi0g
ICAgTmV0d29ya1JUQ1Byb3ZpZGVyIFwKLSAgICBOZXR3b3JrUlRDU29ja2V0IFwKLSAgICBOZXR3
b3JrUmVzb3VyY2VMb2FkZXIgXAotICAgIE5ldHdvcmtTb2NrZXRDaGFubmVsIFwKLSAgICBOZXR3
b3JrU29ja2V0U3RyZWFtIFwKLSAgICBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyIFwKLSAgICBQbGF5
YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkgXAotICAgIFBsdWdpbkNvbnRyb2xsZXJQcm94eSBcCi0g
ICAgUGx1Z2luUHJvY2VzcyBcCi0gICAgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24gXAotICAgIFBs
dWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlciBcCi0gICAgUGx1Z2luUHJvY2Vzc1Byb3h5IFwK
LSAgICBQbHVnaW5Qcm94eSBcCi0gICAgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIgXAot
ICAgIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eSBcCi0gICAgUmVtb3RlQXVkaW9TZXNzaW9u
IFwKLSAgICBSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eSBcCi0gICAgUmVtb3RlQXVkaW9NZWRpYVN0
cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyIFwKLSAgICBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlciBcCi0gICAgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eSBcCi0gICAg
UmVtb3RlQ0RNUHJveHkgXAotICAgIFJlbW90ZUNETUZhY3RvcnlQcm94eSBcCi0gICAgUmVtb3Rl
Q0RNSW5zdGFuY2VQcm94eSBcCi0gICAgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uIFwKLSAgICBS
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eSBcCi0gICAgUmVtb3RlTGVnYWN5Q0RNUHJveHkg
XAotICAgIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eSBcCi0gICAgUmVtb3RlTGVnYWN5Q0RN
U2Vzc2lvbiBcCi0gICAgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5IFwKLSAgICBSZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXIgXAotICAgIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5IFwK
LSAgICBSZW1vdGVNZWRpYVBsYXllclByb3h5IFwKLSAgICBSZW1vdGVNZWRpYVJlY29yZGVyIFwK
LSAgICBSZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlciBcCi0gICAgUmVtb3RlTWVkaWFSZXNvdXJj
ZU1hbmFnZXIgXAotICAgIFJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlciBcCi0gICAgUmVtb3RlTWVk
aWFTZXNzaW9uSGVscGVyUHJveHkgXAotICAgIFJlbW90ZU9iamVjdFJlZ2lzdHJ5IFwKLSAgICBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kIFwKLSAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkg
XAotICAgIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciBcCi0gICAgUmVtb3RlU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyTWFuYWdlciBcCi0gICAgUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0
b3IgXAotICAgIFJlbW90ZVdlYkluc3BlY3RvclByb3h5IFwKLSAgICBSZW1vdGVXZWJJbnNwZWN0
b3JVSSBcCi0gICAgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIFwKLSAgICBTZWNJdGVtU2hpbVBy
b3h5IFwKLSAgICBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrIFwKLSAgICBTbWFydE1hZ25pZmljYXRp
b25Db250cm9sbGVyIFwKLSAgICBTdG9yYWdlQXJlYU1hcCBcCi0gICAgU3RvcmFnZU1hbmFnZXJT
ZXQgXAotICAgIFRleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94eSBcCi0gICAgVXNlck1lZGlhQ2Fw
dHVyZU1hbmFnZXIgXAotICAgIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkgXAotICAgIFZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXIgXAotICAgIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eSBc
Ci0gICAgVmlld0dlc3R1cmVDb250cm9sbGVyIFwKLSAgICBWaWV3R2VzdHVyZUdlb21ldHJ5Q29s
bGVjdG9yIFwKLSAgICBWaWV3VXBkYXRlRGlzcGF0Y2hlciBcCi0gICAgVmlzaXRlZExpbmtTdG9y
ZSBcCi0gICAgVmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXIgXAotICAgIFdlYkF1dGhlbnRpY2F0
b3JDb29yZGluYXRvclByb3h5IFwKLSAgICBXZWJBdXRvbWF0aW9uU2Vzc2lvbiBcCi0gICAgV2Vi
QXV0b21hdGlvblNlc3Npb25Qcm94eSBcCi0gICAgV2ViQ29ubmVjdGlvbiBcCi0gICAgV2ViQ29v
a2llTWFuYWdlciBcCi0gICAgV2ViQ29va2llTWFuYWdlclByb3h5IFwKLSAgICBXZWJGdWxsU2Ny
ZWVuTWFuYWdlciBcCi0gICAgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eSBcCi0gICAgV2ViR2Vv
bG9jYXRpb25NYW5hZ2VyIFwKLSAgICBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eSBcCi0gICAg
V2ViSURCQ29ubmVjdGlvblRvU2VydmVyIFwKLSAgICBXZWJJREJTZXJ2ZXIgXAotICAgIFdlYklu
c3BlY3RvciBcCi0gICAgV2ViSW5zcGVjdG9ySW50ZXJydXB0RGlzcGF0Y2hlciBcCi0gICAgV2Vi
SW5zcGVjdG9yUHJveHkgXAotICAgIFdlYkluc3BlY3RvclVJIFwKLSAgICBXZWJNRE5TUmVnaXN0
ZXJcCi0gICAgV2ViTm90aWZpY2F0aW9uTWFuYWdlciBcCi0gICAgV2ViUGFnZSBcCi0gICAgV2Vi
UGFnZVByb3h5IFwKLSAgICBXZWJQYXN0ZWJvYXJkUHJveHkgXAotICAgIFdlYlBheW1lbnRDb29y
ZGluYXRvciBcCi0gICAgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkgXAotICAgIFdlYlByb2Nl
c3MgXAotICAgIFdlYlByb2Nlc3NDb25uZWN0aW9uIFwKLSAgICBXZWJQcm9jZXNzUG9vbCBcCi0g
ICAgV2ViUHJvY2Vzc1Byb3h5IFwKLSAgICBXZWJSVENNb25pdG9yIFwKLSAgICBXZWJSVENSZXNv
bHZlciBcCi0gICAgV2ViUlRDU29ja2V0IFwKLSAgICBXZWJSZXNvdXJjZUxvYWRlciBcCi0gICAg
V2ViU1dDbGllbnRDb25uZWN0aW9uIFwKLSAgICBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
biBcCi0gICAgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uIFwKLSAgICBXZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24gXAotICAgIFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIgXAot
ICAgIFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94eSBcCi0gICAgV2ViU29j
a2V0Q2hhbm5lbCBcCi0gICAgV2ViU29ja2V0U3RyZWFtIFwKLSAgICBXZWJVc2VyQ29udGVudENv
bnRyb2xsZXIgXAotICAgIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5IFwKKwlOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBcCisJTmV0d29ya1Byb2Nlc3Mv
SW5kZXhlZERCL1dlYklEQlNlcnZlciBcCisJTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NvbnRlbnRS
dWxlTGlzdE1hbmFnZXIgXAorCU5ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFn
ZXJTZXQgXAorCU5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rp
b24gXAorCU5ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9MZWdhY3lDdXN0b21Qcm90b2Nv
bE1hbmFnZXIgXAorCU5ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsIFwKKwlOZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbiBcCisJTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrIFwKKwlOZXR3b3Jr
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiBcCisJ
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbSBcCisJTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MgXAorCU5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlciBcCisJ
TmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtNRE5TUmVnaXN0ZXIgXAorCU5ldHdvcmtQcm9j
ZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDU29ja2V0IFwKKwlOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0
d29ya1JUQ1Byb3ZpZGVyIFwKKwlOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ01vbml0
b3IgXAorCU5ldHdvcmtQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlciBcCisJU2hhcmVk
L1BsdWdpbnMvTlBPYmplY3RNZXNzYWdlUmVjZWl2ZXIgXAorCVNoYXJlZC9BdXhpbGlhcnlQcm9j
ZXNzIFwKKwlTaGFyZWQvQVBJL0NvY29hL1JlbW90ZU9iamVjdFJlZ2lzdHJ5IFwKKwlTaGFyZWQv
QXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkgXAorCVNoYXJlZC9BdXRoZW50aWNh
dGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIgXAorCVNoYXJlZC9XZWJDb25uZWN0aW9uIFwKKwlV
SVByb2Nlc3MvV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eSBcCisJVUlQcm9jZXNzL1JlbW90ZUxh
eWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5IFwKKwlVSVByb2Nlc3MvR1BV
L0dQVVByb2Nlc3NQcm94eSBcCisJVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhl
bnRpY2F0b3JDb29yZGluYXRvclByb3h5IFwKKwlVSVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5
IFwKKwlVSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkg
XAorCVVJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yUHJveHkgXAorCVVJUHJvY2Vzcy9J
bnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHkgXAorCVVJUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblByb2Nlc3NQcm94eSBcCisJVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkgXAorCVVJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkgXAorCVVJUHJvY2Vzcy9OZXR3b3JrL0N1
c3RvbVByb3RvY29scy9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSBcCisJVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eSBcCisJVUlQcm9jZXNzL1Zpc2l0ZWRMaW5rU3RvcmUgXAorCVVJUHJv
Y2Vzcy9pb3MvV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlclByb3h5IFwKKwlVSVBy
b2Nlc3MvaW9zL0VkaXRhYmxlSW1hZ2VDb250cm9sbGVyIFwKKwlVSVByb2Nlc3MvaW9zL1NtYXJ0
TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIgXAorCVVJUHJvY2Vzcy9tYWMvU2VjSXRlbVNoaW1Qcm94
eSBcCisJVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5IFwKKwlVSVByb2Nlc3Mv
Q29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5IFwKKwlVSVByb2Nlc3MvQ29jb2EvVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5IFwKKwlVSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2Fw
dHVyZU1hbmFnZXJQcm94eSBcCisJVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eSBcCisJ
VUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlciBcCisJVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eSBcCisJVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24gXAorCVVJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbCBcCisJVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFBy
b3h5IFwKKwlVSVByb2Nlc3MvTWVkaWEvQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3JQcm94
eSBcCisJV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQkNvbm5lY3Rpb25Ub1Nl
cnZlciBcCisJV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24gXAorCVdlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQgXAorCVdlYlByb2Nlc3MvR1BV
L3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MgXAorCVdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXIgXAorCVdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZSBcCisJV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uIFwKKwlXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uIFwKKwlX
ZWJQcm9jZXNzL0dQVS9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyIFwKKwlXZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIgXAorCVdlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eSBcCisJV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlQXVkaW9TZXNzaW9uIFwKKwlXZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFn
ZUFyZWFNYXAgXAorCVdlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyIFwKKwlXZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JJbnRlcnJ1cHREaXNwYXRj
aGVyIFwKKwlXZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSSBcCisJV2ViUHJvY2Vz
cy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yIFwKKwlXZWJQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVX
ZWJJbnNwZWN0b3JVSSBcCisJV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0
aW9uTWFuYWdlciBcCisJV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5IFwKKwlXZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24gXAorCVdlYlByb2Nlc3MvTmV0d29y
ay9XZWJTb2NrZXRDaGFubmVsIFwKKwlXZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uIFwKKwlXZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0U3RyZWFtIFwKKwlXZWJQ
cm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIgXAorCVdlYlByb2Nlc3MvTmV0d29yay93
ZWJydGMvV2ViUlRDU29ja2V0IFwKKwlXZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1dlYlJUQ01v
bml0b3IgXAorCVdlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvV2ViTUROU1JlZ2lzdGVyIFwKKwlX
ZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1dlYlJUQ1Jlc29sdmVyIFwKKwlXZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIgXAorCVdlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiBcCisJV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbiBcCisJV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
IFwKKwlXZWJQcm9jZXNzL2NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXIgXAorCVdlYlByb2Nl
c3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIgXAorCVdlYlByb2Nlc3MvY29jb2EvVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlciBcCisJV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2Nh
dGlvbk1hbmFnZXIgXAorCVdlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lv
blByb3h5IFwKKwlXZWJQcm9jZXNzL0Z1bGxTY3JlZW4vV2ViRnVsbFNjcmVlbk1hbmFnZXIgXAor
CVdlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yIFwKKwlXZWJQcm9jZXNz
L05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlciBcCisJV2ViUHJvY2Vzcy9XZWJQ
YWdlL0V2ZW50RGlzcGF0Y2hlciBcCisJV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJl
ZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvciBcCisJV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdH
ZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IgXAorCVdlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJl
YSBcCisJV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UgXAorCVdlYlByb2Nlc3MvV2ViUGFnZS9W
aXNpdGVkTGlua1RhYmxlQ29udHJvbGxlciBcCisJV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1Rl
eHRDaGVja2luZ0NvbnRyb2xsZXJQcm94eSBcCisJV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdVcGRh
dGVEaXNwYXRjaGVyIFwKKwlQbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uIFwKKwlQ
bHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eSBcCisJUGx1Z2luUHJvY2Vzcy9QbHVn
aW5Qcm9jZXNzIFwKKwlHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgXAorCUdQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5IFwKKwlHUFVQcm9j
ZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eSBcCisJR1BVUHJvY2Vzcy93ZWJydGMvUmVt
b3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlciBcCisJR1BVUHJvY2Vzcy93ZWJydGMv
UmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyIFwKKwlHUFVQcm9jZXNz
L3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlciBcCisJR1BVUHJvY2Vzcy93ZWJydGMv
UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIFwKKwlHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1v
dGVNZWRpYVJlY29yZGVyIFwKKwlHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlciBcCisJR1BVUHJvY2Vzcy9HUFVQcm9jZXNzIFwKKwlHUFVQcm9jZXNz
L21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eSBcCisJR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1hbmFnZXIgXAorCUdQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
TGVnYWN5Q0RNRmFjdG9yeVByb3h5IFwKKwlHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvU2Vz
c2lvblByb3h5IFwKKwlHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblBy
b3h5IFwKKwlHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5IFwKKwlHUFVQcm9jZXNzL21l
ZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eSBcCisJR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVNZWRpYVBsYXllclByb3h5IFwKKwlHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUZh
Y3RvcnlQcm94eSBcCisJR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdl
ciBcCisJR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5IFwKKwlHUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5IFwKKwlHUFVQcm9jZXNzL21lZGlhL1JlbW90
ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5IFwKKwlHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlv
RGVzdGluYXRpb25NYW5hZ2VyIFwKICMKIAogU0NSSVBUUyA9IFwKQEAgLTI1NSwxNSArMjU2LDE0
IEBAIEhFQURFUl9GTEFHUyA9ICQoc2hlbGwgZWNobyAkKEJVSUxUX1BST0QKIAogLlBIT05ZIDog
YWxsCiAKLWFsbCA6IFwKLSAgICAkKE1FU1NBR0VfUkVDRUlWRVJTOiU9JU1lc3NhZ2VSZWNlaXZl
ci5jcHApIFwKLSAgICAkKE1FU1NBR0VfUkVDRUlWRVJTOiU9JU1lc3NhZ2VzLmgpIFwKLSAgICAk
KE1FU1NBR0VfUkVDRUlWRVJTOiU9JU1lc3NhZ2VzUmVwbGllcy5oKSBcCithbGwgOiBNZXNzYWdl
TmFtZXMuaCBNZXNzYWdlTmFtZXMuY3BwIFwKKyAgICAkKGFkZHN1ZmZpeCBNZXNzYWdlUmVjZWl2
ZXIuY3BwLCQobm90ZGlyICQoTUVTU0FHRV9SRUNFSVZFUlMpKSkgXAorICAgICQoYWRkc3VmZml4
IE1lc3NhZ2VzLmgsJChub3RkaXIgJChNRVNTQUdFX1JFQ0VJVkVSUykpKSBcCisgICAgJChhZGRz
dWZmaXggTWVzc2FnZXNSZXBsaWVzLmgsJChub3RkaXIgJChNRVNTQUdFX1JFQ0VJVkVSUykpKSBc
CiAjCiAKLSVNZXNzYWdlUmVjZWl2ZXIuY3BwICVNZXNzYWdlcy5oICVNZXNzYWdlc1JlcGxpZXMu
aCA6ICUubWVzc2FnZXMuaW4gJChTQ1JJUFRTKQotCUBlY2hvIEdlbmVyYXRpbmcgbWVzc2FnZSBy
ZWNlaXZlciBmb3IgJCouLi4KLQlAcHl0aG9uICQoV2ViS2l0MikvU2NyaXB0cy9nZW5lcmF0ZS1t
ZXNzYWdlLXJlY2VpdmVyLnB5ICQ8IC0taW1wbGVtZW50YXRpb24gJCpNZXNzYWdlUmVjZWl2ZXIu
Y3BwIC0taGVhZGVyICQqTWVzc2FnZXMuaCAtLXJlcGx5LWhlYWRlciAkKk1lc3NhZ2VzUmVwbGll
cy5oCiskKGFkZHN1ZmZpeCBNZXNzYWdlUmVjZWl2ZXIuY3BwLCQobm90ZGlyICQoTUVTU0FHRV9S
RUNFSVZFUlMpKSkgJChhZGRzdWZpeCBNZXNzYWdlcy5oLCQobm90ZGlyICQoTUVTU0FHRV9SRUNF
SVZFUlMpKSkgJChhZGRzdWZmaXggTWVzc2FnZXNSZXBsaWVzLmgsJChub3RkaXIgJChNRVNTQUdF
X1JFQ0VJVkVSUykpKSBNZXNzYWdlTmFtZXMuaCBNZXNzYWdlTmFtZXMuY3BwOiAkKGFkZHN1ZmZp
eCAubWVzc2FnZXMuaW4sJChNRVNTQUdFX1JFQ0VJVkVSUykpICQoU0NSSVBUUykKKwlAcHl0aG9u
ICQoV2ViS2l0MikvU2NyaXB0cy9nZW5lcmF0ZS1tZXNzYWdlLXJlY2VpdmVyLnB5ICQoV2ViS2l0
MikgJChNRVNTQUdFX1JFQ0VJVkVSUykKIAogVEVYVF9QUkVQUk9DRVNTT1JfRkxBR1M9LUUgLVAg
LXcKIApJbmRleDogU291cmNlL1dlYktpdC9QbGF0Zm9ybUdUSy5jbWFrZQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtR1RLLmNtYWtlCShyZXZpc2lvbiAyNjA5MzUpCisrKyBT
b3VyY2UvV2ViS2l0L1BsYXRmb3JtR1RLLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC00Myw5ICs0
Myw5IEBAIGlmIChOT1QgVVNFX0dUSzQpCiAgICAgICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9WaWV3
R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmNwcAogICAgICkKICAgICBsaXN0KEFQUEVORCBXZWJL
aXRfTUVTU0FHRVNfSU5fRklMRVMKLSAgICAgICAgVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJv
bGxlci5tZXNzYWdlcy5pbgorICAgICAgICBVSVByb2Nlc3MvVmlld0dlc3R1cmVDb250cm9sbGVy
CiAKLSAgICAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0
b3IubWVzc2FnZXMuaW4KKyAgICAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2Vv
bWV0cnlDb2xsZWN0b3IKICAgICApCiBlbmRpZiAoKQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1Nv
dXJjZXNDb2NvYS50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2Eu
dHh0CShyZXZpc2lvbiAyNjA5MzUpCisrKyBTb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQJ
KHdvcmtpbmcgY29weSkKQEAgLTY1Niw2ICs2NTYsNyBAQCBHUFVQcm9jZXNzUHJveHlNZXNzYWdl
UmVjZWl2ZXIuY3BwCiBHUFVQcm9jZXNzTWVzc2FnZVJlY2VpdmVyLmNwcAogTGliV2ViUlRDQ29k
ZWNzUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiBMaWJXZWJSVENDb2RlY3NNZXNzYWdlUmVjZWl2
ZXIuY3BwCitNZXNzYWdlTmFtZXMuY3BwCiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlck1l
c3NhZ2VSZWNlaXZlci5jcHAKIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eU1lc3NhZ2VSZWNl
aXZlci5jcHAKIFJlbW90ZUF1ZGlvU2Vzc2lvbk1lc3NhZ2VSZWNlaXZlci5jcHAKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5jcHAJKHJldmlzaW9uIDI2MDkzNSkKKysrIFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9H
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE2LDggKzEx
Niw4IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBMb2dnZXImIGxvZ2dlcigpIGZpbmFsIHsg
cmV0dXJuIG1fcHJvY2Vzcy5sb2dnZXIoKTsgfQotICAgIHZvaWQgYWRkTWVzc2FnZVJlY2VpdmVy
KElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIElQQzo6TWVzc2FnZVJl
Y2VpdmVyJiByZWNlaXZlcikgZmluYWwgeyB9Ci0gICAgdm9pZCByZW1vdmVNZXNzYWdlUmVjZWl2
ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSkgZmluYWwgeyB9Cisg
ICAgdm9pZCBhZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpSZWNlaXZlck5hbWUsIElQQzo6TWVzc2Fn
ZVJlY2VpdmVyJikgZmluYWwgeyB9CisgICAgdm9pZCByZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBD
OjpSZWNlaXZlck5hbWUgbWVzc2FnZVJlY2VpdmVyTmFtZSkgZmluYWwgeyB9CiAgICAgSVBDOjpD
b25uZWN0aW9uJiBjb25uZWN0aW9uKCkgZmluYWwgeyByZXR1cm4gbV9wcm9jZXNzLmNvbm5lY3Rp
b24oKTsgfQogICAgIGJvb2wgd2lsbFN0YXJ0Q2FwdHVyZShDYXB0dXJlRGV2aWNlOjpEZXZpY2VU
eXBlIHR5cGUpIGNvbnN0IGZpbmFsCiAgICAgewpAQCAtMTg3LDkgKzE4Nyw5IEBAIExvZ2dlciYg
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6bG9nZ2UKICAgICByZXR1cm4gKm1fbG9nZ2VyOwog
fQogCi12b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVJbnZhbGlkTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1l
c3NhZ2VSZWNlaXZlck5hbWUsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lKQordm9p
ZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6Ok1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lKQog
ewotICAgIFdURkxvZ0Fsd2F5cygiUmVjZWl2ZWQgYW4gaW52YWxpZCBtZXNzYWdlIFwiJXMuJXNc
IiBmcm9tIHRoZSB3ZWIgcHJvY2Vzcy5cbiIsIG1lc3NhZ2VSZWNlaXZlck5hbWUudG9TdHJpbmco
KS5kYXRhKCksIG1lc3NhZ2VOYW1lLnRvU3RyaW5nKCkuZGF0YSgpKTsKKyAgICBXVEZMb2dBbHdh
eXMoIlJlY2VpdmVkIGFuIGludmFsaWQgbWVzc2FnZSBcIiVzXCIgZnJvbSB0aGUgd2ViIHByb2Nl
c3MuXG4iLCBkZXNjcmlwdGlvbihtZXNzYWdlTmFtZSkpOwogICAgIENSQVNIKCk7CiB9CiAKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuaAkocmV2aXNpb24gMjYwOTM1KQorKysgU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAkod29ya2luZyBjb3B5KQpAQCAtMTQ0LDcgKzE0
NCw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBJUEM6OkNvbm5lY3Rpb246OkNsaWVudAogICAgIHZv
aWQgZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZl
SW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVz
c2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUpIGZpbmFs
OworICAgIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQ
Qzo6TWVzc2FnZU5hbWUpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlU3lu
Y01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRy
PElQQzo6RW5jb2Rlcj4mKSBmaW5hbDsKIApJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5j
cHAJKHJldmlzaW9uIDI2MDkzNSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjQsNyAr
MjY0LDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkUgogICAgICAg
ICByZXR1cm4gcGF5bWVudENvb3JkaW5hdG9yKCkuZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlv
biwgZGVjb2Rlcik7CiAjZW5kaWYKIAotICAgIFdURkxvZ0Fsd2F5cygiVW5oYW5kbGVkIG5ldHdv
cmsgcHJvY2VzcyBtZXNzYWdlICclczolcyciLCBkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUo
KS50b1N0cmluZygpLmRhdGEoKSwgZGVjb2Rlci5tZXNzYWdlTmFtZSgpLnRvU3RyaW5nKCkuZGF0
YSgpKTsKKyAgICBXVEZMb2dBbHdheXMoIlVuaGFuZGxlZCBuZXR3b3JrIHByb2Nlc3MgbWVzc2Fn
ZSAnJXMnIiwgZGVzY3JpcHRpb24oZGVjb2Rlci5tZXNzYWdlTmFtZSgpKSk7CiAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiB9CiAKQEAgLTMwNyw3ICszMDcsNyBAQCB2b2lkIE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSCiAgICAgICAgIHJldHVybiBwYXltZW50Q29vcmRpbmF0
b3IoKS5kaWRSZWNlaXZlU3luY01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHkpOwog
I2VuZGlmCiAKLSAgICBXVEZMb2dBbHdheXMoIlVuaGFuZGxlZCBuZXR3b3JrIHByb2Nlc3MgbWVz
c2FnZSAnJXM6JXMnIiwgZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkudG9TdHJpbmcoKS5k
YXRhKCksIGRlY29kZXIubWVzc2FnZU5hbWUoKS50b1N0cmluZygpLmRhdGEoKSk7CisgICAgV1RG
TG9nQWx3YXlzKCJVbmhhbmRsZWQgbmV0d29yayBwcm9jZXNzIG1lc3NhZ2UgJyVzJyIsIGRlc2Ny
aXB0aW9uKGRlY29kZXIubWVzc2FnZU5hbWUoKSkpOwogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogfQogCkBAIC0zNTYsOSArMzU2LDkgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6ZGlkQwogI2VuZGlmCiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OlN0cmlu
Z1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNz
YWdlTmFtZSkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVJ
bnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VOYW1lIG1lc3NhZ2VO
YW1lKQogewotICAgIFJFTEVBU0VfTE9HX0ZBVUxUKElQQywgIlJlY2VpdmVkIGFuIGludmFsaWQg
bWVzc2FnZSAnJSIgUFVCTElDX0xPR19TVFJJTkcgIjo6JSIgUFVCTElDX0xPR19TVFJJTkcgIicg
ZnJvbSBXZWJDb250ZW50IHByb2Nlc3MgJSIgUFJJdTY0ICIsIHJlcXVlc3RpbmcgZm9yIGl0IHRv
IGJlIHRlcm1pbmF0ZWQuIiwgbWVzc2FnZVJlY2VpdmVyTmFtZS50b1N0cmluZygpLmRhdGEoKSwg
bWVzc2FnZU5hbWUudG9TdHJpbmcoKS5kYXRhKCksIG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIudG9V
SW50NjQoKSk7CisgICAgUkVMRUFTRV9MT0dfRkFVTFQoSVBDLCAiUmVjZWl2ZWQgYW4gaW52YWxp
ZCBtZXNzYWdlICclIiBQVUJMSUNfTE9HX1NUUklORyAiJyBmcm9tIFdlYkNvbnRlbnQgcHJvY2Vz
cyAlIiBQUkl1NjQgIiwgcmVxdWVzdGluZyBmb3IgaXQgdG8gYmUgdGVybWluYXRlZC4iLCBkZXNj
cmlwdGlvbihtZXNzYWdlTmFtZSksIG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIudG9VSW50NjQoKSk7
CiAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChN
ZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6VGVybWluYXRlV2ViUHJvY2VzcyhtX3dlYlBy
b2Nlc3NJZGVudGlmaWVyKSwgMCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgJ
KHJldmlzaW9uIDI2MDkzNSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAkod29ya2luZyBjb3B5KQpAQCAtMTg2LDcgKzE4Niw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
LCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpF
bmNvZGVyPiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJikg
b3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpTdHJp
bmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZUlu
dmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZU5hbWUpIG92ZXJyaWRl
OwogCiAgICAgLy8gTWVzc2FnZSBoYW5kbGVycy4KICAgICB2b2lkIGRpZFJlY2VpdmVOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNv
ZGVyJik7CkBAIC0zMjYsOCArMzI2LDYgQEAgcHJpdmF0ZToKICAgICBjb25zdCBTdHJpbmcmIHBh
eW1lbnRDb29yZGluYXRvclNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcihjb25zdCBX
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYpIGZpbmFsOwogICAgIGNvbnN0IFN0cmluZyYgcGF5
bWVudENvb3JkaW5hdG9yU291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyKGNvbnN0
IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JikgZmluYWw7CiAgICAgc3RkOjp1bmlxdWVfcHRy
PFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyPiBwYXltZW50Q29vcmRpbmF0b3JBdXRob3Jp
emF0aW9uUHJlc2VudGVyKFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JiwgUEtQYXltZW50UmVx
dWVzdCAqKSBmaW5hbDsKLSAgICB2b2lkIHBheW1lbnRDb29yZGluYXRvckFkZE1lc3NhZ2VSZWNl
aXZlcihXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYsIGNvbnN0IElQQzo6U3RyaW5nUmVmZXJl
bmNlJiwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImKSBmaW5hbDsKLSAgICB2b2lkIHBheW1lbnRDb29y
ZGluYXRvclJlbW92ZU1lc3NhZ2VSZWNlaXZlcihXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYs
IGNvbnN0IElQQzo6U3RyaW5nUmVmZXJlbmNlJikgZmluYWw7CiAjZW5kaWYKIAogICAgIFJlZjxJ
UEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCShyZXZpc2lvbiAyNjA5MzUpCisrKyBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjE0LDcgKzIxNCw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRpZFJlY2VpdmVN
ZXNzYWdlKEkKIHsKICAgICBBU1NFUlQocGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKSA9PSAmY29u
bmVjdGlvbik7CiAgICAgaWYgKHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkgIT0gJmNvbm5lY3Rp
b24pIHsKLSAgICAgICAgV1RGTG9nQWx3YXlzKCJJZ25vcmVkIG1lc3NhZ2UgJyVzOiVzJyBiZWNh
dXNlIGl0IGRpZCBub3QgY29tZSBmcm9tIHRoZSBVSVByb2Nlc3MgKGRlc3RpbmF0aW9uOiAlIiBQ
Ukl1NjQgIikiLCBkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKS50b1N0cmluZygpLmRhdGEo
KSwgZGVjb2Rlci5tZXNzYWdlTmFtZSgpLnRvU3RyaW5nKCkuZGF0YSgpLCBkZWNvZGVyLmRlc3Rp
bmF0aW9uSUQoKSk7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiSWdub3JlZCBtZXNzYWdlICclcycg
YmVjYXVzZSBpdCBkaWQgbm90IGNvbWUgZnJvbSB0aGUgVUlQcm9jZXNzIChkZXN0aW5hdGlvbjog
JSIgUFJJdTY0ICIpIiwgZGVzY3JpcHRpb24oZGVjb2Rlci5tZXNzYWdlTmFtZSgpKSwgZGVjb2Rl
ci5kZXN0aW5hdGlvbklEKCkpOwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KQEAgLTI0MSw3ICsyNDEsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNz
OjpkaWRSZWNlaXZlU3luY01lc3NhCiB7CiAgICAgQVNTRVJUKHBhcmVudFByb2Nlc3NDb25uZWN0
aW9uKCkgPT0gJmNvbm5lY3Rpb24pOwogICAgIGlmIChwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigp
ICE9ICZjb25uZWN0aW9uKSB7Ci0gICAgICAgIFdURkxvZ0Fsd2F5cygiSWdub3JlZCBtZXNzYWdl
ICclczolcycgYmVjYXVzZSBpdCBkaWQgbm90IGNvbWUgZnJvbSB0aGUgVUlQcm9jZXNzIChkZXN0
aW5hdGlvbjogJSIgUFJJdTY0ICIpIiwgZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkudG9T
dHJpbmcoKS5kYXRhKCksIGRlY29kZXIubWVzc2FnZU5hbWUoKS50b1N0cmluZygpLmRhdGEoKSwg
ZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpOworICAgICAgICBXVEZMb2dBbHdheXMoIklnbm9yZWQg
bWVzc2FnZSAnJXMnIGJlY2F1c2UgaXQgZGlkIG5vdCBjb21lIGZyb20gdGhlIFVJUHJvY2VzcyAo
ZGVzdGluYXRpb246ICUiIFBSSXU2NCAiKSIsIGRlc2NyaXB0aW9uKGRlY29kZXIubWVzc2FnZU5h
bWUoKSksIGRlY29kZXIuZGVzdGluYXRpb25JRCgpKTsKICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2lvcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc0lPUy5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzc0lPUy5tbQkocmV2aXNpb24gMjYwOTM1KQorKysgU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9pb3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NJT1MubW0JKHdv
cmtpbmcgY29weSkKQEAgLTg1LDE0ICs4NSw2IEBAIHN0ZDo6dW5pcXVlX3B0cjxQYXltZW50QXV0
aG9yaXphdGlvblByZXMKICAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXltZW50QXV0aG9yaXphdGlv
bkNvbnRyb2xsZXI+KGNvb3JkaW5hdG9yLCByZXF1ZXN0KTsKIH0KIAotdm9pZCBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6cGF5bWVudENvb3JkaW5hdG9yQWRkTWVzc2FnZVJlY2VpdmVy
KFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JiwgY29uc3QgSVBDOjpTdHJpbmdSZWZlcmVuY2Um
LCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYpCi17Ci19Ci0KLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OnBheW1lbnRDb29yZGluYXRvclJlbW92ZU1lc3NhZ2VSZWNlaXZlcihXZWJQ
YXltZW50Q29vcmRpbmF0b3JQcm94eSYsIGNvbnN0IElQQzo6U3RyaW5nUmVmZXJlbmNlJikKLXsK
LX0KLQogI2VuZGlmIC8vIEVOQUJMRShBUFBMRV9QQVlfUkVNT1RFX1VJKQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24u
Y3BwCShyZXZpc2lvbiAyNjA5MzUpCisrKyBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25u
ZWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsMjEgKzU0LDE3IEBAIGNvbnN0IHNpemVf
dCBtYXhQZW5kaW5nSW5jb21pbmdNZXNzYWdlc0sKIHN0ZDo6YXRvbWljPHVuc2lnbmVkPiBVbmJv
dW5kZWRTeW5jaHJvbm91c0lQQ1Njb3BlOjp1bmJvdW5kZWRTeW5jaHJvbm91c0lQQ0NvdW50ID0g
MDsKIAogc3RydWN0IENvbm5lY3Rpb246OldhaXRGb3JNZXNzYWdlU3RhdGUgewotICAgIFdhaXRG
b3JNZXNzYWdlU3RhdGUoU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIFN0cmlu
Z1JlZmVyZW5jZSBtZXNzYWdlTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgT3B0aW9uU2V0
PFdhaXRGb3JPcHRpb24+IHdhaXRGb3JPcHRpb25zKQotICAgICAgICA6IG1lc3NhZ2VSZWNlaXZl
ck5hbWUobWVzc2FnZVJlY2VpdmVyTmFtZSkKLSAgICAgICAgLCBtZXNzYWdlTmFtZShtZXNzYWdl
TmFtZSkKKyAgICBXYWl0Rm9yTWVzc2FnZVN0YXRlKE1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lLCB1
aW50NjRfdCBkZXN0aW5hdGlvbklELCBPcHRpb25TZXQ8V2FpdEZvck9wdGlvbj4gd2FpdEZvck9w
dGlvbnMpCisgICAgICAgIDogbWVzc2FnZU5hbWUobWVzc2FnZU5hbWUpCiAgICAgICAgICwgZGVz
dGluYXRpb25JRChkZXN0aW5hdGlvbklEKQogICAgICAgICAsIHdhaXRGb3JPcHRpb25zKHdhaXRG
b3JPcHRpb25zKQogICAgIHsKICAgICB9CiAKLSAgICBTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJl
Y2VpdmVyTmFtZTsKLSAgICBTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWU7CisgICAgTWVzc2Fn
ZU5hbWUgbWVzc2FnZU5hbWU7CiAgICAgdWludDY0X3QgZGVzdGluYXRpb25JRDsKLQogICAgIE9w
dGlvblNldDxXYWl0Rm9yT3B0aW9uPiB3YWl0Rm9yT3B0aW9uczsKICAgICBib29sIG1lc3NhZ2VX
YWl0aW5nSW50ZXJydXB0ZWQgPSBmYWxzZTsKLQogICAgIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVy
PiBkZWNvZGVyOwogfTsKIApAQCAtMzE1LDIzICszMTEsMjMgQEAgdm9pZCBDb25uZWN0aW9uOjpz
ZXRTaG91bGRFeGl0T25TeW5jTWVzcwogICAgIG1fc2hvdWxkRXhpdE9uU3luY01lc3NhZ2VTZW5k
RmFpbHVyZSA9IHNob3VsZEV4aXRPblN5bmNNZXNzYWdlU2VuZEZhaWx1cmU7CiB9CiAKLXZvaWQg
Q29ubmVjdGlvbjo6YWRkV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKFN0cmluZ1JlZmVyZW5jZSBt
ZXNzYWdlUmVjZWl2ZXJOYW1lLCBXb3JrUXVldWUmIHdvcmtRdWV1ZSwgV29ya1F1ZXVlTWVzc2Fn
ZVJlY2VpdmVyKiB3b3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIpCit2b2lkIENvbm5lY3Rpb246OmFk
ZFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcihSZWNlaXZlck5hbWUgbWVzc2FnZVJlY2VpdmVyTmFt
ZSwgV29ya1F1ZXVlJiB3b3JrUXVldWUsIFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlciogd29ya1F1
ZXVlTWVzc2FnZVJlY2VpdmVyKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAK
ICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fd29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyc011
dGV4KTsKLSAgICBBU1NFUlQoIW1fd29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVycy5jb250YWlucyht
ZXNzYWdlUmVjZWl2ZXJOYW1lKSk7CisgICAgQVNTRVJUKCFtX3dvcmtRdWV1ZU1lc3NhZ2VSZWNl
aXZlcnMuY29udGFpbnMoc3RhdGljX2Nhc3Q8dWludDhfdD4obWVzc2FnZVJlY2VpdmVyTmFtZSkp
KTsKIAotICAgIG1fd29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVycy5hZGQobWVzc2FnZVJlY2VpdmVy
TmFtZSwgc3RkOjptYWtlX3BhaXIoJndvcmtRdWV1ZSwgd29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVy
KSk7CisgICAgbV93b3JrUXVldWVNZXNzYWdlUmVjZWl2ZXJzLmFkZChzdGF0aWNfY2FzdDx1aW50
OF90PihtZXNzYWdlUmVjZWl2ZXJOYW1lKSwgc3RkOjptYWtlX3BhaXIoJndvcmtRdWV1ZSwgd29y
a1F1ZXVlTWVzc2FnZVJlY2VpdmVyKSk7CiB9CiAKLXZvaWQgQ29ubmVjdGlvbjo6cmVtb3ZlV29y
a1F1ZXVlTWVzc2FnZVJlY2VpdmVyKFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1l
KQordm9pZCBDb25uZWN0aW9uOjpyZW1vdmVXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIoUmVjZWl2
ZXJOYW1lIG1lc3NhZ2VSZWNlaXZlck5hbWUpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFp
bigpKTsKIAogICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV93b3JrUXVldWVNZXNzYWdlUmVj
ZWl2ZXJzTXV0ZXgpOwotICAgIEFTU0VSVChtX3dvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcnMuY29u
dGFpbnMobWVzc2FnZVJlY2VpdmVyTmFtZSkpOwotICAgIG1fd29ya1F1ZXVlTWVzc2FnZVJlY2Vp
dmVycy5yZW1vdmUobWVzc2FnZVJlY2VpdmVyTmFtZSk7CisgICAgQVNTRVJUKG1fd29ya1F1ZXVl
TWVzc2FnZVJlY2VpdmVycy5jb250YWlucyhzdGF0aWNfY2FzdDx1aW50OF90PihtZXNzYWdlUmVj
ZWl2ZXJOYW1lKSkpOworICAgIG1fd29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVycy5yZW1vdmUoc3Rh
dGljX2Nhc3Q8dWludDhfdD4obWVzc2FnZVJlY2VpdmVyTmFtZSkpOwogfQogCiB2b2lkIENvbm5l
Y3Rpb246OmRpc3BhdGNoV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyTWVzc2FnZShXb3JrUXVldWVN
ZXNzYWdlUmVjZWl2ZXImIHdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlciwgRGVjb2RlciYgZGVjb2Rl
cikKQEAgLTM0OSw3ICszNDUsNyBAQCB2b2lkIENvbm5lY3Rpb246OmRpc3BhdGNoV29ya1F1ZXVl
TWVzc2FnCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIHJlcGx5RW5jb2RlciA9
IG1ha2VVbmlxdWU8RW5jb2Rlcj4oIklQQyIsICJTeW5jTWVzc2FnZVJlcGx5Iiwgc3luY1JlcXVl
c3RJRCk7CisgICAgYXV0byByZXBseUVuY29kZXIgPSBtYWtlVW5pcXVlPEVuY29kZXI+KE1lc3Nh
Z2VOYW1lOjpTeW5jTWVzc2FnZVJlcGx5LCBzeW5jUmVxdWVzdElEKTsKIAogICAgIC8vIEhhbmQg
b2ZmIGJvdGggdGhlIGRlY29kZXIgYW5kIGVuY29kZXIgdG8gdGhlIHdvcmsgcXVldWUgbWVzc2Fn
ZSByZWNlaXZlci4KICAgICB3b3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIuZGlkUmVjZWl2ZVN5bmNN
ZXNzYWdlKCp0aGlzLCBkZWNvZGVyLCByZXBseUVuY29kZXIpOwpAQCAtMzYxLDI0ICszNTcsMjQg
QEAgdm9pZCBDb25uZWN0aW9uOjpkaXNwYXRjaFdvcmtRdWV1ZU1lc3NhZwogICAgICAgICBzZW5k
U3luY1JlcGx5KFdURk1vdmUocmVwbHlFbmNvZGVyKSk7CiB9CiAKLXZvaWQgQ29ubmVjdGlvbjo6
YWRkVGhyZWFkTWVzc2FnZVJlY2VpdmVyKFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJO
YW1lLCBUaHJlYWRNZXNzYWdlUmVjZWl2ZXIqIHRocmVhZE1lc3NhZ2VSZWNlaXZlcikKK3ZvaWQg
Q29ubmVjdGlvbjo6YWRkVGhyZWFkTWVzc2FnZVJlY2VpdmVyKFJlY2VpdmVyTmFtZSBtZXNzYWdl
UmVjZWl2ZXJOYW1lLCBUaHJlYWRNZXNzYWdlUmVjZWl2ZXIqIHRocmVhZE1lc3NhZ2VSZWNlaXZl
cikKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAgYXV0byBsb2NrZXIg
PSBob2xkTG9jayhtX3RocmVhZE1lc3NhZ2VSZWNlaXZlcnNMb2NrKTsKLSAgICBBU1NFUlQoIW1f
dGhyZWFkTWVzc2FnZVJlY2VpdmVycy5jb250YWlucyhtZXNzYWdlUmVjZWl2ZXJOYW1lKSk7Cisg
ICAgQVNTRVJUKCFtX3RocmVhZE1lc3NhZ2VSZWNlaXZlcnMuY29udGFpbnMoc3RhdGljX2Nhc3Q8
dWludDhfdD4obWVzc2FnZVJlY2VpdmVyTmFtZSkpKTsKIAotICAgIG1fdGhyZWFkTWVzc2FnZVJl
Y2VpdmVycy5hZGQobWVzc2FnZVJlY2VpdmVyTmFtZSwgdGhyZWFkTWVzc2FnZVJlY2VpdmVyKTsK
KyAgICBtX3RocmVhZE1lc3NhZ2VSZWNlaXZlcnMuYWRkKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KG1l
c3NhZ2VSZWNlaXZlck5hbWUpLCB0aHJlYWRNZXNzYWdlUmVjZWl2ZXIpOwogfQogCi12b2lkIENv
bm5lY3Rpb246OnJlbW92ZVRocmVhZE1lc3NhZ2VSZWNlaXZlcihTdHJpbmdSZWZlcmVuY2UgbWVz
c2FnZVJlY2VpdmVyTmFtZSkKK3ZvaWQgQ29ubmVjdGlvbjo6cmVtb3ZlVGhyZWFkTWVzc2FnZVJl
Y2VpdmVyKFJlY2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1lKQogewogICAgIEFTU0VSVChS
dW5Mb29wOjppc01haW4oKSk7CiAKICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fdGhyZWFk
TWVzc2FnZVJlY2VpdmVyc0xvY2spOwotICAgIEFTU0VSVChtX3RocmVhZE1lc3NhZ2VSZWNlaXZl
cnMuY29udGFpbnMobWVzc2FnZVJlY2VpdmVyTmFtZSkpOworICAgIEFTU0VSVChtX3RocmVhZE1l
c3NhZ2VSZWNlaXZlcnMuY29udGFpbnMoc3RhdGljX2Nhc3Q8dWludDhfdD4obWVzc2FnZVJlY2Vp
dmVyTmFtZSkpKTsKIAotICAgIG1fdGhyZWFkTWVzc2FnZVJlY2VpdmVycy5yZW1vdmUobWVzc2Fn
ZVJlY2VpdmVyTmFtZSk7CisgICAgbV90aHJlYWRNZXNzYWdlUmVjZWl2ZXJzLnJlbW92ZShzdGF0
aWNfY2FzdDx1aW50OF90PihtZXNzYWdlUmVjZWl2ZXJOYW1lKSk7CiB9CiAKIHZvaWQgQ29ubmVj
dGlvbjo6ZGlzcGF0Y2hUaHJlYWRNZXNzYWdlUmVjZWl2ZXJNZXNzYWdlKFRocmVhZE1lc3NhZ2VS
ZWNlaXZlciYgdGhyZWFkTWVzc2FnZVJlY2VpdmVyLCBEZWNvZGVyJiBkZWNvZGVyKQpAQCAtMzk1
LDcgKzM5MSw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6ZGlzcGF0Y2hUaHJlYWRNZXNzYWdlUmUKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gcmVwbHlFbmNvZGVyID0gbWFrZVVuaXF1
ZTxFbmNvZGVyPigiSVBDIiwgIlN5bmNNZXNzYWdlUmVwbHkiLCBzeW5jUmVxdWVzdElEKTsKKyAg
ICBhdXRvIHJlcGx5RW5jb2RlciA9IG1ha2VVbmlxdWU8RW5jb2Rlcj4oTWVzc2FnZU5hbWU6OlN5
bmNNZXNzYWdlUmVwbHksIHN5bmNSZXF1ZXN0SUQpOwogICAgIHRocmVhZE1lc3NhZ2VSZWNlaXZl
ci5kaWRSZWNlaXZlU3luY01lc3NhZ2UoKnRoaXMsIGRlY29kZXIsIHJlcGx5RW5jb2Rlcik7CiAK
ICAgICAvLyBGSVhNRTogSWYgdGhlIG1lc3NhZ2Ugd2FzIGludmFsaWQsIHdlIHNob3VsZCBzZW5k
IGJhY2sgYSBTeW5jTWVzc2FnZUVycm9yLgpAQCAtNDM2LDkgKzQzMiw5IEBAIHZvaWQgQ29ubmVj
dGlvbjo6bWFya0N1cnJlbnRseURpc3BhdGNoZWQKICAgICBtX2RpZFJlY2VpdmVJbnZhbGlkTWVz
c2FnZSA9IHRydWU7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVyPiBDb25uZWN0aW9uOjpj
cmVhdGVTeW5jTWVzc2FnZUVuY29kZXIoU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5h
bWUsIFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwg
dWludDY0X3QmIHN5bmNSZXF1ZXN0SUQpCitzdGQ6OnVuaXF1ZV9wdHI8RW5jb2Rlcj4gQ29ubmVj
dGlvbjo6Y3JlYXRlU3luY01lc3NhZ2VFbmNvZGVyKE1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lLCB1
aW50NjRfdCBkZXN0aW5hdGlvbklELCB1aW50NjRfdCYgc3luY1JlcXVlc3RJRCkKIHsKLSAgICBh
dXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlPEVuY29kZXI+KG1lc3NhZ2VSZWNlaXZlck5hbWUsIG1l
c3NhZ2VOYW1lLCBkZXN0aW5hdGlvbklEKTsKKyAgICBhdXRvIGVuY29kZXIgPSBtYWtlVW5pcXVl
PEVuY29kZXI+KG1lc3NhZ2VOYW1lLCBkZXN0aW5hdGlvbklEKTsKICAgICBlbmNvZGVyLT5zZXRJ
c1N5bmNNZXNzYWdlKHRydWUpOwogCiAgICAgLy8gRW5jb2RlIHRoZSBzeW5jIHJlcXVlc3QgSUQu
CkBAIC00NTMsOSArNDQ5LDkgQEAgYm9vbCBDb25uZWN0aW9uOjpzZW5kTWVzc2FnZShzdGQ6OnVu
aXF1ZQogICAgIGlmICghaXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBp
ZiAoaXNNYWluVGhyZWFkKCkgJiYgbV9pbkRpc3BhdGNoTWVzc2FnZU1hcmtlZFRvVXNlRnVsbHlT
eW5jaHJvbm91c01vZGVGb3JUZXN0aW5nICYmICFlbmNvZGVyLT5pc1N5bmNNZXNzYWdlKCkgJiYg
IShlbmNvZGVyLT5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gIklQQyIpICYmICFzZW5kT3B0aW9u
cy5jb250YWlucyhTZW5kT3B0aW9uOjpJZ25vcmVGdWxseVN5bmNocm9ub3VzTW9kZSkpIHsKKyAg
ICBpZiAoaXNNYWluVGhyZWFkKCkgJiYgbV9pbkRpc3BhdGNoTWVzc2FnZU1hcmtlZFRvVXNlRnVs
bHlTeW5jaHJvbm91c01vZGVGb3JUZXN0aW5nICYmICFlbmNvZGVyLT5pc1N5bmNNZXNzYWdlKCkg
JiYgIShlbmNvZGVyLT5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gUmVjZWl2ZXJOYW1lOjpJUEMp
ICYmICFzZW5kT3B0aW9ucy5jb250YWlucyhTZW5kT3B0aW9uOjpJZ25vcmVGdWxseVN5bmNocm9u
b3VzTW9kZSkpIHsKICAgICAgICAgdWludDY0X3Qgc3luY1JlcXVlc3RJRDsKLSAgICAgICAgYXV0
byB3cmFwcGVkTWVzc2FnZSA9IGNyZWF0ZVN5bmNNZXNzYWdlRW5jb2RlcigiSVBDIiwgIldyYXBw
ZWRBc3luY01lc3NhZ2VGb3JUZXN0aW5nIiwgZW5jb2Rlci0+ZGVzdGluYXRpb25JRCgpLCBzeW5j
UmVxdWVzdElEKTsKKyAgICAgICAgYXV0byB3cmFwcGVkTWVzc2FnZSA9IGNyZWF0ZVN5bmNNZXNz
YWdlRW5jb2RlcihNZXNzYWdlTmFtZTo6V3JhcHBlZEFzeW5jTWVzc2FnZUZvclRlc3RpbmcsIGVu
Y29kZXItPmRlc3RpbmF0aW9uSUQoKSwgc3luY1JlcXVlc3RJRCk7CiAgICAgICAgIHdyYXBwZWRN
ZXNzYWdlLT5zZXRGdWxseVN5bmNocm9ub3VzTW9kZUZvclRlc3RpbmcoKTsKICAgICAgICAgd3Jh
cHBlZE1lc3NhZ2UtPndyYXBGb3JUZXN0aW5nKFdURk1vdmUoZW5jb2RlcikpOwogICAgICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4oc2VuZFN5bmNNZXNzYWdlKHN5bmNSZXF1ZXN0SUQsIFdU
Rk1vdmUod3JhcHBlZE1lc3NhZ2UpLCBTZWNvbmRzOjppbmZpbml0eSgpLCB7IH0pKTsKQEAgLTQ5
MCw3ICs0ODYsNyBAQCBTZWNvbmRzIENvbm5lY3Rpb246OnRpbWVvdXRSZXNwZWN0aW5nSWduCiAg
ICAgcmV0dXJuIG1faWdub3JlVGltZW91dHNGb3JUZXN0aW5nID8gU2Vjb25kczo6aW5maW5pdHko
KSA6IHRpbWVvdXQ7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiBDb25uZWN0aW9uOjp3
YWl0Rm9yTWVzc2FnZShTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgU3RyaW5n
UmVmZXJlbmNlIG1lc3NhZ2VOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRp
bWVvdXQsIE9wdGlvblNldDxXYWl0Rm9yT3B0aW9uPiB3YWl0Rm9yT3B0aW9ucykKK3N0ZDo6dW5p
cXVlX3B0cjxEZWNvZGVyPiBDb25uZWN0aW9uOjp3YWl0Rm9yTWVzc2FnZShNZXNzYWdlTmFtZSBt
ZXNzYWdlTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0LCBPcHRp
b25TZXQ8V2FpdEZvck9wdGlvbj4gd2FpdEZvck9wdGlvbnMpCiB7CiAgICAgQVNTRVJUKFJ1bkxv
b3A6OmlzTWFpbigpKTsKICAgICBhdXRvIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKTsK
QEAgLTUwNiw3ICs1MDIsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gQ29ubmVjdGlvbjo6
d2FpCiAgICAgICAgIGZvciAoYXV0byBpdCA9IG1faW5jb21pbmdNZXNzYWdlcy5iZWdpbigpLCBl
bmQgPSBtX2luY29taW5nTWVzc2FnZXMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAg
ICAgICAgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+JiBtZXNzYWdlID0gKml0OwogCi0gICAgICAg
ICAgICBpZiAobWVzc2FnZS0+bWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IG1lc3NhZ2VSZWNlaXZl
ck5hbWUgJiYgbWVzc2FnZS0+bWVzc2FnZU5hbWUoKSA9PSBtZXNzYWdlTmFtZSAmJiBtZXNzYWdl
LT5kZXN0aW5hdGlvbklEKCkgPT0gZGVzdGluYXRpb25JRCkgeworICAgICAgICAgICAgaWYgKG1l
c3NhZ2UtPm1lc3NhZ2VOYW1lKCkgPT0gbWVzc2FnZU5hbWUgJiYgbWVzc2FnZS0+ZGVzdGluYXRp
b25JRCgpID09IGRlc3RpbmF0aW9uSUQpIHsKICAgICAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9w
dHI8RGVjb2Rlcj4gcmV0dXJuZWRNZXNzYWdlID0gV1RGTW92ZShtZXNzYWdlKTsKIAogICAgICAg
ICAgICAgICAgIG1faW5jb21pbmdNZXNzYWdlcy5yZW1vdmUoaXQpOwpAQCAtNTI4LDcgKzUyNCw3
IEBAIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiBDb25uZWN0aW9uOjp3YWkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgV2FpdEZvck1lc3NhZ2VTdGF0ZSB3YWl0aW5nRm9y
TWVzc2FnZShtZXNzYWdlUmVjZWl2ZXJOYW1lLCBtZXNzYWdlTmFtZSwgZGVzdGluYXRpb25JRCwg
d2FpdEZvck9wdGlvbnMpOworICAgIFdhaXRGb3JNZXNzYWdlU3RhdGUgd2FpdGluZ0Zvck1lc3Nh
Z2UobWVzc2FnZU5hbWUsIGRlc3RpbmF0aW9uSUQsIHdhaXRGb3JPcHRpb25zKTsKIAogICAgIHsK
ICAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3dhaXRGb3JNZXNzYWdlTXV0ZXgpOwpA
QCAtNjAwLDE0ICs1OTYsMTMgQEAgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IENvbm5lY3Rpb246
OnNlbgogICAgIGlmIChzZW5kU3luY09wdGlvbnMuY29udGFpbnMoU2VuZFN5bmNPcHRpb246OkZv
cmNlRGlzcGF0Y2hXaGVuRGVzdGluYXRpb25Jc1dhaXRpbmdGb3JVbmJvdW5kZWRTeW5jUmVwbHkp
KQogICAgICAgICBzZW5kT3B0aW9ucyA9IHNlbmRPcHRpb25zIHwgSVBDOjpTZW5kT3B0aW9uOjpE
aXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JVbmJvdW5kZWRTeW5jUmVwbHk7CiAKLSAg
ICBhdXRvIG1lc3NhZ2VSZWNlaXZlck5hbWUgPSBlbmNvZGVyLT5tZXNzYWdlUmVjZWl2ZXJOYW1l
KCk7CiAgICAgYXV0byBtZXNzYWdlTmFtZSA9IGVuY29kZXItPm1lc3NhZ2VOYW1lKCk7CiAgICAg
c2VuZE1lc3NhZ2UoV1RGTW92ZShlbmNvZGVyKSwgc2VuZE9wdGlvbnMpOwogCiAgICAgLy8gVGhl
biB3YWl0IGZvciBhIHJlcGx5LiBXYWl0aW5nIGZvciBhIHJlcGx5IGNvdWxkIGludm9sdmUgZGlz
cGF0Y2hpbmcgaW5jb21pbmcgc3luYyBtZXNzYWdlcywgc28KICAgICAvLyBrZWVwIGFuIGV4dHJh
IHJlZmVyZW5jZSB0byB0aGUgY29ubmVjdGlvbiBoZXJlIGluIGNhc2UgaXQncyBpbnZhbGlkYXRl
ZC4KICAgICBSZWY8Q29ubmVjdGlvbj4gcHJvdGVjdCgqdGhpcyk7Ci0gICAgc3RkOjp1bmlxdWVf
cHRyPERlY29kZXI+IHJlcGx5ID0gd2FpdEZvclN5bmNSZXBseShzeW5jUmVxdWVzdElELCBtZXNz
YWdlUmVjZWl2ZXJOYW1lLCBtZXNzYWdlTmFtZSwgdGltZW91dCwgc2VuZFN5bmNPcHRpb25zKTsK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gcmVwbHkgPSB3YWl0Rm9yU3luY1JlcGx5KHN5
bmNSZXF1ZXN0SUQsIG1lc3NhZ2VOYW1lLCB0aW1lb3V0LCBzZW5kU3luY09wdGlvbnMpOwogCiAg
ICAgLS1tX2luU2VuZFN5bmNDb3VudDsKIApAQCAtNjI0LDcgKzYxOSw3IEBAIHN0ZDo6dW5pcXVl
X3B0cjxEZWNvZGVyPiBDb25uZWN0aW9uOjpzZW4KICAgICByZXR1cm4gcmVwbHk7CiB9CiAKLXN0
ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiBDb25uZWN0aW9uOjp3YWl0Rm9yU3luY1JlcGx5KHVpbnQ2
NF90IHN5bmNSZXF1ZXN0SUQsIFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBT
dHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUsIFNlY29uZHMgdGltZW91dCwgT3B0aW9uU2V0PFNl
bmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMpCitzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4g
Q29ubmVjdGlvbjo6d2FpdEZvclN5bmNSZXBseSh1aW50NjRfdCBzeW5jUmVxdWVzdElELCBNZXNz
YWdlTmFtZSBtZXNzYWdlTmFtZSwgU2Vjb25kcyB0aW1lb3V0LCBPcHRpb25TZXQ8U2VuZFN5bmNP
cHRpb24+IHNlbmRTeW5jT3B0aW9ucykKIHsKICAgICB0aW1lb3V0ID0gdGltZW91dFJlc3BlY3Rp
bmdJZ25vcmVUaW1lb3V0c0ZvclRlc3RpbmcodGltZW91dCk7CiAgICAgTW9ub3RvbmljVGltZSBh
YnNvbHV0ZVRpbWUgPSBNb25vdG9uaWNUaW1lOjpub3coKSArIHRpbWVvdXQ7CkBAIC02NjksOSAr
NjY0LDkgQEAgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IENvbm5lY3Rpb246OndhaQogICAgIH0K
IAogI2lmIE9TKERBUldJTikKLSAgICBSRUxFQVNFX0xPR19FUlJPUihJUEMsICJDb25uZWN0aW9u
Ojp3YWl0Rm9yU3luY1JlcGx5OiBUaW1lZC1vdXQgd2hpbGUgd2FpdGluZyBmb3IgcmVwbHkgZm9y
ICV7cHVibGljfXM6OiV7cHVibGljfXMgZnJvbSBwcm9jZXNzICVkLCBpZCA9ICUiIFBSSXU2NCwg
bWVzc2FnZVJlY2VpdmVyTmFtZS50b1N0cmluZygpLmRhdGEoKSwgbWVzc2FnZU5hbWUudG9TdHJp
bmcoKS5kYXRhKCksIHJlbW90ZVByb2Nlc3NJRCgpLCBzeW5jUmVxdWVzdElEKTsKKyAgICBSRUxF
QVNFX0xPR19FUlJPUihJUEMsICJDb25uZWN0aW9uOjp3YWl0Rm9yU3luY1JlcGx5OiBUaW1lZC1v
dXQgd2hpbGUgd2FpdGluZyBmb3IgcmVwbHkgZm9yICV7cHVibGljfXMgZnJvbSBwcm9jZXNzICVk
LCBpZCA9ICUiIFBSSXU2NCwgZGVzY3JpcHRpb24obWVzc2FnZU5hbWUpLCByZW1vdGVQcm9jZXNz
SUQoKSwgc3luY1JlcXVlc3RJRCk7CiAjZWxzZQotICAgIFJFTEVBU0VfTE9HX0VSUk9SKElQQywg
IkNvbm5lY3Rpb246OndhaXRGb3JTeW5jUmVwbHk6IFRpbWVkLW91dCB3aGlsZSB3YWl0aW5nIGZv
ciByZXBseSBmb3IgJXM6OiVzLCBpZCA9ICUiIFBSSXU2NCwgbWVzc2FnZVJlY2VpdmVyTmFtZS50
b1N0cmluZygpLmRhdGEoKSwgbWVzc2FnZU5hbWUudG9TdHJpbmcoKS5kYXRhKCksIHN5bmNSZXF1
ZXN0SUQpOworICAgIFJFTEVBU0VfTE9HX0VSUk9SKElQQywgIkNvbm5lY3Rpb246OndhaXRGb3JT
eW5jUmVwbHk6IFRpbWVkLW91dCB3aGlsZSB3YWl0aW5nIGZvciByZXBseSBmb3IgJXMsIGlkID0g
JSIgUFJJdTY0LCBkZXNjcmlwdGlvbihtZXNzYWdlTmFtZSksIHN5bmNSZXF1ZXN0SUQpOwogI2Vu
ZGlmCiAKICAgICBkaWRSZWNlaXZlU3luY1JlcGx5KHNlbmRTeW5jT3B0aW9ucyk7CkBAIC03MTEs
MjMgKzcwNiwxNiBAQCB2b2lkIENvbm5lY3Rpb246OnByb2Nlc3NJbmNvbWluZ1N5bmNSZXBsCiAK
IHZvaWQgQ29ubmVjdGlvbjo6cHJvY2Vzc0luY29taW5nTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8
RGVjb2Rlcj4gbWVzc2FnZSkKIHsKLSAgICBBU1NFUlQoIW1lc3NhZ2UtPm1lc3NhZ2VSZWNlaXZl
ck5hbWUoKS5pc0VtcHR5KCkpOwotICAgIEFTU0VSVCghbWVzc2FnZS0+bWVzc2FnZU5hbWUoKS5p
c0VtcHR5KCkpOworICAgIEFTU0VSVChtZXNzYWdlLT5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgIT0g
UmVjZWl2ZXJOYW1lOjpJbnZhbGlkKTsKIAotICAgIGlmIChtZXNzYWdlLT5tZXNzYWdlUmVjZWl2
ZXJOYW1lKCkgPT0gIklQQyIgJiYgbWVzc2FnZS0+bWVzc2FnZU5hbWUoKSA9PSAiU3luY01lc3Nh
Z2VSZXBseSIpIHsKKyAgICBpZiAobWVzc2FnZS0+bWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlTmFt
ZTo6U3luY01lc3NhZ2VSZXBseSkgewogICAgICAgICBwcm9jZXNzSW5jb21pbmdTeW5jUmVwbHko
V1RGTW92ZShtZXNzYWdlKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoIVdv
cmtRdWV1ZU1lc3NhZ2VSZWNlaXZlck1hcDo6aXNWYWxpZEtleShtZXNzYWdlLT5tZXNzYWdlUmVj
ZWl2ZXJOYW1lKCkpIHx8ICFUaHJlYWRNZXNzYWdlUmVjZWl2ZXJNYXA6OmlzVmFsaWRLZXkobWVz
c2FnZS0+bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSkgewotICAgICAgICBSZWZQdHI8Q29ubmVjdGlv
bj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKLSAgICAgICAgU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VS
ZWNlaXZlck5hbWVSZWZlcmVuY2UgPSBtZXNzYWdlLT5tZXNzYWdlUmVjZWl2ZXJOYW1lKCk7Ci0g
ICAgICAgIFN0cmluZyBtZXNzYWdlUmVjZWl2ZXJOYW1lKG1lc3NhZ2VSZWNlaXZlck5hbWVSZWZl
cmVuY2UuaXNFbXB0eSgpID8gIjx1bmtub3duIG1lc3NhZ2UgcmVjZWl2ZXI+IiA6IFN0cmluZyht
ZXNzYWdlUmVjZWl2ZXJOYW1lUmVmZXJlbmNlLmRhdGEoKSwgbWVzc2FnZVJlY2VpdmVyTmFtZVJl
ZmVyZW5jZS5zaXplKCkpKTsKLSAgICAgICAgU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lUmVm
ZXJlbmNlID0gbWVzc2FnZS0+bWVzc2FnZU5hbWUoKTsKLSAgICAgICAgU3RyaW5nIG1lc3NhZ2VO
YW1lKG1lc3NhZ2VOYW1lUmVmZXJlbmNlLmlzRW1wdHkoKSA/ICI8dW5rbm93biBtZXNzYWdlPiIg
OiBTdHJpbmcobWVzc2FnZU5hbWVSZWZlcmVuY2UuZGF0YSgpLCBtZXNzYWdlTmFtZVJlZmVyZW5j
ZS5zaXplKCkpKTsKLQotICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgbWVzc2FnZVJlY2VpdmVyTmFtZSA9IFdURk1vdmUobWVz
c2FnZVJlY2VpdmVyTmFtZSksIG1lc3NhZ2VOYW1lID0gV1RGTW92ZShtZXNzYWdlTmFtZSldKCkg
bXV0YWJsZSB7Ci0gICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5kaXNwYXRjaERpZFJlY2VpdmVJ
bnZhbGlkTWVzc2FnZShtZXNzYWdlUmVjZWl2ZXJOYW1lLnV0ZjgoKSwgbWVzc2FnZU5hbWUudXRm
OCgpKTsKKyAgICBpZiAoIVdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlck1hcDo6aXNWYWxpZEtleShz
dGF0aWNfY2FzdDx1aW50OF90PihtZXNzYWdlLT5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkpKSB8fCAh
VGhyZWFkTWVzc2FnZVJlY2VpdmVyTWFwOjppc1ZhbGlkS2V5KHN0YXRpY19jYXN0PHVpbnQ4X3Q+
KG1lc3NhZ2UtPm1lc3NhZ2VSZWNlaXZlck5hbWUoKSkpKSB7CisgICAgICAgIFJ1bkxvb3A6Om1h
aW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBtZXNzYWdlTmFt
ZSA9IG1lc3NhZ2UtPm1lc3NhZ2VOYW1lKCldKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBwcm90
ZWN0ZWRUaGlzLT5kaXNwYXRjaERpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShtZXNzYWdlTmFtZSk7
CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNzU5LDcgKzc0Nyw3IEBA
IHZvaWQgQ29ubmVjdGlvbjo6cHJvY2Vzc0luY29taW5nTWVzc2FnZSgKICAgICAgICAgYXV0byBs
b2NrZXIgPSBob2xkTG9jayhtX3dhaXRGb3JNZXNzYWdlTXV0ZXgpOwogCiAgICAgICAgIGlmICht
X3dhaXRpbmdGb3JNZXNzYWdlICYmICFtX3dhaXRpbmdGb3JNZXNzYWdlLT5kZWNvZGVyKSB7Ci0g
ICAgICAgICAgICBpZiAobV93YWl0aW5nRm9yTWVzc2FnZS0+bWVzc2FnZVJlY2VpdmVyTmFtZSA9
PSBtZXNzYWdlLT5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgJiYgbV93YWl0aW5nRm9yTWVzc2FnZS0+
bWVzc2FnZU5hbWUgPT0gbWVzc2FnZS0+bWVzc2FnZU5hbWUoKSAmJiBtX3dhaXRpbmdGb3JNZXNz
YWdlLT5kZXN0aW5hdGlvbklEID09IG1lc3NhZ2UtPmRlc3RpbmF0aW9uSUQoKSkgeworICAgICAg
ICAgICAgaWYgKG1fd2FpdGluZ0Zvck1lc3NhZ2UtPm1lc3NhZ2VOYW1lID09IG1lc3NhZ2UtPm1l
c3NhZ2VOYW1lKCkgJiYgbV93YWl0aW5nRm9yTWVzc2FnZS0+ZGVzdGluYXRpb25JRCA9PSBtZXNz
YWdlLT5kZXN0aW5hdGlvbklEKCkpIHsKICAgICAgICAgICAgICAgICBtX3dhaXRpbmdGb3JNZXNz
YWdlLT5kZWNvZGVyID0gV1RGTW92ZShtZXNzYWdlKTsKICAgICAgICAgICAgICAgICBBU1NFUlQo
bV93YWl0aW5nRm9yTWVzc2FnZS0+ZGVjb2Rlcik7CiAgICAgICAgICAgICAgICAgbV93YWl0Rm9y
TWVzc2FnZUNvbmRpdGlvbi5ub3RpZnlPbmUoKTsKQEAgLTkxMiw5ICs5MDAsOSBAQCB2b2lkIENv
bm5lY3Rpb246OmRpc3BhdGNoU3luY01lc3NhZ2UoRGVjCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBhdXRvIHJlcGx5RW5jb2RlciA9IG1ha2VVbmlxdWU8RW5jb2Rlcj4oIklQQyIsICJT
eW5jTWVzc2FnZVJlcGx5Iiwgc3luY1JlcXVlc3RJRCk7CisgICAgYXV0byByZXBseUVuY29kZXIg
PSBtYWtlVW5pcXVlPEVuY29kZXI+KE1lc3NhZ2VOYW1lOjpTeW5jTWVzc2FnZVJlcGx5LCBzeW5j
UmVxdWVzdElEKTsKIAotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSAi
SVBDIiAmJiBkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gIldyYXBwZWRBc3luY01lc3NhZ2VGb3JU
ZXN0aW5nIikgeworICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZU5hbWU6
OldyYXBwZWRBc3luY01lc3NhZ2VGb3JUZXN0aW5nKSB7CiAgICAgICAgIGlmICghbV9mdWxseVN5
bmNocm9ub3VzTW9kZUlzQWxsb3dlZEZvclRlc3RpbmcpIHsKICAgICAgICAgICAgIGRlY29kZXIu
bWFya0ludmFsaWQoKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTkzNiwxNCArOTI0LDE0IEBA
IHZvaWQgQ29ubmVjdGlvbjo6ZGlzcGF0Y2hTeW5jTWVzc2FnZShEZWMKICAgICAgICAgc2VuZFN5
bmNSZXBseShXVEZNb3ZlKHJlcGx5RW5jb2RlcikpOwogfQogCi12b2lkIENvbm5lY3Rpb246OmRp
c3BhdGNoRGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKGNvbnN0IENTdHJpbmcmIG1lc3NhZ2VSZWNl
aXZlck5hbWVTdHJpbmcsIGNvbnN0IENTdHJpbmcmIG1lc3NhZ2VOYW1lU3RyaW5nKQordm9pZCBD
b25uZWN0aW9uOjpkaXNwYXRjaERpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShNZXNzYWdlTmFtZSBt
ZXNzYWdlTmFtZSkKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAgaWYg
KCFpc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fY2xpZW50LmRpZFJlY2VpdmVJ
bnZhbGlkTWVzc2FnZSgqdGhpcywgU3RyaW5nUmVmZXJlbmNlKG1lc3NhZ2VSZWNlaXZlck5hbWVT
dHJpbmcuZGF0YSgpLCBtZXNzYWdlUmVjZWl2ZXJOYW1lU3RyaW5nLmxlbmd0aCgpKSwgU3RyaW5n
UmVmZXJlbmNlKG1lc3NhZ2VOYW1lU3RyaW5nLmRhdGEoKSwgbWVzc2FnZU5hbWVTdHJpbmcubGVu
Z3RoKCkpKTsKKyAgICBtX2NsaWVudC5kaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoKnRoaXMsIG1l
c3NhZ2VOYW1lKTsKIH0KIAogdm9pZCBDb25uZWN0aW9uOjpkaWRGYWlsVG9TZW5kU3luY01lc3Nh
Z2UoKQpAQCAtOTg5LDcgKzk3Nyw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6ZW5xdWV1ZUluY29taW5n
TWVzc2FnZSgKIHZvaWQgQ29ubmVjdGlvbjo6ZGlzcGF0Y2hNZXNzYWdlKERlY29kZXImIGRlY29k
ZXIpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoaXNWYWxpZCgpKTsKLSAgICBpZiAoZGVjb2Rlci5t
ZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gIkFzeW5jUmVwbHkiKSB7CisgICAgaWYgKGRlY29kZXIu
bWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IFJlY2VpdmVyTmFtZTo6QXN5bmNSZXBseSkgewogICAg
ICAgICBPcHRpb25hbDx1aW50NjRfdD4gbGlzdGVuZXJJRDsKICAgICAgICAgZGVjb2RlciA+PiBs
aXN0ZW5lcklEOwogICAgICAgICBpZiAoIWxpc3RlbmVySUQpIHsKQEAgLTEwMTEsNyArOTk5LDcg
QEAgdm9pZCBDb25uZWN0aW9uOjpkaXNwYXRjaE1lc3NhZ2UoRGVjb2RlcgogYm9vbCBDb25uZWN0
aW9uOjpkaXNwYXRjaE1lc3NhZ2VUb1dvcmtRdWV1ZVJlY2VpdmVyKHN0ZDo6dW5pcXVlX3B0cjxE
ZWNvZGVyPiYgbWVzc2FnZSkKIHsKICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fd29ya1F1
ZXVlTWVzc2FnZVJlY2VpdmVyc011dGV4KTsKLSAgICBhdXRvIGl0ID0gbV93b3JrUXVldWVNZXNz
YWdlUmVjZWl2ZXJzLmZpbmQobWVzc2FnZS0+bWVzc2FnZVJlY2VpdmVyTmFtZSgpKTsKKyAgICBh
dXRvIGl0ID0gbV93b3JrUXVldWVNZXNzYWdlUmVjZWl2ZXJzLmZpbmQoc3RhdGljX2Nhc3Q8dWlu
dDhfdD4obWVzc2FnZS0+bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSk7CiAgICAgaWYgKGl0ICE9IG1f
d29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVycy5lbmQoKSkgewogICAgICAgICBpdC0+dmFsdWUuZmly
c3QtPmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHdvcmtRdWV1ZU1l
c3NhZ2VSZWNlaXZlciA9IGl0LT52YWx1ZS5zZWNvbmQsIGRlY29kZXIgPSBXVEZNb3ZlKG1lc3Nh
Z2UpXSgpIG11dGFibGUgewogICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+ZGlzcGF0Y2hXb3Jr
UXVldWVNZXNzYWdlUmVjZWl2ZXJNZXNzYWdlKCp3b3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIsICpk
ZWNvZGVyKTsKQEAgLTEwMjYsNyArMTAxNCw3IEBAIGJvb2wgQ29ubmVjdGlvbjo6ZGlzcGF0Y2hN
ZXNzYWdlVG9UaHJlYWQKICAgICBSZWZQdHI8VGhyZWFkTWVzc2FnZVJlY2VpdmVyPiBwcm90ZWN0
ZWRUaHJlYWRNZXNzYWdlUmVjZWl2ZXI7CiAgICAgewogICAgICAgICBhdXRvIGxvY2tlciA9IGhv
bGRMb2NrKG1fdGhyZWFkTWVzc2FnZVJlY2VpdmVyc0xvY2spOwotICAgICAgICBwcm90ZWN0ZWRU
aHJlYWRNZXNzYWdlUmVjZWl2ZXIgPSBtX3RocmVhZE1lc3NhZ2VSZWNlaXZlcnMuZ2V0KG1lc3Nh
Z2UtPm1lc3NhZ2VSZWNlaXZlck5hbWUoKSk7CisgICAgICAgIHByb3RlY3RlZFRocmVhZE1lc3Nh
Z2VSZWNlaXZlciA9IG1fdGhyZWFkTWVzc2FnZVJlY2VpdmVycy5nZXQoc3RhdGljX2Nhc3Q8dWlu
dDhfdD4obWVzc2FnZS0+bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSk7CiAgICAgfQogCiAgICAgaWYg
KHByb3RlY3RlZFRocmVhZE1lc3NhZ2VSZWNlaXZlcikgewpAQCAtMTA1NCw3ICsxMDQyLDcgQEAg
dm9pZCBDb25uZWN0aW9uOjpkaXNwYXRjaE1lc3NhZ2Uoc3RkOjp1bgogCiAgICAgaWYgKG1lc3Nh
Z2UtPnNob3VsZFVzZUZ1bGx5U3luY2hyb25vdXNNb2RlRm9yVGVzdGluZygpKSB7CiAgICAgICAg
IGlmICghbV9mdWxseVN5bmNocm9ub3VzTW9kZUlzQWxsb3dlZEZvclRlc3RpbmcpIHsKLSAgICAg
ICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZSgqdGhpcywgbWVzc2FnZS0+
bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtZXNzYWdlLT5tZXNzYWdlTmFtZSgpKTsKKyAgICAgICAg
ICAgIG1fY2xpZW50LmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZSgqdGhpcywgbWVzc2FnZS0+bWVz
c2FnZU5hbWUoKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgbV9p
bkRpc3BhdGNoTWVzc2FnZU1hcmtlZFRvVXNlRnVsbHlTeW5jaHJvbm91c01vZGVGb3JUZXN0aW5n
Kys7CkBAIC0xMDg4LDcgKzEwNzYsNyBAQCB2b2lkIENvbm5lY3Rpb246OmRpc3BhdGNoTWVzc2Fn
ZShzdGQ6OnVuCiAgICAgICAgIG1faW5EaXNwYXRjaE1lc3NhZ2VNYXJrZWRUb1VzZUZ1bGx5U3lu
Y2hyb25vdXNNb2RlRm9yVGVzdGluZy0tOwogCiAgICAgaWYgKG1fZGlkUmVjZWl2ZUludmFsaWRN
ZXNzYWdlICYmIGlzVmFsaWQoKSkKLSAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZUludmFsaWRN
ZXNzYWdlKCp0aGlzLCBtZXNzYWdlLT5tZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1lc3NhZ2UtPm1l
c3NhZ2VOYW1lKCkpOworICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2Uo
KnRoaXMsIG1lc3NhZ2UtPm1lc3NhZ2VOYW1lKCkpOwogCiAgICAgbV9kaWRSZWNlaXZlSW52YWxp
ZE1lc3NhZ2UgPSBvbGREaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2U7CiB9CkBAIC0xMTY4LDcgKzEx
NTYsNyBAQCB2b2lkIENvbm5lY3Rpb246OmRpc3BhdGNoSW5jb21pbmdNZXNzYWdlCiAgICAgICAg
IGlmIChtZXNzYWdlc1RvUHJvY2VzcyA8IG1faW5jb21pbmdNZXNzYWdlcy5zaXplKCkpIHsKICAg
ICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKElQQywgIiVwIC0gQ29ubmVjdGlvbjo6ZGlzcGF0
Y2hJbmNvbWluZ01lc3NhZ2VzOiBJUEMgdGhyb3R0bGluZyB3YXMgdHJpZ2dlcmVkIChoYXMgJXp1
IHBlbmRpbmcgaW5jb21pbmcgbWVzc2FnZXMsIHdpbGwgb25seSBwcm9jZXNzICV6dSBiZWZvcmUg
eWllbGRpbmcpIiwgdGhpcywgbV9pbmNvbWluZ01lc3NhZ2VzLnNpemUoKSwgbWVzc2FnZXNUb1By
b2Nlc3MpOwogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJS
T1IoSVBDLCAiJXAgLSBDb25uZWN0aW9uOjpkaXNwYXRjaEluY29taW5nTWVzc2FnZXM6IGZpcnN0
IElQQyBtZXNzYWdlIGluIHF1ZXVlIGlzICV7cHVibGljfXM6OiV7cHVibGljfXMiLCB0aGlzLCBt
ZXNzYWdlLT5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkudG9TdHJpbmcoKS5kYXRhKCksIG1lc3NhZ2Ut
Pm1lc3NhZ2VOYW1lKCkudG9TdHJpbmcoKS5kYXRhKCkpOworICAgICAgICAgICAgUkVMRUFTRV9M
T0dfRVJST1IoSVBDLCAiJXAgLSBDb25uZWN0aW9uOjpkaXNwYXRjaEluY29taW5nTWVzc2FnZXM6
IGZpcnN0IElQQyBtZXNzYWdlIGluIHF1ZXVlIGlzICV7cHVibGljfXMiLCB0aGlzLCBkZXNjcmlw
dGlvbihtZXNzYWdlLT5tZXNzYWdlTmFtZSgpKSk7CiAjZW5kaWYKICAgICAgICAgfQogCkluZGV4
OiBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCShyZXZpc2lvbiAyNjA5MzUp
CisrKyBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEwNyw3ICsxMDcsNyBAQCBwdWJsaWM6CiAgICAgY2xhc3MgQ2xpZW50IDogcHVibGlj
IE1lc3NhZ2VSZWNlaXZlciB7CiAgICAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlk
Q2xvc2UoQ29ubmVjdGlvbiYpID0gMDsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVJ
bnZhbGlkTWVzc2FnZShDb25uZWN0aW9uJiwgU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZl
ck5hbWUsIFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZSkgPSAwOworICAgICAgICB2aXJ0dWFs
IHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKENvbm5lY3Rpb24mLCBNZXNzYWdlTmFtZSkg
PSAwOwogCiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2aXJ0dWFsIH5DbGllbnQoKSB7IH0KQEAg
LTE4OSwxMSArMTg5LDExIEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIHZvaWQgKCpEaWRDbG9zZU9u
Q29ubmVjdGlvbldvcmtRdWV1ZUNhbGxiYWNrKShDb25uZWN0aW9uKik7CiAgICAgdm9pZCBzZXRE
aWRDbG9zZU9uQ29ubmVjdGlvbldvcmtRdWV1ZUNhbGxiYWNrKERpZENsb3NlT25Db25uZWN0aW9u
V29ya1F1ZXVlQ2FsbGJhY2spOwogCi0gICAgdm9pZCBhZGRXb3JrUXVldWVNZXNzYWdlUmVjZWl2
ZXIoU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIFdvcmtRdWV1ZSYsIFdvcmtR
dWV1ZU1lc3NhZ2VSZWNlaXZlciopOwotICAgIHZvaWQgcmVtb3ZlV29ya1F1ZXVlTWVzc2FnZVJl
Y2VpdmVyKFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lKTsKKyAgICB2b2lkIGFk
ZFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcihSZWNlaXZlck5hbWUsIFdvcmtRdWV1ZSYsIFdvcmtR
dWV1ZU1lc3NhZ2VSZWNlaXZlciopOworICAgIHZvaWQgcmVtb3ZlV29ya1F1ZXVlTWVzc2FnZVJl
Y2VpdmVyKFJlY2VpdmVyTmFtZSk7CiAKLSAgICB2b2lkIGFkZFRocmVhZE1lc3NhZ2VSZWNlaXZl
cihTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgVGhyZWFkTWVzc2FnZVJlY2Vp
dmVyKik7Ci0gICAgdm9pZCByZW1vdmVUaHJlYWRNZXNzYWdlUmVjZWl2ZXIoU3RyaW5nUmVmZXJl
bmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUpOworICAgIHZvaWQgYWRkVGhyZWFkTWVzc2FnZVJlY2Vp
dmVyKFJlY2VpdmVyTmFtZSwgVGhyZWFkTWVzc2FnZVJlY2VpdmVyKik7CisgICAgdm9pZCByZW1v
dmVUaHJlYWRNZXNzYWdlUmVjZWl2ZXIoUmVjZWl2ZXJOYW1lKTsKIAogICAgIGJvb2wgb3Blbigp
OwogICAgIHZvaWQgaW52YWxpZGF0ZSgpOwpAQCAtMjM1LDcgKzIzNSw3IEBAIHB1YmxpYzoKICAg
ICB9CiAKICAgICBib29sIHNlbmRNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVyPiwgT3B0
aW9uU2V0PFNlbmRPcHRpb24+IHNlbmRPcHRpb25zKTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RW5j
b2Rlcj4gY3JlYXRlU3luY01lc3NhZ2VFbmNvZGVyKFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVj
ZWl2ZXJOYW1lLCBTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0
aW9uSUQsIHVpbnQ2NF90JiBzeW5jUmVxdWVzdElEKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RW5j
b2Rlcj4gY3JlYXRlU3luY01lc3NhZ2VFbmNvZGVyKE1lc3NhZ2VOYW1lLCB1aW50NjRfdCBkZXN0
aW5hdGlvbklELCB1aW50NjRfdCYgc3luY1JlcXVlc3RJRCk7CiAgICAgc3RkOjp1bmlxdWVfcHRy
PERlY29kZXI+IHNlbmRTeW5jTWVzc2FnZSh1aW50NjRfdCBzeW5jUmVxdWVzdElELCBzdGQ6OnVu
aXF1ZV9wdHI8RW5jb2Rlcj4sIFNlY29uZHMgdGltZW91dCwgT3B0aW9uU2V0PFNlbmRTeW5jT3B0
aW9uPiBzZW5kU3luY09wdGlvbnMpOwogICAgIGJvb2wgc2VuZFN5bmNSZXBseShzdGQ6OnVuaXF1
ZV9wdHI8RW5jb2Rlcj4pOwogCkBAIC0yNzQsOSArMjc0LDkgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHBsYXRmb3JtSW5pdGlhbGl6ZShJZGVudGlmaWVyKTsKICAgICB2b2lkIHBsYXRmb3JtSW52YWxp
ZGF0ZSgpOwogICAgIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiB3YWl0Rm9yTWVzc2Fn
ZShTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgU3RyaW5nUmVmZXJlbmNlIG1l
c3NhZ2VOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQsIE9wdGlv
blNldDxXYWl0Rm9yT3B0aW9uPik7CisgICAgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IHdhaXRG
b3JNZXNzYWdlKE1lc3NhZ2VOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRp
bWVvdXQsIE9wdGlvblNldDxXYWl0Rm9yT3B0aW9uPik7CiAgICAgCi0gICAgc3RkOjp1bmlxdWVf
cHRyPERlY29kZXI+IHdhaXRGb3JTeW5jUmVwbHkodWludDY0X3Qgc3luY1JlcXVlc3RJRCwgU3Ry
aW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdl
TmFtZSwgU2Vjb25kcyB0aW1lb3V0LCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRpb24+KTsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gd2FpdEZvclN5bmNSZXBseSh1aW50NjRfdCBzeW5jUmVx
dWVzdElELCBNZXNzYWdlTmFtZSwgU2Vjb25kcyB0aW1lb3V0LCBPcHRpb25TZXQ8U2VuZFN5bmNP
cHRpb24+KTsKIAogICAgIGJvb2wgZGlzcGF0Y2hNZXNzYWdlVG9Xb3JrUXVldWVSZWNlaXZlcihz
dGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4mKTsKICAgICBib29sIGRpc3BhdGNoTWVzc2FnZVRvVGhy
ZWFkUmVjZWl2ZXIoc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+Jik7CkBAIC0zMDAsNyArMzAwLDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGRpc3BhdGNoTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8RGVj
b2Rlcj4pOwogICAgIHZvaWQgZGlzcGF0Y2hNZXNzYWdlKERlY29kZXImKTsKICAgICB2b2lkIGRp
c3BhdGNoU3luY01lc3NhZ2UoRGVjb2RlciYpOwotICAgIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZl
SW52YWxpZE1lc3NhZ2UoY29uc3QgQ1N0cmluZyYgbWVzc2FnZVJlY2VpdmVyTmFtZVN0cmluZywg
Y29uc3QgQ1N0cmluZyYgbWVzc2FnZU5hbWVTdHJpbmcpOworICAgIHZvaWQgZGlzcGF0Y2hEaWRS
ZWNlaXZlSW52YWxpZE1lc3NhZ2UoTWVzc2FnZU5hbWUpOwogICAgIHZvaWQgZGlkRmFpbFRvU2Vu
ZFN5bmNNZXNzYWdlKCk7CiAKICAgICAvLyBDYW4gYmUgY2FsbGVkIG9uIGFueSB0aHJlYWQuCkBA
IC0zNDYsMTEgKzM0NiwxMSBAQCBwcml2YXRlOgogICAgIFJlZjxXb3JrUXVldWU+IG1fY29ubmVj
dGlvblF1ZXVlOwogCiAgICAgTG9jayBtX3dvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcnNNdXRleDsK
LSAgICB1c2luZyBXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXJNYXAgPSBIYXNoTWFwPFN0cmluZ1Jl
ZmVyZW5jZSwgc3RkOjpwYWlyPFJlZlB0cjxXb3JrUXVldWU+LCBSZWZQdHI8V29ya1F1ZXVlTWVz
c2FnZVJlY2VpdmVyPj4+OworICAgIHVzaW5nIFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlck1hcCA9
IEhhc2hNYXA8dWludDhfdCwgc3RkOjpwYWlyPFJlZlB0cjxXb3JrUXVldWU+LCBSZWZQdHI8V29y
a1F1ZXVlTWVzc2FnZVJlY2VpdmVyPj4+OwogICAgIFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlck1h
cCBtX3dvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcnM7CiAKICAgICBMb2NrIG1fdGhyZWFkTWVzc2Fn
ZVJlY2VpdmVyc0xvY2s7Ci0gICAgdXNpbmcgVGhyZWFkTWVzc2FnZVJlY2VpdmVyTWFwID0gSGFz
aE1hcDxTdHJpbmdSZWZlcmVuY2UsIFJlZlB0cjxUaHJlYWRNZXNzYWdlUmVjZWl2ZXI+PjsKKyAg
ICB1c2luZyBUaHJlYWRNZXNzYWdlUmVjZWl2ZXJNYXAgPSBIYXNoTWFwPHVpbnQ4X3QsIFJlZlB0
cjxUaHJlYWRNZXNzYWdlUmVjZWl2ZXI+PjsKICAgICBUaHJlYWRNZXNzYWdlUmVjZWl2ZXJNYXAg
bV90aHJlYWRNZXNzYWdlUmVjZWl2ZXJzOwogCiAgICAgdW5zaWduZWQgbV9pblNlbmRTeW5jQ291
bnQ7CkBAIC00NjIsNyArNDYyLDcgQEAgYm9vbCBDb25uZWN0aW9uOjpzZW5kKFQmJiBtZXNzYWdl
LCB1aW50NgogewogICAgIENPTVBJTEVfQVNTRVJUKCFUOjppc1N5bmMsIEFzeW5jTWVzc2FnZUV4
cGVjdGVkKTsKIAotICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWU8RW5jb2Rlcj4oVDo6cmVj
ZWl2ZXJOYW1lKCksIFQ6Om5hbWUoKSwgZGVzdGluYXRpb25JRCk7CisgICAgYXV0byBlbmNvZGVy
ID0gbWFrZVVuaXF1ZTxFbmNvZGVyPihUOjpuYW1lKCksIGRlc3RpbmF0aW9uSUQpOwogICAgIGVu
Y29kZXItPmVuY29kZShtZXNzYWdlLmFyZ3VtZW50cygpKTsKICAgICAKICAgICByZXR1cm4gc2Vu
ZE1lc3NhZ2UoV1RGTW92ZShlbmNvZGVyKSwgc2VuZE9wdGlvbnMpOwpAQCAtNDc3LDcgKzQ3Nyw3
IEBAIHZvaWQgQ29ubmVjdGlvbjo6c2VuZFdpdGhBc3luY1JlcGx5KFQmJiAKIHsKICAgICBDT01Q
SUxFX0FTU0VSVCghVDo6aXNTeW5jLCBBc3luY01lc3NhZ2VFeHBlY3RlZCk7CiAKLSAgICBhdXRv
IGVuY29kZXIgPSBtYWtlVW5pcXVlPEVuY29kZXI+KFQ6OnJlY2VpdmVyTmFtZSgpLCBUOjpuYW1l
KCksIGRlc3RpbmF0aW9uSUQpOworICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWU8RW5jb2Rl
cj4oVDo6bmFtZSgpLCBkZXN0aW5hdGlvbklEKTsKICAgICB1aW50NjRfdCBsaXN0ZW5lcklEID0g
bmV4dEFzeW5jUmVwbHlIYW5kbGVySUQoKTsKICAgICBlbmNvZGVyLT5lbmNvZGUobGlzdGVuZXJJ
RCk7CiAgICAgZW5jb2Rlci0+ZW5jb2RlKG1lc3NhZ2UuYXJndW1lbnRzKCkpOwpAQCAtNTE1LDcg
KzUxNSw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgQ29ubmVjdGlvbjo6c2UKICAgICBS
RUxFQVNFX0FTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKICAgICB1aW50NjRfdCBzeW5jUmVx
dWVzdElEID0gMDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RW5jb2Rlcj4gZW5jb2RlciA9IGNyZWF0
ZVN5bmNNZXNzYWdlRW5jb2RlcihUOjpyZWNlaXZlck5hbWUoKSwgVDo6bmFtZSgpLCBkZXN0aW5h
dGlvbklELCBzeW5jUmVxdWVzdElEKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RW5jb2Rlcj4gZW5j
b2RlciA9IGNyZWF0ZVN5bmNNZXNzYWdlRW5jb2RlcihUOjpuYW1lKCksIGRlc3RpbmF0aW9uSUQs
IHN5bmNSZXF1ZXN0SUQpOwogCiAgICAgaWYgKHNlbmRTeW5jT3B0aW9ucy5jb250YWlucyhTZW5k
U3luY09wdGlvbjo6VXNlRnVsbHlTeW5jaHJvbm91c01vZGVGb3JUZXN0aW5nKSkgewogICAgICAg
ICBlbmNvZGVyLT5zZXRGdWxseVN5bmNocm9ub3VzTW9kZUZvclRlc3RpbmcoKTsKQEAgLTU0Miw3
ICs1NDIsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29sIENvbm5lY3Rpb246OnNlCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBib29sIENvbm5lY3Rpb246OndhaXRGb3JBbmREaXNwYXRjaEltbWVk
aWF0ZWx5KHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCwgT3B0aW9uU2V0
PFdhaXRGb3JPcHRpb24+IHdhaXRGb3JPcHRpb25zKQogewogICAgIFJFTEVBU0VfQVNTRVJUKFJ1
bkxvb3A6OmlzTWFpbigpKTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gZGVjb2RlciA9
IHdhaXRGb3JNZXNzYWdlKFQ6OnJlY2VpdmVyTmFtZSgpLCBUOjpuYW1lKCksIGRlc3RpbmF0aW9u
SUQsIHRpbWVvdXQsIHdhaXRGb3JPcHRpb25zKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rl
cj4gZGVjb2RlciA9IHdhaXRGb3JNZXNzYWdlKFQ6Om5hbWUoKSwgZGVzdGluYXRpb25JRCwgdGlt
ZW91dCwgd2FpdEZvck9wdGlvbnMpOwogICAgIGlmICghZGVjb2RlcikKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmNwcAkocmV2
aXNpb24gMjYwOTM1KQorKysgU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTY2LDkgKzY2LDYgQEAgRGVjb2Rlcjo6RGVjb2Rlcihjb25zdCB1
aW50OF90KiBidWZmZXIsIAogICAgIGlmICghZGVjb2RlKG1fbWVzc2FnZUZsYWdzKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgaWYgKCFkZWNvZGUobV9tZXNzYWdlUmVjZWl2ZXJOYW1lKSkKLSAg
ICAgICAgcmV0dXJuOwotCiAgICAgaWYgKCFkZWNvZGUobV9tZXNzYWdlTmFtZSkpCiAgICAgICAg
IHJldHVybjsKIApJbmRleDogU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuaAkocmV2aXNp
b24gMjYwOTM1KQorKysgU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJBcmd1bWVudENvZGVyLmgi
CiAjaW5jbHVkZSAiQXR0YWNobWVudC5oIgorI2luY2x1ZGUgIk1lc3NhZ2VOYW1lcy5oIgogI2lu
Y2x1ZGUgIlN0cmluZ1JlZmVyZW5jZS5oIgogI2luY2x1ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+CiAj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtNTEsOCArNTIsOCBAQCBwdWJsaWM6CiAgICAgRGVj
b2Rlcihjb25zdCBEZWNvZGVyJikgPSBkZWxldGU7CiAgICAgRGVjb2RlcihEZWNvZGVyJiYpID0g
ZGVsZXRlOwogCi0gICAgU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUoKSBjb25z
dCB7IHJldHVybiBtX21lc3NhZ2VSZWNlaXZlck5hbWU7IH0KLSAgICBTdHJpbmdSZWZlcmVuY2Ug
bWVzc2FnZU5hbWUoKSBjb25zdCB7IHJldHVybiBtX21lc3NhZ2VOYW1lOyB9CisgICAgUmVjZWl2
ZXJOYW1lIG1lc3NhZ2VSZWNlaXZlck5hbWUoKSBjb25zdCB7IHJldHVybiByZWNlaXZlck5hbWUo
bV9tZXNzYWdlTmFtZSk7IH0KKyAgICBNZXNzYWdlTmFtZSBtZXNzYWdlTmFtZSgpIGNvbnN0IHsg
cmV0dXJuIG1fbWVzc2FnZU5hbWU7IH0KICAgICB1aW50NjRfdCBkZXN0aW5hdGlvbklEKCkgY29u
c3QgeyByZXR1cm4gbV9kZXN0aW5hdGlvbklEOyB9CiAKICAgICBib29sIGlzU3luY01lc3NhZ2Uo
KSBjb25zdDsKQEAgLTEwNiw3ICsxMDcsNyBAQCBwdWJsaWM6CiAgICAgICAgIHR5cGVuYW1lIHN0
ZDo6dW5kZXJseWluZ190eXBlPEU+Ojp0eXBlIHZhbHVlOwogICAgICAgICBpZiAoIWRlY29kZSh2
YWx1ZSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGlmICghaXNWYWxpZEVu
dW08RT4odmFsdWUpKQorICAgICAgICBpZiAoIVdURjo6aXNWYWxpZEVudW08RT4odmFsdWUpKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIGUgPSBzdGF0aWNfY2FzdDxFPih2
YWx1ZSk7CkBAIC0xMTgsNyArMTE5LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgT3B0aW9u
YWw8dHlwZW5hbWUgc3RkOjp1bmRlcmx5aW5nX3R5cGU8RT46OnR5cGU+IHZhbHVlOwogICAgICAg
ICAqdGhpcyA+PiB2YWx1ZTsKLSAgICAgICAgaWYgKHZhbHVlICYmIGlzVmFsaWRFbnVtPEU+KCp2
YWx1ZSkpCisgICAgICAgIGlmICh2YWx1ZSAmJiBXVEY6OmlzVmFsaWRFbnVtPEU+KCp2YWx1ZSkp
CiAgICAgICAgICAgICBvcHRpb25hbCA9IHN0YXRpY19jYXN0PEU+KCp2YWx1ZSk7CiAgICAgICAg
IHJldHVybiAqdGhpczsKICAgICB9CkBAIC0xOTgsOCArMTk5LDcgQEAgcHJpdmF0ZToKICAgICBW
ZWN0b3I8QXR0YWNobWVudD4gbV9hdHRhY2htZW50czsKIAogICAgIHVpbnQ4X3QgbV9tZXNzYWdl
RmxhZ3M7Ci0gICAgU3RyaW5nUmVmZXJlbmNlIG1fbWVzc2FnZVJlY2VpdmVyTmFtZTsKLSAgICBT
dHJpbmdSZWZlcmVuY2UgbV9tZXNzYWdlTmFtZTsKKyAgICBNZXNzYWdlTmFtZSBtX21lc3NhZ2VO
YW1lOwogCiAgICAgdWludDY0X3QgbV9kZXN0aW5hdGlvbklEOwogCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9FbmNvZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9FbmNvZGVyLmNwcAkocmV2aXNpb24gMjYwOTM1KQorKysgU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvRW5jb2Rlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYxLDkgKzYx
LDggQEAgc3RhdGljIGlubGluZSB2b2lkIGZyZWVCdWZmZXIodm9pZCogYWRkcgogI2VuZGlmCiB9
CiAKLUVuY29kZXI6OkVuY29kZXIoU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUs
IFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCkKLSAg
ICA6IG1fbWVzc2FnZVJlY2VpdmVyTmFtZShtZXNzYWdlUmVjZWl2ZXJOYW1lKQotICAgICwgbV9t
ZXNzYWdlTmFtZShtZXNzYWdlTmFtZSkKK0VuY29kZXI6OkVuY29kZXIoTWVzc2FnZU5hbWUgbWVz
c2FnZU5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpCisgICAgOiBtX21lc3NhZ2VOYW1lKG1l
c3NhZ2VOYW1lKQogICAgICwgbV9kZXN0aW5hdGlvbklEKGRlc3RpbmF0aW9uSUQpCiAgICAgLCBt
X2J1ZmZlcihtX2lubGluZUJ1ZmZlcikKICAgICAsIG1fYnVmZmVyUG9pbnRlcihtX2lubGluZUJ1
ZmZlcikKQEAgLTE2OCwxMCArMTY3LDcgQEAgdm9pZCBFbmNvZGVyOjpyZXNlcnZlKHNpemVfdCBz
aXplKQogCiB2b2lkIEVuY29kZXI6OmVuY29kZUhlYWRlcigpCiB7Ci0gICAgQVNTRVJUKCFtX21l
c3NhZ2VSZWNlaXZlck5hbWUuaXNFbXB0eSgpKTsKLQogICAgICp0aGlzIDw8IGRlZmF1bHRNZXNz
YWdlRmxhZ3M7Ci0gICAgKnRoaXMgPDwgbV9tZXNzYWdlUmVjZWl2ZXJOYW1lOwogICAgICp0aGlz
IDw8IG1fbWVzc2FnZU5hbWU7CiAgICAgKnRoaXMgPDwgbV9kZXN0aW5hdGlvbklEOwogfQpJbmRl
eDogU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRW5jb2Rlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0VuY29kZXIuaAkocmV2aXNpb24gMjYwOTM1KQorKysg
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRW5jb2Rlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
Nyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJBcmd1bWVudENvZGVyLmgiCiAjaW5jbHVkZSAiQXR0
YWNobWVudC5oIgorI2luY2x1ZGUgIk1lc3NhZ2VOYW1lcy5oIgogI2luY2x1ZGUgIlN0cmluZ1Jl
ZmVyZW5jZS5oIgogI2luY2x1ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+CiAjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgpAQCAtMzUsMTUgKzM2LDE2IEBAIG5hbWVzcGFjZSBJUEMgewogCiBjbGFzcyBEYXRh
UmVmZXJlbmNlOwogZW51bSBjbGFzcyBTaG91bGREaXNwYXRjaFdoZW5XYWl0aW5nRm9yU3luY1Jl
cGx5OworZW51bSBjbGFzcyBNZXNzYWdlTmFtZSA6IHVpbnQxNl90OwogCiBjbGFzcyBFbmNvZGVy
IGZpbmFsIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBFbmNv
ZGVyKFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBTdHJpbmdSZWZlcmVuY2Ug
bWVzc2FnZU5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpOworICAgIEVuY29kZXIoTWVzc2Fn
ZU5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpOwogICAgIH5FbmNvZGVyKCk7CiAKLSAgICBT
dHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWVz
c2FnZVJlY2VpdmVyTmFtZTsgfQotICAgIFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZSgpIGNv
bnN0IHsgcmV0dXJuIG1fbWVzc2FnZU5hbWU7IH0KKyAgICBSZWNlaXZlck5hbWUgbWVzc2FnZVJl
Y2VpdmVyTmFtZSgpIGNvbnN0IHsgcmV0dXJuIHJlY2VpdmVyTmFtZShtX21lc3NhZ2VOYW1lKTsg
fQorICAgIE1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lKCkgY29uc3QgeyByZXR1cm4gbV9tZXNzYWdl
TmFtZTsgfQogICAgIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQoKSBjb25zdCB7IHJldHVybiBtX2Rl
c3RpbmF0aW9uSUQ7IH0KIAogICAgIHZvaWQgc2V0SXNTeW5jTWVzc2FnZShib29sKTsKQEAgLTEx
MiwxNCArMTE0LDEzIEBAIHByaXZhdGU6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRT4KICAgICBh
dXRvIGVuY29kZShFIHZhbHVlKSAtPiBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfZW51bTxFPjo6
dmFsdWU+CiAgICAgewotICAgICAgICBBU1NFUlQoaXNWYWxpZEVudW08RT4oc3RhdGljX2Nhc3Q8
dHlwZW5hbWUgc3RkOjp1bmRlcmx5aW5nX3R5cGU8RT46OnR5cGU+KHZhbHVlKSkpOworICAgICAg
ICBBU1NFUlQoV1RGOjppc1ZhbGlkRW51bTxFPihzdGF0aWNfY2FzdDx0eXBlbmFtZSBzdGQ6OnVu
ZGVybHlpbmdfdHlwZTxFPjo6dHlwZT4odmFsdWUpKSk7CiAgICAgICAgIGVuY29kZShzdGF0aWNf
Y2FzdDx0eXBlbmFtZSBzdGQ6OnVuZGVybHlpbmdfdHlwZTxFPjo6dHlwZT4odmFsdWUpKTsKICAg
ICB9CiAKICAgICB2b2lkIGVuY29kZUhlYWRlcigpOwogCi0gICAgU3RyaW5nUmVmZXJlbmNlIG1f
bWVzc2FnZVJlY2VpdmVyTmFtZTsKLSAgICBTdHJpbmdSZWZlcmVuY2UgbV9tZXNzYWdlTmFtZTsK
KyAgICBNZXNzYWdlTmFtZSBtX21lc3NhZ2VOYW1lOwogICAgIHVpbnQ2NF90IG1fZGVzdGluYXRp
b25JRDsKIAogICAgIHVpbnQ4X3QgbV9pbmxpbmVCdWZmZXJbNTEyXTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9IYW5kbGVNZXNzYWdlLmgJKHJldmlzaW9uIDI2MDkzNSkKKysr
IFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaAkod29ya2luZyBjb3B5
KQpAQCAtMTc2LDcgKzE3Niw3IEBAIHZvaWQgaGFuZGxlTWVzc2FnZUFzeW5jKENvbm5lY3Rpb24m
IGNvbm4KICAgICB9CiAKICAgICB0eXBlbmFtZSBUOjpBc3luY1JlcGx5IGNvbXBsZXRpb25IYW5k
bGVyID0gW2xpc3RlbmVySUQgPSAqbGlzdGVuZXJJRCwgY29ubmVjdGlvbiA9IG1ha2VSZWYoY29u
bmVjdGlvbildIChhdXRvJiYuLi4gYXJncykgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8gZW5jb2Rl
ciA9IG1ha2VVbmlxdWU8RW5jb2Rlcj4oIkFzeW5jUmVwbHkiLCBUOjphc3luY01lc3NhZ2VSZXBs
eU5hbWUoKSwgMCk7CisgICAgICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWU8RW5jb2Rlcj4o
VDo6YXN5bmNNZXNzYWdlUmVwbHlOYW1lKCksIDApOwogICAgICAgICAqZW5jb2RlciA8PCBsaXN0
ZW5lcklEOwogICAgICAgICBUOjpzZW5kKFdURk1vdmUoZW5jb2RlciksIFdURk1vdmUoY29ubmVj
dGlvbiksIGFyZ3MuLi4pOwogICAgIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9NZXNzYWdlUmVjZWl2ZXJNYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL01lc3NhZ2VSZWNlaXZlck1hcC5jcHAJKHJldmlzaW9uIDI2MDkzNSkKKysrIFNv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VSZWNlaXZlck1hcC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM5LDM5ICszOSwzOSBAQCBNZXNzYWdlUmVjZWl2ZXJNYXA6On5NZXNzYWdlUmVj
ZWl2ZXJNYXAoCiB7CiB9CiAKLXZvaWQgTWVzc2FnZVJlY2VpdmVyTWFwOjphZGRNZXNzYWdlUmVj
ZWl2ZXIoU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIE1lc3NhZ2VSZWNlaXZl
ciYgbWVzc2FnZVJlY2VpdmVyKQordm9pZCBNZXNzYWdlUmVjZWl2ZXJNYXA6OmFkZE1lc3NhZ2VS
ZWNlaXZlcihSZWNlaXZlck5hbWUgbWVzc2FnZVJlY2VpdmVyTmFtZSwgTWVzc2FnZVJlY2VpdmVy
JiBtZXNzYWdlUmVjZWl2ZXIpCiB7Ci0gICAgQVNTRVJUKCFtX2dsb2JhbE1lc3NhZ2VSZWNlaXZl
cnMuY29udGFpbnMobWVzc2FnZVJlY2VpdmVyTmFtZSkpOworICAgIEFTU0VSVCghbV9nbG9iYWxN
ZXNzYWdlUmVjZWl2ZXJzLmNvbnRhaW5zKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KG1lc3NhZ2VSZWNl
aXZlck5hbWUpKSk7CiAKICAgICBtZXNzYWdlUmVjZWl2ZXIud2lsbEJlQWRkZWRUb01lc3NhZ2VS
ZWNlaXZlck1hcCgpOwotICAgIG1fZ2xvYmFsTWVzc2FnZVJlY2VpdmVycy5zZXQobWVzc2FnZVJl
Y2VpdmVyTmFtZSwgJm1lc3NhZ2VSZWNlaXZlcik7CisgICAgbV9nbG9iYWxNZXNzYWdlUmVjZWl2
ZXJzLnNldChzdGF0aWNfY2FzdDx1aW50OF90PihtZXNzYWdlUmVjZWl2ZXJOYW1lKSwgJm1lc3Nh
Z2VSZWNlaXZlcik7CiB9CiAKLXZvaWQgTWVzc2FnZVJlY2VpdmVyTWFwOjphZGRNZXNzYWdlUmVj
ZWl2ZXIoU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3Rp
bmF0aW9uSUQsIE1lc3NhZ2VSZWNlaXZlciYgbWVzc2FnZVJlY2VpdmVyKQordm9pZCBNZXNzYWdl
UmVjZWl2ZXJNYXA6OmFkZE1lc3NhZ2VSZWNlaXZlcihSZWNlaXZlck5hbWUgbWVzc2FnZVJlY2Vp
dmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgTWVzc2FnZVJlY2VpdmVyJiBtZXNzYWdl
UmVjZWl2ZXIpCiB7CiAgICAgQVNTRVJUKGRlc3RpbmF0aW9uSUQpOwotICAgIEFTU0VSVCghbV9t
ZXNzYWdlUmVjZWl2ZXJzLmNvbnRhaW5zKHN0ZDo6bWFrZV9wYWlyKG1lc3NhZ2VSZWNlaXZlck5h
bWUsIGRlc3RpbmF0aW9uSUQpKSk7Ci0gICAgQVNTRVJUKCFtX2dsb2JhbE1lc3NhZ2VSZWNlaXZl
cnMuY29udGFpbnMobWVzc2FnZVJlY2VpdmVyTmFtZSkpOworICAgIEFTU0VSVCghbV9tZXNzYWdl
UmVjZWl2ZXJzLmNvbnRhaW5zKHN0ZDo6bWFrZV9wYWlyKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KG1l
c3NhZ2VSZWNlaXZlck5hbWUpLCBkZXN0aW5hdGlvbklEKSkpOworICAgIEFTU0VSVCghbV9nbG9i
YWxNZXNzYWdlUmVjZWl2ZXJzLmNvbnRhaW5zKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KG1lc3NhZ2VS
ZWNlaXZlck5hbWUpKSk7CiAKICAgICBtZXNzYWdlUmVjZWl2ZXIud2lsbEJlQWRkZWRUb01lc3Nh
Z2VSZWNlaXZlck1hcCgpOwotICAgIG1fbWVzc2FnZVJlY2VpdmVycy5zZXQoc3RkOjptYWtlX3Bh
aXIobWVzc2FnZVJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRCksICZtZXNzYWdlUmVjZWl2ZXIp
OworICAgIG1fbWVzc2FnZVJlY2VpdmVycy5zZXQoc3RkOjptYWtlX3BhaXIoc3RhdGljX2Nhc3Q8
dWludDhfdD4obWVzc2FnZVJlY2VpdmVyTmFtZSksIGRlc3RpbmF0aW9uSUQpLCAmbWVzc2FnZVJl
Y2VpdmVyKTsKIH0KIAotdm9pZCBNZXNzYWdlUmVjZWl2ZXJNYXA6OnJlbW92ZU1lc3NhZ2VSZWNl
aXZlcihTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSkKK3ZvaWQgTWVzc2FnZVJl
Y2VpdmVyTWFwOjpyZW1vdmVNZXNzYWdlUmVjZWl2ZXIoUmVjZWl2ZXJOYW1lIG1lc3NhZ2VSZWNl
aXZlck5hbWUpCiB7Ci0gICAgQVNTRVJUKG1fZ2xvYmFsTWVzc2FnZVJlY2VpdmVycy5jb250YWlu
cyhtZXNzYWdlUmVjZWl2ZXJOYW1lKSk7CisgICAgQVNTRVJUKG1fZ2xvYmFsTWVzc2FnZVJlY2Vp
dmVycy5jb250YWlucyhzdGF0aWNfY2FzdDx1aW50OF90PihtZXNzYWdlUmVjZWl2ZXJOYW1lKSkp
OwogCi0gICAgYXV0byBpdCA9IG1fZ2xvYmFsTWVzc2FnZVJlY2VpdmVycy5maW5kKG1lc3NhZ2VS
ZWNlaXZlck5hbWUpOworICAgIGF1dG8gaXQgPSBtX2dsb2JhbE1lc3NhZ2VSZWNlaXZlcnMuZmlu
ZChzdGF0aWNfY2FzdDx1aW50OF90PihtZXNzYWdlUmVjZWl2ZXJOYW1lKSk7CiAgICAgaXQtPnZh
bHVlLT53aWxsQmVSZW1vdmVkRnJvbU1lc3NhZ2VSZWNlaXZlck1hcCgpOwogCiAgICAgbV9nbG9i
YWxNZXNzYWdlUmVjZWl2ZXJzLnJlbW92ZShpdCk7CiB9CiAKLXZvaWQgTWVzc2FnZVJlY2VpdmVy
TWFwOjpyZW1vdmVNZXNzYWdlUmVjZWl2ZXIoU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZl
ck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpCit2b2lkIE1lc3NhZ2VSZWNlaXZlck1hcDo6
cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKFJlY2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCB1
aW50NjRfdCBkZXN0aW5hdGlvbklEKQogewotICAgIEFTU0VSVChtX21lc3NhZ2VSZWNlaXZlcnMu
Y29udGFpbnMoc3RkOjptYWtlX3BhaXIobWVzc2FnZVJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25J
RCkpKTsKKyAgICBBU1NFUlQobV9tZXNzYWdlUmVjZWl2ZXJzLmNvbnRhaW5zKHN0ZDo6bWFrZV9w
YWlyKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KG1lc3NhZ2VSZWNlaXZlck5hbWUpLCBkZXN0aW5hdGlv
bklEKSkpOwogCi0gICAgYXV0byBpdCA9IG1fbWVzc2FnZVJlY2VpdmVycy5maW5kKHN0ZDo6bWFr
ZV9wYWlyKG1lc3NhZ2VSZWNlaXZlck5hbWUsIGRlc3RpbmF0aW9uSUQpKTsKKyAgICBhdXRvIGl0
ID0gbV9tZXNzYWdlUmVjZWl2ZXJzLmZpbmQoc3RkOjptYWtlX3BhaXIoc3RhdGljX2Nhc3Q8dWlu
dDhfdD4obWVzc2FnZVJlY2VpdmVyTmFtZSksIGRlc3RpbmF0aW9uSUQpKTsKICAgICBpdC0+dmFs
dWUtPndpbGxCZVJlbW92ZWRGcm9tTWVzc2FnZVJlY2VpdmVyTWFwKCk7CiAKICAgICBtX21lc3Nh
Z2VSZWNlaXZlcnMucmVtb3ZlKGl0KTsKQEAgLTc5LDIzICs3OSwyMyBAQCB2b2lkIE1lc3NhZ2VS
ZWNlaXZlck1hcDo6cmVtb3ZlTWVzc2FnZVJlCiAKIHZvaWQgTWVzc2FnZVJlY2VpdmVyTWFwOjpy
ZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZVJlY2VpdmVyJiBtZXNzYWdlUmVjZWl2ZXIpCiB7
Ci0gICAgVmVjdG9yPFN0cmluZ1JlZmVyZW5jZT4gZ2xvYmFsUmVjZWl2ZXJzVG9SZW1vdmU7Cisg
ICAgVmVjdG9yPFJlY2VpdmVyTmFtZT4gZ2xvYmFsUmVjZWl2ZXJzVG9SZW1vdmU7CiAgICAgZm9y
IChhdXRvJiBbbmFtZSwgcmVjZWl2ZXJdIDogbV9nbG9iYWxNZXNzYWdlUmVjZWl2ZXJzKSB7CiAg
ICAgICAgIGlmIChyZWNlaXZlciA9PSAmbWVzc2FnZVJlY2VpdmVyKQotICAgICAgICAgICAgZ2xv
YmFsUmVjZWl2ZXJzVG9SZW1vdmUuYXBwZW5kKG5hbWUpOworICAgICAgICAgICAgZ2xvYmFsUmVj
ZWl2ZXJzVG9SZW1vdmUuYXBwZW5kKHN0YXRpY19jYXN0PFJlY2VpdmVyTmFtZT4obmFtZSkpOwog
ICAgIH0KIAogICAgIGZvciAoYXV0byYgZ2xvYmFsUmVjZWl2ZXJUb1JlbW92ZSA6IGdsb2JhbFJl
Y2VpdmVyc1RvUmVtb3ZlKQogICAgICAgICByZW1vdmVNZXNzYWdlUmVjZWl2ZXIoZ2xvYmFsUmVj
ZWl2ZXJUb1JlbW92ZSk7CiAKLSAgICBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZ1JlZmVyZW5jZSwg
dWludDY0X3Q+PiByZWNlaXZlcnNUb1JlbW92ZTsKKyAgICBWZWN0b3I8c3RkOjpwYWlyPHVpbnQ4
X3QsIHVpbnQ2NF90Pj4gcmVjZWl2ZXJzVG9SZW1vdmU7CiAgICAgZm9yIChhdXRvJiBbbmFtZUFu
ZERlc3RpbmF0aW9uSUQsIHJlY2VpdmVyXSA6IG1fbWVzc2FnZVJlY2VpdmVycykgewogICAgICAg
ICBpZiAocmVjZWl2ZXIgPT0gJm1lc3NhZ2VSZWNlaXZlcikKLSAgICAgICAgICAgIHJlY2VpdmVy
c1RvUmVtb3ZlLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihuYW1lQW5kRGVzdGluYXRpb25JRC5maXJz
dCwgbmFtZUFuZERlc3RpbmF0aW9uSUQuc2Vjb25kKSk7CisgICAgICAgICAgICByZWNlaXZlcnNU
b1JlbW92ZS5hcHBlbmQoc3RkOjptYWtlX3BhaXIoc3RhdGljX2Nhc3Q8dWludDhfdD4obmFtZUFu
ZERlc3RpbmF0aW9uSUQuZmlyc3QpLCBuYW1lQW5kRGVzdGluYXRpb25JRC5zZWNvbmQpKTsKICAg
ICB9CiAKICAgICBmb3IgKGF1dG8mIFtuYW1lLCBkZXN0aW5hdGlvbklEXSA6IHJlY2VpdmVyc1Rv
UmVtb3ZlKQotICAgICAgICByZW1vdmVNZXNzYWdlUmVjZWl2ZXIobmFtZSwgZGVzdGluYXRpb25J
RCk7CisgICAgICAgIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihzdGF0aWNfY2FzdDxSZWNlaXZlck5h
bWU+KG5hbWUpLCBkZXN0aW5hdGlvbklEKTsKIH0KIAogdm9pZCBNZXNzYWdlUmVjZWl2ZXJNYXA6
OmludmFsaWRhdGUoKQpAQCAtMTEyLDE0ICsxMTIsMTQgQEAgdm9pZCBNZXNzYWdlUmVjZWl2ZXJN
YXA6OmludmFsaWRhdGUoKQogCiBib29sIE1lc3NhZ2VSZWNlaXZlck1hcDo6ZGlzcGF0Y2hNZXNz
YWdlKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgaWYg
KE1lc3NhZ2VSZWNlaXZlciogbWVzc2FnZVJlY2VpdmVyID0gbV9nbG9iYWxNZXNzYWdlUmVjZWl2
ZXJzLmdldChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSkpIHsKKyAgICBpZiAoTWVzc2Fn
ZVJlY2VpdmVyKiBtZXNzYWdlUmVjZWl2ZXIgPSBtX2dsb2JhbE1lc3NhZ2VSZWNlaXZlcnMuZ2V0
KHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpKSkpIHsK
ICAgICAgICAgQVNTRVJUKCFkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSk7CiAKICAgICAgICAgbWVz
c2FnZVJlY2VpdmVyLT5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgaWYgKE1lc3NhZ2VSZWNlaXZlciogbWVz
c2FnZVJlY2VpdmVyID0gbV9tZXNzYWdlUmVjZWl2ZXJzLmdldChzdGQ6Om1ha2VfcGFpcihkZWNv
ZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpKSkgewor
ICAgIGlmIChNZXNzYWdlUmVjZWl2ZXIqIG1lc3NhZ2VSZWNlaXZlciA9IG1fbWVzc2FnZVJlY2Vp
dmVycy5nZXQoc3RkOjptYWtlX3BhaXIoc3RhdGljX2Nhc3Q8dWludDhfdD4oZGVjb2Rlci5tZXNz
YWdlUmVjZWl2ZXJOYW1lKCkpLCBkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSkpKSB7CiAgICAgICAg
IG1lc3NhZ2VSZWNlaXZlci0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTEyOSwxNCArMTI5LDE0IEBAIGJvb2wg
TWVzc2FnZVJlY2VpdmVyTWFwOjpkaXNwYXRjaE1lc3NhZ2UKIAogYm9vbCBNZXNzYWdlUmVjZWl2
ZXJNYXA6OmRpc3BhdGNoU3luY01lc3NhZ2UoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgRGVjb2Rl
ciYgZGVjb2Rlciwgc3RkOjp1bmlxdWVfcHRyPEVuY29kZXI+JiByZXBseUVuY29kZXIpCiB7Ci0g
ICAgaWYgKE1lc3NhZ2VSZWNlaXZlciogbWVzc2FnZVJlY2VpdmVyID0gbV9nbG9iYWxNZXNzYWdl
UmVjZWl2ZXJzLmdldChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSkpIHsKKyAgICBpZiAo
TWVzc2FnZVJlY2VpdmVyKiBtZXNzYWdlUmVjZWl2ZXIgPSBtX2dsb2JhbE1lc3NhZ2VSZWNlaXZl
cnMuZ2V0KHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgp
KSkpIHsKICAgICAgICAgQVNTRVJUKCFkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSk7CiAKICAgICAg
ICAgbWVzc2FnZVJlY2VpdmVyLT5kaWRSZWNlaXZlU3luY01lc3NhZ2UoY29ubmVjdGlvbiwgZGVj
b2RlciwgcmVwbHlFbmNvZGVyKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAg
aWYgKE1lc3NhZ2VSZWNlaXZlciogbWVzc2FnZVJlY2VpdmVyID0gbV9tZXNzYWdlUmVjZWl2ZXJz
LmdldChzdGQ6Om1ha2VfcGFpcihkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgZGVjb2Rl
ci5kZXN0aW5hdGlvbklEKCkpKSkgeworICAgIGlmIChNZXNzYWdlUmVjZWl2ZXIqIG1lc3NhZ2VS
ZWNlaXZlciA9IG1fbWVzc2FnZVJlY2VpdmVycy5nZXQoc3RkOjptYWtlX3BhaXIoc3RhdGljX2Nh
c3Q8dWludDhfdD4oZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkpLCBkZWNvZGVyLmRlc3Rp
bmF0aW9uSUQoKSkpKSB7CiAgICAgICAgIG1lc3NhZ2VSZWNlaXZlci0+ZGlkUmVjZWl2ZVN5bmNN
ZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5RW5jb2Rlcik7CiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VS
ZWNlaXZlck1hcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01l
c3NhZ2VSZWNlaXZlck1hcC5oCShyZXZpc2lvbiAyNjA5MzUpCisrKyBTb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9NZXNzYWdlUmVjZWl2ZXJNYXAuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsOCAr
MjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5k
ZWYgTWVzc2FnZVJlY2VpdmVyTWFwX2gKLSNkZWZpbmUgTWVzc2FnZVJlY2VpdmVyTWFwX2gKKyNw
cmFnbWEgb25jZQogCiAjaW5jbHVkZSAiU3RyaW5nUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4KQEAgLTM2LDE3ICszNSwxOCBAQCBjbGFzcyBDb25uZWN0aW9uOwogY2xhc3Mg
RW5jb2RlcjsKIGNsYXNzIERlY29kZXI7CiBjbGFzcyBNZXNzYWdlUmVjZWl2ZXI7CitlbnVtIGNs
YXNzIFJlY2VpdmVyTmFtZSA6IHVpbnQ4X3Q7CiAKIGNsYXNzIE1lc3NhZ2VSZWNlaXZlck1hcCB7
CiBwdWJsaWM6CiAgICAgTWVzc2FnZVJlY2VpdmVyTWFwKCk7CiAgICAgfk1lc3NhZ2VSZWNlaXZl
ck1hcCgpOwogCi0gICAgdm9pZCBhZGRNZXNzYWdlUmVjZWl2ZXIoU3RyaW5nUmVmZXJlbmNlIG1l
c3NhZ2VSZWNlaXZlck5hbWUsIE1lc3NhZ2VSZWNlaXZlciYpOwotICAgIHZvaWQgYWRkTWVzc2Fn
ZVJlY2VpdmVyKFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBk
ZXN0aW5hdGlvbklELCBNZXNzYWdlUmVjZWl2ZXImKTsKKyAgICB2b2lkIGFkZE1lc3NhZ2VSZWNl
aXZlcihSZWNlaXZlck5hbWUsIE1lc3NhZ2VSZWNlaXZlciYpOworICAgIHZvaWQgYWRkTWVzc2Fn
ZVJlY2VpdmVyKFJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgTWVzc2FnZVJl
Y2VpdmVyJik7CiAKLSAgICB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihTdHJpbmdSZWZlcmVu
Y2UgbWVzc2FnZVJlY2VpdmVyTmFtZSk7Ci0gICAgdm9pZCByZW1vdmVNZXNzYWdlUmVjZWl2ZXIo
U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9u
SUQpOworICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKFJlY2VpdmVyTmFtZSk7CisgICAg
dm9pZCByZW1vdmVNZXNzYWdlUmVjZWl2ZXIoUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5h
dGlvbklEKTsKICAgICB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlUmVjZWl2ZXIm
KTsKIAogICAgIHZvaWQgaW52YWxpZGF0ZSgpOwpAQCAtNTYsMTEgKzU2LDkgQEAgcHVibGljOgog
CiBwcml2YXRlOgogICAgIC8vIE1lc3NhZ2UgcmVjZWl2ZXJzIHRoYXQgZG9uJ3QgcmVxdWlyZSBh
IGRlc3RpbmF0aW9uIElELgotICAgIEhhc2hNYXA8U3RyaW5nUmVmZXJlbmNlLCBNZXNzYWdlUmVj
ZWl2ZXIqPiBtX2dsb2JhbE1lc3NhZ2VSZWNlaXZlcnM7CisgICAgSGFzaE1hcDx1aW50OF90LCBN
ZXNzYWdlUmVjZWl2ZXIqPiBtX2dsb2JhbE1lc3NhZ2VSZWNlaXZlcnM7CiAKLSAgICBIYXNoTWFw
PHN0ZDo6cGFpcjxTdHJpbmdSZWZlcmVuY2UsIHVpbnQ2NF90PiwgTWVzc2FnZVJlY2VpdmVyKj4g
bV9tZXNzYWdlUmVjZWl2ZXJzOworICAgIEhhc2hNYXA8c3RkOjpwYWlyPHVpbnQ4X3QsIHVpbnQ2
NF90PiwgTWVzc2FnZVJlY2VpdmVyKj4gbV9tZXNzYWdlUmVjZWl2ZXJzOwogfTsKIAogfTsKLQot
I2VuZGlmIC8vIE1lc3NhZ2VSZWNlaXZlck1hcF9oCkluZGV4OiBTb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9NZXNzYWdlU2VuZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvTWVzc2FnZVNlbmRlci5oCShyZXZpc2lvbiAyNjA5MzUpCisrKyBTb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcg
KzQzLDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgc3RhdGljX2Fzc2VydCghVTo6aXNTeW5j
LCAiTWVzc2FnZSBpcyBzeW5jISIpOwogCi0gICAgICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlx
dWU8RW5jb2Rlcj4oVTo6cmVjZWl2ZXJOYW1lKCksIFU6Om5hbWUoKSwgZGVzdGluYXRpb25JRCk7
CisgICAgICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWU8RW5jb2Rlcj4oVTo6bmFtZSgpLCBk
ZXN0aW5hdGlvbklEKTsKICAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKG1lc3NhZ2UuYXJndW1lbnRz
KCkpOwogICAgICAgICAKICAgICAgICAgcmV0dXJuIHNlbmRNZXNzYWdlKFdURk1vdmUoZW5jb2Rl
ciksIHNlbmRPcHRpb25zKTsKQEAgLTg4LDcgKzg4LDcgQEAgcHVibGljOgogICAgIHsKICAgICAg
ICAgQ09NUElMRV9BU1NFUlQoIVQ6OmlzU3luYywgQXN5bmNNZXNzYWdlRXhwZWN0ZWQpOwogCi0g
ICAgICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWU8SVBDOjpFbmNvZGVyPihUOjpyZWNlaXZl
ck5hbWUoKSwgVDo6bmFtZSgpLCBkZXN0aW5hdGlvbklEKTsKKyAgICAgICAgYXV0byBlbmNvZGVy
ID0gbWFrZVVuaXF1ZTxJUEM6OkVuY29kZXI+KFQ6Om5hbWUoKSwgZGVzdGluYXRpb25JRCk7CiAg
ICAgICAgIHVpbnQ2NF90IGxpc3RlbmVySUQgPSBJUEM6Om5leHRBc3luY1JlcGx5SGFuZGxlcklE
KCk7CiAgICAgICAgIGVuY29kZXItPmVuY29kZShsaXN0ZW5lcklEKTsKICAgICAgICAgZW5jb2Rl
ci0+ZW5jb2RlKG1lc3NhZ2UuYXJndW1lbnRzKCkpOwpJbmRleDogU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvY29jb2EvQ29ubmVjdGlvbkNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL0Nvbm5lY3Rpb25Db2NvYS5tbQkocmV2aXNpb24gMjYw
OTM1KQorKysgU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvQ29ubmVjdGlvbkNvY29h
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMTQsNyArMjE0LDcgQEAgYm9vbCBDb25uZWN0aW9uOjpv
cGVuKCkKICAgICAgICAgbV9pc0Nvbm5lY3RlZCA9IHRydWU7CiAgICAgICAgIAogICAgICAgICAv
LyBTZW5kIHRoZSBpbml0aWFsaXplIG1lc3NhZ2UsIHdoaWNoIGNvbnRhaW5zIGEgc2VuZCByaWdo
dCBmb3IgdGhlIHNlcnZlciB0byB1c2UuCi0gICAgICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlx
dWU8RW5jb2Rlcj4oIklQQyIsICJJbml0aWFsaXplQ29ubmVjdGlvbiIsIDApOworICAgICAgICBh
dXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlPEVuY29kZXI+KE1lc3NhZ2VOYW1lOjpJbml0aWFsaXpl
Q29ubmVjdGlvbiwgMCk7CiAgICAgICAgIGVuY29kZXItPmVuY29kZShNYWNoUG9ydChtX3JlY2Vp
dmVQb3J0LCBNQUNIX01TR19UWVBFX01BS0VfU0VORCkpOwogCiAgICAgICAgIGluaXRpYWxpemVT
ZW5kU291cmNlKCk7CkBAIC0yNzMsNyArMjczLDcgQEAgYm9vbCBDb25uZWN0aW9uOjpzZW5kTWVz
c2FnZShzdGQ6OnVuaXF1ZQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBkZWZhdWx0Ogot
ICAgICAgICBDU3RyaW5nIG1lc3NhZ2VOYW1lID0gbWFrZVN0cmluZyhtZXNzYWdlLT5tZXNzYWdl
UmVjZWl2ZXJOYW1lKCkuZGF0YSgpLCAiOjoiLCBtZXNzYWdlLT5tZXNzYWdlTmFtZSgpLmRhdGEo
KSkudXRmOCgpOworICAgICAgICBDU3RyaW5nIG1lc3NhZ2VOYW1lKGRlc2NyaXB0aW9uKG1lc3Nh
Z2UtPm1lc3NhZ2VOYW1lKCkpKTsKICAgICAgICAgV2ViS2l0OjpzZXRDcmFzaFJlcG9ydEFwcGxp
Y2F0aW9uU3BlY2lmaWNJbmZvcm1hdGlvbigoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpW05TU3RyaW5n
IHN0cmluZ1dpdGhGb3JtYXQ6QCJVbmhhbmRsZWQgZXJyb3IgY29kZSAleCwgbWVzc2FnZSAnJXMn
LCBoYXNoICVkIiwga3IsIG1lc3NhZ2VOYW1lLmRhdGEoKSwgbWVzc2FnZU5hbWUuaGFzaCgpXSk7
CiAgICAgICAgIENSQVNIX1dJVEhfSU5GTyhrciwgbWVzc2FnZU5hbWUuaGFzaCgpKTsKICAgICB9
CkBAIC0zMDgsNyArMzA4LDcgQEAgYm9vbCBDb25uZWN0aW9uOjpzZW5kT3V0Z29pbmdNZXNzYWdl
KHN0ZAogICAgIH0KIAogICAgIHNpemVfdCBzYWZlTWVzc2FnZVNpemUgPSBtZXNzYWdlU2l6ZS51
bnNhZmVHZXQoKTsKLSAgICBhdXRvIG1lc3NhZ2UgPSBNYWNoTWVzc2FnZTo6Y3JlYXRlKGVuY29k
ZXItPm1lc3NhZ2VSZWNlaXZlck5hbWUoKS50b1N0cmluZygpLCBlbmNvZGVyLT5tZXNzYWdlTmFt
ZSgpLnRvU3RyaW5nKCksIHNhZmVNZXNzYWdlU2l6ZSk7CisgICAgYXV0byBtZXNzYWdlID0gTWFj
aE1lc3NhZ2U6OmNyZWF0ZShlbmNvZGVyLT5tZXNzYWdlTmFtZSgpLCBzYWZlTWVzc2FnZVNpemUp
OwogICAgIGlmICghbWVzc2FnZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC01MzIsNyAr
NTMyLDcgQEAgdm9pZCBDb25uZWN0aW9uOjpyZWNlaXZlU291cmNlRXZlbnRIYW5kbAogICAgIGRl
Y29kZXItPnNldEltcG9ydGFuY2VBc3NlcnRpb24obWFrZVVuaXF1ZTxJbXBvcnRhbmNlQXNzZXJ0
aW9uPihoZWFkZXIpKTsKICNlbmRpZgogCi0gICAgaWYgKGRlY29kZXItPm1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSA9PSAiSVBDIiAmJiBkZWNvZGVyLT5tZXNzYWdlTmFtZSgpID09ICJJbml0aWFsaXpl
Q29ubmVjdGlvbiIpIHsKKyAgICBpZiAoZGVjb2Rlci0+bWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdl
TmFtZTo6SW5pdGlhbGl6ZUNvbm5lY3Rpb24pIHsKICAgICAgICAgQVNTRVJUKG1faXNTZXJ2ZXIp
OwogICAgICAgICBBU1NFUlQoIW1faXNDb25uZWN0ZWQpOwogICAgICAgICBBU1NFUlQoIW1fc2Vu
ZFBvcnQpOwpJbmRleDogU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvTWFjaE1lc3Nh
Z2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL01h
Y2hNZXNzYWdlLmNwcAkocmV2aXNpb24gMjYwOTM1KQorKysgU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvY29jb2EvTWFjaE1lc3NhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwxOCArMzks
MTcgQEAgc3RhdGljIGlubGluZSBDaGVja2VkU2l6ZSBzYWZlUm91bmRNc2coQwogICAgIHJldHVy
biAoKHZhbHVlICsgKGFsaWdubWVudCAtIDEpKSAvIGFsaWdubWVudCkgKiBhbGlnbm1lbnQ7CiB9
CiAKLXN0ZDo6dW5pcXVlX3B0cjxNYWNoTWVzc2FnZT4gTWFjaE1lc3NhZ2U6OmNyZWF0ZShDU3Ry
aW5nJiYgbWVzc2FnZVJlY2VpdmVyTmFtZSwgQ1N0cmluZyYmIG1lc3NhZ2VOYW1lLCBzaXplX3Qg
c2l6ZSkKK3N0ZDo6dW5pcXVlX3B0cjxNYWNoTWVzc2FnZT4gTWFjaE1lc3NhZ2U6OmNyZWF0ZShN
ZXNzYWdlTmFtZSBtZXNzYWdlTmFtZSwgc2l6ZV90IHNpemUpCiB7CiAgICAgYXV0byBidWZmZXJT
aXplID0gQ2hlY2tlZFNpemUoc2l6ZW9mKE1hY2hNZXNzYWdlKSkgKyBzaXplOwogICAgIGlmIChi
dWZmZXJTaXplLmhhc092ZXJmbG93ZWQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
dm9pZCogbWVtb3J5ID0gV1RGOjpmYXN0WmVyb2VkTWFsbG9jKGJ1ZmZlclNpemUudW5zYWZlR2V0
KCkpOwotICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8TWFjaE1lc3NhZ2U+IHsgbmV3IChOb3RO
dWxsLCBtZW1vcnkpIE1hY2hNZXNzYWdlIHsgV1RGTW92ZShtZXNzYWdlUmVjZWl2ZXJOYW1lKSwg
V1RGTW92ZShtZXNzYWdlTmFtZSksIHNpemUgfSB9OworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9w
dHI8TWFjaE1lc3NhZ2U+IHsgbmV3IChOb3ROdWxsLCBtZW1vcnkpIE1hY2hNZXNzYWdlIHsgbWVz
c2FnZU5hbWUsIHNpemUgfSB9OwogfQogCi1NYWNoTWVzc2FnZTo6TWFjaE1lc3NhZ2UoQ1N0cmlu
ZyYmIG1lc3NhZ2VSZWNlaXZlck5hbWUsIENTdHJpbmcmJiBtZXNzYWdlTmFtZSwgc2l6ZV90IHNp
emUpCi0gICAgOiBtX21lc3NhZ2VSZWNlaXZlck5hbWUoV1RGTW92ZShtZXNzYWdlUmVjZWl2ZXJO
YW1lKSkKLSAgICAsIG1fbWVzc2FnZU5hbWUoV1RGTW92ZShtZXNzYWdlTmFtZSkpCitNYWNoTWVz
c2FnZTo6TWFjaE1lc3NhZ2UoTWVzc2FnZU5hbWUgbWVzc2FnZU5hbWUsIHNpemVfdCBzaXplKQor
ICAgIDogbV9tZXNzYWdlTmFtZSB7IG1lc3NhZ2VOYW1lIH0KICAgICAsIG1fc2l6ZSB7IHNpemUg
fQogewogfQpJbmRleDogU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvTWFjaE1lc3Nh
Z2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9NYWNo
TWVzc2FnZS5oCShyZXZpc2lvbiAyNjA5MzUpCisrKyBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9jb2NvYS9NYWNoTWVzc2FnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAK
ICNpZiBQTEFURk9STShDT0NPQSkKIAorI2luY2x1ZGUgIk1lc3NhZ2VOYW1lcy5oIgogI2luY2x1
ZGUgPG1hY2gvbWVzc2FnZS5oPgogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvQ2hl
Y2tlZEFyaXRobWV0aWMuaD4KQEAgLTM3LDcgKzM4LDcgQEAgbmFtZXNwYWNlIElQQyB7CiBjbGFz
cyBNYWNoTWVzc2FnZSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxNYWNoTWVzc2FnZT4gY3JlYXRlKENTdHJpbmcmJiBt
ZXNzYWdlUmVjZWl2ZXJOYW1lLCBDU3RyaW5nJiYgbWVzc2FnZU5hbWUsIHNpemVfdCk7CisgICAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxNYWNoTWVzc2FnZT4gY3JlYXRlKE1lc3NhZ2VOYW1lLCBz
aXplX3QpOwogICAgIH5NYWNoTWVzc2FnZSgpOwogCiAgICAgc3RhdGljIENoZWNrZWRTaXplIG1l
c3NhZ2VTaXplKHNpemVfdCBib2R5U2l6ZSwgc2l6ZV90IHBvcnREZXNjcmlwdG9yQ291bnQsIHNp
emVfdCBtZW1vcnlEZXNjcmlwdG9yQ291bnQpOwpAQCAtNDcsMTQgKzQ4LDEzIEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgbGVha0Rlc2NyaXB0b3JzKCk7CiAKLSAgICBjb25zdCBDU3RyaW5nJiBtZXNz
YWdlUmVjZWl2ZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gbV9tZXNzYWdlUmVjZWl2ZXJOYW1lOyB9
Ci0gICAgY29uc3QgQ1N0cmluZyYgbWVzc2FnZU5hbWUoKSBjb25zdCB7IHJldHVybiBtX21lc3Nh
Z2VOYW1lOyB9CisgICAgUmVjZWl2ZXJOYW1lIG1lc3NhZ2VSZWNlaXZlck5hbWUoKSBjb25zdCB7
IHJldHVybiByZWNlaXZlck5hbWUobV9tZXNzYWdlTmFtZSk7IH0KKyAgICBNZXNzYWdlTmFtZSBt
ZXNzYWdlTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWVzc2FnZU5hbWU7IH0KIAogcHJpdmF0ZToK
LSAgICBNYWNoTWVzc2FnZShDU3RyaW5nJiYgbWVzc2FnZVJlY2VpdmVyTmFtZSwgQ1N0cmluZyYm
IG1lc3NhZ2VOYW1lLCBzaXplX3QpOworICAgIE1hY2hNZXNzYWdlKE1lc3NhZ2VOYW1lLCBzaXpl
X3QpOwogCi0gICAgQ1N0cmluZyBtX21lc3NhZ2VSZWNlaXZlck5hbWU7Ci0gICAgQ1N0cmluZyBt
X21lc3NhZ2VOYW1lOworICAgIE1lc3NhZ2VOYW1lIG1fbWVzc2FnZU5hbWU7CiAgICAgc2l6ZV90
IG1fc2l6ZTsKICAgICBib29sIG1fc2hvdWxkRnJlZURlc2NyaXB0b3JzIHsgdHJ1ZSB9OwogICAg
IG1hY2hfbXNnX2hlYWRlcl90IG1fbWVzc2FnZUhlYWRlcltdOwpJbmRleDogU291cmNlL1dlYktp
dC9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCShyZXZp
c2lvbiAyNjA5MzUpCisrKyBTb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nv
bm5lY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDUsNyArMjA1LDcgQEAgdm9pZCBXZWJQ
cm9jZXNzQ29ubmVjdGlvbjo6ZGVzdHJveVBsdWdpbgogICAgIGRlc3Ryb3lQbHVnaW5Db250cm9s
bGVyUHJveHkocGx1Z2luQ29udHJvbGxlclByb3h5KTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzQ29u
bmVjdGlvbjo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6
U3RyaW5nUmVmZXJlbmNlLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSkKK3ZvaWQgV2ViUHJvY2Vzc0Nv
bm5lY3Rpb246OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6
Ok1lc3NhZ2VOYW1lKQogewogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQuCiB9CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uaAko
cmV2aXNpb24gMjYwOTM1KQorKysgU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nl
c3NDb25uZWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTY0LDcgKzY0LDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2Rl
ciYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mKSBvdmVycmlkZTsKLSAg
ICB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OlN0
cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBt
ZXNzYWdlTmFtZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlTmFtZSkgb3ZlcnJpZGU7CiAKICAgICAvLyBN
ZXNzYWdlIGhhbmRsZXJzLgogICAgIHZvaWQgZGlkUmVjZWl2ZVdlYlByb2Nlc3NDb25uZWN0aW9u
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvU2NyaXB0cy9NYWtlZmlsZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1Njcmlw
dHMvTWFrZWZpbGUJKHJldmlzaW9uIDI2MDkzNSkKKysrIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy9N
YWtlZmlsZQkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDIgQEAKIGFsbDoKLQlweXRob24gLi9n
ZW5lcmF0ZS1tZXNzYWdlLXJlY2VpdmVyLnB5IHdlYmtpdC90ZXN0LXN1cGVyY2xhc3MtbWVzc2Fn
ZXMuaW4gLS1pbXBsZW1lbnRhdGlvbiB3ZWJraXQvTWVzc2FnZVJlY2VpdmVyU3VwZXJjbGFzcy1l
eHBlY3RlZC5jcHAgLS1oZWFkZXIgd2Via2l0L01lc3NhZ2VzU3VwZXJjbGFzcy1leHBlY3RlZC5o
IC0tcmVwbHktaGVhZGVyIHdlYmtpdC9NZXNzYWdlc1JlcGxpZXNTdXBlcmNsYXNzUmVwbGllcy1l
eHBlY3RlZC5oCi0JcHl0aG9uIC4vZ2VuZXJhdGUtbWVzc2FnZS1yZWNlaXZlci5weSB3ZWJraXQv
dGVzdC1sZWdhY3ktbWVzc2FnZXMuaW4gLS1pbXBsZW1lbnRhdGlvbiB3ZWJraXQvTGVnYWN5TWVz
c2FnZVJlY2VpdmVyLWV4cGVjdGVkLmNwcCAtLWhlYWRlciB3ZWJraXQvTGVnYWN5TWVzc2FnZXMt
ZXhwZWN0ZWQuaCAtLXJlcGx5LWhlYWRlciB3ZWJraXQvTGVnYWN5TWVzc2FnZXNSZXBsaWVzLWV4
cGVjdGVkLmgKLQlweXRob24gLi9nZW5lcmF0ZS1tZXNzYWdlLXJlY2VpdmVyLnB5IHdlYmtpdC90
ZXN0LW1lc3NhZ2VzLmluIC0taW1wbGVtZW50YXRpb24gd2Via2l0L01lc3NhZ2VSZWNlaXZlci1l
eHBlY3RlZC5jcHAgLS1oZWFkZXIgd2Via2l0L01lc3NhZ2VzLWV4cGVjdGVkLmggLS1yZXBseS1o
ZWFkZXIgd2Via2l0L01lc3NhZ2VzUmVwbGllcy1leHBlY3RlZC5oCi0KKwlweXRob24gZ2VuZXJh
dGUtbWVzc2FnZS1yZWNlaXZlci5weSB3ZWJraXQgdGVzdC1zdXBlcmNsYXNzIHRlc3QtbGVnYWN5
IHRlc3QKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy9NZXNzYWdlTmFtZXMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy9NZXNzYWdlTmFtZXMuY3BwCShub25leGlz
dGVudCkKKysrIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy9NZXNzYWdlTmFtZXMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMjk4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUgorICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisgKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorICog
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIk1lc3NhZ2VOYW1lcy5oIgorCituYW1lc3BhY2UgSVBDIHsKKwor
Y29uc3QgY2hhciogZGVzY3JpcHRpb24oTWVzc2FnZU5hbWUgbmFtZSkKK3sKKyAgICBzd2l0Y2gg
KG5hbWUpIHsKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX0xvYWRVUkw6CisgICAgICAg
IHJldHVybiAiV2ViUGFnZTo6TG9hZFVSTCI7CisjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKKyAg
ICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX1Rlc3RBc3luY01lc3NhZ2U6CisgICAgICAgIHJl
dHVybiAiV2ViUGFnZTo6VGVzdEFzeW5jTWVzc2FnZSI7CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6
V2ViUGFnZV9UZXN0QXN5bmNNZXNzYWdlUmVwbHk6CisgICAgICAgIHJldHVybiAiV2ViUGFnZTo6
VGVzdEFzeW5jTWVzc2FnZVJlcGx5IjsKKyNlbmRpZgorI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUp
CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9UZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJn
dW1lbnRzOgorICAgICAgICByZXR1cm4gIldlYlBhZ2U6OlRlc3RBc3luY01lc3NhZ2VXaXRoTm9B
cmd1bWVudHMiOworICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVzdEFzeW5jTWVzc2Fn
ZVdpdGhOb0FyZ3VtZW50c1JlcGx5OgorICAgICAgICByZXR1cm4gIldlYlBhZ2U6OlRlc3RBc3lu
Y01lc3NhZ2VXaXRoTm9Bcmd1bWVudHNSZXBseSI7CisjZW5kaWYKKyNpZiBFTkFCTEUoVEVTVF9G
RUFUVVJFKQorICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVzdEFzeW5jTWVzc2FnZVdp
dGhNdWx0aXBsZUFyZ3VtZW50czoKKyAgICAgICAgcmV0dXJuICJXZWJQYWdlOjpUZXN0QXN5bmNN
ZXNzYWdlV2l0aE11bHRpcGxlQXJndW1lbnRzIjsKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQ
YWdlX1Rlc3RBc3luY01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHNSZXBseToKKyAgICAgICAg
cmV0dXJuICJXZWJQYWdlOjpUZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1lbnRzUmVw
bHkiOworI2VuZGlmCisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9UZXN0U3luY01lc3Nh
Z2U6CisgICAgICAgIHJldHVybiAiV2ViUGFnZTo6VGVzdFN5bmNNZXNzYWdlIjsKKyAgICBjYXNl
IE1lc3NhZ2VOYW1lOjpXZWJQYWdlX1Rlc3RTeW5jaHJvbm91c01lc3NhZ2U6CisgICAgICAgIHJl
dHVybiAiV2ViUGFnZTo6VGVzdFN5bmNocm9ub3VzTWVzc2FnZSI7CisgICAgY2FzZSBNZXNzYWdl
TmFtZTo6V2ViUGFnZV9Mb2FkVVJMOgorICAgICAgICByZXR1cm4gIldlYlBhZ2U6OkxvYWRVUkwi
OworI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFn
ZV9Mb2FkU29tZXRoaW5nOgorICAgICAgICByZXR1cm4gIldlYlBhZ2U6OkxvYWRTb21ldGhpbmci
OworI2VuZGlmCisjaWYgKEVOQUJMRShUT1VDSF9FVkVOVFMpICYmIChORVNURURfTUVTU0FHRV9D
T05ESVRJT04gfHwgU09NRV9PVEhFUl9NRVNTQUdFX0NPTkRJVElPTikpCisgICAgY2FzZSBNZXNz
YWdlTmFtZTo6V2ViUGFnZV9Ub3VjaEV2ZW50OgorICAgICAgICByZXR1cm4gIldlYlBhZ2U6OlRv
dWNoRXZlbnQiOworI2VuZGlmCisjaWYgKEVOQUJMRShUT1VDSF9FVkVOVFMpICYmIChORVNURURf
TUVTU0FHRV9DT05ESVRJT04gJiYgU09NRV9PVEhFUl9NRVNTQUdFX0NPTkRJVElPTikpCisgICAg
Y2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9BZGRFdmVudDoKKyAgICAgICAgcmV0dXJuICJXZWJQ
YWdlOjpBZGRFdmVudCI7CisjZW5kaWYKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgIGNh
c2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfTG9hZFNvbWV0aGluZ0Vsc2U6CisgICAgICAgIHJldHVy
biAiV2ViUGFnZTo6TG9hZFNvbWV0aGluZ0Vsc2UiOworI2VuZGlmCisgICAgY2FzZSBNZXNzYWdl
TmFtZTo6V2ViUGFnZV9EaWRSZWNlaXZlUG9saWN5RGVjaXNpb246CisgICAgICAgIHJldHVybiAi
V2ViUGFnZTo6RGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uIjsKKyAgICBjYXNlIE1lc3NhZ2VOYW1l
OjpXZWJQYWdlX0Nsb3NlOgorICAgICAgICByZXR1cm4gIldlYlBhZ2U6OkNsb3NlIjsKKyAgICBj
YXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX1ByZWZlcmVuY2VzRGlkQ2hhbmdlOgorICAgICAgICBy
ZXR1cm4gIldlYlBhZ2U6OlByZWZlcmVuY2VzRGlkQ2hhbmdlIjsKKyAgICBjYXNlIE1lc3NhZ2VO
YW1lOjpXZWJQYWdlX1NlbmREb3VibGVBbmRGbG9hdDoKKyAgICAgICAgcmV0dXJuICJXZWJQYWdl
OjpTZW5kRG91YmxlQW5kRmxvYXQiOworICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfU2Vu
ZEludHM6CisgICAgICAgIHJldHVybiAiV2ViUGFnZTo6U2VuZEludHMiOworICAgIGNhc2UgTWVz
c2FnZU5hbWU6OldlYlBhZ2VfQ3JlYXRlUGx1Z2luOgorICAgICAgICByZXR1cm4gIldlYlBhZ2U6
OkNyZWF0ZVBsdWdpbiI7CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9SdW5KYXZhU2Ny
aXB0QWxlcnQ6CisgICAgICAgIHJldHVybiAiV2ViUGFnZTo6UnVuSmF2YVNjcmlwdEFsZXJ0IjsK
KyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX0dldFBsdWdpbnM6CisgICAgICAgIHJldHVy
biAiV2ViUGFnZTo6R2V0UGx1Z2lucyI7CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9H
ZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjoKKyAgICAgICAgcmV0dXJuICJXZWJQYWdlOjpHZXRQ
bHVnaW5Qcm9jZXNzQ29ubmVjdGlvbiI7CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9U
ZXN0TXVsdGlwbGVBdHRyaWJ1dGVzOgorICAgICAgICByZXR1cm4gIldlYlBhZ2U6OlRlc3RNdWx0
aXBsZUF0dHJpYnV0ZXMiOworICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVzdFBhcmFt
ZXRlckF0dHJpYnV0ZXM6CisgICAgICAgIHJldHVybiAiV2ViUGFnZTo6VGVzdFBhcmFtZXRlckF0
dHJpYnV0ZXMiOworICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVtcGxhdGVUZXN0Ogor
ICAgICAgICByZXR1cm4gIldlYlBhZ2U6OlRlbXBsYXRlVGVzdCI7CisgICAgY2FzZSBNZXNzYWdl
TmFtZTo6V2ViUGFnZV9TZXRWaWRlb0xheWVySUQ6CisgICAgICAgIHJldHVybiAiV2ViUGFnZTo6
U2V0VmlkZW9MYXllcklEIjsKKyNpZiBQTEFURk9STShNQUMpCisgICAgY2FzZSBNZXNzYWdlTmFt
ZTo6V2ViUGFnZV9EaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbjoKKyAgICAgICAgcmV0dXJu
ICJXZWJQYWdlOjpEaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbiI7CisjZW5kaWYKKyNpZiBQ
TEFURk9STShNQUMpCisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9JbnRlcnByZXRLZXlF
dmVudDoKKyAgICAgICAgcmV0dXJuICJXZWJQYWdlOjpJbnRlcnByZXRLZXlFdmVudCI7CisjZW5k
aWYKKyNpZiBFTkFCTEUoREVQUkVDQVRFRF9GRUFUVVJFKQorICAgIGNhc2UgTWVzc2FnZU5hbWU6
OldlYlBhZ2VfRGVwcmVjYXRlZE9wZXJhdGlvbjoKKyAgICAgICAgcmV0dXJuICJXZWJQYWdlOjpE
ZXByZWNhdGVkT3BlcmF0aW9uIjsKKyNlbmRpZgorI2lmIEVOQUJMRShFWFBFUklNRU5UQUxfRkVB
VFVSRSkKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX0V4cGVyaW1lbnRhbE9wZXJhdGlv
bjoKKyAgICAgICAgcmV0dXJuICJXZWJQYWdlOjpFeHBlcmltZW50YWxPcGVyYXRpb24iOworI2Vu
ZGlmCisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V3JhcHBlZEFzeW5jTWVzc2FnZUZvclRlc3Rpbmc6
CisgICAgICAgIHJldHVybiAiSVBDOjpXcmFwcGVkQXN5bmNNZXNzYWdlRm9yVGVzdGluZyI7Cisg
ICAgY2FzZSBNZXNzYWdlTmFtZTo6U3luY01lc3NhZ2VSZXBseToKKyAgICAgICAgcmV0dXJuICJJ
UEM6OlN5bmNNZXNzYWdlUmVwbHkiOworICAgIGNhc2UgTWVzc2FnZU5hbWU6OkluaXRpYWxpemVD
b25uZWN0aW9uOgorICAgICAgICByZXR1cm4gIklQQzo6SW5pdGlhbGl6ZUNvbm5lY3Rpb24iOwor
ICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gIjxpbnZhbGlkIG1l
c3NhZ2UgbmFtZT4iOworfQorCitSZWNlaXZlck5hbWUgcmVjZWl2ZXJOYW1lKE1lc3NhZ2VOYW1l
IG1lc3NhZ2VOYW1lKQoreworICAgIHN3aXRjaCAobWVzc2FnZU5hbWUpIHsKKyAgICBjYXNlIE1l
c3NhZ2VOYW1lOjpXZWJQYWdlX0xvYWRVUkw6CisjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKKyAg
ICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX1Rlc3RBc3luY01lc3NhZ2U6CisjZW5kaWYKKyNp
ZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQorICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVz
dEFzeW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50czoKKyNlbmRpZgorI2lmIEVOQUJMRShURVNUX0ZF
QVRVUkUpCisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9UZXN0QXN5bmNNZXNzYWdlV2l0
aE11bHRpcGxlQXJndW1lbnRzOgorI2VuZGlmCisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFn
ZV9UZXN0U3luY01lc3NhZ2U6CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9UZXN0U3lu
Y2hyb25vdXNNZXNzYWdlOgorICAgICAgICByZXR1cm4gUmVjZWl2ZXJOYW1lOjpXZWJQYWdlOwor
ICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfTG9hZFVSTDoKKyNpZiBFTkFCTEUoVE9VQ0hf
RVZFTlRTKQorICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfTG9hZFNvbWV0aGluZzoKKyNl
bmRpZgorI2lmIChFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiAoTkVTVEVEX01FU1NBR0VfQ09ORElU
SU9OIHx8IFNPTUVfT1RIRVJfTUVTU0FHRV9DT05ESVRJT04pKQorICAgIGNhc2UgTWVzc2FnZU5h
bWU6OldlYlBhZ2VfVG91Y2hFdmVudDoKKyNlbmRpZgorI2lmIChFTkFCTEUoVE9VQ0hfRVZFTlRT
KSAmJiAoTkVTVEVEX01FU1NBR0VfQ09ORElUSU9OICYmIFNPTUVfT1RIRVJfTUVTU0FHRV9DT05E
SVRJT04pKQorICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfQWRkRXZlbnQ6CisjZW5kaWYK
KyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2Vf
TG9hZFNvbWV0aGluZ0Vsc2U6CisjZW5kaWYKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdl
X0RpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbjoKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdl
X0Nsb3NlOgorICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfUHJlZmVyZW5jZXNEaWRDaGFu
Z2U6CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9TZW5kRG91YmxlQW5kRmxvYXQ6Cisg
ICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9TZW5kSW50czoKKyAgICBjYXNlIE1lc3NhZ2VO
YW1lOjpXZWJQYWdlX0NyZWF0ZVBsdWdpbjoKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdl
X1J1bkphdmFTY3JpcHRBbGVydDoKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX0dldFBs
dWdpbnM6CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9HZXRQbHVnaW5Qcm9jZXNzQ29u
bmVjdGlvbjoKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX1Rlc3RNdWx0aXBsZUF0dHJp
YnV0ZXM6CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9UZXN0UGFyYW1ldGVyQXR0cmli
dXRlczoKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX1RlbXBsYXRlVGVzdDoKKyAgICBj
YXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX1NldFZpZGVvTGF5ZXJJRDoKKyNpZiBQTEFURk9STShN
QUMpCisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9EaWRDcmVhdGVXZWJQcm9jZXNzQ29u
bmVjdGlvbjoKKyNlbmRpZgorI2lmIFBMQVRGT1JNKE1BQykKKyAgICBjYXNlIE1lc3NhZ2VOYW1l
OjpXZWJQYWdlX0ludGVycHJldEtleUV2ZW50OgorI2VuZGlmCisjaWYgRU5BQkxFKERFUFJFQ0FU
RURfRkVBVFVSRSkKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX0RlcHJlY2F0ZWRPcGVy
YXRpb246CisjZW5kaWYKKyNpZiBFTkFCTEUoRVhQRVJJTUVOVEFMX0ZFQVRVUkUpCisgICAgY2Fz
ZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9FeHBlcmltZW50YWxPcGVyYXRpb246CisjZW5kaWYKKyAg
ICAgICAgcmV0dXJuIFJlY2VpdmVyTmFtZTo6V2ViUGFnZTsKKyAgICAgICAgcmV0dXJuIFJlY2Vp
dmVyTmFtZTo6Tm9uZTsKKyNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQorICAgIGNhc2UgTWVzc2Fn
ZU5hbWU6OldlYlBhZ2VfVGVzdEFzeW5jTWVzc2FnZVJlcGx5OgorI2VuZGlmCisjaWYgRU5BQkxF
KFRFU1RfRkVBVFVSRSkKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX1Rlc3RBc3luY01l
c3NhZ2VXaXRoTm9Bcmd1bWVudHNSZXBseToKKyNlbmRpZgorI2lmIEVOQUJMRShURVNUX0ZFQVRV
UkUpCisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9UZXN0QXN5bmNNZXNzYWdlV2l0aE11
bHRpcGxlQXJndW1lbnRzUmVwbHk6CisjZW5kaWYKKyAgICAgICAgcmV0dXJuIFJlY2VpdmVyTmFt
ZTo6QXN5bmNSZXBseTsKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXcmFwcGVkQXN5bmNNZXNzYWdl
Rm9yVGVzdGluZzoKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpTeW5jTWVzc2FnZVJlcGx5OgorICAg
IGNhc2UgTWVzc2FnZU5hbWU6OkluaXRpYWxpemVDb25uZWN0aW9uOgorICAgICAgICByZXR1cm4g
UmVjZWl2ZXJOYW1lOjpJUEM7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IHJldHVybiBSZWNlaXZlck5hbWU6OkludmFsaWQ7Cit9CisKK2Jvb2wgaXNWYWxpZE1lc3NhZ2VO
YW1lKE1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lKQoreworICAgIGlmIChtZXNzYWdlTmFtZSA9PSBJ
UEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX0xvYWRVUkwpCisgICAgICAgIHJldHVybiB0cnVlOwor
I2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCisgICAgaWYgKG1lc3NhZ2VOYW1lID09IElQQzo6TWVz
c2FnZU5hbWU6OldlYlBhZ2VfVGVzdEFzeW5jTWVzc2FnZSkKKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgaWYgKG1lc3NhZ2VOYW1lID09IElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVzdEFz
eW5jTWVzc2FnZVJlcGx5KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyNlbmRpZgorI2lmIEVOQUJM
RShURVNUX0ZFQVRVUkUpCisgICAgaWYgKG1lc3NhZ2VOYW1lID09IElQQzo6TWVzc2FnZU5hbWU6
OldlYlBhZ2VfVGVzdEFzeW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50cykKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgaWYgKG1lc3NhZ2VOYW1lID09IElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2Vf
VGVzdEFzeW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50c1JlcGx5KQorICAgICAgICByZXR1cm4gdHJ1
ZTsKKyNlbmRpZgorI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCisgICAgaWYgKG1lc3NhZ2VOYW1l
ID09IElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVzdEFzeW5jTWVzc2FnZVdpdGhNdWx0aXBs
ZUFyZ3VtZW50cykKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKG1lc3NhZ2VOYW1lID09
IElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVzdEFzeW5jTWVzc2FnZVdpdGhNdWx0aXBsZUFy
Z3VtZW50c1JlcGx5KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyNlbmRpZgorICAgIGlmIChtZXNz
YWdlTmFtZSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX1Rlc3RTeW5jTWVzc2FnZSkKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKG1lc3NhZ2VOYW1lID09IElQQzo6TWVzc2FnZU5h
bWU6OldlYlBhZ2VfVGVzdFN5bmNocm9ub3VzTWVzc2FnZSkKKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgaWYgKG1lc3NhZ2VOYW1lID09IElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfTG9hZFVS
TCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAgICBp
ZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9Mb2FkU29tZXRoaW5n
KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyNlbmRpZgorI2lmIChFTkFCTEUoVE9VQ0hfRVZFTlRT
KSAmJiAoTkVTVEVEX01FU1NBR0VfQ09ORElUSU9OIHx8IFNPTUVfT1RIRVJfTUVTU0FHRV9DT05E
SVRJT04pKQorICAgIGlmIChtZXNzYWdlTmFtZSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdl
X1RvdWNoRXZlbnQpCisgICAgICAgIHJldHVybiB0cnVlOworI2VuZGlmCisjaWYgKEVOQUJMRShU
T1VDSF9FVkVOVFMpICYmIChORVNURURfTUVTU0FHRV9DT05ESVRJT04gJiYgU09NRV9PVEhFUl9N
RVNTQUdFX0NPTkRJVElPTikpCisgICAgaWYgKG1lc3NhZ2VOYW1lID09IElQQzo6TWVzc2FnZU5h
bWU6OldlYlBhZ2VfQWRkRXZlbnQpCisgICAgICAgIHJldHVybiB0cnVlOworI2VuZGlmCisjaWYg
RU5BQkxFKFRPVUNIX0VWRU5UUykKKyAgICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdl
TmFtZTo6V2ViUGFnZV9Mb2FkU29tZXRoaW5nRWxzZSkKKyAgICAgICAgcmV0dXJuIHRydWU7Cisj
ZW5kaWYKKyAgICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9E
aWRSZWNlaXZlUG9saWN5RGVjaXNpb24pCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmICht
ZXNzYWdlTmFtZSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX0Nsb3NlKQorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6V2Vi
UGFnZV9QcmVmZXJlbmNlc0RpZENoYW5nZSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYg
KG1lc3NhZ2VOYW1lID09IElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfU2VuZERvdWJsZUFuZEZs
b2F0KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpN
ZXNzYWdlTmFtZTo6V2ViUGFnZV9TZW5kSW50cykKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
aWYgKG1lc3NhZ2VOYW1lID09IElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfQ3JlYXRlUGx1Z2lu
KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNz
YWdlTmFtZTo6V2ViUGFnZV9SdW5KYXZhU2NyaXB0QWxlcnQpCisgICAgICAgIHJldHVybiB0cnVl
OworICAgIGlmIChtZXNzYWdlTmFtZSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX0dldFBs
dWdpbnMpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmIChtZXNzYWdlTmFtZSA9PSBJUEM6
Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX0dldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKQorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6
V2ViUGFnZV9UZXN0TXVsdGlwbGVBdHRyaWJ1dGVzKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9UZXN0UGFyYW1l
dGVyQXR0cmlidXRlcykKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKG1lc3NhZ2VOYW1l
ID09IElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVtcGxhdGVUZXN0KQorICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFn
ZV9TZXRWaWRlb0xheWVySUQpCisgICAgICAgIHJldHVybiB0cnVlOworI2lmIFBMQVRGT1JNKE1B
QykKKyAgICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9EaWRD
cmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuIHRydWU7CisjZW5kaWYK
KyNpZiBQTEFURk9STShNQUMpCisgICAgaWYgKG1lc3NhZ2VOYW1lID09IElQQzo6TWVzc2FnZU5h
bWU6OldlYlBhZ2VfSW50ZXJwcmV0S2V5RXZlbnQpCisgICAgICAgIHJldHVybiB0cnVlOworI2Vu
ZGlmCisjaWYgRU5BQkxFKERFUFJFQ0FURURfRkVBVFVSRSkKKyAgICBpZiAobWVzc2FnZU5hbWUg
PT0gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9EZXByZWNhdGVkT3BlcmF0aW9uKQorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyNlbmRpZgorI2lmIEVOQUJMRShFWFBFUklNRU5UQUxfRkVBVFVSRSkK
KyAgICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9FeHBlcmlt
ZW50YWxPcGVyYXRpb24pCisgICAgICAgIHJldHVybiB0cnVlOworI2VuZGlmCisgICAgaWYgKG1l
c3NhZ2VOYW1lID09IElQQzo6TWVzc2FnZU5hbWU6OldyYXBwZWRBc3luY01lc3NhZ2VGb3JUZXN0
aW5nKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpN
ZXNzYWdlTmFtZTo6U3luY01lc3NhZ2VSZXBseSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
aWYgKG1lc3NhZ2VOYW1lID09IElQQzo6TWVzc2FnZU5hbWU6OkluaXRpYWxpemVDb25uZWN0aW9u
KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gZmFsc2U7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBJUEMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy9NZXNzYWdlTmFtZXMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvTWVzc2FnZU5hbWVzLmgJKG5vbmV4
aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9TY3JpcHRzL01lc3NhZ2VOYW1lcy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMTE2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUgorICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisgKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorICog
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgorCituYW1lc3BhY2UgSVBDIHsKKworZW51
bSBjbGFzcyBSZWNlaXZlck5hbWUgOiB1aW50OF90IHsKKyAgICBXZWJQYWdlID0gMQorICAgICwg
V2ViUGFnZSA9IDIKKyAgICAsIE5vbmUgPSAzCisgICAgLCBJUEMgPSA0CisgICAgLCBBc3luY1Jl
cGx5ID0gNQorICAgICwgSW52YWxpZCA9IDYKK307CisKK2VudW0gY2xhc3MgTWVzc2FnZU5hbWUg
OiB1aW50MTZfdCB7CisgICAgV2ViUGFnZV9Mb2FkVVJMID0gMQorI2lmIEVOQUJMRShURVNUX0ZF
QVRVUkUpCisgICAgLCBXZWJQYWdlX1Rlc3RBc3luY01lc3NhZ2UgPSAyCisgICAgLCBXZWJQYWdl
X1Rlc3RBc3luY01lc3NhZ2VSZXBseSA9IDMKKyNlbmRpZgorI2lmIEVOQUJMRShURVNUX0ZFQVRV
UkUpCisgICAgLCBXZWJQYWdlX1Rlc3RBc3luY01lc3NhZ2VXaXRoTm9Bcmd1bWVudHMgPSA0Cisg
ICAgLCBXZWJQYWdlX1Rlc3RBc3luY01lc3NhZ2VXaXRoTm9Bcmd1bWVudHNSZXBseSA9IDUKKyNl
bmRpZgorI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCisgICAgLCBXZWJQYWdlX1Rlc3RBc3luY01l
c3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHMgPSA2CisgICAgLCBXZWJQYWdlX1Rlc3RBc3luY01l
c3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHNSZXBseSA9IDcKKyNlbmRpZgorICAgICwgV2ViUGFn
ZV9UZXN0U3luY01lc3NhZ2UgPSA4CisgICAgLCBXZWJQYWdlX1Rlc3RTeW5jaHJvbm91c01lc3Nh
Z2UgPSA5CisgICAgLCBXZWJQYWdlX0xvYWRVUkwgPSAxMAorI2lmIEVOQUJMRShUT1VDSF9FVkVO
VFMpCisgICAgLCBXZWJQYWdlX0xvYWRTb21ldGhpbmcgPSAxMQorI2VuZGlmCisjaWYgKEVOQUJM
RShUT1VDSF9FVkVOVFMpICYmIChORVNURURfTUVTU0FHRV9DT05ESVRJT04gfHwgU09NRV9PVEhF
Ul9NRVNTQUdFX0NPTkRJVElPTikpCisgICAgLCBXZWJQYWdlX1RvdWNoRXZlbnQgPSAxMgorI2Vu
ZGlmCisjaWYgKEVOQUJMRShUT1VDSF9FVkVOVFMpICYmIChORVNURURfTUVTU0FHRV9DT05ESVRJ
T04gJiYgU09NRV9PVEhFUl9NRVNTQUdFX0NPTkRJVElPTikpCisgICAgLCBXZWJQYWdlX0FkZEV2
ZW50ID0gMTMKKyNlbmRpZgorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAgLCBXZWJQYWdl
X0xvYWRTb21ldGhpbmdFbHNlID0gMTQKKyNlbmRpZgorICAgICwgV2ViUGFnZV9EaWRSZWNlaXZl
UG9saWN5RGVjaXNpb24gPSAxNQorICAgICwgV2ViUGFnZV9DbG9zZSA9IDE2CisgICAgLCBXZWJQ
YWdlX1ByZWZlcmVuY2VzRGlkQ2hhbmdlID0gMTcKKyAgICAsIFdlYlBhZ2VfU2VuZERvdWJsZUFu
ZEZsb2F0ID0gMTgKKyAgICAsIFdlYlBhZ2VfU2VuZEludHMgPSAxOQorICAgICwgV2ViUGFnZV9D
cmVhdGVQbHVnaW4gPSAyMAorICAgICwgV2ViUGFnZV9SdW5KYXZhU2NyaXB0QWxlcnQgPSAyMQor
ICAgICwgV2ViUGFnZV9HZXRQbHVnaW5zID0gMjIKKyAgICAsIFdlYlBhZ2VfR2V0UGx1Z2luUHJv
Y2Vzc0Nvbm5lY3Rpb24gPSAyMworICAgICwgV2ViUGFnZV9UZXN0TXVsdGlwbGVBdHRyaWJ1dGVz
ID0gMjQKKyAgICAsIFdlYlBhZ2VfVGVzdFBhcmFtZXRlckF0dHJpYnV0ZXMgPSAyNQorICAgICwg
V2ViUGFnZV9UZW1wbGF0ZVRlc3QgPSAyNgorICAgICwgV2ViUGFnZV9TZXRWaWRlb0xheWVySUQg
PSAyNworI2lmIFBMQVRGT1JNKE1BQykKKyAgICAsIFdlYlBhZ2VfRGlkQ3JlYXRlV2ViUHJvY2Vz
c0Nvbm5lY3Rpb24gPSAyOAorI2VuZGlmCisjaWYgUExBVEZPUk0oTUFDKQorICAgICwgV2ViUGFn
ZV9JbnRlcnByZXRLZXlFdmVudCA9IDI5CisjZW5kaWYKKyNpZiBFTkFCTEUoREVQUkVDQVRFRF9G
RUFUVVJFKQorICAgICwgV2ViUGFnZV9EZXByZWNhdGVkT3BlcmF0aW9uID0gMzAKKyNlbmRpZgor
I2lmIEVOQUJMRShFWFBFUklNRU5UQUxfRkVBVFVSRSkKKyAgICAsIFdlYlBhZ2VfRXhwZXJpbWVu
dGFsT3BlcmF0aW9uID0gMzEKKyNlbmRpZgorICAgICwgV3JhcHBlZEFzeW5jTWVzc2FnZUZvclRl
c3RpbmcgPSAzMgorICAgICwgU3luY01lc3NhZ2VSZXBseSA9IDMzCisgICAgLCBJbml0aWFsaXpl
Q29ubmVjdGlvbiA9IDM0Cit9OworCitSZWNlaXZlck5hbWUgcmVjZWl2ZXJOYW1lKE1lc3NhZ2VO
YW1lKTsKK2NvbnN0IGNoYXIqIGRlc2NyaXB0aW9uKE1lc3NhZ2VOYW1lKTsKK2Jvb2wgaXNWYWxp
ZE1lc3NhZ2VOYW1lKE1lc3NhZ2VOYW1lKTsKKworfSAvLyBuYW1lc3BhY2UgSVBDCisKK25hbWVz
cGFjZSBXVEYgeworCit0ZW1wbGF0ZTw+CitjbGFzcyBIYXNDdXN0b21Jc1ZhbGlkRW51bTxJUEM6
Ok1lc3NhZ2VOYW1lPiA6IHB1YmxpYyBzdGQ6OnRydWVfdHlwZSB7IH07Cit0ZW1wbGF0ZTx0eXBl
bmFtZSBFLCB0eXBlbmFtZSBULCB0eXBlbmFtZSA9IHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19z
YW1lPEUsIElQQzo6TWVzc2FnZU5hbWU+Ojp2YWx1ZT4+Citib29sIGlzVmFsaWRFbnVtKFQgbWVz
c2FnZU5hbWUpCit7CisgICAgc3RhdGljX2Fzc2VydChzaXplb2YoVCkgPT0gc2l6ZW9mKElQQzo6
TWVzc2FnZU5hbWUpLCAiaXNWYWxpZEVudW08TWVzc2FnZU5hbWU+IHNob3VsZCBvbmx5IGJlIGNh
bGxlZCB3aXRoIDE2LWJpdCB0eXBlcyIpOworICAgIHJldHVybiBJUEM6OmlzVmFsaWRNZXNzYWdl
TmFtZShzdGF0aWNfY2FzdDxJUEM6Ok1lc3NhZ2VOYW1lPihtZXNzYWdlTmFtZSkpOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV1RGCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvZ2VuZXJhdGUt
bWVzc2FnZS1yZWNlaXZlci5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMv
Z2VuZXJhdGUtbWVzc2FnZS1yZWNlaXZlci5weQkocmV2aXNpb24gMjYwOTM1KQorKysgU291cmNl
L1dlYktpdC9TY3JpcHRzL2dlbmVyYXRlLW1lc3NhZ2UtcmVjZWl2ZXIucHkJKHdvcmtpbmcgY29w
eSkKQEAgLTIzLDMzICsyMyw0OCBAQAogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiBmcm9tIF9fZnV0dXJlX18g
aW1wb3J0IHdpdGhfc3RhdGVtZW50Ci1pbXBvcnQgYXJncGFyc2UKIGltcG9ydCBzeXMKIAogaW1w
b3J0IHdlYmtpdC5tZXNzYWdlcwogaW1wb3J0IHdlYmtpdC5wYXJzZXIKIAogCi1kZWYgbWFpbihh
cmd2PU5vbmUpOgotICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKCkKLSAgICBw
YXJzZXIuYWRkX2FyZ3VtZW50KCdzb3VyY2UnKQotICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0t
aW1wbGVtZW50YXRpb24nLCByZXF1aXJlZD1UcnVlKQotICAgIHBhcnNlci5hZGRfYXJndW1lbnQo
Jy0taGVhZGVyJywgcmVxdWlyZWQ9VHJ1ZSkKLSAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLXJl
cGx5LWhlYWRlcicsIHJlcXVpcmVkPVRydWUpCi0KLSAgICBhcmdzID0gcGFyc2VyLnBhcnNlX2Fy
Z3MoKQotCi0gICAgd2l0aCBvcGVuKGFyZ3Muc291cmNlKSBhcyBzb3VyY2VfZmlsZToKLSAgICAg
ICAgcmVjZWl2ZXIgPSB3ZWJraXQucGFyc2VyLnBhcnNlKHNvdXJjZV9maWxlKQorZGVmIG1haW4o
YXJndik6CisgICAgcmVjZWl2ZXJzID0gW10KIAotICAgIHdpdGggb3BlbihhcmdzLmltcGxlbWVu
dGF0aW9uLCAidysiKSBhcyBpbXBsZW1lbnRhdGlvbl9vdXRwdXQ6Ci0gICAgICAgIGltcGxlbWVu
dGF0aW9uX291dHB1dC53cml0ZSh3ZWJraXQubWVzc2FnZXMuZ2VuZXJhdGVfbWVzc2FnZV9oYW5k
bGVyKHJlY2VpdmVyKSkKKyAgICBmaXJzdF9hcmcgPSBUcnVlCisgICAgc2Vjb25kX2FyZyA9IEZh
bHNlCisgICAgZm9yIHBhcmFtZXRlciBpbiBhcmd2OgorICAgICAgICBpZiBmaXJzdF9hcmc6Cisg
ICAgICAgICAgICBmaXJzdF9hcmcgPSBGYWxzZQorICAgICAgICAgICAgc2Vjb25kX2FyZyA9IFRy
dWUKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIGlmIHNlY29uZF9hcmc6CisgICAgICAg
ICAgICBiYXNlX2RpciA9IHBhcmFtZXRlcgorICAgICAgICAgICAgc2Vjb25kX2FyZyA9IEZhbHNl
CisgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgIHJlY2VpdmVyX25hbWUgPSBwYXJhbWV0
ZXIucnNwbGl0KCcvJywgMSkucG9wKCkKKyAgICAgICAgcHJpbnQgJ0dlbmVyYXRpbmcgbWVzc2Fn
ZSByZWNlaXZlciBmb3IgJXMnICUgcmVjZWl2ZXJfbmFtZQorCisgICAgICAgIHdpdGggb3Blbign
JXMvJXMubWVzc2FnZXMuaW4nICUgKGJhc2VfZGlyLCBwYXJhbWV0ZXIpKSBhcyBzb3VyY2VfZmls
ZToKKyAgICAgICAgICAgIHJlY2VpdmVyID0gd2Via2l0LnBhcnNlci5wYXJzZShzb3VyY2VfZmls
ZSkKKyAgICAgICAgcmVjZWl2ZXJzLmFwcGVuZChyZWNlaXZlcikKKworICAgICAgICB3aXRoIG9w
ZW4oJyVzTWVzc2FnZVJlY2VpdmVyLmNwcCcgJSByZWNlaXZlcl9uYW1lLCAidysiKSBhcyBpbXBs
ZW1lbnRhdGlvbl9vdXRwdXQ6CisgICAgICAgICAgICBpbXBsZW1lbnRhdGlvbl9vdXRwdXQud3Jp
dGUod2Via2l0Lm1lc3NhZ2VzLmdlbmVyYXRlX21lc3NhZ2VfaGFuZGxlcihyZWNlaXZlcikpCisK
KyAgICAgICAgd2l0aCBvcGVuKCclc01lc3NhZ2VzLmgnICUgcmVjZWl2ZXJfbmFtZSwgIncrIikg
YXMgaGVhZGVyX291dHB1dDoKKyAgICAgICAgICAgIGhlYWRlcl9vdXRwdXQud3JpdGUod2Via2l0
Lm1lc3NhZ2VzLmdlbmVyYXRlX21lc3NhZ2VzX2hlYWRlcihyZWNlaXZlcikpCiAKLSAgICB3aXRo
IG9wZW4oYXJncy5oZWFkZXIsICJ3KyIpIGFzIGhlYWRlcl9vdXRwdXQ6Ci0gICAgICAgIGhlYWRl
cl9vdXRwdXQud3JpdGUod2Via2l0Lm1lc3NhZ2VzLmdlbmVyYXRlX21lc3NhZ2VzX2hlYWRlcihy
ZWNlaXZlcikpCisgICAgICAgIHdpdGggb3BlbignJXNNZXNzYWdlc1JlcGxpZXMuaCcgJSByZWNl
aXZlcl9uYW1lLCAidysiKSBhcyByZXBseV9oZWFkZXJfb3V0cHV0OgorICAgICAgICAgICAgcmVw
bHlfaGVhZGVyX291dHB1dC53cml0ZSh3ZWJraXQubWVzc2FnZXMuZ2VuZXJhdGVfbWVzc2FnZXNf
cmVwbHlfaGVhZGVyKHJlY2VpdmVyKSkKIAotICAgIHdpdGggb3BlbihhcmdzLnJlcGx5X2hlYWRl
ciwgIncrIikgYXMgcmVwbHlfaGVhZGVyX291dHB1dDoKLSAgICAgICAgcmVwbHlfaGVhZGVyX291
dHB1dC53cml0ZSh3ZWJraXQubWVzc2FnZXMuZ2VuZXJhdGVfbWVzc2FnZXNfcmVwbHlfaGVhZGVy
KHJlY2VpdmVyKSkKKyAgICB3aXRoIG9wZW4oJ01lc3NhZ2VOYW1lcy5oJywgIncrIikgYXMgbWVz
c2FnZV9uYW1lc19oZWFkZXJfb3V0cHV0OgorICAgICAgICBtZXNzYWdlX25hbWVzX2hlYWRlcl9v
dXRwdXQud3JpdGUod2Via2l0Lm1lc3NhZ2VzLmdlbmVyYXRlX21lc3NhZ2VfbmFtZXNfaGVhZGVy
KHJlY2VpdmVycykpCisKKyAgICB3aXRoIG9wZW4oJ01lc3NhZ2VOYW1lcy5jcHAnLCAidysiKSBh
cyBtZXNzYWdlX25hbWVzX2ltcGxlbWVudGF0aW9uX291dHB1dDoKKyAgICAgICAgbWVzc2FnZV9u
YW1lc19pbXBsZW1lbnRhdGlvbl9vdXRwdXQud3JpdGUod2Via2l0Lm1lc3NhZ2VzLmdlbmVyYXRl
X21lc3NhZ2VfbmFtZXNfaW1wbGVtZW50YXRpb24ocmVjZWl2ZXJzKSkKIAogICAgIHJldHVybiAw
CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy90ZXN0LWxlZ2FjeU1lc3NhZ2VSZWNlaXZl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TY3JpcHRzL3Rlc3QtbGVnYWN5TWVz
c2FnZVJlY2VpdmVyLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1NjcmlwdHMv
dGVzdC1sZWdhY3lNZXNzYWdlUmVjZWl2ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
MjAzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAq
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUgorICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSCisgKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorICogT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgKEVO
QUJMRShXRUJLSVQyKSAmJiAoTkVTVEVEX01BU1RFUl9DT05ESVRJT04gfHwgTUFTVEVSX09SICYm
IE1BU1RFUl9BTkQpKQorCisjaW5jbHVkZSAiV2ViUGFnZS5oIgorCisjaW5jbHVkZSAiQXJndW1l
bnRDb2RlcnMuaCIKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiRGVjb2Rlci5o
IgorI2lmIEVOQUJMRShERVBSRUNBVEVEX0ZFQVRVUkUpIHx8IEVOQUJMRShFWFBFUklNRU5UQUxf
RkVBVFVSRSkKKyNpbmNsdWRlICJEdW1teVR5cGUuaCIKKyNlbmRpZgorI2luY2x1ZGUgIkhhbmRs
ZU1lc3NhZ2UuaCIKKyNpZiBQTEFURk9STShNQUMpCisjaW5jbHVkZSAiTWFjaFBvcnQuaCIKKyNl
bmRpZgorI2luY2x1ZGUgIlBsdWdpbi5oIgorI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVy
cy5oIgorI2lmIChFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiAoTkVTVEVEX01FU1NBR0VfQ09ORElU
SU9OICYmIFNPTUVfT1RIRVJfTUVTU0FHRV9DT05ESVRJT04pKSB8fCAoRU5BQkxFKFRPVUNIX0VW
RU5UUykgJiYgKE5FU1RFRF9NRVNTQUdFX0NPTkRJVElPTiB8fCBTT01FX09USEVSX01FU1NBR0Vf
Q09ORElUSU9OKSkKKyNpbmNsdWRlICJXZWJFdmVudC5oIgorI2VuZGlmCisjaW5jbHVkZSAiV2Vi
UGFnZU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXNTdG9yZS5oIgorI2luY2x1
ZGUgPFdlYkNvcmUvR3JhcGhpY3NMYXllci5oPgorI2lmIFBMQVRGT1JNKE1BQykKKyNpbmNsdWRl
IDxXZWJDb3JlL0tleWJvYXJkRXZlbnQuaD4KKyNlbmRpZgorI2luY2x1ZGUgPFdlYkNvcmUvUGx1
Z2luRGF0YS5oPgorI2luY2x1ZGUgPHV0aWxpdHk+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
KyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CisKK25hbWVzcGFjZSBNZXNzYWdlcyB7CisKK25hbWVzcGFjZSBXZWJQYWdlIHsKKwordm9pZCBH
ZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6c2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNv
ZGVyPiYmIGVuY29kZXIsIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgSVBDOjpD
b25uZWN0aW9uOjpIYW5kbGUmIGNvbm5lY3Rpb25IYW5kbGUpCit7CisgICAgKmVuY29kZXIgPDwg
Y29ubmVjdGlvbkhhbmRsZTsKKyAgICBjb25uZWN0aW9uLnNlbmRTeW5jUmVwbHkoV1RGTW92ZShl
bmNvZGVyKSk7Cit9CisKK3ZvaWQgVGVzdE11bHRpcGxlQXR0cmlidXRlczo6c2VuZChzdGQ6OnVu
aXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYmIGVuY29kZXIsIElQQzo6Q29ubmVjdGlvbiYgY29ubmVj
dGlvbikKK3sKKyAgICBjb25uZWN0aW9uLnNlbmRTeW5jUmVwbHkoV1RGTW92ZShlbmNvZGVyKSk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYlBhZ2UKKworfSAvLyBuYW1lc3BhY2UgTWVzc2FnZXMK
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgV2ViUGFnZTo6ZGlkUmVjZWl2ZVdlYlBhZ2VN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVy
KQoreworICAgIGF1dG8gcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpOworICAgIGlmIChk
ZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRVUkw6Om5hbWUo
KSkgeworICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRV
Ukw+KGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjpsb2FkVVJMKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VO
YW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRTb21ldGhpbmc6Om5hbWUoKSkgeworICAg
ICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRTb21ldGhpbmc+
KGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjpsb2FkU29tZXRoaW5nKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKyNlbmRpZgorI2lmIChFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiAoTkVTVEVEX01F
U1NBR0VfQ09ORElUSU9OIHx8IFNPTUVfT1RIRVJfTUVTU0FHRV9DT05ESVRJT04pKQorICAgIGlm
IChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OlRvdWNoRXZlbnQ6
Om5hbWUoKSkgeworICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6
OlRvdWNoRXZlbnQ+KGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjp0b3VjaEV2ZW50KTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorI2lmIChFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiAo
TkVTVEVEX01FU1NBR0VfQ09ORElUSU9OICYmIFNPTUVfT1RIRVJfTUVTU0FHRV9DT05ESVRJT04p
KQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OkFk
ZEV2ZW50OjpuYW1lKCkpIHsKKyAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpX
ZWJQYWdlOjpBZGRFdmVudD4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OmFkZEV2ZW50KTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisg
ICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFNv
bWV0aGluZ0Vsc2U6Om5hbWUoKSkgeworICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2Fn
ZXM6OldlYlBhZ2U6OkxvYWRTb21ldGhpbmdFbHNlPihkZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6
bG9hZFNvbWV0aGluZ0Vsc2UpOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisgICAg
aWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVjZWl2
ZVBvbGljeURlY2lzaW9uOjpuYW1lKCkpIHsKKyAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1l
c3NhZ2VzOjpXZWJQYWdlOjpEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24+KGRlY29kZXIsIHRoaXMs
ICZXZWJQYWdlOjpkaWRSZWNlaXZlUG9saWN5RGVjaXNpb24pOworICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6
OkNsb3NlOjpuYW1lKCkpIHsKKyAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpX
ZWJQYWdlOjpDbG9zZT4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OmNsb3NlKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2Vz
OjpXZWJQYWdlOjpQcmVmZXJlbmNlc0RpZENoYW5nZTo6bmFtZSgpKSB7CisgICAgICAgIElQQzo6
aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6UHJlZmVyZW5jZXNEaWRDaGFuZ2U+KGRl
Y29kZXIsIHRoaXMsICZXZWJQYWdlOjpwcmVmZXJlbmNlc0RpZENoYW5nZSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6
V2ViUGFnZTo6U2VuZERvdWJsZUFuZEZsb2F0OjpuYW1lKCkpIHsKKyAgICAgICAgSVBDOjpoYW5k
bGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpTZW5kRG91YmxlQW5kRmxvYXQ+KGRlY29kZXIs
IHRoaXMsICZXZWJQYWdlOjpzZW5kRG91YmxlQW5kRmxvYXQpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6
OlNlbmRJbnRzOjpuYW1lKCkpIHsKKyAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2Vz
OjpXZWJQYWdlOjpTZW5kSW50cz4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OnNlbmRJbnRzKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09
IE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0UGFyYW1ldGVyQXR0cmlidXRlczo6bmFtZSgpKSB7Cisg
ICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6VGVzdFBhcmFtZXRl
ckF0dHJpYnV0ZXM+KGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjp0ZXN0UGFyYW1ldGVyQXR0cmli
dXRlcyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5h
bWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6VGVtcGxhdGVUZXN0OjpuYW1lKCkpIHsKKyAgICAg
ICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpUZW1wbGF0ZVRlc3Q+KGRl
Y29kZXIsIHRoaXMsICZXZWJQYWdlOjp0ZW1wbGF0ZVRlc3QpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6
OlNldFZpZGVvTGF5ZXJJRDo6bmFtZSgpKSB7CisgICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxN
ZXNzYWdlczo6V2ViUGFnZTo6U2V0VmlkZW9MYXllcklEPihkZWNvZGVyLCB0aGlzLCAmV2ViUGFn
ZTo6c2V0VmlkZW9MYXllcklEKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNpZiBQTEFURk9S
TShNQUMpCisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFn
ZTo6RGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb246Om5hbWUoKSkgeworICAgICAgICBJUEM6
OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OkRpZENyZWF0ZVdlYlByb2Nlc3NDb25u
ZWN0aW9uPihkZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6ZGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5l
Y3Rpb24pOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisjaWYgRU5BQkxFKERFUFJF
Q0FURURfRkVBVFVSRSkKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2Vz
OjpXZWJQYWdlOjpEZXByZWNhdGVkT3BlcmF0aW9uOjpuYW1lKCkpIHsKKyAgICAgICAgSVBDOjpo
YW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpEZXByZWNhdGVkT3BlcmF0aW9uPihkZWNv
ZGVyLCB0aGlzLCAmV2ViUGFnZTo6ZGVwcmVjYXRlZE9wZXJhdGlvbik7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisjZW5kaWYKKyNpZiBFTkFCTEUoRVhQRVJJTUVOVEFMX0ZFQVRVUkUpCisgICAg
aWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6RXhwZXJpbWVu
dGFsT3BlcmF0aW9uOjpuYW1lKCkpIHsKKyAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3Nh
Z2VzOjpXZWJQYWdlOjpFeHBlcmltZW50YWxPcGVyYXRpb24+KGRlY29kZXIsIHRoaXMsICZXZWJQ
YWdlOjpleHBlcmltZW50YWxPcGVyYXRpb24pOworICAgICAgICByZXR1cm47CisgICAgfQorI2Vu
ZGlmCisgICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pOworICAgIFVOVVNFRF9QQVJBTShkZWNv
ZGVyKTsKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwordm9pZCBXZWJQYWdlOjpkaWRS
ZWNlaXZlU3luY1dlYlBhZ2VNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBD
OjpEZWNvZGVyJiBkZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYgcmVwbHlF
bmNvZGVyKQoreworICAgIGF1dG8gcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpOworICAg
IGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OkNyZWF0ZVBs
dWdpbjo6bmFtZSgpKSB7CisgICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2Vi
UGFnZTo6Q3JlYXRlUGx1Z2luPihkZWNvZGVyLCAqcmVwbHlFbmNvZGVyLCB0aGlzLCAmV2ViUGFn
ZTo6Y3JlYXRlUGx1Z2luKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoZGVjb2Rl
ci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpSdW5KYXZhU2NyaXB0QWxlcnQ6
Om5hbWUoKSkgeworICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6
OlJ1bkphdmFTY3JpcHRBbGVydD4oZGVjb2RlciwgKnJlcGx5RW5jb2RlciwgdGhpcywgJldlYlBh
Z2U6OnJ1bkphdmFTY3JpcHRBbGVydCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYg
KGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6R2V0UGx1Z2luczo6
bmFtZSgpKSB7CisgICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6
R2V0UGx1Z2lucz4oZGVjb2RlciwgKnJlcGx5RW5jb2RlciwgdGhpcywgJldlYlBhZ2U6OmdldFBs
dWdpbnMpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VO
YW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpu
YW1lKCkpIHsKKyAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlU3luY2hyb25vdXM8TWVzc2FnZXM6
OldlYlBhZ2U6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uPihjb25uZWN0aW9uLCBkZWNvZGVy
LCByZXBseUVuY29kZXIsIHRoaXMsICZXZWJQYWdlOjpnZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlv
bik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUo
KSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6VGVzdE11bHRpcGxlQXR0cmlidXRlczo6bmFtZSgpKSB7
CisgICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZVN5bmNocm9ub3VzV2FudHNDb25uZWN0aW9uPE1l
c3NhZ2VzOjpXZWJQYWdlOjpUZXN0TXVsdGlwbGVBdHRyaWJ1dGVzPihjb25uZWN0aW9uLCBkZWNv
ZGVyLCByZXBseUVuY29kZXIsIHRoaXMsICZXZWJQYWdlOjp0ZXN0TXVsdGlwbGVBdHRyaWJ1dGVz
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNpZiBQTEFURk9STShNQUMpCisgICAgaWYgKGRl
Y29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6SW50ZXJwcmV0S2V5RXZl
bnQ6Om5hbWUoKSkgeworICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBh
Z2U6OkludGVycHJldEtleUV2ZW50PihkZWNvZGVyLCAqcmVwbHlFbmNvZGVyLCB0aGlzLCAmV2Vi
UGFnZTo6aW50ZXJwcmV0S2V5RXZlbnQpOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlm
CisgICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pOworICAgIFVOVVNFRF9QQVJBTShkZWNvZGVy
KTsKKyAgICBVTlVTRURfUEFSQU0ocmVwbHlFbmNvZGVyKTsKKyAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKworI2VuZGlmIC8vIChFTkFCTEUo
V0VCS0lUMikgJiYgKE5FU1RFRF9NQVNURVJfQ09ORElUSU9OIHx8IE1BU1RFUl9PUiAmJiBNQVNU
RVJfQU5EKSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy90ZXN0LWxlZ2FjeU1lc3NhZ2Vz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TY3JpcHRzL3Rlc3QtbGVnYWN5TWVzc2Fn
ZXMuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvdGVzdC1sZWdhY3lN
ZXNzYWdlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTQ5IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEwLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
CisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorICogQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisgKiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLAorICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpZiAoRU5BQkxFKFdFQktJVDIpICYmIChORVNURURfTUFT
VEVSX0NPTkRJVElPTiB8fCBNQVNURVJfT1IgJiYgTUFTVEVSX0FORCkpCisKKyNpbmNsdWRlICJB
cmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJNZXNz
YWdlTmFtZXMuaCIKKyNpbmNsdWRlICJQbHVnaW4uaCIKKyNpbmNsdWRlICJXZWJQYWdlTWVzc2Fn
ZXNSZXBsaWVzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0xheWVyLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9LZXlib2FyZEV2ZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QbHVnaW5EYXRh
Lmg+CisjaW5jbHVkZSA8dXRpbGl0eT4KKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+
CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgorCituYW1lc3BhY2UgSVBDIHsKK2NsYXNzIER1bW15VHlwZTsKK2NsYXNzIE1hY2hQb3J0Owor
fQorCituYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIFdlYlByZWZlcmVuY2VzU3RvcmU7CitjbGFz
cyBXZWJUb3VjaEV2ZW50OworfQorCituYW1lc3BhY2UgTWVzc2FnZXMgeworbmFtZXNwYWNlIFdl
YlBhZ2UgeworCitzdGF0aWMgaW5saW5lIElQQzo6UmVjZWl2ZXJOYW1lIG1lc3NhZ2VSZWNlaXZl
ck5hbWUoKQoreworICAgIHJldHVybiBJUEM6OlJlY2VpdmVyTmFtZTo6V2ViUGFnZTsKK30KKwor
Y2xhc3MgTG9hZFVSTCB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGNvbnN0IFN0
cmluZyY+IEFyZ3VtZW50czsKKworICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7
IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX0xvYWRVUkw7IH0KKyAgICBzdGF0aWMg
Y29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKKworICAgIGV4cGxpY2l0IExvYWRVUkwoY29uc3Qg
U3RyaW5nJiB1cmwpCisgICAgICAgIDogbV9hcmd1bWVudHModXJsKQorICAgIHsKKyAgICB9CisK
KyAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0CisgICAgeworICAgICAgICBy
ZXR1cm4gbV9hcmd1bWVudHM7CisgICAgfQorCitwcml2YXRlOgorICAgIEFyZ3VtZW50cyBtX2Fy
Z3VtZW50czsKK307CisKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorY2xhc3MgTG9hZFNvbWV0
aGluZyB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGNvbnN0IFN0cmluZyY+IEFy
Z3VtZW50czsKKworICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJ
UEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX0xvYWRTb21ldGhpbmc7IH0KKyAgICBzdGF0aWMgY29u
c3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKKworICAgIGV4cGxpY2l0IExvYWRTb21ldGhpbmcoY29u
c3QgU3RyaW5nJiB1cmwpCisgICAgICAgIDogbV9hcmd1bWVudHModXJsKQorICAgIHsKKyAgICB9
CisKKyAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0CisgICAgeworICAgICAg
ICByZXR1cm4gbV9hcmd1bWVudHM7CisgICAgfQorCitwcml2YXRlOgorICAgIEFyZ3VtZW50cyBt
X2FyZ3VtZW50czsKK307CisjZW5kaWYKKworI2lmIChFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiAo
TkVTVEVEX01FU1NBR0VfQ09ORElUSU9OIHx8IFNPTUVfT1RIRVJfTUVTU0FHRV9DT05ESVRJT04p
KQorY2xhc3MgVG91Y2hFdmVudCB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGNv
bnN0IFdlYktpdDo6V2ViVG91Y2hFdmVudCY+IEFyZ3VtZW50czsKKworICAgIHN0YXRpYyBJUEM6
Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX1Rv
dWNoRXZlbnQ7IH0KKyAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKKworICAg
IGV4cGxpY2l0IFRvdWNoRXZlbnQoY29uc3QgV2ViS2l0OjpXZWJUb3VjaEV2ZW50JiBldmVudCkK
KyAgICAgICAgOiBtX2FyZ3VtZW50cyhldmVudCkKKyAgICB7CisgICAgfQorCisgICAgY29uc3Qg
QXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYXJn
dW1lbnRzOworICAgIH0KKworcHJpdmF0ZToKKyAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Cit9
OworI2VuZGlmCisKKyNpZiAoRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgKE5FU1RFRF9NRVNTQUdF
X0NPTkRJVElPTiAmJiBTT01FX09USEVSX01FU1NBR0VfQ09ORElUSU9OKSkKK2NsYXNzIEFkZEV2
ZW50IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8Y29uc3QgV2ViS2l0OjpXZWJU
b3VjaEV2ZW50Jj4gQXJndW1lbnRzOworCisgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFt
ZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfQWRkRXZlbnQ7IH0KKyAgICBz
dGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKKworICAgIGV4cGxpY2l0IEFkZEV2ZW50
KGNvbnN0IFdlYktpdDo6V2ViVG91Y2hFdmVudCYgZXZlbnQpCisgICAgICAgIDogbV9hcmd1bWVu
dHMoZXZlbnQpCisgICAgeworICAgIH0KKworICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRz
KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKKyAgICB9CisKK3By
aXZhdGU6CisgICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOworfTsKKyNlbmRpZgorCisjaWYgRU5B
QkxFKFRPVUNIX0VWRU5UUykKK2NsYXNzIExvYWRTb21ldGhpbmdFbHNlIHsKK3B1YmxpYzoKKyAg
ICB0eXBlZGVmIHN0ZDo6dHVwbGU8Y29uc3QgU3RyaW5nJj4gQXJndW1lbnRzOworCisgICAgc3Rh
dGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6Oldl
YlBhZ2VfTG9hZFNvbWV0aGluZ0Vsc2U7IH0KKyAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMg
PSBmYWxzZTsKKworICAgIGV4cGxpY2l0IExvYWRTb21ldGhpbmdFbHNlKGNvbnN0IFN0cmluZyYg
dXJsKQorICAgICAgICA6IG1fYXJndW1lbnRzKHVybCkKKyAgICB7CisgICAgfQorCisgICAgY29u
c3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1f
YXJndW1lbnRzOworICAgIH0KKworcHJpdmF0ZToKKyAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7
Cit9OworI2VuZGlmCisKK2NsYXNzIERpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbiB7CitwdWJsaWM6
CisgICAgdHlwZWRlZiBzdGQ6OnR1cGxlPHVpbnQ2NF90LCB1aW50NjRfdCwgdWludDMyX3Q+IEFy
Z3VtZW50czsKKworICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJ
UEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX0RpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbjsgfQorICAg
IHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOworCisgICAgRGlkUmVjZWl2ZVBvbGlj
eURlY2lzaW9uKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IGxpc3RlbmVySUQsIHVpbnQzMl90
IHBvbGljeUFjdGlvbikKKyAgICAgICAgOiBtX2FyZ3VtZW50cyhmcmFtZUlELCBsaXN0ZW5lcklE
LCBwb2xpY3lBY3Rpb24pCisgICAgeworICAgIH0KKworICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJn
dW1lbnRzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKKyAgICB9
CisKK3ByaXZhdGU6CisgICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOworfTsKKworY2xhc3MgQ2xv
c2UgeworcHVibGljOgorICAgIHR5cGVkZWYgc3RkOjp0dXBsZTw+IEFyZ3VtZW50czsKKworICAg
IHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1l
OjpXZWJQYWdlX0Nsb3NlOyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7
CisKKyAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0CisgICAgeworICAgICAg
ICByZXR1cm4gbV9hcmd1bWVudHM7CisgICAgfQorCitwcml2YXRlOgorICAgIEFyZ3VtZW50cyBt
X2FyZ3VtZW50czsKK307CisKK2NsYXNzIFByZWZlcmVuY2VzRGlkQ2hhbmdlIHsKK3B1YmxpYzoK
KyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8Y29uc3QgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3Jl
Jj4gQXJndW1lbnRzOworCisgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0
dXJuIElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfUHJlZmVyZW5jZXNEaWRDaGFuZ2U7IH0KKyAg
ICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKKworICAgIGV4cGxpY2l0IFByZWZl
cmVuY2VzRGlkQ2hhbmdlKGNvbnN0IFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUp
CisgICAgICAgIDogbV9hcmd1bWVudHMoc3RvcmUpCisgICAgeworICAgIH0KKworICAgIGNvbnN0
IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2Fy
Z3VtZW50czsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwor
fTsKKworY2xhc3MgU2VuZERvdWJsZUFuZEZsb2F0IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIHN0
ZDo6dHVwbGU8ZG91YmxlLCBmbG9hdD4gQXJndW1lbnRzOworCisgICAgc3RhdGljIElQQzo6TWVz
c2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfU2VuZERv
dWJsZUFuZEZsb2F0OyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7CisK
KyAgICBTZW5kRG91YmxlQW5kRmxvYXQoZG91YmxlIGQsIGZsb2F0IGYpCisgICAgICAgIDogbV9h
cmd1bWVudHMoZCwgZikKKyAgICB7CisgICAgfQorCisgICAgY29uc3QgQXJndW1lbnRzJiBhcmd1
bWVudHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOworICAgIH0K
KworcHJpdmF0ZToKKyAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Cit9OworCitjbGFzcyBTZW5k
SW50cyB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGNvbnN0IFZlY3Rvcjx1aW50
NjRfdD4mLCBjb25zdCBWZWN0b3I8VmVjdG9yPHVpbnQ2NF90Pj4mPiBBcmd1bWVudHM7CisKKyAg
ICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFt
ZTo6V2ViUGFnZV9TZW5kSW50czsgfQorICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZh
bHNlOworCisgICAgU2VuZEludHMoY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgaW50cywgY29uc3Qg
VmVjdG9yPFZlY3Rvcjx1aW50NjRfdD4+JiBpbnRWZWN0b3JzKQorICAgICAgICA6IG1fYXJndW1l
bnRzKGludHMsIGludFZlY3RvcnMpCisgICAgeworICAgIH0KKworICAgIGNvbnN0IEFyZ3VtZW50
cyYgYXJndW1lbnRzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsK
KyAgICB9CisKK3ByaXZhdGU6CisgICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOworfTsKKworY2xh
c3MgQ3JlYXRlUGx1Z2luIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8dWludDY0
X3QsIGNvbnN0IFdlYktpdDo6UGx1Z2luOjpQYXJhbWV0ZXJzJj4gQXJndW1lbnRzOworCisgICAg
c3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6
OldlYlBhZ2VfQ3JlYXRlUGx1Z2luOyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0g
dHJ1ZTsKKworICAgIHVzaW5nIFJlcGx5ID0gc3RkOjp0dXBsZTxib29sJj47CisgICAgdXNpbmcg
UmVwbHlBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPGJvb2w+OworICAgIENyZWF0ZVBsdWdpbih1aW50
NjRfdCBwbHVnaW5JbnN0YW5jZUlELCBjb25zdCBXZWJLaXQ6OlBsdWdpbjo6UGFyYW1ldGVycyYg
cGFyYW1ldGVycykKKyAgICAgICAgOiBtX2FyZ3VtZW50cyhwbHVnaW5JbnN0YW5jZUlELCBwYXJh
bWV0ZXJzKQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygp
IGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7CisgICAgfQorCitwcml2
YXRlOgorICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKK307CisKK2NsYXNzIFJ1bkphdmFTY3Jp
cHRBbGVydCB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBzdGQ6OnR1cGxlPHVpbnQ2NF90LCBjb25z
dCBTdHJpbmcmPiBBcmd1bWVudHM7CisKKyAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1l
KCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9SdW5KYXZhU2NyaXB0QWxlcnQ7
IH0KKyAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSB0cnVlOworCisgICAgdXNpbmcgUmVw
bHkgPSBzdGQ6OnR1cGxlPD47CisgICAgdXNpbmcgUmVwbHlBcmd1bWVudHMgPSBzdGQ6OnR1cGxl
PD47CisgICAgUnVuSmF2YVNjcmlwdEFsZXJ0KHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSkKKyAgICAgICAgOiBtX2FyZ3VtZW50cyhmcmFtZUlELCBtZXNzYWdlKQorICAg
IHsKKyAgICB9CisKKyAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0CisgICAg
eworICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7CisgICAgfQorCitwcml2YXRlOgorICAgIEFy
Z3VtZW50cyBtX2FyZ3VtZW50czsKK307CisKK2NsYXNzIEdldFBsdWdpbnMgeworcHVibGljOgor
ICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxib29sPiBBcmd1bWVudHM7CisKKyAgICBzdGF0aWMgSVBD
OjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9H
ZXRQbHVnaW5zOyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gdHJ1ZTsKKworICAg
IHVzaW5nIFJlcGx5ID0gc3RkOjp0dXBsZTxWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4mPjsK
KyAgICB1c2luZyBSZXBseUFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8VmVjdG9yPFdlYkNvcmU6OlBs
dWdpbkluZm8+PjsKKyAgICBleHBsaWNpdCBHZXRQbHVnaW5zKGJvb2wgcmVmcmVzaCkKKyAgICAg
ICAgOiBtX2FyZ3VtZW50cyhyZWZyZXNoKQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdCBBcmd1
bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9hcmd1bWVu
dHM7CisgICAgfQorCitwcml2YXRlOgorICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKK307CisK
K2NsYXNzIEdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVm
IHN0ZDo6dHVwbGU8Y29uc3QgU3RyaW5nJj4gQXJndW1lbnRzOworCisgICAgc3RhdGljIElQQzo6
TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfR2V0
UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb247IH0KKyAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMg
PSB0cnVlOworCisgICAgdXNpbmcgRGVsYXllZFJlcGx5ID0gR2V0UGx1Z2luUHJvY2Vzc0Nvbm5l
Y3Rpb25EZWxheWVkUmVwbHk7CisgICAgc3RhdGljIHZvaWQgc2VuZChzdGQ6OnVuaXF1ZV9wdHI8
SVBDOjpFbmNvZGVyPiYmLCBJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBJUEM6OkNvbm5lY3Rpb246
OkhhbmRsZSYgY29ubmVjdGlvbkhhbmRsZSk7CisgICAgdXNpbmcgUmVwbHkgPSBzdGQ6OnR1cGxl
PElQQzo6Q29ubmVjdGlvbjo6SGFuZGxlJj47CisgICAgdXNpbmcgUmVwbHlBcmd1bWVudHMgPSBz
dGQ6OnR1cGxlPElQQzo6Q29ubmVjdGlvbjo6SGFuZGxlPjsKKyAgICBleHBsaWNpdCBHZXRQbHVn
aW5Qcm9jZXNzQ29ubmVjdGlvbihjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgpCisgICAgICAgIDog
bV9hcmd1bWVudHMocGx1Z2luUGF0aCkKKyAgICB7CisgICAgfQorCisgICAgY29uc3QgQXJndW1l
bnRzJiBhcmd1bWVudHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRz
OworICAgIH0KKworcHJpdmF0ZToKKyAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Cit9OworCitj
bGFzcyBUZXN0TXVsdGlwbGVBdHRyaWJ1dGVzIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIHN0ZDo6
dHVwbGU8PiBBcmd1bWVudHM7CisKKyAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkg
eyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9UZXN0TXVsdGlwbGVBdHRyaWJ1dGVz
OyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gdHJ1ZTsKKworICAgIHVzaW5nIERl
bGF5ZWRSZXBseSA9IFRlc3RNdWx0aXBsZUF0dHJpYnV0ZXNEZWxheWVkUmVwbHk7CisgICAgc3Rh
dGljIHZvaWQgc2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYmLCBJUEM6OkNvbm5l
Y3Rpb24mKTsKKyAgICB1c2luZyBSZXBseSA9IHN0ZDo6dHVwbGU8PjsKKyAgICB1c2luZyBSZXBs
eUFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8PjsKKyAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50
cygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7CisgICAgfQorCitw
cml2YXRlOgorICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKK307CisKK2NsYXNzIFRlc3RQYXJh
bWV0ZXJBdHRyaWJ1dGVzIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8dWludDY0
X3QsIGRvdWJsZSwgZG91YmxlPiBBcmd1bWVudHM7CisKKyAgICBzdGF0aWMgSVBDOjpNZXNzYWdl
TmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9UZXN0UGFyYW1l
dGVyQXR0cmlidXRlczsgfQorICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOwor
CisgICAgVGVzdFBhcmFtZXRlckF0dHJpYnV0ZXModWludDY0X3QgZm9vLCBkb3VibGUgYmFyLCBk
b3VibGUgYmF6KQorICAgICAgICA6IG1fYXJndW1lbnRzKGZvbywgYmFyLCBiYXopCisgICAgewor
ICAgIH0KKworICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKKyAgICB7Cisg
ICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQXJndW1l
bnRzIG1fYXJndW1lbnRzOworfTsKKworY2xhc3MgVGVtcGxhdGVUZXN0IHsKK3B1YmxpYzoKKyAg
ICB0eXBlZGVmIHN0ZDo6dHVwbGU8Y29uc3QgSGFzaE1hcDxTdHJpbmcsIHN0ZDo6cGFpcjxTdHJp
bmcsIHVpbnQ2NF90Pj4mPiBBcmd1bWVudHM7CisKKyAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFt
ZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9UZW1wbGF0ZVRlc3Q7
IH0KKyAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKKworICAgIGV4cGxpY2l0
IFRlbXBsYXRlVGVzdChjb25zdCBIYXNoTWFwPFN0cmluZywgc3RkOjpwYWlyPFN0cmluZywgdWlu
dDY0X3Q+PiYgYSkKKyAgICAgICAgOiBtX2FyZ3VtZW50cyhhKQorICAgIHsKKyAgICB9CisKKyAg
ICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1
cm4gbV9hcmd1bWVudHM7CisgICAgfQorCitwcml2YXRlOgorICAgIEFyZ3VtZW50cyBtX2FyZ3Vt
ZW50czsKK307CisKK2NsYXNzIFNldFZpZGVvTGF5ZXJJRCB7CitwdWJsaWM6CisgICAgdHlwZWRl
ZiBzdGQ6OnR1cGxlPGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJ
RCY+IEFyZ3VtZW50czsKKworICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJl
dHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX1NldFZpZGVvTGF5ZXJJRDsgfQorICAgIHN0
YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOworCisgICAgZXhwbGljaXQgU2V0VmlkZW9M
YXllcklEKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRCYgdmlk
ZW9MYXllcklEKQorICAgICAgICA6IG1fYXJndW1lbnRzKHZpZGVvTGF5ZXJJRCkKKyAgICB7Cisg
ICAgfQorCisgICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAorICAgIHsKKyAg
ICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOworICAgIH0KKworcHJpdmF0ZToKKyAgICBBcmd1bWVu
dHMgbV9hcmd1bWVudHM7Cit9OworCisjaWYgUExBVEZPUk0oTUFDKQorY2xhc3MgRGlkQ3JlYXRl
V2ViUHJvY2Vzc0Nvbm5lY3Rpb24geworcHVibGljOgorICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxj
b25zdCBJUEM6Ok1hY2hQb3J0Jj4gQXJndW1lbnRzOworCisgICAgc3RhdGljIElQQzo6TWVzc2Fn
ZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfRGlkQ3JlYXRl
V2ViUHJvY2Vzc0Nvbm5lY3Rpb247IH0KKyAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBm
YWxzZTsKKworICAgIGV4cGxpY2l0IERpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKGNvbnN0
IElQQzo6TWFjaFBvcnQmIGNvbm5lY3Rpb25JZGVudGlmaWVyKQorICAgICAgICA6IG1fYXJndW1l
bnRzKGNvbm5lY3Rpb25JZGVudGlmaWVyKQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdCBBcmd1
bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9hcmd1bWVu
dHM7CisgICAgfQorCitwcml2YXRlOgorICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKK307Cisj
ZW5kaWYKKworI2lmIFBMQVRGT1JNKE1BQykKK2NsYXNzIEludGVycHJldEtleUV2ZW50IHsKK3B1
YmxpYzoKKyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8dWludDMyX3Q+IEFyZ3VtZW50czsKKworICAg
IHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1l
OjpXZWJQYWdlX0ludGVycHJldEtleUV2ZW50OyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNT
eW5jID0gdHJ1ZTsKKworICAgIHVzaW5nIFJlcGx5ID0gc3RkOjp0dXBsZTxWZWN0b3I8V2ViQ29y
ZTo6S2V5cHJlc3NDb21tYW5kPiY+OworICAgIHVzaW5nIFJlcGx5QXJndW1lbnRzID0gc3RkOjp0
dXBsZTxWZWN0b3I8V2ViQ29yZTo6S2V5cHJlc3NDb21tYW5kPj47CisgICAgZXhwbGljaXQgSW50
ZXJwcmV0S2V5RXZlbnQodWludDMyX3QgdHlwZSkKKyAgICAgICAgOiBtX2FyZ3VtZW50cyh0eXBl
KQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0
CisgICAgeworICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7CisgICAgfQorCitwcml2YXRlOgor
ICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKK307CisjZW5kaWYKKworI2lmIEVOQUJMRShERVBS
RUNBVEVEX0ZFQVRVUkUpCitjbGFzcyBEZXByZWNhdGVkT3BlcmF0aW9uIHsKK3B1YmxpYzoKKyAg
ICB0eXBlZGVmIHN0ZDo6dHVwbGU8Y29uc3QgSVBDOjpEdW1teVR5cGUmPiBBcmd1bWVudHM7CisK
KyAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdl
TmFtZTo6V2ViUGFnZV9EZXByZWNhdGVkT3BlcmF0aW9uOyB9CisgICAgc3RhdGljIGNvbnN0IGJv
b2wgaXNTeW5jID0gZmFsc2U7CisKKyAgICBleHBsaWNpdCBEZXByZWNhdGVkT3BlcmF0aW9uKGNv
bnN0IElQQzo6RHVtbXlUeXBlJiBkdW1teSkKKyAgICAgICAgOiBtX2FyZ3VtZW50cyhkdW1teSkK
KyAgICB7CisgICAgfQorCisgICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAor
ICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOworICAgIH0KKworcHJpdmF0ZToKKyAg
ICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Cit9OworI2VuZGlmCisKKyNpZiBFTkFCTEUoRVhQRVJJ
TUVOVEFMX0ZFQVRVUkUpCitjbGFzcyBFeHBlcmltZW50YWxPcGVyYXRpb24geworcHVibGljOgor
ICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBJUEM6OkR1bW15VHlwZSY+IEFyZ3VtZW50czsK
KworICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3Nh
Z2VOYW1lOjpXZWJQYWdlX0V4cGVyaW1lbnRhbE9wZXJhdGlvbjsgfQorICAgIHN0YXRpYyBjb25z
dCBib29sIGlzU3luYyA9IGZhbHNlOworCisgICAgZXhwbGljaXQgRXhwZXJpbWVudGFsT3BlcmF0
aW9uKGNvbnN0IElQQzo6RHVtbXlUeXBlJiBkdW1teSkKKyAgICAgICAgOiBtX2FyZ3VtZW50cyhk
dW1teSkKKyAgICB7CisgICAgfQorCisgICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBj
b25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOworICAgIH0KKworcHJpdmF0
ZToKKyAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Cit9OworI2VuZGlmCisKK30gLy8gbmFtZXNw
YWNlIFdlYlBhZ2UKK30gLy8gbmFtZXNwYWNlIE1lc3NhZ2VzCisKKyNlbmRpZiAvLyAoRU5BQkxF
KFdFQktJVDIpICYmIChORVNURURfTUFTVEVSX0NPTkRJVElPTiB8fCBNQVNURVJfT1IgJiYgTUFT
VEVSX0FORCkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvdGVzdC1sZWdhY3lNZXNzYWdl
c1JlcGxpZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvdGVzdC1sZWdh
Y3lNZXNzYWdlc1JlcGxpZXMuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1Njcmlw
dHMvdGVzdC1sZWdhY3lNZXNzYWdlc1JlcGxpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAq
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUgorICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSCisgKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorICogT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiAoRU5BQkxFKFdF
QktJVDIpICYmIChORVNURURfTUFTVEVSX0NPTkRJVElPTiB8fCBNQVNURVJfT1IgJiYgTUFTVEVS
X0FORCkpCisKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiTWVzc2FnZU5hbWVz
LmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKworCituYW1lc3BhY2UgTWVzc2FnZXMgewor
bmFtZXNwYWNlIFdlYlBhZ2UgeworCit1c2luZyBHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbkRl
bGF5ZWRSZXBseSA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpDb25uZWN0aW9u
OjpIYW5kbGUmIGNvbm5lY3Rpb25IYW5kbGUpPjsKKwordXNpbmcgVGVzdE11bHRpcGxlQXR0cmli
dXRlc0RlbGF5ZWRSZXBseSA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT47CisKK30gLy8gbmFt
ZXNwYWNlIFdlYlBhZ2UKK30gLy8gbmFtZXNwYWNlIE1lc3NhZ2VzCisKKyNlbmRpZiAvLyAoRU5B
QkxFKFdFQktJVDIpICYmIChORVNURURfTUFTVEVSX0NPTkRJVElPTiB8fCBNQVNURVJfT1IgJiYg
TUFTVEVSX0FORCkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvdGVzdC1zdXBlcmNsYXNz
TWVzc2FnZVJlY2VpdmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMv
dGVzdC1zdXBlcmNsYXNzTWVzc2FnZVJlY2VpdmVyLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3Vy
Y2UvV2ViS2l0L1NjcmlwdHMvdGVzdC1zdXBlcmNsYXNzTWVzc2FnZVJlY2VpdmVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDE4OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMC0y
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwK
KyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKworI2luY2x1ZGUgIldlYlBhZ2UuaCIKKworI2luY2x1ZGUgIkFyZ3VtZW50
Q29kZXJzLmgiCisjaW5jbHVkZSAiRGVjb2Rlci5oIgorI2luY2x1ZGUgIkhhbmRsZU1lc3NhZ2Uu
aCIKKyNpbmNsdWRlICJUZXN0Q2xhc3NOYW1lLmgiCisjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkK
KyNpbmNsdWRlICJUZXN0VHdvU3RhdGVFbnVtLmgiCisjZW5kaWYKKyNpbmNsdWRlICJXZWJQYWdl
TWVzc2FnZXMuaCIKKyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KKyNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIE1lc3NhZ2VzIHsKKworbmFtZXNwYWNlIFdlYlBh
Z2UgeworCisjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKKwordm9pZCBUZXN0QXN5bmNNZXNzYWdl
OjpjYWxsUmVwbHkoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KHVpbnQ2NF90JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIE9wdGlvbmFsPHVpbnQ2
NF90PiByZXN1bHQ7CisgICAgZGVjb2RlciA+PiByZXN1bHQ7CisgICAgaWYgKCFyZXN1bHQpIHsK
KyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGNhbmNlbFJlcGx5KFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBjb21w
bGV0aW9uSGFuZGxlcihXVEZNb3ZlKCpyZXN1bHQpKTsKK30KKwordm9pZCBUZXN0QXN5bmNNZXNz
YWdlOjpjYW5jZWxSZXBseShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90JiYpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQoreworICAgIGNvbXBsZXRpb25IYW5kbGVyKElQQzo6QXN5bmNSZXBs
eUVycm9yPHVpbnQ2NF90Pjo6Y3JlYXRlKCkpOworfQorCit2b2lkIFRlc3RBc3luY01lc3NhZ2U6
OnNlbmQoc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mJiBlbmNvZGVyLCBJUEM6OkNvbm5l
Y3Rpb24mIGNvbm5lY3Rpb24sIHVpbnQ2NF90IHJlc3VsdCkKK3sKKyAgICAqZW5jb2RlciA8PCBy
ZXN1bHQ7CisgICAgY29ubmVjdGlvbi5zZW5kU3luY1JlcGx5KFdURk1vdmUoZW5jb2RlcikpOwor
fQorCisjZW5kaWYKKworI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCisKK3ZvaWQgVGVzdEFzeW5j
TWVzc2FnZVdpdGhOb0FyZ3VtZW50czo6Y2FsbFJlcGx5KElQQzo6RGVjb2RlciYgZGVjb2Rlciwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGNv
bXBsZXRpb25IYW5kbGVyKCk7Cit9CisKK3ZvaWQgVGVzdEFzeW5jTWVzc2FnZVdpdGhOb0FyZ3Vt
ZW50czo6Y2FuY2VsUmVwbHkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQoreworICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Cit9CisKK3ZvaWQgVGVzdEFzeW5j
TWVzc2FnZVdpdGhOb0FyZ3VtZW50czo6c2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVy
PiYmIGVuY29kZXIsIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKK3sKKyAgICBjb25uZWN0
aW9uLnNlbmRTeW5jUmVwbHkoV1RGTW92ZShlbmNvZGVyKSk7Cit9CisKKyNlbmRpZgorCisjaWYg
RU5BQkxFKFRFU1RfRkVBVFVSRSkKKwordm9pZCBUZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxl
QXJndW1lbnRzOjpjYWxsUmVwbHkoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wmJiwgdWludDY0X3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7Cisg
ICAgT3B0aW9uYWw8Ym9vbD4gZmxhZzsKKyAgICBkZWNvZGVyID4+IGZsYWc7CisgICAgaWYgKCFm
bGFnKSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBjYW5jZWxSZXBs
eShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisg
ICAgT3B0aW9uYWw8dWludDY0X3Q+IHZhbHVlOworICAgIGRlY29kZXIgPj4gdmFsdWU7CisgICAg
aWYgKCF2YWx1ZSkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgY2Fu
Y2VsUmVwbHkoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoKmZsYWcpLCBXVEZNb3ZlKCp2YWx1
ZSkpOworfQorCit2b2lkIFRlc3RBc3luY01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHM6OmNh
bmNlbFJlcGx5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCYmLCB1aW50NjRfdCYmKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkFzeW5jUmVw
bHlFcnJvcjxib29sPjo6Y3JlYXRlKCksIElQQzo6QXN5bmNSZXBseUVycm9yPHVpbnQ2NF90Pjo6
Y3JlYXRlKCkpOworfQorCit2b2lkIFRlc3RBc3luY01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVu
dHM6OnNlbmQoc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mJiBlbmNvZGVyLCBJUEM6OkNv
bm5lY3Rpb24mIGNvbm5lY3Rpb24sIGJvb2wgZmxhZywgdWludDY0X3QgdmFsdWUpCit7CisgICAg
KmVuY29kZXIgPDwgZmxhZzsKKyAgICAqZW5jb2RlciA8PCB2YWx1ZTsKKyAgICBjb25uZWN0aW9u
LnNlbmRTeW5jUmVwbHkoV1RGTW92ZShlbmNvZGVyKSk7Cit9CisKKyNlbmRpZgorCit2b2lkIFRl
c3RTeW5jTWVzc2FnZTo6c2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYmIGVuY29k
ZXIsIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgdWludDhfdCByZXBseSkKK3sKKyAgICAq
ZW5jb2RlciA8PCByZXBseTsKKyAgICBjb25uZWN0aW9uLnNlbmRTeW5jUmVwbHkoV1RGTW92ZShl
bmNvZGVyKSk7Cit9CisKK3ZvaWQgVGVzdFN5bmNocm9ub3VzTWVzc2FnZTo6c2VuZChzdGQ6OnVu
aXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYmIGVuY29kZXIsIElQQzo6Q29ubmVjdGlvbiYgY29ubmVj
dGlvbiwgY29uc3QgT3B0aW9uYWw8V2ViS2l0OjpUZXN0Q2xhc3NOYW1lPiYgb3B0aW9uYWxSZXBs
eSkKK3sKKyAgICAqZW5jb2RlciA8PCBvcHRpb25hbFJlcGx5OworICAgIGNvbm5lY3Rpb24uc2Vu
ZFN5bmNSZXBseShXVEZNb3ZlKGVuY29kZXIpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViUGFn
ZQorCit9IC8vIG5hbWVzcGFjZSBNZXNzYWdlcworCituYW1lc3BhY2UgV2ViS2l0IHsKKwordm9p
ZCBXZWJQYWdlOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24s
IElQQzo6RGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBhdXRvIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKTsKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpX
ZWJQYWdlOjpMb2FkVVJMOjpuYW1lKCkpIHsKKyAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1l
c3NhZ2VzOjpXZWJQYWdlOjpMb2FkVVJMPihkZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6bG9hZFVS
TCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKKyAg
ICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0QXN5
bmNNZXNzYWdlOjpuYW1lKCkpIHsKKyAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlQXN5bmM8TWVz
c2FnZXM6OldlYlBhZ2U6OlRlc3RBc3luY01lc3NhZ2U+KGNvbm5lY3Rpb24sIGRlY29kZXIsIHRo
aXMsICZXZWJQYWdlOjp0ZXN0QXN5bmNNZXNzYWdlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyNlbmRpZgorI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCisgICAgaWYgKGRlY29kZXIubWVzc2Fn
ZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6VGVzdEFzeW5jTWVzc2FnZVdpdGhOb0FyZ3Vt
ZW50czo6bmFtZSgpKSB7CisgICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZUFzeW5jPE1lc3NhZ2Vz
OjpXZWJQYWdlOjpUZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJndW1lbnRzPihjb25uZWN0aW9uLCBk
ZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6dGVzdEFzeW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50cyk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKyNpZiBFTkFCTEUoVEVTVF9GRUFUVVJF
KQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OlRl
c3RBc3luY01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHM6Om5hbWUoKSkgeworICAgICAgICBJ
UEM6OmhhbmRsZU1lc3NhZ2VBc3luYzxNZXNzYWdlczo6V2ViUGFnZTo6VGVzdEFzeW5jTWVzc2Fn
ZVdpdGhNdWx0aXBsZUFyZ3VtZW50cz4oY29ubmVjdGlvbiwgZGVjb2RlciwgdGhpcywgJldlYlBh
Z2U6OnRlc3RBc3luY01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHMpOworICAgICAgICByZXR1
cm47CisgICAgfQorI2VuZGlmCisgICAgV2ViUGFnZUJhc2U6OmRpZFJlY2VpdmVNZXNzYWdlKGNv
bm5lY3Rpb24sIGRlY29kZXIpOworfQorCit2b2lkIFdlYlBhZ2U6OmRpZFJlY2VpdmVTeW5jTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2Rlciwg
c3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mIHJlcGx5RW5jb2RlcikKK3sKKyAgICBhdXRv
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKTsKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdl
TmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0U3luY01lc3NhZ2U6Om5hbWUoKSkgewor
ICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2VTeW5jaHJvbm91czxNZXNzYWdlczo6V2ViUGFnZTo6
VGVzdFN5bmNNZXNzYWdlPihjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIsIHRoaXMs
ICZXZWJQYWdlOjp0ZXN0U3luY01lc3NhZ2UpOworICAgICAgICByZXR1cm47CisgICAgfQorICAg
IGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RTeW5j
aHJvbm91c01lc3NhZ2U6Om5hbWUoKSkgeworICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2VTeW5j
aHJvbm91czxNZXNzYWdlczo6V2ViUGFnZTo6VGVzdFN5bmNocm9ub3VzTWVzc2FnZT4oY29ubmVj
dGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6dGVzdFN5bmNocm9u
b3VzTWVzc2FnZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgVU5VU0VEX1BBUkFNKGNv
bm5lY3Rpb24pOworICAgIFVOVVNFRF9QQVJBTShkZWNvZGVyKTsKKyAgICBVTlVTRURfUEFSQU0o
cmVwbHlFbmNvZGVyKTsKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CisKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy90ZXN0LXN1cGVyY2xh
c3NNZXNzYWdlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy90ZXN0LXN1
cGVyY2xhc3NNZXNzYWdlcy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvU2NyaXB0
cy90ZXN0LXN1cGVyY2xhc3NNZXNzYWdlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjAx
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UgorICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSCisgKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorICogT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJBcmd1bWVu
dENvZGVycy5oIgorI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJNZXNzYWdlTmFt
ZXMuaCIKKyNpbmNsdWRlICJUZXN0Q2xhc3NOYW1lLmgiCisjaW5jbHVkZSAiV2ViUGFnZU1lc3Nh
Z2VzUmVwbGllcy5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL09w
dGlvbmFsLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CisjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworZW51bSBjbGFz
cyBUZXN0VHdvU3RhdGVFbnVtIDogYm9vbDsKK30KKworbmFtZXNwYWNlIE1lc3NhZ2VzIHsKK25h
bWVzcGFjZSBXZWJQYWdlIHsKKworc3RhdGljIGlubGluZSBJUEM6OlJlY2VpdmVyTmFtZSBtZXNz
YWdlUmVjZWl2ZXJOYW1lKCkKK3sKKyAgICByZXR1cm4gSVBDOjpSZWNlaXZlck5hbWU6OldlYlBh
Z2U7Cit9CisKK2NsYXNzIExvYWRVUkwgeworcHVibGljOgorICAgIHR5cGVkZWYgc3RkOjp0dXBs
ZTxjb25zdCBTdHJpbmcmPiBBcmd1bWVudHM7CisKKyAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFt
ZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9Mb2FkVVJMOyB9Cisg
ICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7CisKKyAgICBleHBsaWNpdCBMb2Fk
VVJMKGNvbnN0IFN0cmluZyYgdXJsKQorICAgICAgICA6IG1fYXJndW1lbnRzKHVybCkKKyAgICB7
CisgICAgfQorCisgICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAorICAgIHsK
KyAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOworICAgIH0KKworcHJpdmF0ZToKKyAgICBBcmd1
bWVudHMgbV9hcmd1bWVudHM7Cit9OworCisjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKK2NsYXNz
IFRlc3RBc3luY01lc3NhZ2UgeworcHVibGljOgorICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxXZWJL
aXQ6OlRlc3RUd29TdGF0ZUVudW0+IEFyZ3VtZW50czsKKworICAgIHN0YXRpYyBJUEM6Ok1lc3Nh
Z2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX1Rlc3RBc3lu
Y01lc3NhZ2U7IH0KKyAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKKworICAg
IHN0YXRpYyB2b2lkIGNhbGxSZXBseShJUEM6OkRlY29kZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKHVpbnQ2NF90JiYpPiYmKTsKKyAgICBzdGF0aWMgdm9pZCBjYW5jZWxSZXBseShDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90JiYpPiYmKTsKKyAgICBzdGF0aWMgSVBDOjpNZXNzYWdl
TmFtZSBhc3luY01lc3NhZ2VSZXBseU5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpX
ZWJQYWdlX1Rlc3RBc3luY01lc3NhZ2VSZXBseTsgfQorICAgIHVzaW5nIEFzeW5jUmVwbHkgPSBU
ZXN0QXN5bmNNZXNzYWdlQXN5bmNSZXBseTsKKyAgICBzdGF0aWMgdm9pZCBzZW5kKHN0ZDo6dW5p
cXVlX3B0cjxJUEM6OkVuY29kZXI+JiYsIElQQzo6Q29ubmVjdGlvbiYsIHVpbnQ2NF90IHJlc3Vs
dCk7CisgICAgdXNpbmcgUmVwbHkgPSBzdGQ6OnR1cGxlPHVpbnQ2NF90Jj47CisgICAgdXNpbmcg
UmVwbHlBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPHVpbnQ2NF90PjsKKyAgICBleHBsaWNpdCBUZXN0
QXN5bmNNZXNzYWdlKFdlYktpdDo6VGVzdFR3b1N0YXRlRW51bSB0d29TdGF0ZUVudW0pCisgICAg
ICAgIDogbV9hcmd1bWVudHModHdvU3RhdGVFbnVtKQorICAgIHsKKyAgICB9CisKKyAgICBjb25z
dCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9h
cmd1bWVudHM7CisgICAgfQorCitwcml2YXRlOgorICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsK
K307CisjZW5kaWYKKworI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCitjbGFzcyBUZXN0QXN5bmNN
ZXNzYWdlV2l0aE5vQXJndW1lbnRzIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8
PiBBcmd1bWVudHM7CisKKyAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1
cm4gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9UZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJndW1l
bnRzOyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7CisKKyAgICBzdGF0
aWMgdm9pZCBjYWxsUmVwbHkoSVBDOjpEZWNvZGVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKTsKKyAgICBzdGF0aWMgdm9pZCBjYW5jZWxSZXBseShDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOworICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIGFzeW5jTWVzc2FnZVJlcGx5TmFt
ZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVzdEFzeW5jTWVzc2FnZVdp
dGhOb0FyZ3VtZW50c1JlcGx5OyB9CisgICAgdXNpbmcgQXN5bmNSZXBseSA9IFRlc3RBc3luY01l
c3NhZ2VXaXRoTm9Bcmd1bWVudHNBc3luY1JlcGx5OworICAgIHN0YXRpYyB2b2lkIHNlbmQoc3Rk
Ojp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mJiwgSVBDOjpDb25uZWN0aW9uJik7CisgICAgdXNp
bmcgUmVwbHkgPSBzdGQ6OnR1cGxlPD47CisgICAgdXNpbmcgUmVwbHlBcmd1bWVudHMgPSBzdGQ6
OnR1cGxlPD47CisgICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAorICAgIHsK
KyAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOworICAgIH0KKworcHJpdmF0ZToKKyAgICBBcmd1
bWVudHMgbV9hcmd1bWVudHM7Cit9OworI2VuZGlmCisKKyNpZiBFTkFCTEUoVEVTVF9GRUFUVVJF
KQorY2xhc3MgVGVzdEFzeW5jTWVzc2FnZVdpdGhNdWx0aXBsZUFyZ3VtZW50cyB7CitwdWJsaWM6
CisgICAgdHlwZWRlZiBzdGQ6OnR1cGxlPD4gQXJndW1lbnRzOworCisgICAgc3RhdGljIElQQzo6
TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVz
dEFzeW5jTWVzc2FnZVdpdGhNdWx0aXBsZUFyZ3VtZW50czsgfQorICAgIHN0YXRpYyBjb25zdCBi
b29sIGlzU3luYyA9IGZhbHNlOworCisgICAgc3RhdGljIHZvaWQgY2FsbFJlcGx5KElQQzo6RGVj
b2RlciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCYmLCB1aW50NjRfdCYmKT4mJik7Cisg
ICAgc3RhdGljIHZvaWQgY2FuY2VsUmVwbHkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sJiYs
IHVpbnQ2NF90JiYpPiYmKTsKKyAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBhc3luY01lc3Nh
Z2VSZXBseU5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX1Rlc3RBc3lu
Y01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHNSZXBseTsgfQorICAgIHVzaW5nIEFzeW5jUmVw
bHkgPSBUZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1lbnRzQXN5bmNSZXBseTsKKyAg
ICBzdGF0aWMgdm9pZCBzZW5kKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiYsIElQQzo6
Q29ubmVjdGlvbiYsIGJvb2wgZmxhZywgdWludDY0X3QgdmFsdWUpOworICAgIHVzaW5nIFJlcGx5
ID0gc3RkOjp0dXBsZTxib29sJiwgdWludDY0X3QmPjsKKyAgICB1c2luZyBSZXBseUFyZ3VtZW50
cyA9IHN0ZDo6dHVwbGU8Ym9vbCwgdWludDY0X3Q+OworICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJn
dW1lbnRzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKKyAgICB9
CisKK3ByaXZhdGU6CisgICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOworfTsKKyNlbmRpZgorCitj
bGFzcyBUZXN0U3luY01lc3NhZ2UgeworcHVibGljOgorICAgIHR5cGVkZWYgc3RkOjp0dXBsZTx1
aW50MzJfdD4gQXJndW1lbnRzOworCisgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgp
IHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVzdFN5bmNNZXNzYWdlOyB9Cisg
ICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gdHJ1ZTsKKworICAgIHVzaW5nIERlbGF5ZWRS
ZXBseSA9IFRlc3RTeW5jTWVzc2FnZURlbGF5ZWRSZXBseTsKKyAgICBzdGF0aWMgdm9pZCBzZW5k
KHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiYsIElQQzo6Q29ubmVjdGlvbiYsIHVpbnQ4
X3QgcmVwbHkpOworICAgIHVzaW5nIFJlcGx5ID0gc3RkOjp0dXBsZTx1aW50OF90Jj47CisgICAg
dXNpbmcgUmVwbHlBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPHVpbnQ4X3Q+OworICAgIGV4cGxpY2l0
IFRlc3RTeW5jTWVzc2FnZSh1aW50MzJfdCBwYXJhbSkKKyAgICAgICAgOiBtX2FyZ3VtZW50cyhw
YXJhbSkKKyAgICB7CisgICAgfQorCisgICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBj
b25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOworICAgIH0KKworcHJpdmF0
ZToKKyAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Cit9OworCitjbGFzcyBUZXN0U3luY2hyb25v
dXNNZXNzYWdlIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8Ym9vbD4gQXJndW1l
bnRzOworCisgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6
TWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVzdFN5bmNocm9ub3VzTWVzc2FnZTsgfQorICAgIHN0YXRp
YyBjb25zdCBib29sIGlzU3luYyA9IHRydWU7CisKKyAgICB1c2luZyBEZWxheWVkUmVwbHkgPSBU
ZXN0U3luY2hyb25vdXNNZXNzYWdlRGVsYXllZFJlcGx5OworICAgIHN0YXRpYyB2b2lkIHNlbmQo
c3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mJiwgSVBDOjpDb25uZWN0aW9uJiwgY29uc3Qg
T3B0aW9uYWw8V2ViS2l0OjpUZXN0Q2xhc3NOYW1lPiYgb3B0aW9uYWxSZXBseSk7CisgICAgdXNp
bmcgUmVwbHkgPSBzdGQ6OnR1cGxlPE9wdGlvbmFsPFdlYktpdDo6VGVzdENsYXNzTmFtZT4mPjsK
KyAgICB1c2luZyBSZXBseUFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8T3B0aW9uYWw8V2ViS2l0OjpU
ZXN0Q2xhc3NOYW1lPj47CisgICAgZXhwbGljaXQgVGVzdFN5bmNocm9ub3VzTWVzc2FnZShib29s
IHZhbHVlKQorICAgICAgICA6IG1fYXJndW1lbnRzKHZhbHVlKQorICAgIHsKKyAgICB9CisKKyAg
ICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1
cm4gbV9hcmd1bWVudHM7CisgICAgfQorCitwcml2YXRlOgorICAgIEFyZ3VtZW50cyBtX2FyZ3Vt
ZW50czsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYlBhZ2UKK30gLy8gbmFtZXNwYWNlIE1lc3Nh
Z2VzCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvdGVzdC1zdXBlcmNsYXNzTWVzc2FnZXNS
ZXBsaWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TY3JpcHRzL3Rlc3Qtc3VwZXJj
bGFzc01lc3NhZ2VzUmVwbGllcy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvU2Ny
aXB0cy90ZXN0LXN1cGVyY2xhc3NNZXNzYWdlc1JlcGxpZXMuaAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBB
TkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUgorICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSCisgKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorICogT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRl
ICJNZXNzYWdlTmFtZXMuaCIKKyNpbmNsdWRlICJUZXN0Q2xhc3NOYW1lLmgiCisjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KKworCituYW1lc3BhY2Ug
TWVzc2FnZXMgeworbmFtZXNwYWNlIFdlYlBhZ2UgeworCisjaWYgRU5BQkxFKFRFU1RfRkVBVFVS
RSkKK3VzaW5nIFRlc3RBc3luY01lc3NhZ2VBc3luY1JlcGx5ID0gQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCh1aW50NjRfdCByZXN1bHQpPjsKKyNlbmRpZgorCisjaWYgRU5BQkxFKFRFU1RfRkVBVFVS
RSkKK3VzaW5nIFRlc3RBc3luY01lc3NhZ2VXaXRoTm9Bcmd1bWVudHNBc3luY1JlcGx5ID0gQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPjsKKyNlbmRpZgorCisjaWYgRU5BQkxFKFRFU1RfRkVBVFVS
RSkKK3VzaW5nIFRlc3RBc3luY01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHNBc3luY1JlcGx5
ID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIGZsYWcsIHVpbnQ2NF90IHZhbHVlKT47Cisj
ZW5kaWYKKwordXNpbmcgVGVzdFN5bmNNZXNzYWdlRGVsYXllZFJlcGx5ID0gQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCh1aW50OF90IHJlcGx5KT47CisKK3VzaW5nIFRlc3RTeW5jaHJvbm91c01lc3Nh
Z2VEZWxheWVkUmVwbHkgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IE9wdGlvbmFsPFdl
YktpdDo6VGVzdENsYXNzTmFtZT4mIG9wdGlvbmFsUmVwbHkpPjsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViUGFnZQorfSAvLyBuYW1lc3BhY2UgTWVzc2FnZXMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2Ny
aXB0cy90ZXN0TWVzc2FnZVJlY2VpdmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1NjcmlwdHMvdGVzdE1lc3NhZ2VSZWNlaXZlci5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNl
L1dlYktpdC9TY3JpcHRzL3Rlc3RNZXNzYWdlUmVjZWl2ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
IEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICog
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisK
KyNpbmNsdWRlICJOb25lLmgiCisKKyNpbmNsdWRlICJEZWNvZGVyLmgiCisjaW5jbHVkZSAiSGFu
ZGxlTWVzc2FnZS5oIgorI2luY2x1ZGUgIk5vbmVNZXNzYWdlcy5oIgorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKwpJbmRleDogU291cmNlL1dlYktpdC9T
Y3JpcHRzL3Rlc3RNZXNzYWdlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2NyaXB0
cy90ZXN0TWVzc2FnZXMuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1NjcmlwdHMv
dGVzdE1lc3NhZ2VzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKKyNp
bmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiTWVzc2FnZU5hbWVzLmgiCisjaW5jbHVk
ZSAiTm9uZU1lc3NhZ2VzUmVwbGllcy5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5j
bHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CisKKworbmFtZXNwYWNlIE1lc3NhZ2Vz
IHsKK25hbWVzcGFjZSBOb25lIHsKKworc3RhdGljIGlubGluZSBJUEM6OlJlY2VpdmVyTmFtZSBt
ZXNzYWdlUmVjZWl2ZXJOYW1lKCkKK3sKKyAgICByZXR1cm4gSVBDOjpSZWNlaXZlck5hbWU6Ok5v
bmU7Cit9CisKKworfSAvLyBuYW1lc3BhY2UgTm9uZQorfSAvLyBuYW1lc3BhY2UgTWVzc2FnZXMK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy90ZXN0TWVzc2FnZXNSZXBsaWVzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9TY3JpcHRzL3Rlc3RNZXNzYWdlc1JlcGxpZXMuaAkobm9u
ZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvdGVzdE1lc3NhZ2VzUmVwbGllcy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTAtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2luY2x1ZGUgIk1lc3NhZ2VOYW1lcy5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3
YXJkLmg+CisKKworbmFtZXNwYWNlIE1lc3NhZ2VzIHsKK25hbWVzcGFjZSBOb25lIHsKKworCit9
IC8vIG5hbWVzcGFjZSBOb25lCit9IC8vIG5hbWVzcGFjZSBNZXNzYWdlcwpJbmRleDogU291cmNl
L1dlYktpdC9TY3JpcHRzL3dlYmtpdC9MZWdhY3lNZXNzYWdlUmVjZWl2ZXItZXhwZWN0ZWQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvTGVnYWN5TWVzc2Fn
ZVJlY2VpdmVyLWV4cGVjdGVkLmNwcAkocmV2aXNpb24gMjYwOTM1KQorKysgU291cmNlL1dlYktp
dC9TY3JpcHRzL3dlYmtpdC9MZWdhY3lNZXNzYWdlUmVjZWl2ZXItZXhwZWN0ZWQuY3BwCShub25l
eGlzdGVudCkKQEAgLTEsMjAzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnIEFORAotICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0gKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0gKiBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUgotICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0g
KiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAi
Y29uZmlnLmgiCi0KLSNpZiAoRU5BQkxFKFdFQktJVDIpICYmIChORVNURURfTUFTVEVSX0NPTkRJ
VElPTiB8fCBNQVNURVJfT1IgJiYgTUFTVEVSX0FORCkpCi0KLSNpbmNsdWRlICJXZWJQYWdlLmgi
Ci0KLSNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgotI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIK
LSNpbmNsdWRlICJEZWNvZGVyLmgiCi0jaWYgRU5BQkxFKERFUFJFQ0FURURfRkVBVFVSRSkgfHwg
RU5BQkxFKEVYUEVSSU1FTlRBTF9GRUFUVVJFKQotI2luY2x1ZGUgIkR1bW15VHlwZS5oIgotI2Vu
ZGlmCi0jaW5jbHVkZSAiSGFuZGxlTWVzc2FnZS5oIgotI2lmIFBMQVRGT1JNKE1BQykKLSNpbmNs
dWRlICJNYWNoUG9ydC5oIgotI2VuZGlmCi0jaW5jbHVkZSAiUGx1Z2luLmgiCi0jaW5jbHVkZSAi
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCi0jaWYgKEVOQUJMRShUT1VDSF9FVkVOVFMpICYmIChO
RVNURURfTUVTU0FHRV9DT05ESVRJT04gJiYgU09NRV9PVEhFUl9NRVNTQUdFX0NPTkRJVElPTikp
IHx8IChFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiAoTkVTVEVEX01FU1NBR0VfQ09ORElUSU9OIHx8
IFNPTUVfT1RIRVJfTUVTU0FHRV9DT05ESVRJT04pKQotI2luY2x1ZGUgIldlYkV2ZW50LmgiCi0j
ZW5kaWYKLSNpbmNsdWRlICJXZWJQYWdlTWVzc2FnZXMuaCIKLSNpbmNsdWRlICJXZWJQcmVmZXJl
bmNlc1N0b3JlLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0xheWVyLmg+Ci0jaWYgUExB
VEZPUk0oTUFDKQotI2luY2x1ZGUgPFdlYkNvcmUvS2V5Ym9hcmRFdmVudC5oPgotI2VuZGlmCi0j
aW5jbHVkZSA8V2ViQ29yZS9QbHVnaW5EYXRhLmg+Ci0jaW5jbHVkZSA8dXRpbGl0eT4KLSNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIE1lc3NhZ2VzIHsKLQotbmFtZXNwYWNl
IFdlYlBhZ2UgewotCi12b2lkIEdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpzZW5kKHN0ZDo6
dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiYgZW5jb2RlciwgSVBDOjpDb25uZWN0aW9uJiBjb25u
ZWN0aW9uLCBjb25zdCBJUEM6OkNvbm5lY3Rpb246OkhhbmRsZSYgY29ubmVjdGlvbkhhbmRsZSkK
LXsKLSAgICAqZW5jb2RlciA8PCBjb25uZWN0aW9uSGFuZGxlOwotICAgIGNvbm5lY3Rpb24uc2Vu
ZFN5bmNSZXBseShXVEZNb3ZlKGVuY29kZXIpKTsKLX0KLQotdm9pZCBUZXN0TXVsdGlwbGVBdHRy
aWJ1dGVzOjpzZW5kKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiYgZW5jb2RlciwgSVBD
OjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQotewotICAgIGNvbm5lY3Rpb24uc2VuZFN5bmNSZXBs
eShXVEZNb3ZlKGVuY29kZXIpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViUGFnZQotCi19IC8v
IG5hbWVzcGFjZSBNZXNzYWdlcwotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotdm9pZCBXZWJQYWdl
OjpkaWRSZWNlaXZlV2ViUGFnZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJ
UEM6OkRlY29kZXImIGRlY29kZXIpCi17Ci0gICAgYXV0byBwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyk7Ci0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2Vi
UGFnZTo6TG9hZFVSTDo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNz
YWdlczo6V2ViUGFnZTo6TG9hZFVSTD4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OmxvYWRVUkwp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCi0gICAg
aWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFNvbWV0
aGluZzo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2Vi
UGFnZTo6TG9hZFNvbWV0aGluZz4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OmxvYWRTb21ldGhp
bmcpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlmCi0jaWYgKEVOQUJMRShUT1VDSF9F
VkVOVFMpICYmIChORVNURURfTUVTU0FHRV9DT05ESVRJT04gfHwgU09NRV9PVEhFUl9NRVNTQUdF
X0NPTkRJVElPTikpCi0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6
V2ViUGFnZTo6VG91Y2hFdmVudDo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2Fn
ZTxNZXNzYWdlczo6V2ViUGFnZTo6VG91Y2hFdmVudD4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6
OnRvdWNoRXZlbnQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlmCi0jaWYgKEVOQUJM
RShUT1VDSF9FVkVOVFMpICYmIChORVNURURfTUVTU0FHRV9DT05ESVRJT04gJiYgU09NRV9PVEhF
Ul9NRVNTQUdFX0NPTkRJVElPTikpCi0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBN
ZXNzYWdlczo6V2ViUGFnZTo6QWRkRXZlbnQ6Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRs
ZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OkFkZEV2ZW50PihkZWNvZGVyLCB0aGlzLCAmV2Vi
UGFnZTo6YWRkRXZlbnQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlmCi0jaWYgRU5B
QkxFKFRPVUNIX0VWRU5UUykKLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3Nh
Z2VzOjpXZWJQYWdlOjpMb2FkU29tZXRoaW5nRWxzZTo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6
aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFNvbWV0aGluZ0Vsc2U+KGRlY29k
ZXIsIHRoaXMsICZXZWJQYWdlOjpsb2FkU29tZXRoaW5nRWxzZSk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0jZW5kaWYKLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2Vz
OjpXZWJQYWdlOjpEaWRSZWNlaXZlUG9saWN5RGVjaXNpb246Om5hbWUoKSkgewotICAgICAgICBJ
UEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJlY2VpdmVQb2xpY3lEZWNp
c2lvbj4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbik7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9
PSBNZXNzYWdlczo6V2ViUGFnZTo6Q2xvc2U6Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRs
ZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OkNsb3NlPihkZWNvZGVyLCB0aGlzLCAmV2ViUGFn
ZTo6Y2xvc2UpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChkZWNvZGVyLm1lc3Nh
Z2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OlByZWZlcmVuY2VzRGlkQ2hhbmdlOjpuYW1l
KCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpQcmVm
ZXJlbmNlc0RpZENoYW5nZT4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OnByZWZlcmVuY2VzRGlk
Q2hhbmdlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdl
TmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpTZW5kRG91YmxlQW5kRmxvYXQ6Om5hbWUoKSkg
ewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OlNlbmREb3Vi
bGVBbmRGbG9hdD4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OnNlbmREb3VibGVBbmRGbG9hdCk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9
PSBNZXNzYWdlczo6V2ViUGFnZTo6U2VuZEludHM6Om5hbWUoKSkgewotICAgICAgICBJUEM6Omhh
bmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OlNlbmRJbnRzPihkZWNvZGVyLCB0aGlzLCAm
V2ViUGFnZTo6c2VuZEludHMpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChkZWNv
ZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RQYXJhbWV0ZXJBdHRy
aWJ1dGVzOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpX
ZWJQYWdlOjpUZXN0UGFyYW1ldGVyQXR0cmlidXRlcz4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6
OnRlc3RQYXJhbWV0ZXJBdHRyaWJ1dGVzKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBp
ZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpUZW1wbGF0ZVRl
c3Q6Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBh
Z2U6OlRlbXBsYXRlVGVzdD4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OnRlbXBsYXRlVGVzdCk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9
PSBNZXNzYWdlczo6V2ViUGFnZTo6U2V0VmlkZW9MYXllcklEOjpuYW1lKCkpIHsKLSAgICAgICAg
SVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRWaWRlb0xheWVySUQ+KGRl
Y29kZXIsIHRoaXMsICZXZWJQYWdlOjpzZXRWaWRlb0xheWVySUQpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotI2lmIFBMQVRGT1JNKE1BQykKLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgp
ID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbjo6bmFt
ZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6RGlk
Q3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24+KGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjpkaWRD
cmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5k
aWYKLSNpZiBFTkFCTEUoREVQUkVDQVRFRF9GRUFUVVJFKQotICAgIGlmIChkZWNvZGVyLm1lc3Nh
Z2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OkRlcHJlY2F0ZWRPcGVyYXRpb246Om5hbWUo
KSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OkRlcHJl
Y2F0ZWRPcGVyYXRpb24+KGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjpkZXByZWNhdGVkT3BlcmF0
aW9uKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNlbmRpZgotI2lmIEVOQUJMRShFWFBFUklN
RU5UQUxfRkVBVFVSRSkKLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2Vz
OjpXZWJQYWdlOjpFeHBlcmltZW50YWxPcGVyYXRpb246Om5hbWUoKSkgewotICAgICAgICBJUEM6
OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OkV4cGVyaW1lbnRhbE9wZXJhdGlvbj4o
ZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OmV4cGVyaW1lbnRhbE9wZXJhdGlvbik7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0jZW5kaWYKLSAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7Ci0g
ICAgVU5VU0VEX1BBUkFNKGRlY29kZXIpOwotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQot
Ci12b2lkIFdlYlBhZ2U6OmRpZFJlY2VpdmVTeW5jV2ViUGFnZU1lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0cjxJ
UEM6OkVuY29kZXI+JiByZXBseUVuY29kZXIpCi17Ci0gICAgYXV0byBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyk7Ci0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdl
czo6V2ViUGFnZTo6Q3JlYXRlUGx1Z2luOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVN
ZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpDcmVhdGVQbHVnaW4+KGRlY29kZXIsICpyZXBseUVu
Y29kZXIsIHRoaXMsICZXZWJQYWdlOjpjcmVhdGVQbHVnaW4pOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6
OlJ1bkphdmFTY3JpcHRBbGVydDo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2Fn
ZTxNZXNzYWdlczo6V2ViUGFnZTo6UnVuSmF2YVNjcmlwdEFsZXJ0PihkZWNvZGVyLCAqcmVwbHlF
bmNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6cnVuSmF2YVNjcmlwdEFsZXJ0KTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpX
ZWJQYWdlOjpHZXRQbHVnaW5zOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdl
PE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRQbHVnaW5zPihkZWNvZGVyLCAqcmVwbHlFbmNvZGVyLCB0
aGlzLCAmV2ViUGFnZTo6Z2V0UGx1Z2lucyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAg
aWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6R2V0UGx1Z2lu
UHJvY2Vzc0Nvbm5lY3Rpb246Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2VT
eW5jaHJvbm91czxNZXNzYWdlczo6V2ViUGFnZTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24+
KGNvbm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5RW5jb2RlciwgdGhpcywgJldlYlBhZ2U6OmdldFBs
dWdpblByb2Nlc3NDb25uZWN0aW9uKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAo
ZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0TXVsdGlwbGVB
dHRyaWJ1dGVzOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlU3luY2hyb25v
dXNXYW50c0Nvbm5lY3Rpb248TWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RNdWx0aXBsZUF0dHJpYnV0
ZXM+KGNvbm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5RW5jb2RlciwgdGhpcywgJldlYlBhZ2U6OnRl
c3RNdWx0aXBsZUF0dHJpYnV0ZXMpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2lmIFBMQVRG
T1JNKE1BQykKLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQ
YWdlOjpJbnRlcnByZXRLZXlFdmVudDo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVz
c2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6SW50ZXJwcmV0S2V5RXZlbnQ+KGRlY29kZXIsICpyZXBs
eUVuY29kZXIsIHRoaXMsICZXZWJQYWdlOjppbnRlcnByZXRLZXlFdmVudCk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0jZW5kaWYKLSAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7Ci0gICAg
VU5VU0VEX1BBUkFNKGRlY29kZXIpOwotICAgIFVOVVNFRF9QQVJBTShyZXBseUVuY29kZXIpOwot
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQot
Ci0jZW5kaWYgLy8gKEVOQUJMRShXRUJLSVQyKSAmJiAoTkVTVEVEX01BU1RFUl9DT05ESVRJT04g
fHwgTUFTVEVSX09SICYmIE1BU1RFUl9BTkQpKQoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNl
L1dlYktpdC9TY3JpcHRzL3dlYmtpdC9MZWdhY3lNZXNzYWdlUmVjZWl2ZXItZXhwZWN0ZWQuY3Bw
Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX18KRGVsZXRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMSArMCwwICMjCi1uYXRpdmUK
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogU291cmNlL1dlYktpdC9TY3Jp
cHRzL3dlYmtpdC9MZWdhY3lNZXNzYWdlcy1leHBlY3RlZC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvTGVnYWN5TWVzc2FnZXMtZXhwZWN0ZWQuaAkocmV2aXNp
b24gMjYwOTM1KQorKysgU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9MZWdhY3lNZXNzYWdl
cy1leHBlY3RlZC5oCShub25leGlzdGVudCkKQEAgLTEsNTcwICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTAtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAotICogQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0gKiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMCi0gKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgotICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSAqIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksCi0gKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIChFTkFCTEUoV0VCS0lUMikgJiYgKE5FU1RFRF9N
QVNURVJfQ09ORElUSU9OIHx8IE1BU1RFUl9PUiAmJiBNQVNURVJfQU5EKSkKLQotI2luY2x1ZGUg
IkFyZ3VtZW50Q29kZXJzLmgiCi0jaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgotI2luY2x1ZGUgIlBs
dWdpbi5oIgotI2luY2x1ZGUgIldlYlBhZ2VNZXNzYWdlc1JlcGxpZXMuaCIKLSNpbmNsdWRlIDxX
ZWJDb3JlL0dyYXBoaWNzTGF5ZXIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0tleWJvYXJkRXZlbnQu
aD4KLSNpbmNsdWRlIDxXZWJDb3JlL1BsdWdpbkRhdGEuaD4KLSNpbmNsdWRlIDx1dGlsaXR5Pgot
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNs
dWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBJUEMgewotY2xh
c3MgRHVtbXlUeXBlOwotY2xhc3MgTWFjaFBvcnQ7Ci19Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewot
Y2xhc3MgV2ViUHJlZmVyZW5jZXNTdG9yZTsKLWNsYXNzIFdlYlRvdWNoRXZlbnQ7Ci19Ci0KLW5h
bWVzcGFjZSBNZXNzYWdlcyB7Ci1uYW1lc3BhY2UgV2ViUGFnZSB7Ci0KLXN0YXRpYyBpbmxpbmUg
SVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSgpCi17Ci0gICAgcmV0dXJu
IElQQzo6U3RyaW5nUmVmZXJlbmNlKCJXZWJQYWdlIik7Ci19Ci0KLWNsYXNzIExvYWRVUkwgewot
cHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBTdHJpbmcmPiBBcmd1bWVudHM7
Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1
cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJl
bmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiTG9hZFVSTCIpOyB9Ci0g
ICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7Ci0KLSAgICBleHBsaWNpdCBMb2Fk
VVJMKGNvbnN0IFN0cmluZyYgdXJsKQotICAgICAgICA6IG1fYXJndW1lbnRzKHVybCkKLSAgICB7
Ci0gICAgfQotCi0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsK
LSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1
bWVudHMgbV9hcmd1bWVudHM7Ci19OwotCi0jaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLWNsYXNz
IExvYWRTb21ldGhpbmcgewotcHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBT
dHJpbmcmPiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVj
ZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGlj
IElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5j
ZSgiTG9hZFNvbWV0aGluZyIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFs
c2U7Ci0KLSAgICBleHBsaWNpdCBMb2FkU29tZXRoaW5nKGNvbnN0IFN0cmluZyYgdXJsKQotICAg
ICAgICA6IG1fYXJndW1lbnRzKHVybCkKLSAgICB7Ci0gICAgfQotCi0gICAgY29uc3QgQXJndW1l
bnRzJiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRz
OwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19OwotI2Vu
ZGlmCi0KLSNpZiAoRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgKE5FU1RFRF9NRVNTQUdFX0NPTkRJ
VElPTiB8fCBTT01FX09USEVSX01FU1NBR0VfQ09ORElUSU9OKSkKLWNsYXNzIFRvdWNoRXZlbnQg
ewotcHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBXZWJLaXQ6OldlYlRvdWNo
RXZlbnQmPiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVj
ZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGlj
IElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5j
ZSgiVG91Y2hFdmVudCIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7
Ci0KLSAgICBleHBsaWNpdCBUb3VjaEV2ZW50KGNvbnN0IFdlYktpdDo6V2ViVG91Y2hFdmVudCYg
ZXZlbnQpCi0gICAgICAgIDogbV9hcmd1bWVudHMoZXZlbnQpCi0gICAgewotICAgIH0KLQotICAg
IGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVy
biBtX2FyZ3VtZW50czsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJndW1l
bnRzOwotfTsKLSNlbmRpZgotCi0jaWYgKEVOQUJMRShUT1VDSF9FVkVOVFMpICYmIChORVNURURf
TUVTU0FHRV9DT05ESVRJT04gJiYgU09NRV9PVEhFUl9NRVNTQUdFX0NPTkRJVElPTikpCi1jbGFz
cyBBZGRFdmVudCB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGNvbnN0IFdlYktp
dDo6V2ViVG91Y2hFdmVudCY+IEFyZ3VtZW50czsKLQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1Jl
ZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0K
LSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3Ry
aW5nUmVmZXJlbmNlKCJBZGRFdmVudCIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5j
ID0gZmFsc2U7Ci0KLSAgICBleHBsaWNpdCBBZGRFdmVudChjb25zdCBXZWJLaXQ6OldlYlRvdWNo
RXZlbnQmIGV2ZW50KQotICAgICAgICA6IG1fYXJndW1lbnRzKGV2ZW50KQotICAgIHsKLSAgICB9
Ci0KLSAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewotICAgICAg
ICByZXR1cm4gbV9hcmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBt
X2FyZ3VtZW50czsKLX07Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCi1jbGFz
cyBMb2FkU29tZXRoaW5nRWxzZSB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGNv
bnN0IFN0cmluZyY+IEFyZ3VtZW50czsKLQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5j
ZSByZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBz
dGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVm
ZXJlbmNlKCJMb2FkU29tZXRoaW5nRWxzZSIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNT
eW5jID0gZmFsc2U7Ci0KLSAgICBleHBsaWNpdCBMb2FkU29tZXRoaW5nRWxzZShjb25zdCBTdHJp
bmcmIHVybCkKLSAgICAgICAgOiBtX2FyZ3VtZW50cyh1cmwpCi0gICAgewotICAgIH0KLQotICAg
IGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVy
biBtX2FyZ3VtZW50czsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJndW1l
bnRzOwotfTsKLSNlbmRpZgotCi1jbGFzcyBEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24gewotcHVi
bGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTx1aW50NjRfdCwgdWludDY0X3QsIHVpbnQzMl90
PiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJO
YW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6
U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiRGlk
UmVjZWl2ZVBvbGljeURlY2lzaW9uIik7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMg
PSBmYWxzZTsKLQotICAgIERpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbih1aW50NjRfdCBmcmFtZUlE
LCB1aW50NjRfdCBsaXN0ZW5lcklELCB1aW50MzJfdCBwb2xpY3lBY3Rpb24pCi0gICAgICAgIDog
bV9hcmd1bWVudHMoZnJhbWVJRCwgbGlzdGVuZXJJRCwgcG9saWN5QWN0aW9uKQotICAgIHsKLSAg
ICB9Ci0KLSAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewotICAg
ICAgICByZXR1cm4gbV9hcmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50
cyBtX2FyZ3VtZW50czsKLX07Ci0KLWNsYXNzIENsb3NlIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVm
IHN0ZDo6dHVwbGU8PiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVu
Y2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAg
c3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1Jl
ZmVyZW5jZSgiQ2xvc2UiKTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNl
OwotCi0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsKLSAgICAg
ICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1bWVudHMg
bV9hcmd1bWVudHM7Ci19OwotCi1jbGFzcyBQcmVmZXJlbmNlc0RpZENoYW5nZSB7Ci1wdWJsaWM6
Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGNvbnN0IFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9y
ZSY+IEFyZ3VtZW50czsKLQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZl
ck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMgSVBD
OjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJQ
cmVmZXJlbmNlc0RpZENoYW5nZSIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0g
ZmFsc2U7Ci0KLSAgICBleHBsaWNpdCBQcmVmZXJlbmNlc0RpZENoYW5nZShjb25zdCBXZWJLaXQ6
OldlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlKQotICAgICAgICA6IG1fYXJndW1lbnRzKHN0b3Jl
KQotICAgIHsKLSAgICB9Ci0KLSAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0
Ci0gICAgewotICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRlOgot
ICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKLX07Ci0KLWNsYXNzIFNlbmREb3VibGVBbmRGbG9h
dCB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGRvdWJsZSwgZmxvYXQ+IEFyZ3Vt
ZW50czsKLQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7
IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdS
ZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJTZW5kRG91Ymxl
QW5kRmxvYXQiKTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOwotCi0g
ICAgU2VuZERvdWJsZUFuZEZsb2F0KGRvdWJsZSBkLCBmbG9hdCBmKQotICAgICAgICA6IG1fYXJn
dW1lbnRzKGQsIGYpCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1l
bnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0K
LXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLQotY2xhc3MgU2VuZElu
dHMgewotcHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBWZWN0b3I8dWludDY0
X3Q+JiwgY29uc3QgVmVjdG9yPFZlY3Rvcjx1aW50NjRfdD4+Jj4gQXJndW1lbnRzOwotCi0gICAg
c3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3Nh
Z2VSZWNlaXZlck5hbWUoKTsgfQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1l
KCkgeyByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIlNlbmRJbnRzIik7IH0KLSAgICBzdGF0
aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKLQotICAgIFNlbmRJbnRzKGNvbnN0IFZlY3Rv
cjx1aW50NjRfdD4mIGludHMsIGNvbnN0IFZlY3RvcjxWZWN0b3I8dWludDY0X3Q+PiYgaW50VmVj
dG9ycykKLSAgICAgICAgOiBtX2FyZ3VtZW50cyhpbnRzLCBpbnRWZWN0b3JzKQotICAgIHsKLSAg
ICB9Ci0KLSAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewotICAg
ICAgICByZXR1cm4gbV9hcmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50
cyBtX2FyZ3VtZW50czsKLX07Ci0KLWNsYXNzIENyZWF0ZVBsdWdpbiB7Ci1wdWJsaWM6Ci0gICAg
dHlwZWRlZiBzdGQ6OnR1cGxlPHVpbnQ2NF90LCBjb25zdCBXZWJLaXQ6OlBsdWdpbjo6UGFyYW1l
dGVycyY+IEFyZ3VtZW50czsKLQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNl
aXZlck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMg
SVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNl
KCJDcmVhdGVQbHVnaW4iKTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IHRydWU7
Ci0KLSAgICB1c2luZyBSZXBseSA9IHN0ZDo6dHVwbGU8Ym9vbCY+OwotICAgIHVzaW5nIFJlcGx5
QXJndW1lbnRzID0gc3RkOjp0dXBsZTxib29sPjsKLSAgICBDcmVhdGVQbHVnaW4odWludDY0X3Qg
cGx1Z2luSW5zdGFuY2VJRCwgY29uc3QgV2ViS2l0OjpQbHVnaW46OlBhcmFtZXRlcnMmIHBhcmFt
ZXRlcnMpCi0gICAgICAgIDogbV9hcmd1bWVudHMocGx1Z2luSW5zdGFuY2VJRCwgcGFyYW1ldGVy
cykKLSAgICB7Ci0gICAgfQotCi0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25z
dAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToK
LSAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19OwotCi1jbGFzcyBSdW5KYXZhU2NyaXB0QWxl
cnQgewotcHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTx1aW50NjRfdCwgY29uc3QgU3Ry
aW5nJj4gQXJndW1lbnRzOwotCi0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2Vp
dmVyTmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsgfQotICAgIHN0YXRpYyBJ
UEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2Uo
IlJ1bkphdmFTY3JpcHRBbGVydCIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0g
dHJ1ZTsKLQotICAgIHVzaW5nIFJlcGx5ID0gc3RkOjp0dXBsZTw+OwotICAgIHVzaW5nIFJlcGx5
QXJndW1lbnRzID0gc3RkOjp0dXBsZTw+OwotICAgIFJ1bkphdmFTY3JpcHRBbGVydCh1aW50NjRf
dCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCi0gICAgICAgIDogbV9hcmd1bWVudHMo
ZnJhbWVJRCwgbWVzc2FnZSkKLSAgICB7Ci0gICAgfQotCi0gICAgY29uc3QgQXJndW1lbnRzJiBh
cmd1bWVudHMoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAg
IH0KLQotcHJpdmF0ZToKLSAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19OwotCi1jbGFzcyBH
ZXRQbHVnaW5zIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8Ym9vbD4gQXJndW1l
bnRzOwotCi0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsg
cmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsgfQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1Jl
ZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIkdldFBsdWdpbnMi
KTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IHRydWU7Ci0KLSAgICB1c2luZyBS
ZXBseSA9IHN0ZDo6dHVwbGU8VmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+Jj47Ci0gICAgdXNp
bmcgUmVwbHlBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZv
Pj47Ci0gICAgZXhwbGljaXQgR2V0UGx1Z2lucyhib29sIHJlZnJlc2gpCi0gICAgICAgIDogbV9h
cmd1bWVudHMocmVmcmVzaCkKLSAgICB7Ci0gICAgfQotCi0gICAgY29uc3QgQXJndW1lbnRzJiBh
cmd1bWVudHMoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAg
IH0KLQotcHJpdmF0ZToKLSAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19OwotCi1jbGFzcyBH
ZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbiB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1
cGxlPGNvbnN0IFN0cmluZyY+IEFyZ3VtZW50czsKLQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1Jl
ZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0K
LSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3Ry
aW5nUmVmZXJlbmNlKCJHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbiIpOyB9Ci0gICAgc3RhdGlj
IGNvbnN0IGJvb2wgaXNTeW5jID0gdHJ1ZTsKLQotICAgIHVzaW5nIERlbGF5ZWRSZXBseSA9IEdl
dFBsdWdpblByb2Nlc3NDb25uZWN0aW9uRGVsYXllZFJlcGx5OwotICAgIHN0YXRpYyB2b2lkIHNl
bmQoc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mJiwgSVBDOjpDb25uZWN0aW9uJiwgY29u
c3QgSVBDOjpDb25uZWN0aW9uOjpIYW5kbGUmIGNvbm5lY3Rpb25IYW5kbGUpOwotICAgIHVzaW5n
IFJlcGx5ID0gc3RkOjp0dXBsZTxJUEM6OkNvbm5lY3Rpb246OkhhbmRsZSY+OwotICAgIHVzaW5n
IFJlcGx5QXJndW1lbnRzID0gc3RkOjp0dXBsZTxJUEM6OkNvbm5lY3Rpb246OkhhbmRsZT47Ci0g
ICAgZXhwbGljaXQgR2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24oY29uc3QgU3RyaW5nJiBwbHVn
aW5QYXRoKQotICAgICAgICA6IG1fYXJndW1lbnRzKHBsdWdpblBhdGgpCi0gICAgewotICAgIH0K
LQotICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAg
IHJldHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1f
YXJndW1lbnRzOwotfTsKLQotY2xhc3MgVGVzdE11bHRpcGxlQXR0cmlidXRlcyB7Ci1wdWJsaWM6
Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPD4gQXJndW1lbnRzOwotCi0gICAgc3RhdGljIElQQzo6
U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5h
bWUoKTsgfQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4g
SVBDOjpTdHJpbmdSZWZlcmVuY2UoIlRlc3RNdWx0aXBsZUF0dHJpYnV0ZXMiKTsgfQotICAgIHN0
YXRpYyBjb25zdCBib29sIGlzU3luYyA9IHRydWU7Ci0KLSAgICB1c2luZyBEZWxheWVkUmVwbHkg
PSBUZXN0TXVsdGlwbGVBdHRyaWJ1dGVzRGVsYXllZFJlcGx5OwotICAgIHN0YXRpYyB2b2lkIHNl
bmQoc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mJiwgSVBDOjpDb25uZWN0aW9uJik7Ci0g
ICAgdXNpbmcgUmVwbHkgPSBzdGQ6OnR1cGxlPD47Ci0gICAgdXNpbmcgUmVwbHlBcmd1bWVudHMg
PSBzdGQ6OnR1cGxlPD47Ci0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAot
ICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAg
ICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19OwotCi1jbGFzcyBUZXN0UGFyYW1ldGVyQXR0cmli
dXRlcyB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPHVpbnQ2NF90LCBkb3VibGUs
IGRvdWJsZT4gQXJndW1lbnRzOwotCi0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJl
Y2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsgfQotICAgIHN0YXRp
YyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVu
Y2UoIlRlc3RQYXJhbWV0ZXJBdHRyaWJ1dGVzIik7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBp
c1N5bmMgPSBmYWxzZTsKLQotICAgIFRlc3RQYXJhbWV0ZXJBdHRyaWJ1dGVzKHVpbnQ2NF90IGZv
bywgZG91YmxlIGJhciwgZG91YmxlIGJheikKLSAgICAgICAgOiBtX2FyZ3VtZW50cyhmb28sIGJh
ciwgYmF6KQotICAgIHsKLSAgICB9Ci0KLSAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygp
IGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7Ci0gICAgfQotCi1wcml2
YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKLX07Ci0KLWNsYXNzIFRlbXBsYXRlVGVz
dCB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGNvbnN0IEhhc2hNYXA8U3RyaW5n
LCBzdGQ6OnBhaXI8U3RyaW5nLCB1aW50NjRfdD4+Jj4gQXJndW1lbnRzOwotCi0gICAgc3RhdGlj
IElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNl
aXZlck5hbWUoKTsgfQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyBy
ZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIlRlbXBsYXRlVGVzdCIpOyB9Ci0gICAgc3RhdGlj
IGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7Ci0KLSAgICBleHBsaWNpdCBUZW1wbGF0ZVRlc3Qo
Y29uc3QgSGFzaE1hcDxTdHJpbmcsIHN0ZDo6cGFpcjxTdHJpbmcsIHVpbnQ2NF90Pj4mIGEpCi0g
ICAgICAgIDogbV9hcmd1bWVudHMoYSkKLSAgICB7Ci0gICAgfQotCi0gICAgY29uc3QgQXJndW1l
bnRzJiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRz
OwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19OwotCi1j
bGFzcyBTZXRWaWRlb0xheWVySUQgewotcHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxj
b25zdCBXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQmPiBBcmd1bWVudHM7
Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1
cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJl
bmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiU2V0VmlkZW9MYXllcklE
Iik7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKLQotICAgIGV4cGxp
Y2l0IFNldFZpZGVvTGF5ZXJJRChjb25zdCBXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpQbGF0Zm9y
bUxheWVySUQmIHZpZGVvTGF5ZXJJRCkKLSAgICAgICAgOiBtX2FyZ3VtZW50cyh2aWRlb0xheWVy
SUQpCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29u
c3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0KLXByaXZhdGU6
Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLQotI2lmIFBMQVRGT1JNKE1BQykKLWNs
YXNzIERpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVm
IHN0ZDo6dHVwbGU8Y29uc3QgSVBDOjpNYWNoUG9ydCY+IEFyZ3VtZW50czsKLQotICAgIHN0YXRp
YyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVj
ZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsg
cmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJEaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlv
biIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7Ci0KLSAgICBleHBs
aWNpdCBEaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbihjb25zdCBJUEM6Ok1hY2hQb3J0JiBj
b25uZWN0aW9uSWRlbnRpZmllcikKLSAgICAgICAgOiBtX2FyZ3VtZW50cyhjb25uZWN0aW9uSWRl
bnRpZmllcikKLSAgICB7Ci0gICAgfQotCi0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMo
KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJp
dmF0ZToKLSAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19OwotI2VuZGlmCi0KLSNpZiBQTEFU
Rk9STShNQUMpCi1jbGFzcyBJbnRlcnByZXRLZXlFdmVudCB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRl
ZiBzdGQ6OnR1cGxlPHVpbnQzMl90PiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJp
bmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgp
OyB9Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6
OlN0cmluZ1JlZmVyZW5jZSgiSW50ZXJwcmV0S2V5RXZlbnQiKTsgfQotICAgIHN0YXRpYyBjb25z
dCBib29sIGlzU3luYyA9IHRydWU7Ci0KLSAgICB1c2luZyBSZXBseSA9IHN0ZDo6dHVwbGU8VmVj
dG9yPFdlYkNvcmU6OktleXByZXNzQ29tbWFuZD4mPjsKLSAgICB1c2luZyBSZXBseUFyZ3VtZW50
cyA9IHN0ZDo6dHVwbGU8VmVjdG9yPFdlYkNvcmU6OktleXByZXNzQ29tbWFuZD4+OwotICAgIGV4
cGxpY2l0IEludGVycHJldEtleUV2ZW50KHVpbnQzMl90IHR5cGUpCi0gICAgICAgIDogbV9hcmd1
bWVudHModHlwZSkKLSAgICB7Ci0gICAgfQotCi0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVu
dHMoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQot
cHJpdmF0ZToKLSAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19OwotI2VuZGlmCi0KLSNpZiBF
TkFCTEUoREVQUkVDQVRFRF9GRUFUVVJFKQotY2xhc3MgRGVwcmVjYXRlZE9wZXJhdGlvbiB7Ci1w
dWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGNvbnN0IElQQzo6RHVtbXlUeXBlJj4gQXJn
dW1lbnRzOwotCi0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgp
IHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsgfQotICAgIHN0YXRpYyBJUEM6OlN0cmlu
Z1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIkRlcHJlY2F0
ZWRPcGVyYXRpb24iKTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOwot
Ci0gICAgZXhwbGljaXQgRGVwcmVjYXRlZE9wZXJhdGlvbihjb25zdCBJUEM6OkR1bW15VHlwZSYg
ZHVtbXkpCi0gICAgICAgIDogbV9hcmd1bWVudHMoZHVtbXkpCi0gICAgewotICAgIH0KLQotICAg
IGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVy
biBtX2FyZ3VtZW50czsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJndW1l
bnRzOwotfTsKLSNlbmRpZgotCi0jaWYgRU5BQkxFKEVYUEVSSU1FTlRBTF9GRUFUVVJFKQotY2xh
c3MgRXhwZXJpbWVudGFsT3BlcmF0aW9uIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVw
bGU8Y29uc3QgSVBDOjpEdW1teVR5cGUmPiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpT
dHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFt
ZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJ
UEM6OlN0cmluZ1JlZmVyZW5jZSgiRXhwZXJpbWVudGFsT3BlcmF0aW9uIik7IH0KLSAgICBzdGF0
aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKLQotICAgIGV4cGxpY2l0IEV4cGVyaW1lbnRh
bE9wZXJhdGlvbihjb25zdCBJUEM6OkR1bW15VHlwZSYgZHVtbXkpCi0gICAgICAgIDogbV9hcmd1
bWVudHMoZHVtbXkpCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1l
bnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0K
LXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLSNlbmRpZgotCi19IC8v
IG5hbWVzcGFjZSBXZWJQYWdlCi19IC8vIG5hbWVzcGFjZSBNZXNzYWdlcwotCi0jZW5kaWYgLy8g
KEVOQUJMRShXRUJLSVQyKSAmJiAoTkVTVEVEX01BU1RFUl9DT05ESVRJT04gfHwgTUFTVEVSX09S
ICYmIE1BU1RFUl9BTkQpKQoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dlYktpdC9TY3Jp
cHRzL3dlYmtpdC9MZWdhY3lNZXNzYWdlcy1leHBlY3RlZC5oCl9fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDog
c3ZuOmVvbC1zdHlsZQojIyAtMSArMCwwICMjCi1uYXRpdmUKXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBwcm9wZXJ0eQpJbmRleDogU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9MZWdhY3lNZXNz
YWdlc1JlcGxpZXMtZXhwZWN0ZWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1Njcmlw
dHMvd2Via2l0L0xlZ2FjeU1lc3NhZ2VzUmVwbGllcy1leHBlY3RlZC5oCShyZXZpc2lvbiAyNjA5
MzUpCisrKyBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L0xlZ2FjeU1lc3NhZ2VzUmVwbGll
cy1leHBlY3RlZC5oCShub25leGlzdGVudCkKQEAgLTEsNDMgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECi0gKiBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSAqIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwKLSAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0gKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotICogQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwKLSAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgKEVOQUJMRShXRUJLSVQyKSAmJiAoTkVTVEVEX01B
U1RFUl9DT05ESVRJT04gfHwgTUFTVEVSX09SICYmIE1BU1RFUl9BTkQpKQotCi0jaW5jbHVkZSAi
Q29ubmVjdGlvbi5oIgotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0KLQotbmFtZXNwYWNlIE1l
c3NhZ2VzIHsKLW5hbWVzcGFjZSBXZWJQYWdlIHsKLQotdXNpbmcgR2V0UGx1Z2luUHJvY2Vzc0Nv
bm5lY3Rpb25EZWxheWVkUmVwbHkgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6
Q29ubmVjdGlvbjo6SGFuZGxlJiBjb25uZWN0aW9uSGFuZGxlKT47Ci0KLXVzaW5nIFRlc3RNdWx0
aXBsZUF0dHJpYnV0ZXNEZWxheWVkUmVwbHkgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+Owot
Ci19IC8vIG5hbWVzcGFjZSBXZWJQYWdlCi19IC8vIG5hbWVzcGFjZSBNZXNzYWdlcwotCi0jZW5k
aWYgLy8gKEVOQUJMRShXRUJLSVQyKSAmJiAoTkVTVEVEX01BU1RFUl9DT05ESVRJT04gfHwgTUFT
VEVSX09SICYmIE1BU1RFUl9BTkQpKQpJbmRleDogU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtp
dC9NZXNzYWdlUmVjZWl2ZXItZXhwZWN0ZWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvU2NyaXB0cy93ZWJraXQvTWVzc2FnZVJlY2VpdmVyLWV4cGVjdGVkLmNwcAkocmV2aXNpb24g
MjYwOTM1KQorKysgU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9NZXNzYWdlUmVjZWl2ZXIt
ZXhwZWN0ZWQuY3BwCShub25leGlzdGVudCkKQEAgLTEsMjAzICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTAtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAotICogQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0gKiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMCi0gKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgotICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSAqIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksCi0gKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiAoRU5BQkxFKFdFQktJVDIpICYmIChO
RVNURURfTUFTVEVSX0NPTkRJVElPTiB8fCBNQVNURVJfT1IgJiYgTUFTVEVSX0FORCkpCi0KLSNp
bmNsdWRlICJXZWJQYWdlLmgiCi0KLSNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgotI2luY2x1
ZGUgIkNvbm5lY3Rpb24uaCIKLSNpbmNsdWRlICJEZWNvZGVyLmgiCi0jaWYgRU5BQkxFKERFUFJF
Q0FURURfRkVBVFVSRSkgfHwgRU5BQkxFKEVYUEVSSU1FTlRBTF9GRUFUVVJFKQotI2luY2x1ZGUg
IkR1bW15VHlwZS5oIgotI2VuZGlmCi0jaW5jbHVkZSAiSGFuZGxlTWVzc2FnZS5oIgotI2lmIFBM
QVRGT1JNKE1BQykKLSNpbmNsdWRlICJNYWNoUG9ydC5oIgotI2VuZGlmCi0jaW5jbHVkZSAiUGx1
Z2luLmgiCi0jaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCi0jaWYgKEVOQUJMRShU
T1VDSF9FVkVOVFMpICYmIChORVNURURfTUVTU0FHRV9DT05ESVRJT04gJiYgU09NRV9PVEhFUl9N
RVNTQUdFX0NPTkRJVElPTikpIHx8IChFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiAoTkVTVEVEX01F
U1NBR0VfQ09ORElUSU9OIHx8IFNPTUVfT1RIRVJfTUVTU0FHRV9DT05ESVRJT04pKQotI2luY2x1
ZGUgIldlYkV2ZW50LmgiCi0jZW5kaWYKLSNpbmNsdWRlICJXZWJQYWdlTWVzc2FnZXMuaCIKLSNp
bmNsdWRlICJXZWJQcmVmZXJlbmNlc1N0b3JlLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGlj
c0xheWVyLmg+Ci0jaWYgUExBVEZPUk0oTUFDKQotI2luY2x1ZGUgPFdlYkNvcmUvS2V5Ym9hcmRF
dmVudC5oPgotI2VuZGlmCi0jaW5jbHVkZSA8V2ViQ29yZS9QbHVnaW5EYXRhLmg+Ci0jaW5jbHVk
ZSA8dXRpbGl0eT4KLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIE1lc3Nh
Z2VzIHsKLQotbmFtZXNwYWNlIFdlYlBhZ2UgewotCi12b2lkIEdldFBsdWdpblByb2Nlc3NDb25u
ZWN0aW9uOjpzZW5kKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiYgZW5jb2RlciwgSVBD
OjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBJUEM6OkNvbm5lY3Rpb246OkhhbmRsZSYg
Y29ubmVjdGlvbkhhbmRsZSkKLXsKLSAgICAqZW5jb2RlciA8PCBjb25uZWN0aW9uSGFuZGxlOwot
ICAgIGNvbm5lY3Rpb24uc2VuZFN5bmNSZXBseShXVEZNb3ZlKGVuY29kZXIpKTsKLX0KLQotdm9p
ZCBUZXN0TXVsdGlwbGVBdHRyaWJ1dGVzOjpzZW5kKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29k
ZXI+JiYgZW5jb2RlciwgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQotewotICAgIGNvbm5l
Y3Rpb24uc2VuZFN5bmNSZXBseShXVEZNb3ZlKGVuY29kZXIpKTsKLX0KLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViUGFnZQotCi19IC8vIG5hbWVzcGFjZSBNZXNzYWdlcwotCi1uYW1lc3BhY2UgV2ViS2l0
IHsKLQotdm9pZCBXZWJQYWdlOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNv
bm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikKLXsKLSAgICBhdXRvIHByb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKTsKLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1l
c3NhZ2VzOjpXZWJQYWdlOjpMb2FkVVJMOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVN
ZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkVVJMPihkZWNvZGVyLCB0aGlzLCAmV2ViUGFn
ZTo6bG9hZFVSTCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jaWYgRU5BQkxFKFRPVUNIX0VW
RU5UUykKLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdl
OjpMb2FkU29tZXRoaW5nOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1l
c3NhZ2VzOjpXZWJQYWdlOjpMb2FkU29tZXRoaW5nPihkZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6
bG9hZFNvbWV0aGluZyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYKLSNpZiAoRU5B
QkxFKFRPVUNIX0VWRU5UUykgJiYgKE5FU1RFRF9NRVNTQUdFX0NPTkRJVElPTiB8fCBTT01FX09U
SEVSX01FU1NBR0VfQ09ORElUSU9OKSkKLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09
IE1lc3NhZ2VzOjpXZWJQYWdlOjpUb3VjaEV2ZW50OjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpo
YW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpUb3VjaEV2ZW50PihkZWNvZGVyLCB0aGlz
LCAmV2ViUGFnZTo6dG91Y2hFdmVudCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYK
LSNpZiAoRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgKE5FU1RFRF9NRVNTQUdFX0NPTkRJVElPTiAm
JiBTT01FX09USEVSX01FU1NBR0VfQ09ORElUSU9OKSkKLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdl
TmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpBZGRFdmVudDo6bmFtZSgpKSB7Ci0gICAgICAg
IElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6QWRkRXZlbnQ+KGRlY29kZXIs
IHRoaXMsICZXZWJQYWdlOjphZGRFdmVudCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5k
aWYKLSNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1l
KCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRTb21ldGhpbmdFbHNlOjpuYW1lKCkpIHsKLSAg
ICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkU29tZXRoaW5n
RWxzZT4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OmxvYWRTb21ldGhpbmdFbHNlKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLSNlbmRpZgotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkg
PT0gTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbjo6bmFtZSgpKSB7
Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVjZWl2
ZVBvbGljeURlY2lzaW9uPihkZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6ZGlkUmVjZWl2ZVBvbGlj
eURlY2lzaW9uKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoZGVjb2Rlci5tZXNz
YWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpDbG9zZTo6bmFtZSgpKSB7Ci0gICAgICAg
IElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6Q2xvc2U+KGRlY29kZXIsIHRo
aXMsICZXZWJQYWdlOjpjbG9zZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKGRl
Y29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6UHJlZmVyZW5jZXNEaWRD
aGFuZ2U6Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6Oldl
YlBhZ2U6OlByZWZlcmVuY2VzRGlkQ2hhbmdlPihkZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6cHJl
ZmVyZW5jZXNEaWRDaGFuZ2UpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChkZWNv
ZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OlNlbmREb3VibGVBbmRGbG9h
dDo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFn
ZTo6U2VuZERvdWJsZUFuZEZsb2F0PihkZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6c2VuZERvdWJs
ZUFuZEZsb2F0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoZGVjb2Rlci5tZXNz
YWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpTZW5kSW50czo6bmFtZSgpKSB7Ci0gICAg
ICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6U2VuZEludHM+KGRlY29k
ZXIsIHRoaXMsICZXZWJQYWdlOjpzZW5kSW50cyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0g
ICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6VGVzdFBh
cmFtZXRlckF0dHJpYnV0ZXM6Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8
TWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RQYXJhbWV0ZXJBdHRyaWJ1dGVzPihkZWNvZGVyLCB0aGlz
LCAmV2ViUGFnZTo6dGVzdFBhcmFtZXRlckF0dHJpYnV0ZXMpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6
OlRlbXBsYXRlVGVzdDo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNz
YWdlczo6V2ViUGFnZTo6VGVtcGxhdGVUZXN0PihkZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6dGVt
cGxhdGVUZXN0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoZGVjb2Rlci5tZXNz
YWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRWaWRlb0xheWVySUQ6Om5hbWUoKSkg
ewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OlNldFZpZGVv
TGF5ZXJJRD4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OnNldFZpZGVvTGF5ZXJJRCk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0jaWYgUExBVEZPUk0oTUFDKQotICAgIGlmIChkZWNvZGVyLm1l
c3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OkRpZENyZWF0ZVdlYlByb2Nlc3NDb25u
ZWN0aW9uOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpX
ZWJQYWdlOjpEaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbj4oZGVjb2RlciwgdGhpcywgJldl
YlBhZ2U6OmRpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLSNlbmRpZgotI2lmIEVOQUJMRShERVBSRUNBVEVEX0ZFQVRVUkUpCi0gICAgaWYgKGRl
Y29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6RGVwcmVjYXRlZE9wZXJh
dGlvbjo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2Vi
UGFnZTo6RGVwcmVjYXRlZE9wZXJhdGlvbj4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OmRlcHJl
Y2F0ZWRPcGVyYXRpb24pOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlmCi0jaWYgRU5B
QkxFKEVYUEVSSU1FTlRBTF9GRUFUVVJFKQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkg
PT0gTWVzc2FnZXM6OldlYlBhZ2U6OkV4cGVyaW1lbnRhbE9wZXJhdGlvbjo6bmFtZSgpKSB7Ci0g
ICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6RXhwZXJpbWVudGFs
T3BlcmF0aW9uPihkZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6ZXhwZXJpbWVudGFsT3BlcmF0aW9u
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNlbmRpZgotICAgIFVOVVNFRF9QQVJBTShjb25u
ZWN0aW9uKTsKLSAgICBVTlVTRURfUEFSQU0oZGVjb2Rlcik7Ci0gICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci19Ci0KLXZvaWQgV2ViUGFnZTo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBzdGQ6OnVuaXF1ZV9w
dHI8SVBDOjpFbmNvZGVyPiYgcmVwbHlFbmNvZGVyKQotewotICAgIGF1dG8gcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpOwotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVz
c2FnZXM6OldlYlBhZ2U6OkNyZWF0ZVBsdWdpbjo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFu
ZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6Q3JlYXRlUGx1Z2luPihkZWNvZGVyLCAqcmVw
bHlFbmNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6Y3JlYXRlUGx1Z2luKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQ
YWdlOjpSdW5KYXZhU2NyaXB0QWxlcnQ6Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1l
c3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OlJ1bkphdmFTY3JpcHRBbGVydD4oZGVjb2RlciwgKnJl
cGx5RW5jb2RlciwgdGhpcywgJldlYlBhZ2U6OnJ1bkphdmFTY3JpcHRBbGVydCk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdl
czo6V2ViUGFnZTo6R2V0UGx1Z2luczo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVz
c2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6R2V0UGx1Z2lucz4oZGVjb2RlciwgKnJlcGx5RW5jb2Rl
ciwgdGhpcywgJldlYlBhZ2U6OmdldFBsdWdpbnMpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
ICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OkdldFBs
dWdpblByb2Nlc3NDb25uZWN0aW9uOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNz
YWdlU3luY2hyb25vdXM8TWVzc2FnZXM6OldlYlBhZ2U6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0
aW9uPihjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIsIHRoaXMsICZXZWJQYWdlOjpn
ZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAg
aWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6VGVzdE11bHRp
cGxlQXR0cmlidXRlczo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZVN5bmNo
cm9ub3VzV2FudHNDb25uZWN0aW9uPE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0TXVsdGlwbGVBdHRy
aWJ1dGVzPihjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIsIHRoaXMsICZXZWJQYWdl
Ojp0ZXN0TXVsdGlwbGVBdHRyaWJ1dGVzKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNpZiBQ
TEFURk9STShNQUMpCi0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6
V2ViUGFnZTo6SW50ZXJwcmV0S2V5RXZlbnQ6Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRs
ZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OkludGVycHJldEtleUV2ZW50PihkZWNvZGVyLCAq
cmVwbHlFbmNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6aW50ZXJwcmV0S2V5RXZlbnQpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotI2VuZGlmCi0gICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pOwot
ICAgIFVOVVNFRF9QQVJBTShkZWNvZGVyKTsKLSAgICBVTlVTRURfUEFSQU0ocmVwbHlFbmNvZGVy
KTsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0
Ci0KLQotI2VuZGlmIC8vIChFTkFCTEUoV0VCS0lUMikgJiYgKE5FU1RFRF9NQVNURVJfQ09ORElU
SU9OIHx8IE1BU1RFUl9PUiAmJiBNQVNURVJfQU5EKSkKClByb3BlcnR5IGNoYW5nZXMgb246IFNv
dXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvTWVzc2FnZVJlY2VpdmVyLWV4cGVjdGVkLmNwcApf
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fCkRlbGV0ZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTEgKzAsMCAjIwotbmF0aXZlClwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2NyaXB0
cy93ZWJraXQvTWVzc2FnZVJlY2VpdmVyU3VwZXJjbGFzcy1leHBlY3RlZC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9NZXNzYWdlUmVjZWl2ZXJTdXBlcmNs
YXNzLWV4cGVjdGVkLmNwcAkocmV2aXNpb24gMjYwOTM1KQorKysgU291cmNlL1dlYktpdC9TY3Jp
cHRzL3dlYmtpdC9NZXNzYWdlUmVjZWl2ZXJTdXBlcmNsYXNzLWV4cGVjdGVkLmNwcAkobm9uZXhp
c3RlbnQpCkBAIC0xLDE4OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJyBBTkQKLSAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
Ci0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUgotICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotICogREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IKLSAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0gKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotICog
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNv
bmZpZy5oIgotCi0jaW5jbHVkZSAiV2ViUGFnZS5oIgotCi0jaW5jbHVkZSAiQXJndW1lbnRDb2Rl
cnMuaCIKLSNpbmNsdWRlICJEZWNvZGVyLmgiCi0jaW5jbHVkZSAiSGFuZGxlTWVzc2FnZS5oIgot
I2luY2x1ZGUgIlRlc3RDbGFzc05hbWUuaCIKLSNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQotI2lu
Y2x1ZGUgIlRlc3RUd29TdGF0ZUVudW0uaCIKLSNlbmRpZgotI2luY2x1ZGUgIldlYlBhZ2VNZXNz
YWdlcy5oIgotI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgotCi1uYW1lc3BhY2UgTWVzc2FnZXMgewotCi1uYW1lc3BhY2UgV2ViUGFnZSB7
Ci0KLSNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQotCi12b2lkIFRlc3RBc3luY01lc3NhZ2U6OmNh
bGxSZXBseShJUEM6OkRlY29kZXImIGRlY29kZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWlu
dDY0X3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCi17Ci0gICAgT3B0aW9uYWw8dWludDY0X3Q+
IHJlc3VsdDsKLSAgICBkZWNvZGVyID4+IHJlc3VsdDsKLSAgICBpZiAoIXJlc3VsdCkgewotICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgY2FuY2VsUmVwbHkoV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNvbXBsZXRp
b25IYW5kbGVyKFdURk1vdmUoKnJlc3VsdCkpOwotfQotCi12b2lkIFRlc3RBc3luY01lc3NhZ2U6
OmNhbmNlbFJlcGx5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0X3QmJik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCi17Ci0gICAgY29tcGxldGlvbkhhbmRsZXIoSVBDOjpBc3luY1JlcGx5RXJy
b3I8dWludDY0X3Q+OjpjcmVhdGUoKSk7Ci19Ci0KLXZvaWQgVGVzdEFzeW5jTWVzc2FnZTo6c2Vu
ZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYmIGVuY29kZXIsIElQQzo6Q29ubmVjdGlv
biYgY29ubmVjdGlvbiwgdWludDY0X3QgcmVzdWx0KQotewotICAgICplbmNvZGVyIDw8IHJlc3Vs
dDsKLSAgICBjb25uZWN0aW9uLnNlbmRTeW5jUmVwbHkoV1RGTW92ZShlbmNvZGVyKSk7Ci19Ci0K
LSNlbmRpZgotCi0jaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKLQotdm9pZCBUZXN0QXN5bmNNZXNz
YWdlV2l0aE5vQXJndW1lbnRzOjpjYWxsUmVwbHkoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCi17Ci0gICAgY29tcGxl
dGlvbkhhbmRsZXIoKTsKLX0KLQotdm9pZCBUZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJndW1lbnRz
OjpjYW5jZWxSZXBseShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCi17Ci0gICAgY29tcGxldGlvbkhhbmRsZXIoKTsKLX0KLQotdm9pZCBUZXN0QXN5bmNNZXNz
YWdlV2l0aE5vQXJndW1lbnRzOjpzZW5kKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiYg
ZW5jb2RlciwgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQotewotICAgIGNvbm5lY3Rpb24u
c2VuZFN5bmNSZXBseShXVEZNb3ZlKGVuY29kZXIpKTsKLX0KLQotI2VuZGlmCi0KLSNpZiBFTkFC
TEUoVEVTVF9GRUFUVVJFKQotCi12b2lkIFRlc3RBc3luY01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1
bWVudHM6OmNhbGxSZXBseShJUEM6OkRlY29kZXImIGRlY29kZXIsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCYmLCB1aW50NjRfdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAgICBP
cHRpb25hbDxib29sPiBmbGFnOwotICAgIGRlY29kZXIgPj4gZmxhZzsKLSAgICBpZiAoIWZsYWcp
IHsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIGNhbmNlbFJlcGx5KFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBP
cHRpb25hbDx1aW50NjRfdD4gdmFsdWU7Ci0gICAgZGVjb2RlciA+PiB2YWx1ZTsKLSAgICBpZiAo
IXZhbHVlKSB7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICBjYW5jZWxS
ZXBseShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0gICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZSgqZmxhZyksIFdURk1vdmUoKnZhbHVlKSk7
Ci19Ci0KLXZvaWQgVGVzdEFzeW5jTWVzc2FnZVdpdGhNdWx0aXBsZUFyZ3VtZW50czo6Y2FuY2Vs
UmVwbHkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sJiYsIHVpbnQ2NF90JiYpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQotewotICAgIGNvbXBsZXRpb25IYW5kbGVyKElQQzo6QXN5bmNSZXBseUVy
cm9yPGJvb2w+OjpjcmVhdGUoKSwgSVBDOjpBc3luY1JlcGx5RXJyb3I8dWludDY0X3Q+OjpjcmVh
dGUoKSk7Ci19Ci0KLXZvaWQgVGVzdEFzeW5jTWVzc2FnZVdpdGhNdWx0aXBsZUFyZ3VtZW50czo6
c2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYmIGVuY29kZXIsIElQQzo6Q29ubmVj
dGlvbiYgY29ubmVjdGlvbiwgYm9vbCBmbGFnLCB1aW50NjRfdCB2YWx1ZSkKLXsKLSAgICAqZW5j
b2RlciA8PCBmbGFnOwotICAgICplbmNvZGVyIDw8IHZhbHVlOwotICAgIGNvbm5lY3Rpb24uc2Vu
ZFN5bmNSZXBseShXVEZNb3ZlKGVuY29kZXIpKTsKLX0KLQotI2VuZGlmCi0KLXZvaWQgVGVzdFN5
bmNNZXNzYWdlOjpzZW5kKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiYgZW5jb2Rlciwg
SVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCB1aW50OF90IHJlcGx5KQotewotICAgICplbmNv
ZGVyIDw8IHJlcGx5OwotICAgIGNvbm5lY3Rpb24uc2VuZFN5bmNSZXBseShXVEZNb3ZlKGVuY29k
ZXIpKTsKLX0KLQotdm9pZCBUZXN0U3luY2hyb25vdXNNZXNzYWdlOjpzZW5kKHN0ZDo6dW5pcXVl
X3B0cjxJUEM6OkVuY29kZXI+JiYgZW5jb2RlciwgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9u
LCBjb25zdCBPcHRpb25hbDxXZWJLaXQ6OlRlc3RDbGFzc05hbWU+JiBvcHRpb25hbFJlcGx5KQot
ewotICAgICplbmNvZGVyIDw8IG9wdGlvbmFsUmVwbHk7Ci0gICAgY29ubmVjdGlvbi5zZW5kU3lu
Y1JlcGx5KFdURk1vdmUoZW5jb2RlcikpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJQYWdlCi0K
LX0gLy8gbmFtZXNwYWNlIE1lc3NhZ2VzCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi12b2lkIFdl
YlBhZ2U6OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBD
OjpEZWNvZGVyJiBkZWNvZGVyKQotewotICAgIGF1dG8gcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYo
KnRoaXMpOwotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBh
Z2U6OkxvYWRVUkw6Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2Fn
ZXM6OldlYlBhZ2U6OkxvYWRVUkw+KGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjpsb2FkVVJMKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQotICAgIGlm
IChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RBc3luY01l
c3NhZ2U6Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2VBc3luYzxNZXNzYWdl
czo6V2ViUGFnZTo6VGVzdEFzeW5jTWVzc2FnZT4oY29ubmVjdGlvbiwgZGVjb2RlciwgdGhpcywg
JldlYlBhZ2U6OnRlc3RBc3luY01lc3NhZ2UpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2Vu
ZGlmCi0jaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFt
ZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJndW1lbnRz
OjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlQXN5bmM8TWVzc2FnZXM6Oldl
YlBhZ2U6OlRlc3RBc3luY01lc3NhZ2VXaXRoTm9Bcmd1bWVudHM+KGNvbm5lY3Rpb24sIGRlY29k
ZXIsIHRoaXMsICZXZWJQYWdlOjp0ZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJndW1lbnRzKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLSNlbmRpZgotI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCi0g
ICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6VGVzdEFz
eW5jTWVzc2FnZVdpdGhNdWx0aXBsZUFyZ3VtZW50czo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6
aGFuZGxlTWVzc2FnZUFzeW5jPE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0QXN5bmNNZXNzYWdlV2l0
aE11bHRpcGxlQXJndW1lbnRzPihjb25uZWN0aW9uLCBkZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6
dGVzdEFzeW5jTWVzc2FnZVdpdGhNdWx0aXBsZUFyZ3VtZW50cyk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0jZW5kaWYKLSAgICBXZWJQYWdlQmFzZTo6ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVj
dGlvbiwgZGVjb2Rlcik7Ci19Ci0KLXZvaWQgV2ViUGFnZTo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBzdGQ6
OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYgcmVwbHlFbmNvZGVyKQotewotICAgIGF1dG8gcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpOwotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1l
KCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RTeW5jTWVzc2FnZTo6bmFtZSgpKSB7Ci0gICAg
ICAgIElQQzo6aGFuZGxlTWVzc2FnZVN5bmNocm9ub3VzPE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0
U3luY01lc3NhZ2U+KGNvbm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5RW5jb2RlciwgdGhpcywgJldl
YlBhZ2U6OnRlc3RTeW5jTWVzc2FnZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYg
KGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6VGVzdFN5bmNocm9u
b3VzTWVzc2FnZTo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZVN5bmNocm9u
b3VzPE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0U3luY2hyb25vdXNNZXNzYWdlPihjb25uZWN0aW9u
LCBkZWNvZGVyLCByZXBseUVuY29kZXIsIHRoaXMsICZXZWJQYWdlOjp0ZXN0U3luY2hyb25vdXNN
ZXNzYWdlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBVTlVTRURfUEFSQU0oY29ubmVj
dGlvbik7Ci0gICAgVU5VU0VEX1BBUkFNKGRlY29kZXIpOwotICAgIFVOVVNFRF9QQVJBTShyZXBs
eUVuY29kZXIpOwotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi19IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKLQoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dlYktpdC9TY3JpcHRzL3dl
YmtpdC9NZXNzYWdlUmVjZWl2ZXJTdXBlcmNsYXNzLWV4cGVjdGVkLmNwcApfX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRl
bGV0ZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTEgKzAsMCAjIwotbmF0aXZlClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvTWVz
c2FnZXMtZXhwZWN0ZWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Vi
a2l0L01lc3NhZ2VzLWV4cGVjdGVkLmgJKHJldmlzaW9uIDI2MDkzNSkKKysrIFNvdXJjZS9XZWJL
aXQvU2NyaXB0cy93ZWJraXQvTWVzc2FnZXMtZXhwZWN0ZWQuaAkobm9uZXhpc3RlbnQpCkBAIC0x
LDU3MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBB
TkQKLSAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUgotICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSAqIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSCi0gKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotICogT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiAoRU5B
QkxFKFdFQktJVDIpICYmIChORVNURURfTUFTVEVSX0NPTkRJVElPTiB8fCBNQVNURVJfT1IgJiYg
TUFTVEVSX0FORCkpCi0KLSNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgotI2luY2x1ZGUgIkNv
bm5lY3Rpb24uaCIKLSNpbmNsdWRlICJQbHVnaW4uaCIKLSNpbmNsdWRlICJXZWJQYWdlTWVzc2Fn
ZXNSZXBsaWVzLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0xheWVyLmg+Ci0jaW5jbHVk
ZSA8V2ViQ29yZS9LZXlib2FyZEV2ZW50Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9QbHVnaW5EYXRh
Lmg+Ci0jaW5jbHVkZSA8dXRpbGl0eT4KLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+
Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgotCi1uYW1lc3BhY2UgSVBDIHsKLWNsYXNzIER1bW15VHlwZTsKLWNsYXNzIE1hY2hQb3J0Owot
fQotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLWNsYXNzIFdlYlByZWZlcmVuY2VzU3RvcmU7Ci1jbGFz
cyBXZWJUb3VjaEV2ZW50OwotfQotCi1uYW1lc3BhY2UgTWVzc2FnZXMgewotbmFtZXNwYWNlIFdl
YlBhZ2UgewotCi1zdGF0aWMgaW5saW5lIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNl
aXZlck5hbWUoKQotewotICAgIHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiV2ViUGFnZSIp
OwotfQotCi1jbGFzcyBMb2FkVVJMIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8
Y29uc3QgU3RyaW5nJj4gQXJndW1lbnRzOwotCi0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJl
bmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsgfQotICAg
IHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpTdHJpbmdS
ZWZlcmVuY2UoIkxvYWRVUkwiKTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZh
bHNlOwotCi0gICAgZXhwbGljaXQgTG9hZFVSTChjb25zdCBTdHJpbmcmIHVybCkKLSAgICAgICAg
OiBtX2FyZ3VtZW50cyh1cmwpCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0IEFyZ3VtZW50cyYg
YXJndW1lbnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAg
ICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLQotI2lmIEVO
QUJMRShUT1VDSF9FVkVOVFMpCi1jbGFzcyBMb2FkU29tZXRoaW5nIHsKLXB1YmxpYzoKLSAgICB0
eXBlZGVmIHN0ZDo6dHVwbGU8Y29uc3QgU3RyaW5nJj4gQXJndW1lbnRzOwotCi0gICAgc3RhdGlj
IElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNl
aXZlck5hbWUoKTsgfQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyBy
ZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIkxvYWRTb21ldGhpbmciKTsgfQotICAgIHN0YXRp
YyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOwotCi0gICAgZXhwbGljaXQgTG9hZFNvbWV0aGlu
Zyhjb25zdCBTdHJpbmcmIHVybCkKLSAgICAgICAgOiBtX2FyZ3VtZW50cyh1cmwpCi0gICAgewot
ICAgIH0KLQotICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1l
bnRzIG1fYXJndW1lbnRzOwotfTsKLSNlbmRpZgotCi0jaWYgKEVOQUJMRShUT1VDSF9FVkVOVFMp
ICYmIChORVNURURfTUVTU0FHRV9DT05ESVRJT04gfHwgU09NRV9PVEhFUl9NRVNTQUdFX0NPTkRJ
VElPTikpCi1jbGFzcyBUb3VjaEV2ZW50IHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVw
bGU8Y29uc3QgV2ViS2l0OjpXZWJUb3VjaEV2ZW50Jj4gQXJndW1lbnRzOwotCi0gICAgc3RhdGlj
IElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNl
aXZlck5hbWUoKTsgfQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyBy
ZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIlRvdWNoRXZlbnQiKTsgfQotICAgIHN0YXRpYyBj
b25zdCBib29sIGlzU3luYyA9IGZhbHNlOwotCi0gICAgZXhwbGljaXQgVG91Y2hFdmVudChjb25z
dCBXZWJLaXQ6OldlYlRvdWNoRXZlbnQmIGV2ZW50KQotICAgICAgICA6IG1fYXJndW1lbnRzKGV2
ZW50KQotICAgIHsKLSAgICB9Ci0KLSAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNv
bnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRl
OgotICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKLX07Ci0jZW5kaWYKLQotI2lmIChFTkFCTEUo
VE9VQ0hfRVZFTlRTKSAmJiAoTkVTVEVEX01FU1NBR0VfQ09ORElUSU9OICYmIFNPTUVfT1RIRVJf
TUVTU0FHRV9DT05ESVRJT04pKQotY2xhc3MgQWRkRXZlbnQgewotcHVibGljOgotICAgIHR5cGVk
ZWYgc3RkOjp0dXBsZTxjb25zdCBXZWJLaXQ6OldlYlRvdWNoRXZlbnQmPiBBcmd1bWVudHM7Ci0K
LSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4g
bWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNl
IG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiQWRkRXZlbnQiKTsgfQotICAg
IHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOwotCi0gICAgZXhwbGljaXQgQWRkRXZl
bnQoY29uc3QgV2ViS2l0OjpXZWJUb3VjaEV2ZW50JiBldmVudCkKLSAgICAgICAgOiBtX2FyZ3Vt
ZW50cyhldmVudCkKLSAgICB7Ci0gICAgfQotCi0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVu
dHMoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQot
cHJpdmF0ZToKLSAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19OwotI2VuZGlmCi0KLSNpZiBF
TkFCTEUoVE9VQ0hfRVZFTlRTKQotY2xhc3MgTG9hZFNvbWV0aGluZ0Vsc2UgewotcHVibGljOgot
ICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBTdHJpbmcmPiBBcmd1bWVudHM7Ci0KLSAgICBz
dGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUo
KSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiTG9hZFNvbWV0aGluZ0Vsc2UiKTsgfQot
ICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOwotCi0gICAgZXhwbGljaXQgTG9h
ZFNvbWV0aGluZ0Vsc2UoY29uc3QgU3RyaW5nJiB1cmwpCi0gICAgICAgIDogbV9hcmd1bWVudHMo
dXJsKQotICAgIHsKLSAgICB9Ci0KLSAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNv
bnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRl
OgotICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKLX07Ci0jZW5kaWYKLQotY2xhc3MgRGlkUmVj
ZWl2ZVBvbGljeURlY2lzaW9uIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8dWlu
dDY0X3QsIHVpbnQ2NF90LCB1aW50MzJfdD4gQXJndW1lbnRzOwotCi0gICAgc3RhdGljIElQQzo6
U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5h
bWUoKTsgfQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4g
SVBDOjpTdHJpbmdSZWZlcmVuY2UoIkRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbiIpOyB9Ci0gICAg
c3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7Ci0KLSAgICBEaWRSZWNlaXZlUG9saWN5
RGVjaXNpb24odWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbGlzdGVuZXJJRCwgdWludDMyX3Qg
cG9saWN5QWN0aW9uKQotICAgICAgICA6IG1fYXJndW1lbnRzKGZyYW1lSUQsIGxpc3RlbmVySUQs
IHBvbGljeUFjdGlvbikKLSAgICB7Ci0gICAgfQotCi0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1
bWVudHMoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0K
LQotcHJpdmF0ZToKLSAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19OwotCi1jbGFzcyBDbG9z
ZSB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPD4gQXJndW1lbnRzOwotCi0gICAg
c3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3Nh
Z2VSZWNlaXZlck5hbWUoKTsgfQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1l
KCkgeyByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIkNsb3NlIik7IH0KLSAgICBzdGF0aWMg
Y29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKLQotICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1l
bnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0K
LXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLQotY2xhc3MgUHJlZmVy
ZW5jZXNEaWRDaGFuZ2UgewotcHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBX
ZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmUmPiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBD
OjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVy
TmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVy
biBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiUHJlZmVyZW5jZXNEaWRDaGFuZ2UiKTsgfQotICAgIHN0
YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOwotCi0gICAgZXhwbGljaXQgUHJlZmVyZW5j
ZXNEaWRDaGFuZ2UoY29uc3QgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSkKLSAg
ICAgICAgOiBtX2FyZ3VtZW50cyhzdG9yZSkKLSAgICB7Ci0gICAgfQotCi0gICAgY29uc3QgQXJn
dW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1l
bnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19Owot
Ci1jbGFzcyBTZW5kRG91YmxlQW5kRmxvYXQgewotcHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0
dXBsZTxkb3VibGUsIGZsb2F0PiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdS
ZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9
Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0
cmluZ1JlZmVyZW5jZSgiU2VuZERvdWJsZUFuZEZsb2F0Iik7IH0KLSAgICBzdGF0aWMgY29uc3Qg
Ym9vbCBpc1N5bmMgPSBmYWxzZTsKLQotICAgIFNlbmREb3VibGVBbmRGbG9hdChkb3VibGUgZCwg
ZmxvYXQgZikKLSAgICAgICAgOiBtX2FyZ3VtZW50cyhkLCBmKQotICAgIHsKLSAgICB9Ci0KLSAg
ICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1
cm4gbV9hcmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3Vt
ZW50czsKLX07Ci0KLWNsYXNzIFNlbmRJbnRzIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6
dHVwbGU8Y29uc3QgVmVjdG9yPHVpbnQ2NF90PiYsIGNvbnN0IFZlY3RvcjxWZWN0b3I8dWludDY0
X3Q+PiY+IEFyZ3VtZW50czsKLQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNl
aXZlck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMg
SVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNl
KCJTZW5kSW50cyIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7Ci0K
LSAgICBTZW5kSW50cyhjb25zdCBWZWN0b3I8dWludDY0X3Q+JiBpbnRzLCBjb25zdCBWZWN0b3I8
VmVjdG9yPHVpbnQ2NF90Pj4mIGludFZlY3RvcnMpCi0gICAgICAgIDogbV9hcmd1bWVudHMoaW50
cywgaW50VmVjdG9ycykKLSAgICB7Ci0gICAgfQotCi0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1
bWVudHMoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0K
LQotcHJpdmF0ZToKLSAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19OwotCi1jbGFzcyBDcmVh
dGVQbHVnaW4gewotcHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTx1aW50NjRfdCwgY29u
c3QgV2ViS2l0OjpQbHVnaW46OlBhcmFtZXRlcnMmPiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0aWMg
SVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2Vp
dmVyTmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJl
dHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiQ3JlYXRlUGx1Z2luIik7IH0KLSAgICBzdGF0aWMg
Y29uc3QgYm9vbCBpc1N5bmMgPSB0cnVlOwotCi0gICAgdXNpbmcgUmVwbHkgPSBzdGQ6OnR1cGxl
PGJvb2wmPjsKLSAgICB1c2luZyBSZXBseUFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8Ym9vbD47Ci0g
ICAgQ3JlYXRlUGx1Z2luKHVpbnQ2NF90IHBsdWdpbkluc3RhbmNlSUQsIGNvbnN0IFdlYktpdDo6
UGx1Z2luOjpQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQotICAgICAgICA6IG1fYXJndW1lbnRzKHBs
dWdpbkluc3RhbmNlSUQsIHBhcmFtZXRlcnMpCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0IEFy
Z3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3Vt
ZW50czsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsK
LQotY2xhc3MgUnVuSmF2YVNjcmlwdEFsZXJ0IHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6
dHVwbGU8dWludDY0X3QsIGNvbnN0IFN0cmluZyY+IEFyZ3VtZW50czsKLQotICAgIHN0YXRpYyBJ
UEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2
ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0
dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJSdW5KYXZhU2NyaXB0QWxlcnQiKTsgfQotICAgIHN0
YXRpYyBjb25zdCBib29sIGlzU3luYyA9IHRydWU7Ci0KLSAgICB1c2luZyBSZXBseSA9IHN0ZDo6
dHVwbGU8PjsKLSAgICB1c2luZyBSZXBseUFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8PjsKLSAgICBS
dW5KYXZhU2NyaXB0QWxlcnQodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdl
KQotICAgICAgICA6IG1fYXJndW1lbnRzKGZyYW1lSUQsIG1lc3NhZ2UpCi0gICAgewotICAgIH0K
LQotICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAg
IHJldHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1f
YXJndW1lbnRzOwotfTsKLQotY2xhc3MgR2V0UGx1Z2lucyB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRl
ZiBzdGQ6OnR1cGxlPGJvb2w+IEFyZ3VtZW50czsKLQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1Jl
ZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0K
LSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3Ry
aW5nUmVmZXJlbmNlKCJHZXRQbHVnaW5zIik7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5
bmMgPSB0cnVlOwotCi0gICAgdXNpbmcgUmVwbHkgPSBzdGQ6OnR1cGxlPFZlY3RvcjxXZWJDb3Jl
OjpQbHVnaW5JbmZvPiY+OwotICAgIHVzaW5nIFJlcGx5QXJndW1lbnRzID0gc3RkOjp0dXBsZTxW
ZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4+OwotICAgIGV4cGxpY2l0IEdldFBsdWdpbnMoYm9v
bCByZWZyZXNoKQotICAgICAgICA6IG1fYXJndW1lbnRzKHJlZnJlc2gpCi0gICAgewotICAgIH0K
LQotICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAg
IHJldHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1f
YXJndW1lbnRzOwotfTsKLQotY2xhc3MgR2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24gewotcHVi
bGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBTdHJpbmcmPiBBcmd1bWVudHM7Ci0K
LSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4g
bWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNl
IG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiR2V0UGx1Z2luUHJvY2Vzc0Nv
bm5lY3Rpb24iKTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IHRydWU7Ci0KLSAg
ICB1c2luZyBEZWxheWVkUmVwbHkgPSBHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbkRlbGF5ZWRS
ZXBseTsKLSAgICBzdGF0aWMgdm9pZCBzZW5kKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+
JiYsIElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IElQQzo6Q29ubmVjdGlvbjo6SGFuZGxlJiBjb25u
ZWN0aW9uSGFuZGxlKTsKLSAgICB1c2luZyBSZXBseSA9IHN0ZDo6dHVwbGU8SVBDOjpDb25uZWN0
aW9uOjpIYW5kbGUmPjsKLSAgICB1c2luZyBSZXBseUFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8SVBD
OjpDb25uZWN0aW9uOjpIYW5kbGU+OwotICAgIGV4cGxpY2l0IEdldFBsdWdpblByb2Nlc3NDb25u
ZWN0aW9uKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCkKLSAgICAgICAgOiBtX2FyZ3VtZW50cyhw
bHVnaW5QYXRoKQotICAgIHsKLSAgICB9Ci0KLSAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50
cygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7Ci0gICAgfQotCi1w
cml2YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKLX07Ci0KLWNsYXNzIFRlc3RNdWx0
aXBsZUF0dHJpYnV0ZXMgewotcHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTw+IEFyZ3Vt
ZW50czsKLQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7
IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdS
ZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJUZXN0TXVsdGlw
bGVBdHRyaWJ1dGVzIik7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSB0cnVlOwot
Ci0gICAgdXNpbmcgRGVsYXllZFJlcGx5ID0gVGVzdE11bHRpcGxlQXR0cmlidXRlc0RlbGF5ZWRS
ZXBseTsKLSAgICBzdGF0aWMgdm9pZCBzZW5kKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+
JiYsIElQQzo6Q29ubmVjdGlvbiYpOwotICAgIHVzaW5nIFJlcGx5ID0gc3RkOjp0dXBsZTw+Owot
ICAgIHVzaW5nIFJlcGx5QXJndW1lbnRzID0gc3RkOjp0dXBsZTw+OwotICAgIGNvbnN0IEFyZ3Vt
ZW50cyYgYXJndW1lbnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50
czsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLQot
Y2xhc3MgVGVzdFBhcmFtZXRlckF0dHJpYnV0ZXMgewotcHVibGljOgotICAgIHR5cGVkZWYgc3Rk
Ojp0dXBsZTx1aW50NjRfdCwgZG91YmxlLCBkb3VibGU+IEFyZ3VtZW50czsKLQotICAgIHN0YXRp
YyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVj
ZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsg
cmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJUZXN0UGFyYW1ldGVyQXR0cmlidXRlcyIpOyB9
Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7Ci0KLSAgICBUZXN0UGFyYW1l
dGVyQXR0cmlidXRlcyh1aW50NjRfdCBmb28sIGRvdWJsZSBiYXIsIGRvdWJsZSBiYXopCi0gICAg
ICAgIDogbV9hcmd1bWVudHMoZm9vLCBiYXIsIGJheikKLSAgICB7Ci0gICAgfQotCi0gICAgY29u
c3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1f
YXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7
Ci19OwotCi1jbGFzcyBUZW1wbGF0ZVRlc3QgewotcHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0
dXBsZTxjb25zdCBIYXNoTWFwPFN0cmluZywgc3RkOjpwYWlyPFN0cmluZywgdWludDY0X3Q+PiY+
IEFyZ3VtZW50czsKLQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5h
bWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpT
dHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJUZW1w
bGF0ZVRlc3QiKTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOwotCi0g
ICAgZXhwbGljaXQgVGVtcGxhdGVUZXN0KGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBzdGQ6OnBhaXI8
U3RyaW5nLCB1aW50NjRfdD4+JiBhKQotICAgICAgICA6IG1fYXJndW1lbnRzKGEpCi0gICAgewot
ICAgIH0KLQotICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1l
bnRzIG1fYXJndW1lbnRzOwotfTsKLQotY2xhc3MgU2V0VmlkZW9MYXllcklEIHsKLXB1YmxpYzoK
LSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8Y29uc3QgV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6UGxh
dGZvcm1MYXllcklEJj4gQXJndW1lbnRzOwotCi0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJl
bmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsgfQotICAg
IHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpTdHJpbmdS
ZWZlcmVuY2UoIlNldFZpZGVvTGF5ZXJJRCIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNT
eW5jID0gZmFsc2U7Ci0KLSAgICBleHBsaWNpdCBTZXRWaWRlb0xheWVySUQoY29uc3QgV2ViQ29y
ZTo6R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklEJiB2aWRlb0xheWVySUQpCi0gICAgICAg
IDogbV9hcmd1bWVudHModmlkZW9MYXllcklEKQotICAgIHsKLSAgICB9Ci0KLSAgICBjb25zdCBB
cmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9hcmd1
bWVudHM7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKLX07
Ci0KLSNpZiBQTEFURk9STShNQUMpCi1jbGFzcyBEaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlv
biB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGNvbnN0IElQQzo6TWFjaFBvcnQm
PiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJO
YW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6
U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiRGlk
Q3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24iKTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlz
U3luYyA9IGZhbHNlOwotCi0gICAgZXhwbGljaXQgRGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rp
b24oY29uc3QgSVBDOjpNYWNoUG9ydCYgY29ubmVjdGlvbklkZW50aWZpZXIpCi0gICAgICAgIDog
bV9hcmd1bWVudHMoY29ubmVjdGlvbklkZW50aWZpZXIpCi0gICAgewotICAgIH0KLQotICAgIGNv
bnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBt
X2FyZ3VtZW50czsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRz
OwotfTsKLSNlbmRpZgotCi0jaWYgUExBVEZPUk0oTUFDKQotY2xhc3MgSW50ZXJwcmV0S2V5RXZl
bnQgewotcHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTx1aW50MzJfdD4gQXJndW1lbnRz
OwotCi0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0
dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsgfQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVy
ZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIkludGVycHJldEtleUV2
ZW50Iik7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSB0cnVlOwotCi0gICAgdXNp
bmcgUmVwbHkgPSBzdGQ6OnR1cGxlPFZlY3RvcjxXZWJDb3JlOjpLZXlwcmVzc0NvbW1hbmQ+Jj47
Ci0gICAgdXNpbmcgUmVwbHlBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPFZlY3RvcjxXZWJDb3JlOjpL
ZXlwcmVzc0NvbW1hbmQ+PjsKLSAgICBleHBsaWNpdCBJbnRlcnByZXRLZXlFdmVudCh1aW50MzJf
dCB0eXBlKQotICAgICAgICA6IG1fYXJndW1lbnRzKHR5cGUpCi0gICAgewotICAgIH0KLQotICAg
IGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVy
biBtX2FyZ3VtZW50czsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJndW1l
bnRzOwotfTsKLSNlbmRpZgotCi0jaWYgRU5BQkxFKERFUFJFQ0FURURfRkVBVFVSRSkKLWNsYXNz
IERlcHJlY2F0ZWRPcGVyYXRpb24gewotcHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxj
b25zdCBJUEM6OkR1bW15VHlwZSY+IEFyZ3VtZW50czsKLQotICAgIHN0YXRpYyBJUEM6OlN0cmlu
Z1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7
IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6
U3RyaW5nUmVmZXJlbmNlKCJEZXByZWNhdGVkT3BlcmF0aW9uIik7IH0KLSAgICBzdGF0aWMgY29u
c3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKLQotICAgIGV4cGxpY2l0IERlcHJlY2F0ZWRPcGVyYXRp
b24oY29uc3QgSVBDOjpEdW1teVR5cGUmIGR1bW15KQotICAgICAgICA6IG1fYXJndW1lbnRzKGR1
bW15KQotICAgIHsKLSAgICB9Ci0KLSAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNv
bnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRl
OgotICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKLX07Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShF
WFBFUklNRU5UQUxfRkVBVFVSRSkKLWNsYXNzIEV4cGVyaW1lbnRhbE9wZXJhdGlvbiB7Ci1wdWJs
aWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGNvbnN0IElQQzo6RHVtbXlUeXBlJj4gQXJndW1l
bnRzOwotCi0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsg
cmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsgfQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1Jl
ZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIkV4cGVyaW1lbnRh
bE9wZXJhdGlvbiIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7Ci0K
LSAgICBleHBsaWNpdCBFeHBlcmltZW50YWxPcGVyYXRpb24oY29uc3QgSVBDOjpEdW1teVR5cGUm
IGR1bW15KQotICAgICAgICA6IG1fYXJndW1lbnRzKGR1bW15KQotICAgIHsKLSAgICB9Ci0KLSAg
ICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1
cm4gbV9hcmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3Vt
ZW50czsKLX07Ci0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgV2ViUGFnZQotfSAvLyBuYW1lc3Bh
Y2UgTWVzc2FnZXMKLQotI2VuZGlmIC8vIChFTkFCTEUoV0VCS0lUMikgJiYgKE5FU1RFRF9NQVNU
RVJfQ09ORElUSU9OIHx8IE1BU1RFUl9PUiAmJiBNQVNURVJfQU5EKSkKClByb3BlcnR5IGNoYW5n
ZXMgb246IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvTWVzc2FnZXMtZXhwZWN0ZWQuaApf
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fCkRlbGV0ZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTEgKzAsMCAjIwotbmF0aXZlClwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2NyaXB0
cy93ZWJraXQvTWVzc2FnZXNSZXBsaWVzLWV4cGVjdGVkLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9TY3JpcHRzL3dlYmtpdC9NZXNzYWdlc1JlcGxpZXMtZXhwZWN0ZWQuaAkocmV2aXNp
b24gMjYwOTM1KQorKysgU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9NZXNzYWdlc1JlcGxp
ZXMtZXhwZWN0ZWQuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDQzICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTAtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAotICogQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0gKiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMCi0gKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgotICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSAqIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksCi0gKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIChFTkFCTEUoV0VCS0lUMikgJiYgKE5FU1RFRF9N
QVNURVJfQ09ORElUSU9OIHx8IE1BU1RFUl9PUiAmJiBNQVNURVJfQU5EKSkKLQotI2luY2x1ZGUg
IkNvbm5lY3Rpb24uaCIKLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotCi0KLW5hbWVzcGFjZSBN
ZXNzYWdlcyB7Ci1uYW1lc3BhY2UgV2ViUGFnZSB7Ci0KLXVzaW5nIEdldFBsdWdpblByb2Nlc3ND
b25uZWN0aW9uRGVsYXllZFJlcGx5ID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6
OkNvbm5lY3Rpb246OkhhbmRsZSYgY29ubmVjdGlvbkhhbmRsZSk+OwotCi11c2luZyBUZXN0TXVs
dGlwbGVBdHRyaWJ1dGVzRGVsYXllZFJlcGx5ID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPjsK
LQotfSAvLyBuYW1lc3BhY2UgV2ViUGFnZQotfSAvLyBuYW1lc3BhY2UgTWVzc2FnZXMKLQotI2Vu
ZGlmIC8vIChFTkFCTEUoV0VCS0lUMikgJiYgKE5FU1RFRF9NQVNURVJfQ09ORElUSU9OIHx8IE1B
U1RFUl9PUiAmJiBNQVNURVJfQU5EKSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJr
aXQvTWVzc2FnZXNSZXBsaWVzU3VwZXJjbGFzc1JlcGxpZXMtZXhwZWN0ZWQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L01lc3NhZ2VzUmVwbGllc1N1cGVyY2xh
c3NSZXBsaWVzLWV4cGVjdGVkLmgJKHJldmlzaW9uIDI2MDkzNSkKKysrIFNvdXJjZS9XZWJLaXQv
U2NyaXB0cy93ZWJraXQvTWVzc2FnZXNSZXBsaWVzU3VwZXJjbGFzc1JlcGxpZXMtZXhwZWN0ZWQu
aAkobm9uZXhpc3RlbnQpCkBAIC0xLDUyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTAtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnIEFORAotICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0gKiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0gKiBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUgotICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSAqIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksCi0gKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJh
Z21hIG9uY2UKLQotI2luY2x1ZGUgIlRlc3RDbGFzc05hbWUuaCIKLSNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgotCi0KLW5hbWVzcGFjZSBNZXNzYWdl
cyB7Ci1uYW1lc3BhY2UgV2ViUGFnZSB7Ci0KLSNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQotdXNp
bmcgVGVzdEFzeW5jTWVzc2FnZUFzeW5jUmVwbHkgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVp
bnQ2NF90IHJlc3VsdCk+OwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQotdXNp
bmcgVGVzdEFzeW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50c0FzeW5jUmVwbHkgPSBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+OwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQotdXNp
bmcgVGVzdEFzeW5jTWVzc2FnZVdpdGhNdWx0aXBsZUFyZ3VtZW50c0FzeW5jUmVwbHkgPSBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wgZmxhZywgdWludDY0X3QgdmFsdWUpPjsKLSNlbmRpZgot
Ci11c2luZyBUZXN0U3luY01lc3NhZ2VEZWxheWVkUmVwbHkgPSBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKHVpbnQ4X3QgcmVwbHkpPjsKLQotdXNpbmcgVGVzdFN5bmNocm9ub3VzTWVzc2FnZURlbGF5
ZWRSZXBseSA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgT3B0aW9uYWw8V2ViS2l0OjpU
ZXN0Q2xhc3NOYW1lPiYgb3B0aW9uYWxSZXBseSk+OwotCi19IC8vIG5hbWVzcGFjZSBXZWJQYWdl
Ci19IC8vIG5hbWVzcGFjZSBNZXNzYWdlcwpJbmRleDogU291cmNlL1dlYktpdC9TY3JpcHRzL3dl
YmtpdC9NZXNzYWdlc1N1cGVyY2xhc3MtZXhwZWN0ZWQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvd2Via2l0L01lc3NhZ2VzU3VwZXJjbGFzcy1leHBlY3RlZC5oCShyZXZp
c2lvbiAyNjA5MzUpCisrKyBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L01lc3NhZ2VzU3Vw
ZXJjbGFzcy1leHBlY3RlZC5oCShub25leGlzdGVudCkKQEAgLTEsMjA2ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAotICogQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0gKiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMCi0gKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgotICogU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSAq
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksCi0gKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgi
Ci0jaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgotI2luY2x1ZGUgIlRlc3RDbGFzc05hbWUuaCIKLSNp
bmNsdWRlICJXZWJQYWdlTWVzc2FnZXNSZXBsaWVzLmgiCi0jaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KLSNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KLSNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJl
ZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNl
IFdlYktpdCB7Ci1lbnVtIGNsYXNzIFRlc3RUd29TdGF0ZUVudW0gOiBib29sOwotfQotCi1uYW1l
c3BhY2UgTWVzc2FnZXMgewotbmFtZXNwYWNlIFdlYlBhZ2UgewotCi1zdGF0aWMgaW5saW5lIElQ
Qzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUoKQotewotICAgIHJldHVybiBJ
UEM6OlN0cmluZ1JlZmVyZW5jZSgiV2ViUGFnZSIpOwotfQotCi1jbGFzcyBMb2FkVVJMIHsKLXB1
YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8Y29uc3QgU3RyaW5nJj4gQXJndW1lbnRzOwot
Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJu
IG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsgfQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5j
ZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIkxvYWRVUkwiKTsgfQotICAg
IHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOwotCi0gICAgZXhwbGljaXQgTG9hZFVS
TChjb25zdCBTdHJpbmcmIHVybCkKLSAgICAgICAgOiBtX2FyZ3VtZW50cyh1cmwpCi0gICAgewot
ICAgIH0KLQotICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1l
bnRzIG1fYXJndW1lbnRzOwotfTsKLQotI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCi1jbGFzcyBU
ZXN0QXN5bmNNZXNzYWdlIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8V2ViS2l0
OjpUZXN0VHdvU3RhdGVFbnVtPiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdS
ZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9
Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0
cmluZ1JlZmVyZW5jZSgiVGVzdEFzeW5jTWVzc2FnZSIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJv
b2wgaXNTeW5jID0gZmFsc2U7Ci0KLSAgICBzdGF0aWMgdm9pZCBjYWxsUmVwbHkoSVBDOjpEZWNv
ZGVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCYmKT4mJik7Ci0gICAgc3RhdGlj
IHZvaWQgY2FuY2VsUmVwbHkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCYmKT4mJik7
Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIGFzeW5jTWVzc2FnZVJlcGx5TmFtZSgp
IHsgcmV0dXJuIHsgIlRlc3RBc3luY01lc3NhZ2VSZXBseSIgfTsgfQotICAgIHVzaW5nIEFzeW5j
UmVwbHkgPSBUZXN0QXN5bmNNZXNzYWdlQXN5bmNSZXBseTsKLSAgICBzdGF0aWMgdm9pZCBzZW5k
KHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiYsIElQQzo6Q29ubmVjdGlvbiYsIHVpbnQ2
NF90IHJlc3VsdCk7Ci0gICAgdXNpbmcgUmVwbHkgPSBzdGQ6OnR1cGxlPHVpbnQ2NF90Jj47Ci0g
ICAgdXNpbmcgUmVwbHlBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPHVpbnQ2NF90PjsKLSAgICBleHBs
aWNpdCBUZXN0QXN5bmNNZXNzYWdlKFdlYktpdDo6VGVzdFR3b1N0YXRlRW51bSB0d29TdGF0ZUVu
dW0pCi0gICAgICAgIDogbV9hcmd1bWVudHModHdvU3RhdGVFbnVtKQotICAgIHsKLSAgICB9Ci0K
LSAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewotICAgICAgICBy
ZXR1cm4gbV9hcmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBtX2Fy
Z3VtZW50czsKLX07Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCi1jbGFzcyBU
ZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJndW1lbnRzIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0
ZDo6dHVwbGU8PiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2Ug
cmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAgc3Rh
dGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVy
ZW5jZSgiVGVzdEFzeW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50cyIpOyB9Ci0gICAgc3RhdGljIGNv
bnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7Ci0KLSAgICBzdGF0aWMgdm9pZCBjYWxsUmVwbHkoSVBD
OjpEZWNvZGVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICBzdGF0aWMgdm9p
ZCBjYW5jZWxSZXBseShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHN0YXRpYyBJ
UEM6OlN0cmluZ1JlZmVyZW5jZSBhc3luY01lc3NhZ2VSZXBseU5hbWUoKSB7IHJldHVybiB7ICJU
ZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJndW1lbnRzUmVwbHkiIH07IH0KLSAgICB1c2luZyBBc3lu
Y1JlcGx5ID0gVGVzdEFzeW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50c0FzeW5jUmVwbHk7Ci0gICAg
c3RhdGljIHZvaWQgc2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYmLCBJUEM6OkNv
bm5lY3Rpb24mKTsKLSAgICB1c2luZyBSZXBseSA9IHN0ZDo6dHVwbGU8PjsKLSAgICB1c2luZyBS
ZXBseUFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8PjsKLSAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3Vt
ZW50cygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7Ci0gICAgfQot
Ci1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKLX07Ci0jZW5kaWYKLQotI2lm
IEVOQUJMRShURVNUX0ZFQVRVUkUpCi1jbGFzcyBUZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxl
QXJndW1lbnRzIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8PiBBcmd1bWVudHM7
Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1
cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJl
bmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiVGVzdEFzeW5jTWVzc2Fn
ZVdpdGhNdWx0aXBsZUFyZ3VtZW50cyIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5j
ID0gZmFsc2U7Ci0KLSAgICBzdGF0aWMgdm9pZCBjYWxsUmVwbHkoSVBDOjpEZWNvZGVyJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sJiYsIHVpbnQ2NF90JiYpPiYmKTsKLSAgICBzdGF0aWMg
dm9pZCBjYW5jZWxSZXBseShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wmJiwgdWludDY0X3Qm
Jik+JiYpOwotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBhc3luY01lc3NhZ2VSZXBs
eU5hbWUoKSB7IHJldHVybiB7ICJUZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1lbnRz
UmVwbHkiIH07IH0KLSAgICB1c2luZyBBc3luY1JlcGx5ID0gVGVzdEFzeW5jTWVzc2FnZVdpdGhN
dWx0aXBsZUFyZ3VtZW50c0FzeW5jUmVwbHk7Ci0gICAgc3RhdGljIHZvaWQgc2VuZChzdGQ6OnVu
aXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYmLCBJUEM6OkNvbm5lY3Rpb24mLCBib29sIGZsYWcsIHVp
bnQ2NF90IHZhbHVlKTsKLSAgICB1c2luZyBSZXBseSA9IHN0ZDo6dHVwbGU8Ym9vbCYsIHVpbnQ2
NF90Jj47Ci0gICAgdXNpbmcgUmVwbHlBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPGJvb2wsIHVpbnQ2
NF90PjsKLSAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewotICAg
ICAgICByZXR1cm4gbV9hcmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50
cyBtX2FyZ3VtZW50czsKLX07Ci0jZW5kaWYKLQotY2xhc3MgVGVzdFN5bmNNZXNzYWdlIHsKLXB1
YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8dWludDMyX3Q+IEFyZ3VtZW50czsKLQotICAg
IHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNz
YWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFt
ZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJUZXN0U3luY01lc3NhZ2UiKTsgfQot
ICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IHRydWU7Ci0KLSAgICB1c2luZyBEZWxheWVk
UmVwbHkgPSBUZXN0U3luY01lc3NhZ2VEZWxheWVkUmVwbHk7Ci0gICAgc3RhdGljIHZvaWQgc2Vu
ZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYmLCBJUEM6OkNvbm5lY3Rpb24mLCB1aW50
OF90IHJlcGx5KTsKLSAgICB1c2luZyBSZXBseSA9IHN0ZDo6dHVwbGU8dWludDhfdCY+OwotICAg
IHVzaW5nIFJlcGx5QXJndW1lbnRzID0gc3RkOjp0dXBsZTx1aW50OF90PjsKLSAgICBleHBsaWNp
dCBUZXN0U3luY01lc3NhZ2UodWludDMyX3QgcGFyYW0pCi0gICAgICAgIDogbV9hcmd1bWVudHMo
cGFyYW0pCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkg
Y29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0KLXByaXZh
dGU6Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLQotY2xhc3MgVGVzdFN5bmNocm9u
b3VzTWVzc2FnZSB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGJvb2w+IEFyZ3Vt
ZW50czsKLQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7
IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdS
ZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJUZXN0U3luY2hy
b25vdXNNZXNzYWdlIik7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSB0cnVlOwot
Ci0gICAgdXNpbmcgRGVsYXllZFJlcGx5ID0gVGVzdFN5bmNocm9ub3VzTWVzc2FnZURlbGF5ZWRS
ZXBseTsKLSAgICBzdGF0aWMgdm9pZCBzZW5kKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+
JiYsIElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IE9wdGlvbmFsPFdlYktpdDo6VGVzdENsYXNzTmFt
ZT4mIG9wdGlvbmFsUmVwbHkpOwotICAgIHVzaW5nIFJlcGx5ID0gc3RkOjp0dXBsZTxPcHRpb25h
bDxXZWJLaXQ6OlRlc3RDbGFzc05hbWU+Jj47Ci0gICAgdXNpbmcgUmVwbHlBcmd1bWVudHMgPSBz
dGQ6OnR1cGxlPE9wdGlvbmFsPFdlYktpdDo6VGVzdENsYXNzTmFtZT4+OwotICAgIGV4cGxpY2l0
IFRlc3RTeW5jaHJvbm91c01lc3NhZ2UoYm9vbCB2YWx1ZSkKLSAgICAgICAgOiBtX2FyZ3VtZW50
cyh2YWx1ZSkKLSAgICB7Ci0gICAgfQotCi0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMo
KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJp
dmF0ZToKLSAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBX
ZWJQYWdlCi19IC8vIG5hbWVzcGFjZSBNZXNzYWdlcwoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291
cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9NZXNzYWdlc1N1cGVyY2xhc3MtZXhwZWN0ZWQuaApf
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fCkRlbGV0ZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTEgKzAsMCAjIwotbmF0aXZlClwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2NyaXB0
cy93ZWJraXQvbWVzc2FnZXMucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TY3JpcHRz
L3dlYmtpdC9tZXNzYWdlcy5weQkocmV2aXNpb24gMjYwOTM1KQorKysgU291cmNlL1dlYktpdC9T
Y3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBA
QCBTWU5DSFJPTk9VU19BVFRSSUJVVEUgPSAnU3luY2hyb25vdXMnCiBBU1lOQ19BVFRSSUJVVEUg
PSAnQXN5bmMnCiAKIF9saWNlbnNlX2hlYWRlciA9ICIiIi8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTAtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTAtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTEzNCw3ICsxMzQsNyBAQCBkZWYgbWVzc2FnZV90b19yZXBs
eV9mb3J3YXJkX2RlY2xhcmF0aW9uCiAgICAgcmV0dXJuIHN1cnJvdW5kX2luX2NvbmRpdGlvbign
Jy5qb2luKHJlc3VsdCksIG1lc3NhZ2UuY29uZGl0aW9uKQogCiAKLWRlZiBtZXNzYWdlX3RvX3N0
cnVjdF9kZWNsYXJhdGlvbihtZXNzYWdlKToKK2RlZiBtZXNzYWdlX3RvX3N0cnVjdF9kZWNsYXJh
dGlvbihyZWNlaXZlciwgbWVzc2FnZSk6CiAgICAgcmVzdWx0ID0gW10KICAgICBmdW5jdGlvbl9w
YXJhbWV0ZXJzID0gWyhmdW5jdGlvbl9wYXJhbWV0ZXJfdHlwZSh4LnR5cGUsIHgua2luZCksIHgu
bmFtZSkgZm9yIHggaW4gbWVzc2FnZS5wYXJhbWV0ZXJzXQogCkBAIC0xNDIsOCArMTQyLDcgQEAg
ZGVmIG1lc3NhZ2VfdG9fc3RydWN0X2RlY2xhcmF0aW9uKG1lc3NhZwogICAgIHJlc3VsdC5hcHBl
bmQoJ3B1YmxpYzpcbicpCiAgICAgcmVzdWx0LmFwcGVuZCgnICAgIHR5cGVkZWYgJXMgQXJndW1l
bnRzO1xuJyAlIGFyZ3VtZW50c190eXBlKG1lc3NhZ2UpKQogICAgIHJlc3VsdC5hcHBlbmQoJ1xu
JykKLSAgICByZXN1bHQuYXBwZW5kKCcgICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJl
Y2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsgfVxuJykKLSAgICBy
ZXN1bHQuYXBwZW5kKCcgICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJl
dHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiJXMiKTsgfVxuJyAlIG1lc3NhZ2UubmFtZSkKKyAg
ICByZXN1bHQuYXBwZW5kKCcgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0
dXJuIElQQzo6TWVzc2FnZU5hbWU6OiVzXyVzOyB9XG4nICUgKHJlY2VpdmVyLm5hbWUsIG1lc3Nh
Z2UubmFtZSkpCiAgICAgcmVzdWx0LmFwcGVuZCgnICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3lu
YyA9ICVzO1xuJyAlICgnZmFsc2UnLCAndHJ1ZScpW21lc3NhZ2UucmVwbHlfcGFyYW1ldGVycyAh
PSBOb25lIGFuZCBub3QgbWVzc2FnZS5oYXNfYXR0cmlidXRlKEFTWU5DX0FUVFJJQlVURSldKQog
ICAgIHJlc3VsdC5hcHBlbmQoJ1xuJykKICAgICBpZiBtZXNzYWdlLnJlcGx5X3BhcmFtZXRlcnMg
IT0gTm9uZToKQEAgLTE1Myw3ICsxNTIsNyBAQCBkZWYgbWVzc2FnZV90b19zdHJ1Y3RfZGVjbGFy
YXRpb24obWVzc2FnCiAgICAgICAgICAgICBtb3ZlX3BhcmFtZXRlcnMgPSAnLCAnLmpvaW4oW21v
dmVfdHlwZSh4LnR5cGUpIGZvciB4IGluIG1lc3NhZ2UucmVwbHlfcGFyYW1ldGVyc10pCiAgICAg
ICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgc3RhdGljIHZvaWQgY2FsbFJlcGx5KElQQzo6RGVj
b2RlciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoJXMpPiYmKTtcbicgJSBtb3ZlX3BhcmFtZXRl
cnMpCiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgc3RhdGljIHZvaWQgY2FuY2VsUmVw
bHkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCglcyk+JiYpO1xuJyAlIG1vdmVfcGFyYW1ldGVycykK
LSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVu
Y2UgYXN5bmNNZXNzYWdlUmVwbHlOYW1lKCkgeyByZXR1cm4geyAiJXNSZXBseSIgfTsgfVxuJyAl
IG1lc3NhZ2UubmFtZSkKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBzdGF0aWMgSVBD
OjpNZXNzYWdlTmFtZSBhc3luY01lc3NhZ2VSZXBseU5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3Nh
Z2VOYW1lOjolc18lc1JlcGx5OyB9XG4nICUgKHJlY2VpdmVyLm5hbWUsIG1lc3NhZ2UubmFtZSkp
CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgdXNpbmcgQXN5bmNSZXBseSA9ICVzQXN5
bmNSZXBseTtcbicgJSBtZXNzYWdlLm5hbWUpCiAgICAgICAgIGVsaWYgbWVzc2FnZS5oYXNfYXR0
cmlidXRlKFNZTkNIUk9OT1VTX0FUVFJJQlVURSk6CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5k
KCcgICAgdXNpbmcgRGVsYXllZFJlcGx5ID0gJXNEZWxheWVkUmVwbHk7XG4nICUgbWVzc2FnZS5u
YW1lKQpAQCAtMjc3LDggKzI3Niw5IEBAIGRlZiBmb3J3YXJkX2RlY2xhcmF0aW9uc19hbmRfaGVh
ZGVycyhyZWMKIAogICAgIGhlYWRlcnMgPSBzZXQoWwogICAgICAgICAnIkFyZ3VtZW50Q29kZXJz
LmgiJywKLSAgICAgICAgJzx3dGYvRm9yd2FyZC5oPicsCiAgICAgICAgICciQ29ubmVjdGlvbi5o
IicsCisgICAgICAgICciTWVzc2FnZU5hbWVzLmgiJywKKyAgICAgICAgJzx3dGYvRm9yd2FyZC5o
PicsCiAgICAgICAgICc8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+JywKICAgICAgICAgJyIl
c01lc3NhZ2VzUmVwbGllcy5oIicgJSByZWNlaXZlci5uYW1lLAogICAgIF0pCkBAIC0zMzUsNiAr
MzM1LDcgQEAgZGVmIGZvcndhcmRfZGVjbGFyYXRpb25zX2FuZF9oZWFkZXJzX2ZvcgogCiAgICAg
aGVhZGVycyA9IHNldChbCiAgICAgICAgICc8d3RmL0ZvcndhcmQuaD4nLAorICAgICAgICAnIk1l
c3NhZ2VOYW1lcy5oIicsCiAgICAgXSkKIAogICAgIG5vbl90ZW1wbGF0ZV93dGZfdHlwZXMgPSBm
cm96ZW5zZXQoWwpAQCAtNDQwLDEyICs0NDEsMTIgQEAgZGVmIGdlbmVyYXRlX21lc3NhZ2VzX2hl
YWRlcihyZWNlaXZlcik6CiAKICAgICByZXN1bHQuYXBwZW5kKCduYW1lc3BhY2UgTWVzc2FnZXMg
e1xubmFtZXNwYWNlICVzIHtcbicgJSByZWNlaXZlci5uYW1lKQogICAgIHJlc3VsdC5hcHBlbmQo
J1xuJykKLSAgICByZXN1bHQuYXBwZW5kKCdzdGF0aWMgaW5saW5lIElQQzo6U3RyaW5nUmVmZXJl
bmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUoKVxuJykKKyAgICByZXN1bHQuYXBwZW5kKCdzdGF0aWMg
aW5saW5lIElQQzo6UmVjZWl2ZXJOYW1lIG1lc3NhZ2VSZWNlaXZlck5hbWUoKVxuJykKICAgICBy
ZXN1bHQuYXBwZW5kKCd7XG4nKQotICAgIHJlc3VsdC5hcHBlbmQoJyAgICByZXR1cm4gSVBDOjpT
dHJpbmdSZWZlcmVuY2UoIiVzIik7XG4nICUgcmVjZWl2ZXIubmFtZSkKKyAgICByZXN1bHQuYXBw
ZW5kKCcgICAgcmV0dXJuIElQQzo6UmVjZWl2ZXJOYW1lOjolcztcbicgJSByZWNlaXZlci5uYW1l
KQogICAgIHJlc3VsdC5hcHBlbmQoJ31cbicpCiAgICAgcmVzdWx0LmFwcGVuZCgnXG4nKQotICAg
IHJlc3VsdC5hcHBlbmQoJ1xuJy5qb2luKFttZXNzYWdlX3RvX3N0cnVjdF9kZWNsYXJhdGlvbih4
KSBmb3IgeCBpbiByZWNlaXZlci5tZXNzYWdlc10pKQorICAgIHJlc3VsdC5hcHBlbmQoJ1xuJy5q
b2luKFttZXNzYWdlX3RvX3N0cnVjdF9kZWNsYXJhdGlvbihyZWNlaXZlciwgeCkgZm9yIHggaW4g
cmVjZWl2ZXIubWVzc2FnZXNdKSkKICAgICByZXN1bHQuYXBwZW5kKCdcbicpCiAgICAgcmVzdWx0
LmFwcGVuZCgnfSAvLyBuYW1lc3BhY2UgJXNcbn0gLy8gbmFtZXNwYWNlIE1lc3NhZ2VzXG4nICUg
cmVjZWl2ZXIubmFtZSkKIApAQCAtODQ4LDMgKzg0OSwxNjcgQEAgZGVmIGdlbmVyYXRlX21lc3Nh
Z2VfaGFuZGxlcihyZWNlaXZlcik6CiAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ1xuI2VuZGlmIC8v
ICVzXG4nICUgcmVjZWl2ZXIuY29uZGl0aW9uKQogCiAgICAgcmV0dXJuICcnLmpvaW4ocmVzdWx0
KQorCisKK2RlZiBnZW5lcmF0ZV9tZXNzYWdlX25hbWVzX2hlYWRlcihyZWNlaXZlcnMpOgorICAg
IHJlc3VsdCA9IFtdCisgICAgcmVzdWx0LmFwcGVuZChfbGljZW5zZV9oZWFkZXIpCisgICAgcmVz
dWx0LmFwcGVuZCgnI3ByYWdtYSBvbmNlXG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJ1xuJykKKyAg
ICByZXN1bHQuYXBwZW5kKCcjaW5jbHVkZSA8d3RmL0VudW1UcmFpdHMuaD5cbicpCisgICAgcmVz
dWx0LmFwcGVuZCgnXG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJ25hbWVzcGFjZSBJUEMge1xuJykK
KyAgICByZXN1bHQuYXBwZW5kKCdcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnZW51bSBjbGFzcyBS
ZWNlaXZlck5hbWUgOiB1aW50OF90IHsnKQorCisgICAgZW51bV92YWx1ZSA9IDEKKyAgICBmaXJz
dF9yZWNlaXZlciA9IFRydWUKKyAgICBmb3IgcmVjZWl2ZXIgaW4gcmVjZWl2ZXJzOgorICAgICAg
ICByZXN1bHQuYXBwZW5kKCdcbicpCisgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICAnKQorICAg
ICAgICBpZiBub3QgZmlyc3RfcmVjZWl2ZXI6CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcs
ICcpCisgICAgICAgIGZpcnN0X3JlY2VpdmVyID0gRmFsc2UKKyAgICAgICAgcmVzdWx0LmFwcGVu
ZCgnJXMgPSAlZCcgJSAocmVjZWl2ZXIubmFtZSwgZW51bV92YWx1ZSkpCisgICAgICAgIGVudW1f
dmFsdWUgPSBlbnVtX3ZhbHVlICsgMQorICAgIHJlc3VsdC5hcHBlbmQoJ1xuICAgICwgSVBDID0g
JWQnICUgZW51bV92YWx1ZSkKKyAgICBlbnVtX3ZhbHVlID0gZW51bV92YWx1ZSArIDEKKyAgICBy
ZXN1bHQuYXBwZW5kKCdcbiAgICAsIEFzeW5jUmVwbHkgPSAlZCcgJSBlbnVtX3ZhbHVlKQorICAg
IGVudW1fdmFsdWUgPSBlbnVtX3ZhbHVlICsgMQorICAgIHJlc3VsdC5hcHBlbmQoJ1xuICAgICwg
SW52YWxpZCA9ICVkJyAlIGVudW1fdmFsdWUpCisgICAgcmVzdWx0LmFwcGVuZCgnXG59O1xuJykK
KyAgICByZXN1bHQuYXBwZW5kKCdcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnZW51bSBjbGFzcyBN
ZXNzYWdlTmFtZSA6IHVpbnQxNl90IHsnKQorCisgICAgZW51bV92YWx1ZSA9IDEKKyAgICBmaXJz
dF9tZXNzYWdlID0gVHJ1ZQorICAgIGZvciByZWNlaXZlciBpbiByZWNlaXZlcnM6CisgICAgICAg
IGZvciBtZXNzYWdlIGluIHJlY2VpdmVyLm1lc3NhZ2VzOgorICAgICAgICAgICAgcmVzdWx0LmFw
cGVuZCgnXG4nKQorICAgICAgICAgICAgaWYgbWVzc2FnZS5jb25kaXRpb246CisgICAgICAgICAg
ICAgICAgcmVzdWx0LmFwcGVuZCgnI2lmICVzXG4nICUgbWVzc2FnZS5jb25kaXRpb24pCisgICAg
ICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgJykKKyAgICAgICAgICAgIGlmIG5vdCBmaXJzdF9t
ZXNzYWdlOgorICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJywgJykKKyAgICAgICAgICAg
IGZpcnN0X21lc3NhZ2UgPSBGYWxzZQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnJXNfJXMg
PSAlZCcgJSAocmVjZWl2ZXIubmFtZSwgbWVzc2FnZS5uYW1lLCBlbnVtX3ZhbHVlKSkKKyAgICAg
ICAgICAgIGVudW1fdmFsdWUgPSBlbnVtX3ZhbHVlICsgMQorICAgICAgICAgICAgaWYgbWVzc2Fn
ZS5oYXNfYXR0cmlidXRlKEFTWU5DX0FUVFJJQlVURSk6CisgICAgICAgICAgICAgICAgcmVzdWx0
LmFwcGVuZCgnXG4gICAgLCAlc18lc1JlcGx5ID0gJWQnICUgKHJlY2VpdmVyLm5hbWUsIG1lc3Nh
Z2UubmFtZSwgZW51bV92YWx1ZSkpCisgICAgICAgICAgICAgICAgZW51bV92YWx1ZSA9IGVudW1f
dmFsdWUgKyAxCisgICAgICAgICAgICBpZiBtZXNzYWdlLmNvbmRpdGlvbjoKKyAgICAgICAgICAg
ICAgICByZXN1bHQuYXBwZW5kKCdcbiNlbmRpZicpCisgICAgcmVzdWx0LmFwcGVuZCgnXG4gICAg
LCBXcmFwcGVkQXN5bmNNZXNzYWdlRm9yVGVzdGluZyA9ICVkJyAlIGVudW1fdmFsdWUpCisgICAg
ZW51bV92YWx1ZSA9IGVudW1fdmFsdWUgKyAxCisgICAgcmVzdWx0LmFwcGVuZCgnXG4gICAgLCBT
eW5jTWVzc2FnZVJlcGx5ID0gJWQnICUgZW51bV92YWx1ZSkKKyAgICBlbnVtX3ZhbHVlID0gZW51
bV92YWx1ZSArIDEKKyAgICByZXN1bHQuYXBwZW5kKCdcbiAgICAsIEluaXRpYWxpemVDb25uZWN0
aW9uID0gJWQnICUgZW51bV92YWx1ZSkKKyAgICByZXN1bHQuYXBwZW5kKCdcbn07XG4nKQorICAg
IHJlc3VsdC5hcHBlbmQoJ1xuJykKKyAgICByZXN1bHQuYXBwZW5kKCdSZWNlaXZlck5hbWUgcmVj
ZWl2ZXJOYW1lKE1lc3NhZ2VOYW1lKTtcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnY29uc3QgY2hh
ciogZGVzY3JpcHRpb24oTWVzc2FnZU5hbWUpO1xuJykKKyAgICByZXN1bHQuYXBwZW5kKCdib29s
IGlzVmFsaWRNZXNzYWdlTmFtZShNZXNzYWdlTmFtZSk7XG4nKQorICAgIHJlc3VsdC5hcHBlbmQo
J1xuJykKKyAgICByZXN1bHQuYXBwZW5kKCd9IC8vIG5hbWVzcGFjZSBJUENcbicpCisgICAgcmVz
dWx0LmFwcGVuZCgnXG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJ25hbWVzcGFjZSBXVEYge1xuJykK
KyAgICByZXN1bHQuYXBwZW5kKCdcbicpCisgICAgcmVzdWx0LmFwcGVuZCgndGVtcGxhdGU8Plxu
JykKKyAgICByZXN1bHQuYXBwZW5kKCdjbGFzcyBIYXNDdXN0b21Jc1ZhbGlkRW51bTxJUEM6Ok1l
c3NhZ2VOYW1lPiA6IHB1YmxpYyBzdGQ6OnRydWVfdHlwZSB7IH07XG4nKQorICAgIHJlc3VsdC5h
cHBlbmQoJ3RlbXBsYXRlPHR5cGVuYW1lIEUsIHR5cGVuYW1lIFQsIHR5cGVuYW1lID0gc3RkOjpl
bmFibGVfaWZfdDxzdGQ6OmlzX3NhbWU8RSwgSVBDOjpNZXNzYWdlTmFtZT46OnZhbHVlPj5cbicp
CisgICAgcmVzdWx0LmFwcGVuZCgnYm9vbCBpc1ZhbGlkRW51bShUIG1lc3NhZ2VOYW1lKVxuJykK
KyAgICByZXN1bHQuYXBwZW5kKCd7XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJyAgICBzdGF0aWNf
YXNzZXJ0KHNpemVvZihUKSA9PSBzaXplb2YoSVBDOjpNZXNzYWdlTmFtZSksICJpc1ZhbGlkRW51
bTxNZXNzYWdlTmFtZT4gc2hvdWxkIG9ubHkgYmUgY2FsbGVkIHdpdGggMTYtYml0IHR5cGVzIik7
XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJyAgICByZXR1cm4gSVBDOjppc1ZhbGlkTWVzc2FnZU5h
bWUoc3RhdGljX2Nhc3Q8SVBDOjpNZXNzYWdlTmFtZT4obWVzc2FnZU5hbWUpKTtcbicpCisgICAg
cmVzdWx0LmFwcGVuZCgnfTtcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnXG4nKQorICAgIHJlc3Vs
dC5hcHBlbmQoJ30gLy8gbmFtZXNwYWNlIFdURlxuJykKKyAgICByZXR1cm4gJycuam9pbihyZXN1
bHQpCisKKworZGVmIGdlbmVyYXRlX21lc3NhZ2VfbmFtZXNfaW1wbGVtZW50YXRpb24ocmVjZWl2
ZXJzKToKKyAgICByZXN1bHQgPSBbXQorICAgIHJlc3VsdC5hcHBlbmQoX2xpY2Vuc2VfaGVhZGVy
KQorICAgIHJlc3VsdC5hcHBlbmQoJyNpbmNsdWRlICJjb25maWcuaCJcbicpCisgICAgcmVzdWx0
LmFwcGVuZCgnI2luY2x1ZGUgIk1lc3NhZ2VOYW1lcy5oIlxuJykKKyAgICByZXN1bHQuYXBwZW5k
KCdcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnbmFtZXNwYWNlIElQQyB7XG4nKQorICAgIHJlc3Vs
dC5hcHBlbmQoJ1xuJykKKyAgICByZXN1bHQuYXBwZW5kKCdjb25zdCBjaGFyKiBkZXNjcmlwdGlv
bihNZXNzYWdlTmFtZSBuYW1lKVxuJykKKyAgICByZXN1bHQuYXBwZW5kKCd7XG4nKQorICAgIHJl
c3VsdC5hcHBlbmQoJyAgICBzd2l0Y2ggKG5hbWUpIHtcbicpCisgICAgZm9yIHJlY2VpdmVyIGlu
IHJlY2VpdmVyczoKKyAgICAgICAgZm9yIG1lc3NhZ2UgaW4gcmVjZWl2ZXIubWVzc2FnZXM6Cisg
ICAgICAgICAgICBpZiBtZXNzYWdlLmNvbmRpdGlvbjoKKyAgICAgICAgICAgICAgICByZXN1bHQu
YXBwZW5kKCcjaWYgJXNcbicgJSBtZXNzYWdlLmNvbmRpdGlvbikKKyAgICAgICAgICAgIHJlc3Vs
dC5hcHBlbmQoJyAgICBjYXNlIE1lc3NhZ2VOYW1lOjolc18lczpcbicgJSAocmVjZWl2ZXIubmFt
ZSwgbWVzc2FnZS5uYW1lKSkKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICAgICAgcmV0
dXJuICIlczo6JXMiO1xuJyAlIChyZWNlaXZlci5uYW1lLCBtZXNzYWdlLm5hbWUpKQorICAgICAg
ICAgICAgaWYgbWVzc2FnZS5oYXNfYXR0cmlidXRlKEFTWU5DX0FUVFJJQlVURSk6CisgICAgICAg
ICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIGNhc2UgTWVzc2FnZU5hbWU6OiVzXyVzUmVwbHk6
XG4nICUgKHJlY2VpdmVyLm5hbWUsIG1lc3NhZ2UubmFtZSkpCisgICAgICAgICAgICAgICAgcmVz
dWx0LmFwcGVuZCgnICAgICAgICByZXR1cm4gIiVzOjolc1JlcGx5IjtcbicgJSAocmVjZWl2ZXIu
bmFtZSwgbWVzc2FnZS5uYW1lKSkKKyAgICAgICAgICAgIGlmIG1lc3NhZ2UuY29uZGl0aW9uOgor
ICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyNlbmRpZlxuJykKKyAgICByZXN1bHQuYXBw
ZW5kKCcgICAgY2FzZSBNZXNzYWdlTmFtZTo6V3JhcHBlZEFzeW5jTWVzc2FnZUZvclRlc3Rpbmc6
XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJyAgICAgICAgcmV0dXJuICJJUEM6OldyYXBwZWRBc3lu
Y01lc3NhZ2VGb3JUZXN0aW5nIjtcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnICAgIGNhc2UgTWVz
c2FnZU5hbWU6OlN5bmNNZXNzYWdlUmVwbHk6XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJyAgICAg
ICAgcmV0dXJuICJJUEM6OlN5bmNNZXNzYWdlUmVwbHkiO1xuJykKKyAgICByZXN1bHQuYXBwZW5k
KCcgICAgY2FzZSBNZXNzYWdlTmFtZTo6SW5pdGlhbGl6ZUNvbm5lY3Rpb246XG4nKQorICAgIHJl
c3VsdC5hcHBlbmQoJyAgICAgICAgcmV0dXJuICJJUEM6OkluaXRpYWxpemVDb25uZWN0aW9uIjtc
bicpCisgICAgcmVzdWx0LmFwcGVuZCgnICAgIH1cbicpCisgICAgcmVzdWx0LmFwcGVuZCgnICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpO1xuJykKKyAgICByZXN1bHQuYXBwZW5kKCcgICAgcmV0dXJu
ICI8aW52YWxpZCBtZXNzYWdlIG5hbWU+IjtcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnfVxuJykK
KyAgICByZXN1bHQuYXBwZW5kKCdcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnUmVjZWl2ZXJOYW1l
IHJlY2VpdmVyTmFtZShNZXNzYWdlTmFtZSBtZXNzYWdlTmFtZSlcbicpCisgICAgcmVzdWx0LmFw
cGVuZCgne1xuJykKKyAgICByZXN1bHQuYXBwZW5kKCcgICAgc3dpdGNoIChtZXNzYWdlTmFtZSkg
e1xuJykKKyAgICBmb3IgcmVjZWl2ZXIgaW4gcmVjZWl2ZXJzOgorICAgICAgICBmb3IgbWVzc2Fn
ZSBpbiByZWNlaXZlci5tZXNzYWdlczoKKyAgICAgICAgICAgIGlmIG1lc3NhZ2UuY29uZGl0aW9u
OgorICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyNpZiAlc1xuJyAlIG1lc3NhZ2UuY29u
ZGl0aW9uKQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIGNhc2UgTWVzc2FnZU5hbWU6
OiVzXyVzOlxuJyAlIChyZWNlaXZlci5uYW1lLCBtZXNzYWdlLm5hbWUpKQorICAgICAgICAgICAg
aWYgbWVzc2FnZS5jb25kaXRpb246CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnI2Vu
ZGlmXG4nKQorICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgICAgIHJldHVybiBSZWNlaXZlck5h
bWU6OiVzO1xuJyAlIHJlY2VpdmVyLm5hbWUpCisgICAgZm9yIHJlY2VpdmVyIGluIHJlY2VpdmVy
czoKKyAgICAgICAgZm9yIG1lc3NhZ2UgaW4gcmVjZWl2ZXIubWVzc2FnZXM6CisgICAgICAgICAg
ICBpZiBtZXNzYWdlLmhhc19hdHRyaWJ1dGUoQVNZTkNfQVRUUklCVVRFKToKKyAgICAgICAgICAg
ICAgICBpZiBtZXNzYWdlLmNvbmRpdGlvbjoKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFw
cGVuZCgnI2lmICVzXG4nICUgbWVzc2FnZS5jb25kaXRpb24pCisgICAgICAgICAgICAgICAgcmVz
dWx0LmFwcGVuZCgnICAgIGNhc2UgTWVzc2FnZU5hbWU6OiVzXyVzUmVwbHk6XG4nICUgKHJlY2Vp
dmVyLm5hbWUsIG1lc3NhZ2UubmFtZSkpCisgICAgICAgICAgICAgICAgaWYgbWVzc2FnZS5jb25k
aXRpb246CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyNlbmRpZlxuJykKKyAg
ICByZXN1bHQuYXBwZW5kKCcgICAgICAgIHJldHVybiBSZWNlaXZlck5hbWU6OkFzeW5jUmVwbHk7
XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXcmFwcGVkQXN5
bmNNZXNzYWdlRm9yVGVzdGluZzpcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnICAgIGNhc2UgTWVz
c2FnZU5hbWU6OlN5bmNNZXNzYWdlUmVwbHk6XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJyAgICBj
YXNlIE1lc3NhZ2VOYW1lOjpJbml0aWFsaXplQ29ubmVjdGlvbjpcbicpCisgICAgcmVzdWx0LmFw
cGVuZCgnICAgICAgICByZXR1cm4gUmVjZWl2ZXJOYW1lOjpJUEM7XG4nKQorICAgIHJlc3VsdC5h
cHBlbmQoJyAgICB9XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJyAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTtcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnICAgIHJldHVybiBSZWNlaXZlck5hbWU6Oklu
dmFsaWQ7XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJ31cbicpCisgICAgcmVzdWx0LmFwcGVuZCgn
XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJ2Jvb2wgaXNWYWxpZE1lc3NhZ2VOYW1lKE1lc3NhZ2VO
YW1lIG1lc3NhZ2VOYW1lKVxuJykKKyAgICByZXN1bHQuYXBwZW5kKCd7XG4nKQorICAgIGZvciBy
ZWNlaXZlciBpbiByZWNlaXZlcnM6CisgICAgICAgIGZvciBtZXNzYWdlIGluIHJlY2VpdmVyLm1l
c3NhZ2VzOgorICAgICAgICAgICAgaWYgbWVzc2FnZS5jb25kaXRpb246CisgICAgICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZCgnI2lmICVzXG4nICUgbWVzc2FnZS5jb25kaXRpb24pCisgICAgICAg
ICAgICByZXN1bHQuYXBwZW5kKCcgICAgaWYgKG1lc3NhZ2VOYW1lID09IElQQzo6TWVzc2FnZU5h
bWU6OiVzXyVzKVxuJyAlIChyZWNlaXZlci5uYW1lLCBtZXNzYWdlLm5hbWUpKQorICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZCgnICAgICAgICByZXR1cm4gdHJ1ZTtcbicpCisgICAgICAgICAgICBp
ZiBtZXNzYWdlLmhhc19hdHRyaWJ1dGUoQVNZTkNfQVRUUklCVVRFKToKKyAgICAgICAgICAgICAg
ICByZXN1bHQuYXBwZW5kKCcgICAgaWYgKG1lc3NhZ2VOYW1lID09IElQQzo6TWVzc2FnZU5hbWU6
OiVzXyVzUmVwbHkpXG4nICUgKHJlY2VpdmVyLm5hbWUsIG1lc3NhZ2UubmFtZSkpCisgICAgICAg
ICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgICAgICByZXR1cm4gdHJ1ZTtcbicpCisgICAgICAg
ICAgICBpZiBtZXNzYWdlLmNvbmRpdGlvbjoKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5k
KCcjZW5kaWZcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnICAgIGlmIChtZXNzYWdlTmFtZSA9PSBJ
UEM6Ok1lc3NhZ2VOYW1lOjpXcmFwcGVkQXN5bmNNZXNzYWdlRm9yVGVzdGluZylcbicpCisgICAg
cmVzdWx0LmFwcGVuZCgnICAgICAgICByZXR1cm4gdHJ1ZTtcbicpCisgICAgcmVzdWx0LmFwcGVu
ZCgnICAgIGlmIChtZXNzYWdlTmFtZSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpTeW5jTWVzc2FnZVJl
cGx5KVxuJykKKyAgICByZXN1bHQuYXBwZW5kKCcgICAgICAgIHJldHVybiB0cnVlO1xuJykKKyAg
ICByZXN1bHQuYXBwZW5kKCcgICAgaWYgKG1lc3NhZ2VOYW1lID09IElQQzo6TWVzc2FnZU5hbWU6
OkluaXRpYWxpemVDb25uZWN0aW9uKVxuJykKKyAgICByZXN1bHQuYXBwZW5kKCcgICAgICAgIHJl
dHVybiB0cnVlO1xuJykKKyAgICByZXN1bHQuYXBwZW5kKCcgICAgcmV0dXJuIGZhbHNlO1xuJykK
KyAgICByZXN1bHQuYXBwZW5kKCd9O1xuJykKKyAgICByZXN1bHQuYXBwZW5kKCdcbicpCisgICAg
cmVzdWx0LmFwcGVuZCgnfSAvLyBuYW1lc3BhY2UgSVBDXG4nKQorICAgIHJldHVybiAnJy5qb2lu
KHJlc3VsdCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdC1sZWdhY3kt
bWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90
ZXN0LWxlZ2FjeS1tZXNzYWdlcy5pbgkocmV2aXNpb24gMjYwOTM1KQorKysgU291cmNlL1dlYktp
dC9TY3JpcHRzL3dlYmtpdC90ZXN0LWxlZ2FjeS1tZXNzYWdlcy5pbgkobm9uZXhpc3RlbnQpCkBA
IC0xLDc3ICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIyAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0j
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAotIyBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAotIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0jIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0jIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwKLSMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSMgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwKLSMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQot
I2lmIEVOQUJMRShXRUJLSVQyKQotI2lmIE5FU1RFRF9NQVNURVJfQ09ORElUSU9OIHx8IE1BU1RF
Ul9PUiAmJiBNQVNURVJfQU5ECi0KLW1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIg
ewotICAgIExvYWRVUkwoU3RyaW5nIHVybCkKLSNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQotICAg
IExvYWRTb21ldGhpbmcoU3RyaW5nIHVybCkKLSNpZiBORVNURURfTUVTU0FHRV9DT05ESVRJT04g
fHwgU09NRV9PVEhFUl9NRVNTQUdFX0NPTkRJVElPTgotICAgIFRvdWNoRXZlbnQoV2ViS2l0OjpX
ZWJUb3VjaEV2ZW50IGV2ZW50KQotI2VuZGlmCi0jaWYgTkVTVEVEX01FU1NBR0VfQ09ORElUSU9O
ICYmIFNPTUVfT1RIRVJfTUVTU0FHRV9DT05ESVRJT04KLSAgICBBZGRFdmVudChXZWJLaXQ6Oldl
YlRvdWNoRXZlbnQgZXZlbnQpCi0jZW5kaWYKLSAgICBMb2FkU29tZXRoaW5nRWxzZShTdHJpbmcg
dXJsKQotI2VuZGlmCi0gICAgRGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKHVpbnQ2NF90IGZyYW1l
SUQsIHVpbnQ2NF90IGxpc3RlbmVySUQsIHVpbnQzMl90IHBvbGljeUFjdGlvbikKLSAgICBDbG9z
ZSgpCi0KLSAgICBQcmVmZXJlbmNlc0RpZENoYW5nZShXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3Rv
cmUgc3RvcmUpCi0gICAgU2VuZERvdWJsZUFuZEZsb2F0KGRvdWJsZSBkLCBmbG9hdCBmKQotICAg
IFNlbmRJbnRzKFZlY3Rvcjx1aW50NjRfdD4gaW50cywgVmVjdG9yPFZlY3Rvcjx1aW50NjRfdD4+
IGludFZlY3RvcnMpCi0KLSAgICBDcmVhdGVQbHVnaW4odWludDY0X3QgcGx1Z2luSW5zdGFuY2VJ
RCwgV2ViS2l0OjpQbHVnaW46OlBhcmFtZXRlcnMgcGFyYW1ldGVycykgLT4gKGJvb2wgcmVzdWx0
KQotICAgIFJ1bkphdmFTY3JpcHRBbGVydCh1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgbWVzc2Fn
ZSkgLT4gKCkKLSAgICBHZXRQbHVnaW5zKGJvb2wgcmVmcmVzaCkgLT4gKFZlY3RvcjxXZWJDb3Jl
OjpQbHVnaW5JbmZvPiBwbHVnaW5zKQotICAgIEdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKFN0
cmluZyBwbHVnaW5QYXRoKSAtPiAoSVBDOjpDb25uZWN0aW9uOjpIYW5kbGUgY29ubmVjdGlvbkhh
bmRsZSkgU3luY2hyb25vdXMKLQotICAgIFRlc3RNdWx0aXBsZUF0dHJpYnV0ZXMoKSAtPiAoKSBX
YW50c0Nvbm5lY3Rpb24gU3luY2hyb25vdXMKLQotICAgIFRlc3RQYXJhbWV0ZXJBdHRyaWJ1dGVz
KFtBdHRyaWJ1dGVPbmUgQXR0cmlidXRlVHdvXSB1aW50NjRfdCBmb28sIGRvdWJsZSBiYXIsIFtB
dHRyaWJ1dGVUaHJlZV0gZG91YmxlIGJheikKLQotICAgIFRlbXBsYXRlVGVzdChIYXNoTWFwPFN0
cmluZywgc3RkOjpwYWlyPFN0cmluZywgdWludDY0X3Q+PiBhKQotCi0gICAgU2V0VmlkZW9MYXll
cklEKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRCB2aWRlb0xheWVySUQp
Ci0KLSNpZiBQTEFURk9STShNQUMpCi0gICAgRGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24o
SVBDOjpNYWNoUG9ydCBjb25uZWN0aW9uSWRlbnRpZmllcikKLSNlbmRpZgotCi0jaWYgUExBVEZP
Uk0oTUFDKQotICAgICMgS2V5Ym9hcmQgc3VwcG9ydAotICAgIEludGVycHJldEtleUV2ZW50KHVp
bnQzMl90IHR5cGUpIC0+IChWZWN0b3I8V2ViQ29yZTo6S2V5cHJlc3NDb21tYW5kPiBjb21tYW5k
TmFtZSkKLSNlbmRpZgotCi0jaWYgRU5BQkxFKERFUFJFQ0FURURfRkVBVFVSRSkKLSAgICBEZXBy
ZWNhdGVkT3BlcmF0aW9uKElQQzo6RHVtbXlUeXBlIGR1bW15KQotI2VuZGlmCi0KLSNpZiBFTkFC
TEUoRVhQRVJJTUVOVEFMX0ZFQVRVUkUpCi0gICAgRXhwZXJpbWVudGFsT3BlcmF0aW9uKElQQzo6
RHVtbXlUeXBlIGR1bW15KQotI2VuZGlmCi19Ci0KLSNlbmRpZgotI2VuZGlmCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3QtbGVnYWN5Lm1lc3NhZ2VzLmluCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdC1sZWdhY3kubWVzc2FnZXMu
aW4JKHJldmlzaW9uIDI2MDkzNSkJKGZyb20gU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90
ZXN0LWxlZ2FjeS1tZXNzYWdlcy5pbjoyNjA5MzUpCisrKyBTb3VyY2UvV2ViS2l0L1NjcmlwdHMv
d2Via2l0L3Rlc3QtbGVnYWN5Lm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
NzcgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
IyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworI2lmIEVOQUJM
RShXRUJLSVQyKQorI2lmIE5FU1RFRF9NQVNURVJfQ09ORElUSU9OIHx8IE1BU1RFUl9PUiAmJiBN
QVNURVJfQU5ECisKK21lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgeworICAgIExv
YWRVUkwoU3RyaW5nIHVybCkKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgIExvYWRTb21l
dGhpbmcoU3RyaW5nIHVybCkKKyNpZiBORVNURURfTUVTU0FHRV9DT05ESVRJT04gfHwgU09NRV9P
VEhFUl9NRVNTQUdFX0NPTkRJVElPTgorICAgIFRvdWNoRXZlbnQoV2ViS2l0OjpXZWJUb3VjaEV2
ZW50IGV2ZW50KQorI2VuZGlmCisjaWYgTkVTVEVEX01FU1NBR0VfQ09ORElUSU9OICYmIFNPTUVf
T1RIRVJfTUVTU0FHRV9DT05ESVRJT04KKyAgICBBZGRFdmVudChXZWJLaXQ6OldlYlRvdWNoRXZl
bnQgZXZlbnQpCisjZW5kaWYKKyAgICBMb2FkU29tZXRoaW5nRWxzZShTdHJpbmcgdXJsKQorI2Vu
ZGlmCisgICAgRGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2
NF90IGxpc3RlbmVySUQsIHVpbnQzMl90IHBvbGljeUFjdGlvbikKKyAgICBDbG9zZSgpCisKKyAg
ICBQcmVmZXJlbmNlc0RpZENoYW5nZShXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmUgc3RvcmUp
CisgICAgU2VuZERvdWJsZUFuZEZsb2F0KGRvdWJsZSBkLCBmbG9hdCBmKQorICAgIFNlbmRJbnRz
KFZlY3Rvcjx1aW50NjRfdD4gaW50cywgVmVjdG9yPFZlY3Rvcjx1aW50NjRfdD4+IGludFZlY3Rv
cnMpCisKKyAgICBDcmVhdGVQbHVnaW4odWludDY0X3QgcGx1Z2luSW5zdGFuY2VJRCwgV2ViS2l0
OjpQbHVnaW46OlBhcmFtZXRlcnMgcGFyYW1ldGVycykgLT4gKGJvb2wgcmVzdWx0KQorICAgIFJ1
bkphdmFTY3JpcHRBbGVydCh1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgbWVzc2FnZSkgLT4gKCkK
KyAgICBHZXRQbHVnaW5zKGJvb2wgcmVmcmVzaCkgLT4gKFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5J
bmZvPiBwbHVnaW5zKQorICAgIEdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKFN0cmluZyBwbHVn
aW5QYXRoKSAtPiAoSVBDOjpDb25uZWN0aW9uOjpIYW5kbGUgY29ubmVjdGlvbkhhbmRsZSkgU3lu
Y2hyb25vdXMKKworICAgIFRlc3RNdWx0aXBsZUF0dHJpYnV0ZXMoKSAtPiAoKSBXYW50c0Nvbm5l
Y3Rpb24gU3luY2hyb25vdXMKKworICAgIFRlc3RQYXJhbWV0ZXJBdHRyaWJ1dGVzKFtBdHRyaWJ1
dGVPbmUgQXR0cmlidXRlVHdvXSB1aW50NjRfdCBmb28sIGRvdWJsZSBiYXIsIFtBdHRyaWJ1dGVU
aHJlZV0gZG91YmxlIGJheikKKworICAgIFRlbXBsYXRlVGVzdChIYXNoTWFwPFN0cmluZywgc3Rk
OjpwYWlyPFN0cmluZywgdWludDY0X3Q+PiBhKQorCisgICAgU2V0VmlkZW9MYXllcklEKFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRCB2aWRlb0xheWVySUQpCisKKyNpZiBQ
TEFURk9STShNQUMpCisgICAgRGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oSVBDOjpNYWNo
UG9ydCBjb25uZWN0aW9uSWRlbnRpZmllcikKKyNlbmRpZgorCisjaWYgUExBVEZPUk0oTUFDKQor
ICAgICMgS2V5Ym9hcmQgc3VwcG9ydAorICAgIEludGVycHJldEtleUV2ZW50KHVpbnQzMl90IHR5
cGUpIC0+IChWZWN0b3I8V2ViQ29yZTo6S2V5cHJlc3NDb21tYW5kPiBjb21tYW5kTmFtZSkKKyNl
bmRpZgorCisjaWYgRU5BQkxFKERFUFJFQ0FURURfRkVBVFVSRSkKKyAgICBEZXByZWNhdGVkT3Bl
cmF0aW9uKElQQzo6RHVtbXlUeXBlIGR1bW15KQorI2VuZGlmCisKKyNpZiBFTkFCTEUoRVhQRVJJ
TUVOVEFMX0ZFQVRVUkUpCisgICAgRXhwZXJpbWVudGFsT3BlcmF0aW9uKElQQzo6RHVtbXlUeXBl
IGR1bW15KQorI2VuZGlmCit9CisKKyNlbmRpZgorI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1NjcmlwdHMvd2Via2l0L3Rlc3QtbWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0LW1lc3NhZ2VzLmluCShyZXZpc2lvbiAyNjA5MzUpCisr
KyBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3QtbWVzc2FnZXMuaW4JKG5vbmV4aXN0
ZW50KQpAQCAtMSw4NCArMCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1l
dDoKLSMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKLSMgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKLSMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotIyBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgotIyBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0jIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0j
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksCi0jIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0KLSNpZiBFTkFCTEUoV0VCS0lUMikKLSNpZiBORVNURURfTUFTVEVSX0NPTkRJVElPTiB8
fCBNQVNURVJfT1IgJiYgTUFTVEVSX0FORAotCi0KLSMgVGhlIHBhcnNlciBzaG91bGQgdHJlYXQg
YWxsIG9mIHRoZXNlIGFzIGNvbW1lbnRzCi0jRmFrZUxvYWRVUkxBKFN0cmluZyB1cmwpCi0jIEZh
a2VMb2FkVVJMQihTdHJpbmcgdXJsKQotICAgICNGYWtlTG9hZFVSTEMoU3RyaW5nIHVybCkKLSAg
ICAjIEZha2VMb2FkVVJMRChTdHJpbmcgdXJsKQotCi1tZXNzYWdlcyAtPiBXZWJQYWdlIHsKLSAg
ICBMb2FkVVJMKFN0cmluZyB1cmwpCi0jaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLSAgICBMb2Fk
U29tZXRoaW5nKFN0cmluZyB1cmwpCi0jaWYgTkVTVEVEX01FU1NBR0VfQ09ORElUSU9OIHx8IFNP
TUVfT1RIRVJfTUVTU0FHRV9DT05ESVRJT04KLSAgICBUb3VjaEV2ZW50KFdlYktpdDo6V2ViVG91
Y2hFdmVudCBldmVudCkKLSNlbmRpZgotI2lmIE5FU1RFRF9NRVNTQUdFX0NPTkRJVElPTiAmJiBT
T01FX09USEVSX01FU1NBR0VfQ09ORElUSU9OCi0gICAgQWRkRXZlbnQoV2ViS2l0OjpXZWJUb3Vj
aEV2ZW50IGV2ZW50KQotI2VuZGlmCi0gICAgTG9hZFNvbWV0aGluZ0Vsc2UoU3RyaW5nIHVybCkK
LSNlbmRpZgotICAgIERpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbih1aW50NjRfdCBmcmFtZUlELCB1
aW50NjRfdCBsaXN0ZW5lcklELCB1aW50MzJfdCBwb2xpY3lBY3Rpb24pCi0gICAgQ2xvc2UoKQot
Ci0gICAgUHJlZmVyZW5jZXNEaWRDaGFuZ2UoV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlIHN0
b3JlKQotICAgIFNlbmREb3VibGVBbmRGbG9hdChkb3VibGUgZCwgZmxvYXQgZikKLSAgICBTZW5k
SW50cyhWZWN0b3I8dWludDY0X3Q+IGludHMsIFZlY3RvcjxWZWN0b3I8dWludDY0X3Q+PiBpbnRW
ZWN0b3JzKQotCi0gICAgQ3JlYXRlUGx1Z2luKHVpbnQ2NF90IHBsdWdpbkluc3RhbmNlSUQsIFdl
YktpdDo6UGx1Z2luOjpQYXJhbWV0ZXJzIHBhcmFtZXRlcnMpIC0+IChib29sIHJlc3VsdCkKLSAg
ICBSdW5KYXZhU2NyaXB0QWxlcnQodWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG1lc3NhZ2UpIC0+
ICgpCi0gICAgR2V0UGx1Z2lucyhib29sIHJlZnJlc2gpIC0+IChWZWN0b3I8V2ViQ29yZTo6UGx1
Z2luSW5mbz4gcGx1Z2lucykKLSAgICBHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbihTdHJpbmcg
cGx1Z2luUGF0aCkgLT4gKElQQzo6Q29ubmVjdGlvbjo6SGFuZGxlIGNvbm5lY3Rpb25IYW5kbGUp
IFN5bmNocm9ub3VzCi0KLSAgICBUZXN0TXVsdGlwbGVBdHRyaWJ1dGVzKCkgLT4gKCkgV2FudHND
b25uZWN0aW9uIFN5bmNocm9ub3VzCi0KLSAgICBUZXN0UGFyYW1ldGVyQXR0cmlidXRlcyhbQXR0
cmlidXRlT25lIEF0dHJpYnV0ZVR3b10gdWludDY0X3QgZm9vLCBkb3VibGUgYmFyLCBbQXR0cmli
dXRlVGhyZWVdIGRvdWJsZSBiYXopCi0KLSAgICBUZW1wbGF0ZVRlc3QoSGFzaE1hcDxTdHJpbmcs
IHN0ZDo6cGFpcjxTdHJpbmcsIHVpbnQ2NF90Pj4gYSkKLQotICAgIFNldFZpZGVvTGF5ZXJJRChX
ZWJDb3JlOjpHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQgdmlkZW9MYXllcklEKQotCi0j
aWYgUExBVEZPUk0oTUFDKQotICAgIERpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKElQQzo6
TWFjaFBvcnQgY29ubmVjdGlvbklkZW50aWZpZXIpCi0jZW5kaWYKLQotI2lmIFBMQVRGT1JNKE1B
QykKLSAgICAjIEtleWJvYXJkIHN1cHBvcnQKLSAgICBJbnRlcnByZXRLZXlFdmVudCh1aW50MzJf
dCB0eXBlKSAtPiAoVmVjdG9yPFdlYkNvcmU6OktleXByZXNzQ29tbWFuZD4gY29tbWFuZE5hbWUp
Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShERVBSRUNBVEVEX0ZFQVRVUkUpCi0gICAgRGVwcmVjYXRl
ZE9wZXJhdGlvbihJUEM6OkR1bW15VHlwZSBkdW1teSkKLSNlbmRpZgotCi0jaWYgRU5BQkxFKEVY
UEVSSU1FTlRBTF9GRUFUVVJFKQotICAgIEV4cGVyaW1lbnRhbE9wZXJhdGlvbihJUEM6OkR1bW15
VHlwZSBkdW1teSkKLSNlbmRpZgotfQotCi0jZW5kaWYKLSNlbmRpZgpJbmRleDogU291cmNlL1dl
YktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0LXN1cGVyY2xhc3MtbWVzc2FnZXMuaW4KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0LXN1cGVyY2xhc3MtbWVzc2Fn
ZXMuaW4JKHJldmlzaW9uIDI2MDkzNSkKKysrIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQv
dGVzdC1zdXBlcmNsYXNzLW1lc3NhZ2VzLmluCShub25leGlzdGVudCkKQEAgLTEsMzIgKzAsMCBA
QAotIyBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
IwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECi0jIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0jIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSMgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotIyBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUgotIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotIyBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LAotIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi1tZXNzYWdlcyAtPiBX
ZWJQYWdlIDogV2ViUGFnZUJhc2UgewotICAgIExvYWRVUkwoU3RyaW5nIHVybCkKLSNpZiBFTkFC
TEUoVEVTVF9GRUFUVVJFKQotICAgIFRlc3RBc3luY01lc3NhZ2UoZW51bTpib29sIFdlYktpdDo6
VGVzdFR3b1N0YXRlRW51bSB0d29TdGF0ZUVudW0pIC0+ICh1aW50NjRfdCByZXN1bHQpIEFzeW5j
Ci0gICAgVGVzdEFzeW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50cygpIC0+ICgpIEFzeW5jCi0gICAg
VGVzdEFzeW5jTWVzc2FnZVdpdGhNdWx0aXBsZUFyZ3VtZW50cygpIC0+IChib29sIGZsYWcsIHVp
bnQ2NF90IHZhbHVlKSBBc3luYwotI2VuZGlmCi0gICAgVGVzdFN5bmNNZXNzYWdlKHVpbnQzMl90
IHBhcmFtKSAtPiAodWludDhfdCByZXBseSkgU3luY2hyb25vdXMKLSAgICBUZXN0U3luY2hyb25v
dXNNZXNzYWdlKGJvb2wgdmFsdWUpIC0+IChPcHRpb25hbDxXZWJLaXQ6OlRlc3RDbGFzc05hbWU+
IG9wdGlvbmFsUmVwbHkpIFN5bmNocm9ub3VzCi19CkluZGV4OiBTb3VyY2UvV2ViS2l0L1Njcmlw
dHMvd2Via2l0L3Rlc3Qtc3VwZXJjbGFzcy5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3Qtc3VwZXJjbGFzcy5tZXNzYWdlcy5pbgkocmV2
aXNpb24gMjYwOTM1KQkoZnJvbSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3Qtc3Vw
ZXJjbGFzcy1tZXNzYWdlcy5pbjoyNjA5MzUpCisrKyBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Vi
a2l0L3Rlc3Qtc3VwZXJjbGFzcy5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDMyIEBACisjIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisj
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK21lc3NhZ2Vz
IC0+IFdlYlBhZ2UgOiBXZWJQYWdlQmFzZSB7CisgICAgTG9hZFVSTChTdHJpbmcgdXJsKQorI2lm
IEVOQUJMRShURVNUX0ZFQVRVUkUpCisgICAgVGVzdEFzeW5jTWVzc2FnZShlbnVtOmJvb2wgV2Vi
S2l0OjpUZXN0VHdvU3RhdGVFbnVtIHR3b1N0YXRlRW51bSkgLT4gKHVpbnQ2NF90IHJlc3VsdCkg
QXN5bmMKKyAgICBUZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJndW1lbnRzKCkgLT4gKCkgQXN5bmMK
KyAgICBUZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1lbnRzKCkgLT4gKGJvb2wgZmxh
ZywgdWludDY0X3QgdmFsdWUpIEFzeW5jCisjZW5kaWYKKyAgICBUZXN0U3luY01lc3NhZ2UodWlu
dDMyX3QgcGFyYW0pIC0+ICh1aW50OF90IHJlcGx5KSBTeW5jaHJvbm91cworICAgIFRlc3RTeW5j
aHJvbm91c01lc3NhZ2UoYm9vbCB2YWx1ZSkgLT4gKE9wdGlvbmFsPFdlYktpdDo6VGVzdENsYXNz
TmFtZT4gb3B0aW9uYWxSZXBseSkgU3luY2hyb25vdXMKK30KSW5kZXg6IFNvdXJjZS9XZWJLaXQv
U2NyaXB0cy93ZWJraXQvdGVzdC5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BdXhpbGlhcnlQcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BdXhpbGlhcnlQcm9jZXNzLmNwcAkocmV2aXNpb24gMjYwOTM1KQorKysg
U291cmNlL1dlYktpdC9TaGFyZWQvQXV4aWxpYXJ5UHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEwNywyMiArMTA3LDIyIEBAIHZvaWQgQXV4aWxpYXJ5UHJvY2Vzczo6aW5pdGlhbGl6ZUNv
bm5lY3QKIHsKIH0KIAotdm9pZCBBdXhpbGlhcnlQcm9jZXNzOjphZGRNZXNzYWdlUmVjZWl2ZXIo
SVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpNZXNzYWdlUmVj
ZWl2ZXImIG1lc3NhZ2VSZWNlaXZlcikKK3ZvaWQgQXV4aWxpYXJ5UHJvY2Vzczo6YWRkTWVzc2Fn
ZVJlY2VpdmVyKElQQzo6UmVjZWl2ZXJOYW1lIG1lc3NhZ2VSZWNlaXZlck5hbWUsIElQQzo6TWVz
c2FnZVJlY2VpdmVyJiBtZXNzYWdlUmVjZWl2ZXIpCiB7CiAgICAgbV9tZXNzYWdlUmVjZWl2ZXJN
YXAuYWRkTWVzc2FnZVJlY2VpdmVyKG1lc3NhZ2VSZWNlaXZlck5hbWUsIG1lc3NhZ2VSZWNlaXZl
cik7CiB9CiAKLXZvaWQgQXV4aWxpYXJ5UHJvY2Vzczo6YWRkTWVzc2FnZVJlY2VpdmVyKElQQzo6
U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9u
SUQsIElQQzo6TWVzc2FnZVJlY2VpdmVyJiBtZXNzYWdlUmVjZWl2ZXIpCit2b2lkIEF1eGlsaWFy
eVByb2Nlc3M6OmFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlJlY2VpdmVyTmFtZSBtZXNzYWdlUmVj
ZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYg
bWVzc2FnZVJlY2VpdmVyKQogewogICAgIG1fbWVzc2FnZVJlY2VpdmVyTWFwLmFkZE1lc3NhZ2VS
ZWNlaXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklELCBtZXNzYWdlUmVjZWl2
ZXIpOwogfQogCi12b2lkIEF1eGlsaWFyeVByb2Nlc3M6OnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihJ
UEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5h
dGlvbklEKQordm9pZCBBdXhpbGlhcnlQcm9jZXNzOjpyZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBD
OjpSZWNlaXZlck5hbWUgbWVzc2FnZVJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25J
RCkKIHsKICAgICBtX21lc3NhZ2VSZWNlaXZlck1hcC5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIobWVz
c2FnZVJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRCk7CiB9CiAKLXZvaWQgQXV4aWxpYXJ5UHJv
Y2Vzczo6cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VS
ZWNlaXZlck5hbWUpCit2b2lkIEF1eGlsaWFyeVByb2Nlc3M6OnJlbW92ZU1lc3NhZ2VSZWNlaXZl
cihJUEM6OlJlY2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1lKQogewogICAgIG1fbWVzc2Fn
ZVJlY2VpdmVyTWFwLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1lKTsK
IH0KQEAgLTIzNiw5ICsyMzYsOSBAQCB2b2lkIEF1eGlsaWFyeVByb2Nlc3M6OmluaXRpYWxpemVT
YW5kYm94CiB7CiB9CiAKLXZvaWQgQXV4aWxpYXJ5UHJvY2Vzczo6ZGlkUmVjZWl2ZUludmFsaWRN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNl
aXZlck5hbWUsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lKQordm9pZCBBdXhpbGlh
cnlQcm9jZXNzOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBD
OjpNZXNzYWdlTmFtZSBtZXNzYWdlTmFtZSkKIHsKLSAgICBXVEZMb2dBbHdheXMoIlJlY2VpdmVk
IGludmFsaWQgbWVzc2FnZTogJyVzOjolcyciLCBtZXNzYWdlUmVjZWl2ZXJOYW1lLnRvU3RyaW5n
KCkuZGF0YSgpLCBtZXNzYWdlTmFtZS50b1N0cmluZygpLmRhdGEoKSk7CisgICAgV1RGTG9nQWx3
YXlzKCJSZWNlaXZlZCBpbnZhbGlkIG1lc3NhZ2U6ICclcyciLCBkZXNjcmlwdGlvbihtZXNzYWdl
TmFtZSkpOwogICAgIENSQVNIKCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0F1
eGlsaWFyeVByb2Nlc3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXhp
bGlhcnlQcm9jZXNzLmgJKHJldmlzaW9uIDI2MDkzNSkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVk
L0F1eGlsaWFyeVByb2Nlc3MuaAkod29ya2luZyBjb3B5KQpAQCAtNjAsMjAgKzYwLDIwIEBAIHB1
YmxpYzoKICAgICB2b2lkIGRpc2FibGVUZXJtaW5hdGlvbigpOwogICAgIHZvaWQgZW5hYmxlVGVy
bWluYXRpb24oKTsKIAotICAgIHZvaWQgYWRkTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVm
ZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIElQQzo6TWVzc2FnZVJlY2VpdmVyJik7Ci0gICAg
dm9pZCBhZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2Vp
dmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImKTsK
LSAgICB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNz
YWdlUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKTsKLSAgICB2b2lkIHJlbW92
ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1l
KTsKKyAgICB2b2lkIGFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlJlY2VpdmVyTmFtZSwgSVBDOjpN
ZXNzYWdlUmVjZWl2ZXImKTsKKyAgICB2b2lkIGFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlJlY2Vp
dmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImKTsK
KyAgICB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlJlY2VpdmVyTmFtZSwgdWludDY0
X3QgZGVzdGluYXRpb25JRCk7CisgICAgdm9pZCByZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpS
ZWNlaXZlck5hbWUpOwogICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6TWVzc2Fn
ZVJlY2VpdmVyJik7CiAgICAgCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAgdm9pZCBh
ZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFt
ZSwgT2JqZWN0SWRlbnRpZmllcjxUPiBkZXN0aW5hdGlvbklELCBJUEM6Ok1lc3NhZ2VSZWNlaXZl
ciYgcmVjZWl2ZXIpCisgICAgdm9pZCBhZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpSZWNlaXZlck5h
bWUgbWVzc2FnZVJlY2VpdmVyTmFtZSwgT2JqZWN0SWRlbnRpZmllcjxUPiBkZXN0aW5hdGlvbklE
LCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYgcmVjZWl2ZXIpCiAgICAgewogICAgICAgICBhZGRNZXNz
YWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRC50b1VJbnQ2NCgp
LCByZWNlaXZlcik7CiAgICAgfQogICAgIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAg
IHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VS
ZWNlaXZlck5hbWUsIE9iamVjdElkZW50aWZpZXI8VD4gZGVzdGluYXRpb25JRCkKKyAgICB2b2lk
IHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlJlY2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJO
YW1lLCBPYmplY3RJZGVudGlmaWVyPFQ+IGRlc3RpbmF0aW9uSUQpCiAgICAgewogICAgICAgICBy
ZW1vdmVNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRC50
b1VJbnQ2NCgpKTsKICAgICB9CkBAIC0xMzgsNyArMTM4LDcgQEAgcHJpdmF0ZToKICAgICB1aW50
NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAg
Ly8gSVBDOjpDb25uZWN0aW9uOjpDbGllbnQuCi0gICAgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2Vp
dmVyTmFtZSwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUpIGZpbmFsOworICAgIHZv
aWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2Fn
ZU5hbWUpIGZpbmFsOwogICAgIHZvaWQgZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJikgb3ZlcnJp
ZGU7CiAKICAgICB2b2lkIHNodXREb3duKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9B
cHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmgJKHJl
dmlzaW9uIDI2MDkzNSkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1l
bnRDb29yZGluYXRvclByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTg2LDggKzg2LDYgQEAgcHVi
bGljOgogICAgICAgICB2aXJ0dWFsIGNvbnN0IFN0cmluZyYgcGF5bWVudENvb3JkaW5hdG9yQm91
bmRJbnRlcmZhY2VJZGVudGlmaWVyKGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5Jikg
PSAwOwogICAgICAgICB2aXJ0dWFsIGNvbnN0IFN0cmluZyYgcGF5bWVudENvb3JkaW5hdG9yU291
cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRv
clByb3h5JikgPSAwOwogICAgICAgICB2aXJ0dWFsIGNvbnN0IFN0cmluZyYgcGF5bWVudENvb3Jk
aW5hdG9yU291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyKGNvbnN0IFdlYlBheW1l
bnRDb29yZGluYXRvclByb3h5JikgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgcGF5bWVudENv
b3JkaW5hdG9yQWRkTWVzc2FnZVJlY2VpdmVyKFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5Jiwg
Y29uc3QgSVBDOjpTdHJpbmdSZWZlcmVuY2UmLCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYpID0gMDsK
LSAgICAgICAgdmlydHVhbCB2b2lkIHBheW1lbnRDb29yZGluYXRvclJlbW92ZU1lc3NhZ2VSZWNl
aXZlcihXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYsIGNvbnN0IElQQzo6U3RyaW5nUmVmZXJl
bmNlJikgPSAwOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIHZpcnR1YWwgVUlW
aWV3Q29udHJvbGxlciAqcGF5bWVudENvb3JkaW5hdG9yUHJlc2VudGluZ1ZpZXdDb250cm9sbGVy
KGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JikgPSAwOwogICAgICAgICB2aXJ0dWFs
IGNvbnN0IFN0cmluZyYgcGF5bWVudENvb3JkaW5hdG9yQ1REYXRhQ29ubmVjdGlvblNlcnZpY2VU
eXBlKGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JikgPSAwOwpJbmRleDogU291cmNl
L1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlD
b2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9jb2Nv
YS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLm1tCShyZXZpc2lvbiAyNjA5MzUpCisr
KyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0
b3JQcm94eUNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC03OSwxNSArNzksMTIgQEAgV2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHk6OldlYlBheW1lbnRDbwogICAgIDogbV9jbGllbnQoY2xpZW50
KQogICAgICwgbV9jYW5NYWtlUGF5bWVudHNRdWV1ZShXb3JrUXVldWU6OmNyZWF0ZSgiY29tLmFw
cGxlLldlYktpdC5DYW5NYWtlUGF5bWVudHMiKSkKIHsKLSAgICBtX2NsaWVudC5wYXltZW50Q29v
cmRpbmF0b3JBZGRNZXNzYWdlUmVjZWl2ZXIoKnRoaXMsIE1lc3NhZ2VzOjpXZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCAqdGhpcyk7CiB9CiAKIFdlYlBh
eW1lbnRDb29yZGluYXRvclByb3h5Ojp+V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkoKQogewog
ICAgIGlmIChtX3N0YXRlICE9IFN0YXRlOjpJZGxlKQogICAgICAgICBoaWRlUGF5bWVudFVJKCk7
Ci0KLSAgICBtX2NsaWVudC5wYXltZW50Q29vcmRpbmF0b3JSZW1vdmVNZXNzYWdlUmVjZWl2ZXIo
KnRoaXMsIE1lc3NhZ2VzOjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6bWVzc2FnZVJlY2Vp
dmVyTmFtZSgpKTsKIH0KIAogdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZv
cm1DYW5NYWtlUGF5bWVudHNXaXRoQWN0aXZlQ2FyZChjb25zdCBTdHJpbmcmIG1lcmNoYW50SWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiBkb21haW5OYW1lLCBXVEY6OkZ1bmN0aW9uPHZvaWQoYm9v
bCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2Nv
YS9BdXhpbGlhcnlQcm9jZXNzQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9T
aGFyZWQvQ29jb2EvQXV4aWxpYXJ5UHJvY2Vzc0NvY29hLm1tCShyZXZpc2lvbiAyNjA5MzUpCisr
KyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9BdXhpbGlhcnlQcm9jZXNzQ29jb2EubW0JKHdv
cmtpbmcgY29weSkKQEAgLTMyLDkgKzMyLDkgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXZv
aWQgQXV4aWxpYXJ5UHJvY2Vzczo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIElQQzo6U3Ry
aW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lKQordm9pZCBBdXhpbGlhcnlQcm9jZXNzOjpkaWRSZWNl
aXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlTmFtZSBtZXNz
YWdlTmFtZSkKIHsKLSAgICBzZXRDcmFzaFJlcG9ydEFwcGxpY2F0aW9uU3BlY2lmaWNJbmZvcm1h
dGlvbigoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJS
ZWNlaXZlZCBpbnZhbGlkIG1lc3NhZ2U6ICclczo6JXMnIiwgbWVzc2FnZVJlY2VpdmVyTmFtZS50
b1N0cmluZygpLmRhdGEoKSwgbWVzc2FnZU5hbWUudG9TdHJpbmcoKS5kYXRhKCldKTsKKyAgICBz
ZXRDcmFzaFJlcG9ydEFwcGxpY2F0aW9uU3BlY2lmaWNJbmZvcm1hdGlvbigoX19icmlkZ2UgQ0ZT
dHJpbmdSZWYpW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJSZWNlaXZlZCBpbnZhbGlkIG1l
c3NhZ2U6ICclcyciLCBkZXNjcmlwdGlvbihtZXNzYWdlTmFtZSldKTsKICAgICBDUkFTSCgpOwog
fQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHku
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nl
c3NQcm94eS5jcHAJKHJldmlzaW9uIDI2MDkzNSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0F1eGlsaWFyeVByb2Nlc3NQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3OCwyMiArMTc4
LDIyIEBAIGJvb2wgQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjpzZW5kTWVzc2FnZSgKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKLXZvaWQgQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjphZGRNZXNzYWdlUmVj
ZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpNZXNz
YWdlUmVjZWl2ZXImIG1lc3NhZ2VSZWNlaXZlcikKK3ZvaWQgQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5
OjphZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpSZWNlaXZlck5hbWUgbWVzc2FnZVJlY2VpdmVyTmFt
ZSwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImIG1lc3NhZ2VSZWNlaXZlcikKIHsKICAgICBtX21lc3Nh
Z2VSZWNlaXZlck1hcC5hZGRNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSwgbWVz
c2FnZVJlY2VpdmVyKTsKIH0KIAotdm9pZCBBdXhpbGlhcnlQcm9jZXNzUHJveHk6OmFkZE1lc3Nh
Z2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCB1aW50
NjRfdCBkZXN0aW5hdGlvbklELCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYgbWVzc2FnZVJlY2VpdmVy
KQordm9pZCBBdXhpbGlhcnlQcm9jZXNzUHJveHk6OmFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlJl
Y2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBJ
UEM6Ok1lc3NhZ2VSZWNlaXZlciYgbWVzc2FnZVJlY2VpdmVyKQogewogICAgIG1fbWVzc2FnZVJl
Y2VpdmVyTWFwLmFkZE1lc3NhZ2VSZWNlaXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1lLCBkZXN0aW5h
dGlvbklELCBtZXNzYWdlUmVjZWl2ZXIpOwogfQogCi12b2lkIEF1eGlsaWFyeVByb2Nlc3NQcm94
eTo6cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNl
aXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpCit2b2lkIEF1eGlsaWFyeVByb2Nlc3NQ
cm94eTo6cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6UmVjZWl2ZXJOYW1lIG1lc3NhZ2VSZWNl
aXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpCiB7CiAgICAgbV9tZXNzYWdlUmVjZWl2
ZXJNYXAucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKG1lc3NhZ2VSZWNlaXZlck5hbWUsIGRlc3RpbmF0
aW9uSUQpOwogfQogCi12b2lkIEF1eGlsaWFyeVByb2Nlc3NQcm94eTo6cmVtb3ZlTWVzc2FnZVJl
Y2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUpCit2b2lkIEF1
eGlsaWFyeVByb2Nlc3NQcm94eTo6cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6UmVjZWl2ZXJO
YW1lIG1lc3NhZ2VSZWNlaXZlck5hbWUpCiB7CiAgICAgbV9tZXNzYWdlUmVjZWl2ZXJNYXAucmVt
b3ZlTWVzc2FnZVJlY2VpdmVyKG1lc3NhZ2VSZWNlaXZlck5hbWUpOwogfQpAQCAtMjc4LDkgKzI3
OCw5IEBAIHZvaWQgQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5Ojpjb25uZWN0aW9uV2kKIHsKIH0KIAot
dm9pZCBBdXhpbGlhcnlQcm9jZXNzUHJveHk6OmxvZ0ludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYgY29ubmVjdGlvbiwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFt
ZSwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUpCit2b2lkIEF1eGlsaWFyeVByb2Nl
c3NQcm94eTo6bG9nSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJ
UEM6Ok1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lKQogewotICAgIFJFTEVBU0VfTE9HX0ZBVUxUKElQ
QywgIlJlY2VpdmVkIGFuIGludmFsaWQgbWVzc2FnZSAnJSIgUFVCTElDX0xPR19TVFJJTkcgIjo6
JSIgUFVCTElDX0xPR19TVFJJTkcgIicgZnJvbSB0aGUgJSIgUFVCTElDX0xPR19TVFJJTkcgIiBw
cm9jZXNzLiIsIG1lc3NhZ2VSZWNlaXZlck5hbWUudG9TdHJpbmcoKS5kYXRhKCksIG1lc3NhZ2VO
YW1lLnRvU3RyaW5nKCkuZGF0YSgpLCBwcm9jZXNzTmFtZSgpLmNoYXJhY3RlcnMoKSk7CisgICAg
UkVMRUFTRV9MT0dfRkFVTFQoSVBDLCAiUmVjZWl2ZWQgYW4gaW52YWxpZCBtZXNzYWdlICclIiBQ
VUJMSUNfTE9HX1NUUklORyAiJyBmcm9tIHRoZSAlIiBQVUJMSUNfTE9HX1NUUklORyAiIHByb2Nl
c3MuIiwgZGVzY3JpcHRpb24obWVzc2FnZU5hbWUpLCBwcm9jZXNzTmFtZSgpLmNoYXJhY3RlcnMo
KSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmgJKHJldmlzaW9uIDI2MDkzNSkKKysr
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5oCSh3b3JraW5n
IGNvcHkpCkBAIC03NSwxOSArNzUsMTkgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9jb25u
ZWN0aW9uID09ICZjb25uZWN0aW9uOwogICAgIH0KIAotICAgIHZvaWQgYWRkTWVzc2FnZVJlY2Vp
dmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIElQQzo6TWVzc2Fn
ZVJlY2VpdmVyJik7Ci0gICAgdm9pZCBhZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZl
cmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgSVBDOjpN
ZXNzYWdlUmVjZWl2ZXImKTsKLSAgICB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0
cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklE
KTsKLSAgICB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBt
ZXNzYWdlUmVjZWl2ZXJOYW1lKTsKKyAgICB2b2lkIGFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlJl
Y2VpdmVyTmFtZSwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImKTsKKyAgICB2b2lkIGFkZE1lc3NhZ2VS
ZWNlaXZlcihJUEM6OlJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgSVBDOjpN
ZXNzYWdlUmVjZWl2ZXImKTsKKyAgICB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlJl
Y2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCk7CisgICAgdm9pZCByZW1vdmVNZXNz
YWdlUmVjZWl2ZXIoSVBDOjpSZWNlaXZlck5hbWUpOwogICAgIAogICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPgotICAgIHZvaWQgYWRkTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNl
IG1lc3NhZ2VSZWNlaXZlck5hbWUsIE9iamVjdElkZW50aWZpZXI8VD4gZGVzdGluYXRpb25JRCwg
SVBDOjpNZXNzYWdlUmVjZWl2ZXImIHJlY2VpdmVyKQorICAgIHZvaWQgYWRkTWVzc2FnZVJlY2Vp
dmVyKElQQzo6UmVjZWl2ZXJOYW1lIG1lc3NhZ2VSZWNlaXZlck5hbWUsIE9iamVjdElkZW50aWZp
ZXI8VD4gZGVzdGluYXRpb25JRCwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImIHJlY2VpdmVyKQogICAg
IHsKICAgICAgICAgYWRkTWVzc2FnZVJlY2VpdmVyKG1lc3NhZ2VSZWNlaXZlck5hbWUsIGRlc3Rp
bmF0aW9uSUQudG9VSW50NjQoKSwgcmVjZWl2ZXIpOwogICAgIH0KICAgICAKICAgICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4KLSAgICB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmlu
Z1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBPYmplY3RJZGVudGlmaWVyPFQ+IGRlc3Rp
bmF0aW9uSUQpCisgICAgdm9pZCByZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpSZWNlaXZlck5h
bWUgbWVzc2FnZVJlY2VpdmVyTmFtZSwgT2JqZWN0SWRlbnRpZmllcjxUPiBkZXN0aW5hdGlvbklE
KQogICAgIHsKICAgICAgICAgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKG1lc3NhZ2VSZWNlaXZlck5h
bWUsIGRlc3RpbmF0aW9uSUQudG9VSW50NjQoKSk7CiAgICAgfQpAQCAtMTE5LDcgKzExOSw3IEBA
IHByb3RlY3RlZDoKICAgICBib29sIGRpc3BhdGNoTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJ
UEM6OkRlY29kZXImKTsKICAgICBib29sIGRpc3BhdGNoU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKTsKIAot
ICAgIHZvaWQgbG9nSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpTdHJpbmdS
ZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2Fn
ZU5hbWUpOworICAgIHZvaWQgbG9nSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBD
OjpNZXNzYWdlTmFtZSk7CiAgICAgdmlydHVhbCBBU0NJSUxpdGVyYWwgcHJvY2Vzc05hbWUoKSBj
b25zdCA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgZ2V0TGF1bmNoT3B0aW9ucyhQcm9jZXNzTGF1
bmNoZXI6OkxhdW5jaE9wdGlvbnMmKTsKQEAgLTE1MCw3ICsxNTAsNyBAQCBib29sIEF1eGlsaWFy
eVByb2Nlc3NQcm94eTo6c2VuZChUJiYgbWVzCiB7CiAgICAgQ09NUElMRV9BU1NFUlQoIVQ6Omlz
U3luYywgQXN5bmNNZXNzYWdlRXhwZWN0ZWQpOwogCi0gICAgYXV0byBlbmNvZGVyID0gbWFrZVVu
aXF1ZTxJUEM6OkVuY29kZXI+KFQ6OnJlY2VpdmVyTmFtZSgpLCBUOjpuYW1lKCksIGRlc3RpbmF0
aW9uSUQpOworICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWU8SVBDOjpFbmNvZGVyPihUOjpu
YW1lKCksIGRlc3RpbmF0aW9uSUQpOwogICAgIGVuY29kZXItPmVuY29kZShtZXNzYWdlLmFyZ3Vt
ZW50cygpKTsKIAogICAgIHJldHVybiBzZW5kTWVzc2FnZShXVEZNb3ZlKGVuY29kZXIpLCBzZW5k
T3B0aW9ucyk7CkBAIC0xNzQsNyArMTc0LDcgQEAgdm9pZCBBdXhpbGlhcnlQcm9jZXNzUHJveHk6
OnNlbmRXaXRoQXN5bgogewogICAgIENPTVBJTEVfQVNTRVJUKCFUOjppc1N5bmMsIEFzeW5jTWVz
c2FnZUV4cGVjdGVkKTsKIAotICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWU8SVBDOjpFbmNv
ZGVyPihUOjpyZWNlaXZlck5hbWUoKSwgVDo6bmFtZSgpLCBkZXN0aW5hdGlvbklEKTsKKyAgICBh
dXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlPElQQzo6RW5jb2Rlcj4oVDo6bmFtZSgpLCBkZXN0aW5h
dGlvbklEKTsKICAgICB1aW50NjRfdCBsaXN0ZW5lcklEID0gSVBDOjpuZXh0QXN5bmNSZXBseUhh
bmRsZXJJRCgpOwogICAgIGVuY29kZXItPmVuY29kZShsaXN0ZW5lcklEKTsKICAgICBlbmNvZGVy
LT5lbmNvZGUobWVzc2FnZS5hcmd1bWVudHMoKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9MZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmdOb25lLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9MZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmdOb25lLmNwcAkocmV2
aXNpb24gMjYwOTM1KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGVnYWN5U2Vzc2lvblN0
YXRlQ29kaW5nTm9uZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDEzICszMiwxNSBAQAogI2lu
Y2x1ZGUgIkVuY29kZXIuaCIKICNpbmNsdWRlICJTZXNzaW9uU3RhdGUuaCIKICNpbmNsdWRlICJX
ZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlIDx3dGYvcGVyc2lzdGVuY2UvUGVyc2lz
dGVudENvZGVycy5oPgorI2luY2x1ZGUgPHd0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RGVjb2Rl
ci5oPgorI2luY2x1ZGUgPHd0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RW5jb2Rlci5oPgogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIAogUmVmUHRyPEFQSTo6RGF0YT4gZW5jb2RlTGVnYWN5U2Vzc2lv
blN0YXRlKGNvbnN0IFNlc3Npb25TdGF0ZSYgc2Vzc2lvblN0YXRlKQogewotICAgIC8vIEZJWE1F
OiBJJ20gbm90IHN1cmUgd2hldGhlciB0aGVzZSBhcmUgdGhlIHByb3BlciBhcmd1bWVudHMgZm9y
IHRoZSBlbmNvZGVyLgotICAgIElQQzo6RW5jb2RlciBlbmNvZGVyKCJJUEMiLCAiTGVnYWN5U2Vz
c2lvblN0YXRlIiwgMCk7CisgICAgV1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2RlciBlbmNvZGVyOwog
ICAgIGVuY29kZXIgPDwgc2Vzc2lvblN0YXRlLmJhY2tGb3J3YXJkTGlzdFN0YXRlOwogICAgIGVu
Y29kZXIgPDwgc2Vzc2lvblN0YXRlLnJlbmRlclRyZWVTaXplOwogICAgIGVuY29kZXIgPDwgc2Vz
c2lvblN0YXRlLnByb3Zpc2lvbmFsVVJMOwpAQCAtNDcsMTYgKzQ5LDI2IEBAIFJlZlB0cjxBUEk6
OkRhdGE+IGVuY29kZUxlZ2FjeVNlc3Npb25TdGEKIAogYm9vbCBkZWNvZGVMZWdhY3lTZXNzaW9u
U3RhdGUoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGRhdGFTaXplLCBTZXNzaW9uU3RhdGUm
IHNlc3Npb25TdGF0ZSkKIHsKLSAgICBJUEM6OkRlY29kZXIgZGVjb2RlcihkYXRhLCBkYXRhU2l6
ZSwgbnVsbHB0ciwgVmVjdG9yPElQQzo6QXR0YWNobWVudD4oKSk7CisgICAgV1RGOjpQZXJzaXN0
ZW5jZTo6RGVjb2RlciBkZWNvZGVyKGRhdGEsIGRhdGFTaXplKTsKKwogICAgIE9wdGlvbmFsPEJh
Y2tGb3J3YXJkTGlzdFN0YXRlPiBiYWNrRm9yd2FyZExpc3RTdGF0ZTsKICAgICBkZWNvZGVyID4+
IGJhY2tGb3J3YXJkTGlzdFN0YXRlOwogICAgIGlmICghYmFja0ZvcndhcmRMaXN0U3RhdGUpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICBzZXNzaW9uU3RhdGUuYmFja0ZvcndhcmRMaXN0U3Rh
dGUgPSBXVEZNb3ZlKCpiYWNrRm9yd2FyZExpc3RTdGF0ZSk7Ci0gICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShzZXNzaW9uU3RhdGUucmVuZGVyVHJlZVNpemUpKQorCisgICAgT3B0aW9uYWw8dWludDY0
X3Q+IHJlbmRlclRyZWVTaXplOworICAgIGRlY29kZXIgPj4gcmVuZGVyVHJlZVNpemU7CisgICAg
aWYgKCFyZW5kZXJUcmVlU2l6ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoc2Vzc2lvblN0YXRlLnByb3Zpc2lvbmFsVVJMKSkKKyAgICBzZXNzaW9uU3Rh
dGUucmVuZGVyVHJlZVNpemUgPSAqcmVuZGVyVHJlZVNpemU7CisKKyAgICBPcHRpb25hbDxVUkw+
IHByb3Zpc2lvbmFsVVJMOworICAgIGRlY29kZXIgPj4gcHJvdmlzaW9uYWxVUkw7CisgICAgaWYg
KCFwcm92aXNpb25hbFVSTCkKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHNlc3Npb25TdGF0
ZS5wcm92aXNpb25hbFVSTCA9IFdURk1vdmUoKnByb3Zpc2lvbmFsVVJMKTsKKwogICAgIHJldHVy
biB0cnVlOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBh
Z2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlz
aW9uYWxQYWdlUHJveHkuY3BwCShyZXZpc2lvbiAyNjA5MzUpCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxOSw3
ICs1MTksNyBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRSZWNlaXZlTWVzCiAgICAg
fQogI2VuZGlmCiAKLSAgICBMT0coUHJvY2Vzc1N3YXBwaW5nLCAiVW5oYW5kbGVkIG1lc3NhZ2Ug
JXM6OiVzIGZyb20gcHJvdmlzaW9uYWwgcHJvY2VzcyIsIGRlY29kZXIubWVzc2FnZVJlY2VpdmVy
TmFtZSgpLnRvU3RyaW5nKCkuZGF0YSgpLCBkZWNvZGVyLm1lc3NhZ2VOYW1lKCkudG9TdHJpbmco
KS5kYXRhKCkpOworICAgIExPRyhQcm9jZXNzU3dhcHBpbmcsICJVbmhhbmRsZWQgbWVzc2FnZSAl
cyBmcm9tIHByb3Zpc2lvbmFsIHByb2Nlc3MiLCBkZXNjcmlwdGlvbihkZWNvZGVyLm1lc3NhZ2VO
YW1lKCkpKTsKIH0KIAogdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkUmVjZWl2ZVN5bmNN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVy
LCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYgcmVwbHlFbmNvZGVyKQpJbmRleDogU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwCShyZXZpc2lv
biAyNjA5MzUpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHku
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MSwzMyArNjEsMzIgQEAgUmVmUHRyPFdlYlByb2Nlc3NQ
cm94eT4gU3VzcGVuZGVkUGFnZVBybwogfQogCiAjaWYgIUxPR19ESVNBQkxFRAotc3RhdGljIGNv
bnN0IEhhc2hTZXQ8SVBDOjpTdHJpbmdSZWZlcmVuY2U+JiBtZXNzYWdlTmFtZXNUb0lnbm9yZVdo
aWxlU3VzcGVuZGVkKCkKK3N0YXRpYyBjb25zdCBIYXNoU2V0PHVpbnQxNl90PiYgbWVzc2FnZU5h
bWVzVG9JZ25vcmVXaGlsZVN1c3BlbmRlZCgpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PEhhc2hTZXQ8SVBDOjpTdHJpbmdSZWZlcmVuY2U+PiBtZXNzYWdlTmFtZXM7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8dWludDE2X3Q+PiBtZXNzYWdlTmFtZXM7CiAgICAgc3Rh
dGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwogICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFn
LCBbXSB7Ci0gICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoIkJhY2tGb3J3YXJkQWRkSXRl
bSIpOwotICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJDbGVhckFsbEVkaXRDb21tYW5k
cyIpOwotICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJEaWRDaGFuZ2VDb250ZW50U2l6
ZSIpOwotICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJEaWRDaGFuZ2VNYWluRG9jdW1l
bnQiKTsKLSAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZCgiRGlkQ2hhbmdlUHJvZ3Jlc3Mi
KTsKLSAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZCgiRGlkQ29tbWl0TG9hZEZvckZyYW1l
Iik7Ci0gICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoIkRpZERlc3Ryb3lOYXZpZ2F0aW9u
Iik7Ci0gICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoIkRpZEZpbmlzaERvY3VtZW50TG9h
ZEZvckZyYW1lIik7Ci0gICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoIkRpZEZpbmlzaFBy
b2dyZXNzIik7Ci0gICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoIkRpZENvbXBsZXRlUGFn
ZVRyYW5zaXRpb24iKTsKLSAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZCgiRGlkRmlyc3RM
YXlvdXRGb3JGcmFtZSIpOwotICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJEaWRGaXJz
dFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZSIpOwotICAgICAgICBtZXNzYWdlTmFtZXMu
Z2V0KCkuYWRkKCJEaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YSIpOwotICAgICAgICBtZXNz
YWdlTmFtZXMuZ2V0KCkuYWRkKCJEaWRSZWFjaExheW91dE1pbGVzdG9uZSIpOwotICAgICAgICBt
ZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJEaWRSZXN0b3JlU2Nyb2xsUG9zaXRpb24iKTsKLSAgICAg
ICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZCgiRGlkU3RhcnRQcm9ncmVzcyIpOwotICAgICAgICBt
ZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJEaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lIik7
Ci0gICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoIkVkaXRvclN0YXRlQ2hhbmdlZCIpOwot
ICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJQYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29s
b3JEaWRDaGFuZ2UiKTsKLSAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZCgiU2V0UmVuZGVy
VHJlZVNpemUiKTsKLSAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZCgiU2V0U3RhdHVzVGV4
dCIpOwotICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJTZXROZXR3b3JrUmVxdWVzdHNJ
blByb2dyZXNzIik7CisgICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoc3RhdGljX2Nhc3Q8
dWludDE2X3Q+KElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VQcm94eV9CYWNrRm9yd2FyZEFkZEl0
ZW0pKTsKKyAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZChzdGF0aWNfY2FzdDx1aW50MTZf
dD4oSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZVByb3h5X0NsZWFyQWxsRWRpdENvbW1hbmRzKSk7
CisgICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoc3RhdGljX2Nhc3Q8dWludDE2X3Q+KElQ
Qzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VQcm94eV9EaWRDaGFuZ2VDb250ZW50U2l6ZSkpOworICAg
ICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKHN0YXRpY19jYXN0PHVpbnQxNl90PihJUEM6Ok1l
c3NhZ2VOYW1lOjpXZWJQYWdlUHJveHlfRGlkQ2hhbmdlTWFpbkRvY3VtZW50KSk7CisgICAgICAg
IG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoc3RhdGljX2Nhc3Q8dWludDE2X3Q+KElQQzo6TWVzc2Fn
ZU5hbWU6OldlYlBhZ2VQcm94eV9EaWRDaGFuZ2VQcm9ncmVzcykpOworICAgICAgICBtZXNzYWdl
TmFtZXMuZ2V0KCkuYWRkKHN0YXRpY19jYXN0PHVpbnQxNl90PihJUEM6Ok1lc3NhZ2VOYW1lOjpX
ZWJQYWdlUHJveHlfRGlkQ29tbWl0TG9hZEZvckZyYW1lKSk7CisgICAgICAgIG1lc3NhZ2VOYW1l
cy5nZXQoKS5hZGQoc3RhdGljX2Nhc3Q8dWludDE2X3Q+KElQQzo6TWVzc2FnZU5hbWU6OldlYlBh
Z2VQcm94eV9EaWREZXN0cm95TmF2aWdhdGlvbikpOworICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0
KCkuYWRkKHN0YXRpY19jYXN0PHVpbnQxNl90PihJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlUHJv
eHlfRGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUpKTsKKyAgICAgICAgbWVzc2FnZU5hbWVz
LmdldCgpLmFkZChzdGF0aWNfY2FzdDx1aW50MTZfdD4oSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFn
ZVByb3h5X0RpZEZpbmlzaFByb2dyZXNzKSk7CisgICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5h
ZGQoc3RhdGljX2Nhc3Q8dWludDE2X3Q+KElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VQcm94eV9E
aWRGaXJzdExheW91dEZvckZyYW1lKSk7CisgICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQo
c3RhdGljX2Nhc3Q8dWludDE2X3Q+KElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VQcm94eV9EaWRG
aXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZSkpOworICAgICAgICBtZXNzYWdlTmFt
ZXMuZ2V0KCkuYWRkKHN0YXRpY19jYXN0PHVpbnQxNl90PihJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQ
YWdlUHJveHlfRGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGEpKTsKKyAgICAgICAgbWVzc2Fn
ZU5hbWVzLmdldCgpLmFkZChzdGF0aWNfY2FzdDx1aW50MTZfdD4oSVBDOjpNZXNzYWdlTmFtZTo6
V2ViUGFnZVByb3h5X0RpZFJlYWNoTGF5b3V0TWlsZXN0b25lKSk7CisgICAgICAgIG1lc3NhZ2VO
YW1lcy5nZXQoKS5hZGQoc3RhdGljX2Nhc3Q8dWludDE2X3Q+KElQQzo6TWVzc2FnZU5hbWU6Oldl
YlBhZ2VQcm94eV9EaWRSZXN0b3JlU2Nyb2xsUG9zaXRpb24pKTsKKyAgICAgICAgbWVzc2FnZU5h
bWVzLmdldCgpLmFkZChzdGF0aWNfY2FzdDx1aW50MTZfdD4oSVBDOjpNZXNzYWdlTmFtZTo6V2Vi
UGFnZVByb3h5X0RpZFN0YXJ0UHJvZ3Jlc3MpKTsKKyAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgp
LmFkZChzdGF0aWNfY2FzdDx1aW50MTZfdD4oSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZVByb3h5
X0RpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUpKTsKKyAgICAgICAgbWVzc2FnZU5hbWVz
LmdldCgpLmFkZChzdGF0aWNfY2FzdDx1aW50MTZfdD4oSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFn
ZVByb3h5X0VkaXRvclN0YXRlQ2hhbmdlZCkpOworICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCku
YWRkKHN0YXRpY19jYXN0PHVpbnQxNl90PihJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlUHJveHlf
UGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yRGlkQ2hhbmdlKSk7CisgICAgICAgIG1lc3NhZ2VO
YW1lcy5nZXQoKS5hZGQoc3RhdGljX2Nhc3Q8dWludDE2X3Q+KElQQzo6TWVzc2FnZU5hbWU6Oldl
YlBhZ2VQcm94eV9TZXRSZW5kZXJUcmVlU2l6ZSkpOworICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0
KCkuYWRkKHN0YXRpY19jYXN0PHVpbnQxNl90PihJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlUHJv
eHlfU2V0U3RhdHVzVGV4dCkpOworICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKHN0YXRp
Y19jYXN0PHVpbnQxNl90PihJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlUHJveHlfU2V0TmV0d29y
a1JlcXVlc3RzSW5Qcm9ncmVzcykpOwogICAgIH0pOwogCiAgICAgcmV0dXJuIG1lc3NhZ2VOYW1l
czsKQEAgLTI1NCw4ICsyNTMsOCBAQCB2b2lkIFN1c3BlbmRlZFBhZ2VQcm94eTo6ZGlkUmVjZWl2
ZU1lc3NhCiAgICAgfQogCiAjaWYgIUxPR19ESVNBQkxFRAotICAgIGlmICghbWVzc2FnZU5hbWVz
VG9JZ25vcmVXaGlsZVN1c3BlbmRlZCgpLmNvbnRhaW5zKGRlY29kZXIubWVzc2FnZU5hbWUoKSkp
Ci0gICAgICAgIExPRyhQcm9jZXNzU3dhcHBpbmcsICJTdXNwZW5kZWRQYWdlUHJveHkgcmVjZWl2
ZWQgdW5leHBlY3RlZCBXZWJQYWdlUHJveHkgbWVzc2FnZSAnJXMnIiwgZGVjb2Rlci5tZXNzYWdl
TmFtZSgpLnRvU3RyaW5nKCkuZGF0YSgpKTsKKyAgICBpZiAoIW1lc3NhZ2VOYW1lc1RvSWdub3Jl
V2hpbGVTdXNwZW5kZWQoKS5jb250YWlucyhzdGF0aWNfY2FzdDx1aW50MTZfdD4oZGVjb2Rlci5t
ZXNzYWdlTmFtZSgpKSkpCisgICAgICAgIExPRyhQcm9jZXNzU3dhcHBpbmcsICJTdXNwZW5kZWRQ
YWdlUHJveHkgcmVjZWl2ZWQgdW5leHBlY3RlZCBXZWJQYWdlUHJveHkgbWVzc2FnZSAnJXMnIiwg
ZGVzY3JpcHRpb24oZGVjb2Rlci5tZXNzYWdlTmFtZSgpKSk7CiAjZW5kaWYKIH0KIApJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJldmlzaW9uIDI2MDkzNSkKKysr
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yMjc3LDggKzIyNzcsNiBAQCBwcml2YXRlOgogICAgIGNvbnN0IFN0cmluZyYgcGF5bWVudENv
b3JkaW5hdG9yQm91bmRJbnRlcmZhY2VJZGVudGlmaWVyKGNvbnN0IFdlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5JikgZmluYWw7CiAgICAgY29uc3QgU3RyaW5nJiBwYXltZW50Q29vcmRpbmF0b3JT
b3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoY29uc3QgV2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHkmKSBmaW5hbDsKICAgICBjb25zdCBTdHJpbmcmIHBheW1lbnRDb29yZGluYXRvclNv
dXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllcihjb25zdCBXZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eSYpIGZpbmFsOwotICAgIHZvaWQgcGF5bWVudENvb3JkaW5hdG9yQWRkTWVzc2Fn
ZVJlY2VpdmVyKFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JiwgY29uc3QgSVBDOjpTdHJpbmdS
ZWZlcmVuY2UmLCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYpIGZpbmFsOwotICAgIHZvaWQgcGF5bWVu
dENvb3JkaW5hdG9yUmVtb3ZlTWVzc2FnZVJlY2VpdmVyKFdlYlBheW1lbnRDb29yZGluYXRvclBy
b3h5JiwgY29uc3QgSVBDOjpTdHJpbmdSZWZlcmVuY2UmKSBmaW5hbDsKICNlbmRpZgogI2lmIEVO
QUJMRShBUFBMRV9QQVkpICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgVUlWaWV3Q29udHJv
bGxlciAqcGF5bWVudENvb3JkaW5hdG9yUHJlc2VudGluZ1ZpZXdDb250cm9sbGVyKGNvbnN0IFdl
YlBheW1lbnRDb29yZGluYXRvclByb3h5JikgZmluYWw7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCShyZXZpc2lvbiAyNjA5MzUpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg1
MiwxNyArODUyLDEyIEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldEludmFsaWRNZXNzYWdlQ2EK
ICAgICBzX2ludmFsaWRNZXNzYWdlQ2FsbGJhY2sgPSBpbnZhbGlkTWVzc2FnZUNhbGxiYWNrOwog
fQogCi12b2lkIFdlYlByb2Nlc3NQb29sOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoY29uc3Qg
SVBDOjpTdHJpbmdSZWZlcmVuY2UmIG1lc3NhZ2VSZWNlaXZlck5hbWUsIGNvbnN0IElQQzo6U3Ry
aW5nUmVmZXJlbmNlJiBtZXNzYWdlTmFtZSkKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmRpZFJlY2Vp
dmVJbnZhbGlkTWVzc2FnZShJUEM6Ok1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lKQogewogICAgIGlm
ICghc19pbnZhbGlkTWVzc2FnZUNhbGxiYWNrKQogICAgICAgICByZXR1cm47CiAKLSAgICBTdHJp
bmdCdWlsZGVyIG1lc3NhZ2VOYW1lU3RyaW5nQnVpbGRlcjsKLSAgICBtZXNzYWdlTmFtZVN0cmlu
Z0J1aWxkZXIuYXBwZW5kQ2hhcmFjdGVycyhtZXNzYWdlUmVjZWl2ZXJOYW1lLmRhdGEoKSwgbWVz
c2FnZVJlY2VpdmVyTmFtZS5zaXplKCkpOwotICAgIG1lc3NhZ2VOYW1lU3RyaW5nQnVpbGRlci5h
cHBlbmQoJy4nKTsKLSAgICBtZXNzYWdlTmFtZVN0cmluZ0J1aWxkZXIuYXBwZW5kQ2hhcmFjdGVy
cyhtZXNzYWdlTmFtZS5kYXRhKCksIG1lc3NhZ2VOYW1lLnNpemUoKSk7Ci0KLSAgICBzX2ludmFs
aWRNZXNzYWdlQ2FsbGJhY2sodG9BUEkoQVBJOjpTdHJpbmc6OmNyZWF0ZShtZXNzYWdlTmFtZVN0
cmluZ0J1aWxkZXIudG9TdHJpbmcoKSkucHRyKCkpKTsKKyAgICBzX2ludmFsaWRNZXNzYWdlQ2Fs
bGJhY2sodG9BUEkoQVBJOjpTdHJpbmc6OmNyZWF0ZShkZXNjcmlwdGlvbihtZXNzYWdlTmFtZSkp
LnB0cigpKSk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlc29sdmVQYXRoc0ZvclNhbmRi
b3hFeHRlbnNpb25zKCkKQEAgLTE2ODEsMjIgKzE2NzYsMjIgQEAgdm9pZCBXZWJQcm9jZXNzUG9v
bDo6c3ludGhlc2l6ZUFwcElzQmFjawogICAgIGVuc3VyZU5ldHdvcmtQcm9jZXNzKCkuc3ludGhl
c2l6ZUFwcElzQmFja2dyb3VuZChiYWNrZ3JvdW5kKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzUG9v
bDo6YWRkTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZl
ck5hbWUsIElQQzo6TWVzc2FnZVJlY2VpdmVyJiBtZXNzYWdlUmVjZWl2ZXIpCit2b2lkIFdlYlBy
b2Nlc3NQb29sOjphZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpSZWNlaXZlck5hbWUgbWVzc2FnZVJl
Y2VpdmVyTmFtZSwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImIG1lc3NhZ2VSZWNlaXZlcikKIHsKICAg
ICBtX21lc3NhZ2VSZWNlaXZlck1hcC5hZGRNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVy
TmFtZSwgbWVzc2FnZVJlY2VpdmVyKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzUG9vbDo6YWRkTWVz
c2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVp
bnQ2NF90IGRlc3RpbmF0aW9uSUQsIElQQzo6TWVzc2FnZVJlY2VpdmVyJiBtZXNzYWdlUmVjZWl2
ZXIpCit2b2lkIFdlYlByb2Nlc3NQb29sOjphZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpSZWNlaXZl
ck5hbWUgbWVzc2FnZVJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgSVBDOjpN
ZXNzYWdlUmVjZWl2ZXImIG1lc3NhZ2VSZWNlaXZlcikKIHsKICAgICBtX21lc3NhZ2VSZWNlaXZl
ck1hcC5hZGRNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25J
RCwgbWVzc2FnZVJlY2VpdmVyKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVtb3ZlTWVz
c2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUpCit2
b2lkIFdlYlByb2Nlc3NQb29sOjpyZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpSZWNlaXZlck5h
bWUgbWVzc2FnZVJlY2VpdmVyTmFtZSkKIHsKICAgICBtX21lc3NhZ2VSZWNlaXZlck1hcC5yZW1v
dmVNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSk7CiB9CiAKLXZvaWQgV2ViUHJv
Y2Vzc1Bvb2w6OnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNz
YWdlUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKQordm9pZCBXZWJQcm9jZXNz
UG9vbDo6cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6UmVjZWl2ZXJOYW1lIG1lc3NhZ2VSZWNl
aXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpCiB7CiAgICAgbV9tZXNzYWdlUmVjZWl2
ZXJNYXAucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKG1lc3NhZ2VSZWNlaXZlck5hbWUsIGRlc3RpbmF0
aW9uSUQpOwogfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5o
CShyZXZpc2lvbiAyNjA5MzUpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDgsMjEgKzE0OCwyMSBAQCBwdWJsaWM6CiAgICAg
ICAgIG1fc3VwcGxlbWVudHMuYWRkKFQ6OnN1cHBsZW1lbnROYW1lKCksIFQ6OmNyZWF0ZSh0aGlz
KSk7CiAgICAgfQogCi0gICAgdm9pZCBhZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZl
cmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImKTsKLSAgICB2
b2lkIGFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2
ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYpOwot
ICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3Nh
Z2VSZWNlaXZlck5hbWUpOwotICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6U3Ry
aW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQp
OworICAgIHZvaWQgYWRkTWVzc2FnZVJlY2VpdmVyKElQQzo6UmVjZWl2ZXJOYW1lLCBJUEM6Ok1l
c3NhZ2VSZWNlaXZlciYpOworICAgIHZvaWQgYWRkTWVzc2FnZVJlY2VpdmVyKElQQzo6UmVjZWl2
ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYpOwor
ICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6UmVjZWl2ZXJOYW1lKTsKKyAgICB2
b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVz
dGluYXRpb25JRCk7CiAKICAgICBXZWJCYWNrRm9yd2FyZENhY2hlJiBiYWNrRm9yd2FyZENhY2hl
KCkgeyByZXR1cm4gbV9iYWNrRm9yd2FyZENhY2hlLmdldCgpOyB9CiAgICAgCiAgICAgdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+Ci0gICAgdm9pZCBhZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdS
ZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgT2JqZWN0SWRlbnRpZmllcjxUPiBkZXN0aW5h
dGlvbklELCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYgcmVjZWl2ZXIpCisgICAgdm9pZCBhZGRNZXNz
YWdlUmVjZWl2ZXIoSVBDOjpSZWNlaXZlck5hbWUgbWVzc2FnZVJlY2VpdmVyTmFtZSwgT2JqZWN0
SWRlbnRpZmllcjxUPiBkZXN0aW5hdGlvbklELCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYgcmVjZWl2
ZXIpCiAgICAgewogICAgICAgICBhZGRNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFt
ZSwgZGVzdGluYXRpb25JRC50b1VJbnQ2NCgpLCByZWNlaXZlcik7CiAgICAgfQogICAgIAogICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQ
Qzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIE9iamVjdElkZW50aWZpZXI8
VD4gZGVzdGluYXRpb25JRCkKKyAgICB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlJl
Y2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBPYmplY3RJZGVudGlmaWVyPFQ+IGRlc3Rp
bmF0aW9uSUQpCiAgICAgewogICAgICAgICByZW1vdmVNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJl
Y2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRC50b1VJbnQ2NCgpKTsKICAgICB9CkBAIC00MTgsNyAr
NDE4LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICBzdGF0aWMgdm9pZCBzZXRJbnZhbGlkTWVz
c2FnZUNhbGxiYWNrKHZvaWQgKCopKFdLU3RyaW5nUmVmKSk7Ci0gICAgc3RhdGljIHZvaWQgZGlk
UmVjZWl2ZUludmFsaWRNZXNzYWdlKGNvbnN0IElQQzo6U3RyaW5nUmVmZXJlbmNlJiBtZXNzYWdl
UmVjZWl2ZXJOYW1lLCBjb25zdCBJUEM6OlN0cmluZ1JlZmVyZW5jZSYgbWVzc2FnZU5hbWUpOwor
ICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6Ok1lc3NhZ2VOYW1l
KTsKIAogICAgIGJvb2wgaXNVUkxLbm93bkhTVFNIb3N0KGNvbnN0IFN0cmluZyYgdXJsU3RyaW5n
KSBjb25zdDsKICAgICB2b2lkIHJlc2V0SFNUU0hvc3RzKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAJKHJldmlzaW9uIDI2MDkzNSkKKysrIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE2MSw4ICsxNjEsOCBAQCBjbGFzcyBVSVByb3h5Rm9yQ2FwdHVyZSBmaW5hbCA6IHB1Ymxp
YyBVCiBwdWJsaWM6CiAgICAgZXhwbGljaXQgVUlQcm94eUZvckNhcHR1cmUoV2ViUHJvY2Vzc1By
b3h5JiBwcm9jZXNzKSA6IG1fcHJvY2Vzcyhwcm9jZXNzKSB7IH0KIHByaXZhdGU6Ci0gICAgdm9p
ZCBhZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVy
TmFtZSwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImIHJlY2VpdmVyKSBmaW5hbCB7IG1fcHJvY2Vzcy5h
ZGRNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSwgcmVjZWl2ZXIpOyB9Ci0gICAg
dm9pZCByZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJl
Y2VpdmVyTmFtZSkgZmluYWwgeyBtX3Byb2Nlc3MucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKG1lc3Nh
Z2VSZWNlaXZlck5hbWUpOyB9CisgICAgdm9pZCBhZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpSZWNl
aXZlck5hbWUgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImIHJlY2Vp
dmVyKSBmaW5hbCB7IG1fcHJvY2Vzcy5hZGRNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVy
TmFtZSwgcmVjZWl2ZXIpOyB9CisgICAgdm9pZCByZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpS
ZWNlaXZlck5hbWUgbWVzc2FnZVJlY2VpdmVyTmFtZSkgZmluYWwgeyBtX3Byb2Nlc3MucmVtb3Zl
TWVzc2FnZVJlY2VpdmVyKG1lc3NhZ2VSZWNlaXZlck5hbWUpOyB9CiAgICAgSVBDOjpDb25uZWN0
aW9uJiBjb25uZWN0aW9uKCkgZmluYWwgeyByZXR1cm4gKm1fcHJvY2Vzcy5jb25uZWN0aW9uKCk7
IH0KICAgICBMb2dnZXImIGxvZ2dlcigpIGZpbmFsCiAgICAgewpAQCAtMzUyLDcgKzM1Miw3IEBA
IHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpwbGF0Zm9ybUdldExhdW5jaE8KIGJvb2wgV2ViUHJvY2Vz
c1Byb3h5OjpzaG91bGRTZW5kUGVuZGluZ01lc3NhZ2UoY29uc3QgUGVuZGluZ01lc3NhZ2UmIG1l
c3NhZ2UpCiB7CiAjaWYgSEFWRShTQU5EQk9YX0lTU1VFX1JFQURfRVhURU5TSU9OX1RPX1BST0NF
U1NfQllfQVVESVRfVE9LRU4pCi0gICAgaWYgKG1lc3NhZ2UuZW5jb2Rlci0+bWVzc2FnZU5hbWUo
KSA9PSAiTG9hZFJlcXVlc3RXYWl0aW5nRm9yUHJvY2Vzc0xhdW5jaCIpIHsKKyAgICBpZiAobWVz
c2FnZS5lbmNvZGVyLT5tZXNzYWdlTmFtZSgpID09IElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2Vf
TG9hZFJlcXVlc3RXYWl0aW5nRm9yUHJvY2Vzc0xhdW5jaCkgewogICAgICAgICBhdXRvIGJ1ZmZl
ciA9IG1lc3NhZ2UuZW5jb2Rlci0+YnVmZmVyKCk7CiAgICAgICAgIGF1dG8gYnVmZmVyU2l6ZSA9
IG1lc3NhZ2UuZW5jb2Rlci0+YnVmZmVyU2l6ZSgpOwogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8
SVBDOjpEZWNvZGVyPiBkZWNvZGVyID0gbWFrZVVuaXF1ZTxJUEM6OkRlY29kZXI+KGJ1ZmZlciwg
YnVmZmVyU2l6ZSwgbnVsbHB0ciwgVmVjdG9yPElQQzo6QXR0YWNobWVudD4geyB9KTsKQEAgLTgz
OSwxMSArODM5LDExIEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzRGlkVGVybWluYXQK
ICAgICB9CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRSZWNlaXZlSW52YWxpZE1lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNz
YWdlUmVjZWl2ZXJOYW1lLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZSkKK3ZvaWQg
V2ViUHJvY2Vzc1Byb3h5OjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiBjb25uZWN0aW9uLCBJUEM6Ok1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lKQogewotICAgIGxvZ0lu
dmFsaWRNZXNzYWdlKGNvbm5lY3Rpb24sIG1lc3NhZ2VSZWNlaXZlck5hbWUsIG1lc3NhZ2VOYW1l
KTsKKyAgICBsb2dJbnZhbGlkTWVzc2FnZShjb25uZWN0aW9uLCBtZXNzYWdlTmFtZSk7CiAKLSAg
ICBXZWJQcm9jZXNzUG9vbDo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKG1lc3NhZ2VSZWNlaXZl
ck5hbWUsIG1lc3NhZ2VOYW1lKTsKKyAgICBXZWJQcm9jZXNzUG9vbDo6ZGlkUmVjZWl2ZUludmFs
aWRNZXNzYWdlKG1lc3NhZ2VOYW1lKTsKIAogICAgIC8vIFRlcm1pbmF0ZSB0aGUgV2ViQ29udGVu
dCBwcm9jZXNzLgogICAgIHRlcm1pbmF0ZSgpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Byb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Byb3h5LmgJKHJldmlzaW9uIDI2MDkzNSkKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NTMsNyArNDUz
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6
OkVuY29kZXI+Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24m
KSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6OlN0
cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZl
SW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlTmFtZSkgb3ZlcnJp
ZGU7CiAKICAgICAvLyBSZXNwb25zaXZlbmVzc1RpbWVyOjpDbGllbnQKICAgICB2b2lkIGRpZEJl
Y29tZVVucmVzcG9uc2l2ZSgpIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHku
aAkocmV2aXNpb24gMjYwOTM1KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVXNl
ck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw4ICs1MSw4
IEBAIHB1YmxpYzoKICAgICBjbGFzcyBDb25uZWN0aW9uUHJveHkgewogICAgIHB1YmxpYzoKICAg
ICAgICAgdmlydHVhbCB+Q29ubmVjdGlvblByb3h5KCkgPSBkZWZhdWx0OwotICAgICAgICB2aXJ0
dWFsIHZvaWQgYWRkTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlLCBJUEM6Ok1l
c3NhZ2VSZWNlaXZlciYpID0gMDsKLSAgICAgICAgdmlydHVhbCB2b2lkIHJlbW92ZU1lc3NhZ2VS
ZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSkgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQg
YWRkTWVzc2FnZVJlY2VpdmVyKElQQzo6UmVjZWl2ZXJOYW1lLCBJUEM6Ok1lc3NhZ2VSZWNlaXZl
ciYpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihJUEM6
OlJlY2VpdmVyTmFtZSkgPSAwOwogICAgICAgICB2aXJ0dWFsIElQQzo6Q29ubmVjdGlvbiYgY29u
bmVjdGlvbigpID0gMDsKICAgICAgICAgdmlydHVhbCBib29sIHdpbGxTdGFydENhcHR1cmUoV2Vi
Q29yZTo6Q2FwdHVyZURldmljZTo6RGV2aWNlVHlwZSkgY29uc3QgPSAwOwogICAgICAgICB2aXJ0
dWFsIExvZ2dlciYgbG9nZ2VyKCkgPSAwOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0JKHJldmlzaW9uIDI2MDkzNSkKKysr
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOTAsMTYgKzI5MCw2IEBAIGNvbnN0IFN0cmluZyYgV2ViUGFnZVByb3h5
OjpwYXltZW50Q29vcmQKICAgICByZXR1cm4gd2Vic2l0ZURhdGFTdG9yZSgpLmNvbmZpZ3VyYXRp
b24oKS5zb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIoKTsKIH0KIAotdm9pZCBX
ZWJQYWdlUHJveHk6OnBheW1lbnRDb29yZGluYXRvckFkZE1lc3NhZ2VSZWNlaXZlcihXZWJQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eSYsIGNvbnN0IElQQzo6U3RyaW5nUmVmZXJlbmNlJiBtZXNzYWdl
UmVjZWl2ZXJOYW1lLCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYgbWVzc2FnZVJlY2VpdmVyKQotewot
ICAgIHByb2Nlc3MoKS5hZGRNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSwgbV93
ZWJQYWdlSUQsIG1lc3NhZ2VSZWNlaXZlcik7Ci19Ci0KLXZvaWQgV2ViUGFnZVByb3h5OjpwYXlt
ZW50Q29vcmRpbmF0b3JSZW1vdmVNZXNzYWdlUmVjZWl2ZXIoV2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHkmLCBjb25zdCBJUEM6OlN0cmluZ1JlZmVyZW5jZSYgbWVzc2FnZVJlY2VpdmVyTmFtZSkK
LXsKLSAgICBwcm9jZXNzKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKG1lc3NhZ2VSZWNlaXZlck5h
bWUsIG1fd2ViUGFnZUlEKTsKLX0KLQogI2VuZGlmCiAKICNpZiBFTkFCTEUoU1BFRUNIX1NZTlRI
RVNJUykKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHku
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNz
UHJveHkuY3BwCShyZXZpc2lvbiAyNjA5MzUpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9H
UFUvR1BVUHJvY2Vzc1Byb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjExLDExICsyMTEsMTEg
QEAgdm9pZCBHUFVQcm9jZXNzUHJveHk6OmRpZENsb3NlKElQQzo6Q29ubgogICAgIGdwdVByb2Nl
c3NDcmFzaGVkKCk7CiB9CiAKLXZvaWQgR1BVUHJvY2Vzc1Byb3h5OjpkaWRSZWNlaXZlSW52YWxp
ZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OlN0cmluZ1JlZmVyZW5j
ZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZSkK
K3ZvaWQgR1BVUHJvY2Vzc1Byb3h5OjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6Ok1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lKQogewotICAg
IGxvZ0ludmFsaWRNZXNzYWdlKGNvbm5lY3Rpb24sIG1lc3NhZ2VSZWNlaXZlck5hbWUsIG1lc3Nh
Z2VOYW1lKTsKKyAgICBsb2dJbnZhbGlkTWVzc2FnZShjb25uZWN0aW9uLCBtZXNzYWdlTmFtZSk7
CiAKLSAgICBXZWJQcm9jZXNzUG9vbDo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKG1lc3NhZ2VS
ZWNlaXZlck5hbWUsIG1lc3NhZ2VOYW1lKTsKKyAgICBXZWJQcm9jZXNzUG9vbDo6ZGlkUmVjZWl2
ZUludmFsaWRNZXNzYWdlKG1lc3NhZ2VOYW1lKTsKIAogICAgIC8vIFRlcm1pbmF0ZSB0aGUgR1BV
IHByb2Nlc3MuCiAgICAgdGVybWluYXRlKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5oCShyZXZpc2lvbiAyNjA5MzUpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmgJKHdvcmtpbmcgY29weSkKQEAg
LTEwMCw3ICsxMDAsNyBAQCBwcml2YXRlOgogICAgIC8vIElQQzo6Q29ubmVjdGlvbjo6Q2xpZW50
CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29k
ZXImKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYpIG92ZXJy
aWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYs
IElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIElQQzo6U3RyaW5nUmVm
ZXJlbmNlIG1lc3NhZ2VOYW1lKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVJbnZhbGlk
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VOYW1lKSBvdmVycmlkZTsKIAog
I2lmIEhBVkUoVklTSUJJTElUWV9QUk9QQUdBVElPTl9WSUVXKQogICAgIHZvaWQgZGlkQ3JlYXRl
Q29udGV4dEZvclZpc2liaWxpdHlQcm9wYWdhdGlvbihMYXllckhvc3RpbmdDb250ZXh0SUQpOwpJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuY3BwCShyZXZpc2lvbiAyNjA5MzUpCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yNzUsOSArMjc1LDkgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRDbG9zZShJUEM6
OgogICAgIG5ldHdvcmtQcm9jZXNzQ3Jhc2hlZCgpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNz
UHJveHk6OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rp
b24sIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIElQQzo6U3RyaW5n
UmVmZXJlbmNlIG1lc3NhZ2VOYW1lKQordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRSZWNl
aXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6Ok1lc3Nh
Z2VOYW1lIG1lc3NhZ2VOYW1lKQogewotICAgIGxvZ0ludmFsaWRNZXNzYWdlKGNvbm5lY3Rpb24s
IG1lc3NhZ2VSZWNlaXZlck5hbWUsIG1lc3NhZ2VOYW1lKTsKKyAgICBsb2dJbnZhbGlkTWVzc2Fn
ZShjb25uZWN0aW9uLCBtZXNzYWdlTmFtZSk7CiAgICAgdGVybWluYXRlKCk7CiB9CiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NQcm94eS5oCShyZXZpc2lvbiAyNjA5MzUpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMjQ0LDcgKzI0
NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBD
OjpFbmNvZGVyPiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9u
Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpT
dHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2
ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZU5hbWUpIG92ZXJy
aWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNOZXR3b3JrUHJvY2Vzc1Byb3h5TWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNv
ZGVyPiYpOwogCiAgICAgLy8gTWVzc2FnZSBoYW5kbGVycwpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmNwcAkocmV2
aXNpb24gMjYwOTM1KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Q
cm9jZXNzUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTQsOSArMjE0LDkgQEAgdm9pZCBQ
bHVnaW5Qcm9jZXNzUHJveHk6OmRpZENsb3NlKElQQzo6QwogICAgIHBsdWdpblByb2Nlc3NDcmFz
aGVkT3JGYWlsZWRUb0xhdW5jaCgpOwogfQogCi12b2lkIFBsdWdpblByb2Nlc3NQcm94eTo6ZGlk
UmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpT
dHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpTdHJpbmdSZWZlcmVuY2Ug
bWVzc2FnZU5hbWUpCit2b2lkIFBsdWdpblByb2Nlc3NQcm94eTo6ZGlkUmVjZWl2ZUludmFsaWRN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpNZXNzYWdlTmFtZSBtZXNz
YWdlTmFtZSkKIHsKLSAgICBsb2dJbnZhbGlkTWVzc2FnZShjb25uZWN0aW9uLCBtZXNzYWdlUmVj
ZWl2ZXJOYW1lLCBtZXNzYWdlTmFtZSk7CisgICAgbG9nSW52YWxpZE1lc3NhZ2UoY29ubmVjdGlv
biwgbWVzc2FnZU5hbWUpOwogICAgIHRlcm1pbmF0ZSgpOwogfQogCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmgJKHJl
dmlzaW9uIDI2MDkzNSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
UHJvY2Vzc1Byb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNCw3ICsxMDQsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6
RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jikgb3ZlcnJpZGU7CiAKICAg
ICB2b2lkIGRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlk
UmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6U3RyaW5nUmVmZXJl
bmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1l
KSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mLCBJUEM6Ok1lc3NhZ2VOYW1lKSBvdmVycmlkZTsKIAogICAgIC8vIFByb2Nlc3NMYXVu
Y2hlcjo6Q2xpZW50CiAgICAgdm9pZCBkaWRGaW5pc2hMYXVuY2hpbmcoUHJvY2Vzc0xhdW5jaGVy
KiwgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDI2MDkzNSkKKysrIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzg1
LDcgKzc4NSw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjoKICAg
ICB9CiAjZW5kaWYKIAotICAgIExPR19FUlJPUigiVW5oYW5kbGVkIHdlYiBwcm9jZXNzIG1lc3Nh
Z2UgJyVzOjolcycgKGRlc3RpbmF0aW9uOiAlIiBQUkl1NjQgIiBwaWQ6ICVkKSIsIGRlY29kZXIu
bWVzc2FnZVJlY2VpdmVyTmFtZSgpLnRvU3RyaW5nKCkuZGF0YSgpLCBkZWNvZGVyLm1lc3NhZ2VO
YW1lKCkudG9TdHJpbmcoKS5kYXRhKCksIGRlY29kZXIuZGVzdGluYXRpb25JRCgpLCBzdGF0aWNf
Y2FzdDxpbnQ+KGdldEN1cnJlbnRQcm9jZXNzSUQoKSkpOworICAgIExPR19FUlJPUigiVW5oYW5k
bGVkIHdlYiBwcm9jZXNzIG1lc3NhZ2UgJyVzJyAoZGVzdGluYXRpb246ICUiIFBSSXU2NCAiIHBp
ZDogJWQpIiwgZGVzY3JpcHRpb24oZGVjb2Rlci5tZXNzYWdlTmFtZSgpKSwgZGVjb2Rlci5kZXN0
aW5hdGlvbklEKCksIHN0YXRpY19jYXN0PGludD4oZ2V0Q3VycmVudFByb2Nlc3NJRCgpKSk7CiB9
CiAKIFdlYkZyYW1lKiBXZWJQcm9jZXNzOjp3ZWJGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJ
RCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nv
bm5lY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
R1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCShyZXZpc2lvbiAyNjA5MzUpCisrKyBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNzMsNyArNzMsNyBAQCB2b2lkIEdQVVByb2Nlc3NDb25uZWN0aW9uOjpkaWRDbG9zZShJ
UEM6CiB7CiB9CiAKLXZvaWQgR1BVUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVJbnZhbGlk
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSwgSVBDOjpTdHJp
bmdSZWZlcmVuY2UpCit2b2lkIEdQVVByb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlSW52YWxp
ZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlTmFtZSkKIHsKIH0KIApJbmRl
eDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5l
Y3Rpb24uaAkocmV2aXNpb24gMjYwOTM1KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC04MCw3ICs4MCw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mKSBvdmVycmlkZTsK
ICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2Rl
ciYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JikgZmluYWw7
Ci0gICAgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBD
OjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpTdHJpbmdSZWZlcmVu
Y2UgbWVzc2FnZU5hbWUpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZU5hbWUpIG92ZXJyaWRlOwogCiAgICAg
Ym9vbCBkaXNwYXRjaE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CiAg
ICAgYm9vbCBkaXNwYXRjaFN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2Rl
ciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jik7CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3Rvci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yLmgJKHJldmlzaW9uIDI2
MDkzNSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9y
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogCiAgICAgLy8gSVBD
OjpDb25uZWN0aW9uOjpDbGllbnQKICAgICB2b2lkIGRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYp
IG92ZXJyaWRlIHsgY2xvc2UoKTsgfQotICAgIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYsIElQQzo6U3RyaW5nUmVmZXJlbmNlLCBJUEM6OlN0cmluZ1JlZmVy
ZW5jZSkgb3ZlcnJpZGUgeyBjbG9zZSgpOyB9CisgICAgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlTmFtZSkgb3ZlcnJpZGUgeyBjbG9z
ZSgpOyB9CiAKICAgICB2b2lkIHNob3coKTsKICAgICB2b2lkIGNsb3NlKCk7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSS5o
CShyZXZpc2lvbiAyNjA5MzUpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9y
L1dlYkluc3BlY3RvclVJLmgJKHdvcmtpbmcgY29weSkKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGlj
OgogCiAgICAgLy8gSVBDOjpDb25uZWN0aW9uOjpDbGllbnQKICAgICB2b2lkIGRpZENsb3NlKElQ
Qzo6Q29ubmVjdGlvbiYpIG92ZXJyaWRlIHsgLyogRG8gbm90aGluZywgdGhlIGluc3BlY3RlZCBw
YWdlIHByb2Nlc3MgbWF5IGhhdmUgY3Jhc2hlZCBhbmQgbWF5IGJlIGdldHRpbmcgcmVwbGFjZWQu
ICovIH0KLSAgICB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
LCBJUEM6OlN0cmluZ1JlZmVyZW5jZSwgSVBDOjpTdHJpbmdSZWZlcmVuY2UpIG92ZXJyaWRlIHsg
Y2xvc2VXaW5kb3coKTsgfQorICAgIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZU5hbWUpIG92ZXJyaWRlIHsgY2xvc2VXaW5kb3coKTsg
fQogCiAgICAgLy8gQ2FsbGVkIGJ5IFdlYkluc3BlY3RvclVJIG1lc3NhZ2VzCiAgICAgdm9pZCBl
c3RhYmxpc2hDb25uZWN0aW9uKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgaW5zcGVjdGVkUGFnZUlk
ZW50aWZpZXIsIGNvbnN0IERlYnVnZ2FibGVJbmZvRGF0YSYsIGJvb2wgdW5kZXJUZXN0LCB1bnNp
Z25lZCBpbnNwZWN0aW9uTGV2ZWwpOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCShy
ZXZpc2lvbiAyNjA5MzUpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTksNyArMjE5LDcg
QEAgdm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZENsb3NlKAogI2VuZGlmCiB9CiAK
LXZvaWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiwgSVBDOjpTdHJpbmdSZWZlcmVuY2UsIElQQzo6U3RyaW5nUmVmZXJl
bmNlKQordm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVJbnZhbGlkTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VOYW1lKQogewogfQogCkluZGV4OiBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb24uaAkocmV2aXNpb24gMjYwOTM1KQorKysgU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTk4LDcgKzk4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlk
UmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6
dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRDbG9zZShJ
UEM6OkNvbm5lY3Rpb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2
ZXJOYW1lLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZSkgb3ZlcnJpZGU7CisgICAg
dm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNz
YWdlTmFtZSkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRpZEZpbmlzaFBpbmdMb2FkKHVpbnQ2NF90
IHBpbmdMb2FkSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmLCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiYpOwogICAgIHZvaWQgZGlkRmluaXNoUHJlY29ubmVjdGlvbih1aW50
NjRfdCBwcmVjb25uZWN0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmKTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25u
ZWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi5jcHAJKHJldmlzaW9uIDI2MDkzNSkKKysrIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTI4LDcgKzEyOCw3IEBAIHZvaWQgUGx1Z2luUHJvY2Vzc0Nvbm5l
Y3Rpb246OmRpZENsb3NlKEkKICAgICB9CiB9CiAKLXZvaWQgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rp
b246OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OlN0cmlu
Z1JlZmVyZW5jZSwgSVBDOjpTdHJpbmdSZWZlcmVuY2UpCit2b2lkIFBsdWdpblByb2Nlc3NDb25u
ZWN0aW9uOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpN
ZXNzYWdlTmFtZSkKIHsKIH0KIApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi5oCShyZXZpc2lvbiAy
NjA5MzUpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNz
Q29ubmVjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC02Niw3ICs2Niw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXIm
KSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIG92ZXJy
aWRlOwogICAgIHZvaWQgZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpTdHJp
bmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVz
c2FnZU5hbWUpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZU5hbWUpIG92ZXJyaWRlOwogCiAgICAgLy8gTWVz
c2FnZSBoYW5kbGVycy4KICAgICB2b2lkIGRpZFJlY2VpdmVTeW5jUGx1Z2luUHJvY2Vzc0Nvbm5l
Y3Rpb25NZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVl
X3B0cjxJUEM6OkVuY29kZXI+Jik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVl
L1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tCShyZXZpc2lvbiAyNjA5MzUpCisrKyBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWEubW0JKHdvcmtpbmcgY29weSkKQEAgLTM4NSw3ICszODUsNyBAQCB2b2lk
IFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjp1cGRhdGVSCiAgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6V2lsbENvbW1pdExheWVyVHJlZShsYXll
clRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSUQoKSkpOwogCiAgICAgTWVzc2FnZXM6OlJlbW90ZUxh
eWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OkNvbW1pdExheWVyVHJlZSBtZXNzYWdlKGxheWVyVHJh
bnNhY3Rpb24sIHNjcm9sbGluZ1RyYW5zYWN0aW9uKTsKLSAgICBhdXRvIGNvbW1pdEVuY29kZXIg
PSBtYWtlVW5pcXVlPElQQzo6RW5jb2Rlcj4oTWVzc2FnZXM6OlJlbW90ZUxheWVyVHJlZURyYXdp
bmdBcmVhUHJveHk6OkNvbW1pdExheWVyVHJlZTo6cmVjZWl2ZXJOYW1lKCksIE1lc3NhZ2VzOjpS
ZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5OjpDb21taXRMYXllclRyZWU6Om5hbWUoKSwg
bV9pZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgIGF1dG8gY29tbWl0RW5jb2RlciA9IG1ha2VV
bmlxdWU8SVBDOjpFbmNvZGVyPihNZXNzYWdlczo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQ
cm94eTo6Q29tbWl0TGF5ZXJUcmVlOjpuYW1lKCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsK
ICAgICBjb21taXRFbmNvZGVyLT5lbmNvZGUobWVzc2FnZS5hcmd1bWVudHMoKSk7CiAKICAgICAv
LyBGSVhNRTogTW92ZSBhbGwgYmFja2luZyBzdG9yZSBmbHVzaGluZyBtYW5hZ2VtZW50IHRvIFJl
bW90ZUxheWVyQmFja2luZ1N0b3JlQ29sbGVjdGlvbi4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398262</attachid>
            <date>2020-05-01 16:46:33 -0700</date>
            <delta_ts>2020-05-04 10:45:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211112-20200501164632.patch</filename>
            <type>text/plain</type>
            <size>312777</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNjEwMzMpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDIwLTA1LTAxICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVkdWNlIElQQyBvdmVyaGVhZCBm
b3IgbWVzc2FnZSByZWNlaXZlciBuYW1lIGFuZCBtZXNzYWdlIG5hbWUgdG8gMiBieXRlcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjExMTEyCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvRW51bVRy
YWl0cy5oOgorCiAyMDIwLTA1LTAxICBEb24gT2xtc3RlYWQgIDxkb24ub2xtc3RlYWRAc29ueS5j
b20+CiAKICAgICAgICAgW0dUS10gQWRkIGFkZGl0aW9uYWwgZXhwb3J0cyB0byBzdXBwb3J0IGhp
ZGRlbiB2aXNpYmlsaXR5CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9FbnVtVHJhaXRzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dURi93dGYvRW51bVRyYWl0cy5oCShyZXZpc2lvbiAyNjEwMzMpCisr
KyBTb3VyY2UvV1RGL3d0Zi9FbnVtVHJhaXRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUx
LDkgQEAgc3RydWN0IEVudW1WYWx1ZUNoZWNrZXI8VCwgRW51bVZhbHVlczxFPgogICAgIH0KIH07
CiAKLXRlbXBsYXRlPHR5cGVuYW1lIEUsIHR5cGVuYW1lIFQsIHN0ZDo6ZW5hYmxlX2lmX3Q8c3Rk
Ojppc19lbnVtPEU+Ojp2YWx1ZSAmJiAhc3RkOjppc19zYW1lPHN0ZDo6dW5kZXJseWluZ190eXBl
X3Q8RT4sIGJvb2w+Ojp2YWx1ZT4qID0gbnVsbHB0cj4KK3RlbXBsYXRlPHR5cGVuYW1lIFU+IGNs
YXNzIEhhc0N1c3RvbUlzVmFsaWRFbnVtIDogcHVibGljIHN0ZDo6ZmFsc2VfdHlwZSB7IH07CisK
K3RlbXBsYXRlPHR5cGVuYW1lIEUsIHR5cGVuYW1lIFQsIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjpp
c19lbnVtPEU+Ojp2YWx1ZSAmJiAhc3RkOjppc19zYW1lPHN0ZDo6dW5kZXJseWluZ190eXBlX3Q8
RT4sIGJvb2w+Ojp2YWx1ZSAmJiAhSGFzQ3VzdG9tSXNWYWxpZEVudW08RT46OnZhbHVlPiogPSBu
dWxscHRyPgogY29uc3RleHByIGJvb2wgaXNWYWxpZEVudW0oVCB0KQogewogICAgIHN0YXRpY19h
c3NlcnQoc2l6ZW9mKFQpID49IHN0ZDo6dW5kZXJseWluZ190eXBlX3Q8RT4oKSwgIkludGVncmFs
IHR5cGUgbXVzdCBiZSBhdCBsZWFzdCB0aGUgc2l6ZSBvZiB0aGUgdW5kZXJseWluZyBlbnVtIHR5
cGUiKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjEwMzMpCisrKyBTb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4NiBAQAorMjAyMC0wNS0wMSAgQWxl
eCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFJlZHVj
ZSBJUEMgb3ZlcmhlYWQgZm9yIG1lc3NhZ2UgcmVjZWl2ZXIgbmFtZSBhbmQgbWVzc2FnZSBuYW1l
IHRvIDIgYnl0ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxMTExMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZl
ZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpk
aWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UpOgorICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVTeW5jTWVzc2FnZSk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlSW52
YWxpZE1lc3NhZ2UpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2Up
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdl
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9pb3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3NJT1MubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpwYXltZW50Q29vcmRpbmF0b3JBZGRNZXNzYWdlUmVjZWl2ZXIpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cGF5bWVudENvb3Jk
aW5hdG9yUmVtb3ZlTWVzc2FnZVJlY2VpdmVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBQbGF0Zm9y
bS9JUEMvQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OldhaXRGb3JN
ZXNzYWdlU3RhdGU6OldhaXRGb3JNZXNzYWdlU3RhdGUpOgorICAgICAgICAoSVBDOjpDb25uZWN0
aW9uOjphZGRXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIpOgorICAgICAgICAoSVBDOjpDb25uZWN0
aW9uOjpyZW1vdmVXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIpOgorICAgICAgICAoSVBDOjpDb25u
ZWN0aW9uOjpkaXNwYXRjaFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlck1lc3NhZ2UpOgorICAgICAg
ICAoSVBDOjpDb25uZWN0aW9uOjphZGRUaHJlYWRNZXNzYWdlUmVjZWl2ZXIpOgorICAgICAgICAo
SVBDOjpDb25uZWN0aW9uOjpyZW1vdmVUaHJlYWRNZXNzYWdlUmVjZWl2ZXIpOgorICAgICAgICAo
SVBDOjpDb25uZWN0aW9uOjpkaXNwYXRjaFRocmVhZE1lc3NhZ2VSZWNlaXZlck1lc3NhZ2UpOgor
ICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVTeW5jTWVzc2FnZUVuY29kZXIpOgorICAg
ICAgICAoSVBDOjpDb25uZWN0aW9uOjpzZW5kTWVzc2FnZSk6CisgICAgICAgIChJUEM6OkNvbm5l
Y3Rpb246OndhaXRGb3JNZXNzYWdlKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6c2VuZFN5
bmNNZXNzYWdlKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6d2FpdEZvclN5bmNSZXBseSk6
CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnByb2Nlc3NJbmNvbWluZ01lc3NhZ2UpOgorICAg
ICAgICAoSVBDOjpDb25uZWN0aW9uOjpkaXNwYXRjaFN5bmNNZXNzYWdlKToKKyAgICAgICAgKElQ
Qzo6Q29ubmVjdGlvbjo6ZGlzcGF0Y2hEaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UpOgorICAgICAg
ICAoSVBDOjpDb25uZWN0aW9uOjpkaXNwYXRjaE1lc3NhZ2UpOgorICAgICAgICAoSVBDOjpDb25u
ZWN0aW9uOjpkaXNwYXRjaE1lc3NhZ2VUb1dvcmtRdWV1ZVJlY2VpdmVyKToKKyAgICAgICAgKElQ
Qzo6Q29ubmVjdGlvbjo6ZGlzcGF0Y2hNZXNzYWdlVG9UaHJlYWRSZWNlaXZlcik6CisgICAgICAg
IChJUEM6OkNvbm5lY3Rpb246OmRpc3BhdGNoSW5jb21pbmdNZXNzYWdlcyk6CisgICAgICAgICog
UGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6c2Vu
ZCk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnNlbmRXaXRoQXN5bmNSZXBseSk6CisgICAg
ICAgIChJUEM6OkNvbm5lY3Rpb246OnNlbmRTeW5jKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlv
bjo6d2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRlbHkpOgorICAgICAgICAqIFBsYXRmb3JtL0lQ
Qy9EZWNvZGVyLmNwcDoKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvRGVjb2Rlci5oOgorICAgICAg
ICAoSVBDOjpEZWNvZGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lIGNvbnN0KToKKyAgICAgICAgKElQ
Qzo6RGVjb2Rlcjo6bWVzc2FnZU5hbWUgY29uc3QpOgorICAgICAgICAoSVBDOjpEZWNvZGVyOjpk
ZWNvZGUpOgorICAgICAgICAoSVBDOjpEZWNvZGVyOjpvcGVyYXRvcj4+KToKKyAgICAgICAgKiBQ
bGF0Zm9ybS9JUEMvRW5jb2Rlci5jcHA6CisgICAgICAgIChJUEM6OkVuY29kZXI6OkVuY29kZXIp
OgorICAgICAgICAoSVBDOjpFbmNvZGVyOjplbmNvZGVIZWFkZXIpOgorICAgICAgICAqIFBsYXRm
b3JtL0lQQy9FbmNvZGVyLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2Uu
aDoKKyAgICAgICAgKElQQzo6aGFuZGxlTWVzc2FnZUFzeW5jKToKKyAgICAgICAgKiBQbGF0Zm9y
bS9JUEMvTWVzc2FnZVJlY2VpdmVyTWFwLmNwcDoKKyAgICAgICAgKElQQzo6TWVzc2FnZVJlY2Vp
dmVyTWFwOjphZGRNZXNzYWdlUmVjZWl2ZXIpOgorICAgICAgICAoSVBDOjpNZXNzYWdlUmVjZWl2
ZXJNYXA6OnJlbW92ZU1lc3NhZ2VSZWNlaXZlcik6CisgICAgICAgIChJUEM6Ok1lc3NhZ2VSZWNl
aXZlck1hcDo6ZGlzcGF0Y2hNZXNzYWdlKToKKyAgICAgICAgKElQQzo6TWVzc2FnZVJlY2VpdmVy
TWFwOjpkaXNwYXRjaFN5bmNNZXNzYWdlKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvTWVzc2Fn
ZVJlY2VpdmVyTWFwLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL01lc3NhZ2VTZW5kZXIuaDoK
KyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvY29jb2EvQ29ubmVjdGlvbkNvY29hLm1tOgorICAgICAg
ICAoSVBDOjpDb25uZWN0aW9uOjpvcGVuKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6c2Vu
ZE1lc3NhZ2UpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpzZW5kT3V0Z29pbmdNZXNzYWdl
KToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6cmVjZWl2ZVNvdXJjZUV2ZW50SGFuZGxlcik6
CisgICAgICAgICogUGxhdGZvcm0vSVBDL2NvY29hL01hY2hNZXNzYWdlLmNwcDoKKyAgICAgICAg
KElQQzo6TWFjaE1lc3NhZ2U6OmNyZWF0ZSk6CisgICAgICAgIChJUEM6Ok1hY2hNZXNzYWdlOjpN
YWNoTWVzc2FnZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL2NvY29hL01hY2hNZXNzYWdlLmg6
CisgICAgICAgIChJUEM6Ok1hY2hNZXNzYWdlOjptZXNzYWdlUmVjZWl2ZXJOYW1lIGNvbnN0KToK
KyAgICAgICAgKElQQzo6TWFjaE1lc3NhZ2U6Om1lc3NhZ2VOYW1lIGNvbnN0KToKKyAgICAgICAg
KiBQbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZSk6CisgICAg
ICAgICogUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5oOgorICAgICAgICAqIFNj
cmlwdHMvTWFrZWZpbGU6CisgICAgICAgICogU2NyaXB0cy9nZW5lcmF0ZS1tZXNzYWdlLXJlY2Vp
dmVyLnB5OgorICAgICAgICAobWFpbik6CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvTGVnYWN5
TWVzc2FnZXMtZXhwZWN0ZWQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9M
ZWdhY3lNZXNzYWdlc1JlcGxpZXMtZXhwZWN0ZWQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdC9NZXNzYWdlTmFtZXMuY3BwOiBBZGRlZC4KKyAgICAgICAgKElQQzo6ZGVzY3Jp
cHRpb24pOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L01lc3NhZ2VOYW1lcy5oOiBBZGRlZC4K
KyAgICAgICAgKElQQzo6cmVjZWl2ZXJOYW1lKToKKyAgICAgICAgKFdURjo6aXNWYWxpZEVudW0p
OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L01lc3NhZ2VSZWNlaXZlci1leHBlY3RlZC5jcHA6
IFJlbW92ZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXQvTWVzc2FnZVJlY2VpdmVyU3VwZXJj
bGFzcy1leHBlY3RlZC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXQvTWVz
c2FnZXMtZXhwZWN0ZWQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9NZXNz
YWdlc1JlcGxpZXMtZXhwZWN0ZWQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dC9NZXNzYWdlc1JlcGxpZXNTdXBlcmNsYXNzUmVwbGllcy1leHBlY3RlZC5oOiBSZW1vdmVkLgor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0L01lc3NhZ2VzU3VwZXJjbGFzcy1leHBlY3RlZC5oOiBS
ZW1vdmVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5OgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0L3Rlc3QtbGVnYWN5LW1lc3NhZ2VzLmluOiBSZW1vdmVkLgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0L3Rlc3QtbGVnYWN5Lm1lc3NhZ2VzLmluOiBDb3BpZWQgZnJvbSBT
b3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3QtbGVnYWN5LW1lc3NhZ2VzLmluLgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3QtbGVnYWN5TWVzc2FnZVJlY2VpdmVyLmNwcDogQWRk
ZWQuCisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rp
b246OnNlbmQpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RNdWx0aXBsZUF0dHJp
YnV0ZXM6OnNlbmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkaWRSZWNlaXZlV2ViUGFn
ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkaWRSZWNlaXZlU3luY1dlYlBh
Z2VNZXNzYWdlKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0LWxlZ2FjeU1lc3NhZ2Vz
Lmg6IEFkZGVkLgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6Om1lc3NhZ2VSZWNlaXZlck5h
bWUpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRVUkw6Om5hbWUpOgorICAgICAg
ICAoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRVUkw6OkxvYWRVUkwpOgorICAgICAgICAoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkxvYWRVUkw6OmFyZ3VtZW50cyBjb25zdCk6CisgICAgICAgIChNZXNzYWdl
czo6V2ViUGFnZTo6TG9hZFNvbWV0aGluZzo6bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6V2Vi
UGFnZTo6TG9hZFNvbWV0aGluZzo6TG9hZFNvbWV0aGluZyk6CisgICAgICAgIChNZXNzYWdlczo6
V2ViUGFnZTo6TG9hZFNvbWV0aGluZzo6YXJndW1lbnRzIGNvbnN0KToKKyAgICAgICAgKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpUb3VjaEV2ZW50OjpuYW1lKToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpUb3VjaEV2ZW50OjpUb3VjaEV2ZW50KToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdl
OjpUb3VjaEV2ZW50Ojphcmd1bWVudHMgY29uc3QpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBh
Z2U6OkFkZEV2ZW50OjpuYW1lKToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpBZGRFdmVu
dDo6QWRkRXZlbnQpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OkFkZEV2ZW50Ojphcmd1
bWVudHMgY29uc3QpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRTb21ldGhpbmdF
bHNlOjpuYW1lKToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkU29tZXRoaW5nRWxz
ZTo6TG9hZFNvbWV0aGluZ0Vsc2UpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRT
b21ldGhpbmdFbHNlOjphcmd1bWVudHMgY29uc3QpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBh
Z2U6OkRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbjo6bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6
V2ViUGFnZTo6RGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uOjpEaWRSZWNlaXZlUG9saWN5RGVjaXNp
b24pOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJlY2VpdmVQb2xpY3lEZWNpc2lv
bjo6YXJndW1lbnRzIGNvbnN0KToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpDbG9zZTo6
bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6Q2xvc2U6OmFyZ3VtZW50cyBjb25z
dCk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6UHJlZmVyZW5jZXNEaWRDaGFuZ2U6Om5h
bWUpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlByZWZlcmVuY2VzRGlkQ2hhbmdlOjpQ
cmVmZXJlbmNlc0RpZENoYW5nZSk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6UHJlZmVy
ZW5jZXNEaWRDaGFuZ2U6OmFyZ3VtZW50cyBjb25zdCk6CisgICAgICAgIChNZXNzYWdlczo6V2Vi
UGFnZTo6U2VuZERvdWJsZUFuZEZsb2F0OjpuYW1lKToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpTZW5kRG91YmxlQW5kRmxvYXQ6OlNlbmREb3VibGVBbmRGbG9hdCk6CisgICAgICAgIChN
ZXNzYWdlczo6V2ViUGFnZTo6U2VuZERvdWJsZUFuZEZsb2F0Ojphcmd1bWVudHMgY29uc3QpOgor
ICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlNlbmRJbnRzOjpuYW1lKToKKyAgICAgICAgKE1l
c3NhZ2VzOjpXZWJQYWdlOjpTZW5kSW50czo6U2VuZEludHMpOgorICAgICAgICAoTWVzc2FnZXM6
OldlYlBhZ2U6OlNlbmRJbnRzOjphcmd1bWVudHMgY29uc3QpOgorICAgICAgICAoTWVzc2FnZXM6
OldlYlBhZ2U6OkNyZWF0ZVBsdWdpbjo6bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFn
ZTo6Q3JlYXRlUGx1Z2luOjpDcmVhdGVQbHVnaW4pOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBh
Z2U6OkNyZWF0ZVBsdWdpbjo6YXJndW1lbnRzIGNvbnN0KToKKyAgICAgICAgKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpSdW5KYXZhU2NyaXB0QWxlcnQ6Om5hbWUpOgorICAgICAgICAoTWVzc2FnZXM6Oldl
YlBhZ2U6OlJ1bkphdmFTY3JpcHRBbGVydDo6UnVuSmF2YVNjcmlwdEFsZXJ0KToKKyAgICAgICAg
KE1lc3NhZ2VzOjpXZWJQYWdlOjpSdW5KYXZhU2NyaXB0QWxlcnQ6OmFyZ3VtZW50cyBjb25zdCk6
CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6R2V0UGx1Z2luczo6bmFtZSk6CisgICAgICAg
IChNZXNzYWdlczo6V2ViUGFnZTo6R2V0UGx1Z2luczo6R2V0UGx1Z2lucyk6CisgICAgICAgIChN
ZXNzYWdlczo6V2ViUGFnZTo6R2V0UGx1Z2luczo6YXJndW1lbnRzIGNvbnN0KToKKyAgICAgICAg
KE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6bmFtZSk6Cisg
ICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246Okdl
dFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpH
ZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6YXJndW1lbnRzIGNvbnN0KToKKyAgICAgICAgKE1l
c3NhZ2VzOjpXZWJQYWdlOjpUZXN0TXVsdGlwbGVBdHRyaWJ1dGVzOjpuYW1lKToKKyAgICAgICAg
KE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0TXVsdGlwbGVBdHRyaWJ1dGVzOjphcmd1bWVudHMgY29u
c3QpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RQYXJhbWV0ZXJBdHRyaWJ1dGVz
OjpuYW1lKToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0UGFyYW1ldGVyQXR0cmli
dXRlczo6VGVzdFBhcmFtZXRlckF0dHJpYnV0ZXMpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBh
Z2U6OlRlc3RQYXJhbWV0ZXJBdHRyaWJ1dGVzOjphcmd1bWVudHMgY29uc3QpOgorICAgICAgICAo
TWVzc2FnZXM6OldlYlBhZ2U6OlRlbXBsYXRlVGVzdDo6bmFtZSk6CisgICAgICAgIChNZXNzYWdl
czo6V2ViUGFnZTo6VGVtcGxhdGVUZXN0OjpUZW1wbGF0ZVRlc3QpOgorICAgICAgICAoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlRlbXBsYXRlVGVzdDo6YXJndW1lbnRzIGNvbnN0KToKKyAgICAgICAgKE1l
c3NhZ2VzOjpXZWJQYWdlOjpTZXRWaWRlb0xheWVySUQ6Om5hbWUpOgorICAgICAgICAoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlNldFZpZGVvTGF5ZXJJRDo6U2V0VmlkZW9MYXllcklEKToKKyAgICAgICAg
KE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRWaWRlb0xheWVySUQ6OmFyZ3VtZW50cyBjb25zdCk6Cisg
ICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6RGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb246
Om5hbWUpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZENyZWF0ZVdlYlByb2Nlc3ND
b25uZWN0aW9uOjpEaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIChNZXNz
YWdlczo6V2ViUGFnZTo6RGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmFyZ3VtZW50cyBj
b25zdCk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6SW50ZXJwcmV0S2V5RXZlbnQ6Om5h
bWUpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OkludGVycHJldEtleUV2ZW50OjpJbnRl
cnByZXRLZXlFdmVudCk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6SW50ZXJwcmV0S2V5
RXZlbnQ6OmFyZ3VtZW50cyBjb25zdCk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6RGVw
cmVjYXRlZE9wZXJhdGlvbjo6bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6RGVw
cmVjYXRlZE9wZXJhdGlvbjo6RGVwcmVjYXRlZE9wZXJhdGlvbik6CisgICAgICAgIChNZXNzYWdl
czo6V2ViUGFnZTo6RGVwcmVjYXRlZE9wZXJhdGlvbjo6YXJndW1lbnRzIGNvbnN0KToKKyAgICAg
ICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpFeHBlcmltZW50YWxPcGVyYXRpb246Om5hbWUpOgorICAg
ICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OkV4cGVyaW1lbnRhbE9wZXJhdGlvbjo6RXhwZXJpbWVu
dGFsT3BlcmF0aW9uKToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpFeHBlcmltZW50YWxP
cGVyYXRpb246OmFyZ3VtZW50cyBjb25zdCk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvdGVz
dC1sZWdhY3lNZXNzYWdlc1JlcGxpZXMuaDogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJr
aXQvdGVzdC1tZXNzYWdlcy5pbjogUmVtb3ZlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC90
ZXN0LXN1cGVyY2xhc3MtbWVzc2FnZXMuaW46IFJlbW92ZWQuCisgICAgICAgICogU2NyaXB0cy93
ZWJraXQvdGVzdC1zdXBlcmNsYXNzLm1lc3NhZ2VzLmluOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2Vi
S2l0L1NjcmlwdHMvd2Via2l0L3Rlc3Qtc3VwZXJjbGFzcy1tZXNzYWdlcy5pbi4KKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdC90ZXN0LXN1cGVyY2xhc3NNZXNzYWdlUmVjZWl2ZXIuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0QXN5bmNNZXNzYWdlOjpjYWxsUmVw
bHkpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RBc3luY01lc3NhZ2U6OmNhbmNl
bFJlcGx5KToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0QXN5bmNNZXNzYWdlOjpz
ZW5kKToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0QXN5bmNNZXNzYWdlV2l0aE5v
QXJndW1lbnRzOjpjYWxsUmVwbHkpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RB
c3luY01lc3NhZ2VXaXRoTm9Bcmd1bWVudHM6OmNhbmNlbFJlcGx5KToKKyAgICAgICAgKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpUZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJndW1lbnRzOjpzZW5kKToKKyAg
ICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJn
dW1lbnRzOjpjYWxsUmVwbHkpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RBc3lu
Y01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHM6OmNhbmNlbFJlcGx5KToKKyAgICAgICAgKE1l
c3NhZ2VzOjpXZWJQYWdlOjpUZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1lbnRzOjpz
ZW5kKToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0U3luY01lc3NhZ2U6OnNlbmQp
OgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RTeW5jaHJvbm91c01lc3NhZ2U6OnNl
bmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRpZFJlY2VpdmVTeW5jTWVzc2FnZSk6CisgICAgICAgICog
U2NyaXB0cy93ZWJraXQvdGVzdC1zdXBlcmNsYXNzTWVzc2FnZXMuaDogQWRkZWQuCisgICAgICAg
IChNZXNzYWdlczo6V2ViUGFnZTo6bWVzc2FnZVJlY2VpdmVyTmFtZSk6CisgICAgICAgIChNZXNz
YWdlczo6V2ViUGFnZTo6TG9hZFVSTDo6bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFn
ZTo6TG9hZFVSTDo6TG9hZFVSTCk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFVS
TDo6YXJndW1lbnRzIGNvbnN0KToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0QXN5
bmNNZXNzYWdlOjpuYW1lKToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0QXN5bmNN
ZXNzYWdlOjphc3luY01lc3NhZ2VSZXBseU5hbWUpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBh
Z2U6OlRlc3RBc3luY01lc3NhZ2U6OlRlc3RBc3luY01lc3NhZ2UpOgorICAgICAgICAoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlRlc3RBc3luY01lc3NhZ2U6OmFyZ3VtZW50cyBjb25zdCk6CisgICAgICAg
IChNZXNzYWdlczo6V2ViUGFnZTo6VGVzdEFzeW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50czo6bmFt
ZSk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6VGVzdEFzeW5jTWVzc2FnZVdpdGhOb0Fy
Z3VtZW50czo6YXN5bmNNZXNzYWdlUmVwbHlOYW1lKToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpUZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJndW1lbnRzOjphcmd1bWVudHMgY29uc3QpOgor
ICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RBc3luY01lc3NhZ2VXaXRoTXVsdGlwbGVB
cmd1bWVudHM6Om5hbWUpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RBc3luY01l
c3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHM6OmFzeW5jTWVzc2FnZVJlcGx5TmFtZSk6CisgICAg
ICAgIChNZXNzYWdlczo6V2ViUGFnZTo6VGVzdEFzeW5jTWVzc2FnZVdpdGhNdWx0aXBsZUFyZ3Vt
ZW50czo6YXJndW1lbnRzIGNvbnN0KToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0
U3luY01lc3NhZ2U6Om5hbWUpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RTeW5j
TWVzc2FnZTo6VGVzdFN5bmNNZXNzYWdlKToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpU
ZXN0U3luY01lc3NhZ2U6OmFyZ3VtZW50cyBjb25zdCk6CisgICAgICAgIChNZXNzYWdlczo6V2Vi
UGFnZTo6VGVzdFN5bmNocm9ub3VzTWVzc2FnZTo6bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6
V2ViUGFnZTo6VGVzdFN5bmNocm9ub3VzTWVzc2FnZTo6VGVzdFN5bmNocm9ub3VzTWVzc2FnZSk6
CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6VGVzdFN5bmNocm9ub3VzTWVzc2FnZTo6YXJn
dW1lbnRzIGNvbnN0KToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0LXN1cGVyY2xhc3NN
ZXNzYWdlc1JlcGxpZXMuaDogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXQvdGVzdC5t
ZXNzYWdlcy5pbjogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXQvdGVzdE1lc3NhZ2VS
ZWNlaXZlci5jcHA6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3RNZXNzYWdl
cy5oOiBBZGRlZC4KKyAgICAgICAgKE1lc3NhZ2VzOjpOb25lOjptZXNzYWdlUmVjZWl2ZXJOYW1l
KToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0TWVzc2FnZXNSZXBsaWVzLmg6IEFkZGVk
LgorICAgICAgICAqIFNoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5o
OgorICAgICAgICAqIFNoYXJlZC9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQ
cm94eUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94
eTo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eTo6fldlYlBheW1lbnRDb29yZGluYXRvclByb3h5KToKKyAgICAg
ICAgKiBTaGFyZWQvQXV4aWxpYXJ5UHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkF1eGls
aWFyeVByb2Nlc3M6OmFkZE1lc3NhZ2VSZWNlaXZlcik6CisgICAgICAgIChXZWJLaXQ6OkF1eGls
aWFyeVByb2Nlc3M6OnJlbW92ZU1lc3NhZ2VSZWNlaXZlcik6CisgICAgICAgIChXZWJLaXQ6OkF1
eGlsaWFyeVByb2Nlc3M6OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZSk6CisgICAgICAgICogU2hh
cmVkL0F1eGlsaWFyeVByb2Nlc3MuaDoKKyAgICAgICAgKFdlYktpdDo6QXV4aWxpYXJ5UHJvY2Vz
czo6YWRkTWVzc2FnZVJlY2VpdmVyKToKKyAgICAgICAgKFdlYktpdDo6QXV4aWxpYXJ5UHJvY2Vz
czo6cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKToKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvQXV4aWxp
YXJ5UHJvY2Vzc0NvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpBdXhpbGlhcnlQcm9jZXNzOjpk
aWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UpOgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6Cisg
ICAgICAgICogVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OkF1eGlsaWFyeVByb2Nlc3NQcm94eTo6YWRkTWVzc2FnZVJlY2VpdmVyKToKKyAgICAg
ICAgKFdlYktpdDo6QXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjpyZW1vdmVNZXNzYWdlUmVjZWl2ZXIp
OgorICAgICAgICAoV2ViS2l0OjpBdXhpbGlhcnlQcm9jZXNzUHJveHk6OmxvZ0ludmFsaWRNZXNz
YWdlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5Lmg6CisgICAg
ICAgIChXZWJLaXQ6OkF1eGlsaWFyeVByb2Nlc3NQcm94eTo6YWRkTWVzc2FnZVJlY2VpdmVyKToK
KyAgICAgICAgKFdlYktpdDo6QXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjpyZW1vdmVNZXNzYWdlUmVj
ZWl2ZXIpOgorICAgICAgICAoV2ViS2l0OjpBdXhpbGlhcnlQcm9jZXNzUHJveHk6OnNlbmQpOgor
ICAgICAgICAoV2ViS2l0OjpBdXhpbGlhcnlQcm9jZXNzUHJveHk6OnNlbmRXaXRoQXN5bmNSZXBs
eSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJv
eHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW06Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cGF5bWVudENvb3JkaW5hdG9yQWRkTWVzc2Fn
ZVJlY2VpdmVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpwYXlt
ZW50Q29vcmRpbmF0b3JSZW1vdmVNZXNzYWdlUmVjZWl2ZXIpOiBEZWxldGVkLgorICAgICAgICAq
IFVJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6R1BV
UHJvY2Vzc1Byb3h5OjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNz
UHJveHk6OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZSk6CisgICAgICAgICogVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NQ
cm94eTo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUHJvdmlzaW9u
YWxQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNpb25hbFBhZ2VQcm94eTo6
ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjptZXNzYWdlTmFtZXNUb0lnbm9yZVdoaWxlU3VzcGVu
ZGVkKToKKyAgICAgICAgKFdlYktpdDo6U3VzcGVuZGVkUGFnZVByb3h5OjpkaWRSZWNlaXZlTWVz
c2FnZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQ
b29sOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzUG9vbDo6YWRkTWVzc2FnZVJlY2VpdmVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Bvb2w6OnJlbW92ZU1lc3NhZ2VSZWNlaXZlcik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6c2hvdWxkU2VuZFBlbmRpbmdNZXNzYWdl
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpkaWRSZWNlaXZlSW52YWxpZE1l
c3NhZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJL
aXQ6OkdQVVByb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwOgorICAgICAg
ICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZUludmFsaWRNZXNz
YWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rp
b24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90
ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRy
ZWVEcmF3aW5nQXJlYTo6dXBkYXRlUmVuZGVyaW5nKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpkaWRSZWNlaXZlTWVz
c2FnZSk6CisKIDIwMjAtMDUtMDEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAog
ICAgICAgICBVbnJldmlld2VkLCByZXZlcnRpbmcgcjI2MTAxNS4KSW5kZXg6IFNvdXJjZS9XZWJL
aXQvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DTWFrZUxpc3Rz
LnR4dAkocmV2aXNpb24gMjYxMDMzKQorKysgU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dAko
d29ya2luZyBjb3B5KQpAQCAtMTE5LDE0OCArMTE5LDE0OCBAQCBsaXN0KEFQUEVORCBXZWJLaXRf
VU5JRklFRF9TT1VSQ0VfTElTVF9GCiApCiAKIHNldChXZWJLaXRfTUVTU0FHRVNfSU5fRklMRVMK
LSAgICBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KLSAg
ICBHUFVQcm9jZXNzL0dQVVByb2Nlc3MubWVzc2FnZXMuaW4KKyAgICBHUFVQcm9jZXNzL0dQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MKKyAgICBHUFVQcm9jZXNzL0dQVVByb2Nlc3MKIAotICAgIEdQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lm1lc3NhZ2VzLmlu
CisgICAgR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkKIAot
ICAgIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIubWVzc2Fn
ZXMuaW4KLSAgICBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvblByb3h5Lm1lc3Nh
Z2VzLmluCi0gICAgR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5UHJveHkubWVzc2Fn
ZXMuaW4KLSAgICBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkubWVzc2Fn
ZXMuaW4KLSAgICBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5
Lm1lc3NhZ2VzLmluCi0gICAgR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5tZXNzYWdl
cy5pbgotICAgIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5Lm1l
c3NhZ2VzLmluCi0gICAgR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5tZXNz
YWdlcy5pbgotICAgIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5
Lm1lc3NhZ2VzLmluCi0gICAgR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFn
ZXJQcm94eS5tZXNzYWdlcy5pbgotICAgIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5
ZXJQcm94eS5tZXNzYWdlcy5pbgotICAgIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNv
dXJjZU1hbmFnZXIubWVzc2FnZXMuaW4KKyAgICBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlv
RGVzdGluYXRpb25NYW5hZ2VyCisgICAgR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1Nlc3Np
b25Qcm94eQorICAgIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5CisgICAg
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5CisgICAgR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eQorICAgIEdQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlQ0RNUHJveHkKKyAgICBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3Rv
cnlQcm94eQorICAgIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkKKyAgICBH
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eQorICAgIEdQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkKKyAgICBHUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkKKyAgICBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1l
ZGlhUmVzb3VyY2VNYW5hZ2VyCiAKLSAgICBHUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2Rl
Y3NQcm94eS5tZXNzYWdlcy5pbgotICAgIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVyLm1lc3NhZ2VzLmluCi0gICAgR1BVUHJvY2Vzcy93ZWJydGMv
UmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyLm1lc3NhZ2VzLmluCi0g
ICAgR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5tZXNzYWdlcy5pbgotICAg
IEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyLm1lc3NhZ2VzLmlu
Ci0gICAgR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLm1l
c3NhZ2VzLmluCi0gICAgR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyTWFuYWdlci5tZXNzYWdlcy5pbgorICAgIEdQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJU
Q0NvZGVjc1Byb3h5CisgICAgR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXIKKyAgICBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlck1hbmFnZXIKKyAgICBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRp
YVJlY29yZGVyCisgICAgR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFn
ZXIKKyAgICBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIK
KyAgICBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5h
Z2VyCiAKLSAgICBOZXR3b3JrUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIubWVzc2Fn
ZXMuaW4KKyAgICBOZXR3b3JrUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIKIAotICAg
IE5ldHdvcmtQcm9jZXNzL0luZGV4ZWREQi9XZWJJREJTZXJ2ZXIubWVzc2FnZXMuaW4KKyAgICBO
ZXR3b3JrUHJvY2Vzcy9JbmRleGVkREIvV2ViSURCU2VydmVyCiAKLSAgICBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgotICAgIE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyLm1lc3NhZ2VzLmluCi0gICAgTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KLSAgICBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW4KLSAgICBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrU29ja2V0Q2hhbm5lbC5tZXNzYWdlcy5pbgotICAgIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtTb2NrZXRTdHJlYW0ubWVzc2FnZXMuaW4KKyAgICBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2VzcworICAgIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb250ZW50UnVs
ZUxpc3RNYW5hZ2VyCisgICAgTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MKKyAgICBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIKKyAgICBOZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrU29ja2V0Q2hhbm5lbAorICAgIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0K
IAotICAgIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFz
ay5tZXNzYWdlcy5pbgotICAgIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2
ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCi0gICAgTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KKyAgICBOZXR3b3Jr
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2sKKyAgICBOZXR3b3Jr
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbgorICAgIE5ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uCiAKLSAg
ICBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyU2V0Lm1lc3NhZ2VzLmlu
CisgICAgTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlclNldAogCi0gICAg
TmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5tZXNzYWdl
cy5pbgorICAgIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rp
b24KIAotICAgIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrTUROU1JlZ2lzdGVyLm1lc3Nh
Z2VzLmluCi0gICAgTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENNb25pdG9yLm1lc3Nh
Z2VzLmluCi0gICAgTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5tZXNz
YWdlcy5pbgotICAgIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDU29ja2V0Lm1lc3Nh
Z2VzLmluCisgICAgTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtNRE5TUmVnaXN0ZXIKKyAg
ICBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ01vbml0b3IKKyAgICBOZXR3b3JrUHJv
Y2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyCisgICAgTmV0d29ya1Byb2Nlc3Mvd2VicnRj
L05ldHdvcmtSVENTb2NrZXQKIAotICAgIFBsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclBy
b3h5Lm1lc3NhZ2VzLmluCi0gICAgUGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9jZXNzLm1lc3NhZ2Vz
LmluCi0gICAgUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgor
ICAgIFBsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5CisgICAgUGx1Z2luUHJvY2Vz
cy9QbHVnaW5Qcm9jZXNzCisgICAgUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbgog
Ci0gICAgU2hhcmVkL0F1eGlsaWFyeVByb2Nlc3MubWVzc2FnZXMuaW4KLSAgICBTaGFyZWQvV2Vi
Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgorICAgIFNoYXJlZC9BdXhpbGlhcnlQcm9jZXNzCisgICAg
U2hhcmVkL1dlYkNvbm5lY3Rpb24KIAotICAgIFNoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50
aWNhdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4KKyAgICBTaGFyZWQvQXV0aGVudGljYXRpb24vQXV0
aGVudGljYXRpb25NYW5hZ2VyCiAKLSAgICBTaGFyZWQvUGx1Z2lucy9OUE9iamVjdE1lc3NhZ2VS
ZWNlaXZlci5tZXNzYWdlcy5pbgorICAgIFNoYXJlZC9QbHVnaW5zL05QT2JqZWN0TWVzc2FnZVJl
Y2VpdmVyCiAKLSAgICBVSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5tZXNzYWdlcy5pbgotICAg
IFVJUHJvY2Vzcy9WaXNpdGVkTGlua1N0b3JlLm1lc3NhZ2VzLmluCi0gICAgVUlQcm9jZXNzL1dl
YkNvb2tpZU1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgotICAgIFVJUHJvY2Vzcy9XZWJGdWxsU2Ny
ZWVuTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCi0gICAgVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9u
TWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCi0gICAgVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNz
YWdlcy5pbgotICAgIFVJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkubWVzc2FnZXMuaW4KLSAg
ICBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wubWVzc2FnZXMuaW4KLSAgICBVSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCisgICAgVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkK
KyAgICBVSVByb2Nlc3MvVmlzaXRlZExpbmtTdG9yZQorICAgIFVJUHJvY2Vzcy9XZWJDb29raWVN
YW5hZ2VyUHJveHkKKyAgICBVSVByb2Nlc3MvV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eQorICAg
IFVJUHJvY2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eQorICAgIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkKKyAgICBVSVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5CisgICAgVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sCisgICAgVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eQogCi0gICAgVUlQ
cm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24ubWVzc2FnZXMuaW4KKyAgICBV
SVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbgogCi0gICAgVUlQcm9jZXNz
L0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5Lm1lc3NhZ2VzLmluCisgICAgVUlQcm9jZXNzL0Rvd25s
b2Fkcy9Eb3dubG9hZFByb3h5CiAKLSAgICBVSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5t
ZXNzYWdlcy5pbgorICAgIFVJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5CiAKLSAgICBVSVBy
b2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclByb3h5Lm1lc3NhZ2VzLmluCi0gICAg
VUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JQcm94eS5tZXNzYWdlcy5pbgorICAgIFVJ
UHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHkKKyAgICBVSVByb2Nlc3Mv
SW5zcGVjdG9yL1dlYkluc3BlY3RvclByb3h5CiAKLSAgICBVSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCisgICAgVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eQogCi0gICAgVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5
Lm1lc3NhZ2VzLmluCisgICAgVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5CiAK
LSAgICBVSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHku
bWVzc2FnZXMuaW4KKyAgICBVSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyUHJveHkKIAotICAgIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorICAg
IFdlYlByb2Nlc3MvV2ViUHJvY2VzcwogCi0gICAgV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1
dG9tYXRpb25TZXNzaW9uUHJveHkubWVzc2FnZXMuaW4KKyAgICBXZWJQcm9jZXNzL0F1dG9tYXRp
b24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eQogCi0gICAgV2ViUHJvY2Vzcy9EYXRhYmFzZXMv
SW5kZXhlZERCL1dlYklEQkNvbm5lY3Rpb25Ub1NlcnZlci5tZXNzYWdlcy5pbgorICAgIFdlYlBy
b2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIKIAotICAg
IFdlYlByb2Nlc3MvRnVsbFNjcmVlbi9XZWJGdWxsU2NyZWVuTWFuYWdlci5tZXNzYWdlcy5pbgor
ICAgIFdlYlByb2Nlc3MvRnVsbFNjcmVlbi9XZWJGdWxsU2NyZWVuTWFuYWdlcgogCi0gICAgV2Vi
UHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW4KKyAgICBXZWJQcm9j
ZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbgogCi0gICAgV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbgorICAgIFdlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQKIAotICAgIFdlYlByb2Nlc3MvR1BVL21l
ZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5tZXNzYWdlcy5pbgotICAgIFdlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5tZXNzYWdlcy5pbgotICAgIFdl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvbi5tZXNzYWdlcy5pbgotICAgIFdl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5tZXNzYWdlcy5pbgot
ICAgIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb24ubWVzc2FnZXMu
aW4KLSAgICBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIubWVz
c2FnZXMuaW4KKyAgICBXZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1v
dGUKKyAgICBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkK
KyAgICBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb1Nlc3Npb24KKyAgICBXZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24KKyAgICBXZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uCisgICAgV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyCiAKLSAgICBXZWJQcm9jZXNzL0dQVS93ZWJydGMvTGli
V2ViUlRDQ29kZWNzLm1lc3NhZ2VzLmluCi0gICAgV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllci5tZXNzYWdlcy5pbgorICAgIFdlYlByb2Nlc3MvR1BVL3dlYnJ0
Yy9MaWJXZWJSVENDb2RlY3MKKyAgICBXZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyCiAKLSAgICBXZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9u
TWFuYWdlci5tZXNzYWdlcy5pbgorICAgIFdlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9j
YXRpb25NYW5hZ2VyCiAKLSAgICBXZWJQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0
b3JVSS5tZXNzYWdlcy5pbgotICAgIFdlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3Rvci5t
ZXNzYWdlcy5pbgotICAgIFdlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvckludGVycnVw
dERpc3BhdGNoZXIubWVzc2FnZXMuaW4KLSAgICBXZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNw
ZWN0b3JVSS5tZXNzYWdlcy5pbgorICAgIFdlYlByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYklu
c3BlY3RvclVJCisgICAgV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yCisgICAgV2Vi
UHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9ySW50ZXJydXB0RGlzcGF0Y2hlcgorICAgIFdl
YlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJCiAKLSAgICBXZWJQcm9jZXNzL05ldHdv
cmsvd2VicnRjL1dlYk1ETlNSZWdpc3Rlci5tZXNzYWdlcy5pbgotICAgIFdlYlByb2Nlc3MvTmV0
d29yay93ZWJydGMvV2ViUlRDTW9uaXRvci5tZXNzYWdlcy5pbgotICAgIFdlYlByb2Nlc3MvTmV0
d29yay93ZWJydGMvV2ViUlRDUmVzb2x2ZXIubWVzc2FnZXMuaW4KLSAgICBXZWJQcm9jZXNzL05l
dHdvcmsvd2VicnRjL1dlYlJUQ1NvY2tldC5tZXNzYWdlcy5pbgorICAgIFdlYlByb2Nlc3MvTmV0
d29yay93ZWJydGMvV2ViTUROU1JlZ2lzdGVyCisgICAgV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0
Yy9XZWJSVENNb25pdG9yCisgICAgV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJSVENSZXNv
bHZlcgorICAgIFdlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvV2ViUlRDU29ja2V0CiAKLSAgICBX
ZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluCi0g
ICAgV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluCi0gICAg
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwubWVzc2FnZXMuaW4KLSAgICBXZWJQ
cm9jZXNzL05ldHdvcmsvV2ViU29ja2V0U3RyZWFtLm1lc3NhZ2VzLmluCisgICAgV2ViUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbgorICAgIFdlYlByb2Nlc3MvTmV0d29y
ay9XZWJSZXNvdXJjZUxvYWRlcgorICAgIFdlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFu
bmVsCisgICAgV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0cmVhbQogCi0gICAgV2ViUHJv
Y2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4KKyAg
ICBXZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlcgogCi0gICAg
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluCi0g
ICAgV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5tZXNz
YWdlcy5pbgotICAgIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5tZXNzYWdlcy5pbgor
ICAgIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbgorICAgIFdlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIKKyAgICBXZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkKIAotICAgIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0Ns
aWVudENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KLSAgICBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KKyAgICBXZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU1dDbGllbnRDb25uZWN0aW9uCisgICAgV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uCiAKLSAgICBXZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVz
ZXJDb250ZW50Q29udHJvbGxlci5tZXNzYWdlcy5pbgorICAgIFdlYlByb2Nlc3MvVXNlckNvbnRl
bnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyCiAKLSAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvRHJh
d2luZ0FyZWEubWVzc2FnZXMuaW4KLSAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRj
aGVyLm1lc3NhZ2VzLmluCi0gICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1Zpc2l0ZWRMaW5rVGFibGVD
b250cm9sbGVyLm1lc3NhZ2VzLmluCi0gICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVz
c2FnZXMuaW4KKyAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEKKyAgICBXZWJQcm9j
ZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVyCisgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1Zpc2l0
ZWRMaW5rVGFibGVDb250cm9sbGVyCisgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UKIAot
ICAgIFdlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5tZXNzYWdlcy5pbgorICAg
IFdlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcAogKQogCiAjIEZJWE1FOiBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwMzY2CkBAIC00MDYsMjMgKzQw
NiwzOCBAQCBlbmRpZiAoKQogCiAjIEhlbHBlciBtYWNybyB3aGljaCB3cmFwcyB0aGUgZ2VuZXJh
dGUtbWVzc2FnZS1yZWNlaXZlci5weSBzY3JpcHQKICMgICBfb3V0cHV0X3NvdXJjZSBpcyBhIGxp
c3QgbmFtZSB3aGljaCB3aWxsIGNvbnRhaW4gZ2VuZXJhdGVkIHNvdXJjZXMuKGVnLiBXZWJLaXRf
U09VUkNFUykKLSMgICBfaW5wdXRfZmlsZXMgYXJlIG1lc3NhZ2VzLmluIGZpbGVzIHRvIGdlbmVy
YXRlLgotbWFjcm8oR0VORVJBVEVfTUVTU0FHRV9TT1VSQ0VTIF9vdXRwdXRfc291cmNlIF9pbnB1
dF9maWxlcykKLSAgICBmb3JlYWNoIChfZmlsZSAke19pbnB1dF9maWxlc30pCisjICAgX2lucHV0
cyBhcmUgbWVzc2FnZXMuaW4gZmlsZXMgdG8gZ2VuZXJhdGUuCittYWNybyhHRU5FUkFURV9NRVNT
QUdFX1NPVVJDRVMgX291dHB1dF9zb3VyY2UgX2lucHV0cykKKyAgICB1bnNldChfaW5wdXRfZmls
ZXMpCisgICAgdW5zZXQoX291dHB1dHMpCisgICAgZm9yZWFjaCAoX2ZpbGUgSU4gSVRFTVMgJHtf
aW5wdXRzfSkKICAgICAgICAgZ2V0X2ZpbGVuYW1lX2NvbXBvbmVudChfbmFtZSAke19maWxlfSBO
QU1FX1dFKQotICAgICAgICBhZGRfY3VzdG9tX2NvbW1hbmQoCi0gICAgICAgICAgICBPVVRQVVQg
JHtXZWJLaXRfREVSSVZFRF9TT1VSQ0VTX0RJUn0vJHtfbmFtZX1NZXNzYWdlUmVjZWl2ZXIuY3Bw
ICR7V2ViS2l0X0RFUklWRURfU09VUkNFU19ESVJ9LyR7X25hbWV9TWVzc2FnZXMuaCAke1dlYktp
dF9ERVJJVkVEX1NPVVJDRVNfRElSfS8ke19uYW1lfU1lc3NhZ2VzUmVwbGllcy5oCi0gICAgICAg
ICAgICBNQUlOX0RFUEVOREVOQ1kgJHtfZmlsZX0KLSAgICAgICAgICAgIERFUEVORFMgJHtXRUJL
SVRfRElSfS9TY3JpcHRzL3dlYmtpdC9fX2luaXRfXy5weQotICAgICAgICAgICAgICAgICAgICAk
e1dFQktJVF9ESVJ9L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5Ci0gICAgICAgICAgICAgICAg
ICAgICR7V0VCS0lUX0RJUn0vU2NyaXB0cy93ZWJraXQvbW9kZWwucHkKLSAgICAgICAgICAgICAg
ICAgICAgJHtXRUJLSVRfRElSfS9TY3JpcHRzL3dlYmtpdC9wYXJzZXIucHkKLSAgICAgICAgICAg
IENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gJHtXRUJLSVRfRElSfS9TY3JpcHRzL2dlbmVy
YXRlLW1lc3NhZ2UtcmVjZWl2ZXIucHkgJHtfZmlsZX0gLS1pbXBsZW1lbnRhdGlvbiAke1dlYktp
dF9ERVJJVkVEX1NPVVJDRVNfRElSfS8ke19uYW1lfU1lc3NhZ2VSZWNlaXZlci5jcHAgLS1oZWFk
ZXIgJHtXZWJLaXRfREVSSVZFRF9TT1VSQ0VTX0RJUn0vJHtfbmFtZX1NZXNzYWdlcy5oIC0tcmVw
bHktaGVhZGVyICR7V2ViS2l0X0RFUklWRURfU09VUkNFU19ESVJ9LyR7X25hbWV9TWVzc2FnZXNS
ZXBsaWVzLmgKLSAgICAgICAgICAgIFdPUktJTkdfRElSRUNUT1JZICR7V0VCS0lUX0RJUn0KLSAg
ICAgICAgICAgIFZFUkJBVElNKQotCisgICAgICAgIGxpc3QoQVBQRU5EIF9pbnB1dF9maWxlcyAk
e1dFQktJVF9ESVJ9LyR7X2ZpbGV9Lm1lc3NhZ2VzLmluKQorICAgICAgICBsaXN0KEFQUEVORCBf
b3V0cHV0cworICAgICAgICAgICAgJHtXZWJLaXRfREVSSVZFRF9TT1VSQ0VTX0RJUn0vJHtfbmFt
ZX1NZXNzYWdlUmVjZWl2ZXIuY3BwCisgICAgICAgICAgICAke1dlYktpdF9ERVJJVkVEX1NPVVJD
RVNfRElSfS8ke19uYW1lfU1lc3NhZ2VzLmgKKyAgICAgICAgICAgICR7V2ViS2l0X0RFUklWRURf
U09VUkNFU19ESVJ9LyR7X25hbWV9TWVzc2FnZXNSZXBsaWVzLmgKKyAgICAgICAgKQogICAgICAg
ICBsaXN0KEFQUEVORCAke19vdXRwdXRfc291cmNlfSAke1dlYktpdF9ERVJJVkVEX1NPVVJDRVNf
RElSfS8ke19uYW1lfU1lc3NhZ2VSZWNlaXZlci5jcHApCiAgICAgZW5kZm9yZWFjaCAoKQorICAg
IGxpc3QoQVBQRU5EICR7X291dHB1dF9zb3VyY2V9ICR7V2ViS2l0X0RFUklWRURfU09VUkNFU19E
SVJ9L01lc3NhZ2VOYW1lcy5jcHApCisKKyAgICBhZGRfY3VzdG9tX2NvbW1hbmQoCisgICAgICAg
IE9VVFBVVAorICAgICAgICAgICAgJHtXZWJLaXRfREVSSVZFRF9TT1VSQ0VTX0RJUn0vTWVzc2Fn
ZU5hbWVzLmNwcAorICAgICAgICAgICAgJHtXZWJLaXRfREVSSVZFRF9TT1VSQ0VTX0RJUn0vTWVz
c2FnZU5hbWVzLmgKKyAgICAgICAgICAgICR7X291dHB1dHN9CisgICAgICAgIE1BSU5fREVQRU5E
RU5DWSAke1dFQktJVF9ESVJ9L1NjcmlwdHMvZ2VuZXJhdGUtbWVzc2FnZS1yZWNlaXZlci5weQor
ICAgICAgICBERVBFTkRTCisgICAgICAgICAgICAke1dFQktJVF9ESVJ9L1NjcmlwdHMvd2Via2l0
L19faW5pdF9fLnB5CisgICAgICAgICAgICAke1dFQktJVF9ESVJ9L1NjcmlwdHMvd2Via2l0L21l
c3NhZ2VzLnB5CisgICAgICAgICAgICAke1dFQktJVF9ESVJ9L1NjcmlwdHMvd2Via2l0L21vZGVs
LnB5CisgICAgICAgICAgICAke1dFQktJVF9ESVJ9L1NjcmlwdHMvd2Via2l0L3BhcnNlci5weQor
ICAgICAgICAgICAgJHtfaW5wdXRfZmlsZXN9CisgICAgICAgIENPTU1BTkQgJHtQWVRIT05fRVhF
Q1VUQUJMRX0gJHtXRUJLSVRfRElSfS9TY3JpcHRzL2dlbmVyYXRlLW1lc3NhZ2UtcmVjZWl2ZXIu
cHkgJHtXRUJLSVRfRElSfSAke19pbnB1dHN9CisgICAgICAgIFdPUktJTkdfRElSRUNUT1JZICR7
V2ViS2l0X0RFUklWRURfU09VUkNFU19ESVJ9CisgICAgICAgIFZFUkJBVElNCisgICAgKQogZW5k
bWFjcm8oKQogR0VORVJBVEVfTUVTU0FHRV9TT1VSQ0VTKFdlYktpdF9ERVJJVkVEX1NPVVJDRVMg
IiR7V2ViS2l0X01FU1NBR0VTX0lOX0ZJTEVTfSIpCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvRGVy
aXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAkocmV2aXNpb24gMjYxMDMzKQorKysg
U291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAkod29ya2luZyBj
b3B5KQpAQCAtNjMsNiArNjMsOCBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9NZWRp
YVBsYXllclByaXZhdGVSZW1vdGVNZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9NZWRpYVBsYXllclByaXZhdGVSZW1vdGVNZXNz
YWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9NZWRp
YVBsYXllclByaXZhdGVSZW1vdGVNZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvTWVzc2FnZU5hbWVzLmNwcAorJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvTWVzc2FnZU5hbWVzLmgKICQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL05QT2JqZWN0TWVzc2FnZVJlY2Vp
dmVyTWVzc2FnZVJlY2VpdmVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYktpdDIvTlBPYmplY3RNZXNzYWdlUmVjZWl2ZXJNZXNzYWdlcy5oCiAkKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9OUE9iamVjdE1lc3NhZ2VSZWNlaXZl
ck1lc3NhZ2VzUmVwbGllcy5oCkluZGV4OiBTb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1h
a2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCShyZXZp
c2lvbiAyNjEwMzMpCisrKyBTb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHdvcmtp
bmcgY29weSkKQEAgLTExMiwxMzQgKzExMiwxMzUgQEAgZWxzZQogZW5kaWYKIAogTUVTU0FHRV9S
RUNFSVZFUlMgPSBcCi0JQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3JQcm94eSBcCi0gICAg
QXV0aGVudGljYXRpb25NYW5hZ2VyIFwKLSAgICBBdXhpbGlhcnlQcm9jZXNzIFwKLSAgICBDYWNo
ZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uIFwKLSAgICBEb3dubG9hZFByb3h5IFwKLSAgICBEcmF3
aW5nQXJlYSBcCi0gICAgRHJhd2luZ0FyZWFQcm94eSBcCi0gICAgRWRpdGFibGVJbWFnZUNvbnRy
b2xsZXIgXAotICAgIEV2ZW50RGlzcGF0Y2hlciBcCi0gICAgR1BVUHJvY2VzcyBcCi0gICAgR1BV
UHJvY2Vzc1Byb3h5IFwKLSAgICBHUFVQcm9jZXNzQ29ubmVjdGlvbiBcCi0gICAgR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2VzcyBcCi0gICAgTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyIFwKLSAg
ICBMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSBcCi0gICAgTGliV2ViUlRDQ29kZWNz
IFwKLSAgICBMaWJXZWJSVENDb2RlY3NQcm94eSBcCi0gICAgTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlIFwKLSAgICBOUE9iamVjdE1lc3NhZ2VSZWNlaXZlciBcCi0gICAgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MgXAotICAgIE5ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyIFwKLSAg
ICBOZXR3b3JrTUROU1JlZ2lzdGVyXAotICAgIE5ldHdvcmtQcm9jZXNzIFwKLSAgICBOZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb24gXAotICAgIE5ldHdvcmtQcm9jZXNzUHJveHkgXAotICAgIE5ldHdv
cmtSVENNb25pdG9yIFwKLSAgICBOZXR3b3JrUlRDUHJvdmlkZXIgXAotICAgIE5ldHdvcmtSVENT
b2NrZXQgXAotICAgIE5ldHdvcmtSZXNvdXJjZUxvYWRlciBcCi0gICAgTmV0d29ya1NvY2tldENo
YW5uZWwgXAotICAgIE5ldHdvcmtTb2NrZXRTdHJlYW0gXAotICAgIFBsYXliYWNrU2Vzc2lvbk1h
bmFnZXIgXAotICAgIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eSBcCi0gICAgUGx1Z2luQ29u
dHJvbGxlclByb3h5IFwKLSAgICBQbHVnaW5Qcm9jZXNzIFwKLSAgICBQbHVnaW5Qcm9jZXNzQ29u
bmVjdGlvbiBcCi0gICAgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyIFwKLSAgICBQbHVn
aW5Qcm9jZXNzUHJveHkgXAotICAgIFBsdWdpblByb3h5IFwKLSAgICBSZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uTWFuYWdlciBcCi0gICAgUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5IFwKLSAgICBS
ZW1vdGVBdWRpb1Nlc3Npb24gXAotICAgIFJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5IFwKLSAgICBS
ZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXIgXAotICAgIFJlbW90ZUF1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyIFwKLSAgICBSZW1vdGVMYXllclRyZWVEcmF3aW5n
QXJlYVByb3h5IFwKLSAgICBSZW1vdGVDRE1Qcm94eSBcCi0gICAgUmVtb3RlQ0RNRmFjdG9yeVBy
b3h5IFwKLSAgICBSZW1vdGVDRE1JbnN0YW5jZVByb3h5IFwKLSAgICBSZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb24gXAotICAgIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5IFwKLSAgICBSZW1v
dGVMZWdhY3lDRE1Qcm94eSBcCi0gICAgUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5IFwKLSAg
ICBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uIFwKLSAgICBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJv
eHkgXAotICAgIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlciBcCi0gICAgUmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyUHJveHkgXAotICAgIFJlbW90ZU1lZGlhUGxheWVyUHJveHkgXAotICAgIFJlbW90
ZU1lZGlhUmVjb3JkZXIgXAotICAgIFJlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyIFwKLSAgICBS
ZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlciBcCi0gICAgUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVy
IFwKLSAgICBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eSBcCi0gICAgUmVtb3RlT2JqZWN0
UmVnaXN0cnkgXAotICAgIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQgXAotICAgIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eSBcCi0gICAgUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIFwK
LSAgICBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyIFwKLSAgICBSZW1vdGVT
Y3JvbGxpbmdDb29yZGluYXRvciBcCi0gICAgUmVtb3RlV2ViSW5zcGVjdG9yUHJveHkgXAotICAg
IFJlbW90ZVdlYkluc3BlY3RvclVJIFwKLSAgICBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgXAot
ICAgIFNlY0l0ZW1TaGltUHJveHkgXAotICAgIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2sgXAotICAg
IFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIgXAotICAgIFN0b3JhZ2VBcmVhTWFwIFwKLSAg
ICBTdG9yYWdlTWFuYWdlclNldCBcCi0gICAgVGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5IFwK
LSAgICBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlciBcCi0gICAgVXNlck1lZGlhQ2FwdHVyZU1hbmFn
ZXJQcm94eSBcCi0gICAgVmlkZW9GdWxsc2NyZWVuTWFuYWdlciBcCi0gICAgVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlclByb3h5IFwKLSAgICBWaWV3R2VzdHVyZUNvbnRyb2xsZXIgXAotICAgIFZpZXdH
ZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IgXAotICAgIFZpZXdVcGRhdGVEaXNwYXRjaGVyIFwKLSAg
ICBWaXNpdGVkTGlua1N0b3JlIFwKLSAgICBWaXNpdGVkTGlua1RhYmxlQ29udHJvbGxlciBcCi0g
ICAgV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkgXAotICAgIFdlYkF1dG9tYXRpb25T
ZXNzaW9uIFwKLSAgICBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5IFwKLSAgICBXZWJDb25uZWN0
aW9uIFwKLSAgICBXZWJDb29raWVNYW5hZ2VyIFwKLSAgICBXZWJDb29raWVNYW5hZ2VyUHJveHkg
XAotICAgIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyIFwKLSAgICBXZWJGdWxsU2NyZWVuTWFuYWdlclBy
b3h5IFwKLSAgICBXZWJHZW9sb2NhdGlvbk1hbmFnZXIgXAotICAgIFdlYkdlb2xvY2F0aW9uTWFu
YWdlclByb3h5IFwKLSAgICBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIgXAotICAgIFdlYklEQlNl
cnZlciBcCi0gICAgV2ViSW5zcGVjdG9yIFwKLSAgICBXZWJJbnNwZWN0b3JJbnRlcnJ1cHREaXNw
YXRjaGVyIFwKLSAgICBXZWJJbnNwZWN0b3JQcm94eSBcCi0gICAgV2ViSW5zcGVjdG9yVUkgXAot
ICAgIFdlYk1ETlNSZWdpc3RlclwKLSAgICBXZWJOb3RpZmljYXRpb25NYW5hZ2VyIFwKLSAgICBX
ZWJQYWdlIFwKLSAgICBXZWJQYWdlUHJveHkgXAotICAgIFdlYlBhc3RlYm9hcmRQcm94eSBcCi0g
ICAgV2ViUGF5bWVudENvb3JkaW5hdG9yIFwKLSAgICBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94
eSBcCi0gICAgV2ViUHJvY2VzcyBcCi0gICAgV2ViUHJvY2Vzc0Nvbm5lY3Rpb24gXAotICAgIFdl
YlByb2Nlc3NQb29sIFwKLSAgICBXZWJQcm9jZXNzUHJveHkgXAotICAgIFdlYlJUQ01vbml0b3Ig
XAotICAgIFdlYlJUQ1Jlc29sdmVyIFwKLSAgICBXZWJSVENTb2NrZXQgXAotICAgIFdlYlJlc291
cmNlTG9hZGVyIFwKLSAgICBXZWJTV0NsaWVudENvbm5lY3Rpb24gXAotICAgIFdlYlNXQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uIFwKLSAgICBXZWJTV1NlcnZlckNvbm5lY3Rpb24gXAotICAgIFdl
YlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiBcCi0gICAgV2ViRGV2aWNlT3JpZW50YXRpb25V
cGRhdGVQcm92aWRlciBcCi0gICAgV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlclBy
b3h5IFwKLSAgICBXZWJTb2NrZXRDaGFubmVsIFwKLSAgICBXZWJTb2NrZXRTdHJlYW0gXAotICAg
IFdlYlVzZXJDb250ZW50Q29udHJvbGxlciBcCi0gICAgV2ViVXNlckNvbnRlbnRDb250cm9sbGVy
UHJveHkgXAorCU5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzIFwK
KwlOZXR3b3JrUHJvY2Vzcy9JbmRleGVkREIvV2ViSURCU2VydmVyIFwKKwlOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlciBcCisJTmV0d29ya1Byb2Nlc3MvV2ViU3Rv
cmFnZS9TdG9yYWdlTWFuYWdlclNldCBcCisJTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9y
YWdlRW5naW5lQ29ubmVjdGlvbiBcCisJTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0xl
Z2FjeUN1c3RvbVByb3RvY29sTWFuYWdlciBcCisJTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tl
dENoYW5uZWwgXAorCU5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25u
ZWN0aW9uIFwKKwlOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRj
aFRhc2sgXAorCU5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uIFwKKwlOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtIFwKKwlO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2VzcyBcCisJTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jl
c291cmNlTG9hZGVyIFwKKwlOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya01ETlNSZWdpc3Rl
ciBcCisJTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENTb2NrZXQgXAorCU5ldHdvcmtQ
cm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIgXAorCU5ldHdvcmtQcm9jZXNzL3dlYnJ0
Yy9OZXR3b3JrUlRDTW9uaXRvciBcCisJTmV0d29ya1Byb2Nlc3MvQ29va2llcy9XZWJDb29raWVN
YW5hZ2VyIFwKKwlTaGFyZWQvUGx1Z2lucy9OUE9iamVjdE1lc3NhZ2VSZWNlaXZlciBcCisJU2hh
cmVkL0F1eGlsaWFyeVByb2Nlc3MgXAorCVNoYXJlZC9BUEkvQ29jb2EvUmVtb3RlT2JqZWN0UmVn
aXN0cnkgXAorCVNoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSBcCisJ
U2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlciBcCisJU2hhcmVkL1dl
YkNvbm5lY3Rpb24gXAorCVVJUHJvY2Vzcy9XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5IFwKKwlV
SVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkg
XAorCVVJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5IFwKKwlVSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkgXAorCVVJUHJvY2Vzcy9X
ZWJQYXN0ZWJvYXJkUHJveHkgXAorCVVJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eSBcCisJVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JQcm94
eSBcCisJVUlQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eSBcCisJVUlQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5IFwKKwlVSVByb2Nlc3MvRHJhd2luZ0Fy
ZWFQcm94eSBcCisJVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eSBcCisJVUlQ
cm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdl
clByb3h5IFwKKwlVSVByb2Nlc3MvV2ViUGFnZVByb3h5IFwKKwlVSVByb2Nlc3MvVmlzaXRlZExp
bmtTdG9yZSBcCisJVUlQcm9jZXNzL2lvcy9XZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3Zp
ZGVyUHJveHkgXAorCVVJUHJvY2Vzcy9pb3MvRWRpdGFibGVJbWFnZUNvbnRyb2xsZXIgXAorCVVJ
UHJvY2Vzcy9pb3MvU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlciBcCisJVUlQcm9jZXNzL21h
Yy9TZWNJdGVtU2hpbVByb3h5IFwKKwlVSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJv
eHkgXAorCVVJUHJvY2Vzcy9Db2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkgXAorCVVJ
UHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkgXAorCVVJUHJvY2Vzcy9D
b2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5IFwKKwlVSVByb2Nlc3MvV2ViQ29va2ll
TWFuYWdlclByb3h5IFwKKwlVSVByb2Nlc3MvVmlld0dlc3R1cmVDb250cm9sbGVyIFwKKwlVSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5IFwKKwlVSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0
aW9uU2Vzc2lvbiBcCisJVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sIFwKKwlVSVByb2Nlc3MvRG93
bmxvYWRzL0Rvd25sb2FkUHJveHkgXAorCVVJUHJvY2Vzcy9NZWRpYS9BdWRpb1Nlc3Npb25Sb3V0
aW5nQXJiaXRyYXRvclByb3h5IFwKKwlXZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2Vi
SURCQ29ubmVjdGlvblRvU2VydmVyIFwKKwlXZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVj
dGlvbiBcCisJV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZCBc
CisJV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcyBcCisJV2ViUHJvY2Vzcy9H
UFUvd2VicnRjL1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciBcCisJV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlIFwKKwlXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb24gXAorCVdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2Fj
eUNETVNlc3Npb24gXAorCVdlYlByb2Nlc3MvR1BVL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Np
b25IZWxwZXIgXAorCVdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdl
ciBcCisJV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5IFwK
KwlXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb1Nlc3Npb24gXAorCVdlYlByb2Nlc3Mv
V2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcCBcCisJV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJV
c2VyQ29udGVudENvbnRyb2xsZXIgXAorCVdlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3Rv
ckludGVycnVwdERpc3BhdGNoZXIgXAorCVdlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3Rv
clVJIFwKKwlXZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3IgXAorCVdlYlByb2Nlc3Mv
SW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclVJIFwKKwlXZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyIFwKKwlXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
UHJveHkgXAorCVdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbiBcCisJ
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwgXAorCVdlYlByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24gXAorCVdlYlByb2Nlc3MvTmV0d29yay9XZWJTb2Nr
ZXRTdHJlYW0gXAorCVdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlciBcCisJV2Vi
UHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJSVENTb2NrZXQgXAorCVdlYlByb2Nlc3MvTmV0d29y
ay93ZWJydGMvV2ViUlRDTW9uaXRvciBcCisJV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJN
RE5TUmVnaXN0ZXIgXAorCVdlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvV2ViUlRDUmVzb2x2ZXIg
XAorCVdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQ
cm92aWRlciBcCisJV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uIFwKKwlXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uIFwKKwlXZWJQ
cm9jZXNzL1dlYlByb2Nlc3MgXAorCVdlYlByb2Nlc3MvY29jb2EvUGxheWJhY2tTZXNzaW9uTWFu
YWdlciBcCisJV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlciBcCisJV2Vi
UHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyIFwKKwlXZWJQcm9jZXNzL0dlb2xv
Y2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlciBcCisJV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dl
YkF1dG9tYXRpb25TZXNzaW9uUHJveHkgXAorCVdlYlByb2Nlc3MvRnVsbFNjcmVlbi9XZWJGdWxs
U2NyZWVuTWFuYWdlciBcCisJV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0
b3IgXAorCVdlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyIFwK
KwlXZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVyIFwKKwlXZWJQcm9jZXNzL1dlYlBh
Z2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yIFwKKwlXZWJQcm9j
ZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3RvciBcCisJV2ViUHJvY2Vzcy9X
ZWJQYWdlL0RyYXdpbmdBcmVhIFwKKwlXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZSBcCisJV2Vi
UHJvY2Vzcy9XZWJQYWdlL1Zpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVyIFwKKwlXZWJQcm9jZXNz
L1dlYlBhZ2UvQ29jb2EvVGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5IFwKKwlXZWJQcm9jZXNz
L1dlYlBhZ2UvVmlld1VwZGF0ZURpc3BhdGNoZXIgXAorCVBsdWdpblByb2Nlc3MvV2ViUHJvY2Vz
c0Nvbm5lY3Rpb24gXAorCVBsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5IFwKKwlQ
bHVnaW5Qcm9jZXNzL1BsdWdpblByb2Nlc3MgXAorCUdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyBcCisJR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHkgXAorCUdQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5IFwKKwlHUFVQ
cm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyIFwKKwlH
UFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFn
ZXIgXAorCUdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyIFwKKwlH
UFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgXAorCUdQVVBy
b2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIgXAorCUdQVVByb2Nlc3Mvd2VicnRjL1Jl
bW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyIFwKKwlHUFVQcm9jZXNzL0dQVVByb2Nl
c3MgXAorCUdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5IFwKKwlH
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvblByb3h5TWFuYWdlciBcCisJR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkgXAorCUdQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlQXVkaW9TZXNzaW9uUHJveHkgXAorCUdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uUHJveHkgXAorCUdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkg
XAorCUdQVVByb2Nlc3MvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5IFwK
KwlHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkgXAorCUdQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5IFwKKwlHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1l
ZGlhUmVzb3VyY2VNYW5hZ2VyIFwKKwlHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNl
UHJveHkgXAorCUdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkgXAorCUdQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkgXAorCUdQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIgXAogIwogCiBTQ1JJUFRTID0gXApA
QCAtMjU1LDE1ICsyNTYsMTQgQEAgSEVBREVSX0ZMQUdTID0gJChzaGVsbCBlY2hvICQoQlVJTFRf
UFJPRAogCiAuUEhPTlkgOiBhbGwKIAotYWxsIDogXAotICAgICQoTUVTU0FHRV9SRUNFSVZFUlM6
JT0lTWVzc2FnZVJlY2VpdmVyLmNwcCkgXAotICAgICQoTUVTU0FHRV9SRUNFSVZFUlM6JT0lTWVz
c2FnZXMuaCkgXAotICAgICQoTUVTU0FHRV9SRUNFSVZFUlM6JT0lTWVzc2FnZXNSZXBsaWVzLmgp
IFwKK2FsbCA6IE1lc3NhZ2VOYW1lcy5oIE1lc3NhZ2VOYW1lcy5jcHAgXAorICAgICQoYWRkc3Vm
Zml4IE1lc3NhZ2VSZWNlaXZlci5jcHAsJChub3RkaXIgJChNRVNTQUdFX1JFQ0VJVkVSUykpKSBc
CisgICAgJChhZGRzdWZmaXggTWVzc2FnZXMuaCwkKG5vdGRpciAkKE1FU1NBR0VfUkVDRUlWRVJT
KSkpIFwKKyAgICAkKGFkZHN1ZmZpeCBNZXNzYWdlc1JlcGxpZXMuaCwkKG5vdGRpciAkKE1FU1NB
R0VfUkVDRUlWRVJTKSkpIFwKICMKIAotJU1lc3NhZ2VSZWNlaXZlci5jcHAgJU1lc3NhZ2VzLmgg
JU1lc3NhZ2VzUmVwbGllcy5oIDogJS5tZXNzYWdlcy5pbiAkKFNDUklQVFMpCi0JQGVjaG8gR2Vu
ZXJhdGluZyBtZXNzYWdlIHJlY2VpdmVyIGZvciAkKi4uLgotCUBweXRob24gJChXZWJLaXQyKS9T
Y3JpcHRzL2dlbmVyYXRlLW1lc3NhZ2UtcmVjZWl2ZXIucHkgJDwgLS1pbXBsZW1lbnRhdGlvbiAk
Kk1lc3NhZ2VSZWNlaXZlci5jcHAgLS1oZWFkZXIgJCpNZXNzYWdlcy5oIC0tcmVwbHktaGVhZGVy
ICQqTWVzc2FnZXNSZXBsaWVzLmgKKyQoYWRkc3VmZml4IE1lc3NhZ2VSZWNlaXZlci5jcHAsJChu
b3RkaXIgJChNRVNTQUdFX1JFQ0VJVkVSUykpKSAkKGFkZHN1Zml4IE1lc3NhZ2VzLmgsJChub3Rk
aXIgJChNRVNTQUdFX1JFQ0VJVkVSUykpKSAkKGFkZHN1ZmZpeCBNZXNzYWdlc1JlcGxpZXMuaCwk
KG5vdGRpciAkKE1FU1NBR0VfUkVDRUlWRVJTKSkpIE1lc3NhZ2VOYW1lcy5oIE1lc3NhZ2VOYW1l
cy5jcHA6ICQoYWRkc3VmZml4IC5tZXNzYWdlcy5pbiwkKE1FU1NBR0VfUkVDRUlWRVJTKSkgJChT
Q1JJUFRTKQorCUBweXRob24gJChXZWJLaXQyKS9TY3JpcHRzL2dlbmVyYXRlLW1lc3NhZ2UtcmVj
ZWl2ZXIucHkgJChXZWJLaXQyKSAkKE1FU1NBR0VfUkVDRUlWRVJTKQogCiBURVhUX1BSRVBST0NF
U1NPUl9GTEFHUz0tRSAtUCAtdwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtR1RLLmNt
YWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm1HVEsuY21ha2UJKHJldmlz
aW9uIDI2MTAzMykKKysrIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm1HVEsuY21ha2UJKHdvcmtpbmcg
Y29weSkKQEAgLTQzLDkgKzQzLDkgQEAgaWYgKE5PVCBVU0VfR1RLNCkKICAgICAgICAgV2ViUHJv
Y2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IuY3BwCiAgICAgKQogICAg
IGxpc3QoQVBQRU5EIFdlYktpdF9NRVNTQUdFU19JTl9GSUxFUwotICAgICAgICBVSVByb2Nlc3Mv
Vmlld0dlc3R1cmVDb250cm9sbGVyLm1lc3NhZ2VzLmluCisgICAgICAgIFVJUHJvY2Vzcy9WaWV3
R2VzdHVyZUNvbnRyb2xsZXIKIAotICAgICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1
cmVHZW9tZXRyeUNvbGxlY3Rvci5tZXNzYWdlcy5pbgorICAgICAgICBXZWJQcm9jZXNzL1dlYlBh
Z2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3RvcgogICAgICkKIGVuZGlmICgpCiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1NvdXJjZXNDb2NvYS50eHQJKHJldmlzaW9uIDI2MTAzMykKKysrIFNvdXJjZS9XZWJLaXQv
U291cmNlc0NvY29hLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNjU2LDYgKzY1Niw3IEBAIEdQVVBy
b2Nlc3NQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKIEdQVVByb2Nlc3NNZXNzYWdlUmVjZWl2ZXIu
Y3BwCiBMaWJXZWJSVENDb2RlY3NQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKIExpYldlYlJUQ0Nv
ZGVjc01lc3NhZ2VSZWNlaXZlci5jcHAKK01lc3NhZ2VOYW1lcy5jcHAKIFJlbW90ZUF1ZGlvRGVz
dGluYXRpb25NYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcAogUmVtb3RlQXVkaW9EZXN0aW5hdGlv
blByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAogUmVtb3RlQXVkaW9TZXNzaW9uTWVzc2FnZVJlY2Vp
dmVyLmNwcApJbmRleDogU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAkocmV2aXNpb24gMjYxMDMzKQorKysgU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMTYsOCArMTE2LDggQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIExvZ2dlciYg
bG9nZ2VyKCkgZmluYWwgeyByZXR1cm4gbV9wcm9jZXNzLmxvZ2dlcigpOyB9Ci0gICAgdm9pZCBh
ZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFt
ZSwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImIHJlY2VpdmVyKSBmaW5hbCB7IH0KLSAgICB2b2lkIHJl
bW92ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJO
YW1lKSBmaW5hbCB7IH0KKyAgICB2b2lkIGFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlJlY2VpdmVy
TmFtZSwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImKSBmaW5hbCB7IH0KKyAgICB2b2lkIHJlbW92ZU1l
c3NhZ2VSZWNlaXZlcihJUEM6OlJlY2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1lKSBmaW5h
bCB7IH0KICAgICBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24oKSBmaW5hbCB7IHJldHVybiBt
X3Byb2Nlc3MuY29ubmVjdGlvbigpOyB9CiAgICAgYm9vbCB3aWxsU3RhcnRDYXB0dXJlKENhcHR1
cmVEZXZpY2U6OkRldmljZVR5cGUgdHlwZSkgY29uc3QgZmluYWwKICAgICB7CkBAIC0xODcsOSAr
MTg3LDkgQEAgTG9nZ2VyJiBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpsb2dnZQogICAgIHJl
dHVybiAqbV9sb2dnZXI7CiB9CiAKLXZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlk
UmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpT
dHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpTdHJpbmdSZWZlcmVuY2Ug
bWVzc2FnZU5hbWUpCit2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVJ
bnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6TWVzc2FnZU5h
bWUgbWVzc2FnZU5hbWUpCiB7Ci0gICAgV1RGTG9nQWx3YXlzKCJSZWNlaXZlZCBhbiBpbnZhbGlk
IG1lc3NhZ2UgXCIlcy4lc1wiIGZyb20gdGhlIHdlYiBwcm9jZXNzLlxuIiwgbWVzc2FnZVJlY2Vp
dmVyTmFtZS50b1N0cmluZygpLmRhdGEoKSwgbWVzc2FnZU5hbWUudG9TdHJpbmcoKS5kYXRhKCkp
OworICAgIFdURkxvZ0Fsd2F5cygiUmVjZWl2ZWQgYW4gaW52YWxpZCBtZXNzYWdlIFwiJXNcIiBm
cm9tIHRoZSB3ZWIgcHJvY2Vzcy5cbiIsIGRlc2NyaXB0aW9uKG1lc3NhZ2VOYW1lKSk7CiAgICAg
Q1JBU0goKTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCShyZXZpc2lvbiAyNjEwMzMpCisrKyBTb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xNDQsNyArMTQ0LDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIElQQzo6Q29ubmVjdGlv
bjo6Q2xpZW50CiAgICAgdm9pZCBkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mKSBmaW5hbDsKLSAg
ICB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OlN0
cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBt
ZXNzYWdlTmFtZSkgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlTmFtZSkgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNl
aXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKICAgICB2
b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXIm
LCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIGZpbmFsOwogCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcAkocmV2aXNpb24gMjYxMDMzKQorKysgU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI2NCw3ICsyNjQsNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpkaWRSCiAgICAgICAgIHJldHVybiBwYXltZW50Q29vcmRpbmF0b3IoKS5kaWRSZWNlaXZl
TWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKICNlbmRpZgogCi0gICAgV1RGTG9nQWx3YXlz
KCJVbmhhbmRsZWQgbmV0d29yayBwcm9jZXNzIG1lc3NhZ2UgJyVzOiVzJyIsIGRlY29kZXIubWVz
c2FnZVJlY2VpdmVyTmFtZSgpLnRvU3RyaW5nKCkuZGF0YSgpLCBkZWNvZGVyLm1lc3NhZ2VOYW1l
KCkudG9TdHJpbmcoKS5kYXRhKCkpOworICAgIFdURkxvZ0Fsd2F5cygiVW5oYW5kbGVkIG5ldHdv
cmsgcHJvY2VzcyBtZXNzYWdlICclcyciLCBkZXNjcmlwdGlvbihkZWNvZGVyLm1lc3NhZ2VOYW1l
KCkpKTsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIApAQCAtMzA3LDcgKzMwNyw3IEBA
IHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFIKICAgICAgICAgcmV0dXJu
IHBheW1lbnRDb29yZGluYXRvcigpLmRpZFJlY2VpdmVTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBk
ZWNvZGVyLCByZXBseSk7CiAjZW5kaWYKIAotICAgIFdURkxvZ0Fsd2F5cygiVW5oYW5kbGVkIG5l
dHdvcmsgcHJvY2VzcyBtZXNzYWdlICclczolcyciLCBkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5h
bWUoKS50b1N0cmluZygpLmRhdGEoKSwgZGVjb2Rlci5tZXNzYWdlTmFtZSgpLnRvU3RyaW5nKCku
ZGF0YSgpKTsKKyAgICBXVEZMb2dBbHdheXMoIlVuaGFuZGxlZCBuZXR3b3JrIHByb2Nlc3MgbWVz
c2FnZSAnJXMnIiwgZGVzY3JpcHRpb24oZGVjb2Rlci5tZXNzYWdlTmFtZSgpKSk7CiAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKQEAgLTM1Niw5ICszNTYsOSBAQCB2b2lkIE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRDCiAjZW5kaWYKIH0KIAotdm9pZCBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIElQQzo6U3Ry
aW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVz
c2FnZU5hbWUgbWVzc2FnZU5hbWUpCiB7Ci0gICAgUkVMRUFTRV9MT0dfRkFVTFQoSVBDLCAiUmVj
ZWl2ZWQgYW4gaW52YWxpZCBtZXNzYWdlICclIiBQVUJMSUNfTE9HX1NUUklORyAiOjolIiBQVUJM
SUNfTE9HX1NUUklORyAiJyBmcm9tIFdlYkNvbnRlbnQgcHJvY2VzcyAlIiBQUkl1NjQgIiwgcmVx
dWVzdGluZyBmb3IgaXQgdG8gYmUgdGVybWluYXRlZC4iLCBtZXNzYWdlUmVjZWl2ZXJOYW1lLnRv
U3RyaW5nKCkuZGF0YSgpLCBtZXNzYWdlTmFtZS50b1N0cmluZygpLmRhdGEoKSwgbV93ZWJQcm9j
ZXNzSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBSRUxFQVNFX0xPR19GQVVMVChJUEMsICJS
ZWNlaXZlZCBhbiBpbnZhbGlkIG1lc3NhZ2UgJyUiIFBVQkxJQ19MT0dfU1RSSU5HICInIGZyb20g
V2ViQ29udGVudCBwcm9jZXNzICUiIFBSSXU2NCAiLCByZXF1ZXN0aW5nIGZvciBpdCB0byBiZSB0
ZXJtaW5hdGVkLiIsIGRlc2NyaXB0aW9uKG1lc3NhZ2VOYW1lKSwgbV93ZWJQcm9jZXNzSWRlbnRp
Zmllci50b1VJbnQ2NCgpKTsKICAgICBtX25ldHdvcmtQcm9jZXNzLT5wYXJlbnRQcm9jZXNzQ29u
bmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpUZXJtaW5hdGVX
ZWJQcm9jZXNzKG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIpLCAwKTsKIH0KIApJbmRleDogU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuaAkocmV2aXNpb24gMjYxMDMzKQorKysgU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xODYsNyArMTg2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlk
UmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6
dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRDbG9zZShJ
UEM6OkNvbm5lY3Rpb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2
ZXJOYW1lLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZSkgb3ZlcnJpZGU7CisgICAg
dm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNz
YWdlTmFtZSkgb3ZlcnJpZGU7CiAKICAgICAvLyBNZXNzYWdlIGhhbmRsZXJzLgogICAgIHZvaWQg
ZGlkUmVjZWl2ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mLCBJUEM6OkRlY29kZXImKTsKQEAgLTMyNiw4ICszMjYsNiBAQCBwcml2YXRlOgogICAg
IGNvbnN0IFN0cmluZyYgcGF5bWVudENvb3JkaW5hdG9yU291cmNlQXBwbGljYXRpb25CdW5kbGVJ
ZGVudGlmaWVyKGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JikgZmluYWw7CiAgICAg
Y29uc3QgU3RyaW5nJiBwYXltZW50Q29vcmRpbmF0b3JTb3VyY2VBcHBsaWNhdGlvblNlY29uZGFy
eUlkZW50aWZpZXIoY29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmKSBmaW5hbDsKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8UGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXI+IHBheW1lbnRD
b29yZGluYXRvckF1dGhvcml6YXRpb25QcmVzZW50ZXIoV2ViUGF5bWVudENvb3JkaW5hdG9yUHJv
eHkmLCBQS1BheW1lbnRSZXF1ZXN0ICopIGZpbmFsOwotICAgIHZvaWQgcGF5bWVudENvb3JkaW5h
dG9yQWRkTWVzc2FnZVJlY2VpdmVyKFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JiwgY29uc3Qg
SVBDOjpTdHJpbmdSZWZlcmVuY2UmLCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYpIGZpbmFsOwotICAg
IHZvaWQgcGF5bWVudENvb3JkaW5hdG9yUmVtb3ZlTWVzc2FnZVJlY2VpdmVyKFdlYlBheW1lbnRD
b29yZGluYXRvclByb3h5JiwgY29uc3QgSVBDOjpTdHJpbmdSZWZlcmVuY2UmKSBmaW5hbDsKICNl
bmRpZgogCiAgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOwpJbmRleDogU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAJKHJldmlz
aW9uIDI2MTAzMykKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTQsNyArMjE0LDcgQEAgdm9pZCBOZXR3b3JrUHJv
Y2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSQogewogICAgIEFTU0VSVChwYXJlbnRQcm9jZXNzQ29u
bmVjdGlvbigpID09ICZjb25uZWN0aW9uKTsKICAgICBpZiAocGFyZW50UHJvY2Vzc0Nvbm5lY3Rp
b24oKSAhPSAmY29ubmVjdGlvbikgewotICAgICAgICBXVEZMb2dBbHdheXMoIklnbm9yZWQgbWVz
c2FnZSAnJXM6JXMnIGJlY2F1c2UgaXQgZGlkIG5vdCBjb21lIGZyb20gdGhlIFVJUHJvY2VzcyAo
ZGVzdGluYXRpb246ICUiIFBSSXU2NCAiKSIsIGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgp
LnRvU3RyaW5nKCkuZGF0YSgpLCBkZWNvZGVyLm1lc3NhZ2VOYW1lKCkudG9TdHJpbmcoKS5kYXRh
KCksIGRlY29kZXIuZGVzdGluYXRpb25JRCgpKTsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJJZ25v
cmVkIG1lc3NhZ2UgJyVzJyBiZWNhdXNlIGl0IGRpZCBub3QgY29tZSBmcm9tIHRoZSBVSVByb2Nl
c3MgKGRlc3RpbmF0aW9uOiAlIiBQUkl1NjQgIikiLCBkZXNjcmlwdGlvbihkZWNvZGVyLm1lc3Nh
Z2VOYW1lKCkpLCBkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSk7CiAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjQxLDcgKzI0MSw3IEBAIHZv
aWQgTmV0d29ya1Byb2Nlc3M6OmRpZFJlY2VpdmVTeW5jTWVzc2EKIHsKICAgICBBU1NFUlQocGFy
ZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKSA9PSAmY29ubmVjdGlvbik7CiAgICAgaWYgKHBhcmVudFBy
b2Nlc3NDb25uZWN0aW9uKCkgIT0gJmNvbm5lY3Rpb24pIHsKLSAgICAgICAgV1RGTG9nQWx3YXlz
KCJJZ25vcmVkIG1lc3NhZ2UgJyVzOiVzJyBiZWNhdXNlIGl0IGRpZCBub3QgY29tZSBmcm9tIHRo
ZSBVSVByb2Nlc3MgKGRlc3RpbmF0aW9uOiAlIiBQUkl1NjQgIikiLCBkZWNvZGVyLm1lc3NhZ2VS
ZWNlaXZlck5hbWUoKS50b1N0cmluZygpLmRhdGEoKSwgZGVjb2Rlci5tZXNzYWdlTmFtZSgpLnRv
U3RyaW5nKCkuZGF0YSgpLCBkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSk7CisgICAgICAgIFdURkxv
Z0Fsd2F5cygiSWdub3JlZCBtZXNzYWdlICclcycgYmVjYXVzZSBpdCBkaWQgbm90IGNvbWUgZnJv
bSB0aGUgVUlQcm9jZXNzIChkZXN0aW5hdGlvbjogJSIgUFJJdTY0ICIpIiwgZGVzY3JpcHRpb24o
ZGVjb2Rlci5tZXNzYWdlTmFtZSgpKSwgZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpOwogICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KSW5kZXg6IFNv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzSU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvaW9z
L05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzSU9TLm1tCShyZXZpc2lvbiAyNjEwMzMpCisr
KyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzc0lPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtODUsMTQgKzg1LDYgQEAgc3RkOjp1bmlx
dWVfcHRyPFBheW1lbnRBdXRob3JpemF0aW9uUHJlcwogICAgIHJldHVybiBtYWtlVW5pcXVlPFBh
eW1lbnRBdXRob3JpemF0aW9uQ29udHJvbGxlcj4oY29vcmRpbmF0b3IsIHJlcXVlc3QpOwogfQog
Ci12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpwYXltZW50Q29vcmRpbmF0b3JB
ZGRNZXNzYWdlUmVjZWl2ZXIoV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmLCBjb25zdCBJUEM6
OlN0cmluZ1JlZmVyZW5jZSYsIElQQzo6TWVzc2FnZVJlY2VpdmVyJikKLXsKLX0KLQotdm9pZCBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cGF5bWVudENvb3JkaW5hdG9yUmVtb3ZlTWVz
c2FnZVJlY2VpdmVyKFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JiwgY29uc3QgSVBDOjpTdHJp
bmdSZWZlcmVuY2UmKQotewotfQotCiAjZW5kaWYgLy8gRU5BQkxFKEFQUExFX1BBWV9SRU1PVEVf
VUkpCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvQ29ubmVjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvQ29ubmVjdGlvbi5jcHAJKHJldmlzaW9uIDI2MTAzMykKKysrIFNvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NCwyMSArNTQs
MTcgQEAgY29uc3Qgc2l6ZV90IG1heFBlbmRpbmdJbmNvbWluZ01lc3NhZ2VzSwogc3RkOjphdG9t
aWM8dW5zaWduZWQ+IFVuYm91bmRlZFN5bmNocm9ub3VzSVBDU2NvcGU6OnVuYm91bmRlZFN5bmNo
cm9ub3VzSVBDQ291bnQgPSAwOwogCiBzdHJ1Y3QgQ29ubmVjdGlvbjo6V2FpdEZvck1lc3NhZ2VT
dGF0ZSB7Ci0gICAgV2FpdEZvck1lc3NhZ2VTdGF0ZShTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJl
Y2VpdmVyTmFtZSwgU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lLCB1aW50NjRfdCBkZXN0aW5h
dGlvbklELCBPcHRpb25TZXQ8V2FpdEZvck9wdGlvbj4gd2FpdEZvck9wdGlvbnMpCi0gICAgICAg
IDogbWVzc2FnZVJlY2VpdmVyTmFtZShtZXNzYWdlUmVjZWl2ZXJOYW1lKQotICAgICAgICAsIG1l
c3NhZ2VOYW1lKG1lc3NhZ2VOYW1lKQorICAgIFdhaXRGb3JNZXNzYWdlU3RhdGUoTWVzc2FnZU5h
bWUgbWVzc2FnZU5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIE9wdGlvblNldDxXYWl0Rm9y
T3B0aW9uPiB3YWl0Rm9yT3B0aW9ucykKKyAgICAgICAgOiBtZXNzYWdlTmFtZShtZXNzYWdlTmFt
ZSkKICAgICAgICAgLCBkZXN0aW5hdGlvbklEKGRlc3RpbmF0aW9uSUQpCiAgICAgICAgICwgd2Fp
dEZvck9wdGlvbnMod2FpdEZvck9wdGlvbnMpCiAgICAgewogICAgIH0KIAotICAgIFN0cmluZ1Jl
ZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lOwotICAgIFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdl
TmFtZTsKKyAgICBNZXNzYWdlTmFtZSBtZXNzYWdlTmFtZTsKICAgICB1aW50NjRfdCBkZXN0aW5h
dGlvbklEOwotCiAgICAgT3B0aW9uU2V0PFdhaXRGb3JPcHRpb24+IHdhaXRGb3JPcHRpb25zOwog
ICAgIGJvb2wgbWVzc2FnZVdhaXRpbmdJbnRlcnJ1cHRlZCA9IGZhbHNlOwotCiAgICAgc3RkOjp1
bmlxdWVfcHRyPERlY29kZXI+IGRlY29kZXI7CiB9OwogCkBAIC0zMTUsMjMgKzMxMSwyMyBAQCB2
b2lkIENvbm5lY3Rpb246OnNldFNob3VsZEV4aXRPblN5bmNNZXNzCiAgICAgbV9zaG91bGRFeGl0
T25TeW5jTWVzc2FnZVNlbmRGYWlsdXJlID0gc2hvdWxkRXhpdE9uU3luY01lc3NhZ2VTZW5kRmFp
bHVyZTsKIH0KIAotdm9pZCBDb25uZWN0aW9uOjphZGRXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIo
U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIFdvcmtRdWV1ZSYgd29ya1F1ZXVl
LCBXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIqIHdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcikKK3Zv
aWQgQ29ubmVjdGlvbjo6YWRkV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKFJlY2VpdmVyTmFtZSBt
ZXNzYWdlUmVjZWl2ZXJOYW1lLCBXb3JrUXVldWUmIHdvcmtRdWV1ZSwgV29ya1F1ZXVlTWVzc2Fn
ZVJlY2VpdmVyKiB3b3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIpCiB7CiAgICAgQVNTRVJUKFJ1bkxv
b3A6OmlzTWFpbigpKTsKIAogICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV93b3JrUXVldWVN
ZXNzYWdlUmVjZWl2ZXJzTXV0ZXgpOwotICAgIEFTU0VSVCghbV93b3JrUXVldWVNZXNzYWdlUmVj
ZWl2ZXJzLmNvbnRhaW5zKG1lc3NhZ2VSZWNlaXZlck5hbWUpKTsKKyAgICBBU1NFUlQoIW1fd29y
a1F1ZXVlTWVzc2FnZVJlY2VpdmVycy5jb250YWlucyhzdGF0aWNfY2FzdDx1aW50OF90PihtZXNz
YWdlUmVjZWl2ZXJOYW1lKSkpOwogCi0gICAgbV93b3JrUXVldWVNZXNzYWdlUmVjZWl2ZXJzLmFk
ZChtZXNzYWdlUmVjZWl2ZXJOYW1lLCBzdGQ6Om1ha2VfcGFpcigmd29ya1F1ZXVlLCB3b3JrUXVl
dWVNZXNzYWdlUmVjZWl2ZXIpKTsKKyAgICBtX3dvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcnMuYWRk
KHN0YXRpY19jYXN0PHVpbnQ4X3Q+KG1lc3NhZ2VSZWNlaXZlck5hbWUpLCBzdGQ6Om1ha2VfcGFp
cigmd29ya1F1ZXVlLCB3b3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIpKTsKIH0KIAotdm9pZCBDb25u
ZWN0aW9uOjpyZW1vdmVXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIoU3RyaW5nUmVmZXJlbmNlIG1l
c3NhZ2VSZWNlaXZlck5hbWUpCit2b2lkIENvbm5lY3Rpb246OnJlbW92ZVdvcmtRdWV1ZU1lc3Nh
Z2VSZWNlaXZlcihSZWNlaXZlck5hbWUgbWVzc2FnZVJlY2VpdmVyTmFtZSkKIHsKICAgICBBU1NF
UlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3dv
cmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcnNNdXRleCk7Ci0gICAgQVNTRVJUKG1fd29ya1F1ZXVlTWVz
c2FnZVJlY2VpdmVycy5jb250YWlucyhtZXNzYWdlUmVjZWl2ZXJOYW1lKSk7Ci0gICAgbV93b3Jr
UXVldWVNZXNzYWdlUmVjZWl2ZXJzLnJlbW92ZShtZXNzYWdlUmVjZWl2ZXJOYW1lKTsKKyAgICBB
U1NFUlQobV93b3JrUXVldWVNZXNzYWdlUmVjZWl2ZXJzLmNvbnRhaW5zKHN0YXRpY19jYXN0PHVp
bnQ4X3Q+KG1lc3NhZ2VSZWNlaXZlck5hbWUpKSk7CisgICAgbV93b3JrUXVldWVNZXNzYWdlUmVj
ZWl2ZXJzLnJlbW92ZShzdGF0aWNfY2FzdDx1aW50OF90PihtZXNzYWdlUmVjZWl2ZXJOYW1lKSk7
CiB9CiAKIHZvaWQgQ29ubmVjdGlvbjo6ZGlzcGF0Y2hXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXJN
ZXNzYWdlKFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlciYgd29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVy
LCBEZWNvZGVyJiBkZWNvZGVyKQpAQCAtMzQ5LDcgKzM0NSw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6
ZGlzcGF0Y2hXb3JrUXVldWVNZXNzYWcKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1
dG8gcmVwbHlFbmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNvZGVyPigiSVBDIiwgIlN5bmNNZXNzYWdl
UmVwbHkiLCBzeW5jUmVxdWVzdElEKTsKKyAgICBhdXRvIHJlcGx5RW5jb2RlciA9IG1ha2VVbmlx
dWU8RW5jb2Rlcj4oTWVzc2FnZU5hbWU6OlN5bmNNZXNzYWdlUmVwbHksIHN5bmNSZXF1ZXN0SUQp
OwogCiAgICAgLy8gSGFuZCBvZmYgYm90aCB0aGUgZGVjb2RlciBhbmQgZW5jb2RlciB0byB0aGUg
d29yayBxdWV1ZSBtZXNzYWdlIHJlY2VpdmVyLgogICAgIHdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZl
ci5kaWRSZWNlaXZlU3luY01lc3NhZ2UoKnRoaXMsIGRlY29kZXIsIHJlcGx5RW5jb2Rlcik7CkBA
IC0zNjEsMjQgKzM1NywyNCBAQCB2b2lkIENvbm5lY3Rpb246OmRpc3BhdGNoV29ya1F1ZXVlTWVz
c2FnCiAgICAgICAgIHNlbmRTeW5jUmVwbHkoV1RGTW92ZShyZXBseUVuY29kZXIpKTsKIH0KIAot
dm9pZCBDb25uZWN0aW9uOjphZGRUaHJlYWRNZXNzYWdlUmVjZWl2ZXIoU3RyaW5nUmVmZXJlbmNl
IG1lc3NhZ2VSZWNlaXZlck5hbWUsIFRocmVhZE1lc3NhZ2VSZWNlaXZlciogdGhyZWFkTWVzc2Fn
ZVJlY2VpdmVyKQordm9pZCBDb25uZWN0aW9uOjphZGRUaHJlYWRNZXNzYWdlUmVjZWl2ZXIoUmVj
ZWl2ZXJOYW1lIG1lc3NhZ2VSZWNlaXZlck5hbWUsIFRocmVhZE1lc3NhZ2VSZWNlaXZlciogdGhy
ZWFkTWVzc2FnZVJlY2VpdmVyKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAK
ICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fdGhyZWFkTWVzc2FnZVJlY2VpdmVyc0xvY2sp
OwotICAgIEFTU0VSVCghbV90aHJlYWRNZXNzYWdlUmVjZWl2ZXJzLmNvbnRhaW5zKG1lc3NhZ2VS
ZWNlaXZlck5hbWUpKTsKKyAgICBBU1NFUlQoIW1fdGhyZWFkTWVzc2FnZVJlY2VpdmVycy5jb250
YWlucyhzdGF0aWNfY2FzdDx1aW50OF90PihtZXNzYWdlUmVjZWl2ZXJOYW1lKSkpOwogCi0gICAg
bV90aHJlYWRNZXNzYWdlUmVjZWl2ZXJzLmFkZChtZXNzYWdlUmVjZWl2ZXJOYW1lLCB0aHJlYWRN
ZXNzYWdlUmVjZWl2ZXIpOworICAgIG1fdGhyZWFkTWVzc2FnZVJlY2VpdmVycy5hZGQoc3RhdGlj
X2Nhc3Q8dWludDhfdD4obWVzc2FnZVJlY2VpdmVyTmFtZSksIHRocmVhZE1lc3NhZ2VSZWNlaXZl
cik7CiB9CiAKLXZvaWQgQ29ubmVjdGlvbjo6cmVtb3ZlVGhyZWFkTWVzc2FnZVJlY2VpdmVyKFN0
cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lKQordm9pZCBDb25uZWN0aW9uOjpyZW1v
dmVUaHJlYWRNZXNzYWdlUmVjZWl2ZXIoUmVjZWl2ZXJOYW1lIG1lc3NhZ2VSZWNlaXZlck5hbWUp
CiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAgIGF1dG8gbG9ja2VyID0g
aG9sZExvY2sobV90aHJlYWRNZXNzYWdlUmVjZWl2ZXJzTG9jayk7Ci0gICAgQVNTRVJUKG1fdGhy
ZWFkTWVzc2FnZVJlY2VpdmVycy5jb250YWlucyhtZXNzYWdlUmVjZWl2ZXJOYW1lKSk7CisgICAg
QVNTRVJUKG1fdGhyZWFkTWVzc2FnZVJlY2VpdmVycy5jb250YWlucyhzdGF0aWNfY2FzdDx1aW50
OF90PihtZXNzYWdlUmVjZWl2ZXJOYW1lKSkpOwogCi0gICAgbV90aHJlYWRNZXNzYWdlUmVjZWl2
ZXJzLnJlbW92ZShtZXNzYWdlUmVjZWl2ZXJOYW1lKTsKKyAgICBtX3RocmVhZE1lc3NhZ2VSZWNl
aXZlcnMucmVtb3ZlKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KG1lc3NhZ2VSZWNlaXZlck5hbWUpKTsK
IH0KIAogdm9pZCBDb25uZWN0aW9uOjpkaXNwYXRjaFRocmVhZE1lc3NhZ2VSZWNlaXZlck1lc3Nh
Z2UoVGhyZWFkTWVzc2FnZVJlY2VpdmVyJiB0aHJlYWRNZXNzYWdlUmVjZWl2ZXIsIERlY29kZXIm
IGRlY29kZXIpCkBAIC0zOTUsNyArMzkxLDcgQEAgdm9pZCBDb25uZWN0aW9uOjpkaXNwYXRjaFRo
cmVhZE1lc3NhZ2VSZQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byByZXBseUVu
Y29kZXIgPSBtYWtlVW5pcXVlPEVuY29kZXI+KCJJUEMiLCAiU3luY01lc3NhZ2VSZXBseSIsIHN5
bmNSZXF1ZXN0SUQpOworICAgIGF1dG8gcmVwbHlFbmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNvZGVy
PihNZXNzYWdlTmFtZTo6U3luY01lc3NhZ2VSZXBseSwgc3luY1JlcXVlc3RJRCk7CiAgICAgdGhy
ZWFkTWVzc2FnZVJlY2VpdmVyLmRpZFJlY2VpdmVTeW5jTWVzc2FnZSgqdGhpcywgZGVjb2Rlciwg
cmVwbHlFbmNvZGVyKTsKIAogICAgIC8vIEZJWE1FOiBJZiB0aGUgbWVzc2FnZSB3YXMgaW52YWxp
ZCwgd2Ugc2hvdWxkIHNlbmQgYmFjayBhIFN5bmNNZXNzYWdlRXJyb3IuCkBAIC00MzYsOSArNDMy
LDkgQEAgdm9pZCBDb25uZWN0aW9uOjptYXJrQ3VycmVudGx5RGlzcGF0Y2hlZAogICAgIG1fZGlk
UmVjZWl2ZUludmFsaWRNZXNzYWdlID0gdHJ1ZTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEVuY29k
ZXI+IENvbm5lY3Rpb246OmNyZWF0ZVN5bmNNZXNzYWdlRW5jb2RlcihTdHJpbmdSZWZlcmVuY2Ug
bWVzc2FnZVJlY2VpdmVyTmFtZSwgU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lLCB1aW50NjRf
dCBkZXN0aW5hdGlvbklELCB1aW50NjRfdCYgc3luY1JlcXVlc3RJRCkKK3N0ZDo6dW5pcXVlX3B0
cjxFbmNvZGVyPiBDb25uZWN0aW9uOjpjcmVhdGVTeW5jTWVzc2FnZUVuY29kZXIoTWVzc2FnZU5h
bWUgbWVzc2FnZU5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIHVpbnQ2NF90JiBzeW5jUmVx
dWVzdElEKQogewotICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWU8RW5jb2Rlcj4obWVzc2Fn
ZVJlY2VpdmVyTmFtZSwgbWVzc2FnZU5hbWUsIGRlc3RpbmF0aW9uSUQpOworICAgIGF1dG8gZW5j
b2RlciA9IG1ha2VVbmlxdWU8RW5jb2Rlcj4obWVzc2FnZU5hbWUsIGRlc3RpbmF0aW9uSUQpOwog
ICAgIGVuY29kZXItPnNldElzU3luY01lc3NhZ2UodHJ1ZSk7CiAKICAgICAvLyBFbmNvZGUgdGhl
IHN5bmMgcmVxdWVzdCBJRC4KQEAgLTQ1Myw5ICs0NDksOSBAQCBib29sIENvbm5lY3Rpb246OnNl
bmRNZXNzYWdlKHN0ZDo6dW5pcXVlCiAgICAgaWYgKCFpc1ZhbGlkKCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIGlmIChpc01haW5UaHJlYWQoKSAmJiBtX2luRGlzcGF0Y2hNZXNzYWdl
TWFya2VkVG9Vc2VGdWxseVN5bmNocm9ub3VzTW9kZUZvclRlc3RpbmcgJiYgIWVuY29kZXItPmlz
U3luY01lc3NhZ2UoKSAmJiAhKGVuY29kZXItPm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSAiSVBD
IikgJiYgIXNlbmRPcHRpb25zLmNvbnRhaW5zKFNlbmRPcHRpb246Oklnbm9yZUZ1bGx5U3luY2hy
b25vdXNNb2RlKSkgeworICAgIGlmIChpc01haW5UaHJlYWQoKSAmJiBtX2luRGlzcGF0Y2hNZXNz
YWdlTWFya2VkVG9Vc2VGdWxseVN5bmNocm9ub3VzTW9kZUZvclRlc3RpbmcgJiYgIWVuY29kZXIt
PmlzU3luY01lc3NhZ2UoKSAmJiAhKGVuY29kZXItPm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBS
ZWNlaXZlck5hbWU6OklQQykgJiYgIXNlbmRPcHRpb25zLmNvbnRhaW5zKFNlbmRPcHRpb246Okln
bm9yZUZ1bGx5U3luY2hyb25vdXNNb2RlKSkgewogICAgICAgICB1aW50NjRfdCBzeW5jUmVxdWVz
dElEOwotICAgICAgICBhdXRvIHdyYXBwZWRNZXNzYWdlID0gY3JlYXRlU3luY01lc3NhZ2VFbmNv
ZGVyKCJJUEMiLCAiV3JhcHBlZEFzeW5jTWVzc2FnZUZvclRlc3RpbmciLCBlbmNvZGVyLT5kZXN0
aW5hdGlvbklEKCksIHN5bmNSZXF1ZXN0SUQpOworICAgICAgICBhdXRvIHdyYXBwZWRNZXNzYWdl
ID0gY3JlYXRlU3luY01lc3NhZ2VFbmNvZGVyKE1lc3NhZ2VOYW1lOjpXcmFwcGVkQXN5bmNNZXNz
YWdlRm9yVGVzdGluZywgZW5jb2Rlci0+ZGVzdGluYXRpb25JRCgpLCBzeW5jUmVxdWVzdElEKTsK
ICAgICAgICAgd3JhcHBlZE1lc3NhZ2UtPnNldEZ1bGx5U3luY2hyb25vdXNNb2RlRm9yVGVzdGlu
ZygpOwogICAgICAgICB3cmFwcGVkTWVzc2FnZS0+d3JhcEZvclRlc3RpbmcoV1RGTW92ZShlbmNv
ZGVyKSk7CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxib29sPihzZW5kU3luY01lc3NhZ2Uo
c3luY1JlcXVlc3RJRCwgV1RGTW92ZSh3cmFwcGVkTWVzc2FnZSksIFNlY29uZHM6OmluZmluaXR5
KCksIHsgfSkpOwpAQCAtNDkwLDcgKzQ4Niw3IEBAIFNlY29uZHMgQ29ubmVjdGlvbjo6dGltZW91
dFJlc3BlY3RpbmdJZ24KICAgICByZXR1cm4gbV9pZ25vcmVUaW1lb3V0c0ZvclRlc3RpbmcgPyBT
ZWNvbmRzOjppbmZpbml0eSgpIDogdGltZW91dDsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPERlY29k
ZXI+IENvbm5lY3Rpb246OndhaXRGb3JNZXNzYWdlKFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVj
ZWl2ZXJOYW1lLCBTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0
aW9uSUQsIFNlY29uZHMgdGltZW91dCwgT3B0aW9uU2V0PFdhaXRGb3JPcHRpb24+IHdhaXRGb3JP
cHRpb25zKQorc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IENvbm5lY3Rpb246OndhaXRGb3JNZXNz
YWdlKE1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBTZWNv
bmRzIHRpbWVvdXQsIE9wdGlvblNldDxXYWl0Rm9yT3B0aW9uPiB3YWl0Rm9yT3B0aW9ucykKIHsK
ICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIGF1dG8gcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpOwpAQCAtNTA2LDcgKzUwMiw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxEZWNv
ZGVyPiBDb25uZWN0aW9uOjp3YWkKICAgICAgICAgZm9yIChhdXRvIGl0ID0gbV9pbmNvbWluZ01l
c3NhZ2VzLmJlZ2luKCksIGVuZCA9IG1faW5jb21pbmdNZXNzYWdlcy5lbmQoKTsgaXQgIT0gZW5k
OyArK2l0KSB7CiAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4mIG1lc3NhZ2Ug
PSAqaXQ7CiAKLSAgICAgICAgICAgIGlmIChtZXNzYWdlLT5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkg
PT0gbWVzc2FnZVJlY2VpdmVyTmFtZSAmJiBtZXNzYWdlLT5tZXNzYWdlTmFtZSgpID09IG1lc3Nh
Z2VOYW1lICYmIG1lc3NhZ2UtPmRlc3RpbmF0aW9uSUQoKSA9PSBkZXN0aW5hdGlvbklEKSB7Cisg
ICAgICAgICAgICBpZiAobWVzc2FnZS0+bWVzc2FnZU5hbWUoKSA9PSBtZXNzYWdlTmFtZSAmJiBt
ZXNzYWdlLT5kZXN0aW5hdGlvbklEKCkgPT0gZGVzdGluYXRpb25JRCkgewogICAgICAgICAgICAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiByZXR1cm5lZE1lc3NhZ2UgPSBXVEZNb3ZlKG1l
c3NhZ2UpOwogCiAgICAgICAgICAgICAgICAgbV9pbmNvbWluZ01lc3NhZ2VzLnJlbW92ZShpdCk7
CkBAIC01MjgsNyArNTI0LDcgQEAgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IENvbm5lY3Rpb246
OndhaQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBXYWl0Rm9yTWVzc2Fn
ZVN0YXRlIHdhaXRpbmdGb3JNZXNzYWdlKG1lc3NhZ2VSZWNlaXZlck5hbWUsIG1lc3NhZ2VOYW1l
LCBkZXN0aW5hdGlvbklELCB3YWl0Rm9yT3B0aW9ucyk7CisgICAgV2FpdEZvck1lc3NhZ2VTdGF0
ZSB3YWl0aW5nRm9yTWVzc2FnZShtZXNzYWdlTmFtZSwgZGVzdGluYXRpb25JRCwgd2FpdEZvck9w
dGlvbnMpOwogCiAgICAgewogICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fd2FpdEZv
ck1lc3NhZ2VNdXRleCk7CkBAIC02MDAsMTQgKzU5NiwxMyBAQCBzdGQ6OnVuaXF1ZV9wdHI8RGVj
b2Rlcj4gQ29ubmVjdGlvbjo6c2VuCiAgICAgaWYgKHNlbmRTeW5jT3B0aW9ucy5jb250YWlucyhT
ZW5kU3luY09wdGlvbjo6Rm9yY2VEaXNwYXRjaFdoZW5EZXN0aW5hdGlvbklzV2FpdGluZ0ZvclVu
Ym91bmRlZFN5bmNSZXBseSkpCiAgICAgICAgIHNlbmRPcHRpb25zID0gc2VuZE9wdGlvbnMgfCBJ
UEM6OlNlbmRPcHRpb246OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclVuYm91bmRl
ZFN5bmNSZXBseTsKIAotICAgIGF1dG8gbWVzc2FnZVJlY2VpdmVyTmFtZSA9IGVuY29kZXItPm1l
c3NhZ2VSZWNlaXZlck5hbWUoKTsKICAgICBhdXRvIG1lc3NhZ2VOYW1lID0gZW5jb2Rlci0+bWVz
c2FnZU5hbWUoKTsKICAgICBzZW5kTWVzc2FnZShXVEZNb3ZlKGVuY29kZXIpLCBzZW5kT3B0aW9u
cyk7CiAKICAgICAvLyBUaGVuIHdhaXQgZm9yIGEgcmVwbHkuIFdhaXRpbmcgZm9yIGEgcmVwbHkg
Y291bGQgaW52b2x2ZSBkaXNwYXRjaGluZyBpbmNvbWluZyBzeW5jIG1lc3NhZ2VzLCBzbwogICAg
IC8vIGtlZXAgYW4gZXh0cmEgcmVmZXJlbmNlIHRvIHRoZSBjb25uZWN0aW9uIGhlcmUgaW4gY2Fz
ZSBpdCdzIGludmFsaWRhdGVkLgogICAgIFJlZjxDb25uZWN0aW9uPiBwcm90ZWN0KCp0aGlzKTsK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gcmVwbHkgPSB3YWl0Rm9yU3luY1JlcGx5KHN5
bmNSZXF1ZXN0SUQsIG1lc3NhZ2VSZWNlaXZlck5hbWUsIG1lc3NhZ2VOYW1lLCB0aW1lb3V0LCBz
ZW5kU3luY09wdGlvbnMpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiByZXBseSA9IHdh
aXRGb3JTeW5jUmVwbHkoc3luY1JlcXVlc3RJRCwgbWVzc2FnZU5hbWUsIHRpbWVvdXQsIHNlbmRT
eW5jT3B0aW9ucyk7CiAKICAgICAtLW1faW5TZW5kU3luY0NvdW50OwogCkBAIC02MjQsNyArNjE5
LDcgQEAgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IENvbm5lY3Rpb246OnNlbgogICAgIHJldHVy
biByZXBseTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IENvbm5lY3Rpb246OndhaXRG
b3JTeW5jUmVwbHkodWludDY0X3Qgc3luY1JlcXVlc3RJRCwgU3RyaW5nUmVmZXJlbmNlIG1lc3Nh
Z2VSZWNlaXZlck5hbWUsIFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZSwgU2Vjb25kcyB0aW1l
b3V0LCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucykKK3N0ZDo6dW5p
cXVlX3B0cjxEZWNvZGVyPiBDb25uZWN0aW9uOjp3YWl0Rm9yU3luY1JlcGx5KHVpbnQ2NF90IHN5
bmNSZXF1ZXN0SUQsIE1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lLCBTZWNvbmRzIHRpbWVvdXQsIE9w
dGlvblNldDxTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zKQogewogICAgIHRpbWVvdXQg
PSB0aW1lb3V0UmVzcGVjdGluZ0lnbm9yZVRpbWVvdXRzRm9yVGVzdGluZyh0aW1lb3V0KTsKICAg
ICBNb25vdG9uaWNUaW1lIGFic29sdXRlVGltZSA9IE1vbm90b25pY1RpbWU6Om5vdygpICsgdGlt
ZW91dDsKQEAgLTY2OSw5ICs2NjQsOSBAQCBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gQ29ubmVj
dGlvbjo6d2FpCiAgICAgfQogCiAjaWYgT1MoREFSV0lOKQotICAgIFJFTEVBU0VfTE9HX0VSUk9S
KElQQywgIkNvbm5lY3Rpb246OndhaXRGb3JTeW5jUmVwbHk6IFRpbWVkLW91dCB3aGlsZSB3YWl0
aW5nIGZvciByZXBseSBmb3IgJXtwdWJsaWN9czo6JXtwdWJsaWN9cyBmcm9tIHByb2Nlc3MgJWQs
IGlkID0gJSIgUFJJdTY0LCBtZXNzYWdlUmVjZWl2ZXJOYW1lLnRvU3RyaW5nKCkuZGF0YSgpLCBt
ZXNzYWdlTmFtZS50b1N0cmluZygpLmRhdGEoKSwgcmVtb3RlUHJvY2Vzc0lEKCksIHN5bmNSZXF1
ZXN0SUQpOworICAgIFJFTEVBU0VfTE9HX0VSUk9SKElQQywgIkNvbm5lY3Rpb246OndhaXRGb3JT
eW5jUmVwbHk6IFRpbWVkLW91dCB3aGlsZSB3YWl0aW5nIGZvciByZXBseSBmb3IgJXtwdWJsaWN9
cyBmcm9tIHByb2Nlc3MgJWQsIGlkID0gJSIgUFJJdTY0LCBkZXNjcmlwdGlvbihtZXNzYWdlTmFt
ZSksIHJlbW90ZVByb2Nlc3NJRCgpLCBzeW5jUmVxdWVzdElEKTsKICNlbHNlCi0gICAgUkVMRUFT
RV9MT0dfRVJST1IoSVBDLCAiQ29ubmVjdGlvbjo6d2FpdEZvclN5bmNSZXBseTogVGltZWQtb3V0
IHdoaWxlIHdhaXRpbmcgZm9yIHJlcGx5IGZvciAlczo6JXMsIGlkID0gJSIgUFJJdTY0LCBtZXNz
YWdlUmVjZWl2ZXJOYW1lLnRvU3RyaW5nKCkuZGF0YSgpLCBtZXNzYWdlTmFtZS50b1N0cmluZygp
LmRhdGEoKSwgc3luY1JlcXVlc3RJRCk7CisgICAgUkVMRUFTRV9MT0dfRVJST1IoSVBDLCAiQ29u
bmVjdGlvbjo6d2FpdEZvclN5bmNSZXBseTogVGltZWQtb3V0IHdoaWxlIHdhaXRpbmcgZm9yIHJl
cGx5IGZvciAlcywgaWQgPSAlIiBQUkl1NjQsIGRlc2NyaXB0aW9uKG1lc3NhZ2VOYW1lKSwgc3lu
Y1JlcXVlc3RJRCk7CiAjZW5kaWYKIAogICAgIGRpZFJlY2VpdmVTeW5jUmVwbHkoc2VuZFN5bmNP
cHRpb25zKTsKQEAgLTcxMSwyMyArNzA2LDE2IEBAIHZvaWQgQ29ubmVjdGlvbjo6cHJvY2Vzc0lu
Y29taW5nU3luY1JlcGwKIAogdm9pZCBDb25uZWN0aW9uOjpwcm9jZXNzSW5jb21pbmdNZXNzYWdl
KHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiBtZXNzYWdlKQogewotICAgIEFTU0VSVCghbWVzc2Fn
ZS0+bWVzc2FnZVJlY2VpdmVyTmFtZSgpLmlzRW1wdHkoKSk7Ci0gICAgQVNTRVJUKCFtZXNzYWdl
LT5tZXNzYWdlTmFtZSgpLmlzRW1wdHkoKSk7CisgICAgQVNTRVJUKG1lc3NhZ2UtPm1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSAhPSBSZWNlaXZlck5hbWU6OkludmFsaWQpOwogCi0gICAgaWYgKG1lc3Nh
Z2UtPm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSAiSVBDIiAmJiBtZXNzYWdlLT5tZXNzYWdlTmFt
ZSgpID09ICJTeW5jTWVzc2FnZVJlcGx5IikgeworICAgIGlmIChtZXNzYWdlLT5tZXNzYWdlTmFt
ZSgpID09IE1lc3NhZ2VOYW1lOjpTeW5jTWVzc2FnZVJlcGx5KSB7CiAgICAgICAgIHByb2Nlc3NJ
bmNvbWluZ1N5bmNSZXBseShXVEZNb3ZlKG1lc3NhZ2UpKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIGlmICghV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyTWFwOjppc1ZhbGlkS2V5KG1l
c3NhZ2UtPm1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgfHwgIVRocmVhZE1lc3NhZ2VSZWNlaXZlck1h
cDo6aXNWYWxpZEtleShtZXNzYWdlLT5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkpKSB7Ci0gICAgICAg
IFJlZlB0cjxDb25uZWN0aW9uPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwotICAgICAgICBTdHJpbmdS
ZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZVJlZmVyZW5jZSA9IG1lc3NhZ2UtPm1lc3NhZ2VS
ZWNlaXZlck5hbWUoKTsKLSAgICAgICAgU3RyaW5nIG1lc3NhZ2VSZWNlaXZlck5hbWUobWVzc2Fn
ZVJlY2VpdmVyTmFtZVJlZmVyZW5jZS5pc0VtcHR5KCkgPyAiPHVua25vd24gbWVzc2FnZSByZWNl
aXZlcj4iIDogU3RyaW5nKG1lc3NhZ2VSZWNlaXZlck5hbWVSZWZlcmVuY2UuZGF0YSgpLCBtZXNz
YWdlUmVjZWl2ZXJOYW1lUmVmZXJlbmNlLnNpemUoKSkpOwotICAgICAgICBTdHJpbmdSZWZlcmVu
Y2UgbWVzc2FnZU5hbWVSZWZlcmVuY2UgPSBtZXNzYWdlLT5tZXNzYWdlTmFtZSgpOwotICAgICAg
ICBTdHJpbmcgbWVzc2FnZU5hbWUobWVzc2FnZU5hbWVSZWZlcmVuY2UuaXNFbXB0eSgpID8gIjx1
bmtub3duIG1lc3NhZ2U+IiA6IFN0cmluZyhtZXNzYWdlTmFtZVJlZmVyZW5jZS5kYXRhKCksIG1l
c3NhZ2VOYW1lUmVmZXJlbmNlLnNpemUoKSkpOwotCi0gICAgICAgIFJ1bkxvb3A6Om1haW4oKS5k
aXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBtZXNzYWdlUmVjZWl2ZXJO
YW1lID0gV1RGTW92ZShtZXNzYWdlUmVjZWl2ZXJOYW1lKSwgbWVzc2FnZU5hbWUgPSBXVEZNb3Zl
KG1lc3NhZ2VOYW1lKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPmRp
c3BhdGNoRGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKG1lc3NhZ2VSZWNlaXZlck5hbWUudXRmOCgp
LCBtZXNzYWdlTmFtZS51dGY4KCkpOworICAgIGlmICghV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVy
TWFwOjppc1ZhbGlkS2V5KHN0YXRpY19jYXN0PHVpbnQ4X3Q+KG1lc3NhZ2UtPm1lc3NhZ2VSZWNl
aXZlck5hbWUoKSkpIHx8ICFUaHJlYWRNZXNzYWdlUmVjZWl2ZXJNYXA6OmlzVmFsaWRLZXkoc3Rh
dGljX2Nhc3Q8dWludDhfdD4obWVzc2FnZS0+bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSkpIHsKKyAg
ICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyksIG1lc3NhZ2VOYW1lID0gbWVzc2FnZS0+bWVzc2FnZU5hbWUoKV0oKSBtdXRhYmxlIHsK
KyAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPmRpc3BhdGNoRGlkUmVjZWl2ZUludmFsaWRNZXNz
YWdlKG1lc3NhZ2VOYW1lKTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBA
IC03NTksNyArNzQ3LDcgQEAgdm9pZCBDb25uZWN0aW9uOjpwcm9jZXNzSW5jb21pbmdNZXNzYWdl
KAogICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fd2FpdEZvck1lc3NhZ2VNdXRleCk7
CiAKICAgICAgICAgaWYgKG1fd2FpdGluZ0Zvck1lc3NhZ2UgJiYgIW1fd2FpdGluZ0Zvck1lc3Nh
Z2UtPmRlY29kZXIpIHsKLSAgICAgICAgICAgIGlmIChtX3dhaXRpbmdGb3JNZXNzYWdlLT5tZXNz
YWdlUmVjZWl2ZXJOYW1lID09IG1lc3NhZ2UtPm1lc3NhZ2VSZWNlaXZlck5hbWUoKSAmJiBtX3dh
aXRpbmdGb3JNZXNzYWdlLT5tZXNzYWdlTmFtZSA9PSBtZXNzYWdlLT5tZXNzYWdlTmFtZSgpICYm
IG1fd2FpdGluZ0Zvck1lc3NhZ2UtPmRlc3RpbmF0aW9uSUQgPT0gbWVzc2FnZS0+ZGVzdGluYXRp
b25JRCgpKSB7CisgICAgICAgICAgICBpZiAobV93YWl0aW5nRm9yTWVzc2FnZS0+bWVzc2FnZU5h
bWUgPT0gbWVzc2FnZS0+bWVzc2FnZU5hbWUoKSAmJiBtX3dhaXRpbmdGb3JNZXNzYWdlLT5kZXN0
aW5hdGlvbklEID09IG1lc3NhZ2UtPmRlc3RpbmF0aW9uSUQoKSkgewogICAgICAgICAgICAgICAg
IG1fd2FpdGluZ0Zvck1lc3NhZ2UtPmRlY29kZXIgPSBXVEZNb3ZlKG1lc3NhZ2UpOwogICAgICAg
ICAgICAgICAgIEFTU0VSVChtX3dhaXRpbmdGb3JNZXNzYWdlLT5kZWNvZGVyKTsKICAgICAgICAg
ICAgICAgICBtX3dhaXRGb3JNZXNzYWdlQ29uZGl0aW9uLm5vdGlmeU9uZSgpOwpAQCAtOTEyLDkg
KzkwMCw5IEBAIHZvaWQgQ29ubmVjdGlvbjo6ZGlzcGF0Y2hTeW5jTWVzc2FnZShEZWMKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gcmVwbHlFbmNvZGVyID0gbWFrZVVuaXF1ZTxF
bmNvZGVyPigiSVBDIiwgIlN5bmNNZXNzYWdlUmVwbHkiLCBzeW5jUmVxdWVzdElEKTsKKyAgICBh
dXRvIHJlcGx5RW5jb2RlciA9IG1ha2VVbmlxdWU8RW5jb2Rlcj4oTWVzc2FnZU5hbWU6OlN5bmNN
ZXNzYWdlUmVwbHksIHN5bmNSZXF1ZXN0SUQpOwogCi0gICAgaWYgKGRlY29kZXIubWVzc2FnZVJl
Y2VpdmVyTmFtZSgpID09ICJJUEMiICYmIGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSAiV3JhcHBl
ZEFzeW5jTWVzc2FnZUZvclRlc3RpbmciKSB7CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUo
KSA9PSBNZXNzYWdlTmFtZTo6V3JhcHBlZEFzeW5jTWVzc2FnZUZvclRlc3RpbmcpIHsKICAgICAg
ICAgaWYgKCFtX2Z1bGx5U3luY2hyb25vdXNNb2RlSXNBbGxvd2VkRm9yVGVzdGluZykgewogICAg
ICAgICAgICAgZGVjb2Rlci5tYXJrSW52YWxpZCgpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAt
OTM2LDE0ICs5MjQsMTQgQEAgdm9pZCBDb25uZWN0aW9uOjpkaXNwYXRjaFN5bmNNZXNzYWdlKERl
YwogICAgICAgICBzZW5kU3luY1JlcGx5KFdURk1vdmUocmVwbHlFbmNvZGVyKSk7CiB9CiAKLXZv
aWQgQ29ubmVjdGlvbjo6ZGlzcGF0Y2hEaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoY29uc3QgQ1N0
cmluZyYgbWVzc2FnZVJlY2VpdmVyTmFtZVN0cmluZywgY29uc3QgQ1N0cmluZyYgbWVzc2FnZU5h
bWVTdHJpbmcpCit2b2lkIENvbm5lY3Rpb246OmRpc3BhdGNoRGlkUmVjZWl2ZUludmFsaWRNZXNz
YWdlKE1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01h
aW4oKSk7CiAKICAgICBpZiAoIWlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9j
bGllbnQuZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKCp0aGlzLCBTdHJpbmdSZWZlcmVuY2UobWVz
c2FnZVJlY2VpdmVyTmFtZVN0cmluZy5kYXRhKCksIG1lc3NhZ2VSZWNlaXZlck5hbWVTdHJpbmcu
bGVuZ3RoKCkpLCBTdHJpbmdSZWZlcmVuY2UobWVzc2FnZU5hbWVTdHJpbmcuZGF0YSgpLCBtZXNz
YWdlTmFtZVN0cmluZy5sZW5ndGgoKSkpOworICAgIG1fY2xpZW50LmRpZFJlY2VpdmVJbnZhbGlk
TWVzc2FnZSgqdGhpcywgbWVzc2FnZU5hbWUpOwogfQogCiB2b2lkIENvbm5lY3Rpb246OmRpZEZh
aWxUb1NlbmRTeW5jTWVzc2FnZSgpCkBAIC05ODksNyArOTc3LDcgQEAgdm9pZCBDb25uZWN0aW9u
OjplbnF1ZXVlSW5jb21pbmdNZXNzYWdlKAogdm9pZCBDb25uZWN0aW9uOjpkaXNwYXRjaE1lc3Nh
Z2UoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBSRUxFQVNFX0FTU0VSVChpc1ZhbGlkKCkpOwot
ICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSAiQXN5bmNSZXBseSIpIHsK
KyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gUmVjZWl2ZXJOYW1lOjpB
c3luY1JlcGx5KSB7CiAgICAgICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBsaXN0ZW5lcklEOwogICAg
ICAgICBkZWNvZGVyID4+IGxpc3RlbmVySUQ7CiAgICAgICAgIGlmICghbGlzdGVuZXJJRCkgewpA
QCAtMTAxMSw3ICs5OTksNyBAQCB2b2lkIENvbm5lY3Rpb246OmRpc3BhdGNoTWVzc2FnZShEZWNv
ZGVyCiBib29sIENvbm5lY3Rpb246OmRpc3BhdGNoTWVzc2FnZVRvV29ya1F1ZXVlUmVjZWl2ZXIo
c3RkOjp1bmlxdWVfcHRyPERlY29kZXI+JiBtZXNzYWdlKQogewogICAgIGF1dG8gbG9ja2VyID0g
aG9sZExvY2sobV93b3JrUXVldWVNZXNzYWdlUmVjZWl2ZXJzTXV0ZXgpOwotICAgIGF1dG8gaXQg
PSBtX3dvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcnMuZmluZChtZXNzYWdlLT5tZXNzYWdlUmVjZWl2
ZXJOYW1lKCkpOworICAgIGF1dG8gaXQgPSBtX3dvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcnMuZmlu
ZChzdGF0aWNfY2FzdDx1aW50OF90PihtZXNzYWdlLT5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkpKTsK
ICAgICBpZiAoaXQgIT0gbV93b3JrUXVldWVNZXNzYWdlUmVjZWl2ZXJzLmVuZCgpKSB7CiAgICAg
ICAgIGl0LT52YWx1ZS5maXJzdC0+ZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKSwgd29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyID0gaXQtPnZhbHVlLnNlY29uZCwgZGVjb2Rl
ciA9IFdURk1vdmUobWVzc2FnZSldKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBwcm90ZWN0ZWRU
aGlzLT5kaXNwYXRjaFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlck1lc3NhZ2UoKndvcmtRdWV1ZU1l
c3NhZ2VSZWNlaXZlciwgKmRlY29kZXIpOwpAQCAtMTAyNiw3ICsxMDE0LDcgQEAgYm9vbCBDb25u
ZWN0aW9uOjpkaXNwYXRjaE1lc3NhZ2VUb1RocmVhZAogICAgIFJlZlB0cjxUaHJlYWRNZXNzYWdl
UmVjZWl2ZXI+IHByb3RlY3RlZFRocmVhZE1lc3NhZ2VSZWNlaXZlcjsKICAgICB7CiAgICAgICAg
IGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV90aHJlYWRNZXNzYWdlUmVjZWl2ZXJzTG9jayk7Ci0g
ICAgICAgIHByb3RlY3RlZFRocmVhZE1lc3NhZ2VSZWNlaXZlciA9IG1fdGhyZWFkTWVzc2FnZVJl
Y2VpdmVycy5nZXQobWVzc2FnZS0+bWVzc2FnZVJlY2VpdmVyTmFtZSgpKTsKKyAgICAgICAgcHJv
dGVjdGVkVGhyZWFkTWVzc2FnZVJlY2VpdmVyID0gbV90aHJlYWRNZXNzYWdlUmVjZWl2ZXJzLmdl
dChzdGF0aWNfY2FzdDx1aW50OF90PihtZXNzYWdlLT5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkpKTsK
ICAgICB9CiAKICAgICBpZiAocHJvdGVjdGVkVGhyZWFkTWVzc2FnZVJlY2VpdmVyKSB7CkBAIC0x
MDU0LDcgKzEwNDIsNyBAQCB2b2lkIENvbm5lY3Rpb246OmRpc3BhdGNoTWVzc2FnZShzdGQ6OnVu
CiAKICAgICBpZiAobWVzc2FnZS0+c2hvdWxkVXNlRnVsbHlTeW5jaHJvbm91c01vZGVGb3JUZXN0
aW5nKCkpIHsKICAgICAgICAgaWYgKCFtX2Z1bGx5U3luY2hyb25vdXNNb2RlSXNBbGxvd2VkRm9y
VGVzdGluZykgewotICAgICAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdl
KCp0aGlzLCBtZXNzYWdlLT5tZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1lc3NhZ2UtPm1lc3NhZ2VO
YW1lKCkpOworICAgICAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKCp0
aGlzLCBtZXNzYWdlLT5tZXNzYWdlTmFtZSgpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogICAgICAgICBtX2luRGlzcGF0Y2hNZXNzYWdlTWFya2VkVG9Vc2VGdWxseVN5bmNocm9u
b3VzTW9kZUZvclRlc3RpbmcrKzsKQEAgLTEwODgsNyArMTA3Niw3IEBAIHZvaWQgQ29ubmVjdGlv
bjo6ZGlzcGF0Y2hNZXNzYWdlKHN0ZDo6dW4KICAgICAgICAgbV9pbkRpc3BhdGNoTWVzc2FnZU1h
cmtlZFRvVXNlRnVsbHlTeW5jaHJvbm91c01vZGVGb3JUZXN0aW5nLS07CiAKICAgICBpZiAobV9k
aWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UgJiYgaXNWYWxpZCgpKQotICAgICAgICBtX2NsaWVudC5k
aWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoKnRoaXMsIG1lc3NhZ2UtPm1lc3NhZ2VSZWNlaXZlck5h
bWUoKSwgbWVzc2FnZS0+bWVzc2FnZU5hbWUoKSk7CisgICAgICAgIG1fY2xpZW50LmRpZFJlY2Vp
dmVJbnZhbGlkTWVzc2FnZSgqdGhpcywgbWVzc2FnZS0+bWVzc2FnZU5hbWUoKSk7CiAKICAgICBt
X2RpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZSA9IG9sZERpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZTsK
IH0KQEAgLTExNjgsNyArMTE1Niw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6ZGlzcGF0Y2hJbmNvbWlu
Z01lc3NhZ2UKICAgICAgICAgaWYgKG1lc3NhZ2VzVG9Qcm9jZXNzIDwgbV9pbmNvbWluZ01lc3Nh
Z2VzLnNpemUoKSkgewogICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoSVBDLCAiJXAgLSBD
b25uZWN0aW9uOjpkaXNwYXRjaEluY29taW5nTWVzc2FnZXM6IElQQyB0aHJvdHRsaW5nIHdhcyB0
cmlnZ2VyZWQgKGhhcyAlenUgcGVuZGluZyBpbmNvbWluZyBtZXNzYWdlcywgd2lsbCBvbmx5IHBy
b2Nlc3MgJXp1IGJlZm9yZSB5aWVsZGluZykiLCB0aGlzLCBtX2luY29taW5nTWVzc2FnZXMuc2l6
ZSgpLCBtZXNzYWdlc1RvUHJvY2Vzcyk7CiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgICAgICAg
ICBSRUxFQVNFX0xPR19FUlJPUihJUEMsICIlcCAtIENvbm5lY3Rpb246OmRpc3BhdGNoSW5jb21p
bmdNZXNzYWdlczogZmlyc3QgSVBDIG1lc3NhZ2UgaW4gcXVldWUgaXMgJXtwdWJsaWN9czo6JXtw
dWJsaWN9cyIsIHRoaXMsIG1lc3NhZ2UtPm1lc3NhZ2VSZWNlaXZlck5hbWUoKS50b1N0cmluZygp
LmRhdGEoKSwgbWVzc2FnZS0+bWVzc2FnZU5hbWUoKS50b1N0cmluZygpLmRhdGEoKSk7CisgICAg
ICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihJUEMsICIlcCAtIENvbm5lY3Rpb246OmRpc3BhdGNo
SW5jb21pbmdNZXNzYWdlczogZmlyc3QgSVBDIG1lc3NhZ2UgaW4gcXVldWUgaXMgJXtwdWJsaWN9
cyIsIHRoaXMsIGRlc2NyaXB0aW9uKG1lc3NhZ2UtPm1lc3NhZ2VOYW1lKCkpKTsKICNlbmRpZgog
ICAgICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmgJ
KHJldmlzaW9uIDI2MTAzMykKKysrIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rp
b24uaAkod29ya2luZyBjb3B5KQpAQCAtMTA3LDcgKzEwNyw3IEBAIHB1YmxpYzoKICAgICBjbGFz
cyBDbGllbnQgOiBwdWJsaWMgTWVzc2FnZVJlY2VpdmVyIHsKICAgICBwdWJsaWM6CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBkaWRDbG9zZShDb25uZWN0aW9uJikgPSAwOwotICAgICAgICB2aXJ0dWFs
IHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKENvbm5lY3Rpb24mLCBTdHJpbmdSZWZlcmVu
Y2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lKSA9IDA7
CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoQ29ubmVjdGlv
biYsIE1lc3NhZ2VOYW1lKSA9IDA7CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZpcnR1YWwg
fkNsaWVudCgpIHsgfQpAQCAtMTg5LDExICsxODksMTEgQEAgcHVibGljOgogICAgIHR5cGVkZWYg
dm9pZCAoKkRpZENsb3NlT25Db25uZWN0aW9uV29ya1F1ZXVlQ2FsbGJhY2spKENvbm5lY3Rpb24q
KTsKICAgICB2b2lkIHNldERpZENsb3NlT25Db25uZWN0aW9uV29ya1F1ZXVlQ2FsbGJhY2soRGlk
Q2xvc2VPbkNvbm5lY3Rpb25Xb3JrUXVldWVDYWxsYmFjayk7CiAKLSAgICB2b2lkIGFkZFdvcmtR
dWV1ZU1lc3NhZ2VSZWNlaXZlcihTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwg
V29ya1F1ZXVlJiwgV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKik7Ci0gICAgdm9pZCByZW1vdmVX
b3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIoU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5h
bWUpOworICAgIHZvaWQgYWRkV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKFJlY2VpdmVyTmFtZSwg
V29ya1F1ZXVlJiwgV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKik7CisgICAgdm9pZCByZW1vdmVX
b3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIoUmVjZWl2ZXJOYW1lKTsKIAotICAgIHZvaWQgYWRkVGhy
ZWFkTWVzc2FnZVJlY2VpdmVyKFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBU
aHJlYWRNZXNzYWdlUmVjZWl2ZXIqKTsKLSAgICB2b2lkIHJlbW92ZVRocmVhZE1lc3NhZ2VSZWNl
aXZlcihTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSk7CisgICAgdm9pZCBhZGRU
aHJlYWRNZXNzYWdlUmVjZWl2ZXIoUmVjZWl2ZXJOYW1lLCBUaHJlYWRNZXNzYWdlUmVjZWl2ZXIq
KTsKKyAgICB2b2lkIHJlbW92ZVRocmVhZE1lc3NhZ2VSZWNlaXZlcihSZWNlaXZlck5hbWUpOwog
CiAgICAgYm9vbCBvcGVuKCk7CiAgICAgdm9pZCBpbnZhbGlkYXRlKCk7CkBAIC0yMzUsNyArMjM1
LDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIGJvb2wgc2VuZE1lc3NhZ2Uoc3RkOjp1bmlxdWVf
cHRyPEVuY29kZXI+LCBPcHRpb25TZXQ8U2VuZE9wdGlvbj4gc2VuZE9wdGlvbnMpOwotICAgIHN0
ZDo6dW5pcXVlX3B0cjxFbmNvZGVyPiBjcmVhdGVTeW5jTWVzc2FnZUVuY29kZXIoU3RyaW5nUmVm
ZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZSwg
dWludDY0X3QgZGVzdGluYXRpb25JRCwgdWludDY0X3QmIHN5bmNSZXF1ZXN0SUQpOworICAgIHN0
ZDo6dW5pcXVlX3B0cjxFbmNvZGVyPiBjcmVhdGVTeW5jTWVzc2FnZUVuY29kZXIoTWVzc2FnZU5h
bWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIHVpbnQ2NF90JiBzeW5jUmVxdWVzdElEKTsKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gc2VuZFN5bmNNZXNzYWdlKHVpbnQ2NF90IHN5bmNS
ZXF1ZXN0SUQsIHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVyPiwgU2Vjb25kcyB0aW1lb3V0LCBPcHRp
b25TZXQ8U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucyk7CiAgICAgYm9vbCBzZW5kU3lu
Y1JlcGx5KHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVyPik7CiAKQEAgLTI3NCw5ICsyNzQsOSBAQCBw
cml2YXRlOgogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplKElkZW50aWZpZXIpOwogICAgIHZv
aWQgcGxhdGZvcm1JbnZhbGlkYXRlKCk7CiAgICAgCi0gICAgc3RkOjp1bmlxdWVfcHRyPERlY29k
ZXI+IHdhaXRGb3JNZXNzYWdlKFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBT
dHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIFNlY29u
ZHMgdGltZW91dCwgT3B0aW9uU2V0PFdhaXRGb3JPcHRpb24+KTsKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8RGVjb2Rlcj4gd2FpdEZvck1lc3NhZ2UoTWVzc2FnZU5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0
aW9uSUQsIFNlY29uZHMgdGltZW91dCwgT3B0aW9uU2V0PFdhaXRGb3JPcHRpb24+KTsKICAgICAK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gd2FpdEZvclN5bmNSZXBseSh1aW50NjRfdCBz
eW5jUmVxdWVzdElELCBTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgU3RyaW5n
UmVmZXJlbmNlIG1lc3NhZ2VOYW1lLCBTZWNvbmRzIHRpbWVvdXQsIE9wdGlvblNldDxTZW5kU3lu
Y09wdGlvbj4pOworICAgIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiB3YWl0Rm9yU3luY1JlcGx5
KHVpbnQ2NF90IHN5bmNSZXF1ZXN0SUQsIE1lc3NhZ2VOYW1lLCBTZWNvbmRzIHRpbWVvdXQsIE9w
dGlvblNldDxTZW5kU3luY09wdGlvbj4pOwogCiAgICAgYm9vbCBkaXNwYXRjaE1lc3NhZ2VUb1dv
cmtRdWV1ZVJlY2VpdmVyKHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiYpOwogICAgIGJvb2wgZGlz
cGF0Y2hNZXNzYWdlVG9UaHJlYWRSZWNlaXZlcihzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4mKTsK
QEAgLTMwMCw3ICszMDAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlzcGF0Y2hNZXNzYWdlKHN0
ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPik7CiAgICAgdm9pZCBkaXNwYXRjaE1lc3NhZ2UoRGVjb2Rl
ciYpOwogICAgIHZvaWQgZGlzcGF0Y2hTeW5jTWVzc2FnZShEZWNvZGVyJik7Ci0gICAgdm9pZCBk
aXNwYXRjaERpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShjb25zdCBDU3RyaW5nJiBtZXNzYWdlUmVj
ZWl2ZXJOYW1lU3RyaW5nLCBjb25zdCBDU3RyaW5nJiBtZXNzYWdlTmFtZVN0cmluZyk7CisgICAg
dm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShNZXNzYWdlTmFtZSk7CiAgICAg
dm9pZCBkaWRGYWlsVG9TZW5kU3luY01lc3NhZ2UoKTsKIAogICAgIC8vIENhbiBiZSBjYWxsZWQg
b24gYW55IHRocmVhZC4KQEAgLTM0NiwxMSArMzQ2LDExIEBAIHByaXZhdGU6CiAgICAgUmVmPFdv
cmtRdWV1ZT4gbV9jb25uZWN0aW9uUXVldWU7CiAKICAgICBMb2NrIG1fd29ya1F1ZXVlTWVzc2Fn
ZVJlY2VpdmVyc011dGV4OwotICAgIHVzaW5nIFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlck1hcCA9
IEhhc2hNYXA8U3RyaW5nUmVmZXJlbmNlLCBzdGQ6OnBhaXI8UmVmUHRyPFdvcmtRdWV1ZT4sIFJl
ZlB0cjxXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXI+Pj47CisgICAgdXNpbmcgV29ya1F1ZXVlTWVz
c2FnZVJlY2VpdmVyTWFwID0gSGFzaE1hcDx1aW50OF90LCBzdGQ6OnBhaXI8UmVmUHRyPFdvcmtR
dWV1ZT4sIFJlZlB0cjxXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXI+Pj47CiAgICAgV29ya1F1ZXVl
TWVzc2FnZVJlY2VpdmVyTWFwIG1fd29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyczsKIAogICAgIExv
Y2sgbV90aHJlYWRNZXNzYWdlUmVjZWl2ZXJzTG9jazsKLSAgICB1c2luZyBUaHJlYWRNZXNzYWdl
UmVjZWl2ZXJNYXAgPSBIYXNoTWFwPFN0cmluZ1JlZmVyZW5jZSwgUmVmUHRyPFRocmVhZE1lc3Nh
Z2VSZWNlaXZlcj4+OworICAgIHVzaW5nIFRocmVhZE1lc3NhZ2VSZWNlaXZlck1hcCA9IEhhc2hN
YXA8dWludDhfdCwgUmVmUHRyPFRocmVhZE1lc3NhZ2VSZWNlaXZlcj4+OwogICAgIFRocmVhZE1l
c3NhZ2VSZWNlaXZlck1hcCBtX3RocmVhZE1lc3NhZ2VSZWNlaXZlcnM7CiAKICAgICB1bnNpZ25l
ZCBtX2luU2VuZFN5bmNDb3VudDsKQEAgLTQ2Miw3ICs0NjIsNyBAQCBib29sIENvbm5lY3Rpb246
OnNlbmQoVCYmIG1lc3NhZ2UsIHVpbnQ2CiB7CiAgICAgQ09NUElMRV9BU1NFUlQoIVQ6OmlzU3lu
YywgQXN5bmNNZXNzYWdlRXhwZWN0ZWQpOwogCi0gICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1
ZTxFbmNvZGVyPihUOjpyZWNlaXZlck5hbWUoKSwgVDo6bmFtZSgpLCBkZXN0aW5hdGlvbklEKTsK
KyAgICBhdXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlPEVuY29kZXI+KFQ6Om5hbWUoKSwgZGVzdGlu
YXRpb25JRCk7CiAgICAgZW5jb2Rlci0+ZW5jb2RlKG1lc3NhZ2UuYXJndW1lbnRzKCkpOwogICAg
IAogICAgIHJldHVybiBzZW5kTWVzc2FnZShXVEZNb3ZlKGVuY29kZXIpLCBzZW5kT3B0aW9ucyk7
CkBAIC00NzcsNyArNDc3LDcgQEAgdm9pZCBDb25uZWN0aW9uOjpzZW5kV2l0aEFzeW5jUmVwbHko
VCYmIAogewogICAgIENPTVBJTEVfQVNTRVJUKCFUOjppc1N5bmMsIEFzeW5jTWVzc2FnZUV4cGVj
dGVkKTsKIAotICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWU8RW5jb2Rlcj4oVDo6cmVjZWl2
ZXJOYW1lKCksIFQ6Om5hbWUoKSwgZGVzdGluYXRpb25JRCk7CisgICAgYXV0byBlbmNvZGVyID0g
bWFrZVVuaXF1ZTxFbmNvZGVyPihUOjpuYW1lKCksIGRlc3RpbmF0aW9uSUQpOwogICAgIHVpbnQ2
NF90IGxpc3RlbmVySUQgPSBuZXh0QXN5bmNSZXBseUhhbmRsZXJJRCgpOwogICAgIGVuY29kZXIt
PmVuY29kZShsaXN0ZW5lcklEKTsKICAgICBlbmNvZGVyLT5lbmNvZGUobWVzc2FnZS5hcmd1bWVu
dHMoKSk7CkBAIC01MTUsNyArNTE1LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9vbCBDb25u
ZWN0aW9uOjpzZQogICAgIFJFTEVBU0VfQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAg
IHVpbnQ2NF90IHN5bmNSZXF1ZXN0SUQgPSAwOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVy
PiBlbmNvZGVyID0gY3JlYXRlU3luY01lc3NhZ2VFbmNvZGVyKFQ6OnJlY2VpdmVyTmFtZSgpLCBU
OjpuYW1lKCksIGRlc3RpbmF0aW9uSUQsIHN5bmNSZXF1ZXN0SUQpOworICAgIHN0ZDo6dW5pcXVl
X3B0cjxFbmNvZGVyPiBlbmNvZGVyID0gY3JlYXRlU3luY01lc3NhZ2VFbmNvZGVyKFQ6Om5hbWUo
KSwgZGVzdGluYXRpb25JRCwgc3luY1JlcXVlc3RJRCk7CiAKICAgICBpZiAoc2VuZFN5bmNPcHRp
b25zLmNvbnRhaW5zKFNlbmRTeW5jT3B0aW9uOjpVc2VGdWxseVN5bmNocm9ub3VzTW9kZUZvclRl
c3RpbmcpKSB7CiAgICAgICAgIGVuY29kZXItPnNldEZ1bGx5U3luY2hyb25vdXNNb2RlRm9yVGVz
dGluZygpOwpAQCAtNTQyLDcgKzU0Miw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgQ29u
bmVjdGlvbjo6c2UKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgQ29ubmVjdGlvbjo6d2FpdEZv
ckFuZERpc3BhdGNoSW1tZWRpYXRlbHkodWludDY0X3QgZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0
aW1lb3V0LCBPcHRpb25TZXQ8V2FpdEZvck9wdGlvbj4gd2FpdEZvck9wdGlvbnMpCiB7CiAgICAg
UkVMRUFTRV9BU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxE
ZWNvZGVyPiBkZWNvZGVyID0gd2FpdEZvck1lc3NhZ2UoVDo6cmVjZWl2ZXJOYW1lKCksIFQ6Om5h
bWUoKSwgZGVzdGluYXRpb25JRCwgdGltZW91dCwgd2FpdEZvck9wdGlvbnMpOworICAgIHN0ZDo6
dW5pcXVlX3B0cjxEZWNvZGVyPiBkZWNvZGVyID0gd2FpdEZvck1lc3NhZ2UoVDo6bmFtZSgpLCBk
ZXN0aW5hdGlvbklELCB0aW1lb3V0LCB3YWl0Rm9yT3B0aW9ucyk7CiAgICAgaWYgKCFkZWNvZGVy
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL0RlY29kZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L0RlY29kZXIuY3BwCShyZXZpc2lvbiAyNjEwMzMpCisrKyBTb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9EZWNvZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjYsOSArNjYsNiBAQCBEZWNvZGVy
OjpEZWNvZGVyKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgCiAgICAgaWYgKCFkZWNvZGUobV9tZXNz
YWdlRmxhZ3MpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIWRlY29kZShtX21lc3NhZ2VS
ZWNlaXZlck5hbWUpKQotICAgICAgICByZXR1cm47Ci0KICAgICBpZiAoIWRlY29kZShtX21lc3Nh
Z2VOYW1lKSkKICAgICAgICAgcmV0dXJuOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9EZWNvZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
RGVjb2Rlci5oCShyZXZpc2lvbiAyNjEwMzMpCisrKyBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9EZWNvZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUg
IkFyZ3VtZW50Q29kZXIuaCIKICNpbmNsdWRlICJBdHRhY2htZW50LmgiCisjaW5jbHVkZSAiTWVz
c2FnZU5hbWVzLmgiCiAjaW5jbHVkZSAiU3RyaW5nUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSA8d3Rm
L0VudW1UcmFpdHMuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC01MSw4ICs1Miw4IEBA
IHB1YmxpYzoKICAgICBEZWNvZGVyKGNvbnN0IERlY29kZXImKSA9IGRlbGV0ZTsKICAgICBEZWNv
ZGVyKERlY29kZXImJikgPSBkZWxldGU7CiAKLSAgICBTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJl
Y2VpdmVyTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWVzc2FnZVJlY2VpdmVyTmFtZTsgfQotICAg
IFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWVzc2FnZU5h
bWU7IH0KKyAgICBSZWNlaXZlck5hbWUgbWVzc2FnZVJlY2VpdmVyTmFtZSgpIGNvbnN0IHsgcmV0
dXJuIHJlY2VpdmVyTmFtZShtX21lc3NhZ2VOYW1lKTsgfQorICAgIE1lc3NhZ2VOYW1lIG1lc3Nh
Z2VOYW1lKCkgY29uc3QgeyByZXR1cm4gbV9tZXNzYWdlTmFtZTsgfQogICAgIHVpbnQ2NF90IGRl
c3RpbmF0aW9uSUQoKSBjb25zdCB7IHJldHVybiBtX2Rlc3RpbmF0aW9uSUQ7IH0KIAogICAgIGJv
b2wgaXNTeW5jTWVzc2FnZSgpIGNvbnN0OwpAQCAtMTA2LDcgKzEwNyw3IEBAIHB1YmxpYzoKICAg
ICAgICAgdHlwZW5hbWUgc3RkOjp1bmRlcmx5aW5nX3R5cGU8RT46OnR5cGUgdmFsdWU7CiAgICAg
ICAgIGlmICghZGVjb2RlKHZhbHVlKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgaWYgKCFpc1ZhbGlkRW51bTxFPih2YWx1ZSkpCisgICAgICAgIGlmICghV1RGOjppc1ZhbGlk
RW51bTxFPih2YWx1ZSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgZSA9
IHN0YXRpY19jYXN0PEU+KHZhbHVlKTsKQEAgLTExOCw3ICsxMTksNyBAQCBwdWJsaWM6CiAgICAg
ewogICAgICAgICBPcHRpb25hbDx0eXBlbmFtZSBzdGQ6OnVuZGVybHlpbmdfdHlwZTxFPjo6dHlw
ZT4gdmFsdWU7CiAgICAgICAgICp0aGlzID4+IHZhbHVlOwotICAgICAgICBpZiAodmFsdWUgJiYg
aXNWYWxpZEVudW08RT4oKnZhbHVlKSkKKyAgICAgICAgaWYgKHZhbHVlICYmIFdURjo6aXNWYWxp
ZEVudW08RT4oKnZhbHVlKSkKICAgICAgICAgICAgIG9wdGlvbmFsID0gc3RhdGljX2Nhc3Q8RT4o
KnZhbHVlKTsKICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0KQEAgLTE5OCw4ICsxOTksNyBA
QCBwcml2YXRlOgogICAgIFZlY3RvcjxBdHRhY2htZW50PiBtX2F0dGFjaG1lbnRzOwogCiAgICAg
dWludDhfdCBtX21lc3NhZ2VGbGFnczsKLSAgICBTdHJpbmdSZWZlcmVuY2UgbV9tZXNzYWdlUmVj
ZWl2ZXJOYW1lOwotICAgIFN0cmluZ1JlZmVyZW5jZSBtX21lc3NhZ2VOYW1lOworICAgIE1lc3Nh
Z2VOYW1lIG1fbWVzc2FnZU5hbWU7CiAKICAgICB1aW50NjRfdCBtX2Rlc3RpbmF0aW9uSUQ7CiAK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0VuY29kZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0VuY29kZXIuY3BwCShyZXZpc2lvbiAyNjEw
MzMpCisrKyBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9FbmNvZGVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNjEsOSArNjEsOCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZnJlZUJ1ZmZlcih2b2lk
KiBhZGRyCiAjZW5kaWYKIH0KIAotRW5jb2Rlcjo6RW5jb2RlcihTdHJpbmdSZWZlcmVuY2UgbWVz
c2FnZVJlY2VpdmVyTmFtZSwgU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lLCB1aW50NjRfdCBk
ZXN0aW5hdGlvbklEKQotICAgIDogbV9tZXNzYWdlUmVjZWl2ZXJOYW1lKG1lc3NhZ2VSZWNlaXZl
ck5hbWUpCi0gICAgLCBtX21lc3NhZ2VOYW1lKG1lc3NhZ2VOYW1lKQorRW5jb2Rlcjo6RW5jb2Rl
cihNZXNzYWdlTmFtZSBtZXNzYWdlTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCkKKyAgICA6
IG1fbWVzc2FnZU5hbWUobWVzc2FnZU5hbWUpCiAgICAgLCBtX2Rlc3RpbmF0aW9uSUQoZGVzdGlu
YXRpb25JRCkKICAgICAsIG1fYnVmZmVyKG1faW5saW5lQnVmZmVyKQogICAgICwgbV9idWZmZXJQ
b2ludGVyKG1faW5saW5lQnVmZmVyKQpAQCAtMTY4LDEwICsxNjcsNyBAQCB2b2lkIEVuY29kZXI6
OnJlc2VydmUoc2l6ZV90IHNpemUpCiAKIHZvaWQgRW5jb2Rlcjo6ZW5jb2RlSGVhZGVyKCkKIHsK
LSAgICBBU1NFUlQoIW1fbWVzc2FnZVJlY2VpdmVyTmFtZS5pc0VtcHR5KCkpOwotCiAgICAgKnRo
aXMgPDwgZGVmYXVsdE1lc3NhZ2VGbGFnczsKLSAgICAqdGhpcyA8PCBtX21lc3NhZ2VSZWNlaXZl
ck5hbWU7CiAgICAgKnRoaXMgPDwgbV9tZXNzYWdlTmFtZTsKICAgICAqdGhpcyA8PCBtX2Rlc3Rp
bmF0aW9uSUQ7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9FbmNvZGVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRW5jb2Rlci5oCShyZXZp
c2lvbiAyNjEwMzMpCisrKyBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9FbmNvZGVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXIu
aCIKICNpbmNsdWRlICJBdHRhY2htZW50LmgiCisjaW5jbHVkZSAiTWVzc2FnZU5hbWVzLmgiCiAj
aW5jbHVkZSAiU3RyaW5nUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSA8d3RmL0VudW1UcmFpdHMuaD4K
ICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC0zNSwxNSArMzYsMTYgQEAgbmFtZXNwYWNlIElQ
QyB7CiAKIGNsYXNzIERhdGFSZWZlcmVuY2U7CiBlbnVtIGNsYXNzIFNob3VsZERpc3BhdGNoV2hl
bldhaXRpbmdGb3JTeW5jUmVwbHk7CitlbnVtIGNsYXNzIE1lc3NhZ2VOYW1lIDogdWludDE2X3Q7
CiAKIGNsYXNzIEVuY29kZXIgZmluYWwgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgotICAgIEVuY29kZXIoU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUs
IFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCk7Cisg
ICAgRW5jb2RlcihNZXNzYWdlTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCk7CiAgICAgfkVu
Y29kZXIoKTsKIAotICAgIFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lKCkgY29u
c3QgeyByZXR1cm4gbV9tZXNzYWdlUmVjZWl2ZXJOYW1lOyB9Ci0gICAgU3RyaW5nUmVmZXJlbmNl
IG1lc3NhZ2VOYW1lKCkgY29uc3QgeyByZXR1cm4gbV9tZXNzYWdlTmFtZTsgfQorICAgIFJlY2Vp
dmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gcmVjZWl2ZXJOYW1l
KG1fbWVzc2FnZU5hbWUpOyB9CisgICAgTWVzc2FnZU5hbWUgbWVzc2FnZU5hbWUoKSBjb25zdCB7
IHJldHVybiBtX21lc3NhZ2VOYW1lOyB9CiAgICAgdWludDY0X3QgZGVzdGluYXRpb25JRCgpIGNv
bnN0IHsgcmV0dXJuIG1fZGVzdGluYXRpb25JRDsgfQogCiAgICAgdm9pZCBzZXRJc1N5bmNNZXNz
YWdlKGJvb2wpOwpAQCAtMTEyLDE0ICsxMTQsMTMgQEAgcHJpdmF0ZToKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBFPgogICAgIGF1dG8gZW5jb2RlKEUgdmFsdWUpIC0+IHN0ZDo6ZW5hYmxlX2lmX3Q8
c3RkOjppc19lbnVtPEU+Ojp2YWx1ZT4KICAgICB7Ci0gICAgICAgIEFTU0VSVChpc1ZhbGlkRW51
bTxFPihzdGF0aWNfY2FzdDx0eXBlbmFtZSBzdGQ6OnVuZGVybHlpbmdfdHlwZTxFPjo6dHlwZT4o
dmFsdWUpKSk7CisgICAgICAgIEFTU0VSVChXVEY6OmlzVmFsaWRFbnVtPEU+KHN0YXRpY19jYXN0
PHR5cGVuYW1lIHN0ZDo6dW5kZXJseWluZ190eXBlPEU+Ojp0eXBlPih2YWx1ZSkpKTsKICAgICAg
ICAgZW5jb2RlKHN0YXRpY19jYXN0PHR5cGVuYW1lIHN0ZDo6dW5kZXJseWluZ190eXBlPEU+Ojp0
eXBlPih2YWx1ZSkpOwogICAgIH0KIAogICAgIHZvaWQgZW5jb2RlSGVhZGVyKCk7CiAKLSAgICBT
dHJpbmdSZWZlcmVuY2UgbV9tZXNzYWdlUmVjZWl2ZXJOYW1lOwotICAgIFN0cmluZ1JlZmVyZW5j
ZSBtX21lc3NhZ2VOYW1lOworICAgIE1lc3NhZ2VOYW1lIG1fbWVzc2FnZU5hbWU7CiAgICAgdWlu
dDY0X3QgbV9kZXN0aW5hdGlvbklEOwogCiAgICAgdWludDhfdCBtX2lubGluZUJ1ZmZlcls1MTJd
OwpJbmRleDogU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaAkocmV2
aXNpb24gMjYxMDMzKQorKysgU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2Fn
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzYsNyArMTc2LDcgQEAgdm9pZCBoYW5kbGVNZXNzYWdl
QXN5bmMoQ29ubmVjdGlvbiYgY29ubgogICAgIH0KIAogICAgIHR5cGVuYW1lIFQ6OkFzeW5jUmVw
bHkgY29tcGxldGlvbkhhbmRsZXIgPSBbbGlzdGVuZXJJRCA9ICpsaXN0ZW5lcklELCBjb25uZWN0
aW9uID0gbWFrZVJlZihjb25uZWN0aW9uKV0gKGF1dG8mJi4uLiBhcmdzKSBtdXRhYmxlIHsKLSAg
ICAgICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNvZGVyPigiQXN5bmNSZXBseSIsIFQ6
OmFzeW5jTWVzc2FnZVJlcGx5TmFtZSgpLCAwKTsKKyAgICAgICAgYXV0byBlbmNvZGVyID0gbWFr
ZVVuaXF1ZTxFbmNvZGVyPihUOjphc3luY01lc3NhZ2VSZXBseU5hbWUoKSwgMCk7CiAgICAgICAg
ICplbmNvZGVyIDw8IGxpc3RlbmVySUQ7CiAgICAgICAgIFQ6OnNlbmQoV1RGTW92ZShlbmNvZGVy
KSwgV1RGTW92ZShjb25uZWN0aW9uKSwgYXJncy4uLik7CiAgICAgfTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VSZWNlaXZlck1hcC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVyTWFwLmNwcAkocmV2aXNp
b24gMjYxMDMzKQorKysgU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVy
TWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksMzkgKzM5LDM5IEBAIE1lc3NhZ2VSZWNlaXZl
ck1hcDo6fk1lc3NhZ2VSZWNlaXZlck1hcCgKIHsKIH0KIAotdm9pZCBNZXNzYWdlUmVjZWl2ZXJN
YXA6OmFkZE1lc3NhZ2VSZWNlaXZlcihTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFt
ZSwgTWVzc2FnZVJlY2VpdmVyJiBtZXNzYWdlUmVjZWl2ZXIpCit2b2lkIE1lc3NhZ2VSZWNlaXZl
ck1hcDo6YWRkTWVzc2FnZVJlY2VpdmVyKFJlY2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1l
LCBNZXNzYWdlUmVjZWl2ZXImIG1lc3NhZ2VSZWNlaXZlcikKIHsKLSAgICBBU1NFUlQoIW1fZ2xv
YmFsTWVzc2FnZVJlY2VpdmVycy5jb250YWlucyhtZXNzYWdlUmVjZWl2ZXJOYW1lKSk7CisgICAg
QVNTRVJUKCFtX2dsb2JhbE1lc3NhZ2VSZWNlaXZlcnMuY29udGFpbnMoc3RhdGljX2Nhc3Q8dWlu
dDhfdD4obWVzc2FnZVJlY2VpdmVyTmFtZSkpKTsKIAogICAgIG1lc3NhZ2VSZWNlaXZlci53aWxs
QmVBZGRlZFRvTWVzc2FnZVJlY2VpdmVyTWFwKCk7Ci0gICAgbV9nbG9iYWxNZXNzYWdlUmVjZWl2
ZXJzLnNldChtZXNzYWdlUmVjZWl2ZXJOYW1lLCAmbWVzc2FnZVJlY2VpdmVyKTsKKyAgICBtX2ds
b2JhbE1lc3NhZ2VSZWNlaXZlcnMuc2V0KHN0YXRpY19jYXN0PHVpbnQ4X3Q+KG1lc3NhZ2VSZWNl
aXZlck5hbWUpLCAmbWVzc2FnZVJlY2VpdmVyKTsKIH0KIAotdm9pZCBNZXNzYWdlUmVjZWl2ZXJN
YXA6OmFkZE1lc3NhZ2VSZWNlaXZlcihTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFt
ZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgTWVzc2FnZVJlY2VpdmVyJiBtZXNzYWdlUmVjZWl2
ZXIpCit2b2lkIE1lc3NhZ2VSZWNlaXZlck1hcDo6YWRkTWVzc2FnZVJlY2VpdmVyKFJlY2VpdmVy
TmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBNZXNzYWdl
UmVjZWl2ZXImIG1lc3NhZ2VSZWNlaXZlcikKIHsKICAgICBBU1NFUlQoZGVzdGluYXRpb25JRCk7
Ci0gICAgQVNTRVJUKCFtX21lc3NhZ2VSZWNlaXZlcnMuY29udGFpbnMoc3RkOjptYWtlX3BhaXIo
bWVzc2FnZVJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRCkpKTsKLSAgICBBU1NFUlQoIW1fZ2xv
YmFsTWVzc2FnZVJlY2VpdmVycy5jb250YWlucyhtZXNzYWdlUmVjZWl2ZXJOYW1lKSk7CisgICAg
QVNTRVJUKCFtX21lc3NhZ2VSZWNlaXZlcnMuY29udGFpbnMoc3RkOjptYWtlX3BhaXIoc3RhdGlj
X2Nhc3Q8dWludDhfdD4obWVzc2FnZVJlY2VpdmVyTmFtZSksIGRlc3RpbmF0aW9uSUQpKSk7Cisg
ICAgQVNTRVJUKCFtX2dsb2JhbE1lc3NhZ2VSZWNlaXZlcnMuY29udGFpbnMoc3RhdGljX2Nhc3Q8
dWludDhfdD4obWVzc2FnZVJlY2VpdmVyTmFtZSkpKTsKIAogICAgIG1lc3NhZ2VSZWNlaXZlci53
aWxsQmVBZGRlZFRvTWVzc2FnZVJlY2VpdmVyTWFwKCk7Ci0gICAgbV9tZXNzYWdlUmVjZWl2ZXJz
LnNldChzdGQ6Om1ha2VfcGFpcihtZXNzYWdlUmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklEKSwg
Jm1lc3NhZ2VSZWNlaXZlcik7CisgICAgbV9tZXNzYWdlUmVjZWl2ZXJzLnNldChzdGQ6Om1ha2Vf
cGFpcihzdGF0aWNfY2FzdDx1aW50OF90PihtZXNzYWdlUmVjZWl2ZXJOYW1lKSwgZGVzdGluYXRp
b25JRCksICZtZXNzYWdlUmVjZWl2ZXIpOwogfQogCi12b2lkIE1lc3NhZ2VSZWNlaXZlck1hcDo6
cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1l
KQordm9pZCBNZXNzYWdlUmVjZWl2ZXJNYXA6OnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihSZWNlaXZl
ck5hbWUgbWVzc2FnZVJlY2VpdmVyTmFtZSkKIHsKLSAgICBBU1NFUlQobV9nbG9iYWxNZXNzYWdl
UmVjZWl2ZXJzLmNvbnRhaW5zKG1lc3NhZ2VSZWNlaXZlck5hbWUpKTsKKyAgICBBU1NFUlQobV9n
bG9iYWxNZXNzYWdlUmVjZWl2ZXJzLmNvbnRhaW5zKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KG1lc3Nh
Z2VSZWNlaXZlck5hbWUpKSk7CiAKLSAgICBhdXRvIGl0ID0gbV9nbG9iYWxNZXNzYWdlUmVjZWl2
ZXJzLmZpbmQobWVzc2FnZVJlY2VpdmVyTmFtZSk7CisgICAgYXV0byBpdCA9IG1fZ2xvYmFsTWVz
c2FnZVJlY2VpdmVycy5maW5kKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KG1lc3NhZ2VSZWNlaXZlck5h
bWUpKTsKICAgICBpdC0+dmFsdWUtPndpbGxCZVJlbW92ZWRGcm9tTWVzc2FnZVJlY2VpdmVyTWFw
KCk7CiAKICAgICBtX2dsb2JhbE1lc3NhZ2VSZWNlaXZlcnMucmVtb3ZlKGl0KTsKIH0KIAotdm9p
ZCBNZXNzYWdlUmVjZWl2ZXJNYXA6OnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihTdHJpbmdSZWZlcmVu
Y2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCkKK3ZvaWQgTWVz
c2FnZVJlY2VpdmVyTWFwOjpyZW1vdmVNZXNzYWdlUmVjZWl2ZXIoUmVjZWl2ZXJOYW1lIG1lc3Nh
Z2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpCiB7Ci0gICAgQVNTRVJUKG1f
bWVzc2FnZVJlY2VpdmVycy5jb250YWlucyhzdGQ6Om1ha2VfcGFpcihtZXNzYWdlUmVjZWl2ZXJO
YW1lLCBkZXN0aW5hdGlvbklEKSkpOworICAgIEFTU0VSVChtX21lc3NhZ2VSZWNlaXZlcnMuY29u
dGFpbnMoc3RkOjptYWtlX3BhaXIoc3RhdGljX2Nhc3Q8dWludDhfdD4obWVzc2FnZVJlY2VpdmVy
TmFtZSksIGRlc3RpbmF0aW9uSUQpKSk7CiAKLSAgICBhdXRvIGl0ID0gbV9tZXNzYWdlUmVjZWl2
ZXJzLmZpbmQoc3RkOjptYWtlX3BhaXIobWVzc2FnZVJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25J
RCkpOworICAgIGF1dG8gaXQgPSBtX21lc3NhZ2VSZWNlaXZlcnMuZmluZChzdGQ6Om1ha2VfcGFp
cihzdGF0aWNfY2FzdDx1aW50OF90PihtZXNzYWdlUmVjZWl2ZXJOYW1lKSwgZGVzdGluYXRpb25J
RCkpOwogICAgIGl0LT52YWx1ZS0+d2lsbEJlUmVtb3ZlZEZyb21NZXNzYWdlUmVjZWl2ZXJNYXAo
KTsKIAogICAgIG1fbWVzc2FnZVJlY2VpdmVycy5yZW1vdmUoaXQpOwpAQCAtNzksMjMgKzc5LDIz
IEBAIHZvaWQgTWVzc2FnZVJlY2VpdmVyTWFwOjpyZW1vdmVNZXNzYWdlUmUKIAogdm9pZCBNZXNz
YWdlUmVjZWl2ZXJNYXA6OnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlUmVjZWl2ZXImIG1l
c3NhZ2VSZWNlaXZlcikKIHsKLSAgICBWZWN0b3I8U3RyaW5nUmVmZXJlbmNlPiBnbG9iYWxSZWNl
aXZlcnNUb1JlbW92ZTsKKyAgICBWZWN0b3I8UmVjZWl2ZXJOYW1lPiBnbG9iYWxSZWNlaXZlcnNU
b1JlbW92ZTsKICAgICBmb3IgKGF1dG8mIFtuYW1lLCByZWNlaXZlcl0gOiBtX2dsb2JhbE1lc3Nh
Z2VSZWNlaXZlcnMpIHsKICAgICAgICAgaWYgKHJlY2VpdmVyID09ICZtZXNzYWdlUmVjZWl2ZXIp
Ci0gICAgICAgICAgICBnbG9iYWxSZWNlaXZlcnNUb1JlbW92ZS5hcHBlbmQobmFtZSk7CisgICAg
ICAgICAgICBnbG9iYWxSZWNlaXZlcnNUb1JlbW92ZS5hcHBlbmQoc3RhdGljX2Nhc3Q8UmVjZWl2
ZXJOYW1lPihuYW1lKSk7CiAgICAgfQogCiAgICAgZm9yIChhdXRvJiBnbG9iYWxSZWNlaXZlclRv
UmVtb3ZlIDogZ2xvYmFsUmVjZWl2ZXJzVG9SZW1vdmUpCiAgICAgICAgIHJlbW92ZU1lc3NhZ2VS
ZWNlaXZlcihnbG9iYWxSZWNlaXZlclRvUmVtb3ZlKTsKIAotICAgIFZlY3RvcjxzdGQ6OnBhaXI8
U3RyaW5nUmVmZXJlbmNlLCB1aW50NjRfdD4+IHJlY2VpdmVyc1RvUmVtb3ZlOworICAgIFZlY3Rv
cjxzdGQ6OnBhaXI8dWludDhfdCwgdWludDY0X3Q+PiByZWNlaXZlcnNUb1JlbW92ZTsKICAgICBm
b3IgKGF1dG8mIFtuYW1lQW5kRGVzdGluYXRpb25JRCwgcmVjZWl2ZXJdIDogbV9tZXNzYWdlUmVj
ZWl2ZXJzKSB7CiAgICAgICAgIGlmIChyZWNlaXZlciA9PSAmbWVzc2FnZVJlY2VpdmVyKQotICAg
ICAgICAgICAgcmVjZWl2ZXJzVG9SZW1vdmUuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKG5hbWVBbmRE
ZXN0aW5hdGlvbklELmZpcnN0LCBuYW1lQW5kRGVzdGluYXRpb25JRC5zZWNvbmQpKTsKKyAgICAg
ICAgICAgIHJlY2VpdmVyc1RvUmVtb3ZlLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihzdGF0aWNfY2Fz
dDx1aW50OF90PihuYW1lQW5kRGVzdGluYXRpb25JRC5maXJzdCksIG5hbWVBbmREZXN0aW5hdGlv
bklELnNlY29uZCkpOwogICAgIH0KIAogICAgIGZvciAoYXV0byYgW25hbWUsIGRlc3RpbmF0aW9u
SURdIDogcmVjZWl2ZXJzVG9SZW1vdmUpCi0gICAgICAgIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihu
YW1lLCBkZXN0aW5hdGlvbklEKTsKKyAgICAgICAgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKHN0YXRp
Y19jYXN0PFJlY2VpdmVyTmFtZT4obmFtZSksIGRlc3RpbmF0aW9uSUQpOwogfQogCiB2b2lkIE1l
c3NhZ2VSZWNlaXZlck1hcDo6aW52YWxpZGF0ZSgpCkBAIC0xMTIsMTQgKzExMiwxNCBAQCB2b2lk
IE1lc3NhZ2VSZWNlaXZlck1hcDo6aW52YWxpZGF0ZSgpCiAKIGJvb2wgTWVzc2FnZVJlY2VpdmVy
TWFwOjpkaXNwYXRjaE1lc3NhZ2UoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgRGVjb2RlciYgZGVj
b2RlcikKIHsKLSAgICBpZiAoTWVzc2FnZVJlY2VpdmVyKiBtZXNzYWdlUmVjZWl2ZXIgPSBtX2ds
b2JhbE1lc3NhZ2VSZWNlaXZlcnMuZ2V0KGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpKSkg
eworICAgIGlmIChNZXNzYWdlUmVjZWl2ZXIqIG1lc3NhZ2VSZWNlaXZlciA9IG1fZ2xvYmFsTWVz
c2FnZVJlY2VpdmVycy5nZXQoc3RhdGljX2Nhc3Q8dWludDhfdD4oZGVjb2Rlci5tZXNzYWdlUmVj
ZWl2ZXJOYW1lKCkpKSkgewogICAgICAgICBBU1NFUlQoIWRlY29kZXIuZGVzdGluYXRpb25JRCgp
KTsKIAogICAgICAgICBtZXNzYWdlUmVjZWl2ZXItPmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rp
b24sIGRlY29kZXIpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBpZiAoTWVz
c2FnZVJlY2VpdmVyKiBtZXNzYWdlUmVjZWl2ZXIgPSBtX21lc3NhZ2VSZWNlaXZlcnMuZ2V0KHN0
ZDo6bWFrZV9wYWlyKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBkZWNvZGVyLmRlc3Rp
bmF0aW9uSUQoKSkpKSB7CisgICAgaWYgKE1lc3NhZ2VSZWNlaXZlciogbWVzc2FnZVJlY2VpdmVy
ID0gbV9tZXNzYWdlUmVjZWl2ZXJzLmdldChzdGQ6Om1ha2VfcGFpcihzdGF0aWNfY2FzdDx1aW50
OF90PihkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSksIGRlY29kZXIuZGVzdGluYXRpb25J
RCgpKSkpIHsKICAgICAgICAgbWVzc2FnZVJlY2VpdmVyLT5kaWRSZWNlaXZlTWVzc2FnZShjb25u
ZWN0aW9uLCBkZWNvZGVyKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMTI5LDE0
ICsxMjksMTQgQEAgYm9vbCBNZXNzYWdlUmVjZWl2ZXJNYXA6OmRpc3BhdGNoTWVzc2FnZQogCiBi
b29sIE1lc3NhZ2VSZWNlaXZlck1hcDo6ZGlzcGF0Y2hTeW5jTWVzc2FnZShDb25uZWN0aW9uJiBj
b25uZWN0aW9uLCBEZWNvZGVyJiBkZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8RW5jb2Rlcj4mIHJl
cGx5RW5jb2RlcikKIHsKLSAgICBpZiAoTWVzc2FnZVJlY2VpdmVyKiBtZXNzYWdlUmVjZWl2ZXIg
PSBtX2dsb2JhbE1lc3NhZ2VSZWNlaXZlcnMuZ2V0KGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFt
ZSgpKSkgeworICAgIGlmIChNZXNzYWdlUmVjZWl2ZXIqIG1lc3NhZ2VSZWNlaXZlciA9IG1fZ2xv
YmFsTWVzc2FnZVJlY2VpdmVycy5nZXQoc3RhdGljX2Nhc3Q8dWludDhfdD4oZGVjb2Rlci5tZXNz
YWdlUmVjZWl2ZXJOYW1lKCkpKSkgewogICAgICAgICBBU1NFUlQoIWRlY29kZXIuZGVzdGluYXRp
b25JRCgpKTsKIAogICAgICAgICBtZXNzYWdlUmVjZWl2ZXItPmRpZFJlY2VpdmVTeW5jTWVzc2Fn
ZShjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIpOwogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9CiAKLSAgICBpZiAoTWVzc2FnZVJlY2VpdmVyKiBtZXNzYWdlUmVjZWl2ZXIgPSBt
X21lc3NhZ2VSZWNlaXZlcnMuZ2V0KHN0ZDo6bWFrZV9wYWlyKGRlY29kZXIubWVzc2FnZVJlY2Vp
dmVyTmFtZSgpLCBkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSkpKSB7CisgICAgaWYgKE1lc3NhZ2VS
ZWNlaXZlciogbWVzc2FnZVJlY2VpdmVyID0gbV9tZXNzYWdlUmVjZWl2ZXJzLmdldChzdGQ6Om1h
a2VfcGFpcihzdGF0aWNfY2FzdDx1aW50OF90PihkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUo
KSksIGRlY29kZXIuZGVzdGluYXRpb25JRCgpKSkpIHsKICAgICAgICAgbWVzc2FnZVJlY2VpdmVy
LT5kaWRSZWNlaXZlU3luY01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVy
KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpJbmRleDogU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVyTWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVyTWFwLmgJKHJldmlzaW9uIDI2MTAzMykKKysr
IFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VSZWNlaXZlck1hcC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yMyw4ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAgKi8KIAotI2lmbmRlZiBNZXNzYWdlUmVjZWl2ZXJNYXBfaAotI2RlZmluZSBNZXNzYWdl
UmVjZWl2ZXJNYXBfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJTdHJpbmdSZWZlcmVuY2Uu
aCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAtMzYsMTcgKzM1LDE4IEBAIGNsYXNzIENv
bm5lY3Rpb247CiBjbGFzcyBFbmNvZGVyOwogY2xhc3MgRGVjb2RlcjsKIGNsYXNzIE1lc3NhZ2VS
ZWNlaXZlcjsKK2VudW0gY2xhc3MgUmVjZWl2ZXJOYW1lIDogdWludDhfdDsKIAogY2xhc3MgTWVz
c2FnZVJlY2VpdmVyTWFwIHsKIHB1YmxpYzoKICAgICBNZXNzYWdlUmVjZWl2ZXJNYXAoKTsKICAg
ICB+TWVzc2FnZVJlY2VpdmVyTWFwKCk7CiAKLSAgICB2b2lkIGFkZE1lc3NhZ2VSZWNlaXZlcihT
dHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgTWVzc2FnZVJlY2VpdmVyJik7Ci0g
ICAgdm9pZCBhZGRNZXNzYWdlUmVjZWl2ZXIoU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZl
ck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIE1lc3NhZ2VSZWNlaXZlciYpOworICAgIHZv
aWQgYWRkTWVzc2FnZVJlY2VpdmVyKFJlY2VpdmVyTmFtZSwgTWVzc2FnZVJlY2VpdmVyJik7Cisg
ICAgdm9pZCBhZGRNZXNzYWdlUmVjZWl2ZXIoUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5h
dGlvbklELCBNZXNzYWdlUmVjZWl2ZXImKTsKIAotICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2Vp
dmVyKFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lKTsKLSAgICB2b2lkIHJlbW92
ZU1lc3NhZ2VSZWNlaXZlcihTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgdWlu
dDY0X3QgZGVzdGluYXRpb25JRCk7CisgICAgdm9pZCByZW1vdmVNZXNzYWdlUmVjZWl2ZXIoUmVj
ZWl2ZXJOYW1lKTsKKyAgICB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihSZWNlaXZlck5hbWUs
IHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpOwogICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVy
KE1lc3NhZ2VSZWNlaXZlciYpOwogCiAgICAgdm9pZCBpbnZhbGlkYXRlKCk7CkBAIC01NiwxMSAr
NTYsOSBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgLy8gTWVzc2FnZSByZWNlaXZlcnMgdGhh
dCBkb24ndCByZXF1aXJlIGEgZGVzdGluYXRpb24gSUQuCi0gICAgSGFzaE1hcDxTdHJpbmdSZWZl
cmVuY2UsIE1lc3NhZ2VSZWNlaXZlcio+IG1fZ2xvYmFsTWVzc2FnZVJlY2VpdmVyczsKKyAgICBI
YXNoTWFwPHVpbnQ4X3QsIE1lc3NhZ2VSZWNlaXZlcio+IG1fZ2xvYmFsTWVzc2FnZVJlY2VpdmVy
czsKIAotICAgIEhhc2hNYXA8c3RkOjpwYWlyPFN0cmluZ1JlZmVyZW5jZSwgdWludDY0X3Q+LCBN
ZXNzYWdlUmVjZWl2ZXIqPiBtX21lc3NhZ2VSZWNlaXZlcnM7CisgICAgSGFzaE1hcDxzdGQ6OnBh
aXI8dWludDhfdCwgdWludDY0X3Q+LCBNZXNzYWdlUmVjZWl2ZXIqPiBtX21lc3NhZ2VSZWNlaXZl
cnM7CiB9OwogCiB9OwotCi0jZW5kaWYgLy8gTWVzc2FnZVJlY2VpdmVyTWFwX2gKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VTZW5kZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVyLmgJKHJldmlzaW9uIDI2MTAz
MykKKysrIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VTZW5kZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBzdGF0aWNf
YXNzZXJ0KCFVOjppc1N5bmMsICJNZXNzYWdlIGlzIHN5bmMhIik7CiAKLSAgICAgICAgYXV0byBl
bmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNvZGVyPihVOjpyZWNlaXZlck5hbWUoKSwgVTo6bmFtZSgp
LCBkZXN0aW5hdGlvbklEKTsKKyAgICAgICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNv
ZGVyPihVOjpuYW1lKCksIGRlc3RpbmF0aW9uSUQpOwogICAgICAgICBlbmNvZGVyLT5lbmNvZGUo
bWVzc2FnZS5hcmd1bWVudHMoKSk7CiAgICAgICAgIAogICAgICAgICByZXR1cm4gc2VuZE1lc3Nh
Z2UoV1RGTW92ZShlbmNvZGVyKSwgc2VuZE9wdGlvbnMpOwpAQCAtODgsNyArODgsNyBAQCBwdWJs
aWM6CiAgICAgewogICAgICAgICBDT01QSUxFX0FTU0VSVCghVDo6aXNTeW5jLCBBc3luY01lc3Nh
Z2VFeHBlY3RlZCk7CiAKLSAgICAgICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZTxJUEM6OkVu
Y29kZXI+KFQ6OnJlY2VpdmVyTmFtZSgpLCBUOjpuYW1lKCksIGRlc3RpbmF0aW9uSUQpOworICAg
ICAgICBhdXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlPElQQzo6RW5jb2Rlcj4oVDo6bmFtZSgpLCBk
ZXN0aW5hdGlvbklEKTsKICAgICAgICAgdWludDY0X3QgbGlzdGVuZXJJRCA9IElQQzo6bmV4dEFz
eW5jUmVwbHlIYW5kbGVySUQoKTsKICAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKGxpc3RlbmVySUQp
OwogICAgICAgICBlbmNvZGVyLT5lbmNvZGUobWVzc2FnZS5hcmd1bWVudHMoKSk7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9Db25uZWN0aW9uQ29jb2EubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvQ29ubmVjdGlvbkNvY29h
Lm1tCShyZXZpc2lvbiAyNjEwMzMpCisrKyBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2Nv
YS9Db25uZWN0aW9uQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTIxNCw3ICsyMTQsNyBAQCBi
b29sIENvbm5lY3Rpb246Om9wZW4oKQogICAgICAgICBtX2lzQ29ubmVjdGVkID0gdHJ1ZTsKICAg
ICAgICAgCiAgICAgICAgIC8vIFNlbmQgdGhlIGluaXRpYWxpemUgbWVzc2FnZSwgd2hpY2ggY29u
dGFpbnMgYSBzZW5kIHJpZ2h0IGZvciB0aGUgc2VydmVyIHRvIHVzZS4KLSAgICAgICAgYXV0byBl
bmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNvZGVyPigiSVBDIiwgIkluaXRpYWxpemVDb25uZWN0aW9u
IiwgMCk7CisgICAgICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWU8RW5jb2Rlcj4oTWVzc2Fn
ZU5hbWU6OkluaXRpYWxpemVDb25uZWN0aW9uLCAwKTsKICAgICAgICAgZW5jb2Rlci0+ZW5jb2Rl
KE1hY2hQb3J0KG1fcmVjZWl2ZVBvcnQsIE1BQ0hfTVNHX1RZUEVfTUFLRV9TRU5EKSk7CiAKICAg
ICAgICAgaW5pdGlhbGl6ZVNlbmRTb3VyY2UoKTsKQEAgLTI3Myw3ICsyNzMsNyBAQCBib29sIENv
bm5lY3Rpb246OnNlbmRNZXNzYWdlKHN0ZDo6dW5pcXVlCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgIGRlZmF1bHQ6Ci0gICAgICAgIENTdHJpbmcgbWVzc2FnZU5hbWUgPSBtYWtlU3RyaW5n
KG1lc3NhZ2UtPm1lc3NhZ2VSZWNlaXZlck5hbWUoKS5kYXRhKCksICI6OiIsIG1lc3NhZ2UtPm1l
c3NhZ2VOYW1lKCkuZGF0YSgpKS51dGY4KCk7CisgICAgICAgIENTdHJpbmcgbWVzc2FnZU5hbWUo
ZGVzY3JpcHRpb24obWVzc2FnZS0+bWVzc2FnZU5hbWUoKSkpOwogICAgICAgICBXZWJLaXQ6OnNl
dENyYXNoUmVwb3J0QXBwbGljYXRpb25TcGVjaWZpY0luZm9ybWF0aW9uKChfX2JyaWRnZSBDRlN0
cmluZ1JlZilbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIlVuaGFuZGxlZCBlcnJvciBjb2Rl
ICV4LCBtZXNzYWdlICclcycsIGhhc2ggJWQiLCBrciwgbWVzc2FnZU5hbWUuZGF0YSgpLCBtZXNz
YWdlTmFtZS5oYXNoKCldKTsKICAgICAgICAgQ1JBU0hfV0lUSF9JTkZPKGtyLCBtZXNzYWdlTmFt
ZS5oYXNoKCkpOwogICAgIH0KQEAgLTMwOCw3ICszMDgsNyBAQCBib29sIENvbm5lY3Rpb246OnNl
bmRPdXRnb2luZ01lc3NhZ2Uoc3RkCiAgICAgfQogCiAgICAgc2l6ZV90IHNhZmVNZXNzYWdlU2l6
ZSA9IG1lc3NhZ2VTaXplLnVuc2FmZUdldCgpOwotICAgIGF1dG8gbWVzc2FnZSA9IE1hY2hNZXNz
YWdlOjpjcmVhdGUoZW5jb2Rlci0+bWVzc2FnZVJlY2VpdmVyTmFtZSgpLnRvU3RyaW5nKCksIGVu
Y29kZXItPm1lc3NhZ2VOYW1lKCkudG9TdHJpbmcoKSwgc2FmZU1lc3NhZ2VTaXplKTsKKyAgICBh
dXRvIG1lc3NhZ2UgPSBNYWNoTWVzc2FnZTo6Y3JlYXRlKGVuY29kZXItPm1lc3NhZ2VOYW1lKCks
IHNhZmVNZXNzYWdlU2l6ZSk7CiAgICAgaWYgKCFtZXNzYWdlKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKQEAgLTUzNCw3ICs1MzQsNyBAQCB2b2lkIENvbm5lY3Rpb246OnJlY2VpdmVTb3VyY2VF
dmVudEhhbmRsCiAgICAgZGVjb2Rlci0+c2V0SW1wb3J0YW5jZUFzc2VydGlvbihtYWtlVW5pcXVl
PEltcG9ydGFuY2VBc3NlcnRpb24+KGhlYWRlcikpOwogI2VuZGlmCiAKLSAgICBpZiAoZGVjb2Rl
ci0+bWVzc2FnZVJlY2VpdmVyTmFtZSgpID09ICJJUEMiICYmIGRlY29kZXItPm1lc3NhZ2VOYW1l
KCkgPT0gIkluaXRpYWxpemVDb25uZWN0aW9uIikgeworICAgIGlmIChkZWNvZGVyLT5tZXNzYWdl
TmFtZSgpID09IE1lc3NhZ2VOYW1lOjpJbml0aWFsaXplQ29ubmVjdGlvbikgewogICAgICAgICBB
U1NFUlQobV9pc1NlcnZlcik7CiAgICAgICAgIEFTU0VSVCghbV9pc0Nvbm5lY3RlZCk7CiAgICAg
ICAgIEFTU0VSVCghbV9zZW5kUG9ydCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9jb2NvYS9NYWNoTWVzc2FnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvY29jb2EvTWFjaE1lc3NhZ2UuY3BwCShyZXZpc2lvbiAyNjEwMzMpCisrKyBTb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9NYWNoTWVzc2FnZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM5LDE4ICszOSwxNyBAQCBzdGF0aWMgaW5saW5lIENoZWNrZWRTaXplIHNhZmVSb3Vu
ZE1zZyhDCiAgICAgcmV0dXJuICgodmFsdWUgKyAoYWxpZ25tZW50IC0gMSkpIC8gYWxpZ25tZW50
KSAqIGFsaWdubWVudDsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPE1hY2hNZXNzYWdlPiBNYWNoTWVz
c2FnZTo6Y3JlYXRlKENTdHJpbmcmJiBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBDU3RyaW5nJiYgbWVz
c2FnZU5hbWUsIHNpemVfdCBzaXplKQorc3RkOjp1bmlxdWVfcHRyPE1hY2hNZXNzYWdlPiBNYWNo
TWVzc2FnZTo6Y3JlYXRlKE1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lLCBzaXplX3Qgc2l6ZSkKIHsK
ICAgICBhdXRvIGJ1ZmZlclNpemUgPSBDaGVja2VkU2l6ZShzaXplb2YoTWFjaE1lc3NhZ2UpKSAr
IHNpemU7CiAgICAgaWYgKGJ1ZmZlclNpemUuaGFzT3ZlcmZsb3dlZCgpKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICB2b2lkKiBtZW1vcnkgPSBXVEY6OmZhc3RaZXJvZWRNYWxsb2MoYnVm
ZmVyU2l6ZS51bnNhZmVHZXQoKSk7Ci0gICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxNYWNoTWVz
c2FnZT4geyBuZXcgKE5vdE51bGwsIG1lbW9yeSkgTWFjaE1lc3NhZ2UgeyBXVEZNb3ZlKG1lc3Nh
Z2VSZWNlaXZlck5hbWUpLCBXVEZNb3ZlKG1lc3NhZ2VOYW1lKSwgc2l6ZSB9IH07CisgICAgcmV0
dXJuIHN0ZDo6dW5pcXVlX3B0cjxNYWNoTWVzc2FnZT4geyBuZXcgKE5vdE51bGwsIG1lbW9yeSkg
TWFjaE1lc3NhZ2UgeyBtZXNzYWdlTmFtZSwgc2l6ZSB9IH07CiB9CiAKLU1hY2hNZXNzYWdlOjpN
YWNoTWVzc2FnZShDU3RyaW5nJiYgbWVzc2FnZVJlY2VpdmVyTmFtZSwgQ1N0cmluZyYmIG1lc3Nh
Z2VOYW1lLCBzaXplX3Qgc2l6ZSkKLSAgICA6IG1fbWVzc2FnZVJlY2VpdmVyTmFtZShXVEZNb3Zl
KG1lc3NhZ2VSZWNlaXZlck5hbWUpKQotICAgICwgbV9tZXNzYWdlTmFtZShXVEZNb3ZlKG1lc3Nh
Z2VOYW1lKSkKK01hY2hNZXNzYWdlOjpNYWNoTWVzc2FnZShNZXNzYWdlTmFtZSBtZXNzYWdlTmFt
ZSwgc2l6ZV90IHNpemUpCisgICAgOiBtX21lc3NhZ2VOYW1lIHsgbWVzc2FnZU5hbWUgfQogICAg
ICwgbV9zaXplIHsgc2l6ZSB9CiB7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9jb2NvYS9NYWNoTWVzc2FnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL2NvY29hL01hY2hNZXNzYWdlLmgJKHJldmlzaW9uIDI2MTAzMykKKysrIFNvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL01hY2hNZXNzYWdlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI3LDYgKzI3LDcgQEAKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogCisjaW5jbHVkZSAiTWVzc2Fn
ZU5hbWVzLmgiCiAjaW5jbHVkZSA8bWFjaC9tZXNzYWdlLmg+CiAjaW5jbHVkZSA8bWVtb3J5Pgog
I2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgpAQCAtMzcsNyArMzgsNyBAQCBuYW1l
c3BhY2UgSVBDIHsKIGNsYXNzIE1hY2hNZXNzYWdlIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPE1hY2hNZXNzYWdlPiBj
cmVhdGUoQ1N0cmluZyYmIG1lc3NhZ2VSZWNlaXZlck5hbWUsIENTdHJpbmcmJiBtZXNzYWdlTmFt
ZSwgc2l6ZV90KTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPE1hY2hNZXNzYWdlPiBjcmVh
dGUoTWVzc2FnZU5hbWUsIHNpemVfdCk7CiAgICAgfk1hY2hNZXNzYWdlKCk7CiAKICAgICBzdGF0
aWMgQ2hlY2tlZFNpemUgbWVzc2FnZVNpemUoc2l6ZV90IGJvZHlTaXplLCBzaXplX3QgcG9ydERl
c2NyaXB0b3JDb3VudCwgc2l6ZV90IG1lbW9yeURlc2NyaXB0b3JDb3VudCk7CkBAIC00NywxNCAr
NDgsMTMgQEAgcHVibGljOgogCiAgICAgdm9pZCBsZWFrRGVzY3JpcHRvcnMoKTsKIAotICAgIGNv
bnN0IENTdHJpbmcmIG1lc3NhZ2VSZWNlaXZlck5hbWUoKSBjb25zdCB7IHJldHVybiBtX21lc3Nh
Z2VSZWNlaXZlck5hbWU7IH0KLSAgICBjb25zdCBDU3RyaW5nJiBtZXNzYWdlTmFtZSgpIGNvbnN0
IHsgcmV0dXJuIG1fbWVzc2FnZU5hbWU7IH0KKyAgICBSZWNlaXZlck5hbWUgbWVzc2FnZVJlY2Vp
dmVyTmFtZSgpIGNvbnN0IHsgcmV0dXJuIHJlY2VpdmVyTmFtZShtX21lc3NhZ2VOYW1lKTsgfQor
ICAgIE1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lKCkgY29uc3QgeyByZXR1cm4gbV9tZXNzYWdlTmFt
ZTsgfQogCiBwcml2YXRlOgotICAgIE1hY2hNZXNzYWdlKENTdHJpbmcmJiBtZXNzYWdlUmVjZWl2
ZXJOYW1lLCBDU3RyaW5nJiYgbWVzc2FnZU5hbWUsIHNpemVfdCk7CisgICAgTWFjaE1lc3NhZ2Uo
TWVzc2FnZU5hbWUsIHNpemVfdCk7CiAKLSAgICBDU3RyaW5nIG1fbWVzc2FnZVJlY2VpdmVyTmFt
ZTsKLSAgICBDU3RyaW5nIG1fbWVzc2FnZU5hbWU7CisgICAgTWVzc2FnZU5hbWUgbV9tZXNzYWdl
TmFtZTsKICAgICBzaXplX3QgbV9zaXplOwogICAgIGJvb2wgbV9zaG91bGRGcmVlRGVzY3JpcHRv
cnMgeyB0cnVlIH07CiAgICAgbWFjaF9tc2dfaGVhZGVyX3QgbV9tZXNzYWdlSGVhZGVyW107Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29u
bmVjdGlvbi5jcHAJKHJldmlzaW9uIDI2MTAzMykKKysrIFNvdXJjZS9XZWJLaXQvUGx1Z2luUHJv
Y2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwNSw3ICsy
MDUsNyBAQCB2b2lkIFdlYlByb2Nlc3NDb25uZWN0aW9uOjpkZXN0cm95UGx1Z2luCiAgICAgZGVz
dHJveVBsdWdpbkNvbnRyb2xsZXJQcm94eShwbHVnaW5Db250cm9sbGVyUHJveHkpOwogfQogCi12
b2lkIFdlYlByb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSVBDOjpTdHJpbmdSZWZlcmVuY2UsIElQQzo6U3RyaW5nUmVmZXJlbmNlKQor
dm9pZCBXZWJQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZU5hbWUpCiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVu
dC4KIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVj
dGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9XZWJQcm9j
ZXNzQ29ubmVjdGlvbi5oCShyZXZpc2lvbiAyNjEwMzMpCisrKyBTb3VyY2UvV2ViS2l0L1BsdWdp
blByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNjQsNyAr
NjQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlU3luY01l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQ
Qzo6RW5jb2Rlcj4mKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZENsb3NlKElQQzo6Q29ubmVjdGlv
biYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIElQQzo6
U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2Vp
dmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VOYW1lKSBvdmVy
cmlkZTsKIAogICAgIC8vIE1lc3NhZ2UgaGFuZGxlcnMuCiAgICAgdm9pZCBkaWRSZWNlaXZlV2Vi
UHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYp
OwpJbmRleDogU291cmNlL1dlYktpdC9TY3JpcHRzL01ha2VmaWxlCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvU2NyaXB0cy9NYWtlZmlsZQkocmV2aXNpb24gMjYxMDMzKQorKysgU291cmNl
L1dlYktpdC9TY3JpcHRzL01ha2VmaWxlCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsMiBAQAog
YWxsOgotCXB5dGhvbiAuL2dlbmVyYXRlLW1lc3NhZ2UtcmVjZWl2ZXIucHkgd2Via2l0L3Rlc3Qt
c3VwZXJjbGFzcy1tZXNzYWdlcy5pbiAtLWltcGxlbWVudGF0aW9uIHdlYmtpdC9NZXNzYWdlUmVj
ZWl2ZXJTdXBlcmNsYXNzLWV4cGVjdGVkLmNwcCAtLWhlYWRlciB3ZWJraXQvTWVzc2FnZXNTdXBl
cmNsYXNzLWV4cGVjdGVkLmggLS1yZXBseS1oZWFkZXIgd2Via2l0L01lc3NhZ2VzUmVwbGllc1N1
cGVyY2xhc3NSZXBsaWVzLWV4cGVjdGVkLmgKLQlweXRob24gLi9nZW5lcmF0ZS1tZXNzYWdlLXJl
Y2VpdmVyLnB5IHdlYmtpdC90ZXN0LWxlZ2FjeS1tZXNzYWdlcy5pbiAtLWltcGxlbWVudGF0aW9u
IHdlYmtpdC9MZWdhY3lNZXNzYWdlUmVjZWl2ZXItZXhwZWN0ZWQuY3BwIC0taGVhZGVyIHdlYmtp
dC9MZWdhY3lNZXNzYWdlcy1leHBlY3RlZC5oIC0tcmVwbHktaGVhZGVyIHdlYmtpdC9MZWdhY3lN
ZXNzYWdlc1JlcGxpZXMtZXhwZWN0ZWQuaAotCXB5dGhvbiAuL2dlbmVyYXRlLW1lc3NhZ2UtcmVj
ZWl2ZXIucHkgd2Via2l0L3Rlc3QtbWVzc2FnZXMuaW4gLS1pbXBsZW1lbnRhdGlvbiB3ZWJraXQv
TWVzc2FnZVJlY2VpdmVyLWV4cGVjdGVkLmNwcCAtLWhlYWRlciB3ZWJraXQvTWVzc2FnZXMtZXhw
ZWN0ZWQuaCAtLXJlcGx5LWhlYWRlciB3ZWJraXQvTWVzc2FnZXNSZXBsaWVzLWV4cGVjdGVkLmgK
LQorCXB5dGhvbiBnZW5lcmF0ZS1tZXNzYWdlLXJlY2VpdmVyLnB5IHdlYmtpdCB0ZXN0LXN1cGVy
Y2xhc3MgdGVzdC1sZWdhY3kgdGVzdApJbmRleDogU291cmNlL1dlYktpdC9TY3JpcHRzL01lc3Nh
Z2VOYW1lcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TY3JpcHRzL01lc3NhZ2VO
YW1lcy5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9TY3JpcHRzL01lc3NhZ2VO
YW1lcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzMDMgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTAtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
CisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTWVzc2FnZU5hbWVzLmgiCisKK25h
bWVzcGFjZSBJUEMgeworCitjb25zdCBjaGFyKiBkZXNjcmlwdGlvbihNZXNzYWdlTmFtZSBuYW1l
KQoreworICAgIHN3aXRjaCAobmFtZSkgeworICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2Vf
TG9hZFVSTDoKKyAgICAgICAgcmV0dXJuICJXZWJQYWdlOjpMb2FkVVJMIjsKKyNpZiBFTkFCTEUo
VEVTVF9GRUFUVVJFKQorICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVzdEFzeW5jTWVz
c2FnZToKKyAgICAgICAgcmV0dXJuICJXZWJQYWdlOjpUZXN0QXN5bmNNZXNzYWdlIjsKKyAgICBj
YXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX1Rlc3RBc3luY01lc3NhZ2VSZXBseToKKyAgICAgICAg
cmV0dXJuICJXZWJQYWdlOjpUZXN0QXN5bmNNZXNzYWdlUmVwbHkiOworI2VuZGlmCisjaWYgRU5B
QkxFKFRFU1RfRkVBVFVSRSkKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX1Rlc3RBc3lu
Y01lc3NhZ2VXaXRoTm9Bcmd1bWVudHM6CisgICAgICAgIHJldHVybiAiV2ViUGFnZTo6VGVzdEFz
eW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50cyI7CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFn
ZV9UZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJndW1lbnRzUmVwbHk6CisgICAgICAgIHJldHVybiAi
V2ViUGFnZTo6VGVzdEFzeW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50c1JlcGx5IjsKKyNlbmRpZgor
I2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9U
ZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1lbnRzOgorICAgICAgICByZXR1cm4gIldl
YlBhZ2U6OlRlc3RBc3luY01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHMiOworICAgIGNhc2Ug
TWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVzdEFzeW5jTWVzc2FnZVdpdGhNdWx0aXBsZUFyZ3VtZW50
c1JlcGx5OgorICAgICAgICByZXR1cm4gIldlYlBhZ2U6OlRlc3RBc3luY01lc3NhZ2VXaXRoTXVs
dGlwbGVBcmd1bWVudHNSZXBseSI7CisjZW5kaWYKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQ
YWdlX1Rlc3RTeW5jTWVzc2FnZToKKyAgICAgICAgcmV0dXJuICJXZWJQYWdlOjpUZXN0U3luY01l
c3NhZ2UiOworICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVzdFN5bmNocm9ub3VzTWVz
c2FnZToKKyAgICAgICAgcmV0dXJuICJXZWJQYWdlOjpUZXN0U3luY2hyb25vdXNNZXNzYWdlIjsK
KyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX0xvYWRVUkw6CisgICAgICAgIHJldHVybiAi
V2ViUGFnZTo6TG9hZFVSTCI7CisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAgICBjYXNlIE1l
c3NhZ2VOYW1lOjpXZWJQYWdlX0xvYWRTb21ldGhpbmc6CisgICAgICAgIHJldHVybiAiV2ViUGFn
ZTo6TG9hZFNvbWV0aGluZyI7CisjZW5kaWYKKyNpZiAoRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYg
KE5FU1RFRF9NRVNTQUdFX0NPTkRJVElPTiB8fCBTT01FX09USEVSX01FU1NBR0VfQ09ORElUSU9O
KSkKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX1RvdWNoRXZlbnQ6CisgICAgICAgIHJl
dHVybiAiV2ViUGFnZTo6VG91Y2hFdmVudCI7CisjZW5kaWYKKyNpZiAoRU5BQkxFKFRPVUNIX0VW
RU5UUykgJiYgKE5FU1RFRF9NRVNTQUdFX0NPTkRJVElPTiAmJiBTT01FX09USEVSX01FU1NBR0Vf
Q09ORElUSU9OKSkKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX0FkZEV2ZW50OgorICAg
ICAgICByZXR1cm4gIldlYlBhZ2U6OkFkZEV2ZW50IjsKKyNlbmRpZgorI2lmIEVOQUJMRShUT1VD
SF9FVkVOVFMpCisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9Mb2FkU29tZXRoaW5nRWxz
ZToKKyAgICAgICAgcmV0dXJuICJXZWJQYWdlOjpMb2FkU29tZXRoaW5nRWxzZSI7CisjZW5kaWYK
KyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX0RpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbjoK
KyAgICAgICAgcmV0dXJuICJXZWJQYWdlOjpEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24iOworICAg
IGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfQ2xvc2U6CisgICAgICAgIHJldHVybiAiV2ViUGFn
ZTo6Q2xvc2UiOworICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfUHJlZmVyZW5jZXNEaWRD
aGFuZ2U6CisgICAgICAgIHJldHVybiAiV2ViUGFnZTo6UHJlZmVyZW5jZXNEaWRDaGFuZ2UiOwor
ICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfU2VuZERvdWJsZUFuZEZsb2F0OgorICAgICAg
ICByZXR1cm4gIldlYlBhZ2U6OlNlbmREb3VibGVBbmRGbG9hdCI7CisgICAgY2FzZSBNZXNzYWdl
TmFtZTo6V2ViUGFnZV9TZW5kSW50czoKKyAgICAgICAgcmV0dXJuICJXZWJQYWdlOjpTZW5kSW50
cyI7CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9DcmVhdGVQbHVnaW46CisgICAgICAg
IHJldHVybiAiV2ViUGFnZTo6Q3JlYXRlUGx1Z2luIjsKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpX
ZWJQYWdlX1J1bkphdmFTY3JpcHRBbGVydDoKKyAgICAgICAgcmV0dXJuICJXZWJQYWdlOjpSdW5K
YXZhU2NyaXB0QWxlcnQiOworICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfR2V0UGx1Z2lu
czoKKyAgICAgICAgcmV0dXJuICJXZWJQYWdlOjpHZXRQbHVnaW5zIjsKKyAgICBjYXNlIE1lc3Nh
Z2VOYW1lOjpXZWJQYWdlX0dldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOgorICAgICAgICByZXR1
cm4gIldlYlBhZ2U6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uIjsKKyAgICBjYXNlIE1lc3Nh
Z2VOYW1lOjpXZWJQYWdlX1Rlc3RNdWx0aXBsZUF0dHJpYnV0ZXM6CisgICAgICAgIHJldHVybiAi
V2ViUGFnZTo6VGVzdE11bHRpcGxlQXR0cmlidXRlcyI7CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6
V2ViUGFnZV9UZXN0UGFyYW1ldGVyQXR0cmlidXRlczoKKyAgICAgICAgcmV0dXJuICJXZWJQYWdl
OjpUZXN0UGFyYW1ldGVyQXR0cmlidXRlcyI7CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFn
ZV9UZW1wbGF0ZVRlc3Q6CisgICAgICAgIHJldHVybiAiV2ViUGFnZTo6VGVtcGxhdGVUZXN0IjsK
KyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX1NldFZpZGVvTGF5ZXJJRDoKKyAgICAgICAg
cmV0dXJuICJXZWJQYWdlOjpTZXRWaWRlb0xheWVySUQiOworI2lmIFBMQVRGT1JNKE1BQykKKyAg
ICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX0RpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9u
OgorICAgICAgICByZXR1cm4gIldlYlBhZ2U6OkRpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9u
IjsKKyNlbmRpZgorI2lmIFBMQVRGT1JNKE1BQykKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQ
YWdlX0ludGVycHJldEtleUV2ZW50OgorICAgICAgICByZXR1cm4gIldlYlBhZ2U6OkludGVycHJl
dEtleUV2ZW50IjsKKyNlbmRpZgorI2lmIEVOQUJMRShERVBSRUNBVEVEX0ZFQVRVUkUpCisgICAg
Y2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9EZXByZWNhdGVkT3BlcmF0aW9uOgorICAgICAgICBy
ZXR1cm4gIldlYlBhZ2U6OkRlcHJlY2F0ZWRPcGVyYXRpb24iOworI2VuZGlmCisjaWYgRU5BQkxF
KEVYUEVSSU1FTlRBTF9GRUFUVVJFKQorICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfRXhw
ZXJpbWVudGFsT3BlcmF0aW9uOgorICAgICAgICByZXR1cm4gIldlYlBhZ2U6OkV4cGVyaW1lbnRh
bE9wZXJhdGlvbiI7CisjZW5kaWYKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXcmFwcGVkQXN5bmNN
ZXNzYWdlRm9yVGVzdGluZzoKKyAgICAgICAgcmV0dXJuICJJUEM6OldyYXBwZWRBc3luY01lc3Nh
Z2VGb3JUZXN0aW5nIjsKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpTeW5jTWVzc2FnZVJlcGx5Ogor
ICAgICAgICByZXR1cm4gIklQQzo6U3luY01lc3NhZ2VSZXBseSI7CisgICAgY2FzZSBNZXNzYWdl
TmFtZTo6SW5pdGlhbGl6ZUNvbm5lY3Rpb246CisgICAgICAgIHJldHVybiAiSVBDOjpJbml0aWFs
aXplQ29ubmVjdGlvbiI7CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6TGVnYWN5U2Vzc2lvblN0YXRl
OgorICAgICAgICByZXR1cm4gIklQQzo6TGVnYWN5U2Vzc2lvblN0YXRlIjsKKyAgICB9CisgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuICI8aW52YWxpZCBtZXNzYWdlIG5hbWU+
IjsKK30KKworUmVjZWl2ZXJOYW1lIHJlY2VpdmVyTmFtZShNZXNzYWdlTmFtZSBtZXNzYWdlTmFt
ZSkKK3sKKyAgICBzd2l0Y2ggKG1lc3NhZ2VOYW1lKSB7CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6
V2ViUGFnZV9Mb2FkVVJMOgorI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCisgICAgY2FzZSBNZXNz
YWdlTmFtZTo6V2ViUGFnZV9UZXN0QXN5bmNNZXNzYWdlOgorI2VuZGlmCisjaWYgRU5BQkxFKFRF
U1RfRkVBVFVSRSkKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX1Rlc3RBc3luY01lc3Nh
Z2VXaXRoTm9Bcmd1bWVudHM6CisjZW5kaWYKKyNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQorICAg
IGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVzdEFzeW5jTWVzc2FnZVdpdGhNdWx0aXBsZUFy
Z3VtZW50czoKKyNlbmRpZgorICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVzdFN5bmNN
ZXNzYWdlOgorICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVzdFN5bmNocm9ub3VzTWVz
c2FnZToKKyAgICAgICAgcmV0dXJuIFJlY2VpdmVyTmFtZTo6V2ViUGFnZTsKKyAgICBjYXNlIE1l
c3NhZ2VOYW1lOjpXZWJQYWdlX0xvYWRVUkw6CisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAg
ICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX0xvYWRTb21ldGhpbmc6CisjZW5kaWYKKyNpZiAo
RU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgKE5FU1RFRF9NRVNTQUdFX0NPTkRJVElPTiB8fCBTT01F
X09USEVSX01FU1NBR0VfQ09ORElUSU9OKSkKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdl
X1RvdWNoRXZlbnQ6CisjZW5kaWYKKyNpZiAoRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgKE5FU1RF
RF9NRVNTQUdFX0NPTkRJVElPTiAmJiBTT01FX09USEVSX01FU1NBR0VfQ09ORElUSU9OKSkKKyAg
ICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX0FkZEV2ZW50OgorI2VuZGlmCisjaWYgRU5BQkxF
KFRPVUNIX0VWRU5UUykKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX0xvYWRTb21ldGhp
bmdFbHNlOgorI2VuZGlmCisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9EaWRSZWNlaXZl
UG9saWN5RGVjaXNpb246CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9DbG9zZToKKyAg
ICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX1ByZWZlcmVuY2VzRGlkQ2hhbmdlOgorICAgIGNh
c2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfU2VuZERvdWJsZUFuZEZsb2F0OgorICAgIGNhc2UgTWVz
c2FnZU5hbWU6OldlYlBhZ2VfU2VuZEludHM6CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFn
ZV9DcmVhdGVQbHVnaW46CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9SdW5KYXZhU2Ny
aXB0QWxlcnQ6CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9HZXRQbHVnaW5zOgorICAg
IGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfR2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246Cisg
ICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9UZXN0TXVsdGlwbGVBdHRyaWJ1dGVzOgorICAg
IGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVzdFBhcmFtZXRlckF0dHJpYnV0ZXM6CisgICAg
Y2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9UZW1wbGF0ZVRlc3Q6CisgICAgY2FzZSBNZXNzYWdl
TmFtZTo6V2ViUGFnZV9TZXRWaWRlb0xheWVySUQ6CisjaWYgUExBVEZPUk0oTUFDKQorICAgIGNh
c2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfRGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb246Cisj
ZW5kaWYKKyNpZiBQTEFURk9STShNQUMpCisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9J
bnRlcnByZXRLZXlFdmVudDoKKyNlbmRpZgorI2lmIEVOQUJMRShERVBSRUNBVEVEX0ZFQVRVUkUp
CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9EZXByZWNhdGVkT3BlcmF0aW9uOgorI2Vu
ZGlmCisjaWYgRU5BQkxFKEVYUEVSSU1FTlRBTF9GRUFUVVJFKQorICAgIGNhc2UgTWVzc2FnZU5h
bWU6OldlYlBhZ2VfRXhwZXJpbWVudGFsT3BlcmF0aW9uOgorI2VuZGlmCisgICAgICAgIHJldHVy
biBSZWNlaXZlck5hbWU6OldlYlBhZ2U7CisgICAgICAgIHJldHVybiBSZWNlaXZlck5hbWU6Ok5v
bmU7CisjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQ
YWdlX1Rlc3RBc3luY01lc3NhZ2VSZXBseToKKyNlbmRpZgorI2lmIEVOQUJMRShURVNUX0ZFQVRV
UkUpCisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9UZXN0QXN5bmNNZXNzYWdlV2l0aE5v
QXJndW1lbnRzUmVwbHk6CisjZW5kaWYKKyNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQorICAgIGNh
c2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVzdEFzeW5jTWVzc2FnZVdpdGhNdWx0aXBsZUFyZ3Vt
ZW50c1JlcGx5OgorI2VuZGlmCisgICAgICAgIHJldHVybiBSZWNlaXZlck5hbWU6OkFzeW5jUmVw
bHk7CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V3JhcHBlZEFzeW5jTWVzc2FnZUZvclRlc3Rpbmc6
CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6U3luY01lc3NhZ2VSZXBseToKKyAgICBjYXNlIE1lc3Nh
Z2VOYW1lOjpJbml0aWFsaXplQ29ubmVjdGlvbjoKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpMZWdh
Y3lTZXNzaW9uU3RhdGU6CisgICAgICAgIHJldHVybiBSZWNlaXZlck5hbWU6OklQQzsKKyAgICB9
CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIFJlY2VpdmVyTmFtZTo6SW52
YWxpZDsKK30KKworYm9vbCBpc1ZhbGlkTWVzc2FnZU5hbWUoTWVzc2FnZU5hbWUgbWVzc2FnZU5h
bWUpCit7CisgICAgaWYgKG1lc3NhZ2VOYW1lID09IElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2Vf
TG9hZFVSTCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkK
KyAgICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9UZXN0QXN5
bmNNZXNzYWdlKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAobWVzc2FnZU5hbWUgPT0g
SVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9UZXN0QXN5bmNNZXNzYWdlUmVwbHkpCisgICAgICAg
IHJldHVybiB0cnVlOworI2VuZGlmCisjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKKyAgICBpZiAo
bWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9UZXN0QXN5bmNNZXNzYWdl
V2l0aE5vQXJndW1lbnRzKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAobWVzc2FnZU5h
bWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9UZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJn
dW1lbnRzUmVwbHkpCisgICAgICAgIHJldHVybiB0cnVlOworI2VuZGlmCisjaWYgRU5BQkxFKFRF
U1RfRkVBVFVSRSkKKyAgICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6V2Vi
UGFnZV9UZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1lbnRzKQorICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFn
ZV9UZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1lbnRzUmVwbHkpCisgICAgICAgIHJl
dHVybiB0cnVlOworI2VuZGlmCisgICAgaWYgKG1lc3NhZ2VOYW1lID09IElQQzo6TWVzc2FnZU5h
bWU6OldlYlBhZ2VfVGVzdFN5bmNNZXNzYWdlKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBp
ZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9UZXN0U3luY2hyb25v
dXNNZXNzYWdlKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAobWVzc2FnZU5hbWUgPT0g
SVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9Mb2FkVVJMKQorICAgICAgICByZXR1cm4gdHJ1ZTsK
KyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgIGlmIChtZXNzYWdlTmFtZSA9PSBJUEM6Ok1l
c3NhZ2VOYW1lOjpXZWJQYWdlX0xvYWRTb21ldGhpbmcpCisgICAgICAgIHJldHVybiB0cnVlOwor
I2VuZGlmCisjaWYgKEVOQUJMRShUT1VDSF9FVkVOVFMpICYmIChORVNURURfTUVTU0FHRV9DT05E
SVRJT04gfHwgU09NRV9PVEhFUl9NRVNTQUdFX0NPTkRJVElPTikpCisgICAgaWYgKG1lc3NhZ2VO
YW1lID09IElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfVG91Y2hFdmVudCkKKyAgICAgICAgcmV0
dXJuIHRydWU7CisjZW5kaWYKKyNpZiAoRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgKE5FU1RFRF9N
RVNTQUdFX0NPTkRJVElPTiAmJiBTT01FX09USEVSX01FU1NBR0VfQ09ORElUSU9OKSkKKyAgICBp
ZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9BZGRFdmVudCkKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisjZW5kaWYKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAg
IGlmIChtZXNzYWdlTmFtZSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX0xvYWRTb21ldGhp
bmdFbHNlKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyNlbmRpZgorICAgIGlmIChtZXNzYWdlTmFt
ZSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX0RpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbikK
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKG1lc3NhZ2VOYW1lID09IElQQzo6TWVzc2Fn
ZU5hbWU6OldlYlBhZ2VfQ2xvc2UpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmIChtZXNz
YWdlTmFtZSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX1ByZWZlcmVuY2VzRGlkQ2hhbmdl
KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNz
YWdlTmFtZTo6V2ViUGFnZV9TZW5kRG91YmxlQW5kRmxvYXQpCisgICAgICAgIHJldHVybiB0cnVl
OworICAgIGlmIChtZXNzYWdlTmFtZSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX1NlbmRJ
bnRzKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpN
ZXNzYWdlTmFtZTo6V2ViUGFnZV9DcmVhdGVQbHVnaW4pCisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIGlmIChtZXNzYWdlTmFtZSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX1J1bkphdmFT
Y3JpcHRBbGVydCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKG1lc3NhZ2VOYW1lID09
IElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfR2V0UGx1Z2lucykKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgaWYgKG1lc3NhZ2VOYW1lID09IElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfR2V0
UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24pCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmICht
ZXNzYWdlTmFtZSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX1Rlc3RNdWx0aXBsZUF0dHJp
YnV0ZXMpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmIChtZXNzYWdlTmFtZSA9PSBJUEM6
Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX1Rlc3RQYXJhbWV0ZXJBdHRyaWJ1dGVzKQorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6V2Vi
UGFnZV9UZW1wbGF0ZVRlc3QpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmIChtZXNzYWdl
TmFtZSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX1NldFZpZGVvTGF5ZXJJRCkKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisjaWYgUExBVEZPUk0oTUFDKQorICAgIGlmIChtZXNzYWdlTmFtZSA9
PSBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX0RpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9u
KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyNlbmRpZgorI2lmIFBMQVRGT1JNKE1BQykKKyAgICBp
ZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9JbnRlcnByZXRLZXlF
dmVudCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisjZW5kaWYKKyNpZiBFTkFCTEUoREVQUkVDQVRF
RF9GRUFUVVJFKQorICAgIGlmIChtZXNzYWdlTmFtZSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQ
YWdlX0RlcHJlY2F0ZWRPcGVyYXRpb24pCisgICAgICAgIHJldHVybiB0cnVlOworI2VuZGlmCisj
aWYgRU5BQkxFKEVYUEVSSU1FTlRBTF9GRUFUVVJFKQorICAgIGlmIChtZXNzYWdlTmFtZSA9PSBJ
UEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX0V4cGVyaW1lbnRhbE9wZXJhdGlvbikKKyAgICAgICAg
cmV0dXJuIHRydWU7CisjZW5kaWYKKyAgICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdl
TmFtZTo6V3JhcHBlZEFzeW5jTWVzc2FnZUZvclRlc3RpbmcpCisgICAgICAgIHJldHVybiB0cnVl
OworICAgIGlmIChtZXNzYWdlTmFtZSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpTeW5jTWVzc2FnZVJl
cGx5KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpN
ZXNzYWdlTmFtZTo6SW5pdGlhbGl6ZUNvbm5lY3Rpb24pCisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIGlmIChtZXNzYWdlTmFtZSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpMZWdhY3lTZXNzaW9uU3Rh
dGUpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBmYWxzZTsKK307CisKK30gLy8g
bmFtZXNwYWNlIElQQwpJbmRleDogU291cmNlL1dlYktpdC9TY3JpcHRzL01lc3NhZ2VOYW1lcy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy9NZXNzYWdlTmFtZXMuaAkobm9u
ZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvTWVzc2FnZU5hbWVzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwxMTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisg
KiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2luY2x1ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+CisKK25hbWVzcGFjZSBJUEMgeworCitl
bnVtIGNsYXNzIFJlY2VpdmVyTmFtZSA6IHVpbnQ4X3QgeworICAgIFdlYlBhZ2UgPSAxCisgICAg
LCBXZWJQYWdlID0gMgorICAgICwgTm9uZSA9IDMKKyAgICAsIElQQyA9IDQKKyAgICAsIEFzeW5j
UmVwbHkgPSA1CisgICAgLCBJbnZhbGlkID0gNgorfTsKKworZW51bSBjbGFzcyBNZXNzYWdlTmFt
ZSA6IHVpbnQxNl90IHsKKyAgICBXZWJQYWdlX0xvYWRVUkwgPSAxCisjaWYgRU5BQkxFKFRFU1Rf
RkVBVFVSRSkKKyAgICAsIFdlYlBhZ2VfVGVzdEFzeW5jTWVzc2FnZSA9IDIKKyAgICAsIFdlYlBh
Z2VfVGVzdEFzeW5jTWVzc2FnZVJlcGx5ID0gMworI2VuZGlmCisjaWYgRU5BQkxFKFRFU1RfRkVB
VFVSRSkKKyAgICAsIFdlYlBhZ2VfVGVzdEFzeW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50cyA9IDQK
KyAgICAsIFdlYlBhZ2VfVGVzdEFzeW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50c1JlcGx5ID0gNQor
I2VuZGlmCisjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKKyAgICAsIFdlYlBhZ2VfVGVzdEFzeW5j
TWVzc2FnZVdpdGhNdWx0aXBsZUFyZ3VtZW50cyA9IDYKKyAgICAsIFdlYlBhZ2VfVGVzdEFzeW5j
TWVzc2FnZVdpdGhNdWx0aXBsZUFyZ3VtZW50c1JlcGx5ID0gNworI2VuZGlmCisgICAgLCBXZWJQ
YWdlX1Rlc3RTeW5jTWVzc2FnZSA9IDgKKyAgICAsIFdlYlBhZ2VfVGVzdFN5bmNocm9ub3VzTWVz
c2FnZSA9IDkKKyAgICAsIFdlYlBhZ2VfTG9hZFVSTCA9IDEwCisjaWYgRU5BQkxFKFRPVUNIX0VW
RU5UUykKKyAgICAsIFdlYlBhZ2VfTG9hZFNvbWV0aGluZyA9IDExCisjZW5kaWYKKyNpZiAoRU5B
QkxFKFRPVUNIX0VWRU5UUykgJiYgKE5FU1RFRF9NRVNTQUdFX0NPTkRJVElPTiB8fCBTT01FX09U
SEVSX01FU1NBR0VfQ09ORElUSU9OKSkKKyAgICAsIFdlYlBhZ2VfVG91Y2hFdmVudCA9IDEyCisj
ZW5kaWYKKyNpZiAoRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgKE5FU1RFRF9NRVNTQUdFX0NPTkRJ
VElPTiAmJiBTT01FX09USEVSX01FU1NBR0VfQ09ORElUSU9OKSkKKyAgICAsIFdlYlBhZ2VfQWRk
RXZlbnQgPSAxMworI2VuZGlmCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAgICAsIFdlYlBh
Z2VfTG9hZFNvbWV0aGluZ0Vsc2UgPSAxNAorI2VuZGlmCisgICAgLCBXZWJQYWdlX0RpZFJlY2Vp
dmVQb2xpY3lEZWNpc2lvbiA9IDE1CisgICAgLCBXZWJQYWdlX0Nsb3NlID0gMTYKKyAgICAsIFdl
YlBhZ2VfUHJlZmVyZW5jZXNEaWRDaGFuZ2UgPSAxNworICAgICwgV2ViUGFnZV9TZW5kRG91Ymxl
QW5kRmxvYXQgPSAxOAorICAgICwgV2ViUGFnZV9TZW5kSW50cyA9IDE5CisgICAgLCBXZWJQYWdl
X0NyZWF0ZVBsdWdpbiA9IDIwCisgICAgLCBXZWJQYWdlX1J1bkphdmFTY3JpcHRBbGVydCA9IDIx
CisgICAgLCBXZWJQYWdlX0dldFBsdWdpbnMgPSAyMgorICAgICwgV2ViUGFnZV9HZXRQbHVnaW5Q
cm9jZXNzQ29ubmVjdGlvbiA9IDIzCisgICAgLCBXZWJQYWdlX1Rlc3RNdWx0aXBsZUF0dHJpYnV0
ZXMgPSAyNAorICAgICwgV2ViUGFnZV9UZXN0UGFyYW1ldGVyQXR0cmlidXRlcyA9IDI1CisgICAg
LCBXZWJQYWdlX1RlbXBsYXRlVGVzdCA9IDI2CisgICAgLCBXZWJQYWdlX1NldFZpZGVvTGF5ZXJJ
RCA9IDI3CisjaWYgUExBVEZPUk0oTUFDKQorICAgICwgV2ViUGFnZV9EaWRDcmVhdGVXZWJQcm9j
ZXNzQ29ubmVjdGlvbiA9IDI4CisjZW5kaWYKKyNpZiBQTEFURk9STShNQUMpCisgICAgLCBXZWJQ
YWdlX0ludGVycHJldEtleUV2ZW50ID0gMjkKKyNlbmRpZgorI2lmIEVOQUJMRShERVBSRUNBVEVE
X0ZFQVRVUkUpCisgICAgLCBXZWJQYWdlX0RlcHJlY2F0ZWRPcGVyYXRpb24gPSAzMAorI2VuZGlm
CisjaWYgRU5BQkxFKEVYUEVSSU1FTlRBTF9GRUFUVVJFKQorICAgICwgV2ViUGFnZV9FeHBlcmlt
ZW50YWxPcGVyYXRpb24gPSAzMQorI2VuZGlmCisgICAgLCBXcmFwcGVkQXN5bmNNZXNzYWdlRm9y
VGVzdGluZyA9IDMyCisgICAgLCBTeW5jTWVzc2FnZVJlcGx5ID0gMzMKKyAgICAsIEluaXRpYWxp
emVDb25uZWN0aW9uID0gMzQKKyAgICAsIExlZ2FjeVNlc3Npb25TdGF0ZSA9IDM1Cit9OworCitS
ZWNlaXZlck5hbWUgcmVjZWl2ZXJOYW1lKE1lc3NhZ2VOYW1lKTsKK2NvbnN0IGNoYXIqIGRlc2Ny
aXB0aW9uKE1lc3NhZ2VOYW1lKTsKK2Jvb2wgaXNWYWxpZE1lc3NhZ2VOYW1lKE1lc3NhZ2VOYW1l
KTsKKworfSAvLyBuYW1lc3BhY2UgSVBDCisKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTw+
CitjbGFzcyBIYXNDdXN0b21Jc1ZhbGlkRW51bTxJUEM6Ok1lc3NhZ2VOYW1lPiA6IHB1YmxpYyBz
dGQ6OnRydWVfdHlwZSB7IH07Cit0ZW1wbGF0ZTx0eXBlbmFtZSBFLCB0eXBlbmFtZSBULCB0eXBl
bmFtZSA9IHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19zYW1lPEUsIElQQzo6TWVzc2FnZU5hbWU+
Ojp2YWx1ZT4+Citib29sIGlzVmFsaWRFbnVtKFQgbWVzc2FnZU5hbWUpCit7CisgICAgc3RhdGlj
X2Fzc2VydChzaXplb2YoVCkgPT0gc2l6ZW9mKElQQzo6TWVzc2FnZU5hbWUpLCAiaXNWYWxpZEVu
dW08TWVzc2FnZU5hbWU+IHNob3VsZCBvbmx5IGJlIGNhbGxlZCB3aXRoIDE2LWJpdCB0eXBlcyIp
OworICAgIHJldHVybiBJUEM6OmlzVmFsaWRNZXNzYWdlTmFtZShzdGF0aWNfY2FzdDxJUEM6Ok1l
c3NhZ2VOYW1lPihtZXNzYWdlTmFtZSkpOworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCkluZGV4
OiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvZ2VuZXJhdGUtbWVzc2FnZS1yZWNlaXZlci5weQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvZ2VuZXJhdGUtbWVzc2FnZS1yZWNlaXZl
ci5weQkocmV2aXNpb24gMjYxMDMzKQorKysgU291cmNlL1dlYktpdC9TY3JpcHRzL2dlbmVyYXRl
LW1lc3NhZ2UtcmVjZWl2ZXIucHkJKHdvcmtpbmcgY29weSkKQEAgLTIzLDMzICsyMyw0OCBAQAog
IyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogCiBmcm9tIF9fZnV0dXJlX18gaW1wb3J0IHdpdGhfc3RhdGVtZW50Ci1p
bXBvcnQgYXJncGFyc2UKIGltcG9ydCBzeXMKIAogaW1wb3J0IHdlYmtpdC5tZXNzYWdlcwogaW1w
b3J0IHdlYmtpdC5wYXJzZXIKIAogCi1kZWYgbWFpbihhcmd2PU5vbmUpOgotICAgIHBhcnNlciA9
IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKCkKLSAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCdzb3Vy
Y2UnKQotICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0taW1wbGVtZW50YXRpb24nLCByZXF1aXJl
ZD1UcnVlKQotICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0taGVhZGVyJywgcmVxdWlyZWQ9VHJ1
ZSkKLSAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLXJlcGx5LWhlYWRlcicsIHJlcXVpcmVkPVRy
dWUpCi0KLSAgICBhcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQotCi0gICAgd2l0aCBvcGVuKGFy
Z3Muc291cmNlKSBhcyBzb3VyY2VfZmlsZToKLSAgICAgICAgcmVjZWl2ZXIgPSB3ZWJraXQucGFy
c2VyLnBhcnNlKHNvdXJjZV9maWxlKQorZGVmIG1haW4oYXJndik6CisgICAgcmVjZWl2ZXJzID0g
W10KIAotICAgIHdpdGggb3BlbihhcmdzLmltcGxlbWVudGF0aW9uLCAidysiKSBhcyBpbXBsZW1l
bnRhdGlvbl9vdXRwdXQ6Ci0gICAgICAgIGltcGxlbWVudGF0aW9uX291dHB1dC53cml0ZSh3ZWJr
aXQubWVzc2FnZXMuZ2VuZXJhdGVfbWVzc2FnZV9oYW5kbGVyKHJlY2VpdmVyKSkKKyAgICBmaXJz
dF9hcmcgPSBUcnVlCisgICAgc2Vjb25kX2FyZyA9IEZhbHNlCisgICAgZm9yIHBhcmFtZXRlciBp
biBhcmd2OgorICAgICAgICBpZiBmaXJzdF9hcmc6CisgICAgICAgICAgICBmaXJzdF9hcmcgPSBG
YWxzZQorICAgICAgICAgICAgc2Vjb25kX2FyZyA9IFRydWUKKyAgICAgICAgICAgIGNvbnRpbnVl
CisgICAgICAgIGlmIHNlY29uZF9hcmc6CisgICAgICAgICAgICBiYXNlX2RpciA9IHBhcmFtZXRl
cgorICAgICAgICAgICAgc2Vjb25kX2FyZyA9IEZhbHNlCisgICAgICAgICAgICBjb250aW51ZQor
CisgICAgICAgIHJlY2VpdmVyX25hbWUgPSBwYXJhbWV0ZXIucnNwbGl0KCcvJywgMSkucG9wKCkK
KyAgICAgICAgcHJpbnQgJ0dlbmVyYXRpbmcgbWVzc2FnZSByZWNlaXZlciBmb3IgJXMnICUgcmVj
ZWl2ZXJfbmFtZQorCisgICAgICAgIHdpdGggb3BlbignJXMvJXMubWVzc2FnZXMuaW4nICUgKGJh
c2VfZGlyLCBwYXJhbWV0ZXIpKSBhcyBzb3VyY2VfZmlsZToKKyAgICAgICAgICAgIHJlY2VpdmVy
ID0gd2Via2l0LnBhcnNlci5wYXJzZShzb3VyY2VfZmlsZSkKKyAgICAgICAgcmVjZWl2ZXJzLmFw
cGVuZChyZWNlaXZlcikKKworICAgICAgICB3aXRoIG9wZW4oJyVzTWVzc2FnZVJlY2VpdmVyLmNw
cCcgJSByZWNlaXZlcl9uYW1lLCAidysiKSBhcyBpbXBsZW1lbnRhdGlvbl9vdXRwdXQ6CisgICAg
ICAgICAgICBpbXBsZW1lbnRhdGlvbl9vdXRwdXQud3JpdGUod2Via2l0Lm1lc3NhZ2VzLmdlbmVy
YXRlX21lc3NhZ2VfaGFuZGxlcihyZWNlaXZlcikpCisKKyAgICAgICAgd2l0aCBvcGVuKCclc01l
c3NhZ2VzLmgnICUgcmVjZWl2ZXJfbmFtZSwgIncrIikgYXMgaGVhZGVyX291dHB1dDoKKyAgICAg
ICAgICAgIGhlYWRlcl9vdXRwdXQud3JpdGUod2Via2l0Lm1lc3NhZ2VzLmdlbmVyYXRlX21lc3Nh
Z2VzX2hlYWRlcihyZWNlaXZlcikpCiAKLSAgICB3aXRoIG9wZW4oYXJncy5oZWFkZXIsICJ3KyIp
IGFzIGhlYWRlcl9vdXRwdXQ6Ci0gICAgICAgIGhlYWRlcl9vdXRwdXQud3JpdGUod2Via2l0Lm1l
c3NhZ2VzLmdlbmVyYXRlX21lc3NhZ2VzX2hlYWRlcihyZWNlaXZlcikpCisgICAgICAgIHdpdGgg
b3BlbignJXNNZXNzYWdlc1JlcGxpZXMuaCcgJSByZWNlaXZlcl9uYW1lLCAidysiKSBhcyByZXBs
eV9oZWFkZXJfb3V0cHV0OgorICAgICAgICAgICAgcmVwbHlfaGVhZGVyX291dHB1dC53cml0ZSh3
ZWJraXQubWVzc2FnZXMuZ2VuZXJhdGVfbWVzc2FnZXNfcmVwbHlfaGVhZGVyKHJlY2VpdmVyKSkK
IAotICAgIHdpdGggb3BlbihhcmdzLnJlcGx5X2hlYWRlciwgIncrIikgYXMgcmVwbHlfaGVhZGVy
X291dHB1dDoKLSAgICAgICAgcmVwbHlfaGVhZGVyX291dHB1dC53cml0ZSh3ZWJraXQubWVzc2Fn
ZXMuZ2VuZXJhdGVfbWVzc2FnZXNfcmVwbHlfaGVhZGVyKHJlY2VpdmVyKSkKKyAgICB3aXRoIG9w
ZW4oJ01lc3NhZ2VOYW1lcy5oJywgIncrIikgYXMgbWVzc2FnZV9uYW1lc19oZWFkZXJfb3V0cHV0
OgorICAgICAgICBtZXNzYWdlX25hbWVzX2hlYWRlcl9vdXRwdXQud3JpdGUod2Via2l0Lm1lc3Nh
Z2VzLmdlbmVyYXRlX21lc3NhZ2VfbmFtZXNfaGVhZGVyKHJlY2VpdmVycykpCisKKyAgICB3aXRo
IG9wZW4oJ01lc3NhZ2VOYW1lcy5jcHAnLCAidysiKSBhcyBtZXNzYWdlX25hbWVzX2ltcGxlbWVu
dGF0aW9uX291dHB1dDoKKyAgICAgICAgbWVzc2FnZV9uYW1lc19pbXBsZW1lbnRhdGlvbl9vdXRw
dXQud3JpdGUod2Via2l0Lm1lc3NhZ2VzLmdlbmVyYXRlX21lc3NhZ2VfbmFtZXNfaW1wbGVtZW50
YXRpb24ocmVjZWl2ZXJzKSkKIAogICAgIHJldHVybiAwCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
U2NyaXB0cy90ZXN0LWxlZ2FjeU1lc3NhZ2VSZWNlaXZlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9TY3JpcHRzL3Rlc3QtbGVnYWN5TWVzc2FnZVJlY2VpdmVyLmNwcAkobm9uZXhp
c3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvdGVzdC1sZWdhY3lNZXNzYWdlUmVjZWl2
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjAzIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEwLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisg
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorICogQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAor
ICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisgKiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLAorICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgKEVOQUJMRShXRUJLSVQyKSAmJiAoTkVTVEVE
X01BU1RFUl9DT05ESVRJT04gfHwgTUFTVEVSX09SICYmIE1BU1RFUl9BTkQpKQorCisjaW5jbHVk
ZSAiV2ViUGFnZS5oIgorCisjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJD
b25uZWN0aW9uLmgiCisjaW5jbHVkZSAiRGVjb2Rlci5oIgorI2lmIEVOQUJMRShERVBSRUNBVEVE
X0ZFQVRVUkUpIHx8IEVOQUJMRShFWFBFUklNRU5UQUxfRkVBVFVSRSkKKyNpbmNsdWRlICJEdW1t
eVR5cGUuaCIKKyNlbmRpZgorI2luY2x1ZGUgIkhhbmRsZU1lc3NhZ2UuaCIKKyNpZiBQTEFURk9S
TShNQUMpCisjaW5jbHVkZSAiTWFjaFBvcnQuaCIKKyNlbmRpZgorI2luY2x1ZGUgIlBsdWdpbi5o
IgorI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgorI2lmIChFTkFCTEUoVE9VQ0hf
RVZFTlRTKSAmJiAoTkVTVEVEX01FU1NBR0VfQ09ORElUSU9OICYmIFNPTUVfT1RIRVJfTUVTU0FH
RV9DT05ESVRJT04pKSB8fCAoRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgKE5FU1RFRF9NRVNTQUdF
X0NPTkRJVElPTiB8fCBTT01FX09USEVSX01FU1NBR0VfQ09ORElUSU9OKSkKKyNpbmNsdWRlICJX
ZWJFdmVudC5oIgorI2VuZGlmCisjaW5jbHVkZSAiV2ViUGFnZU1lc3NhZ2VzLmgiCisjaW5jbHVk
ZSAiV2ViUHJlZmVyZW5jZXNTdG9yZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NMYXll
ci5oPgorI2lmIFBMQVRGT1JNKE1BQykKKyNpbmNsdWRlIDxXZWJDb3JlL0tleWJvYXJkRXZlbnQu
aD4KKyNlbmRpZgorI2luY2x1ZGUgPFdlYkNvcmUvUGx1Z2luRGF0YS5oPgorI2luY2x1ZGUgPHV0
aWxpdHk+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBNZXNzYWdlcyB7
CisKK25hbWVzcGFjZSBXZWJQYWdlIHsKKwordm9pZCBHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlv
bjo6c2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYmIGVuY29kZXIsIElQQzo6Q29u
bmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgSVBDOjpDb25uZWN0aW9uOjpIYW5kbGUmIGNvbm5l
Y3Rpb25IYW5kbGUpCit7CisgICAgKmVuY29kZXIgPDwgY29ubmVjdGlvbkhhbmRsZTsKKyAgICBj
b25uZWN0aW9uLnNlbmRTeW5jUmVwbHkoV1RGTW92ZShlbmNvZGVyKSk7Cit9CisKK3ZvaWQgVGVz
dE11bHRpcGxlQXR0cmlidXRlczo6c2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYm
IGVuY29kZXIsIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKK3sKKyAgICBjb25uZWN0aW9u
LnNlbmRTeW5jUmVwbHkoV1RGTW92ZShlbmNvZGVyKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YlBhZ2UKKworfSAvLyBuYW1lc3BhY2UgTWVzc2FnZXMKKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K3ZvaWQgV2ViUGFnZTo6ZGlkUmVjZWl2ZVdlYlBhZ2VNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYg
Y29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIGF1dG8gcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpOworICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0g
TWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRVUkw6Om5hbWUoKSkgeworICAgICAgICBJUEM6OmhhbmRs
ZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRVUkw+KGRlY29kZXIsIHRoaXMsICZXZWJQ
YWdlOjpsb2FkVVJMKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNpZiBFTkFCTEUoVE9VQ0hf
RVZFTlRTKQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBh
Z2U6OkxvYWRTb21ldGhpbmc6Om5hbWUoKSkgeworICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8
TWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRTb21ldGhpbmc+KGRlY29kZXIsIHRoaXMsICZXZWJQYWdl
Ojpsb2FkU29tZXRoaW5nKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorI2lmIChF
TkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiAoTkVTVEVEX01FU1NBR0VfQ09ORElUSU9OIHx8IFNPTUVf
T1RIRVJfTUVTU0FHRV9DT05ESVRJT04pKQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkg
PT0gTWVzc2FnZXM6OldlYlBhZ2U6OlRvdWNoRXZlbnQ6Om5hbWUoKSkgeworICAgICAgICBJUEM6
OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OlRvdWNoRXZlbnQ+KGRlY29kZXIsIHRo
aXMsICZXZWJQYWdlOjp0b3VjaEV2ZW50KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRp
ZgorI2lmIChFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiAoTkVTVEVEX01FU1NBR0VfQ09ORElUSU9O
ICYmIFNPTUVfT1RIRVJfTUVTU0FHRV9DT05ESVRJT04pKQorICAgIGlmIChkZWNvZGVyLm1lc3Nh
Z2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OkFkZEV2ZW50OjpuYW1lKCkpIHsKKyAgICAg
ICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpBZGRFdmVudD4oZGVjb2Rl
ciwgdGhpcywgJldlYlBhZ2U6OmFkZEV2ZW50KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNl
bmRpZgorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5h
bWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFNvbWV0aGluZ0Vsc2U6Om5hbWUoKSkgewor
ICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRTb21ldGhp
bmdFbHNlPihkZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6bG9hZFNvbWV0aGluZ0Vsc2UpOworICAg
ICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUo
KSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uOjpuYW1lKCkp
IHsKKyAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZWNl
aXZlUG9saWN5RGVjaXNpb24+KGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjpkaWRSZWNlaXZlUG9s
aWN5RGVjaXNpb24pOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChkZWNvZGVyLm1l
c3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OkNsb3NlOjpuYW1lKCkpIHsKKyAgICAg
ICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpDbG9zZT4oZGVjb2Rlciwg
dGhpcywgJldlYlBhZ2U6OmNsb3NlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAo
ZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpQcmVmZXJlbmNlc0Rp
ZENoYW5nZTo6bmFtZSgpKSB7CisgICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6
V2ViUGFnZTo6UHJlZmVyZW5jZXNEaWRDaGFuZ2U+KGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjpw
cmVmZXJlbmNlc0RpZENoYW5nZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKGRl
Y29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6U2VuZERvdWJsZUFuZEZs
b2F0OjpuYW1lKCkpIHsKKyAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQ
YWdlOjpTZW5kRG91YmxlQW5kRmxvYXQ+KGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjpzZW5kRG91
YmxlQW5kRmxvYXQpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChkZWNvZGVyLm1l
c3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OlNlbmRJbnRzOjpuYW1lKCkpIHsKKyAg
ICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpTZW5kSW50cz4oZGVj
b2RlciwgdGhpcywgJldlYlBhZ2U6OnNlbmRJbnRzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0
UGFyYW1ldGVyQXR0cmlidXRlczo6bmFtZSgpKSB7CisgICAgICAgIElQQzo6aGFuZGxlTWVzc2Fn
ZTxNZXNzYWdlczo6V2ViUGFnZTo6VGVzdFBhcmFtZXRlckF0dHJpYnV0ZXM+KGRlY29kZXIsIHRo
aXMsICZXZWJQYWdlOjp0ZXN0UGFyYW1ldGVyQXR0cmlidXRlcyk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFn
ZTo6VGVtcGxhdGVUZXN0OjpuYW1lKCkpIHsKKyAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1l
c3NhZ2VzOjpXZWJQYWdlOjpUZW1wbGF0ZVRlc3Q+KGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjp0
ZW1wbGF0ZVRlc3QpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChkZWNvZGVyLm1l
c3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OlNldFZpZGVvTGF5ZXJJRDo6bmFtZSgp
KSB7CisgICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6U2V0Vmlk
ZW9MYXllcklEPihkZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6c2V0VmlkZW9MYXllcklEKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyNpZiBQTEFURk9STShNQUMpCisgICAgaWYgKGRlY29kZXIu
bWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6RGlkQ3JlYXRlV2ViUHJvY2Vzc0Nv
bm5lY3Rpb246Om5hbWUoKSkgeworICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6
OldlYlBhZ2U6OkRpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uPihkZWNvZGVyLCB0aGlzLCAm
V2ViUGFnZTo6ZGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24pOworICAgICAgICByZXR1cm47
CisgICAgfQorI2VuZGlmCisjaWYgRU5BQkxFKERFUFJFQ0FURURfRkVBVFVSRSkKKyAgICBpZiAo
ZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpEZXByZWNhdGVkT3Bl
cmF0aW9uOjpuYW1lKCkpIHsKKyAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpX
ZWJQYWdlOjpEZXByZWNhdGVkT3BlcmF0aW9uPihkZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6ZGVw
cmVjYXRlZE9wZXJhdGlvbik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKyNpZiBF
TkFCTEUoRVhQRVJJTUVOVEFMX0ZFQVRVUkUpCisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUo
KSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6RXhwZXJpbWVudGFsT3BlcmF0aW9uOjpuYW1lKCkpIHsK
KyAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpFeHBlcmltZW50
YWxPcGVyYXRpb24+KGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjpleHBlcmltZW50YWxPcGVyYXRp
b24pOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisgICAgVU5VU0VEX1BBUkFNKGNv
bm5lY3Rpb24pOworICAgIFVOVVNFRF9QQVJBTShkZWNvZGVyKTsKKyAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKK30KKwordm9pZCBXZWJQYWdlOjpkaWRSZWNlaXZlU3luY1dlYlBhZ2VNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBzdGQ6
OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYgcmVwbHlFbmNvZGVyKQoreworICAgIGF1dG8gcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpOworICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1l
KCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OkNyZWF0ZVBsdWdpbjo6bmFtZSgpKSB7CisgICAgICAg
IElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6Q3JlYXRlUGx1Z2luPihkZWNv
ZGVyLCAqcmVwbHlFbmNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6Y3JlYXRlUGx1Z2luKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3Nh
Z2VzOjpXZWJQYWdlOjpSdW5KYXZhU2NyaXB0QWxlcnQ6Om5hbWUoKSkgeworICAgICAgICBJUEM6
OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OlJ1bkphdmFTY3JpcHRBbGVydD4oZGVj
b2RlciwgKnJlcGx5RW5jb2RlciwgdGhpcywgJldlYlBhZ2U6OnJ1bkphdmFTY3JpcHRBbGVydCk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9
PSBNZXNzYWdlczo6V2ViUGFnZTo6R2V0UGx1Z2luczo6bmFtZSgpKSB7CisgICAgICAgIElQQzo6
aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6R2V0UGx1Z2lucz4oZGVjb2RlciwgKnJl
cGx5RW5jb2RlciwgdGhpcywgJldlYlBhZ2U6OmdldFBsdWdpbnMpOworICAgICAgICByZXR1cm47
CisgICAgfQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBh
Z2U6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpuYW1lKCkpIHsKKyAgICAgICAgSVBDOjpo
YW5kbGVNZXNzYWdlU3luY2hyb25vdXM8TWVzc2FnZXM6OldlYlBhZ2U6OkdldFBsdWdpblByb2Nl
c3NDb25uZWN0aW9uPihjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIsIHRoaXMsICZX
ZWJQYWdlOjpnZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbik7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6
VGVzdE11bHRpcGxlQXR0cmlidXRlczo6bmFtZSgpKSB7CisgICAgICAgIElQQzo6aGFuZGxlTWVz
c2FnZVN5bmNocm9ub3VzV2FudHNDb25uZWN0aW9uPE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0TXVs
dGlwbGVBdHRyaWJ1dGVzPihjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIsIHRoaXMs
ICZXZWJQYWdlOjp0ZXN0TXVsdGlwbGVBdHRyaWJ1dGVzKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKyNpZiBQTEFURk9STShNQUMpCisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBN
ZXNzYWdlczo6V2ViUGFnZTo6SW50ZXJwcmV0S2V5RXZlbnQ6Om5hbWUoKSkgeworICAgICAgICBJ
UEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OkludGVycHJldEtleUV2ZW50Pihk
ZWNvZGVyLCAqcmVwbHlFbmNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6aW50ZXJwcmV0S2V5RXZlbnQp
OworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisgICAgVU5VU0VEX1BBUkFNKGNvbm5l
Y3Rpb24pOworICAgIFVOVVNFRF9QQVJBTShkZWNvZGVyKTsKKyAgICBVTlVTRURfUEFSQU0ocmVw
bHlFbmNvZGVyKTsKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CisKKworI2VuZGlmIC8vIChFTkFCTEUoV0VCS0lUMikgJiYgKE5FU1RFRF9NQVNU
RVJfQ09ORElUSU9OIHx8IE1BU1RFUl9PUiAmJiBNQVNURVJfQU5EKSkKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvU2NyaXB0cy90ZXN0LWxlZ2FjeU1lc3NhZ2VzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9TY3JpcHRzL3Rlc3QtbGVnYWN5TWVzc2FnZXMuaAkobm9uZXhpc3RlbnQpCisrKyBT
b3VyY2UvV2ViS2l0L1NjcmlwdHMvdGVzdC1sZWdhY3lNZXNzYWdlcy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsNTQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUgorICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IK
KyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSCisgKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorICogT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
ZiAoRU5BQkxFKFdFQktJVDIpICYmIChORVNURURfTUFTVEVSX0NPTkRJVElPTiB8fCBNQVNURVJf
T1IgJiYgTUFTVEVSX0FORCkpCisKKyNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgorI2luY2x1
ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJNZXNzYWdlTmFtZXMuaCIKKyNpbmNsdWRlICJQ
bHVnaW4uaCIKKyNpbmNsdWRlICJXZWJQYWdlTWVzc2FnZXNSZXBsaWVzLmgiCisjaW5jbHVkZSA8
V2ViQ29yZS9HcmFwaGljc0xheWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9LZXlib2FyZEV2ZW50
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QbHVnaW5EYXRhLmg+CisjaW5jbHVkZSA8dXRpbGl0eT4K
KyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5j
bHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgSVBDIHsKK2Ns
YXNzIER1bW15VHlwZTsKK2NsYXNzIE1hY2hQb3J0OworfQorCituYW1lc3BhY2UgV2ViS2l0IHsK
K2NsYXNzIFdlYlByZWZlcmVuY2VzU3RvcmU7CitjbGFzcyBXZWJUb3VjaEV2ZW50OworfQorCitu
YW1lc3BhY2UgTWVzc2FnZXMgeworbmFtZXNwYWNlIFdlYlBhZ2UgeworCitzdGF0aWMgaW5saW5l
IElQQzo6UmVjZWl2ZXJOYW1lIG1lc3NhZ2VSZWNlaXZlck5hbWUoKQoreworICAgIHJldHVybiBJ
UEM6OlJlY2VpdmVyTmFtZTo6V2ViUGFnZTsKK30KKworY2xhc3MgTG9hZFVSTCB7CitwdWJsaWM6
CisgICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGNvbnN0IFN0cmluZyY+IEFyZ3VtZW50czsKKworICAg
IHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1l
OjpXZWJQYWdlX0xvYWRVUkw7IH0KKyAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxz
ZTsKKworICAgIGV4cGxpY2l0IExvYWRVUkwoY29uc3QgU3RyaW5nJiB1cmwpCisgICAgICAgIDog
bV9hcmd1bWVudHModXJsKQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdCBBcmd1bWVudHMmIGFy
Z3VtZW50cygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7CisgICAg
fQorCitwcml2YXRlOgorICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKK307CisKKyNpZiBFTkFC
TEUoVE9VQ0hfRVZFTlRTKQorY2xhc3MgTG9hZFNvbWV0aGluZyB7CitwdWJsaWM6CisgICAgdHlw
ZWRlZiBzdGQ6OnR1cGxlPGNvbnN0IFN0cmluZyY+IEFyZ3VtZW50czsKKworICAgIHN0YXRpYyBJ
UEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdl
X0xvYWRTb21ldGhpbmc7IH0KKyAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsK
KworICAgIGV4cGxpY2l0IExvYWRTb21ldGhpbmcoY29uc3QgU3RyaW5nJiB1cmwpCisgICAgICAg
IDogbV9hcmd1bWVudHModXJsKQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdCBBcmd1bWVudHMm
IGFyZ3VtZW50cygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7Cisg
ICAgfQorCitwcml2YXRlOgorICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKK307CisjZW5kaWYK
KworI2lmIChFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiAoTkVTVEVEX01FU1NBR0VfQ09ORElUSU9O
IHx8IFNPTUVfT1RIRVJfTUVTU0FHRV9DT05ESVRJT04pKQorY2xhc3MgVG91Y2hFdmVudCB7Citw
dWJsaWM6CisgICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGNvbnN0IFdlYktpdDo6V2ViVG91Y2hFdmVu
dCY+IEFyZ3VtZW50czsKKworICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJl
dHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX1RvdWNoRXZlbnQ7IH0KKyAgICBzdGF0aWMg
Y29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKKworICAgIGV4cGxpY2l0IFRvdWNoRXZlbnQoY29u
c3QgV2ViS2l0OjpXZWJUb3VjaEV2ZW50JiBldmVudCkKKyAgICAgICAgOiBtX2FyZ3VtZW50cyhl
dmVudCkKKyAgICB7CisgICAgfQorCisgICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBj
b25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOworICAgIH0KKworcHJpdmF0
ZToKKyAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Cit9OworI2VuZGlmCisKKyNpZiAoRU5BQkxF
KFRPVUNIX0VWRU5UUykgJiYgKE5FU1RFRF9NRVNTQUdFX0NPTkRJVElPTiAmJiBTT01FX09USEVS
X01FU1NBR0VfQ09ORElUSU9OKSkKK2NsYXNzIEFkZEV2ZW50IHsKK3B1YmxpYzoKKyAgICB0eXBl
ZGVmIHN0ZDo6dHVwbGU8Y29uc3QgV2ViS2l0OjpXZWJUb3VjaEV2ZW50Jj4gQXJndW1lbnRzOwor
CisgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2Fn
ZU5hbWU6OldlYlBhZ2VfQWRkRXZlbnQ7IH0KKyAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMg
PSBmYWxzZTsKKworICAgIGV4cGxpY2l0IEFkZEV2ZW50KGNvbnN0IFdlYktpdDo6V2ViVG91Y2hF
dmVudCYgZXZlbnQpCisgICAgICAgIDogbV9hcmd1bWVudHMoZXZlbnQpCisgICAgeworICAgIH0K
KworICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKKyAgICB7CisgICAgICAg
IHJldHVybiBtX2FyZ3VtZW50czsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQXJndW1lbnRzIG1f
YXJndW1lbnRzOworfTsKKyNlbmRpZgorCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKK2NsYXNz
IExvYWRTb21ldGhpbmdFbHNlIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8Y29u
c3QgU3RyaW5nJj4gQXJndW1lbnRzOworCisgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFt
ZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfTG9hZFNvbWV0aGluZ0Vsc2U7
IH0KKyAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKKworICAgIGV4cGxpY2l0
IExvYWRTb21ldGhpbmdFbHNlKGNvbnN0IFN0cmluZyYgdXJsKQorICAgICAgICA6IG1fYXJndW1l
bnRzKHVybCkKKyAgICB7CisgICAgfQorCisgICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMo
KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOworICAgIH0KKworcHJp
dmF0ZToKKyAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Cit9OworI2VuZGlmCisKK2NsYXNzIERp
ZFJlY2VpdmVQb2xpY3lEZWNpc2lvbiB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBzdGQ6OnR1cGxl
PHVpbnQ2NF90LCB1aW50NjRfdCwgdWludDMyX3Q+IEFyZ3VtZW50czsKKworICAgIHN0YXRpYyBJ
UEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdl
X0RpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbjsgfQorICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3lu
YyA9IGZhbHNlOworCisgICAgRGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKHVpbnQ2NF90IGZyYW1l
SUQsIHVpbnQ2NF90IGxpc3RlbmVySUQsIHVpbnQzMl90IHBvbGljeUFjdGlvbikKKyAgICAgICAg
OiBtX2FyZ3VtZW50cyhmcmFtZUlELCBsaXN0ZW5lcklELCBwb2xpY3lBY3Rpb24pCisgICAgewor
ICAgIH0KKworICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKKyAgICB7Cisg
ICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQXJndW1l
bnRzIG1fYXJndW1lbnRzOworfTsKKworY2xhc3MgQ2xvc2UgeworcHVibGljOgorICAgIHR5cGVk
ZWYgc3RkOjp0dXBsZTw+IEFyZ3VtZW50czsKKworICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1l
IG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX0Nsb3NlOyB9CisgICAg
c3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7CisKKyAgICBjb25zdCBBcmd1bWVudHMm
IGFyZ3VtZW50cygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7Cisg
ICAgfQorCitwcml2YXRlOgorICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKK307CisKK2NsYXNz
IFByZWZlcmVuY2VzRGlkQ2hhbmdlIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8
Y29uc3QgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlJj4gQXJndW1lbnRzOworCisgICAgc3Rh
dGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6Oldl
YlBhZ2VfUHJlZmVyZW5jZXNEaWRDaGFuZ2U7IH0KKyAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5
bmMgPSBmYWxzZTsKKworICAgIGV4cGxpY2l0IFByZWZlcmVuY2VzRGlkQ2hhbmdlKGNvbnN0IFdl
YktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUpCisgICAgICAgIDogbV9hcmd1bWVudHMo
c3RvcmUpCisgICAgeworICAgIH0KKworICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkg
Y29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKKyAgICB9CisKK3ByaXZh
dGU6CisgICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOworfTsKKworY2xhc3MgU2VuZERvdWJsZUFu
ZEZsb2F0IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8ZG91YmxlLCBmbG9hdD4g
QXJndW1lbnRzOworCisgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJu
IElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfU2VuZERvdWJsZUFuZEZsb2F0OyB9CisgICAgc3Rh
dGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7CisKKyAgICBTZW5kRG91YmxlQW5kRmxvYXQo
ZG91YmxlIGQsIGZsb2F0IGYpCisgICAgICAgIDogbV9hcmd1bWVudHMoZCwgZikKKyAgICB7Cisg
ICAgfQorCisgICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAorICAgIHsKKyAg
ICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOworICAgIH0KKworcHJpdmF0ZToKKyAgICBBcmd1bWVu
dHMgbV9hcmd1bWVudHM7Cit9OworCitjbGFzcyBTZW5kSW50cyB7CitwdWJsaWM6CisgICAgdHlw
ZWRlZiBzdGQ6OnR1cGxlPGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mLCBjb25zdCBWZWN0b3I8VmVj
dG9yPHVpbnQ2NF90Pj4mPiBBcmd1bWVudHM7CisKKyAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFt
ZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9TZW5kSW50czsgfQor
ICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOworCisgICAgU2VuZEludHMoY29u
c3QgVmVjdG9yPHVpbnQ2NF90PiYgaW50cywgY29uc3QgVmVjdG9yPFZlY3Rvcjx1aW50NjRfdD4+
JiBpbnRWZWN0b3JzKQorICAgICAgICA6IG1fYXJndW1lbnRzKGludHMsIGludFZlY3RvcnMpCisg
ICAgeworICAgIH0KKworICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKKyAg
ICB7CisgICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKKyAgICB9CisKK3ByaXZhdGU6CisgICAg
QXJndW1lbnRzIG1fYXJndW1lbnRzOworfTsKKworY2xhc3MgQ3JlYXRlUGx1Z2luIHsKK3B1Ymxp
YzoKKyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8dWludDY0X3QsIGNvbnN0IFdlYktpdDo6UGx1Z2lu
OjpQYXJhbWV0ZXJzJj4gQXJndW1lbnRzOworCisgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUg
bmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfQ3JlYXRlUGx1Z2luOyB9
CisgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gdHJ1ZTsKKworICAgIHVzaW5nIFJlcGx5
ID0gc3RkOjp0dXBsZTxib29sJj47CisgICAgdXNpbmcgUmVwbHlBcmd1bWVudHMgPSBzdGQ6OnR1
cGxlPGJvb2w+OworICAgIENyZWF0ZVBsdWdpbih1aW50NjRfdCBwbHVnaW5JbnN0YW5jZUlELCBj
b25zdCBXZWJLaXQ6OlBsdWdpbjo6UGFyYW1ldGVycyYgcGFyYW1ldGVycykKKyAgICAgICAgOiBt
X2FyZ3VtZW50cyhwbHVnaW5JbnN0YW5jZUlELCBwYXJhbWV0ZXJzKQorICAgIHsKKyAgICB9CisK
KyAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0CisgICAgeworICAgICAgICBy
ZXR1cm4gbV9hcmd1bWVudHM7CisgICAgfQorCitwcml2YXRlOgorICAgIEFyZ3VtZW50cyBtX2Fy
Z3VtZW50czsKK307CisKK2NsYXNzIFJ1bkphdmFTY3JpcHRBbGVydCB7CitwdWJsaWM6CisgICAg
dHlwZWRlZiBzdGQ6OnR1cGxlPHVpbnQ2NF90LCBjb25zdCBTdHJpbmcmPiBBcmd1bWVudHM7CisK
KyAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdl
TmFtZTo6V2ViUGFnZV9SdW5KYXZhU2NyaXB0QWxlcnQ7IH0KKyAgICBzdGF0aWMgY29uc3QgYm9v
bCBpc1N5bmMgPSB0cnVlOworCisgICAgdXNpbmcgUmVwbHkgPSBzdGQ6OnR1cGxlPD47CisgICAg
dXNpbmcgUmVwbHlBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPD47CisgICAgUnVuSmF2YVNjcmlwdEFs
ZXJ0KHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKKyAgICAgICAgOiBt
X2FyZ3VtZW50cyhmcmFtZUlELCBtZXNzYWdlKQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdCBB
cmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9hcmd1
bWVudHM7CisgICAgfQorCitwcml2YXRlOgorICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKK307
CisKK2NsYXNzIEdldFBsdWdpbnMgeworcHVibGljOgorICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxi
b29sPiBBcmd1bWVudHM7CisKKyAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyBy
ZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9HZXRQbHVnaW5zOyB9CisgICAgc3RhdGlj
IGNvbnN0IGJvb2wgaXNTeW5jID0gdHJ1ZTsKKworICAgIHVzaW5nIFJlcGx5ID0gc3RkOjp0dXBs
ZTxWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4mPjsKKyAgICB1c2luZyBSZXBseUFyZ3VtZW50
cyA9IHN0ZDo6dHVwbGU8VmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+PjsKKyAgICBleHBsaWNp
dCBHZXRQbHVnaW5zKGJvb2wgcmVmcmVzaCkKKyAgICAgICAgOiBtX2FyZ3VtZW50cyhyZWZyZXNo
KQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0
CisgICAgeworICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7CisgICAgfQorCitwcml2YXRlOgor
ICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKK307CisKK2NsYXNzIEdldFBsdWdpblByb2Nlc3ND
b25uZWN0aW9uIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8Y29uc3QgU3RyaW5n
Jj4gQXJndW1lbnRzOworCisgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0
dXJuIElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfR2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb247
IH0KKyAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSB0cnVlOworCisgICAgdXNpbmcgRGVs
YXllZFJlcGx5ID0gR2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25EZWxheWVkUmVwbHk7CisgICAg
c3RhdGljIHZvaWQgc2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYmLCBJUEM6OkNv
bm5lY3Rpb24mLCBjb25zdCBJUEM6OkNvbm5lY3Rpb246OkhhbmRsZSYgY29ubmVjdGlvbkhhbmRs
ZSk7CisgICAgdXNpbmcgUmVwbHkgPSBzdGQ6OnR1cGxlPElQQzo6Q29ubmVjdGlvbjo6SGFuZGxl
Jj47CisgICAgdXNpbmcgUmVwbHlBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPElQQzo6Q29ubmVjdGlv
bjo6SGFuZGxlPjsKKyAgICBleHBsaWNpdCBHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbihjb25z
dCBTdHJpbmcmIHBsdWdpblBhdGgpCisgICAgICAgIDogbV9hcmd1bWVudHMocGx1Z2luUGF0aCkK
KyAgICB7CisgICAgfQorCisgICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAor
ICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOworICAgIH0KKworcHJpdmF0ZToKKyAg
ICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Cit9OworCitjbGFzcyBUZXN0TXVsdGlwbGVBdHRyaWJ1
dGVzIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8PiBBcmd1bWVudHM7CisKKyAg
ICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFt
ZTo6V2ViUGFnZV9UZXN0TXVsdGlwbGVBdHRyaWJ1dGVzOyB9CisgICAgc3RhdGljIGNvbnN0IGJv
b2wgaXNTeW5jID0gdHJ1ZTsKKworICAgIHVzaW5nIERlbGF5ZWRSZXBseSA9IFRlc3RNdWx0aXBs
ZUF0dHJpYnV0ZXNEZWxheWVkUmVwbHk7CisgICAgc3RhdGljIHZvaWQgc2VuZChzdGQ6OnVuaXF1
ZV9wdHI8SVBDOjpFbmNvZGVyPiYmLCBJUEM6OkNvbm5lY3Rpb24mKTsKKyAgICB1c2luZyBSZXBs
eSA9IHN0ZDo6dHVwbGU8PjsKKyAgICB1c2luZyBSZXBseUFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8
PjsKKyAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0CisgICAgeworICAgICAg
ICByZXR1cm4gbV9hcmd1bWVudHM7CisgICAgfQorCitwcml2YXRlOgorICAgIEFyZ3VtZW50cyBt
X2FyZ3VtZW50czsKK307CisKK2NsYXNzIFRlc3RQYXJhbWV0ZXJBdHRyaWJ1dGVzIHsKK3B1Ymxp
YzoKKyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8dWludDY0X3QsIGRvdWJsZSwgZG91YmxlPiBBcmd1
bWVudHM7CisKKyAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBD
OjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9UZXN0UGFyYW1ldGVyQXR0cmlidXRlczsgfQorICAgIHN0
YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOworCisgICAgVGVzdFBhcmFtZXRlckF0dHJp
YnV0ZXModWludDY0X3QgZm9vLCBkb3VibGUgYmFyLCBkb3VibGUgYmF6KQorICAgICAgICA6IG1f
YXJndW1lbnRzKGZvbywgYmFyLCBiYXopCisgICAgeworICAgIH0KKworICAgIGNvbnN0IEFyZ3Vt
ZW50cyYgYXJndW1lbnRzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2FyZ3VtZW50
czsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOworfTsKKwor
Y2xhc3MgVGVtcGxhdGVUZXN0IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8Y29u
c3QgSGFzaE1hcDxTdHJpbmcsIHN0ZDo6cGFpcjxTdHJpbmcsIHVpbnQ2NF90Pj4mPiBBcmd1bWVu
dHM7CisKKyAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpN
ZXNzYWdlTmFtZTo6V2ViUGFnZV9UZW1wbGF0ZVRlc3Q7IH0KKyAgICBzdGF0aWMgY29uc3QgYm9v
bCBpc1N5bmMgPSBmYWxzZTsKKworICAgIGV4cGxpY2l0IFRlbXBsYXRlVGVzdChjb25zdCBIYXNo
TWFwPFN0cmluZywgc3RkOjpwYWlyPFN0cmluZywgdWludDY0X3Q+PiYgYSkKKyAgICAgICAgOiBt
X2FyZ3VtZW50cyhhKQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3Vt
ZW50cygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7CisgICAgfQor
Citwcml2YXRlOgorICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKK307CisKK2NsYXNzIFNldFZp
ZGVvTGF5ZXJJRCB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGNvbnN0IFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRCY+IEFyZ3VtZW50czsKKworICAgIHN0
YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpX
ZWJQYWdlX1NldFZpZGVvTGF5ZXJJRDsgfQorICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9
IGZhbHNlOworCisgICAgZXhwbGljaXQgU2V0VmlkZW9MYXllcklEKGNvbnN0IFdlYkNvcmU6Okdy
YXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRCYgdmlkZW9MYXllcklEKQorICAgICAgICA6IG1f
YXJndW1lbnRzKHZpZGVvTGF5ZXJJRCkKKyAgICB7CisgICAgfQorCisgICAgY29uc3QgQXJndW1l
bnRzJiBhcmd1bWVudHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRz
OworICAgIH0KKworcHJpdmF0ZToKKyAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Cit9OworCisj
aWYgUExBVEZPUk0oTUFDKQorY2xhc3MgRGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24gewor
cHVibGljOgorICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBJUEM6Ok1hY2hQb3J0Jj4gQXJn
dW1lbnRzOworCisgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQ
Qzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfRGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb247IH0K
KyAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKKworICAgIGV4cGxpY2l0IERp
ZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKGNvbnN0IElQQzo6TWFjaFBvcnQmIGNvbm5lY3Rp
b25JZGVudGlmaWVyKQorICAgICAgICA6IG1fYXJndW1lbnRzKGNvbm5lY3Rpb25JZGVudGlmaWVy
KQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0
CisgICAgeworICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7CisgICAgfQorCitwcml2YXRlOgor
ICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKK307CisjZW5kaWYKKworI2lmIFBMQVRGT1JNKE1B
QykKK2NsYXNzIEludGVycHJldEtleUV2ZW50IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIHN0ZDo6
dHVwbGU8dWludDMyX3Q+IEFyZ3VtZW50czsKKworICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1l
IG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX0ludGVycHJldEtleUV2
ZW50OyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gdHJ1ZTsKKworICAgIHVzaW5n
IFJlcGx5ID0gc3RkOjp0dXBsZTxWZWN0b3I8V2ViQ29yZTo6S2V5cHJlc3NDb21tYW5kPiY+Owor
ICAgIHVzaW5nIFJlcGx5QXJndW1lbnRzID0gc3RkOjp0dXBsZTxWZWN0b3I8V2ViQ29yZTo6S2V5
cHJlc3NDb21tYW5kPj47CisgICAgZXhwbGljaXQgSW50ZXJwcmV0S2V5RXZlbnQodWludDMyX3Qg
dHlwZSkKKyAgICAgICAgOiBtX2FyZ3VtZW50cyh0eXBlKQorICAgIHsKKyAgICB9CisKKyAgICBj
b25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4g
bV9hcmd1bWVudHM7CisgICAgfQorCitwcml2YXRlOgorICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50
czsKK307CisjZW5kaWYKKworI2lmIEVOQUJMRShERVBSRUNBVEVEX0ZFQVRVUkUpCitjbGFzcyBE
ZXByZWNhdGVkT3BlcmF0aW9uIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8Y29u
c3QgSVBDOjpEdW1teVR5cGUmPiBBcmd1bWVudHM7CisKKyAgICBzdGF0aWMgSVBDOjpNZXNzYWdl
TmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9EZXByZWNhdGVk
T3BlcmF0aW9uOyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7CisKKyAg
ICBleHBsaWNpdCBEZXByZWNhdGVkT3BlcmF0aW9uKGNvbnN0IElQQzo6RHVtbXlUeXBlJiBkdW1t
eSkKKyAgICAgICAgOiBtX2FyZ3VtZW50cyhkdW1teSkKKyAgICB7CisgICAgfQorCisgICAgY29u
c3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1f
YXJndW1lbnRzOworICAgIH0KKworcHJpdmF0ZToKKyAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7
Cit9OworI2VuZGlmCisKKyNpZiBFTkFCTEUoRVhQRVJJTUVOVEFMX0ZFQVRVUkUpCitjbGFzcyBF
eHBlcmltZW50YWxPcGVyYXRpb24geworcHVibGljOgorICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxj
b25zdCBJUEM6OkR1bW15VHlwZSY+IEFyZ3VtZW50czsKKworICAgIHN0YXRpYyBJUEM6Ok1lc3Nh
Z2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX0V4cGVyaW1l
bnRhbE9wZXJhdGlvbjsgfQorICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOwor
CisgICAgZXhwbGljaXQgRXhwZXJpbWVudGFsT3BlcmF0aW9uKGNvbnN0IElQQzo6RHVtbXlUeXBl
JiBkdW1teSkKKyAgICAgICAgOiBtX2FyZ3VtZW50cyhkdW1teSkKKyAgICB7CisgICAgfQorCisg
ICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0
dXJuIG1fYXJndW1lbnRzOworICAgIH0KKworcHJpdmF0ZToKKyAgICBBcmd1bWVudHMgbV9hcmd1
bWVudHM7Cit9OworI2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIFdlYlBhZ2UKK30gLy8gbmFtZXNw
YWNlIE1lc3NhZ2VzCisKKyNlbmRpZiAvLyAoRU5BQkxFKFdFQktJVDIpICYmIChORVNURURfTUFT
VEVSX0NPTkRJVElPTiB8fCBNQVNURVJfT1IgJiYgTUFTVEVSX0FORCkpCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvdGVzdC1sZWdhY3lNZXNzYWdlc1JlcGxpZXMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvdGVzdC1sZWdhY3lNZXNzYWdlc1JlcGxpZXMuaAkobm9u
ZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvdGVzdC1sZWdhY3lNZXNzYWdlc1Jl
cGxpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEwLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisg
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorICogQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAor
ICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisgKiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLAorICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpZiAoRU5BQkxFKFdFQktJVDIpICYmIChORVNURURfTUFTVEVS
X0NPTkRJVElPTiB8fCBNQVNURVJfT1IgJiYgTUFTVEVSX0FORCkpCisKKyNpbmNsdWRlICJDb25u
ZWN0aW9uLmgiCisjaW5jbHVkZSAiTWVzc2FnZU5hbWVzLmgiCisjaW5jbHVkZSA8d3RmL0Zvcndh
cmQuaD4KKworCituYW1lc3BhY2UgTWVzc2FnZXMgeworbmFtZXNwYWNlIFdlYlBhZ2UgeworCit1
c2luZyBHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbkRlbGF5ZWRSZXBseSA9IENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoY29uc3QgSVBDOjpDb25uZWN0aW9uOjpIYW5kbGUmIGNvbm5lY3Rpb25IYW5k
bGUpPjsKKwordXNpbmcgVGVzdE11bHRpcGxlQXR0cmlidXRlc0RlbGF5ZWRSZXBseSA9IENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT47CisKK30gLy8gbmFtZXNwYWNlIFdlYlBhZ2UKK30gLy8gbmFt
ZXNwYWNlIE1lc3NhZ2VzCisKKyNlbmRpZiAvLyAoRU5BQkxFKFdFQktJVDIpICYmIChORVNURURf
TUFTVEVSX0NPTkRJVElPTiB8fCBNQVNURVJfT1IgJiYgTUFTVEVSX0FORCkpCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1NjcmlwdHMvdGVzdC1zdXBlcmNsYXNzTWVzc2FnZVJlY2VpdmVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvdGVzdC1zdXBlcmNsYXNzTWVzc2FnZVJl
Y2VpdmVyLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvdGVzdC1z
dXBlcmNsYXNzTWVzc2FnZVJlY2VpdmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE4
OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IKKyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUg
IldlYlBhZ2UuaCIKKworI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiRGVj
b2Rlci5oIgorI2luY2x1ZGUgIkhhbmRsZU1lc3NhZ2UuaCIKKyNpbmNsdWRlICJUZXN0Q2xhc3NO
YW1lLmgiCisjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKKyNpbmNsdWRlICJUZXN0VHdvU3RhdGVF
bnVtLmgiCisjZW5kaWYKKyNpbmNsdWRlICJXZWJQYWdlTWVzc2FnZXMuaCIKKyNpbmNsdWRlIDx3
dGYvT3B0aW9uYWwuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNw
YWNlIE1lc3NhZ2VzIHsKKworbmFtZXNwYWNlIFdlYlBhZ2UgeworCisjaWYgRU5BQkxFKFRFU1Rf
RkVBVFVSRSkKKwordm9pZCBUZXN0QXN5bmNNZXNzYWdlOjpjYWxsUmVwbHkoSVBDOjpEZWNvZGVy
JiBkZWNvZGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90JiYpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQoreworICAgIE9wdGlvbmFsPHVpbnQ2NF90PiByZXN1bHQ7CisgICAgZGVjb2Rl
ciA+PiByZXN1bHQ7CisgICAgaWYgKCFyZXN1bHQpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgICAgIGNhbmNlbFJlcGx5KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKCpy
ZXN1bHQpKTsKK30KKwordm9pZCBUZXN0QXN5bmNNZXNzYWdlOjpjYW5jZWxSZXBseShDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAg
IGNvbXBsZXRpb25IYW5kbGVyKElQQzo6QXN5bmNSZXBseUVycm9yPHVpbnQ2NF90Pjo6Y3JlYXRl
KCkpOworfQorCit2b2lkIFRlc3RBc3luY01lc3NhZ2U6OnNlbmQoc3RkOjp1bmlxdWVfcHRyPElQ
Qzo6RW5jb2Rlcj4mJiBlbmNvZGVyLCBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIHVpbnQ2
NF90IHJlc3VsdCkKK3sKKyAgICAqZW5jb2RlciA8PCByZXN1bHQ7CisgICAgY29ubmVjdGlvbi5z
ZW5kU3luY1JlcGx5KFdURk1vdmUoZW5jb2RlcikpOworfQorCisjZW5kaWYKKworI2lmIEVOQUJM
RShURVNUX0ZFQVRVUkUpCisKK3ZvaWQgVGVzdEFzeW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50czo6
Y2FsbFJlcGx5KElQQzo6RGVjb2RlciYgZGVjb2RlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Cit9CisK
K3ZvaWQgVGVzdEFzeW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50czo6Y2FuY2VsUmVwbHkoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGNvbXBsZXRp
b25IYW5kbGVyKCk7Cit9CisKK3ZvaWQgVGVzdEFzeW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50czo6
c2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYmIGVuY29kZXIsIElQQzo6Q29ubmVj
dGlvbiYgY29ubmVjdGlvbikKK3sKKyAgICBjb25uZWN0aW9uLnNlbmRTeW5jUmVwbHkoV1RGTW92
ZShlbmNvZGVyKSk7Cit9CisKKyNlbmRpZgorCisjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKKwor
dm9pZCBUZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1lbnRzOjpjYWxsUmVwbHkoSVBD
OjpEZWNvZGVyJiBkZWNvZGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wmJiwgdWludDY0
X3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgT3B0aW9uYWw8Ym9vbD4gZmxhZzsK
KyAgICBkZWNvZGVyID4+IGZsYWc7CisgICAgaWYgKCFmbGFnKSB7CisgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICBjYW5jZWxSZXBseShXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgT3B0aW9uYWw8dWludDY0X3Q+IHZh
bHVlOworICAgIGRlY29kZXIgPj4gdmFsdWU7CisgICAgaWYgKCF2YWx1ZSkgeworICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgY2FuY2VsUmVwbHkoV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGNvbXBsZXRpb25IYW5k
bGVyKFdURk1vdmUoKmZsYWcpLCBXVEZNb3ZlKCp2YWx1ZSkpOworfQorCit2b2lkIFRlc3RBc3lu
Y01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHM6OmNhbmNlbFJlcGx5KENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCYmLCB1aW50NjRfdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAg
ICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkFzeW5jUmVwbHlFcnJvcjxib29sPjo6Y3JlYXRlKCks
IElQQzo6QXN5bmNSZXBseUVycm9yPHVpbnQ2NF90Pjo6Y3JlYXRlKCkpOworfQorCit2b2lkIFRl
c3RBc3luY01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHM6OnNlbmQoc3RkOjp1bmlxdWVfcHRy
PElQQzo6RW5jb2Rlcj4mJiBlbmNvZGVyLCBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGJv
b2wgZmxhZywgdWludDY0X3QgdmFsdWUpCit7CisgICAgKmVuY29kZXIgPDwgZmxhZzsKKyAgICAq
ZW5jb2RlciA8PCB2YWx1ZTsKKyAgICBjb25uZWN0aW9uLnNlbmRTeW5jUmVwbHkoV1RGTW92ZShl
bmNvZGVyKSk7Cit9CisKKyNlbmRpZgorCit2b2lkIFRlc3RTeW5jTWVzc2FnZTo6c2VuZChzdGQ6
OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYmIGVuY29kZXIsIElQQzo6Q29ubmVjdGlvbiYgY29u
bmVjdGlvbiwgdWludDhfdCByZXBseSkKK3sKKyAgICAqZW5jb2RlciA8PCByZXBseTsKKyAgICBj
b25uZWN0aW9uLnNlbmRTeW5jUmVwbHkoV1RGTW92ZShlbmNvZGVyKSk7Cit9CisKK3ZvaWQgVGVz
dFN5bmNocm9ub3VzTWVzc2FnZTo6c2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYm
IGVuY29kZXIsIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgT3B0aW9uYWw8V2Vi
S2l0OjpUZXN0Q2xhc3NOYW1lPiYgb3B0aW9uYWxSZXBseSkKK3sKKyAgICAqZW5jb2RlciA8PCBv
cHRpb25hbFJlcGx5OworICAgIGNvbm5lY3Rpb24uc2VuZFN5bmNSZXBseShXVEZNb3ZlKGVuY29k
ZXIpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViUGFnZQorCit9IC8vIG5hbWVzcGFjZSBNZXNz
YWdlcworCituYW1lc3BhY2UgV2ViS2l0IHsKKwordm9pZCBXZWJQYWdlOjpkaWRSZWNlaXZlTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikK
K3sKKyAgICBhdXRvIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKTsKKyAgICBpZiAoZGVj
b2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkVVJMOjpuYW1lKCkp
IHsKKyAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkVVJM
PihkZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6bG9hZFVSTCk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFt
ZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0QXN5bmNNZXNzYWdlOjpuYW1lKCkpIHsKKyAg
ICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlQXN5bmM8TWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RBc3lu
Y01lc3NhZ2U+KGNvbm5lY3Rpb24sIGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjp0ZXN0QXN5bmNN
ZXNzYWdlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorI2lmIEVOQUJMRShURVNU
X0ZFQVRVUkUpCisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2Vi
UGFnZTo6VGVzdEFzeW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50czo6bmFtZSgpKSB7CisgICAgICAg
IElQQzo6aGFuZGxlTWVzc2FnZUFzeW5jPE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0QXN5bmNNZXNz
YWdlV2l0aE5vQXJndW1lbnRzPihjb25uZWN0aW9uLCBkZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6
dGVzdEFzeW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50cyk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisjZW5kaWYKKyNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQorICAgIGlmIChkZWNvZGVyLm1lc3Nh
Z2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RBc3luY01lc3NhZ2VXaXRoTXVsdGlw
bGVBcmd1bWVudHM6Om5hbWUoKSkgeworICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2VBc3luYzxN
ZXNzYWdlczo6V2ViUGFnZTo6VGVzdEFzeW5jTWVzc2FnZVdpdGhNdWx0aXBsZUFyZ3VtZW50cz4o
Y29ubmVjdGlvbiwgZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OnRlc3RBc3luY01lc3NhZ2VXaXRo
TXVsdGlwbGVBcmd1bWVudHMpOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisgICAg
V2ViUGFnZUJhc2U6OmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOworfQor
Cit2b2lkIFdlYlBhZ2U6OmRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNv
bm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2Rlciwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5j
b2Rlcj4mIHJlcGx5RW5jb2RlcikKK3sKKyAgICBhdXRvIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKTsKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQ
YWdlOjpUZXN0U3luY01lc3NhZ2U6Om5hbWUoKSkgeworICAgICAgICBJUEM6OmhhbmRsZU1lc3Nh
Z2VTeW5jaHJvbm91czxNZXNzYWdlczo6V2ViUGFnZTo6VGVzdFN5bmNNZXNzYWdlPihjb25uZWN0
aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIsIHRoaXMsICZXZWJQYWdlOjp0ZXN0U3luY01lc3Nh
Z2UpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1l
KCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RTeW5jaHJvbm91c01lc3NhZ2U6Om5hbWUoKSkg
eworICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2VTeW5jaHJvbm91czxNZXNzYWdlczo6V2ViUGFn
ZTo6VGVzdFN5bmNocm9ub3VzTWVzc2FnZT4oY29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNv
ZGVyLCB0aGlzLCAmV2ViUGFnZTo6dGVzdFN5bmNocm9ub3VzTWVzc2FnZSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisgICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pOworICAgIFVOVVNFRF9Q
QVJBTShkZWNvZGVyKTsKKyAgICBVTlVTRURfUEFSQU0ocmVwbHlFbmNvZGVyKTsKKyAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvU2NyaXB0cy90ZXN0LXN1cGVyY2xhc3NNZXNzYWdlcy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy90ZXN0LXN1cGVyY2xhc3NNZXNzYWdlcy5oCShub25l
eGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy90ZXN0LXN1cGVyY2xhc3NNZXNzYWdl
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjAxIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEwLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorICogQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICog
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisgKiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLAorICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgIkNv
bm5lY3Rpb24uaCIKKyNpbmNsdWRlICJNZXNzYWdlTmFtZXMuaCIKKyNpbmNsdWRlICJUZXN0Q2xh
c3NOYW1lLmgiCisjaW5jbHVkZSAiV2ViUGFnZU1lc3NhZ2VzUmVwbGllcy5oIgorI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisjaW5jbHVkZSA8d3Rm
L1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CisKK25hbWVzcGFjZSBXZWJLaXQgeworZW51bSBjbGFzcyBUZXN0VHdvU3RhdGVFbnVtIDogYm9v
bDsKK30KKworbmFtZXNwYWNlIE1lc3NhZ2VzIHsKK25hbWVzcGFjZSBXZWJQYWdlIHsKKworc3Rh
dGljIGlubGluZSBJUEM6OlJlY2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1lKCkKK3sKKyAg
ICByZXR1cm4gSVBDOjpSZWNlaXZlck5hbWU6OldlYlBhZ2U7Cit9CisKK2NsYXNzIExvYWRVUkwg
eworcHVibGljOgorICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBTdHJpbmcmPiBBcmd1bWVu
dHM7CisKKyAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpN
ZXNzYWdlTmFtZTo6V2ViUGFnZV9Mb2FkVVJMOyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNT
eW5jID0gZmFsc2U7CisKKyAgICBleHBsaWNpdCBMb2FkVVJMKGNvbnN0IFN0cmluZyYgdXJsKQor
ICAgICAgICA6IG1fYXJndW1lbnRzKHVybCkKKyAgICB7CisgICAgfQorCisgICAgY29uc3QgQXJn
dW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYXJndW1l
bnRzOworICAgIH0KKworcHJpdmF0ZToKKyAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Cit9Owor
CisjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKK2NsYXNzIFRlc3RBc3luY01lc3NhZ2UgeworcHVi
bGljOgorICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxXZWJLaXQ6OlRlc3RUd29TdGF0ZUVudW0+IEFy
Z3VtZW50czsKKworICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJ
UEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX1Rlc3RBc3luY01lc3NhZ2U7IH0KKyAgICBzdGF0aWMg
Y29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKKworICAgIHN0YXRpYyB2b2lkIGNhbGxSZXBseShJ
UEM6OkRlY29kZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90JiYpPiYmKTsKKyAg
ICBzdGF0aWMgdm9pZCBjYW5jZWxSZXBseShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90
JiYpPiYmKTsKKyAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBhc3luY01lc3NhZ2VSZXBseU5h
bWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX1Rlc3RBc3luY01lc3NhZ2VS
ZXBseTsgfQorICAgIHVzaW5nIEFzeW5jUmVwbHkgPSBUZXN0QXN5bmNNZXNzYWdlQXN5bmNSZXBs
eTsKKyAgICBzdGF0aWMgdm9pZCBzZW5kKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiYs
IElQQzo6Q29ubmVjdGlvbiYsIHVpbnQ2NF90IHJlc3VsdCk7CisgICAgdXNpbmcgUmVwbHkgPSBz
dGQ6OnR1cGxlPHVpbnQ2NF90Jj47CisgICAgdXNpbmcgUmVwbHlBcmd1bWVudHMgPSBzdGQ6OnR1
cGxlPHVpbnQ2NF90PjsKKyAgICBleHBsaWNpdCBUZXN0QXN5bmNNZXNzYWdlKFdlYktpdDo6VGVz
dFR3b1N0YXRlRW51bSB0d29TdGF0ZUVudW0pCisgICAgICAgIDogbV9hcmd1bWVudHModHdvU3Rh
dGVFbnVtKQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygp
IGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7CisgICAgfQorCitwcml2
YXRlOgorICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKK307CisjZW5kaWYKKworI2lmIEVOQUJM
RShURVNUX0ZFQVRVUkUpCitjbGFzcyBUZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJndW1lbnRzIHsK
K3B1YmxpYzoKKyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8PiBBcmd1bWVudHM7CisKKyAgICBzdGF0
aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6V2Vi
UGFnZV9UZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJndW1lbnRzOyB9CisgICAgc3RhdGljIGNvbnN0
IGJvb2wgaXNTeW5jID0gZmFsc2U7CisKKyAgICBzdGF0aWMgdm9pZCBjYWxsUmVwbHkoSVBDOjpE
ZWNvZGVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICBzdGF0aWMgdm9pZCBj
YW5jZWxSZXBseShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHN0YXRpYyBJUEM6
Ok1lc3NhZ2VOYW1lIGFzeW5jTWVzc2FnZVJlcGx5TmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2Fn
ZU5hbWU6OldlYlBhZ2VfVGVzdEFzeW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50c1JlcGx5OyB9Cisg
ICAgdXNpbmcgQXN5bmNSZXBseSA9IFRlc3RBc3luY01lc3NhZ2VXaXRoTm9Bcmd1bWVudHNBc3lu
Y1JlcGx5OworICAgIHN0YXRpYyB2b2lkIHNlbmQoc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rl
cj4mJiwgSVBDOjpDb25uZWN0aW9uJik7CisgICAgdXNpbmcgUmVwbHkgPSBzdGQ6OnR1cGxlPD47
CisgICAgdXNpbmcgUmVwbHlBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPD47CisgICAgY29uc3QgQXJn
dW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYXJndW1l
bnRzOworICAgIH0KKworcHJpdmF0ZToKKyAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Cit9Owor
I2VuZGlmCisKKyNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQorY2xhc3MgVGVzdEFzeW5jTWVzc2Fn
ZVdpdGhNdWx0aXBsZUFyZ3VtZW50cyB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBzdGQ6OnR1cGxl
PD4gQXJndW1lbnRzOworCisgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0
dXJuIElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVzdEFzeW5jTWVzc2FnZVdpdGhNdWx0aXBs
ZUFyZ3VtZW50czsgfQorICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOworCisg
ICAgc3RhdGljIHZvaWQgY2FsbFJlcGx5KElQQzo6RGVjb2RlciYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCYmLCB1aW50NjRfdCYmKT4mJik7CisgICAgc3RhdGljIHZvaWQgY2FuY2VsUmVw
bHkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sJiYsIHVpbnQ2NF90JiYpPiYmKTsKKyAgICBz
dGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBhc3luY01lc3NhZ2VSZXBseU5hbWUoKSB7IHJldHVybiBJ
UEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX1Rlc3RBc3luY01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1
bWVudHNSZXBseTsgfQorICAgIHVzaW5nIEFzeW5jUmVwbHkgPSBUZXN0QXN5bmNNZXNzYWdlV2l0
aE11bHRpcGxlQXJndW1lbnRzQXN5bmNSZXBseTsKKyAgICBzdGF0aWMgdm9pZCBzZW5kKHN0ZDo6
dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiYsIElQQzo6Q29ubmVjdGlvbiYsIGJvb2wgZmxhZywg
dWludDY0X3QgdmFsdWUpOworICAgIHVzaW5nIFJlcGx5ID0gc3RkOjp0dXBsZTxib29sJiwgdWlu
dDY0X3QmPjsKKyAgICB1c2luZyBSZXBseUFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8Ym9vbCwgdWlu
dDY0X3Q+OworICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKKyAgICB7Cisg
ICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQXJndW1l
bnRzIG1fYXJndW1lbnRzOworfTsKKyNlbmRpZgorCitjbGFzcyBUZXN0U3luY01lc3NhZ2Ugewor
cHVibGljOgorICAgIHR5cGVkZWYgc3RkOjp0dXBsZTx1aW50MzJfdD4gQXJndW1lbnRzOworCisg
ICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5h
bWU6OldlYlBhZ2VfVGVzdFN5bmNNZXNzYWdlOyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNT
eW5jID0gdHJ1ZTsKKworICAgIHVzaW5nIERlbGF5ZWRSZXBseSA9IFRlc3RTeW5jTWVzc2FnZURl
bGF5ZWRSZXBseTsKKyAgICBzdGF0aWMgdm9pZCBzZW5kKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVu
Y29kZXI+JiYsIElQQzo6Q29ubmVjdGlvbiYsIHVpbnQ4X3QgcmVwbHkpOworICAgIHVzaW5nIFJl
cGx5ID0gc3RkOjp0dXBsZTx1aW50OF90Jj47CisgICAgdXNpbmcgUmVwbHlBcmd1bWVudHMgPSBz
dGQ6OnR1cGxlPHVpbnQ4X3Q+OworICAgIGV4cGxpY2l0IFRlc3RTeW5jTWVzc2FnZSh1aW50MzJf
dCBwYXJhbSkKKyAgICAgICAgOiBtX2FyZ3VtZW50cyhwYXJhbSkKKyAgICB7CisgICAgfQorCisg
ICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0
dXJuIG1fYXJndW1lbnRzOworICAgIH0KKworcHJpdmF0ZToKKyAgICBBcmd1bWVudHMgbV9hcmd1
bWVudHM7Cit9OworCitjbGFzcyBUZXN0U3luY2hyb25vdXNNZXNzYWdlIHsKK3B1YmxpYzoKKyAg
ICB0eXBlZGVmIHN0ZDo6dHVwbGU8Ym9vbD4gQXJndW1lbnRzOworCisgICAgc3RhdGljIElQQzo6
TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVz
dFN5bmNocm9ub3VzTWVzc2FnZTsgfQorICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IHRy
dWU7CisKKyAgICB1c2luZyBEZWxheWVkUmVwbHkgPSBUZXN0U3luY2hyb25vdXNNZXNzYWdlRGVs
YXllZFJlcGx5OworICAgIHN0YXRpYyB2b2lkIHNlbmQoc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5j
b2Rlcj4mJiwgSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgT3B0aW9uYWw8V2ViS2l0OjpUZXN0Q2xh
c3NOYW1lPiYgb3B0aW9uYWxSZXBseSk7CisgICAgdXNpbmcgUmVwbHkgPSBzdGQ6OnR1cGxlPE9w
dGlvbmFsPFdlYktpdDo6VGVzdENsYXNzTmFtZT4mPjsKKyAgICB1c2luZyBSZXBseUFyZ3VtZW50
cyA9IHN0ZDo6dHVwbGU8T3B0aW9uYWw8V2ViS2l0OjpUZXN0Q2xhc3NOYW1lPj47CisgICAgZXhw
bGljaXQgVGVzdFN5bmNocm9ub3VzTWVzc2FnZShib29sIHZhbHVlKQorICAgICAgICA6IG1fYXJn
dW1lbnRzKHZhbHVlKQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3Vt
ZW50cygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7CisgICAgfQor
Citwcml2YXRlOgorICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYlBhZ2UKK30gLy8gbmFtZXNwYWNlIE1lc3NhZ2VzCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1NjcmlwdHMvdGVzdC1zdXBlcmNsYXNzTWVzc2FnZXNSZXBsaWVzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9TY3JpcHRzL3Rlc3Qtc3VwZXJjbGFzc01lc3NhZ2VzUmVwbGllcy5oCShu
b25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy90ZXN0LXN1cGVyY2xhc3NNZXNz
YWdlc1JlcGxpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEwLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorICogQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisgKiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLAorICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNZXNzYWdlTmFtZXMuaCIKKyNpbmNs
dWRlICJUZXN0Q2xhc3NOYW1lLmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRl
IDx3dGYvT3B0aW9uYWwuaD4KKworCituYW1lc3BhY2UgTWVzc2FnZXMgeworbmFtZXNwYWNlIFdl
YlBhZ2UgeworCisjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKK3VzaW5nIFRlc3RBc3luY01lc3Nh
Z2VBc3luY1JlcGx5ID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCByZXN1bHQpPjsK
KyNlbmRpZgorCisjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKK3VzaW5nIFRlc3RBc3luY01lc3Nh
Z2VXaXRoTm9Bcmd1bWVudHNBc3luY1JlcGx5ID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPjsK
KyNlbmRpZgorCisjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKK3VzaW5nIFRlc3RBc3luY01lc3Nh
Z2VXaXRoTXVsdGlwbGVBcmd1bWVudHNBc3luY1JlcGx5ID0gQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sIGZsYWcsIHVpbnQ2NF90IHZhbHVlKT47CisjZW5kaWYKKwordXNpbmcgVGVzdFN5bmNN
ZXNzYWdlRGVsYXllZFJlcGx5ID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50OF90IHJlcGx5
KT47CisKK3VzaW5nIFRlc3RTeW5jaHJvbm91c01lc3NhZ2VEZWxheWVkUmVwbHkgPSBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IE9wdGlvbmFsPFdlYktpdDo6VGVzdENsYXNzTmFtZT4mIG9w
dGlvbmFsUmVwbHkpPjsKKworfSAvLyBuYW1lc3BhY2UgV2ViUGFnZQorfSAvLyBuYW1lc3BhY2Ug
TWVzc2FnZXMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy90ZXN0TWVzc2FnZVJlY2VpdmVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvdGVzdE1lc3NhZ2VSZWNl
aXZlci5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9TY3JpcHRzL3Rlc3RNZXNz
YWdlUmVjZWl2ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElN
UExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJOb25lLmgiCisKKyNp
bmNsdWRlICJEZWNvZGVyLmgiCisjaW5jbHVkZSAiSGFuZGxlTWVzc2FnZS5oIgorI2luY2x1ZGUg
Ik5vbmVNZXNzYWdlcy5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKKwpJbmRleDogU291cmNlL1dlYktpdC9TY3JpcHRzL3Rlc3RNZXNzYWdlcy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy90ZXN0TWVzc2FnZXMuaAkobm9uZXhp
c3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvdGVzdE1lc3NhZ2VzLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw0NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQor
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisj
aW5jbHVkZSAiTWVzc2FnZU5hbWVzLmgiCisjaW5jbHVkZSAiTm9uZU1lc3NhZ2VzUmVwbGllcy5o
IgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZD
b3VudGVkLmg+CisKKworbmFtZXNwYWNlIE1lc3NhZ2VzIHsKK25hbWVzcGFjZSBOb25lIHsKKwor
c3RhdGljIGlubGluZSBJUEM6OlJlY2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1lKCkKK3sK
KyAgICByZXR1cm4gSVBDOjpSZWNlaXZlck5hbWU6Ok5vbmU7Cit9CisKKworfSAvLyBuYW1lc3Bh
Y2UgTm9uZQorfSAvLyBuYW1lc3BhY2UgTWVzc2FnZXMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2Ny
aXB0cy90ZXN0TWVzc2FnZXNSZXBsaWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9T
Y3JpcHRzL3Rlc3RNZXNzYWdlc1JlcGxpZXMuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2Vi
S2l0L1NjcmlwdHMvdGVzdE1lc3NhZ2VzUmVwbGllcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAor
ICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1l
c3NhZ2VOYW1lcy5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKKworbmFtZXNwYWNlIE1l
c3NhZ2VzIHsKK25hbWVzcGFjZSBOb25lIHsKKworCit9IC8vIG5hbWVzcGFjZSBOb25lCit9IC8v
IG5hbWVzcGFjZSBNZXNzYWdlcwpJbmRleDogU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9M
ZWdhY3lNZXNzYWdlUmVjZWl2ZXItZXhwZWN0ZWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvU2NyaXB0cy93ZWJraXQvTGVnYWN5TWVzc2FnZVJlY2VpdmVyLWV4cGVjdGVkLmNwcAko
cmV2aXNpb24gMjYxMDMzKQorKysgU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9MZWdhY3lN
ZXNzYWdlUmVjZWl2ZXItZXhwZWN0ZWQuY3BwCShub25leGlzdGVudCkKQEAgLTEsMjAzICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAotICogQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
Ci0gKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMCi0gKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgotICogU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIKLSAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0gKiBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiAoRU5BQkxF
KFdFQktJVDIpICYmIChORVNURURfTUFTVEVSX0NPTkRJVElPTiB8fCBNQVNURVJfT1IgJiYgTUFT
VEVSX0FORCkpCi0KLSNpbmNsdWRlICJXZWJQYWdlLmgiCi0KLSNpbmNsdWRlICJBcmd1bWVudENv
ZGVycy5oIgotI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKLSNpbmNsdWRlICJEZWNvZGVyLmgiCi0j
aWYgRU5BQkxFKERFUFJFQ0FURURfRkVBVFVSRSkgfHwgRU5BQkxFKEVYUEVSSU1FTlRBTF9GRUFU
VVJFKQotI2luY2x1ZGUgIkR1bW15VHlwZS5oIgotI2VuZGlmCi0jaW5jbHVkZSAiSGFuZGxlTWVz
c2FnZS5oIgotI2lmIFBMQVRGT1JNKE1BQykKLSNpbmNsdWRlICJNYWNoUG9ydC5oIgotI2VuZGlm
Ci0jaW5jbHVkZSAiUGx1Z2luLmgiCi0jaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgi
Ci0jaWYgKEVOQUJMRShUT1VDSF9FVkVOVFMpICYmIChORVNURURfTUVTU0FHRV9DT05ESVRJT04g
JiYgU09NRV9PVEhFUl9NRVNTQUdFX0NPTkRJVElPTikpIHx8IChFTkFCTEUoVE9VQ0hfRVZFTlRT
KSAmJiAoTkVTVEVEX01FU1NBR0VfQ09ORElUSU9OIHx8IFNPTUVfT1RIRVJfTUVTU0FHRV9DT05E
SVRJT04pKQotI2luY2x1ZGUgIldlYkV2ZW50LmgiCi0jZW5kaWYKLSNpbmNsdWRlICJXZWJQYWdl
TWVzc2FnZXMuaCIKLSNpbmNsdWRlICJXZWJQcmVmZXJlbmNlc1N0b3JlLmgiCi0jaW5jbHVkZSA8
V2ViQ29yZS9HcmFwaGljc0xheWVyLmg+Ci0jaWYgUExBVEZPUk0oTUFDKQotI2luY2x1ZGUgPFdl
YkNvcmUvS2V5Ym9hcmRFdmVudC5oPgotI2VuZGlmCi0jaW5jbHVkZSA8V2ViQ29yZS9QbHVnaW5E
YXRhLmg+Ci0jaW5jbHVkZSA8dXRpbGl0eT4KLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQot
bmFtZXNwYWNlIE1lc3NhZ2VzIHsKLQotbmFtZXNwYWNlIFdlYlBhZ2UgewotCi12b2lkIEdldFBs
dWdpblByb2Nlc3NDb25uZWN0aW9uOjpzZW5kKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+
JiYgZW5jb2RlciwgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBJUEM6OkNvbm5l
Y3Rpb246OkhhbmRsZSYgY29ubmVjdGlvbkhhbmRsZSkKLXsKLSAgICAqZW5jb2RlciA8PCBjb25u
ZWN0aW9uSGFuZGxlOwotICAgIGNvbm5lY3Rpb24uc2VuZFN5bmNSZXBseShXVEZNb3ZlKGVuY29k
ZXIpKTsKLX0KLQotdm9pZCBUZXN0TXVsdGlwbGVBdHRyaWJ1dGVzOjpzZW5kKHN0ZDo6dW5pcXVl
X3B0cjxJUEM6OkVuY29kZXI+JiYgZW5jb2RlciwgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9u
KQotewotICAgIGNvbm5lY3Rpb24uc2VuZFN5bmNSZXBseShXVEZNb3ZlKGVuY29kZXIpKTsKLX0K
LQotfSAvLyBuYW1lc3BhY2UgV2ViUGFnZQotCi19IC8vIG5hbWVzcGFjZSBNZXNzYWdlcwotCi1u
YW1lc3BhY2UgV2ViS2l0IHsKLQotdm9pZCBXZWJQYWdlOjpkaWRSZWNlaXZlV2ViUGFnZU1lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpCi17
Ci0gICAgYXV0byBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyk7Ci0gICAgaWYgKGRlY29k
ZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFVSTDo6bmFtZSgpKSB7
Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFVSTD4o
ZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OmxvYWRVUkwpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCi0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUo
KSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFNvbWV0aGluZzo6bmFtZSgpKSB7Ci0gICAgICAg
IElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFNvbWV0aGluZz4oZGVj
b2RlciwgdGhpcywgJldlYlBhZ2U6OmxvYWRTb21ldGhpbmcpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotI2VuZGlmCi0jaWYgKEVOQUJMRShUT1VDSF9FVkVOVFMpICYmIChORVNURURfTUVTU0FH
RV9DT05ESVRJT04gfHwgU09NRV9PVEhFUl9NRVNTQUdFX0NPTkRJVElPTikpCi0gICAgaWYgKGRl
Y29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6VG91Y2hFdmVudDo6bmFt
ZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6VG91
Y2hFdmVudD4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OnRvdWNoRXZlbnQpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotI2VuZGlmCi0jaWYgKEVOQUJMRShUT1VDSF9FVkVOVFMpICYmIChORVNU
RURfTUVTU0FHRV9DT05ESVRJT04gJiYgU09NRV9PVEhFUl9NRVNTQUdFX0NPTkRJVElPTikpCi0g
ICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6QWRkRXZl
bnQ6Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBh
Z2U6OkFkZEV2ZW50PihkZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6YWRkRXZlbnQpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotI2VuZGlmCi0jaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLSAgICBp
ZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkU29tZXRo
aW5nRWxzZTo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6
V2ViUGFnZTo6TG9hZFNvbWV0aGluZ0Vsc2U+KGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjpsb2Fk
U29tZXRoaW5nRWxzZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYKLSAgICBpZiAo
ZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZWNlaXZlUG9s
aWN5RGVjaXNpb246Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2Fn
ZXM6OldlYlBhZ2U6OkRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbj4oZGVjb2RlciwgdGhpcywgJldl
YlBhZ2U6OmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6Q2xv
c2U6Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBh
Z2U6OkNsb3NlPihkZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6Y2xvc2UpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6Oldl
YlBhZ2U6OlByZWZlcmVuY2VzRGlkQ2hhbmdlOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5k
bGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpQcmVmZXJlbmNlc0RpZENoYW5nZT4oZGVjb2Rl
ciwgdGhpcywgJldlYlBhZ2U6OnByZWZlcmVuY2VzRGlkQ2hhbmdlKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQ
YWdlOjpTZW5kRG91YmxlQW5kRmxvYXQ6Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1l
c3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OlNlbmREb3VibGVBbmRGbG9hdD4oZGVjb2RlciwgdGhp
cywgJldlYlBhZ2U6OnNlbmREb3VibGVBbmRGbG9hdCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6U2Vu
ZEludHM6Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6Oldl
YlBhZ2U6OlNlbmRJbnRzPihkZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6c2VuZEludHMpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVz
c2FnZXM6OldlYlBhZ2U6OlRlc3RQYXJhbWV0ZXJBdHRyaWJ1dGVzOjpuYW1lKCkpIHsKLSAgICAg
ICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0UGFyYW1ldGVyQXR0
cmlidXRlcz4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OnRlc3RQYXJhbWV0ZXJBdHRyaWJ1dGVz
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgp
ID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpUZW1wbGF0ZVRlc3Q6Om5hbWUoKSkgewotICAgICAgICBJ
UEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OlRlbXBsYXRlVGVzdD4oZGVjb2Rl
ciwgdGhpcywgJldlYlBhZ2U6OnRlbXBsYXRlVGVzdCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6U2V0
VmlkZW9MYXllcklEOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3Nh
Z2VzOjpXZWJQYWdlOjpTZXRWaWRlb0xheWVySUQ+KGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjpz
ZXRWaWRlb0xheWVySUQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2lmIFBMQVRGT1JNKE1B
QykKLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpE
aWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbjo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFu
ZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6RGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rp
b24+KGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjpkaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlv
bik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYKLSNpZiBFTkFCTEUoREVQUkVDQVRF
RF9GRUFUVVJFKQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6Oldl
YlBhZ2U6OkRlcHJlY2F0ZWRPcGVyYXRpb246Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRs
ZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OkRlcHJlY2F0ZWRPcGVyYXRpb24+KGRlY29kZXIs
IHRoaXMsICZXZWJQYWdlOjpkZXByZWNhdGVkT3BlcmF0aW9uKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLSNlbmRpZgotI2lmIEVOQUJMRShFWFBFUklNRU5UQUxfRkVBVFVSRSkKLSAgICBpZiAo
ZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpFeHBlcmltZW50YWxP
cGVyYXRpb246Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6
OldlYlBhZ2U6OkV4cGVyaW1lbnRhbE9wZXJhdGlvbj4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6
OmV4cGVyaW1lbnRhbE9wZXJhdGlvbik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYK
LSAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7Ci0gICAgVU5VU0VEX1BBUkFNKGRlY29kZXIp
OwotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi12b2lkIFdlYlBhZ2U6OmRpZFJlY2Vp
dmVTeW5jV2ViUGFnZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRl
Y29kZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiByZXBseUVuY29k
ZXIpCi17Ci0gICAgYXV0byBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyk7Ci0gICAgaWYg
KGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6Q3JlYXRlUGx1Z2lu
OjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdl
OjpDcmVhdGVQbHVnaW4+KGRlY29kZXIsICpyZXBseUVuY29kZXIsIHRoaXMsICZXZWJQYWdlOjpj
cmVhdGVQbHVnaW4pOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChkZWNvZGVyLm1l
c3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OlJ1bkphdmFTY3JpcHRBbGVydDo6bmFt
ZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6UnVu
SmF2YVNjcmlwdEFsZXJ0PihkZWNvZGVyLCAqcmVwbHlFbmNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6
cnVuSmF2YVNjcmlwdEFsZXJ0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoZGVj
b2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRQbHVnaW5zOjpuYW1l
KCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRQ
bHVnaW5zPihkZWNvZGVyLCAqcmVwbHlFbmNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6Z2V0UGx1Z2lu
cyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUo
KSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246Om5hbWUo
KSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2VTeW5jaHJvbm91czxNZXNzYWdlczo6V2Vi
UGFnZTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24+KGNvbm5lY3Rpb24sIGRlY29kZXIsIHJl
cGx5RW5jb2RlciwgdGhpcywgJldlYlBhZ2U6OmdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09
IE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0TXVsdGlwbGVBdHRyaWJ1dGVzOjpuYW1lKCkpIHsKLSAg
ICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlU3luY2hyb25vdXNXYW50c0Nvbm5lY3Rpb248TWVzc2Fn
ZXM6OldlYlBhZ2U6OlRlc3RNdWx0aXBsZUF0dHJpYnV0ZXM+KGNvbm5lY3Rpb24sIGRlY29kZXIs
IHJlcGx5RW5jb2RlciwgdGhpcywgJldlYlBhZ2U6OnRlc3RNdWx0aXBsZUF0dHJpYnV0ZXMpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotI2lmIFBMQVRGT1JNKE1BQykKLSAgICBpZiAoZGVjb2Rl
ci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpJbnRlcnByZXRLZXlFdmVudDo6
bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6
SW50ZXJwcmV0S2V5RXZlbnQ+KGRlY29kZXIsICpyZXBseUVuY29kZXIsIHRoaXMsICZXZWJQYWdl
OjppbnRlcnByZXRLZXlFdmVudCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYKLSAg
ICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7Ci0gICAgVU5VU0VEX1BBUkFNKGRlY29kZXIpOwot
ICAgIFVOVVNFRF9QQVJBTShyZXBseUVuY29kZXIpOwotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotCi0jZW5kaWYgLy8gKEVOQUJMRShXRUJL
SVQyKSAmJiAoTkVTVEVEX01BU1RFUl9DT05ESVRJT04gfHwgTUFTVEVSX09SICYmIE1BU1RFUl9B
TkQpKQoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9M
ZWdhY3lNZXNzYWdlUmVjZWl2ZXItZXhwZWN0ZWQuY3BwCl9fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3Zu
OmVvbC1zdHlsZQojIyAtMSArMCwwICMjCi1uYXRpdmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBw
cm9wZXJ0eQpJbmRleDogU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9MZWdhY3lNZXNzYWdl
cy1leHBlY3RlZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQv
TGVnYWN5TWVzc2FnZXMtZXhwZWN0ZWQuaAkocmV2aXNpb24gMjYxMDMzKQorKysgU291cmNlL1dl
YktpdC9TY3JpcHRzL3dlYmtpdC9MZWdhY3lNZXNzYWdlcy1leHBlY3RlZC5oCShub25leGlzdGVu
dCkKQEAgLTEsNTcwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnIEFORAotICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SCi0gKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0gKiBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UgotICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0gKiBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQot
I2lmIChFTkFCTEUoV0VCS0lUMikgJiYgKE5FU1RFRF9NQVNURVJfQ09ORElUSU9OIHx8IE1BU1RF
Ul9PUiAmJiBNQVNURVJfQU5EKSkKLQotI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCi0jaW5j
bHVkZSAiQ29ubmVjdGlvbi5oIgotI2luY2x1ZGUgIlBsdWdpbi5oIgotI2luY2x1ZGUgIldlYlBh
Z2VNZXNzYWdlc1JlcGxpZXMuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXIuaD4K
LSNpbmNsdWRlIDxXZWJDb3JlL0tleWJvYXJkRXZlbnQuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1Bs
dWdpbkRhdGEuaD4KLSNpbmNsdWRlIDx1dGlsaXR5PgotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+
Ci0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNv
dW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBJUEMgewotY2xhc3MgRHVtbXlUeXBlOwotY2xhc3MgTWFj
aFBvcnQ7Ci19Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotY2xhc3MgV2ViUHJlZmVyZW5jZXNTdG9y
ZTsKLWNsYXNzIFdlYlRvdWNoRXZlbnQ7Ci19Ci0KLW5hbWVzcGFjZSBNZXNzYWdlcyB7Ci1uYW1l
c3BhY2UgV2ViUGFnZSB7Ci0KLXN0YXRpYyBpbmxpbmUgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVz
c2FnZVJlY2VpdmVyTmFtZSgpCi17Ci0gICAgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJX
ZWJQYWdlIik7Ci19Ci0KLWNsYXNzIExvYWRVUkwgewotcHVibGljOgotICAgIHR5cGVkZWYgc3Rk
Ojp0dXBsZTxjb25zdCBTdHJpbmcmPiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJp
bmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgp
OyB9Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6
OlN0cmluZ1JlZmVyZW5jZSgiTG9hZFVSTCIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNT
eW5jID0gZmFsc2U7Ci0KLSAgICBleHBsaWNpdCBMb2FkVVJMKGNvbnN0IFN0cmluZyYgdXJsKQot
ICAgICAgICA6IG1fYXJndW1lbnRzKHVybCkKLSAgICB7Ci0gICAgfQotCi0gICAgY29uc3QgQXJn
dW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1l
bnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19Owot
Ci0jaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLWNsYXNzIExvYWRTb21ldGhpbmcgewotcHVibGlj
OgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBTdHJpbmcmPiBBcmd1bWVudHM7Ci0KLSAg
ICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVz
c2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5h
bWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiTG9hZFNvbWV0aGluZyIpOyB9Ci0g
ICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7Ci0KLSAgICBleHBsaWNpdCBMb2Fk
U29tZXRoaW5nKGNvbnN0IFN0cmluZyYgdXJsKQotICAgICAgICA6IG1fYXJndW1lbnRzKHVybCkK
LSAgICB7Ci0gICAgfQotCi0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAot
ICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAg
ICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19OwotI2VuZGlmCi0KLSNpZiAoRU5BQkxFKFRPVUNI
X0VWRU5UUykgJiYgKE5FU1RFRF9NRVNTQUdFX0NPTkRJVElPTiB8fCBTT01FX09USEVSX01FU1NB
R0VfQ09ORElUSU9OKSkKLWNsYXNzIFRvdWNoRXZlbnQgewotcHVibGljOgotICAgIHR5cGVkZWYg
c3RkOjp0dXBsZTxjb25zdCBXZWJLaXQ6OldlYlRvdWNoRXZlbnQmPiBBcmd1bWVudHM7Ci0KLSAg
ICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVz
c2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5h
bWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiVG91Y2hFdmVudCIpOyB9Ci0gICAg
c3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7Ci0KLSAgICBleHBsaWNpdCBUb3VjaEV2
ZW50KGNvbnN0IFdlYktpdDo6V2ViVG91Y2hFdmVudCYgZXZlbnQpCi0gICAgICAgIDogbV9hcmd1
bWVudHMoZXZlbnQpCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1l
bnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0K
LXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLSNlbmRpZgotCi0jaWYg
KEVOQUJMRShUT1VDSF9FVkVOVFMpICYmIChORVNURURfTUVTU0FHRV9DT05ESVRJT04gJiYgU09N
RV9PVEhFUl9NRVNTQUdFX0NPTkRJVElPTikpCi1jbGFzcyBBZGRFdmVudCB7Ci1wdWJsaWM6Ci0g
ICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGNvbnN0IFdlYktpdDo6V2ViVG91Y2hFdmVudCY+IEFyZ3Vt
ZW50czsKLQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7
IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdS
ZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJBZGRFdmVudCIp
OyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7Ci0KLSAgICBleHBsaWNp
dCBBZGRFdmVudChjb25zdCBXZWJLaXQ6OldlYlRvdWNoRXZlbnQmIGV2ZW50KQotICAgICAgICA6
IG1fYXJndW1lbnRzKGV2ZW50KQotICAgIHsKLSAgICB9Ci0KLSAgICBjb25zdCBBcmd1bWVudHMm
IGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7Ci0g
ICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKLX07Ci0jZW5kaWYK
LQotI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCi1jbGFzcyBMb2FkU29tZXRoaW5nRWxzZSB7Ci1w
dWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGNvbnN0IFN0cmluZyY+IEFyZ3VtZW50czsK
LQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVy
biBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVu
Y2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJMb2FkU29tZXRoaW5nRWxz
ZSIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7Ci0KLSAgICBleHBs
aWNpdCBMb2FkU29tZXRoaW5nRWxzZShjb25zdCBTdHJpbmcmIHVybCkKLSAgICAgICAgOiBtX2Fy
Z3VtZW50cyh1cmwpCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1l
bnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0K
LXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLSNlbmRpZgotCi1jbGFz
cyBEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24gewotcHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0
dXBsZTx1aW50NjRfdCwgdWludDY0X3QsIHVpbnQzMl90PiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0
aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJl
Y2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7
IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiRGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uIik7
IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKLQotICAgIERpZFJlY2Vp
dmVQb2xpY3lEZWNpc2lvbih1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBsaXN0ZW5lcklELCB1
aW50MzJfdCBwb2xpY3lBY3Rpb24pCi0gICAgICAgIDogbV9hcmd1bWVudHMoZnJhbWVJRCwgbGlz
dGVuZXJJRCwgcG9saWN5QWN0aW9uKQotICAgIHsKLSAgICB9Ci0KLSAgICBjb25zdCBBcmd1bWVu
dHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7
Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKLX07Ci0KLWNs
YXNzIENsb3NlIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8PiBBcmd1bWVudHM7
Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1
cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJl
bmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiQ2xvc2UiKTsgfQotICAg
IHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOwotCi0gICAgY29uc3QgQXJndW1lbnRz
JiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwot
ICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19OwotCi1jbGFz
cyBQcmVmZXJlbmNlc0RpZENoYW5nZSB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxl
PGNvbnN0IFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZSY+IEFyZ3VtZW50czsKLQotICAgIHN0
YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNzYWdl
UmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgp
IHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJQcmVmZXJlbmNlc0RpZENoYW5nZSIpOyB9
Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7Ci0KLSAgICBleHBsaWNpdCBQ
cmVmZXJlbmNlc0RpZENoYW5nZShjb25zdCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmUmIHN0
b3JlKQotICAgICAgICA6IG1fYXJndW1lbnRzKHN0b3JlKQotICAgIHsKLSAgICB9Ci0KLSAgICBj
b25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4g
bV9hcmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50
czsKLX07Ci0KLWNsYXNzIFNlbmREb3VibGVBbmRGbG9hdCB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRl
ZiBzdGQ6OnR1cGxlPGRvdWJsZSwgZmxvYXQ+IEFyZ3VtZW50czsKLQotICAgIHN0YXRpYyBJUEM6
OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJO
YW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJu
IElQQzo6U3RyaW5nUmVmZXJlbmNlKCJTZW5kRG91YmxlQW5kRmxvYXQiKTsgfQotICAgIHN0YXRp
YyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOwotCi0gICAgU2VuZERvdWJsZUFuZEZsb2F0KGRv
dWJsZSBkLCBmbG9hdCBmKQotICAgICAgICA6IG1fYXJndW1lbnRzKGQsIGYpCi0gICAgewotICAg
IH0KLQotICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1lbnRz
IG1fYXJndW1lbnRzOwotfTsKLQotY2xhc3MgU2VuZEludHMgewotcHVibGljOgotICAgIHR5cGVk
ZWYgc3RkOjp0dXBsZTxjb25zdCBWZWN0b3I8dWludDY0X3Q+JiwgY29uc3QgVmVjdG9yPFZlY3Rv
cjx1aW50NjRfdD4+Jj4gQXJndW1lbnRzOwotCi0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJl
bmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsgfQotICAg
IHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpTdHJpbmdS
ZWZlcmVuY2UoIlNlbmRJbnRzIik7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBm
YWxzZTsKLQotICAgIFNlbmRJbnRzKGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIGludHMsIGNvbnN0
IFZlY3RvcjxWZWN0b3I8dWludDY0X3Q+PiYgaW50VmVjdG9ycykKLSAgICAgICAgOiBtX2FyZ3Vt
ZW50cyhpbnRzLCBpbnRWZWN0b3JzKQotICAgIHsKLSAgICB9Ci0KLSAgICBjb25zdCBBcmd1bWVu
dHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7
Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKLX07Ci0KLWNs
YXNzIENyZWF0ZVBsdWdpbiB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPHVpbnQ2
NF90LCBjb25zdCBXZWJLaXQ6OlBsdWdpbjo6UGFyYW1ldGVycyY+IEFyZ3VtZW50czsKLQotICAg
IHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNz
YWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFt
ZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJDcmVhdGVQbHVnaW4iKTsgfQotICAg
IHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IHRydWU7Ci0KLSAgICB1c2luZyBSZXBseSA9IHN0
ZDo6dHVwbGU8Ym9vbCY+OwotICAgIHVzaW5nIFJlcGx5QXJndW1lbnRzID0gc3RkOjp0dXBsZTxi
b29sPjsKLSAgICBDcmVhdGVQbHVnaW4odWludDY0X3QgcGx1Z2luSW5zdGFuY2VJRCwgY29uc3Qg
V2ViS2l0OjpQbHVnaW46OlBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCi0gICAgICAgIDogbV9hcmd1
bWVudHMocGx1Z2luSW5zdGFuY2VJRCwgcGFyYW1ldGVycykKLSAgICB7Ci0gICAgfQotCi0gICAg
Y29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJu
IG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1bWVudHMgbV9hcmd1bWVu
dHM7Ci19OwotCi1jbGFzcyBSdW5KYXZhU2NyaXB0QWxlcnQgewotcHVibGljOgotICAgIHR5cGVk
ZWYgc3RkOjp0dXBsZTx1aW50NjRfdCwgY29uc3QgU3RyaW5nJj4gQXJndW1lbnRzOwotCi0gICAg
c3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3Nh
Z2VSZWNlaXZlck5hbWUoKTsgfQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1l
KCkgeyByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIlJ1bkphdmFTY3JpcHRBbGVydCIpOyB9
Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gdHJ1ZTsKLQotICAgIHVzaW5nIFJlcGx5
ID0gc3RkOjp0dXBsZTw+OwotICAgIHVzaW5nIFJlcGx5QXJndW1lbnRzID0gc3RkOjp0dXBsZTw+
OwotICAgIFJ1bkphdmFTY3JpcHRBbGVydCh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcm
IG1lc3NhZ2UpCi0gICAgICAgIDogbV9hcmd1bWVudHMoZnJhbWVJRCwgbWVzc2FnZSkKLSAgICB7
Ci0gICAgfQotCi0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsK
LSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1
bWVudHMgbV9hcmd1bWVudHM7Ci19OwotCi1jbGFzcyBHZXRQbHVnaW5zIHsKLXB1YmxpYzoKLSAg
ICB0eXBlZGVmIHN0ZDo6dHVwbGU8Ym9vbD4gQXJndW1lbnRzOwotCi0gICAgc3RhdGljIElQQzo6
U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5h
bWUoKTsgfQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4g
SVBDOjpTdHJpbmdSZWZlcmVuY2UoIkdldFBsdWdpbnMiKTsgfQotICAgIHN0YXRpYyBjb25zdCBi
b29sIGlzU3luYyA9IHRydWU7Ci0KLSAgICB1c2luZyBSZXBseSA9IHN0ZDo6dHVwbGU8VmVjdG9y
PFdlYkNvcmU6OlBsdWdpbkluZm8+Jj47Ci0gICAgdXNpbmcgUmVwbHlBcmd1bWVudHMgPSBzdGQ6
OnR1cGxlPFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPj47Ci0gICAgZXhwbGljaXQgR2V0UGx1
Z2lucyhib29sIHJlZnJlc2gpCi0gICAgICAgIDogbV9hcmd1bWVudHMocmVmcmVzaCkKLSAgICB7
Ci0gICAgfQotCi0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsK
LSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1
bWVudHMgbV9hcmd1bWVudHM7Ci19OwotCi1jbGFzcyBHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlv
biB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGNvbnN0IFN0cmluZyY+IEFyZ3Vt
ZW50czsKLQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7
IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdS
ZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJHZXRQbHVnaW5Q
cm9jZXNzQ29ubmVjdGlvbiIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gdHJ1
ZTsKLQotICAgIHVzaW5nIERlbGF5ZWRSZXBseSA9IEdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9u
RGVsYXllZFJlcGx5OwotICAgIHN0YXRpYyB2b2lkIHNlbmQoc3RkOjp1bmlxdWVfcHRyPElQQzo6
RW5jb2Rlcj4mJiwgSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgSVBDOjpDb25uZWN0aW9uOjpIYW5k
bGUmIGNvbm5lY3Rpb25IYW5kbGUpOwotICAgIHVzaW5nIFJlcGx5ID0gc3RkOjp0dXBsZTxJUEM6
OkNvbm5lY3Rpb246OkhhbmRsZSY+OwotICAgIHVzaW5nIFJlcGx5QXJndW1lbnRzID0gc3RkOjp0
dXBsZTxJUEM6OkNvbm5lY3Rpb246OkhhbmRsZT47Ci0gICAgZXhwbGljaXQgR2V0UGx1Z2luUHJv
Y2Vzc0Nvbm5lY3Rpb24oY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoKQotICAgICAgICA6IG1fYXJn
dW1lbnRzKHBsdWdpblBhdGgpCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0IEFyZ3VtZW50cyYg
YXJndW1lbnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAg
ICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLQotY2xhc3Mg
VGVzdE11bHRpcGxlQXR0cmlidXRlcyB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxl
PD4gQXJndW1lbnRzOwotCi0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVy
TmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsgfQotICAgIHN0YXRpYyBJUEM6
OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIlRl
c3RNdWx0aXBsZUF0dHJpYnV0ZXMiKTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9
IHRydWU7Ci0KLSAgICB1c2luZyBEZWxheWVkUmVwbHkgPSBUZXN0TXVsdGlwbGVBdHRyaWJ1dGVz
RGVsYXllZFJlcGx5OwotICAgIHN0YXRpYyB2b2lkIHNlbmQoc3RkOjp1bmlxdWVfcHRyPElQQzo6
RW5jb2Rlcj4mJiwgSVBDOjpDb25uZWN0aW9uJik7Ci0gICAgdXNpbmcgUmVwbHkgPSBzdGQ6OnR1
cGxlPD47Ci0gICAgdXNpbmcgUmVwbHlBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPD47Ci0gICAgY29u
c3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1f
YXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7
Ci19OwotCi1jbGFzcyBUZXN0UGFyYW1ldGVyQXR0cmlidXRlcyB7Ci1wdWJsaWM6Ci0gICAgdHlw
ZWRlZiBzdGQ6OnR1cGxlPHVpbnQ2NF90LCBkb3VibGUsIGRvdWJsZT4gQXJndW1lbnRzOwotCi0g
ICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1l
c3NhZ2VSZWNlaXZlck5hbWUoKTsgfQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBu
YW1lKCkgeyByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIlRlc3RQYXJhbWV0ZXJBdHRyaWJ1
dGVzIik7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKLQotICAgIFRl
c3RQYXJhbWV0ZXJBdHRyaWJ1dGVzKHVpbnQ2NF90IGZvbywgZG91YmxlIGJhciwgZG91YmxlIGJh
eikKLSAgICAgICAgOiBtX2FyZ3VtZW50cyhmb28sIGJhciwgYmF6KQotICAgIHsKLSAgICB9Ci0K
LSAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewotICAgICAgICBy
ZXR1cm4gbV9hcmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBtX2Fy
Z3VtZW50czsKLX07Ci0KLWNsYXNzIFRlbXBsYXRlVGVzdCB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRl
ZiBzdGQ6OnR1cGxlPGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBzdGQ6OnBhaXI8U3RyaW5nLCB1aW50
NjRfdD4+Jj4gQXJndW1lbnRzOwotCi0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJl
Y2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsgfQotICAgIHN0YXRp
YyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVu
Y2UoIlRlbXBsYXRlVGVzdCIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFs
c2U7Ci0KLSAgICBleHBsaWNpdCBUZW1wbGF0ZVRlc3QoY29uc3QgSGFzaE1hcDxTdHJpbmcsIHN0
ZDo6cGFpcjxTdHJpbmcsIHVpbnQ2NF90Pj4mIGEpCi0gICAgICAgIDogbV9hcmd1bWVudHMoYSkK
LSAgICB7Ci0gICAgfQotCi0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAot
ICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAg
ICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19OwotCi1jbGFzcyBTZXRWaWRlb0xheWVySUQgewot
cHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBXZWJDb3JlOjpHcmFwaGljc0xh
eWVyOjpQbGF0Zm9ybUxheWVySUQmPiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJp
bmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgp
OyB9Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6
OlN0cmluZ1JlZmVyZW5jZSgiU2V0VmlkZW9MYXllcklEIik7IH0KLSAgICBzdGF0aWMgY29uc3Qg
Ym9vbCBpc1N5bmMgPSBmYWxzZTsKLQotICAgIGV4cGxpY2l0IFNldFZpZGVvTGF5ZXJJRChjb25z
dCBXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQmIHZpZGVvTGF5ZXJJRCkK
LSAgICAgICAgOiBtX2FyZ3VtZW50cyh2aWRlb0xheWVySUQpCi0gICAgewotICAgIH0KLQotICAg
IGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVy
biBtX2FyZ3VtZW50czsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJndW1l
bnRzOwotfTsKLQotI2lmIFBMQVRGT1JNKE1BQykKLWNsYXNzIERpZENyZWF0ZVdlYlByb2Nlc3ND
b25uZWN0aW9uIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8Y29uc3QgSVBDOjpN
YWNoUG9ydCY+IEFyZ3VtZW50czsKLQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBy
ZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0
aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJl
bmNlKCJEaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbiIpOyB9Ci0gICAgc3RhdGljIGNvbnN0
IGJvb2wgaXNTeW5jID0gZmFsc2U7Ci0KLSAgICBleHBsaWNpdCBEaWRDcmVhdGVXZWJQcm9jZXNz
Q29ubmVjdGlvbihjb25zdCBJUEM6Ok1hY2hQb3J0JiBjb25uZWN0aW9uSWRlbnRpZmllcikKLSAg
ICAgICAgOiBtX2FyZ3VtZW50cyhjb25uZWN0aW9uSWRlbnRpZmllcikKLSAgICB7Ci0gICAgfQot
Ci0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsKLSAgICAgICAg
cmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1bWVudHMgbV9h
cmd1bWVudHM7Ci19OwotI2VuZGlmCi0KLSNpZiBQTEFURk9STShNQUMpCi1jbGFzcyBJbnRlcnBy
ZXRLZXlFdmVudCB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPHVpbnQzMl90PiBB
cmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1l
KCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6U3Ry
aW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiSW50ZXJw
cmV0S2V5RXZlbnQiKTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IHRydWU7Ci0K
LSAgICB1c2luZyBSZXBseSA9IHN0ZDo6dHVwbGU8VmVjdG9yPFdlYkNvcmU6OktleXByZXNzQ29t
bWFuZD4mPjsKLSAgICB1c2luZyBSZXBseUFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8VmVjdG9yPFdl
YkNvcmU6OktleXByZXNzQ29tbWFuZD4+OwotICAgIGV4cGxpY2l0IEludGVycHJldEtleUV2ZW50
KHVpbnQzMl90IHR5cGUpCi0gICAgICAgIDogbV9hcmd1bWVudHModHlwZSkKLSAgICB7Ci0gICAg
fQotCi0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsKLSAgICAg
ICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1bWVudHMg
bV9hcmd1bWVudHM7Ci19OwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoREVQUkVDQVRFRF9GRUFUVVJF
KQotY2xhc3MgRGVwcmVjYXRlZE9wZXJhdGlvbiB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6
OnR1cGxlPGNvbnN0IElQQzo6RHVtbXlUeXBlJj4gQXJndW1lbnRzOwotCi0gICAgc3RhdGljIElQ
Qzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZl
ck5hbWUoKTsgfQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1
cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIkRlcHJlY2F0ZWRPcGVyYXRpb24iKTsgfQotICAgIHN0
YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOwotCi0gICAgZXhwbGljaXQgRGVwcmVjYXRl
ZE9wZXJhdGlvbihjb25zdCBJUEM6OkR1bW15VHlwZSYgZHVtbXkpCi0gICAgICAgIDogbV9hcmd1
bWVudHMoZHVtbXkpCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1l
bnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0K
LXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLSNlbmRpZgotCi0jaWYg
RU5BQkxFKEVYUEVSSU1FTlRBTF9GRUFUVVJFKQotY2xhc3MgRXhwZXJpbWVudGFsT3BlcmF0aW9u
IHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8Y29uc3QgSVBDOjpEdW1teVR5cGUm
PiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJO
YW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6
U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiRXhw
ZXJpbWVudGFsT3BlcmF0aW9uIik7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBm
YWxzZTsKLQotICAgIGV4cGxpY2l0IEV4cGVyaW1lbnRhbE9wZXJhdGlvbihjb25zdCBJUEM6OkR1
bW15VHlwZSYgZHVtbXkpCi0gICAgICAgIDogbV9hcmd1bWVudHMoZHVtbXkpCi0gICAgewotICAg
IH0KLQotICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1lbnRz
IG1fYXJndW1lbnRzOwotfTsKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBXZWJQYWdlCi19IC8v
IG5hbWVzcGFjZSBNZXNzYWdlcwotCi0jZW5kaWYgLy8gKEVOQUJMRShXRUJLSVQyKSAmJiAoTkVT
VEVEX01BU1RFUl9DT05ESVRJT04gfHwgTUFTVEVSX09SICYmIE1BU1RFUl9BTkQpKQoKUHJvcGVy
dHkgY2hhbmdlcyBvbjogU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9MZWdhY3lNZXNzYWdl
cy1leHBlY3RlZC5oCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMSArMCww
ICMjCi1uYXRpdmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogU291cmNl
L1dlYktpdC9TY3JpcHRzL3dlYmtpdC9MZWdhY3lNZXNzYWdlc1JlcGxpZXMtZXhwZWN0ZWQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L0xlZ2FjeU1lc3NhZ2Vz
UmVwbGllcy1leHBlY3RlZC5oCShyZXZpc2lvbiAyNjEwMzMpCisrKyBTb3VyY2UvV2ViS2l0L1Nj
cmlwdHMvd2Via2l0L0xlZ2FjeU1lc3NhZ2VzUmVwbGllcy1leHBlY3RlZC5oCShub25leGlzdGVu
dCkKQEAgLTEsNDMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMC0yMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycgQU5ECi0gKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IKLSAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSAqIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
Ci0gKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUgotICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSAqIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0j
aWYgKEVOQUJMRShXRUJLSVQyKSAmJiAoTkVTVEVEX01BU1RFUl9DT05ESVRJT04gfHwgTUFTVEVS
X09SICYmIE1BU1RFUl9BTkQpKQotCi0jaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgotI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+Ci0KLQotbmFtZXNwYWNlIE1lc3NhZ2VzIHsKLW5hbWVzcGFjZSBXZWJQ
YWdlIHsKLQotdXNpbmcgR2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25EZWxheWVkUmVwbHkgPSBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6Q29ubmVjdGlvbjo6SGFuZGxlJiBjb25u
ZWN0aW9uSGFuZGxlKT47Ci0KLXVzaW5nIFRlc3RNdWx0aXBsZUF0dHJpYnV0ZXNEZWxheWVkUmVw
bHkgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+OwotCi19IC8vIG5hbWVzcGFjZSBXZWJQYWdl
Ci19IC8vIG5hbWVzcGFjZSBNZXNzYWdlcwotCi0jZW5kaWYgLy8gKEVOQUJMRShXRUJLSVQyKSAm
JiAoTkVTVEVEX01BU1RFUl9DT05ESVRJT04gfHwgTUFTVEVSX09SICYmIE1BU1RFUl9BTkQpKQpJ
bmRleDogU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9NZXNzYWdlUmVjZWl2ZXItZXhwZWN0
ZWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvTWVzc2Fn
ZVJlY2VpdmVyLWV4cGVjdGVkLmNwcAkocmV2aXNpb24gMjYxMDMzKQorKysgU291cmNlL1dlYktp
dC9TY3JpcHRzL3dlYmtpdC9NZXNzYWdlUmVjZWl2ZXItZXhwZWN0ZWQuY3BwCShub25leGlzdGVu
dCkKQEAgLTEsMjAzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnIEFORAotICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SCi0gKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0gKiBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UgotICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0gKiBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmln
LmgiCi0KLSNpZiAoRU5BQkxFKFdFQktJVDIpICYmIChORVNURURfTUFTVEVSX0NPTkRJVElPTiB8
fCBNQVNURVJfT1IgJiYgTUFTVEVSX0FORCkpCi0KLSNpbmNsdWRlICJXZWJQYWdlLmgiCi0KLSNp
bmNsdWRlICJBcmd1bWVudENvZGVycy5oIgotI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKLSNpbmNs
dWRlICJEZWNvZGVyLmgiCi0jaWYgRU5BQkxFKERFUFJFQ0FURURfRkVBVFVSRSkgfHwgRU5BQkxF
KEVYUEVSSU1FTlRBTF9GRUFUVVJFKQotI2luY2x1ZGUgIkR1bW15VHlwZS5oIgotI2VuZGlmCi0j
aW5jbHVkZSAiSGFuZGxlTWVzc2FnZS5oIgotI2lmIFBMQVRGT1JNKE1BQykKLSNpbmNsdWRlICJN
YWNoUG9ydC5oIgotI2VuZGlmCi0jaW5jbHVkZSAiUGx1Z2luLmgiCi0jaW5jbHVkZSAiV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmgiCi0jaWYgKEVOQUJMRShUT1VDSF9FVkVOVFMpICYmIChORVNURURf
TUVTU0FHRV9DT05ESVRJT04gJiYgU09NRV9PVEhFUl9NRVNTQUdFX0NPTkRJVElPTikpIHx8IChF
TkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiAoTkVTVEVEX01FU1NBR0VfQ09ORElUSU9OIHx8IFNPTUVf
T1RIRVJfTUVTU0FHRV9DT05ESVRJT04pKQotI2luY2x1ZGUgIldlYkV2ZW50LmgiCi0jZW5kaWYK
LSNpbmNsdWRlICJXZWJQYWdlTWVzc2FnZXMuaCIKLSNpbmNsdWRlICJXZWJQcmVmZXJlbmNlc1N0
b3JlLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0xheWVyLmg+Ci0jaWYgUExBVEZPUk0o
TUFDKQotI2luY2x1ZGUgPFdlYkNvcmUvS2V5Ym9hcmRFdmVudC5oPgotI2VuZGlmCi0jaW5jbHVk
ZSA8V2ViQ29yZS9QbHVnaW5EYXRhLmg+Ci0jaW5jbHVkZSA8dXRpbGl0eT4KLSNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIE1lc3NhZ2VzIHsKLQotbmFtZXNwYWNlIFdlYlBh
Z2UgewotCi12b2lkIEdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpzZW5kKHN0ZDo6dW5pcXVl
X3B0cjxJUEM6OkVuY29kZXI+JiYgZW5jb2RlciwgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9u
LCBjb25zdCBJUEM6OkNvbm5lY3Rpb246OkhhbmRsZSYgY29ubmVjdGlvbkhhbmRsZSkKLXsKLSAg
ICAqZW5jb2RlciA8PCBjb25uZWN0aW9uSGFuZGxlOwotICAgIGNvbm5lY3Rpb24uc2VuZFN5bmNS
ZXBseShXVEZNb3ZlKGVuY29kZXIpKTsKLX0KLQotdm9pZCBUZXN0TXVsdGlwbGVBdHRyaWJ1dGVz
OjpzZW5kKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiYgZW5jb2RlciwgSVBDOjpDb25u
ZWN0aW9uJiBjb25uZWN0aW9uKQotewotICAgIGNvbm5lY3Rpb24uc2VuZFN5bmNSZXBseShXVEZN
b3ZlKGVuY29kZXIpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViUGFnZQotCi19IC8vIG5hbWVz
cGFjZSBNZXNzYWdlcwotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotdm9pZCBXZWJQYWdlOjpkaWRS
ZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYg
ZGVjb2RlcikKLXsKLSAgICBhdXRvIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKTsKLSAg
ICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkVVJM
OjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdl
OjpMb2FkVVJMPihkZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6bG9hZFVSTCk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0jaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLSAgICBpZiAoZGVjb2Rlci5t
ZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkU29tZXRoaW5nOjpuYW1lKCkp
IHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkU29t
ZXRoaW5nPihkZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6bG9hZFNvbWV0aGluZyk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0jZW5kaWYKLSNpZiAoRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgKE5F
U1RFRF9NRVNTQUdFX0NPTkRJVElPTiB8fCBTT01FX09USEVSX01FU1NBR0VfQ09ORElUSU9OKSkK
LSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpUb3Vj
aEV2ZW50OjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpX
ZWJQYWdlOjpUb3VjaEV2ZW50PihkZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6dG91Y2hFdmVudCk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYKLSNpZiAoRU5BQkxFKFRPVUNIX0VWRU5U
UykgJiYgKE5FU1RFRF9NRVNTQUdFX0NPTkRJVElPTiAmJiBTT01FX09USEVSX01FU1NBR0VfQ09O
RElUSU9OKSkKLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQ
YWdlOjpBZGRFdmVudDo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNz
YWdlczo6V2ViUGFnZTo6QWRkRXZlbnQ+KGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjphZGRFdmVu
dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYKLSNpZiBFTkFCTEUoVE9VQ0hfRVZF
TlRTKQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6
OkxvYWRTb21ldGhpbmdFbHNlOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdl
PE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkU29tZXRoaW5nRWxzZT4oZGVjb2RlciwgdGhpcywgJldl
YlBhZ2U6OmxvYWRTb21ldGhpbmdFbHNlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNlbmRp
ZgotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OkRp
ZFJlY2VpdmVQb2xpY3lEZWNpc2lvbjo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVz
c2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uPihkZWNvZGVy
LCB0aGlzLCAmV2ViUGFnZTo6ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpX
ZWJQYWdlOjpDbG9zZTo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNz
YWdlczo6V2ViUGFnZTo6Q2xvc2U+KGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjpjbG9zZSk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBN
ZXNzYWdlczo6V2ViUGFnZTo6UHJlZmVyZW5jZXNEaWRDaGFuZ2U6Om5hbWUoKSkgewotICAgICAg
ICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OlByZWZlcmVuY2VzRGlkQ2hh
bmdlPihkZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6cHJlZmVyZW5jZXNEaWRDaGFuZ2UpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVz
c2FnZXM6OldlYlBhZ2U6OlNlbmREb3VibGVBbmRGbG9hdDo6bmFtZSgpKSB7Ci0gICAgICAgIElQ
Qzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6U2VuZERvdWJsZUFuZEZsb2F0Pihk
ZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6c2VuZERvdWJsZUFuZEZsb2F0KTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpX
ZWJQYWdlOjpTZW5kSW50czo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxN
ZXNzYWdlczo6V2ViUGFnZTo6U2VuZEludHM+KGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjpzZW5k
SW50cyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5h
bWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6VGVzdFBhcmFtZXRlckF0dHJpYnV0ZXM6Om5hbWUo
KSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RQ
YXJhbWV0ZXJBdHRyaWJ1dGVzPihkZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6dGVzdFBhcmFtZXRl
ckF0dHJpYnV0ZXMpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChkZWNvZGVyLm1l
c3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OlRlbXBsYXRlVGVzdDo6bmFtZSgpKSB7
Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6VGVtcGxhdGVU
ZXN0PihkZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6dGVtcGxhdGVUZXN0KTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpX
ZWJQYWdlOjpTZXRWaWRlb0xheWVySUQ6Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1l
c3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OlNldFZpZGVvTGF5ZXJJRD4oZGVjb2RlciwgdGhpcywg
JldlYlBhZ2U6OnNldFZpZGVvTGF5ZXJJRCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jaWYg
UExBVEZPUk0oTUFDKQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6
OldlYlBhZ2U6OkRpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uOjpuYW1lKCkpIHsKLSAgICAg
ICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRDcmVhdGVXZWJQcm9j
ZXNzQ29ubmVjdGlvbj4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OmRpZENyZWF0ZVdlYlByb2Nl
c3NDb25uZWN0aW9uKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNlbmRpZgotI2lmIEVOQUJM
RShERVBSRUNBVEVEX0ZFQVRVUkUpCi0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBN
ZXNzYWdlczo6V2ViUGFnZTo6RGVwcmVjYXRlZE9wZXJhdGlvbjo6bmFtZSgpKSB7Ci0gICAgICAg
IElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6RGVwcmVjYXRlZE9wZXJhdGlv
bj4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OmRlcHJlY2F0ZWRPcGVyYXRpb24pOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotI2VuZGlmCi0jaWYgRU5BQkxFKEVYUEVSSU1FTlRBTF9GRUFUVVJF
KQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OkV4
cGVyaW1lbnRhbE9wZXJhdGlvbjo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2Fn
ZTxNZXNzYWdlczo6V2ViUGFnZTo6RXhwZXJpbWVudGFsT3BlcmF0aW9uPihkZWNvZGVyLCB0aGlz
LCAmV2ViUGFnZTo6ZXhwZXJpbWVudGFsT3BlcmF0aW9uKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLSNlbmRpZgotICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsKLSAgICBVTlVTRURfUEFS
QU0oZGVjb2Rlcik7Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLXZvaWQgV2ViUGFn
ZTo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBD
OjpEZWNvZGVyJiBkZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYgcmVwbHlF
bmNvZGVyKQotewotICAgIGF1dG8gcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpOwotICAg
IGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OkNyZWF0ZVBs
dWdpbjo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2Vi
UGFnZTo6Q3JlYXRlUGx1Z2luPihkZWNvZGVyLCAqcmVwbHlFbmNvZGVyLCB0aGlzLCAmV2ViUGFn
ZTo6Y3JlYXRlUGx1Z2luKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoZGVjb2Rl
ci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpSdW5KYXZhU2NyaXB0QWxlcnQ6
Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6
OlJ1bkphdmFTY3JpcHRBbGVydD4oZGVjb2RlciwgKnJlcGx5RW5jb2RlciwgdGhpcywgJldlYlBh
Z2U6OnJ1bkphdmFTY3JpcHRBbGVydCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYg
KGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6R2V0UGx1Z2luczo6
bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6
R2V0UGx1Z2lucz4oZGVjb2RlciwgKnJlcGx5RW5jb2RlciwgdGhpcywgJldlYlBhZ2U6OmdldFBs
dWdpbnMpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VO
YW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpu
YW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlU3luY2hyb25vdXM8TWVzc2FnZXM6
OldlYlBhZ2U6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uPihjb25uZWN0aW9uLCBkZWNvZGVy
LCByZXBseUVuY29kZXIsIHRoaXMsICZXZWJQYWdlOjpnZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlv
bik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUo
KSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6VGVzdE11bHRpcGxlQXR0cmlidXRlczo6bmFtZSgpKSB7
Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZVN5bmNocm9ub3VzV2FudHNDb25uZWN0aW9uPE1l
c3NhZ2VzOjpXZWJQYWdlOjpUZXN0TXVsdGlwbGVBdHRyaWJ1dGVzPihjb25uZWN0aW9uLCBkZWNv
ZGVyLCByZXBseUVuY29kZXIsIHRoaXMsICZXZWJQYWdlOjp0ZXN0TXVsdGlwbGVBdHRyaWJ1dGVz
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNpZiBQTEFURk9STShNQUMpCi0gICAgaWYgKGRl
Y29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6SW50ZXJwcmV0S2V5RXZl
bnQ6Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBh
Z2U6OkludGVycHJldEtleUV2ZW50PihkZWNvZGVyLCAqcmVwbHlFbmNvZGVyLCB0aGlzLCAmV2Vi
UGFnZTo6aW50ZXJwcmV0S2V5RXZlbnQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlm
Ci0gICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pOwotICAgIFVOVVNFRF9QQVJBTShkZWNvZGVy
KTsKLSAgICBVTlVTRURfUEFSQU0ocmVwbHlFbmNvZGVyKTsKLSAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLQotI2VuZGlmIC8vIChFTkFCTEUo
V0VCS0lUMikgJiYgKE5FU1RFRF9NQVNURVJfQ09ORElUSU9OIHx8IE1BU1RFUl9PUiAmJiBNQVNU
RVJfQU5EKSkKClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJr
aXQvTWVzc2FnZVJlY2VpdmVyLWV4cGVjdGVkLmNwcApfX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjpl
b2wtc3R5bGUKIyMgLTEgKzAsMCAjIwotbmF0aXZlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJv
cGVydHkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvTWVzc2FnZVJlY2VpdmVy
U3VwZXJjbGFzcy1leHBlY3RlZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TY3Jp
cHRzL3dlYmtpdC9NZXNzYWdlUmVjZWl2ZXJTdXBlcmNsYXNzLWV4cGVjdGVkLmNwcAkocmV2aXNp
b24gMjYxMDMzKQorKysgU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9NZXNzYWdlUmVjZWl2
ZXJTdXBlcmNsYXNzLWV4cGVjdGVkLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDE4OSArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKLSAqIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgot
ICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTAotICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSAqIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSCi0gKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaW5jbHVkZSAiV2Vi
UGFnZS5oIgotCi0jaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKLSNpbmNsdWRlICJEZWNvZGVy
LmgiCi0jaW5jbHVkZSAiSGFuZGxlTWVzc2FnZS5oIgotI2luY2x1ZGUgIlRlc3RDbGFzc05hbWUu
aCIKLSNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQotI2luY2x1ZGUgIlRlc3RUd29TdGF0ZUVudW0u
aCIKLSNlbmRpZgotI2luY2x1ZGUgIldlYlBhZ2VNZXNzYWdlcy5oIgotI2luY2x1ZGUgPHd0Zi9P
cHRpb25hbC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2Ug
TWVzc2FnZXMgewotCi1uYW1lc3BhY2UgV2ViUGFnZSB7Ci0KLSNpZiBFTkFCTEUoVEVTVF9GRUFU
VVJFKQotCi12b2lkIFRlc3RBc3luY01lc3NhZ2U6OmNhbGxSZXBseShJUEM6OkRlY29kZXImIGRl
Y29kZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0X3QmJik+JiYgY29tcGxldGlvbkhh
bmRsZXIpCi17Ci0gICAgT3B0aW9uYWw8dWludDY0X3Q+IHJlc3VsdDsKLSAgICBkZWNvZGVyID4+
IHJlc3VsdDsKLSAgICBpZiAoIXJlc3VsdCkgewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICAgICAgY2FuY2VsUmVwbHkoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoKnJlc3Vs
dCkpOwotfQotCi12b2lkIFRlc3RBc3luY01lc3NhZ2U6OmNhbmNlbFJlcGx5KENvbXBsZXRpb25I
YW5kbGVyPHZvaWQodWludDY0X3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCi17Ci0gICAgY29t
cGxldGlvbkhhbmRsZXIoSVBDOjpBc3luY1JlcGx5RXJyb3I8dWludDY0X3Q+OjpjcmVhdGUoKSk7
Ci19Ci0KLXZvaWQgVGVzdEFzeW5jTWVzc2FnZTo6c2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpF
bmNvZGVyPiYmIGVuY29kZXIsIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgdWludDY0X3Qg
cmVzdWx0KQotewotICAgICplbmNvZGVyIDw8IHJlc3VsdDsKLSAgICBjb25uZWN0aW9uLnNlbmRT
eW5jUmVwbHkoV1RGTW92ZShlbmNvZGVyKSk7Ci19Ci0KLSNlbmRpZgotCi0jaWYgRU5BQkxFKFRF
U1RfRkVBVFVSRSkKLQotdm9pZCBUZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJndW1lbnRzOjpjYWxs
UmVwbHkoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCi17Ci0gICAgY29tcGxldGlvbkhhbmRsZXIoKTsKLX0KLQotdm9p
ZCBUZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJndW1lbnRzOjpjYW5jZWxSZXBseShDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCi17Ci0gICAgY29tcGxldGlvbkhh
bmRsZXIoKTsKLX0KLQotdm9pZCBUZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJndW1lbnRzOjpzZW5k
KHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiYgZW5jb2RlciwgSVBDOjpDb25uZWN0aW9u
JiBjb25uZWN0aW9uKQotewotICAgIGNvbm5lY3Rpb24uc2VuZFN5bmNSZXBseShXVEZNb3ZlKGVu
Y29kZXIpKTsKLX0KLQotI2VuZGlmCi0KLSNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQotCi12b2lk
IFRlc3RBc3luY01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHM6OmNhbGxSZXBseShJUEM6OkRl
Y29kZXImIGRlY29kZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCYmLCB1aW50NjRfdCYm
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAgICBPcHRpb25hbDxib29sPiBmbGFnOwotICAg
IGRlY29kZXIgPj4gZmxhZzsKLSAgICBpZiAoIWZsYWcpIHsKLSAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0gICAgICAgIGNhbmNlbFJlcGx5KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBPcHRpb25hbDx1aW50NjRfdD4gdmFsdWU7
Ci0gICAgZGVjb2RlciA+PiB2YWx1ZTsKLSAgICBpZiAoIXZhbHVlKSB7Ci0gICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICBjYW5jZWxSZXBseShXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY29tcGxldGlvbkhhbmRsZXIo
V1RGTW92ZSgqZmxhZyksIFdURk1vdmUoKnZhbHVlKSk7Ci19Ci0KLXZvaWQgVGVzdEFzeW5jTWVz
c2FnZVdpdGhNdWx0aXBsZUFyZ3VtZW50czo6Y2FuY2VsUmVwbHkoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sJiYsIHVpbnQ2NF90JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIGNv
bXBsZXRpb25IYW5kbGVyKElQQzo6QXN5bmNSZXBseUVycm9yPGJvb2w+OjpjcmVhdGUoKSwgSVBD
OjpBc3luY1JlcGx5RXJyb3I8dWludDY0X3Q+OjpjcmVhdGUoKSk7Ci19Ci0KLXZvaWQgVGVzdEFz
eW5jTWVzc2FnZVdpdGhNdWx0aXBsZUFyZ3VtZW50czo6c2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBD
OjpFbmNvZGVyPiYmIGVuY29kZXIsIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgYm9vbCBm
bGFnLCB1aW50NjRfdCB2YWx1ZSkKLXsKLSAgICAqZW5jb2RlciA8PCBmbGFnOwotICAgICplbmNv
ZGVyIDw8IHZhbHVlOwotICAgIGNvbm5lY3Rpb24uc2VuZFN5bmNSZXBseShXVEZNb3ZlKGVuY29k
ZXIpKTsKLX0KLQotI2VuZGlmCi0KLXZvaWQgVGVzdFN5bmNNZXNzYWdlOjpzZW5kKHN0ZDo6dW5p
cXVlX3B0cjxJUEM6OkVuY29kZXI+JiYgZW5jb2RlciwgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0
aW9uLCB1aW50OF90IHJlcGx5KQotewotICAgICplbmNvZGVyIDw8IHJlcGx5OwotICAgIGNvbm5l
Y3Rpb24uc2VuZFN5bmNSZXBseShXVEZNb3ZlKGVuY29kZXIpKTsKLX0KLQotdm9pZCBUZXN0U3lu
Y2hyb25vdXNNZXNzYWdlOjpzZW5kKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiYgZW5j
b2RlciwgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBPcHRpb25hbDxXZWJLaXQ6
OlRlc3RDbGFzc05hbWU+JiBvcHRpb25hbFJlcGx5KQotewotICAgICplbmNvZGVyIDw8IG9wdGlv
bmFsUmVwbHk7Ci0gICAgY29ubmVjdGlvbi5zZW5kU3luY1JlcGx5KFdURk1vdmUoZW5jb2Rlcikp
OwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJQYWdlCi0KLX0gLy8gbmFtZXNwYWNlIE1lc3NhZ2Vz
Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi12b2lkIFdlYlBhZ2U6OmRpZFJlY2VpdmVNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQotewot
ICAgIGF1dG8gcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpOwotICAgIGlmIChkZWNvZGVy
Lm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRVUkw6Om5hbWUoKSkgewot
ICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRVUkw+KGRl
Y29kZXIsIHRoaXMsICZXZWJQYWdlOjpsb2FkVVJMKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LSNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkg
PT0gTWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RBc3luY01lc3NhZ2U6Om5hbWUoKSkgewotICAgICAg
ICBJUEM6OmhhbmRsZU1lc3NhZ2VBc3luYzxNZXNzYWdlczo6V2ViUGFnZTo6VGVzdEFzeW5jTWVz
c2FnZT4oY29ubmVjdGlvbiwgZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OnRlc3RBc3luY01lc3Nh
Z2UpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlmCi0jaWYgRU5BQkxFKFRFU1RfRkVB
VFVSRSkKLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdl
OjpUZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJndW1lbnRzOjpuYW1lKCkpIHsKLSAgICAgICAgSVBD
OjpoYW5kbGVNZXNzYWdlQXN5bmM8TWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RBc3luY01lc3NhZ2VX
aXRoTm9Bcmd1bWVudHM+KGNvbm5lY3Rpb24sIGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjp0ZXN0
QXN5bmNNZXNzYWdlV2l0aE5vQXJndW1lbnRzKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNl
bmRpZgotI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCi0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5h
bWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6VGVzdEFzeW5jTWVzc2FnZVdpdGhNdWx0aXBsZUFy
Z3VtZW50czo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZUFzeW5jPE1lc3Nh
Z2VzOjpXZWJQYWdlOjpUZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1lbnRzPihjb25u
ZWN0aW9uLCBkZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6dGVzdEFzeW5jTWVzc2FnZVdpdGhNdWx0
aXBsZUFyZ3VtZW50cyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYKLSAgICBXZWJQ
YWdlQmFzZTo6ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7Ci19Ci0KLXZv
aWQgV2ViUGFnZTo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVj
dGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVy
PiYgcmVwbHlFbmNvZGVyKQotewotICAgIGF1dG8gcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpOwotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6
OlRlc3RTeW5jTWVzc2FnZTo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZVN5
bmNocm9ub3VzPE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0U3luY01lc3NhZ2U+KGNvbm5lY3Rpb24s
IGRlY29kZXIsIHJlcGx5RW5jb2RlciwgdGhpcywgJldlYlBhZ2U6OnRlc3RTeW5jTWVzc2FnZSk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9
PSBNZXNzYWdlczo6V2ViUGFnZTo6VGVzdFN5bmNocm9ub3VzTWVzc2FnZTo6bmFtZSgpKSB7Ci0g
ICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZVN5bmNocm9ub3VzPE1lc3NhZ2VzOjpXZWJQYWdlOjpU
ZXN0U3luY2hyb25vdXNNZXNzYWdlPihjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIs
IHRoaXMsICZXZWJQYWdlOjp0ZXN0U3luY2hyb25vdXNNZXNzYWdlKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLSAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7Ci0gICAgVU5VU0VEX1BBUkFN
KGRlY29kZXIpOwotICAgIFVOVVNFRF9QQVJBTShyZXBseUVuY29kZXIpOwotICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQoKUHJvcGVydHkgY2hh
bmdlcyBvbjogU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9NZXNzYWdlUmVjZWl2ZXJTdXBl
cmNsYXNzLWV4cGVjdGVkLmNwcApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjplb2wtc3R5bGUKIyMg
LTEgKzAsMCAjIwotbmF0aXZlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvTWVzc2FnZXMtZXhwZWN0ZWQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L01lc3NhZ2VzLWV4cGVjdGVkLmgJ
KHJldmlzaW9uIDI2MTAzMykKKysrIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvTWVzc2Fn
ZXMtZXhwZWN0ZWQuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDU3MCArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDEwLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKLSAqIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgotICogQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTAotICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0gKiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLAotICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiAoRU5BQkxFKFdFQktJVDIpICYmIChORVNURURf
TUFTVEVSX0NPTkRJVElPTiB8fCBNQVNURVJfT1IgJiYgTUFTVEVSX0FORCkpCi0KLSNpbmNsdWRl
ICJBcmd1bWVudENvZGVycy5oIgotI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKLSNpbmNsdWRlICJQ
bHVnaW4uaCIKLSNpbmNsdWRlICJXZWJQYWdlTWVzc2FnZXNSZXBsaWVzLmgiCi0jaW5jbHVkZSA8
V2ViQ29yZS9HcmFwaGljc0xheWVyLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9LZXlib2FyZEV2ZW50
Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9QbHVnaW5EYXRhLmg+Ci0jaW5jbHVkZSA8dXRpbGl0eT4K
LSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5j
bHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgSVBDIHsKLWNs
YXNzIER1bW15VHlwZTsKLWNsYXNzIE1hY2hQb3J0OwotfQotCi1uYW1lc3BhY2UgV2ViS2l0IHsK
LWNsYXNzIFdlYlByZWZlcmVuY2VzU3RvcmU7Ci1jbGFzcyBXZWJUb3VjaEV2ZW50OwotfQotCi1u
YW1lc3BhY2UgTWVzc2FnZXMgewotbmFtZXNwYWNlIFdlYlBhZ2UgewotCi1zdGF0aWMgaW5saW5l
IElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUoKQotewotICAgIHJldHVy
biBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiV2ViUGFnZSIpOwotfQotCi1jbGFzcyBMb2FkVVJMIHsK
LXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8Y29uc3QgU3RyaW5nJj4gQXJndW1lbnRz
OwotCi0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0
dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsgfQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVy
ZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIkxvYWRVUkwiKTsgfQot
ICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOwotCi0gICAgZXhwbGljaXQgTG9h
ZFVSTChjb25zdCBTdHJpbmcmIHVybCkKLSAgICAgICAgOiBtX2FyZ3VtZW50cyh1cmwpCi0gICAg
ewotICAgIH0KLQotICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKLSAgICB7
Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJn
dW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLQotI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCi1jbGFz
cyBMb2FkU29tZXRoaW5nIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8Y29uc3Qg
U3RyaW5nJj4gQXJndW1lbnRzOwotCi0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJl
Y2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsgfQotICAgIHN0YXRp
YyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVu
Y2UoIkxvYWRTb21ldGhpbmciKTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZh
bHNlOwotCi0gICAgZXhwbGljaXQgTG9hZFNvbWV0aGluZyhjb25zdCBTdHJpbmcmIHVybCkKLSAg
ICAgICAgOiBtX2FyZ3VtZW50cyh1cmwpCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0IEFyZ3Vt
ZW50cyYgYXJndW1lbnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50
czsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLSNl
bmRpZgotCi0jaWYgKEVOQUJMRShUT1VDSF9FVkVOVFMpICYmIChORVNURURfTUVTU0FHRV9DT05E
SVRJT04gfHwgU09NRV9PVEhFUl9NRVNTQUdFX0NPTkRJVElPTikpCi1jbGFzcyBUb3VjaEV2ZW50
IHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8Y29uc3QgV2ViS2l0OjpXZWJUb3Vj
aEV2ZW50Jj4gQXJndW1lbnRzOwotCi0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJl
Y2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsgfQotICAgIHN0YXRp
YyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVu
Y2UoIlRvdWNoRXZlbnQiKTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNl
OwotCi0gICAgZXhwbGljaXQgVG91Y2hFdmVudChjb25zdCBXZWJLaXQ6OldlYlRvdWNoRXZlbnQm
IGV2ZW50KQotICAgICAgICA6IG1fYXJndW1lbnRzKGV2ZW50KQotICAgIHsKLSAgICB9Ci0KLSAg
ICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1
cm4gbV9hcmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3Vt
ZW50czsKLX07Ci0jZW5kaWYKLQotI2lmIChFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiAoTkVTVEVE
X01FU1NBR0VfQ09ORElUSU9OICYmIFNPTUVfT1RIRVJfTUVTU0FHRV9DT05ESVRJT04pKQotY2xh
c3MgQWRkRXZlbnQgewotcHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBXZWJL
aXQ6OldlYlRvdWNoRXZlbnQmPiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdS
ZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9
Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0
cmluZ1JlZmVyZW5jZSgiQWRkRXZlbnQiKTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3lu
YyA9IGZhbHNlOwotCi0gICAgZXhwbGljaXQgQWRkRXZlbnQoY29uc3QgV2ViS2l0OjpXZWJUb3Vj
aEV2ZW50JiBldmVudCkKLSAgICAgICAgOiBtX2FyZ3VtZW50cyhldmVudCkKLSAgICB7Ci0gICAg
fQotCi0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsKLSAgICAg
ICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1bWVudHMg
bV9hcmd1bWVudHM7Ci19OwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQotY2xh
c3MgTG9hZFNvbWV0aGluZ0Vsc2UgewotcHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxj
b25zdCBTdHJpbmcmPiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVu
Y2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAg
c3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1Jl
ZmVyZW5jZSgiTG9hZFNvbWV0aGluZ0Vsc2UiKTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlz
U3luYyA9IGZhbHNlOwotCi0gICAgZXhwbGljaXQgTG9hZFNvbWV0aGluZ0Vsc2UoY29uc3QgU3Ry
aW5nJiB1cmwpCi0gICAgICAgIDogbV9hcmd1bWVudHModXJsKQotICAgIHsKLSAgICB9Ci0KLSAg
ICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1
cm4gbV9hcmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3Vt
ZW50czsKLX07Ci0jZW5kaWYKLQotY2xhc3MgRGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uIHsKLXB1
YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8dWludDY0X3QsIHVpbnQ2NF90LCB1aW50MzJf
dD4gQXJndW1lbnRzOwotCi0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVy
TmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsgfQotICAgIHN0YXRpYyBJUEM6
OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIkRp
ZFJlY2VpdmVQb2xpY3lEZWNpc2lvbiIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5j
ID0gZmFsc2U7Ci0KLSAgICBEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24odWludDY0X3QgZnJhbWVJ
RCwgdWludDY0X3QgbGlzdGVuZXJJRCwgdWludDMyX3QgcG9saWN5QWN0aW9uKQotICAgICAgICA6
IG1fYXJndW1lbnRzKGZyYW1lSUQsIGxpc3RlbmVySUQsIHBvbGljeUFjdGlvbikKLSAgICB7Ci0g
ICAgfQotCi0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsKLSAg
ICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1bWVu
dHMgbV9hcmd1bWVudHM7Ci19OwotCi1jbGFzcyBDbG9zZSB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRl
ZiBzdGQ6OnR1cGxlPD4gQXJndW1lbnRzOwotCi0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJl
bmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsgfQotICAg
IHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpTdHJpbmdS
ZWZlcmVuY2UoIkNsb3NlIik7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxz
ZTsKLQotICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1lbnRz
IG1fYXJndW1lbnRzOwotfTsKLQotY2xhc3MgUHJlZmVyZW5jZXNEaWRDaGFuZ2UgewotcHVibGlj
OgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3Rv
cmUmPiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2
ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGljIElQ
Qzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgi
UHJlZmVyZW5jZXNEaWRDaGFuZ2UiKTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9
IGZhbHNlOwotCi0gICAgZXhwbGljaXQgUHJlZmVyZW5jZXNEaWRDaGFuZ2UoY29uc3QgV2ViS2l0
OjpXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSkKLSAgICAgICAgOiBtX2FyZ3VtZW50cyhzdG9y
ZSkKLSAgICB7Ci0gICAgfQotCi0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25z
dAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToK
LSAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19OwotCi1jbGFzcyBTZW5kRG91YmxlQW5kRmxv
YXQgewotcHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxkb3VibGUsIGZsb2F0PiBBcmd1
bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkg
eyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6U3RyaW5n
UmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiU2VuZERvdWJs
ZUFuZEZsb2F0Iik7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKLQot
ICAgIFNlbmREb3VibGVBbmRGbG9hdChkb3VibGUgZCwgZmxvYXQgZikKLSAgICAgICAgOiBtX2Fy
Z3VtZW50cyhkLCBmKQotICAgIHsKLSAgICB9Ci0KLSAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3Vt
ZW50cygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7Ci0gICAgfQot
Ci1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKLX07Ci0KLWNsYXNzIFNlbmRJ
bnRzIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8Y29uc3QgVmVjdG9yPHVpbnQ2
NF90PiYsIGNvbnN0IFZlY3RvcjxWZWN0b3I8dWludDY0X3Q+PiY+IEFyZ3VtZW50czsKLQotICAg
IHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNz
YWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFt
ZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJTZW5kSW50cyIpOyB9Ci0gICAgc3Rh
dGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7Ci0KLSAgICBTZW5kSW50cyhjb25zdCBWZWN0
b3I8dWludDY0X3Q+JiBpbnRzLCBjb25zdCBWZWN0b3I8VmVjdG9yPHVpbnQ2NF90Pj4mIGludFZl
Y3RvcnMpCi0gICAgICAgIDogbV9hcmd1bWVudHMoaW50cywgaW50VmVjdG9ycykKLSAgICB7Ci0g
ICAgfQotCi0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsKLSAg
ICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1bWVu
dHMgbV9hcmd1bWVudHM7Ci19OwotCi1jbGFzcyBDcmVhdGVQbHVnaW4gewotcHVibGljOgotICAg
IHR5cGVkZWYgc3RkOjp0dXBsZTx1aW50NjRfdCwgY29uc3QgV2ViS2l0OjpQbHVnaW46OlBhcmFt
ZXRlcnMmPiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVj
ZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGlj
IElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5j
ZSgiQ3JlYXRlUGx1Z2luIik7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSB0cnVl
OwotCi0gICAgdXNpbmcgUmVwbHkgPSBzdGQ6OnR1cGxlPGJvb2wmPjsKLSAgICB1c2luZyBSZXBs
eUFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8Ym9vbD47Ci0gICAgQ3JlYXRlUGx1Z2luKHVpbnQ2NF90
IHBsdWdpbkluc3RhbmNlSUQsIGNvbnN0IFdlYktpdDo6UGx1Z2luOjpQYXJhbWV0ZXJzJiBwYXJh
bWV0ZXJzKQotICAgICAgICA6IG1fYXJndW1lbnRzKHBsdWdpbkluc3RhbmNlSUQsIHBhcmFtZXRl
cnMpCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29u
c3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0KLXByaXZhdGU6
Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLQotY2xhc3MgUnVuSmF2YVNjcmlwdEFs
ZXJ0IHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8dWludDY0X3QsIGNvbnN0IFN0
cmluZyY+IEFyZ3VtZW50czsKLQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNl
aXZlck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMg
SVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNl
KCJSdW5KYXZhU2NyaXB0QWxlcnQiKTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9
IHRydWU7Ci0KLSAgICB1c2luZyBSZXBseSA9IHN0ZDo6dHVwbGU8PjsKLSAgICB1c2luZyBSZXBs
eUFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8PjsKLSAgICBSdW5KYXZhU2NyaXB0QWxlcnQodWludDY0
X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQotICAgICAgICA6IG1fYXJndW1lbnRz
KGZyYW1lSUQsIG1lc3NhZ2UpCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0IEFyZ3VtZW50cyYg
YXJndW1lbnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAg
ICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLQotY2xhc3Mg
R2V0UGx1Z2lucyB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGJvb2w+IEFyZ3Vt
ZW50czsKLQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7
IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdS
ZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJHZXRQbHVnaW5z
Iik7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSB0cnVlOwotCi0gICAgdXNpbmcg
UmVwbHkgPSBzdGQ6OnR1cGxlPFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiY+OwotICAgIHVz
aW5nIFJlcGx5QXJndW1lbnRzID0gc3RkOjp0dXBsZTxWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5m
bz4+OwotICAgIGV4cGxpY2l0IEdldFBsdWdpbnMoYm9vbCByZWZyZXNoKQotICAgICAgICA6IG1f
YXJndW1lbnRzKHJlZnJlc2gpCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0IEFyZ3VtZW50cyYg
YXJndW1lbnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAg
ICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLQotY2xhc3Mg
R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24gewotcHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0
dXBsZTxjb25zdCBTdHJpbmcmPiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdS
ZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9
Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0
cmluZ1JlZmVyZW5jZSgiR2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24iKTsgfQotICAgIHN0YXRp
YyBjb25zdCBib29sIGlzU3luYyA9IHRydWU7Ci0KLSAgICB1c2luZyBEZWxheWVkUmVwbHkgPSBH
ZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbkRlbGF5ZWRSZXBseTsKLSAgICBzdGF0aWMgdm9pZCBz
ZW5kKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiYsIElQQzo6Q29ubmVjdGlvbiYsIGNv
bnN0IElQQzo6Q29ubmVjdGlvbjo6SGFuZGxlJiBjb25uZWN0aW9uSGFuZGxlKTsKLSAgICB1c2lu
ZyBSZXBseSA9IHN0ZDo6dHVwbGU8SVBDOjpDb25uZWN0aW9uOjpIYW5kbGUmPjsKLSAgICB1c2lu
ZyBSZXBseUFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8SVBDOjpDb25uZWN0aW9uOjpIYW5kbGU+Owot
ICAgIGV4cGxpY2l0IEdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKGNvbnN0IFN0cmluZyYgcGx1
Z2luUGF0aCkKLSAgICAgICAgOiBtX2FyZ3VtZW50cyhwbHVnaW5QYXRoKQotICAgIHsKLSAgICB9
Ci0KLSAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewotICAgICAg
ICByZXR1cm4gbV9hcmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBt
X2FyZ3VtZW50czsKLX07Ci0KLWNsYXNzIFRlc3RNdWx0aXBsZUF0dHJpYnV0ZXMgewotcHVibGlj
OgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTw+IEFyZ3VtZW50czsKLQotICAgIHN0YXRpYyBJUEM6
OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJO
YW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJu
IElQQzo6U3RyaW5nUmVmZXJlbmNlKCJUZXN0TXVsdGlwbGVBdHRyaWJ1dGVzIik7IH0KLSAgICBz
dGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSB0cnVlOwotCi0gICAgdXNpbmcgRGVsYXllZFJlcGx5
ID0gVGVzdE11bHRpcGxlQXR0cmlidXRlc0RlbGF5ZWRSZXBseTsKLSAgICBzdGF0aWMgdm9pZCBz
ZW5kKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiYsIElQQzo6Q29ubmVjdGlvbiYpOwot
ICAgIHVzaW5nIFJlcGx5ID0gc3RkOjp0dXBsZTw+OwotICAgIHVzaW5nIFJlcGx5QXJndW1lbnRz
ID0gc3RkOjp0dXBsZTw+OwotICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QK
LSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0KLXByaXZhdGU6Ci0g
ICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLQotY2xhc3MgVGVzdFBhcmFtZXRlckF0dHJp
YnV0ZXMgewotcHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTx1aW50NjRfdCwgZG91Ymxl
LCBkb3VibGU+IEFyZ3VtZW50czsKLQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBy
ZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0
aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJl
bmNlKCJUZXN0UGFyYW1ldGVyQXR0cmlidXRlcyIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wg
aXNTeW5jID0gZmFsc2U7Ci0KLSAgICBUZXN0UGFyYW1ldGVyQXR0cmlidXRlcyh1aW50NjRfdCBm
b28sIGRvdWJsZSBiYXIsIGRvdWJsZSBiYXopCi0gICAgICAgIDogbV9hcmd1bWVudHMoZm9vLCBi
YXIsIGJheikKLSAgICB7Ci0gICAgfQotCi0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMo
KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJp
dmF0ZToKLSAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19OwotCi1jbGFzcyBUZW1wbGF0ZVRl
c3QgewotcHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBIYXNoTWFwPFN0cmlu
Zywgc3RkOjpwYWlyPFN0cmluZywgdWludDY0X3Q+PiY+IEFyZ3VtZW50czsKLQotICAgIHN0YXRp
YyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVj
ZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsg
cmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJUZW1wbGF0ZVRlc3QiKTsgfQotICAgIHN0YXRp
YyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOwotCi0gICAgZXhwbGljaXQgVGVtcGxhdGVUZXN0
KGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBzdGQ6OnBhaXI8U3RyaW5nLCB1aW50NjRfdD4+JiBhKQot
ICAgICAgICA6IG1fYXJndW1lbnRzKGEpCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0IEFyZ3Vt
ZW50cyYgYXJndW1lbnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50
czsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLQot
Y2xhc3MgU2V0VmlkZW9MYXllcklEIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8
Y29uc3QgV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklEJj4gQXJndW1lbnRz
OwotCi0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0
dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsgfQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVy
ZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIlNldFZpZGVvTGF5ZXJJ
RCIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7Ci0KLSAgICBleHBs
aWNpdCBTZXRWaWRlb0xheWVySUQoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6UGxhdGZv
cm1MYXllcklEJiB2aWRlb0xheWVySUQpCi0gICAgICAgIDogbV9hcmd1bWVudHModmlkZW9MYXll
cklEKQotICAgIHsKLSAgICB9Ci0KLSAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNv
bnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRl
OgotICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKLX07Ci0KLSNpZiBQTEFURk9STShNQUMpCi1j
bGFzcyBEaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbiB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRl
ZiBzdGQ6OnR1cGxlPGNvbnN0IElQQzo6TWFjaFBvcnQmPiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0
aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJl
Y2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7
IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiRGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rp
b24iKTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOwotCi0gICAgZXhw
bGljaXQgRGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oY29uc3QgSVBDOjpNYWNoUG9ydCYg
Y29ubmVjdGlvbklkZW50aWZpZXIpCi0gICAgICAgIDogbV9hcmd1bWVudHMoY29ubmVjdGlvbklk
ZW50aWZpZXIpCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRz
KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0KLXBy
aXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLSNlbmRpZgotCi0jaWYgUExB
VEZPUk0oTUFDKQotY2xhc3MgSW50ZXJwcmV0S2V5RXZlbnQgewotcHVibGljOgotICAgIHR5cGVk
ZWYgc3RkOjp0dXBsZTx1aW50MzJfdD4gQXJndW1lbnRzOwotCi0gICAgc3RhdGljIElQQzo6U3Ry
aW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUo
KTsgfQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBD
OjpTdHJpbmdSZWZlcmVuY2UoIkludGVycHJldEtleUV2ZW50Iik7IH0KLSAgICBzdGF0aWMgY29u
c3QgYm9vbCBpc1N5bmMgPSB0cnVlOwotCi0gICAgdXNpbmcgUmVwbHkgPSBzdGQ6OnR1cGxlPFZl
Y3RvcjxXZWJDb3JlOjpLZXlwcmVzc0NvbW1hbmQ+Jj47Ci0gICAgdXNpbmcgUmVwbHlBcmd1bWVu
dHMgPSBzdGQ6OnR1cGxlPFZlY3RvcjxXZWJDb3JlOjpLZXlwcmVzc0NvbW1hbmQ+PjsKLSAgICBl
eHBsaWNpdCBJbnRlcnByZXRLZXlFdmVudCh1aW50MzJfdCB0eXBlKQotICAgICAgICA6IG1fYXJn
dW1lbnRzKHR5cGUpCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1l
bnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0K
LXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLSNlbmRpZgotCi0jaWYg
RU5BQkxFKERFUFJFQ0FURURfRkVBVFVSRSkKLWNsYXNzIERlcHJlY2F0ZWRPcGVyYXRpb24gewot
cHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBJUEM6OkR1bW15VHlwZSY+IEFy
Z3VtZW50czsKLQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUo
KSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJp
bmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJEZXByZWNh
dGVkT3BlcmF0aW9uIik7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsK
LQotICAgIGV4cGxpY2l0IERlcHJlY2F0ZWRPcGVyYXRpb24oY29uc3QgSVBDOjpEdW1teVR5cGUm
IGR1bW15KQotICAgICAgICA6IG1fYXJndW1lbnRzKGR1bW15KQotICAgIHsKLSAgICB9Ci0KLSAg
ICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1
cm4gbV9hcmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3Vt
ZW50czsKLX07Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShFWFBFUklNRU5UQUxfRkVBVFVSRSkKLWNs
YXNzIEV4cGVyaW1lbnRhbE9wZXJhdGlvbiB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1
cGxlPGNvbnN0IElQQzo6RHVtbXlUeXBlJj4gQXJndW1lbnRzOwotCi0gICAgc3RhdGljIElQQzo6
U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5h
bWUoKTsgfQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4g
SVBDOjpTdHJpbmdSZWZlcmVuY2UoIkV4cGVyaW1lbnRhbE9wZXJhdGlvbiIpOyB9Ci0gICAgc3Rh
dGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7Ci0KLSAgICBleHBsaWNpdCBFeHBlcmltZW50
YWxPcGVyYXRpb24oY29uc3QgSVBDOjpEdW1teVR5cGUmIGR1bW15KQotICAgICAgICA6IG1fYXJn
dW1lbnRzKGR1bW15KQotICAgIHsKLSAgICB9Ci0KLSAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3Vt
ZW50cygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7Ci0gICAgfQot
Ci1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKLX07Ci0jZW5kaWYKLQotfSAv
LyBuYW1lc3BhY2UgV2ViUGFnZQotfSAvLyBuYW1lc3BhY2UgTWVzc2FnZXMKLQotI2VuZGlmIC8v
IChFTkFCTEUoV0VCS0lUMikgJiYgKE5FU1RFRF9NQVNURVJfQ09ORElUSU9OIHx8IE1BU1RFUl9P
UiAmJiBNQVNURVJfQU5EKSkKClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9XZWJLaXQvU2Ny
aXB0cy93ZWJraXQvTWVzc2FnZXMtZXhwZWN0ZWQuaApfX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjpl
b2wtc3R5bGUKIyMgLTEgKzAsMCAjIwotbmF0aXZlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJv
cGVydHkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvTWVzc2FnZXNSZXBsaWVz
LWV4cGVjdGVkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9N
ZXNzYWdlc1JlcGxpZXMtZXhwZWN0ZWQuaAkocmV2aXNpb24gMjYxMDMzKQorKysgU291cmNlL1dl
YktpdC9TY3JpcHRzL3dlYmtpdC9NZXNzYWdlc1JlcGxpZXMtZXhwZWN0ZWQuaAkobm9uZXhpc3Rl
bnQpCkBAIC0xLDQzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnIEFORAotICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SCi0gKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0gKiBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UgotICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0gKiBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQot
I2lmIChFTkFCTEUoV0VCS0lUMikgJiYgKE5FU1RFRF9NQVNURVJfQ09ORElUSU9OIHx8IE1BU1RF
Ul9PUiAmJiBNQVNURVJfQU5EKSkKLQotI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKLSNpbmNsdWRl
IDx3dGYvRm9yd2FyZC5oPgotCi0KLW5hbWVzcGFjZSBNZXNzYWdlcyB7Ci1uYW1lc3BhY2UgV2Vi
UGFnZSB7Ci0KLXVzaW5nIEdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uRGVsYXllZFJlcGx5ID0g
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkNvbm5lY3Rpb246OkhhbmRsZSYgY29u
bmVjdGlvbkhhbmRsZSk+OwotCi11c2luZyBUZXN0TXVsdGlwbGVBdHRyaWJ1dGVzRGVsYXllZFJl
cGx5ID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPjsKLQotfSAvLyBuYW1lc3BhY2UgV2ViUGFn
ZQotfSAvLyBuYW1lc3BhY2UgTWVzc2FnZXMKLQotI2VuZGlmIC8vIChFTkFCTEUoV0VCS0lUMikg
JiYgKE5FU1RFRF9NQVNURVJfQ09ORElUSU9OIHx8IE1BU1RFUl9PUiAmJiBNQVNURVJfQU5EKSkK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvTWVzc2FnZXNSZXBsaWVzU3VwZXJj
bGFzc1JlcGxpZXMtZXhwZWN0ZWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1Njcmlw
dHMvd2Via2l0L01lc3NhZ2VzUmVwbGllc1N1cGVyY2xhc3NSZXBsaWVzLWV4cGVjdGVkLmgJKHJl
dmlzaW9uIDI2MTAzMykKKysrIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvTWVzc2FnZXNS
ZXBsaWVzU3VwZXJjbGFzc1JlcGxpZXMtZXhwZWN0ZWQuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDUy
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAot
ICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SCi0gKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0gKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgotICogU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIKLSAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0gKiBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIlRl
c3RDbGFzc05hbWUuaCIKLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9P
cHRpb25hbC5oPgotCi0KLW5hbWVzcGFjZSBNZXNzYWdlcyB7Ci1uYW1lc3BhY2UgV2ViUGFnZSB7
Ci0KLSNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQotdXNpbmcgVGVzdEFzeW5jTWVzc2FnZUFzeW5j
UmVwbHkgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90IHJlc3VsdCk+OwotI2VuZGlm
Ci0KLSNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQotdXNpbmcgVGVzdEFzeW5jTWVzc2FnZVdpdGhO
b0FyZ3VtZW50c0FzeW5jUmVwbHkgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+OwotI2VuZGlm
Ci0KLSNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQotdXNpbmcgVGVzdEFzeW5jTWVzc2FnZVdpdGhN
dWx0aXBsZUFyZ3VtZW50c0FzeW5jUmVwbHkgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wg
ZmxhZywgdWludDY0X3QgdmFsdWUpPjsKLSNlbmRpZgotCi11c2luZyBUZXN0U3luY01lc3NhZ2VE
ZWxheWVkUmVwbHkgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ4X3QgcmVwbHkpPjsKLQot
dXNpbmcgVGVzdFN5bmNocm9ub3VzTWVzc2FnZURlbGF5ZWRSZXBseSA9IENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoY29uc3QgT3B0aW9uYWw8V2ViS2l0OjpUZXN0Q2xhc3NOYW1lPiYgb3B0aW9uYWxS
ZXBseSk+OwotCi19IC8vIG5hbWVzcGFjZSBXZWJQYWdlCi19IC8vIG5hbWVzcGFjZSBNZXNzYWdl
cwpJbmRleDogU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9NZXNzYWdlc1N1cGVyY2xhc3Mt
ZXhwZWN0ZWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L01l
c3NhZ2VzU3VwZXJjbGFzcy1leHBlY3RlZC5oCShyZXZpc2lvbiAyNjEwMzMpCisrKyBTb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvd2Via2l0L01lc3NhZ2VzU3VwZXJjbGFzcy1leHBlY3RlZC5oCShub25l
eGlzdGVudCkKQEAgLTEsMjA2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnIEFORAotICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0gKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0gKiBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUgotICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0g
KiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9u
Y2UKLQotI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCi0jaW5jbHVkZSAiQ29ubmVjdGlvbi5o
IgotI2luY2x1ZGUgIlRlc3RDbGFzc05hbWUuaCIKLSNpbmNsdWRlICJXZWJQYWdlTWVzc2FnZXNS
ZXBsaWVzLmgiCi0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvT3B0aW9u
YWwuaD4KLSNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci1lbnVtIGNsYXNzIFRl
c3RUd29TdGF0ZUVudW0gOiBib29sOwotfQotCi1uYW1lc3BhY2UgTWVzc2FnZXMgewotbmFtZXNw
YWNlIFdlYlBhZ2UgewotCi1zdGF0aWMgaW5saW5lIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3Nh
Z2VSZWNlaXZlck5hbWUoKQotewotICAgIHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiV2Vi
UGFnZSIpOwotfQotCi1jbGFzcyBMb2FkVVJMIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6
dHVwbGU8Y29uc3QgU3RyaW5nJj4gQXJndW1lbnRzOwotCi0gICAgc3RhdGljIElQQzo6U3RyaW5n
UmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsg
fQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpT
dHJpbmdSZWZlcmVuY2UoIkxvYWRVUkwiKTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3lu
YyA9IGZhbHNlOwotCi0gICAgZXhwbGljaXQgTG9hZFVSTChjb25zdCBTdHJpbmcmIHVybCkKLSAg
ICAgICAgOiBtX2FyZ3VtZW50cyh1cmwpCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0IEFyZ3Vt
ZW50cyYgYXJndW1lbnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50
czsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLQot
I2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCi1jbGFzcyBUZXN0QXN5bmNNZXNzYWdlIHsKLXB1Ymxp
YzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8V2ViS2l0OjpUZXN0VHdvU3RhdGVFbnVtPiBBcmd1
bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkg
eyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6U3RyaW5n
UmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiVGVzdEFzeW5j
TWVzc2FnZSIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7Ci0KLSAg
ICBzdGF0aWMgdm9pZCBjYWxsUmVwbHkoSVBDOjpEZWNvZGVyJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCh1aW50NjRfdCYmKT4mJik7Ci0gICAgc3RhdGljIHZvaWQgY2FuY2VsUmVwbHkoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCYmKT4mJik7Ci0gICAgc3RhdGljIElQQzo6U3RyaW5n
UmVmZXJlbmNlIGFzeW5jTWVzc2FnZVJlcGx5TmFtZSgpIHsgcmV0dXJuIHsgIlRlc3RBc3luY01l
c3NhZ2VSZXBseSIgfTsgfQotICAgIHVzaW5nIEFzeW5jUmVwbHkgPSBUZXN0QXN5bmNNZXNzYWdl
QXN5bmNSZXBseTsKLSAgICBzdGF0aWMgdm9pZCBzZW5kKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVu
Y29kZXI+JiYsIElQQzo6Q29ubmVjdGlvbiYsIHVpbnQ2NF90IHJlc3VsdCk7Ci0gICAgdXNpbmcg
UmVwbHkgPSBzdGQ6OnR1cGxlPHVpbnQ2NF90Jj47Ci0gICAgdXNpbmcgUmVwbHlBcmd1bWVudHMg
PSBzdGQ6OnR1cGxlPHVpbnQ2NF90PjsKLSAgICBleHBsaWNpdCBUZXN0QXN5bmNNZXNzYWdlKFdl
YktpdDo6VGVzdFR3b1N0YXRlRW51bSB0d29TdGF0ZUVudW0pCi0gICAgICAgIDogbV9hcmd1bWVu
dHModHdvU3RhdGVFbnVtKQotICAgIHsKLSAgICB9Ci0KLSAgICBjb25zdCBBcmd1bWVudHMmIGFy
Z3VtZW50cygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7Ci0gICAg
fQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKLX07Ci0jZW5kaWYKLQot
I2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCi1jbGFzcyBUZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJn
dW1lbnRzIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8PiBBcmd1bWVudHM7Ci0K
LSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4g
bWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNl
IG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiVGVzdEFzeW5jTWVzc2FnZVdp
dGhOb0FyZ3VtZW50cyIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7
Ci0KLSAgICBzdGF0aWMgdm9pZCBjYWxsUmVwbHkoSVBDOjpEZWNvZGVyJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKLSAgICBzdGF0aWMgdm9pZCBjYW5jZWxSZXBseShDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBhc3lu
Y01lc3NhZ2VSZXBseU5hbWUoKSB7IHJldHVybiB7ICJUZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJn
dW1lbnRzUmVwbHkiIH07IH0KLSAgICB1c2luZyBBc3luY1JlcGx5ID0gVGVzdEFzeW5jTWVzc2Fn
ZVdpdGhOb0FyZ3VtZW50c0FzeW5jUmVwbHk7Ci0gICAgc3RhdGljIHZvaWQgc2VuZChzdGQ6OnVu
aXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYmLCBJUEM6OkNvbm5lY3Rpb24mKTsKLSAgICB1c2luZyBS
ZXBseSA9IHN0ZDo6dHVwbGU8PjsKLSAgICB1c2luZyBSZXBseUFyZ3VtZW50cyA9IHN0ZDo6dHVw
bGU8PjsKLSAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewotICAg
ICAgICByZXR1cm4gbV9hcmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50
cyBtX2FyZ3VtZW50czsKLX07Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCi1j
bGFzcyBUZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1lbnRzIHsKLXB1YmxpYzoKLSAg
ICB0eXBlZGVmIHN0ZDo6dHVwbGU8PiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJp
bmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgp
OyB9Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6
OlN0cmluZ1JlZmVyZW5jZSgiVGVzdEFzeW5jTWVzc2FnZVdpdGhNdWx0aXBsZUFyZ3VtZW50cyIp
OyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7Ci0KLSAgICBzdGF0aWMg
dm9pZCBjYWxsUmVwbHkoSVBDOjpEZWNvZGVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
JiYsIHVpbnQ2NF90JiYpPiYmKTsKLSAgICBzdGF0aWMgdm9pZCBjYW5jZWxSZXBseShDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wmJiwgdWludDY0X3QmJik+JiYpOwotICAgIHN0YXRpYyBJUEM6
OlN0cmluZ1JlZmVyZW5jZSBhc3luY01lc3NhZ2VSZXBseU5hbWUoKSB7IHJldHVybiB7ICJUZXN0
QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1lbnRzUmVwbHkiIH07IH0KLSAgICB1c2luZyBB
c3luY1JlcGx5ID0gVGVzdEFzeW5jTWVzc2FnZVdpdGhNdWx0aXBsZUFyZ3VtZW50c0FzeW5jUmVw
bHk7Ci0gICAgc3RhdGljIHZvaWQgc2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYm
LCBJUEM6OkNvbm5lY3Rpb24mLCBib29sIGZsYWcsIHVpbnQ2NF90IHZhbHVlKTsKLSAgICB1c2lu
ZyBSZXBseSA9IHN0ZDo6dHVwbGU8Ym9vbCYsIHVpbnQ2NF90Jj47Ci0gICAgdXNpbmcgUmVwbHlB
cmd1bWVudHMgPSBzdGQ6OnR1cGxlPGJvb2wsIHVpbnQ2NF90PjsKLSAgICBjb25zdCBBcmd1bWVu
dHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7
Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKLX07Ci0jZW5k
aWYKLQotY2xhc3MgVGVzdFN5bmNNZXNzYWdlIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6
dHVwbGU8dWludDMyX3Q+IEFyZ3VtZW50czsKLQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVy
ZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAg
ICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5n
UmVmZXJlbmNlKCJUZXN0U3luY01lc3NhZ2UiKTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlz
U3luYyA9IHRydWU7Ci0KLSAgICB1c2luZyBEZWxheWVkUmVwbHkgPSBUZXN0U3luY01lc3NhZ2VE
ZWxheWVkUmVwbHk7Ci0gICAgc3RhdGljIHZvaWQgc2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpF
bmNvZGVyPiYmLCBJUEM6OkNvbm5lY3Rpb24mLCB1aW50OF90IHJlcGx5KTsKLSAgICB1c2luZyBS
ZXBseSA9IHN0ZDo6dHVwbGU8dWludDhfdCY+OwotICAgIHVzaW5nIFJlcGx5QXJndW1lbnRzID0g
c3RkOjp0dXBsZTx1aW50OF90PjsKLSAgICBleHBsaWNpdCBUZXN0U3luY01lc3NhZ2UodWludDMy
X3QgcGFyYW0pCi0gICAgICAgIDogbV9hcmd1bWVudHMocGFyYW0pCi0gICAgewotICAgIH0KLQot
ICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJn
dW1lbnRzOwotfTsKLQotY2xhc3MgVGVzdFN5bmNocm9ub3VzTWVzc2FnZSB7Ci1wdWJsaWM6Ci0g
ICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGJvb2w+IEFyZ3VtZW50czsKLQotICAgIHN0YXRpYyBJUEM6
OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJO
YW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJu
IElQQzo6U3RyaW5nUmVmZXJlbmNlKCJUZXN0U3luY2hyb25vdXNNZXNzYWdlIik7IH0KLSAgICBz
dGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSB0cnVlOwotCi0gICAgdXNpbmcgRGVsYXllZFJlcGx5
ID0gVGVzdFN5bmNocm9ub3VzTWVzc2FnZURlbGF5ZWRSZXBseTsKLSAgICBzdGF0aWMgdm9pZCBz
ZW5kKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiYsIElQQzo6Q29ubmVjdGlvbiYsIGNv
bnN0IE9wdGlvbmFsPFdlYktpdDo6VGVzdENsYXNzTmFtZT4mIG9wdGlvbmFsUmVwbHkpOwotICAg
IHVzaW5nIFJlcGx5ID0gc3RkOjp0dXBsZTxPcHRpb25hbDxXZWJLaXQ6OlRlc3RDbGFzc05hbWU+
Jj47Ci0gICAgdXNpbmcgUmVwbHlBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPE9wdGlvbmFsPFdlYktp
dDo6VGVzdENsYXNzTmFtZT4+OwotICAgIGV4cGxpY2l0IFRlc3RTeW5jaHJvbm91c01lc3NhZ2Uo
Ym9vbCB2YWx1ZSkKLSAgICAgICAgOiBtX2FyZ3VtZW50cyh2YWx1ZSkKLSAgICB7Ci0gICAgfQot
Ci0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsKLSAgICAgICAg
cmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1bWVudHMgbV9h
cmd1bWVudHM7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJQYWdlCi19IC8vIG5hbWVzcGFjZSBN
ZXNzYWdlcwoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtp
dC9NZXNzYWdlc1N1cGVyY2xhc3MtZXhwZWN0ZWQuaApfX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjpl
b2wtc3R5bGUKIyMgLTEgKzAsMCAjIwotbmF0aXZlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJv
cGVydHkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQkocmV2
aXNpb24gMjYxMDMzKQorKysgU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5w
eQkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQCBTWU5DSFJPTk9VU19BVFRSSUJVVEUg
PSAnU3luY2hyb25vdXMnCiBBU1lOQ19BVFRSSUJVVEUgPSAnQXN5bmMnCiAKIF9saWNlbnNlX2hl
YWRlciA9ICIiIi8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEz
NCw3ICsxMzQsNyBAQCBkZWYgbWVzc2FnZV90b19yZXBseV9mb3J3YXJkX2RlY2xhcmF0aW9uCiAg
ICAgcmV0dXJuIHN1cnJvdW5kX2luX2NvbmRpdGlvbignJy5qb2luKHJlc3VsdCksIG1lc3NhZ2Uu
Y29uZGl0aW9uKQogCiAKLWRlZiBtZXNzYWdlX3RvX3N0cnVjdF9kZWNsYXJhdGlvbihtZXNzYWdl
KToKK2RlZiBtZXNzYWdlX3RvX3N0cnVjdF9kZWNsYXJhdGlvbihyZWNlaXZlciwgbWVzc2FnZSk6
CiAgICAgcmVzdWx0ID0gW10KICAgICBmdW5jdGlvbl9wYXJhbWV0ZXJzID0gWyhmdW5jdGlvbl9w
YXJhbWV0ZXJfdHlwZSh4LnR5cGUsIHgua2luZCksIHgubmFtZSkgZm9yIHggaW4gbWVzc2FnZS5w
YXJhbWV0ZXJzXQogCkBAIC0xNDIsOCArMTQyLDcgQEAgZGVmIG1lc3NhZ2VfdG9fc3RydWN0X2Rl
Y2xhcmF0aW9uKG1lc3NhZwogICAgIHJlc3VsdC5hcHBlbmQoJ3B1YmxpYzpcbicpCiAgICAgcmVz
dWx0LmFwcGVuZCgnICAgIHR5cGVkZWYgJXMgQXJndW1lbnRzO1xuJyAlIGFyZ3VtZW50c190eXBl
KG1lc3NhZ2UpKQogICAgIHJlc3VsdC5hcHBlbmQoJ1xuJykKLSAgICByZXN1bHQuYXBwZW5kKCcg
ICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1l
c3NhZ2VSZWNlaXZlck5hbWUoKTsgfVxuJykKLSAgICByZXN1bHQuYXBwZW5kKCcgICAgc3RhdGlj
IElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5j
ZSgiJXMiKTsgfVxuJyAlIG1lc3NhZ2UubmFtZSkKKyAgICByZXN1bHQuYXBwZW5kKCcgICAgc3Rh
dGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OiVz
XyVzOyB9XG4nICUgKHJlY2VpdmVyLm5hbWUsIG1lc3NhZ2UubmFtZSkpCiAgICAgcmVzdWx0LmFw
cGVuZCgnICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9ICVzO1xuJyAlICgnZmFsc2UnLCAn
dHJ1ZScpW21lc3NhZ2UucmVwbHlfcGFyYW1ldGVycyAhPSBOb25lIGFuZCBub3QgbWVzc2FnZS5o
YXNfYXR0cmlidXRlKEFTWU5DX0FUVFJJQlVURSldKQogICAgIHJlc3VsdC5hcHBlbmQoJ1xuJykK
ICAgICBpZiBtZXNzYWdlLnJlcGx5X3BhcmFtZXRlcnMgIT0gTm9uZToKQEAgLTE1Myw3ICsxNTIs
NyBAQCBkZWYgbWVzc2FnZV90b19zdHJ1Y3RfZGVjbGFyYXRpb24obWVzc2FnCiAgICAgICAgICAg
ICBtb3ZlX3BhcmFtZXRlcnMgPSAnLCAnLmpvaW4oW21vdmVfdHlwZSh4LnR5cGUpIGZvciB4IGlu
IG1lc3NhZ2UucmVwbHlfcGFyYW1ldGVyc10pCiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcg
ICAgc3RhdGljIHZvaWQgY2FsbFJlcGx5KElQQzo6RGVjb2RlciYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoJXMpPiYmKTtcbicgJSBtb3ZlX3BhcmFtZXRlcnMpCiAgICAgICAgICAgICByZXN1bHQu
YXBwZW5kKCcgICAgc3RhdGljIHZvaWQgY2FuY2VsUmVwbHkoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCglcyk+JiYpO1xuJyAlIG1vdmVfcGFyYW1ldGVycykKLSAgICAgICAgICAgIHJlc3VsdC5hcHBl
bmQoJyAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgYXN5bmNNZXNzYWdlUmVwbHlOYW1l
KCkgeyByZXR1cm4geyAiJXNSZXBseSIgfTsgfVxuJyAlIG1lc3NhZ2UubmFtZSkKKyAgICAgICAg
ICAgIHJlc3VsdC5hcHBlbmQoJyAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBhc3luY01lc3Nh
Z2VSZXBseU5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjolc18lc1JlcGx5OyB9XG4n
ICUgKHJlY2VpdmVyLm5hbWUsIG1lc3NhZ2UubmFtZSkpCiAgICAgICAgICAgICByZXN1bHQuYXBw
ZW5kKCcgICAgdXNpbmcgQXN5bmNSZXBseSA9ICVzQXN5bmNSZXBseTtcbicgJSBtZXNzYWdlLm5h
bWUpCiAgICAgICAgIGVsaWYgbWVzc2FnZS5oYXNfYXR0cmlidXRlKFNZTkNIUk9OT1VTX0FUVFJJ
QlVURSk6CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgdXNpbmcgRGVsYXllZFJlcGx5
ID0gJXNEZWxheWVkUmVwbHk7XG4nICUgbWVzc2FnZS5uYW1lKQpAQCAtMjc3LDggKzI3Niw5IEBA
IGRlZiBmb3J3YXJkX2RlY2xhcmF0aW9uc19hbmRfaGVhZGVycyhyZWMKIAogICAgIGhlYWRlcnMg
PSBzZXQoWwogICAgICAgICAnIkFyZ3VtZW50Q29kZXJzLmgiJywKLSAgICAgICAgJzx3dGYvRm9y
d2FyZC5oPicsCiAgICAgICAgICciQ29ubmVjdGlvbi5oIicsCisgICAgICAgICciTWVzc2FnZU5h
bWVzLmgiJywKKyAgICAgICAgJzx3dGYvRm9yd2FyZC5oPicsCiAgICAgICAgICc8d3RmL1RocmVh
ZFNhZmVSZWZDb3VudGVkLmg+JywKICAgICAgICAgJyIlc01lc3NhZ2VzUmVwbGllcy5oIicgJSBy
ZWNlaXZlci5uYW1lLAogICAgIF0pCkBAIC0zMzUsNiArMzM1LDcgQEAgZGVmIGZvcndhcmRfZGVj
bGFyYXRpb25zX2FuZF9oZWFkZXJzX2ZvcgogCiAgICAgaGVhZGVycyA9IHNldChbCiAgICAgICAg
ICc8d3RmL0ZvcndhcmQuaD4nLAorICAgICAgICAnIk1lc3NhZ2VOYW1lcy5oIicsCiAgICAgXSkK
IAogICAgIG5vbl90ZW1wbGF0ZV93dGZfdHlwZXMgPSBmcm96ZW5zZXQoWwpAQCAtNDQwLDEyICs0
NDEsMTIgQEAgZGVmIGdlbmVyYXRlX21lc3NhZ2VzX2hlYWRlcihyZWNlaXZlcik6CiAKICAgICBy
ZXN1bHQuYXBwZW5kKCduYW1lc3BhY2UgTWVzc2FnZXMge1xubmFtZXNwYWNlICVzIHtcbicgJSBy
ZWNlaXZlci5uYW1lKQogICAgIHJlc3VsdC5hcHBlbmQoJ1xuJykKLSAgICByZXN1bHQuYXBwZW5k
KCdzdGF0aWMgaW5saW5lIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUo
KVxuJykKKyAgICByZXN1bHQuYXBwZW5kKCdzdGF0aWMgaW5saW5lIElQQzo6UmVjZWl2ZXJOYW1l
IG1lc3NhZ2VSZWNlaXZlck5hbWUoKVxuJykKICAgICByZXN1bHQuYXBwZW5kKCd7XG4nKQotICAg
IHJlc3VsdC5hcHBlbmQoJyAgICByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIiVzIik7XG4n
ICUgcmVjZWl2ZXIubmFtZSkKKyAgICByZXN1bHQuYXBwZW5kKCcgICAgcmV0dXJuIElQQzo6UmVj
ZWl2ZXJOYW1lOjolcztcbicgJSByZWNlaXZlci5uYW1lKQogICAgIHJlc3VsdC5hcHBlbmQoJ31c
bicpCiAgICAgcmVzdWx0LmFwcGVuZCgnXG4nKQotICAgIHJlc3VsdC5hcHBlbmQoJ1xuJy5qb2lu
KFttZXNzYWdlX3RvX3N0cnVjdF9kZWNsYXJhdGlvbih4KSBmb3IgeCBpbiByZWNlaXZlci5tZXNz
YWdlc10pKQorICAgIHJlc3VsdC5hcHBlbmQoJ1xuJy5qb2luKFttZXNzYWdlX3RvX3N0cnVjdF9k
ZWNsYXJhdGlvbihyZWNlaXZlciwgeCkgZm9yIHggaW4gcmVjZWl2ZXIubWVzc2FnZXNdKSkKICAg
ICByZXN1bHQuYXBwZW5kKCdcbicpCiAgICAgcmVzdWx0LmFwcGVuZCgnfSAvLyBuYW1lc3BhY2Ug
JXNcbn0gLy8gbmFtZXNwYWNlIE1lc3NhZ2VzXG4nICUgcmVjZWl2ZXIubmFtZSkKIApAQCAtODQ4
LDMgKzg0OSwxNzQgQEAgZGVmIGdlbmVyYXRlX21lc3NhZ2VfaGFuZGxlcihyZWNlaXZlcik6CiAg
ICAgICAgIHJlc3VsdC5hcHBlbmQoJ1xuI2VuZGlmIC8vICVzXG4nICUgcmVjZWl2ZXIuY29uZGl0
aW9uKQogCiAgICAgcmV0dXJuICcnLmpvaW4ocmVzdWx0KQorCisKK2RlZiBnZW5lcmF0ZV9tZXNz
YWdlX25hbWVzX2hlYWRlcihyZWNlaXZlcnMpOgorICAgIHJlc3VsdCA9IFtdCisgICAgcmVzdWx0
LmFwcGVuZChfbGljZW5zZV9oZWFkZXIpCisgICAgcmVzdWx0LmFwcGVuZCgnI3ByYWdtYSBvbmNl
XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJ1xuJykKKyAgICByZXN1bHQuYXBwZW5kKCcjaW5jbHVk
ZSA8d3RmL0VudW1UcmFpdHMuaD5cbicpCisgICAgcmVzdWx0LmFwcGVuZCgnXG4nKQorICAgIHJl
c3VsdC5hcHBlbmQoJ25hbWVzcGFjZSBJUEMge1xuJykKKyAgICByZXN1bHQuYXBwZW5kKCdcbicp
CisgICAgcmVzdWx0LmFwcGVuZCgnZW51bSBjbGFzcyBSZWNlaXZlck5hbWUgOiB1aW50OF90IHsn
KQorCisgICAgZW51bV92YWx1ZSA9IDEKKyAgICBmaXJzdF9yZWNlaXZlciA9IFRydWUKKyAgICBm
b3IgcmVjZWl2ZXIgaW4gcmVjZWl2ZXJzOgorICAgICAgICByZXN1bHQuYXBwZW5kKCdcbicpCisg
ICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICAnKQorICAgICAgICBpZiBub3QgZmlyc3RfcmVjZWl2
ZXI6CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcsICcpCisgICAgICAgIGZpcnN0X3JlY2Vp
dmVyID0gRmFsc2UKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgnJXMgPSAlZCcgJSAocmVjZWl2ZXIu
bmFtZSwgZW51bV92YWx1ZSkpCisgICAgICAgIGVudW1fdmFsdWUgPSBlbnVtX3ZhbHVlICsgMQor
ICAgIHJlc3VsdC5hcHBlbmQoJ1xuICAgICwgSVBDID0gJWQnICUgZW51bV92YWx1ZSkKKyAgICBl
bnVtX3ZhbHVlID0gZW51bV92YWx1ZSArIDEKKyAgICByZXN1bHQuYXBwZW5kKCdcbiAgICAsIEFz
eW5jUmVwbHkgPSAlZCcgJSBlbnVtX3ZhbHVlKQorICAgIGVudW1fdmFsdWUgPSBlbnVtX3ZhbHVl
ICsgMQorICAgIHJlc3VsdC5hcHBlbmQoJ1xuICAgICwgSW52YWxpZCA9ICVkJyAlIGVudW1fdmFs
dWUpCisgICAgcmVzdWx0LmFwcGVuZCgnXG59O1xuJykKKyAgICByZXN1bHQuYXBwZW5kKCdcbicp
CisgICAgcmVzdWx0LmFwcGVuZCgnZW51bSBjbGFzcyBNZXNzYWdlTmFtZSA6IHVpbnQxNl90IHsn
KQorCisgICAgZW51bV92YWx1ZSA9IDEKKyAgICBmaXJzdF9tZXNzYWdlID0gVHJ1ZQorICAgIGZv
ciByZWNlaXZlciBpbiByZWNlaXZlcnM6CisgICAgICAgIGZvciBtZXNzYWdlIGluIHJlY2VpdmVy
Lm1lc3NhZ2VzOgorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnXG4nKQorICAgICAgICAgICAg
aWYgbWVzc2FnZS5jb25kaXRpb246CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnI2lm
ICVzXG4nICUgbWVzc2FnZS5jb25kaXRpb24pCisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcg
ICAgJykKKyAgICAgICAgICAgIGlmIG5vdCBmaXJzdF9tZXNzYWdlOgorICAgICAgICAgICAgICAg
IHJlc3VsdC5hcHBlbmQoJywgJykKKyAgICAgICAgICAgIGZpcnN0X21lc3NhZ2UgPSBGYWxzZQor
ICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnJXNfJXMgPSAlZCcgJSAocmVjZWl2ZXIubmFtZSwg
bWVzc2FnZS5uYW1lLCBlbnVtX3ZhbHVlKSkKKyAgICAgICAgICAgIGVudW1fdmFsdWUgPSBlbnVt
X3ZhbHVlICsgMQorICAgICAgICAgICAgaWYgbWVzc2FnZS5oYXNfYXR0cmlidXRlKEFTWU5DX0FU
VFJJQlVURSk6CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnXG4gICAgLCAlc18lc1Jl
cGx5ID0gJWQnICUgKHJlY2VpdmVyLm5hbWUsIG1lc3NhZ2UubmFtZSwgZW51bV92YWx1ZSkpCisg
ICAgICAgICAgICAgICAgZW51bV92YWx1ZSA9IGVudW1fdmFsdWUgKyAxCisgICAgICAgICAgICBp
ZiBtZXNzYWdlLmNvbmRpdGlvbjoKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCdcbiNl
bmRpZicpCisgICAgcmVzdWx0LmFwcGVuZCgnXG4gICAgLCBXcmFwcGVkQXN5bmNNZXNzYWdlRm9y
VGVzdGluZyA9ICVkJyAlIGVudW1fdmFsdWUpCisgICAgZW51bV92YWx1ZSA9IGVudW1fdmFsdWUg
KyAxCisgICAgcmVzdWx0LmFwcGVuZCgnXG4gICAgLCBTeW5jTWVzc2FnZVJlcGx5ID0gJWQnICUg
ZW51bV92YWx1ZSkKKyAgICBlbnVtX3ZhbHVlID0gZW51bV92YWx1ZSArIDEKKyAgICByZXN1bHQu
YXBwZW5kKCdcbiAgICAsIEluaXRpYWxpemVDb25uZWN0aW9uID0gJWQnICUgZW51bV92YWx1ZSkK
KyAgICBlbnVtX3ZhbHVlID0gZW51bV92YWx1ZSArIDEKKyAgICByZXN1bHQuYXBwZW5kKCdcbiAg
ICAsIExlZ2FjeVNlc3Npb25TdGF0ZSA9ICVkJyAlIGVudW1fdmFsdWUpCisgICAgcmVzdWx0LmFw
cGVuZCgnXG59O1xuJykKKyAgICByZXN1bHQuYXBwZW5kKCdcbicpCisgICAgcmVzdWx0LmFwcGVu
ZCgnUmVjZWl2ZXJOYW1lIHJlY2VpdmVyTmFtZShNZXNzYWdlTmFtZSk7XG4nKQorICAgIHJlc3Vs
dC5hcHBlbmQoJ2NvbnN0IGNoYXIqIGRlc2NyaXB0aW9uKE1lc3NhZ2VOYW1lKTtcbicpCisgICAg
cmVzdWx0LmFwcGVuZCgnYm9vbCBpc1ZhbGlkTWVzc2FnZU5hbWUoTWVzc2FnZU5hbWUpO1xuJykK
KyAgICByZXN1bHQuYXBwZW5kKCdcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnfSAvLyBuYW1lc3Bh
Y2UgSVBDXG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJ1xuJykKKyAgICByZXN1bHQuYXBwZW5kKCdu
YW1lc3BhY2UgV1RGIHtcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnXG4nKQorICAgIHJlc3VsdC5h
cHBlbmQoJ3RlbXBsYXRlPD5cbicpCisgICAgcmVzdWx0LmFwcGVuZCgnY2xhc3MgSGFzQ3VzdG9t
SXNWYWxpZEVudW08SVBDOjpNZXNzYWdlTmFtZT4gOiBwdWJsaWMgc3RkOjp0cnVlX3R5cGUgeyB9
O1xuJykKKyAgICByZXN1bHQuYXBwZW5kKCd0ZW1wbGF0ZTx0eXBlbmFtZSBFLCB0eXBlbmFtZSBU
LCB0eXBlbmFtZSA9IHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19zYW1lPEUsIElQQzo6TWVzc2Fn
ZU5hbWU+Ojp2YWx1ZT4+XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJ2Jvb2wgaXNWYWxpZEVudW0o
VCBtZXNzYWdlTmFtZSlcbicpCisgICAgcmVzdWx0LmFwcGVuZCgne1xuJykKKyAgICByZXN1bHQu
YXBwZW5kKCcgICAgc3RhdGljX2Fzc2VydChzaXplb2YoVCkgPT0gc2l6ZW9mKElQQzo6TWVzc2Fn
ZU5hbWUpLCAiaXNWYWxpZEVudW08TWVzc2FnZU5hbWU+IHNob3VsZCBvbmx5IGJlIGNhbGxlZCB3
aXRoIDE2LWJpdCB0eXBlcyIpO1xuJykKKyAgICByZXN1bHQuYXBwZW5kKCcgICAgcmV0dXJuIElQ
Qzo6aXNWYWxpZE1lc3NhZ2VOYW1lKHN0YXRpY19jYXN0PElQQzo6TWVzc2FnZU5hbWU+KG1lc3Nh
Z2VOYW1lKSk7XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJ307XG4nKQorICAgIHJlc3VsdC5hcHBl
bmQoJ1xuJykKKyAgICByZXN1bHQuYXBwZW5kKCd9IC8vIG5hbWVzcGFjZSBXVEZcbicpCisgICAg
cmV0dXJuICcnLmpvaW4ocmVzdWx0KQorCisKK2RlZiBnZW5lcmF0ZV9tZXNzYWdlX25hbWVzX2lt
cGxlbWVudGF0aW9uKHJlY2VpdmVycyk6CisgICAgcmVzdWx0ID0gW10KKyAgICByZXN1bHQuYXBw
ZW5kKF9saWNlbnNlX2hlYWRlcikKKyAgICByZXN1bHQuYXBwZW5kKCcjaW5jbHVkZSAiY29uZmln
LmgiXG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJyNpbmNsdWRlICJNZXNzYWdlTmFtZXMuaCJcbicp
CisgICAgcmVzdWx0LmFwcGVuZCgnXG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJ25hbWVzcGFjZSBJ
UEMge1xuJykKKyAgICByZXN1bHQuYXBwZW5kKCdcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnY29u
c3QgY2hhciogZGVzY3JpcHRpb24oTWVzc2FnZU5hbWUgbmFtZSlcbicpCisgICAgcmVzdWx0LmFw
cGVuZCgne1xuJykKKyAgICByZXN1bHQuYXBwZW5kKCcgICAgc3dpdGNoIChuYW1lKSB7XG4nKQor
ICAgIGZvciByZWNlaXZlciBpbiByZWNlaXZlcnM6CisgICAgICAgIGZvciBtZXNzYWdlIGluIHJl
Y2VpdmVyLm1lc3NhZ2VzOgorICAgICAgICAgICAgaWYgbWVzc2FnZS5jb25kaXRpb246CisgICAg
ICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnI2lmICVzXG4nICUgbWVzc2FnZS5jb25kaXRpb24p
CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgY2FzZSBNZXNzYWdlTmFtZTo6JXNfJXM6
XG4nICUgKHJlY2VpdmVyLm5hbWUsIG1lc3NhZ2UubmFtZSkpCisgICAgICAgICAgICByZXN1bHQu
YXBwZW5kKCcgICAgICAgIHJldHVybiAiJXM6OiVzIjtcbicgJSAocmVjZWl2ZXIubmFtZSwgbWVz
c2FnZS5uYW1lKSkKKyAgICAgICAgICAgIGlmIG1lc3NhZ2UuaGFzX2F0dHJpYnV0ZShBU1lOQ19B
VFRSSUJVVEUpOgorICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBjYXNlIE1lc3Nh
Z2VOYW1lOjolc18lc1JlcGx5OlxuJyAlIChyZWNlaXZlci5uYW1lLCBtZXNzYWdlLm5hbWUpKQor
ICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICAgICAgcmV0dXJuICIlczo6JXNSZXBs
eSI7XG4nICUgKHJlY2VpdmVyLm5hbWUsIG1lc3NhZ2UubmFtZSkpCisgICAgICAgICAgICBpZiBt
ZXNzYWdlLmNvbmRpdGlvbjoKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcjZW5kaWZc
bicpCisgICAgcmVzdWx0LmFwcGVuZCgnICAgIGNhc2UgTWVzc2FnZU5hbWU6OldyYXBwZWRBc3lu
Y01lc3NhZ2VGb3JUZXN0aW5nOlxuJykKKyAgICByZXN1bHQuYXBwZW5kKCcgICAgICAgIHJldHVy
biAiSVBDOjpXcmFwcGVkQXN5bmNNZXNzYWdlRm9yVGVzdGluZyI7XG4nKQorICAgIHJlc3VsdC5h
cHBlbmQoJyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpTeW5jTWVzc2FnZVJlcGx5OlxuJykKKyAgICBy
ZXN1bHQuYXBwZW5kKCcgICAgICAgIHJldHVybiAiSVBDOjpTeW5jTWVzc2FnZVJlcGx5Ijtcbicp
CisgICAgcmVzdWx0LmFwcGVuZCgnICAgIGNhc2UgTWVzc2FnZU5hbWU6OkluaXRpYWxpemVDb25u
ZWN0aW9uOlxuJykKKyAgICByZXN1bHQuYXBwZW5kKCcgICAgICAgIHJldHVybiAiSVBDOjpJbml0
aWFsaXplQ29ubmVjdGlvbiI7XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJyAgICBjYXNlIE1lc3Nh
Z2VOYW1lOjpMZWdhY3lTZXNzaW9uU3RhdGU6XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJyAgICAg
ICAgcmV0dXJuICJJUEM6OkxlZ2FjeVNlc3Npb25TdGF0ZSI7XG4nKQorICAgIHJlc3VsdC5hcHBl
bmQoJyAgICB9XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJyAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTtcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnICAgIHJldHVybiAiPGludmFsaWQgbWVzc2FnZSBu
YW1lPiI7XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJ31cbicpCisgICAgcmVzdWx0LmFwcGVuZCgn
XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJ1JlY2VpdmVyTmFtZSByZWNlaXZlck5hbWUoTWVzc2Fn
ZU5hbWUgbWVzc2FnZU5hbWUpXG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJ3tcbicpCisgICAgcmVz
dWx0LmFwcGVuZCgnICAgIHN3aXRjaCAobWVzc2FnZU5hbWUpIHtcbicpCisgICAgZm9yIHJlY2Vp
dmVyIGluIHJlY2VpdmVyczoKKyAgICAgICAgZm9yIG1lc3NhZ2UgaW4gcmVjZWl2ZXIubWVzc2Fn
ZXM6CisgICAgICAgICAgICBpZiBtZXNzYWdlLmNvbmRpdGlvbjoKKyAgICAgICAgICAgICAgICBy
ZXN1bHQuYXBwZW5kKCcjaWYgJXNcbicgJSBtZXNzYWdlLmNvbmRpdGlvbikKKyAgICAgICAgICAg
IHJlc3VsdC5hcHBlbmQoJyAgICBjYXNlIE1lc3NhZ2VOYW1lOjolc18lczpcbicgJSAocmVjZWl2
ZXIubmFtZSwgbWVzc2FnZS5uYW1lKSkKKyAgICAgICAgICAgIGlmIG1lc3NhZ2UuY29uZGl0aW9u
OgorICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyNlbmRpZlxuJykKKyAgICAgICAgcmVz
dWx0LmFwcGVuZCgnICAgICAgICByZXR1cm4gUmVjZWl2ZXJOYW1lOjolcztcbicgJSByZWNlaXZl
ci5uYW1lKQorICAgIGZvciByZWNlaXZlciBpbiByZWNlaXZlcnM6CisgICAgICAgIGZvciBtZXNz
YWdlIGluIHJlY2VpdmVyLm1lc3NhZ2VzOgorICAgICAgICAgICAgaWYgbWVzc2FnZS5oYXNfYXR0
cmlidXRlKEFTWU5DX0FUVFJJQlVURSk6CisgICAgICAgICAgICAgICAgaWYgbWVzc2FnZS5jb25k
aXRpb246CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyNpZiAlc1xuJyAlIG1l
c3NhZ2UuY29uZGl0aW9uKQorICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBjYXNl
IE1lc3NhZ2VOYW1lOjolc18lc1JlcGx5OlxuJyAlIChyZWNlaXZlci5uYW1lLCBtZXNzYWdlLm5h
bWUpKQorICAgICAgICAgICAgICAgIGlmIG1lc3NhZ2UuY29uZGl0aW9uOgorICAgICAgICAgICAg
ICAgICAgICByZXN1bHQuYXBwZW5kKCcjZW5kaWZcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnICAg
ICAgICByZXR1cm4gUmVjZWl2ZXJOYW1lOjpBc3luY1JlcGx5O1xuJykKKyAgICByZXN1bHQuYXBw
ZW5kKCcgICAgY2FzZSBNZXNzYWdlTmFtZTo6V3JhcHBlZEFzeW5jTWVzc2FnZUZvclRlc3Rpbmc6
XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpTeW5jTWVzc2Fn
ZVJlcGx5OlxuJykKKyAgICByZXN1bHQuYXBwZW5kKCcgICAgY2FzZSBNZXNzYWdlTmFtZTo6SW5p
dGlhbGl6ZUNvbm5lY3Rpb246XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJyAgICBjYXNlIE1lc3Nh
Z2VOYW1lOjpMZWdhY3lTZXNzaW9uU3RhdGU6XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJyAgICAg
ICAgcmV0dXJuIFJlY2VpdmVyTmFtZTo6SVBDO1xuJykKKyAgICByZXN1bHQuYXBwZW5kKCcgICAg
fVxuJykKKyAgICByZXN1bHQuYXBwZW5kKCcgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7XG4nKQor
ICAgIHJlc3VsdC5hcHBlbmQoJyAgICByZXR1cm4gUmVjZWl2ZXJOYW1lOjpJbnZhbGlkO1xuJykK
KyAgICByZXN1bHQuYXBwZW5kKCd9XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJ1xuJykKKyAgICBy
ZXN1bHQuYXBwZW5kKCdib29sIGlzVmFsaWRNZXNzYWdlTmFtZShNZXNzYWdlTmFtZSBtZXNzYWdl
TmFtZSlcbicpCisgICAgcmVzdWx0LmFwcGVuZCgne1xuJykKKyAgICBmb3IgcmVjZWl2ZXIgaW4g
cmVjZWl2ZXJzOgorICAgICAgICBmb3IgbWVzc2FnZSBpbiByZWNlaXZlci5tZXNzYWdlczoKKyAg
ICAgICAgICAgIGlmIG1lc3NhZ2UuY29uZGl0aW9uOgorICAgICAgICAgICAgICAgIHJlc3VsdC5h
cHBlbmQoJyNpZiAlc1xuJyAlIG1lc3NhZ2UuY29uZGl0aW9uKQorICAgICAgICAgICAgcmVzdWx0
LmFwcGVuZCgnICAgIGlmIChtZXNzYWdlTmFtZSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjolc18lcylc
bicgJSAocmVjZWl2ZXIubmFtZSwgbWVzc2FnZS5uYW1lKSkKKyAgICAgICAgICAgIHJlc3VsdC5h
cHBlbmQoJyAgICAgICAgcmV0dXJuIHRydWU7XG4nKQorICAgICAgICAgICAgaWYgbWVzc2FnZS5o
YXNfYXR0cmlidXRlKEFTWU5DX0FUVFJJQlVURSk6CisgICAgICAgICAgICAgICAgcmVzdWx0LmFw
cGVuZCgnICAgIGlmIChtZXNzYWdlTmFtZSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjolc18lc1JlcGx5
KVxuJyAlIChyZWNlaXZlci5uYW1lLCBtZXNzYWdlLm5hbWUpKQorICAgICAgICAgICAgICAgIHJl
c3VsdC5hcHBlbmQoJyAgICAgICAgcmV0dXJuIHRydWU7XG4nKQorICAgICAgICAgICAgaWYgbWVz
c2FnZS5jb25kaXRpb246CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnI2VuZGlmXG4n
KQorICAgIHJlc3VsdC5hcHBlbmQoJyAgICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdl
TmFtZTo6V3JhcHBlZEFzeW5jTWVzc2FnZUZvclRlc3RpbmcpXG4nKQorICAgIHJlc3VsdC5hcHBl
bmQoJyAgICAgICAgcmV0dXJuIHRydWU7XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJyAgICBpZiAo
bWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6U3luY01lc3NhZ2VSZXBseSlcbicpCisg
ICAgcmVzdWx0LmFwcGVuZCgnICAgICAgICByZXR1cm4gdHJ1ZTtcbicpCisgICAgcmVzdWx0LmFw
cGVuZCgnICAgIGlmIChtZXNzYWdlTmFtZSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpJbml0aWFsaXpl
Q29ubmVjdGlvbilcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnICAgICAgICByZXR1cm4gdHJ1ZTtc
bicpCisgICAgcmVzdWx0LmFwcGVuZCgnICAgIGlmIChtZXNzYWdlTmFtZSA9PSBJUEM6Ok1lc3Nh
Z2VOYW1lOjpMZWdhY3lTZXNzaW9uU3RhdGUpXG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJyAgICAg
ICAgcmV0dXJuIHRydWU7XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJyAgICByZXR1cm4gZmFsc2U7
XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJ307XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJ1xuJykK
KyAgICByZXN1bHQuYXBwZW5kKCd9IC8vIG5hbWVzcGFjZSBJUENcbicpCisgICAgcmV0dXJuICcn
LmpvaW4ocmVzdWx0KQpJbmRleDogU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0LWxl
Z2FjeS1tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Vi
a2l0L3Rlc3QtbGVnYWN5LW1lc3NhZ2VzLmluCShyZXZpc2lvbiAyNjEwMzMpCisrKyBTb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3QtbGVnYWN5LW1lc3NhZ2VzLmluCShub25leGlzdGVu
dCkKQEAgLTEsNzcgKzAsMCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6
Ci0jIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECi0jIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECi0jIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSMgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTAotIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgotIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotIyBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLAotIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotCi0jaWYgRU5BQkxFKFdFQktJVDIpCi0jaWYgTkVTVEVEX01BU1RFUl9DT05ESVRJT04gfHwg
TUFTVEVSX09SICYmIE1BU1RFUl9BTkQKLQotbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNl
aXZlciB7Ci0gICAgTG9hZFVSTChTdHJpbmcgdXJsKQotI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMp
Ci0gICAgTG9hZFNvbWV0aGluZyhTdHJpbmcgdXJsKQotI2lmIE5FU1RFRF9NRVNTQUdFX0NPTkRJ
VElPTiB8fCBTT01FX09USEVSX01FU1NBR0VfQ09ORElUSU9OCi0gICAgVG91Y2hFdmVudChXZWJL
aXQ6OldlYlRvdWNoRXZlbnQgZXZlbnQpCi0jZW5kaWYKLSNpZiBORVNURURfTUVTU0FHRV9DT05E
SVRJT04gJiYgU09NRV9PVEhFUl9NRVNTQUdFX0NPTkRJVElPTgotICAgIEFkZEV2ZW50KFdlYktp
dDo6V2ViVG91Y2hFdmVudCBldmVudCkKLSNlbmRpZgotICAgIExvYWRTb21ldGhpbmdFbHNlKFN0
cmluZyB1cmwpCi0jZW5kaWYKLSAgICBEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24odWludDY0X3Qg
ZnJhbWVJRCwgdWludDY0X3QgbGlzdGVuZXJJRCwgdWludDMyX3QgcG9saWN5QWN0aW9uKQotICAg
IENsb3NlKCkKLQotICAgIFByZWZlcmVuY2VzRGlkQ2hhbmdlKFdlYktpdDo6V2ViUHJlZmVyZW5j
ZXNTdG9yZSBzdG9yZSkKLSAgICBTZW5kRG91YmxlQW5kRmxvYXQoZG91YmxlIGQsIGZsb2F0IGYp
Ci0gICAgU2VuZEludHMoVmVjdG9yPHVpbnQ2NF90PiBpbnRzLCBWZWN0b3I8VmVjdG9yPHVpbnQ2
NF90Pj4gaW50VmVjdG9ycykKLQotICAgIENyZWF0ZVBsdWdpbih1aW50NjRfdCBwbHVnaW5JbnN0
YW5jZUlELCBXZWJLaXQ6OlBsdWdpbjo6UGFyYW1ldGVycyBwYXJhbWV0ZXJzKSAtPiAoYm9vbCBy
ZXN1bHQpCi0gICAgUnVuSmF2YVNjcmlwdEFsZXJ0KHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBt
ZXNzYWdlKSAtPiAoKQotICAgIEdldFBsdWdpbnMoYm9vbCByZWZyZXNoKSAtPiAoVmVjdG9yPFdl
YkNvcmU6OlBsdWdpbkluZm8+IHBsdWdpbnMpCi0gICAgR2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rp
b24oU3RyaW5nIHBsdWdpblBhdGgpIC0+IChJUEM6OkNvbm5lY3Rpb246OkhhbmRsZSBjb25uZWN0
aW9uSGFuZGxlKSBTeW5jaHJvbm91cwotCi0gICAgVGVzdE11bHRpcGxlQXR0cmlidXRlcygpIC0+
ICgpIFdhbnRzQ29ubmVjdGlvbiBTeW5jaHJvbm91cwotCi0gICAgVGVzdFBhcmFtZXRlckF0dHJp
YnV0ZXMoW0F0dHJpYnV0ZU9uZSBBdHRyaWJ1dGVUd29dIHVpbnQ2NF90IGZvbywgZG91YmxlIGJh
ciwgW0F0dHJpYnV0ZVRocmVlXSBkb3VibGUgYmF6KQotCi0gICAgVGVtcGxhdGVUZXN0KEhhc2hN
YXA8U3RyaW5nLCBzdGQ6OnBhaXI8U3RyaW5nLCB1aW50NjRfdD4+IGEpCi0KLSAgICBTZXRWaWRl
b0xheWVySUQoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklEIHZpZGVvTGF5
ZXJJRCkKLQotI2lmIFBMQVRGT1JNKE1BQykKLSAgICBEaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVj
dGlvbihJUEM6Ok1hY2hQb3J0IGNvbm5lY3Rpb25JZGVudGlmaWVyKQotI2VuZGlmCi0KLSNpZiBQ
TEFURk9STShNQUMpCi0gICAgIyBLZXlib2FyZCBzdXBwb3J0Ci0gICAgSW50ZXJwcmV0S2V5RXZl
bnQodWludDMyX3QgdHlwZSkgLT4gKFZlY3RvcjxXZWJDb3JlOjpLZXlwcmVzc0NvbW1hbmQ+IGNv
bW1hbmROYW1lKQotI2VuZGlmCi0KLSNpZiBFTkFCTEUoREVQUkVDQVRFRF9GRUFUVVJFKQotICAg
IERlcHJlY2F0ZWRPcGVyYXRpb24oSVBDOjpEdW1teVR5cGUgZHVtbXkpCi0jZW5kaWYKLQotI2lm
IEVOQUJMRShFWFBFUklNRU5UQUxfRkVBVFVSRSkKLSAgICBFeHBlcmltZW50YWxPcGVyYXRpb24o
SVBDOjpEdW1teVR5cGUgZHVtbXkpCi0jZW5kaWYKLX0KLQotI2VuZGlmCi0jZW5kaWYKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdC1sZWdhY3kubWVzc2FnZXMuaW4KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0LWxlZ2FjeS5tZXNz
YWdlcy5pbgkocmV2aXNpb24gMjYxMDMzKQkoZnJvbSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Vi
a2l0L3Rlc3QtbGVnYWN5LW1lc3NhZ2VzLmluOjI2MTAzMykKKysrIFNvdXJjZS9XZWJLaXQvU2Ny
aXB0cy93ZWJraXQvdGVzdC1sZWdhY3kubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw3NyBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaWYg
RU5BQkxFKFdFQktJVDIpCisjaWYgTkVTVEVEX01BU1RFUl9DT05ESVRJT04gfHwgTUFTVEVSX09S
ICYmIE1BU1RFUl9BTkQKKworbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7Cisg
ICAgTG9hZFVSTChTdHJpbmcgdXJsKQorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAgTG9h
ZFNvbWV0aGluZyhTdHJpbmcgdXJsKQorI2lmIE5FU1RFRF9NRVNTQUdFX0NPTkRJVElPTiB8fCBT
T01FX09USEVSX01FU1NBR0VfQ09ORElUSU9OCisgICAgVG91Y2hFdmVudChXZWJLaXQ6OldlYlRv
dWNoRXZlbnQgZXZlbnQpCisjZW5kaWYKKyNpZiBORVNURURfTUVTU0FHRV9DT05ESVRJT04gJiYg
U09NRV9PVEhFUl9NRVNTQUdFX0NPTkRJVElPTgorICAgIEFkZEV2ZW50KFdlYktpdDo6V2ViVG91
Y2hFdmVudCBldmVudCkKKyNlbmRpZgorICAgIExvYWRTb21ldGhpbmdFbHNlKFN0cmluZyB1cmwp
CisjZW5kaWYKKyAgICBEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24odWludDY0X3QgZnJhbWVJRCwg
dWludDY0X3QgbGlzdGVuZXJJRCwgdWludDMyX3QgcG9saWN5QWN0aW9uKQorICAgIENsb3NlKCkK
KworICAgIFByZWZlcmVuY2VzRGlkQ2hhbmdlKFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZSBz
dG9yZSkKKyAgICBTZW5kRG91YmxlQW5kRmxvYXQoZG91YmxlIGQsIGZsb2F0IGYpCisgICAgU2Vu
ZEludHMoVmVjdG9yPHVpbnQ2NF90PiBpbnRzLCBWZWN0b3I8VmVjdG9yPHVpbnQ2NF90Pj4gaW50
VmVjdG9ycykKKworICAgIENyZWF0ZVBsdWdpbih1aW50NjRfdCBwbHVnaW5JbnN0YW5jZUlELCBX
ZWJLaXQ6OlBsdWdpbjo6UGFyYW1ldGVycyBwYXJhbWV0ZXJzKSAtPiAoYm9vbCByZXN1bHQpCisg
ICAgUnVuSmF2YVNjcmlwdEFsZXJ0KHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBtZXNzYWdlKSAt
PiAoKQorICAgIEdldFBsdWdpbnMoYm9vbCByZWZyZXNoKSAtPiAoVmVjdG9yPFdlYkNvcmU6OlBs
dWdpbkluZm8+IHBsdWdpbnMpCisgICAgR2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24oU3RyaW5n
IHBsdWdpblBhdGgpIC0+IChJUEM6OkNvbm5lY3Rpb246OkhhbmRsZSBjb25uZWN0aW9uSGFuZGxl
KSBTeW5jaHJvbm91cworCisgICAgVGVzdE11bHRpcGxlQXR0cmlidXRlcygpIC0+ICgpIFdhbnRz
Q29ubmVjdGlvbiBTeW5jaHJvbm91cworCisgICAgVGVzdFBhcmFtZXRlckF0dHJpYnV0ZXMoW0F0
dHJpYnV0ZU9uZSBBdHRyaWJ1dGVUd29dIHVpbnQ2NF90IGZvbywgZG91YmxlIGJhciwgW0F0dHJp
YnV0ZVRocmVlXSBkb3VibGUgYmF6KQorCisgICAgVGVtcGxhdGVUZXN0KEhhc2hNYXA8U3RyaW5n
LCBzdGQ6OnBhaXI8U3RyaW5nLCB1aW50NjRfdD4+IGEpCisKKyAgICBTZXRWaWRlb0xheWVySUQo
V2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklEIHZpZGVvTGF5ZXJJRCkKKwor
I2lmIFBMQVRGT1JNKE1BQykKKyAgICBEaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbihJUEM6
Ok1hY2hQb3J0IGNvbm5lY3Rpb25JZGVudGlmaWVyKQorI2VuZGlmCisKKyNpZiBQTEFURk9STShN
QUMpCisgICAgIyBLZXlib2FyZCBzdXBwb3J0CisgICAgSW50ZXJwcmV0S2V5RXZlbnQodWludDMy
X3QgdHlwZSkgLT4gKFZlY3RvcjxXZWJDb3JlOjpLZXlwcmVzc0NvbW1hbmQ+IGNvbW1hbmROYW1l
KQorI2VuZGlmCisKKyNpZiBFTkFCTEUoREVQUkVDQVRFRF9GRUFUVVJFKQorICAgIERlcHJlY2F0
ZWRPcGVyYXRpb24oSVBDOjpEdW1teVR5cGUgZHVtbXkpCisjZW5kaWYKKworI2lmIEVOQUJMRShF
WFBFUklNRU5UQUxfRkVBVFVSRSkKKyAgICBFeHBlcmltZW50YWxPcGVyYXRpb24oSVBDOjpEdW1t
eVR5cGUgZHVtbXkpCisjZW5kaWYKK30KKworI2VuZGlmCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdC1tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3QtbWVzc2FnZXMuaW4JKHJldmlzaW9uIDI2MTAz
MykKKysrIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdC1tZXNzYWdlcy5pbgkobm9u
ZXhpc3RlbnQpCkBAIC0xLDg0ICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBh
cmUgbWV0OgotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAotIyBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAotIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0jIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
Ci0jIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwKLSMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSMgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIKLSMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLQotI2lmIEVOQUJMRShXRUJLSVQyKQotI2lmIE5FU1RFRF9NQVNURVJfQ09ORElU
SU9OIHx8IE1BU1RFUl9PUiAmJiBNQVNURVJfQU5ECi0KLQotIyBUaGUgcGFyc2VyIHNob3VsZCB0
cmVhdCBhbGwgb2YgdGhlc2UgYXMgY29tbWVudHMKLSNGYWtlTG9hZFVSTEEoU3RyaW5nIHVybCkK
LSMgRmFrZUxvYWRVUkxCKFN0cmluZyB1cmwpCi0gICAgI0Zha2VMb2FkVVJMQyhTdHJpbmcgdXJs
KQotICAgICMgRmFrZUxvYWRVUkxEKFN0cmluZyB1cmwpCi0KLW1lc3NhZ2VzIC0+IFdlYlBhZ2Ug
ewotICAgIExvYWRVUkwoU3RyaW5nIHVybCkKLSNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQotICAg
IExvYWRTb21ldGhpbmcoU3RyaW5nIHVybCkKLSNpZiBORVNURURfTUVTU0FHRV9DT05ESVRJT04g
fHwgU09NRV9PVEhFUl9NRVNTQUdFX0NPTkRJVElPTgotICAgIFRvdWNoRXZlbnQoV2ViS2l0OjpX
ZWJUb3VjaEV2ZW50IGV2ZW50KQotI2VuZGlmCi0jaWYgTkVTVEVEX01FU1NBR0VfQ09ORElUSU9O
ICYmIFNPTUVfT1RIRVJfTUVTU0FHRV9DT05ESVRJT04KLSAgICBBZGRFdmVudChXZWJLaXQ6Oldl
YlRvdWNoRXZlbnQgZXZlbnQpCi0jZW5kaWYKLSAgICBMb2FkU29tZXRoaW5nRWxzZShTdHJpbmcg
dXJsKQotI2VuZGlmCi0gICAgRGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKHVpbnQ2NF90IGZyYW1l
SUQsIHVpbnQ2NF90IGxpc3RlbmVySUQsIHVpbnQzMl90IHBvbGljeUFjdGlvbikKLSAgICBDbG9z
ZSgpCi0KLSAgICBQcmVmZXJlbmNlc0RpZENoYW5nZShXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3Rv
cmUgc3RvcmUpCi0gICAgU2VuZERvdWJsZUFuZEZsb2F0KGRvdWJsZSBkLCBmbG9hdCBmKQotICAg
IFNlbmRJbnRzKFZlY3Rvcjx1aW50NjRfdD4gaW50cywgVmVjdG9yPFZlY3Rvcjx1aW50NjRfdD4+
IGludFZlY3RvcnMpCi0KLSAgICBDcmVhdGVQbHVnaW4odWludDY0X3QgcGx1Z2luSW5zdGFuY2VJ
RCwgV2ViS2l0OjpQbHVnaW46OlBhcmFtZXRlcnMgcGFyYW1ldGVycykgLT4gKGJvb2wgcmVzdWx0
KQotICAgIFJ1bkphdmFTY3JpcHRBbGVydCh1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgbWVzc2Fn
ZSkgLT4gKCkKLSAgICBHZXRQbHVnaW5zKGJvb2wgcmVmcmVzaCkgLT4gKFZlY3RvcjxXZWJDb3Jl
OjpQbHVnaW5JbmZvPiBwbHVnaW5zKQotICAgIEdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKFN0
cmluZyBwbHVnaW5QYXRoKSAtPiAoSVBDOjpDb25uZWN0aW9uOjpIYW5kbGUgY29ubmVjdGlvbkhh
bmRsZSkgU3luY2hyb25vdXMKLQotICAgIFRlc3RNdWx0aXBsZUF0dHJpYnV0ZXMoKSAtPiAoKSBX
YW50c0Nvbm5lY3Rpb24gU3luY2hyb25vdXMKLQotICAgIFRlc3RQYXJhbWV0ZXJBdHRyaWJ1dGVz
KFtBdHRyaWJ1dGVPbmUgQXR0cmlidXRlVHdvXSB1aW50NjRfdCBmb28sIGRvdWJsZSBiYXIsIFtB
dHRyaWJ1dGVUaHJlZV0gZG91YmxlIGJheikKLQotICAgIFRlbXBsYXRlVGVzdChIYXNoTWFwPFN0
cmluZywgc3RkOjpwYWlyPFN0cmluZywgdWludDY0X3Q+PiBhKQotCi0gICAgU2V0VmlkZW9MYXll
cklEKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRCB2aWRlb0xheWVySUQp
Ci0KLSNpZiBQTEFURk9STShNQUMpCi0gICAgRGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24o
SVBDOjpNYWNoUG9ydCBjb25uZWN0aW9uSWRlbnRpZmllcikKLSNlbmRpZgotCi0jaWYgUExBVEZP
Uk0oTUFDKQotICAgICMgS2V5Ym9hcmQgc3VwcG9ydAotICAgIEludGVycHJldEtleUV2ZW50KHVp
bnQzMl90IHR5cGUpIC0+IChWZWN0b3I8V2ViQ29yZTo6S2V5cHJlc3NDb21tYW5kPiBjb21tYW5k
TmFtZSkKLSNlbmRpZgotCi0jaWYgRU5BQkxFKERFUFJFQ0FURURfRkVBVFVSRSkKLSAgICBEZXBy
ZWNhdGVkT3BlcmF0aW9uKElQQzo6RHVtbXlUeXBlIGR1bW15KQotI2VuZGlmCi0KLSNpZiBFTkFC
TEUoRVhQRVJJTUVOVEFMX0ZFQVRVUkUpCi0gICAgRXhwZXJpbWVudGFsT3BlcmF0aW9uKElQQzo6
RHVtbXlUeXBlIGR1bW15KQotI2VuZGlmCi19Ci0KLSNlbmRpZgotI2VuZGlmCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3Qtc3VwZXJjbGFzcy1tZXNzYWdlcy5pbgo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3Qtc3VwZXJjbGFzcy1t
ZXNzYWdlcy5pbgkocmV2aXNpb24gMjYxMDMzKQorKysgU291cmNlL1dlYktpdC9TY3JpcHRzL3dl
YmtpdC90ZXN0LXN1cGVyY2xhc3MtbWVzc2FnZXMuaW4JKG5vbmV4aXN0ZW50KQpAQCAtMSwzMiAr
MCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0jIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
LSMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQotIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgotIyBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0j
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SCi0jIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0jIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksCi0jIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLW1lc3NhZ2Vz
IC0+IFdlYlBhZ2UgOiBXZWJQYWdlQmFzZSB7Ci0gICAgTG9hZFVSTChTdHJpbmcgdXJsKQotI2lm
IEVOQUJMRShURVNUX0ZFQVRVUkUpCi0gICAgVGVzdEFzeW5jTWVzc2FnZShlbnVtOmJvb2wgV2Vi
S2l0OjpUZXN0VHdvU3RhdGVFbnVtIHR3b1N0YXRlRW51bSkgLT4gKHVpbnQ2NF90IHJlc3VsdCkg
QXN5bmMKLSAgICBUZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJndW1lbnRzKCkgLT4gKCkgQXN5bmMK
LSAgICBUZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1lbnRzKCkgLT4gKGJvb2wgZmxh
ZywgdWludDY0X3QgdmFsdWUpIEFzeW5jCi0jZW5kaWYKLSAgICBUZXN0U3luY01lc3NhZ2UodWlu
dDMyX3QgcGFyYW0pIC0+ICh1aW50OF90IHJlcGx5KSBTeW5jaHJvbm91cwotICAgIFRlc3RTeW5j
aHJvbm91c01lc3NhZ2UoYm9vbCB2YWx1ZSkgLT4gKE9wdGlvbmFsPFdlYktpdDo6VGVzdENsYXNz
TmFtZT4gb3B0aW9uYWxSZXBseSkgU3luY2hyb25vdXMKLX0KSW5kZXg6IFNvdXJjZS9XZWJLaXQv
U2NyaXB0cy93ZWJraXQvdGVzdC1zdXBlcmNsYXNzLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdC1zdXBlcmNsYXNzLm1lc3NhZ2VzLmlu
CShyZXZpc2lvbiAyNjEwMzMpCShmcm9tIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVz
dC1zdXBlcmNsYXNzLW1lc3NhZ2VzLmluOjI2MTAzMykKKysrIFNvdXJjZS9XZWJLaXQvU2NyaXB0
cy93ZWJraXQvdGVzdC1zdXBlcmNsYXNzLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsMzIgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworbWVz
c2FnZXMgLT4gV2ViUGFnZSA6IFdlYlBhZ2VCYXNlIHsKKyAgICBMb2FkVVJMKFN0cmluZyB1cmwp
CisjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKKyAgICBUZXN0QXN5bmNNZXNzYWdlKGVudW06Ym9v
bCBXZWJLaXQ6OlRlc3RUd29TdGF0ZUVudW0gdHdvU3RhdGVFbnVtKSAtPiAodWludDY0X3QgcmVz
dWx0KSBBc3luYworICAgIFRlc3RBc3luY01lc3NhZ2VXaXRoTm9Bcmd1bWVudHMoKSAtPiAoKSBB
c3luYworICAgIFRlc3RBc3luY01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHMoKSAtPiAoYm9v
bCBmbGFnLCB1aW50NjRfdCB2YWx1ZSkgQXN5bmMKKyNlbmRpZgorICAgIFRlc3RTeW5jTWVzc2Fn
ZSh1aW50MzJfdCBwYXJhbSkgLT4gKHVpbnQ4X3QgcmVwbHkpIFN5bmNocm9ub3VzCisgICAgVGVz
dFN5bmNocm9ub3VzTWVzc2FnZShib29sIHZhbHVlKSAtPiAoT3B0aW9uYWw8V2ViS2l0OjpUZXN0
Q2xhc3NOYW1lPiBvcHRpb25hbFJlcGx5KSBTeW5jaHJvbm91cworfQpJbmRleDogU291cmNlL1dl
YktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0Lm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSW5kZXg6IFNv
dXJjZS9XZWJLaXQvU2hhcmVkL0F1eGlsaWFyeVByb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvU2hhcmVkL0F1eGlsaWFyeVByb2Nlc3MuY3BwCShyZXZpc2lvbiAyNjEwMzMp
CisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXhpbGlhcnlQcm9jZXNzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTA3LDIyICsxMDcsMjIgQEAgdm9pZCBBdXhpbGlhcnlQcm9jZXNzOjppbml0aWFs
aXplQ29ubmVjdAogewogfQogCi12b2lkIEF1eGlsaWFyeVByb2Nlc3M6OmFkZE1lc3NhZ2VSZWNl
aXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6Ok1lc3Nh
Z2VSZWNlaXZlciYgbWVzc2FnZVJlY2VpdmVyKQordm9pZCBBdXhpbGlhcnlQcm9jZXNzOjphZGRN
ZXNzYWdlUmVjZWl2ZXIoSVBDOjpSZWNlaXZlck5hbWUgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBD
OjpNZXNzYWdlUmVjZWl2ZXImIG1lc3NhZ2VSZWNlaXZlcikKIHsKICAgICBtX21lc3NhZ2VSZWNl
aXZlck1hcC5hZGRNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSwgbWVzc2FnZVJl
Y2VpdmVyKTsKIH0KIAotdm9pZCBBdXhpbGlhcnlQcm9jZXNzOjphZGRNZXNzYWdlUmVjZWl2ZXIo
SVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGlu
YXRpb25JRCwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImIG1lc3NhZ2VSZWNlaXZlcikKK3ZvaWQgQXV4
aWxpYXJ5UHJvY2Vzczo6YWRkTWVzc2FnZVJlY2VpdmVyKElQQzo6UmVjZWl2ZXJOYW1lIG1lc3Nh
Z2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIElQQzo6TWVzc2FnZVJlY2Vp
dmVyJiBtZXNzYWdlUmVjZWl2ZXIpCiB7CiAgICAgbV9tZXNzYWdlUmVjZWl2ZXJNYXAuYWRkTWVz
c2FnZVJlY2VpdmVyKG1lc3NhZ2VSZWNlaXZlck5hbWUsIGRlc3RpbmF0aW9uSUQsIG1lc3NhZ2VS
ZWNlaXZlcik7CiB9CiAKLXZvaWQgQXV4aWxpYXJ5UHJvY2Vzczo6cmVtb3ZlTWVzc2FnZVJlY2Vp
dmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRl
c3RpbmF0aW9uSUQpCit2b2lkIEF1eGlsaWFyeVByb2Nlc3M6OnJlbW92ZU1lc3NhZ2VSZWNlaXZl
cihJUEM6OlJlY2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5h
dGlvbklEKQogewogICAgIG1fbWVzc2FnZVJlY2VpdmVyTWFwLnJlbW92ZU1lc3NhZ2VSZWNlaXZl
cihtZXNzYWdlUmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklEKTsKIH0KIAotdm9pZCBBdXhpbGlh
cnlQcm9jZXNzOjpyZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVz
c2FnZVJlY2VpdmVyTmFtZSkKK3ZvaWQgQXV4aWxpYXJ5UHJvY2Vzczo6cmVtb3ZlTWVzc2FnZVJl
Y2VpdmVyKElQQzo6UmVjZWl2ZXJOYW1lIG1lc3NhZ2VSZWNlaXZlck5hbWUpCiB7CiAgICAgbV9t
ZXNzYWdlUmVjZWl2ZXJNYXAucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKG1lc3NhZ2VSZWNlaXZlck5h
bWUpOwogfQpAQCAtMjM2LDkgKzIzNiw5IEBAIHZvaWQgQXV4aWxpYXJ5UHJvY2Vzczo6aW5pdGlh
bGl6ZVNhbmRib3gKIHsKIH0KIAotdm9pZCBBdXhpbGlhcnlQcm9jZXNzOjpkaWRSZWNlaXZlSW52
YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2Fn
ZVJlY2VpdmVyTmFtZSwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUpCit2b2lkIEF1
eGlsaWFyeVByb2Nlc3M6OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
LCBJUEM6Ok1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lKQogewotICAgIFdURkxvZ0Fsd2F5cygiUmVj
ZWl2ZWQgaW52YWxpZCBtZXNzYWdlOiAnJXM6OiVzJyIsIG1lc3NhZ2VSZWNlaXZlck5hbWUudG9T
dHJpbmcoKS5kYXRhKCksIG1lc3NhZ2VOYW1lLnRvU3RyaW5nKCkuZGF0YSgpKTsKKyAgICBXVEZM
b2dBbHdheXMoIlJlY2VpdmVkIGludmFsaWQgbWVzc2FnZTogJyVzJyIsIGRlc2NyaXB0aW9uKG1l
c3NhZ2VOYW1lKSk7CiAgICAgQ1JBU0goKTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdC9TaGFy
ZWQvQXV4aWxpYXJ5UHJvY2Vzcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVk
L0F1eGlsaWFyeVByb2Nlc3MuaAkocmV2aXNpb24gMjYxMDMzKQorKysgU291cmNlL1dlYktpdC9T
aGFyZWQvQXV4aWxpYXJ5UHJvY2Vzcy5oCSh3b3JraW5nIGNvcHkpCkBAIC02MCwyMCArNjAsMjAg
QEAgcHVibGljOgogICAgIHZvaWQgZGlzYWJsZVRlcm1pbmF0aW9uKCk7CiAgICAgdm9pZCBlbmFi
bGVUZXJtaW5hdGlvbigpOwogCi0gICAgdm9pZCBhZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJp
bmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImKTsK
LSAgICB2b2lkIGFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdl
UmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBJUEM6Ok1lc3NhZ2VSZWNlaXZl
ciYpOwotICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNl
IG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpOwotICAgIHZvaWQg
cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZl
ck5hbWUpOworICAgIHZvaWQgYWRkTWVzc2FnZVJlY2VpdmVyKElQQzo6UmVjZWl2ZXJOYW1lLCBJ
UEM6Ok1lc3NhZ2VSZWNlaXZlciYpOworICAgIHZvaWQgYWRkTWVzc2FnZVJlY2VpdmVyKElQQzo6
UmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBJUEM6Ok1lc3NhZ2VSZWNlaXZl
ciYpOworICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6UmVjZWl2ZXJOYW1lLCB1
aW50NjRfdCBkZXN0aW5hdGlvbklEKTsKKyAgICB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihJ
UEM6OlJlY2VpdmVyTmFtZSk7CiAgICAgdm9pZCByZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpN
ZXNzYWdlUmVjZWl2ZXImKTsKICAgICAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgICB2
b2lkIGFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2
ZXJOYW1lLCBPYmplY3RJZGVudGlmaWVyPFQ+IGRlc3RpbmF0aW9uSUQsIElQQzo6TWVzc2FnZVJl
Y2VpdmVyJiByZWNlaXZlcikKKyAgICB2b2lkIGFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlJlY2Vp
dmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBPYmplY3RJZGVudGlmaWVyPFQ+IGRlc3RpbmF0
aW9uSUQsIElQQzo6TWVzc2FnZVJlY2VpdmVyJiByZWNlaXZlcikKICAgICB7CiAgICAgICAgIGFk
ZE1lc3NhZ2VSZWNlaXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklELnRvVUlu
dDY0KCksIHJlY2VpdmVyKTsKICAgICB9CiAgICAgCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
Ci0gICAgdm9pZCByZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVz
c2FnZVJlY2VpdmVyTmFtZSwgT2JqZWN0SWRlbnRpZmllcjxUPiBkZXN0aW5hdGlvbklEKQorICAg
IHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6UmVjZWl2ZXJOYW1lIG1lc3NhZ2VSZWNl
aXZlck5hbWUsIE9iamVjdElkZW50aWZpZXI8VD4gZGVzdGluYXRpb25JRCkKICAgICB7CiAgICAg
ICAgIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlv
bklELnRvVUludDY0KCkpOwogICAgIH0KQEAgLTEzOCw3ICsxMzgsNyBAQCBwcml2YXRlOgogICAg
IHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3Qgb3ZlcnJpZGU7CiAK
ICAgICAvLyBJUEM6OkNvbm5lY3Rpb246OkNsaWVudC4KLSAgICB2b2lkIGRpZFJlY2VpdmVJbnZh
bGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdl
UmVjZWl2ZXJOYW1lLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZSkgZmluYWw7Cisg
ICAgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpN
ZXNzYWdlTmFtZSkgZmluYWw7CiAgICAgdm9pZCBkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mKSBv
dmVycmlkZTsKIAogICAgIHZvaWQgc2h1dERvd24oKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hh
cmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHku
aAkocmV2aXNpb24gMjYxMDMzKQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtODYsOCArODYsNiBA
QCBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nJiBwYXltZW50Q29vcmRpbmF0
b3JCb3VuZEludGVyZmFjZUlkZW50aWZpZXIoY29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJv
eHkmKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nJiBwYXltZW50Q29vcmRpbmF0
b3JTb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoY29uc3QgV2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHkmKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nJiBwYXltZW50
Q29vcmRpbmF0b3JTb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIoY29uc3QgV2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHkmKSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBwYXlt
ZW50Q29vcmRpbmF0b3JBZGRNZXNzYWdlUmVjZWl2ZXIoV2ViUGF5bWVudENvb3JkaW5hdG9yUHJv
eHkmLCBjb25zdCBJUEM6OlN0cmluZ1JlZmVyZW5jZSYsIElQQzo6TWVzc2FnZVJlY2VpdmVyJikg
PSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgcGF5bWVudENvb3JkaW5hdG9yUmVtb3ZlTWVzc2Fn
ZVJlY2VpdmVyKFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JiwgY29uc3QgSVBDOjpTdHJpbmdS
ZWZlcmVuY2UmKSA9IDA7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgdmlydHVh
bCBVSVZpZXdDb250cm9sbGVyICpwYXltZW50Q29vcmRpbmF0b3JQcmVzZW50aW5nVmlld0NvbnRy
b2xsZXIoY29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmKSA9IDA7CiAgICAgICAgIHZp
cnR1YWwgY29uc3QgU3RyaW5nJiBwYXltZW50Q29vcmRpbmF0b3JDVERhdGFDb25uZWN0aW9uU2Vy
dmljZVR5cGUoY29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmKSA9IDA7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQ
cm94eUNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5
L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EubW0JKHJldmlzaW9uIDI2MTAz
MykKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29y
ZGluYXRvclByb3h5Q29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTc5LDE1ICs3OSwxMiBAQCBX
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6V2ViUGF5bWVudENvCiAgICAgOiBtX2NsaWVudChj
bGllbnQpCiAgICAgLCBtX2Nhbk1ha2VQYXltZW50c1F1ZXVlKFdvcmtRdWV1ZTo6Y3JlYXRlKCJj
b20uYXBwbGUuV2ViS2l0LkNhbk1ha2VQYXltZW50cyIpKQogewotICAgIG1fY2xpZW50LnBheW1l
bnRDb29yZGluYXRvckFkZE1lc3NhZ2VSZWNlaXZlcigqdGhpcywgTWVzc2FnZXM6OldlYlBheW1l
bnRDb29yZGluYXRvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksICp0aGlzKTsKIH0KIAog
V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6On5XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSgp
CiB7CiAgICAgaWYgKG1fc3RhdGUgIT0gU3RhdGU6OklkbGUpCiAgICAgICAgIGhpZGVQYXltZW50
VUkoKTsKLQotICAgIG1fY2xpZW50LnBheW1lbnRDb29yZGluYXRvclJlbW92ZU1lc3NhZ2VSZWNl
aXZlcigqdGhpcywgTWVzc2FnZXM6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCkpOwogfQogCiB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5Ojpw
bGF0Zm9ybUNhbk1ha2VQYXltZW50c1dpdGhBY3RpdmVDYXJkKGNvbnN0IFN0cmluZyYgbWVyY2hh
bnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGRvbWFpbk5hbWUsIFdURjo6RnVuY3Rpb248dm9p
ZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVk
L0NvY29hL0F1eGlsaWFyeVByb2Nlc3NDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1NoYXJlZC9Db2NvYS9BdXhpbGlhcnlQcm9jZXNzQ29jb2EubW0JKHJldmlzaW9uIDI2MTAz
MykKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0F1eGlsaWFyeVByb2Nlc3NDb2NvYS5t
bQkod29ya2luZyBjb3B5KQpAQCAtMzIsOSArMzIsOSBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAotdm9pZCBBdXhpbGlhcnlQcm9jZXNzOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBD
OjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUpCit2b2lkIEF1eGlsaWFyeVByb2Nlc3M6OmRp
ZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VOYW1l
IG1lc3NhZ2VOYW1lKQogewotICAgIHNldENyYXNoUmVwb3J0QXBwbGljYXRpb25TcGVjaWZpY0lu
Zm9ybWF0aW9uKChfX2JyaWRnZSBDRlN0cmluZ1JlZilbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1h
dDpAIlJlY2VpdmVkIGludmFsaWQgbWVzc2FnZTogJyVzOjolcyciLCBtZXNzYWdlUmVjZWl2ZXJO
YW1lLnRvU3RyaW5nKCkuZGF0YSgpLCBtZXNzYWdlTmFtZS50b1N0cmluZygpLmRhdGEoKV0pOwor
ICAgIHNldENyYXNoUmVwb3J0QXBwbGljYXRpb25TcGVjaWZpY0luZm9ybWF0aW9uKChfX2JyaWRn
ZSBDRlN0cmluZ1JlZilbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIlJlY2VpdmVkIGludmFs
aWQgbWVzc2FnZTogJyVzJyIsIGRlc2NyaXB0aW9uKG1lc3NhZ2VOYW1lKV0pOwogICAgIENSQVNI
KCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQ
cm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV4aWxpYXJ5
UHJvY2Vzc1Byb3h5LmNwcAkocmV2aXNpb24gMjYxMDMzKQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc4LDIy
ICsxNzgsMjIgQEAgYm9vbCBBdXhpbGlhcnlQcm9jZXNzUHJveHk6OnNlbmRNZXNzYWdlKAogICAg
IHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBBdXhpbGlhcnlQcm9jZXNzUHJveHk6OmFkZE1lc3Nh
Z2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6
Ok1lc3NhZ2VSZWNlaXZlciYgbWVzc2FnZVJlY2VpdmVyKQordm9pZCBBdXhpbGlhcnlQcm9jZXNz
UHJveHk6OmFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlJlY2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2
ZXJOYW1lLCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYgbWVzc2FnZVJlY2VpdmVyKQogewogICAgIG1f
bWVzc2FnZVJlY2VpdmVyTWFwLmFkZE1lc3NhZ2VSZWNlaXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1l
LCBtZXNzYWdlUmVjZWl2ZXIpOwogfQogCi12b2lkIEF1eGlsaWFyeVByb2Nlc3NQcm94eTo6YWRk
TWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUs
IHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIElQQzo6TWVzc2FnZVJlY2VpdmVyJiBtZXNzYWdlUmVj
ZWl2ZXIpCit2b2lkIEF1eGlsaWFyeVByb2Nlc3NQcm94eTo6YWRkTWVzc2FnZVJlY2VpdmVyKElQ
Qzo6UmVjZWl2ZXJOYW1lIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9u
SUQsIElQQzo6TWVzc2FnZVJlY2VpdmVyJiBtZXNzYWdlUmVjZWl2ZXIpCiB7CiAgICAgbV9tZXNz
YWdlUmVjZWl2ZXJNYXAuYWRkTWVzc2FnZVJlY2VpdmVyKG1lc3NhZ2VSZWNlaXZlck5hbWUsIGRl
c3RpbmF0aW9uSUQsIG1lc3NhZ2VSZWNlaXZlcik7CiB9CiAKLXZvaWQgQXV4aWxpYXJ5UHJvY2Vz
c1Byb3h5OjpyZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2Fn
ZVJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCkKK3ZvaWQgQXV4aWxpYXJ5UHJv
Y2Vzc1Byb3h5OjpyZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpSZWNlaXZlck5hbWUgbWVzc2Fn
ZVJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCkKIHsKICAgICBtX21lc3NhZ2VS
ZWNlaXZlck1hcC5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSwgZGVz
dGluYXRpb25JRCk7CiB9CiAKLXZvaWQgQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjpyZW1vdmVNZXNz
YWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSkKK3Zv
aWQgQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjpyZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpSZWNl
aXZlck5hbWUgbWVzc2FnZVJlY2VpdmVyTmFtZSkKIHsKICAgICBtX21lc3NhZ2VSZWNlaXZlck1h
cC5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSk7CiB9CkBAIC0yNzgs
OSArMjc4LDkgQEAgdm9pZCBBdXhpbGlhcnlQcm9jZXNzUHJveHk6OmNvbm5lY3Rpb25XaQogewog
fQogCi12b2lkIEF1eGlsaWFyeVByb2Nlc3NQcm94eTo6bG9nSW52YWxpZE1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2
ZXJOYW1lLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZSkKK3ZvaWQgQXV4aWxpYXJ5
UHJvY2Vzc1Byb3h5Ojpsb2dJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rp
b24sIElQQzo6TWVzc2FnZU5hbWUgbWVzc2FnZU5hbWUpCiB7Ci0gICAgUkVMRUFTRV9MT0dfRkFV
TFQoSVBDLCAiUmVjZWl2ZWQgYW4gaW52YWxpZCBtZXNzYWdlICclIiBQVUJMSUNfTE9HX1NUUklO
RyAiOjolIiBQVUJMSUNfTE9HX1NUUklORyAiJyBmcm9tIHRoZSAlIiBQVUJMSUNfTE9HX1NUUklO
RyAiIHByb2Nlc3MuIiwgbWVzc2FnZVJlY2VpdmVyTmFtZS50b1N0cmluZygpLmRhdGEoKSwgbWVz
c2FnZU5hbWUudG9TdHJpbmcoKS5kYXRhKCksIHByb2Nlc3NOYW1lKCkuY2hhcmFjdGVycygpKTsK
KyAgICBSRUxFQVNFX0xPR19GQVVMVChJUEMsICJSZWNlaXZlZCBhbiBpbnZhbGlkIG1lc3NhZ2Ug
JyUiIFBVQkxJQ19MT0dfU1RSSU5HICInIGZyb20gdGhlICUiIFBVQkxJQ19MT0dfU1RSSU5HICIg
cHJvY2Vzcy4iLCBkZXNjcmlwdGlvbihtZXNzYWdlTmFtZSksIHByb2Nlc3NOYW1lKCkuY2hhcmFj
dGVycygpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaAkocmV2aXNpb24gMjYxMDMz
KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmgJKHdv
cmtpbmcgY29weSkKQEAgLTc1LDE5ICs3NSwxOSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBt
X2Nvbm5lY3Rpb24gPT0gJmNvbm5lY3Rpb247CiAgICAgfQogCi0gICAgdm9pZCBhZGRNZXNzYWdl
UmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpN
ZXNzYWdlUmVjZWl2ZXImKTsKLSAgICB2b2lkIGFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmlu
Z1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBJ
UEM6Ok1lc3NhZ2VSZWNlaXZlciYpOwotICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQ
Qzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0
aW9uSUQpOwotICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJl
bmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUpOworICAgIHZvaWQgYWRkTWVzc2FnZVJlY2VpdmVyKElQ
Qzo6UmVjZWl2ZXJOYW1lLCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYpOworICAgIHZvaWQgYWRkTWVz
c2FnZVJlY2VpdmVyKElQQzo6UmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBJ
UEM6Ok1lc3NhZ2VSZWNlaXZlciYpOworICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQ
Qzo6UmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKTsKKyAgICB2b2lkIHJlbW92
ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlJlY2VpdmVyTmFtZSk7CiAgICAgCiAgICAgdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+Ci0gICAgdm9pZCBhZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZl
cmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgT2JqZWN0SWRlbnRpZmllcjxUPiBkZXN0aW5hdGlv
bklELCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYgcmVjZWl2ZXIpCisgICAgdm9pZCBhZGRNZXNzYWdl
UmVjZWl2ZXIoSVBDOjpSZWNlaXZlck5hbWUgbWVzc2FnZVJlY2VpdmVyTmFtZSwgT2JqZWN0SWRl
bnRpZmllcjxUPiBkZXN0aW5hdGlvbklELCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYgcmVjZWl2ZXIp
CiAgICAgewogICAgICAgICBhZGRNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSwg
ZGVzdGluYXRpb25JRC50b1VJbnQ2NCgpLCByZWNlaXZlcik7CiAgICAgfQogICAgIAogICAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBUPgotICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6
U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIE9iamVjdElkZW50aWZpZXI8VD4g
ZGVzdGluYXRpb25JRCkKKyAgICB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlJlY2Vp
dmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBPYmplY3RJZGVudGlmaWVyPFQ+IGRlc3RpbmF0
aW9uSUQpCiAgICAgewogICAgICAgICByZW1vdmVNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2Vp
dmVyTmFtZSwgZGVzdGluYXRpb25JRC50b1VJbnQ2NCgpKTsKICAgICB9CkBAIC0xMTksNyArMTE5
LDcgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgZGlzcGF0Y2hNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYsIElQQzo6RGVjb2RlciYpOwogICAgIGJvb2wgZGlzcGF0Y2hTeW5jTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYp
OwogCi0gICAgdm9pZCBsb2dJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OlN0
cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBt
ZXNzYWdlTmFtZSk7CisgICAgdm9pZCBsb2dJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
LCBJUEM6Ok1lc3NhZ2VOYW1lKTsKICAgICB2aXJ0dWFsIEFTQ0lJTGl0ZXJhbCBwcm9jZXNzTmFt
ZSgpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBnZXRMYXVuY2hPcHRpb25zKFByb2Nl
c3NMYXVuY2hlcjo6TGF1bmNoT3B0aW9ucyYpOwpAQCAtMTUwLDcgKzE1MCw3IEBAIGJvb2wgQXV4
aWxpYXJ5UHJvY2Vzc1Byb3h5OjpzZW5kKFQmJiBtZXMKIHsKICAgICBDT01QSUxFX0FTU0VSVCgh
VDo6aXNTeW5jLCBBc3luY01lc3NhZ2VFeHBlY3RlZCk7CiAKLSAgICBhdXRvIGVuY29kZXIgPSBt
YWtlVW5pcXVlPElQQzo6RW5jb2Rlcj4oVDo6cmVjZWl2ZXJOYW1lKCksIFQ6Om5hbWUoKSwgZGVz
dGluYXRpb25JRCk7CisgICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZTxJUEM6OkVuY29kZXI+
KFQ6Om5hbWUoKSwgZGVzdGluYXRpb25JRCk7CiAgICAgZW5jb2Rlci0+ZW5jb2RlKG1lc3NhZ2Uu
YXJndW1lbnRzKCkpOwogCiAgICAgcmV0dXJuIHNlbmRNZXNzYWdlKFdURk1vdmUoZW5jb2Rlciks
IHNlbmRPcHRpb25zKTsKQEAgLTE3NCw3ICsxNzQsNyBAQCB2b2lkIEF1eGlsaWFyeVByb2Nlc3NQ
cm94eTo6c2VuZFdpdGhBc3luCiB7CiAgICAgQ09NUElMRV9BU1NFUlQoIVQ6OmlzU3luYywgQXN5
bmNNZXNzYWdlRXhwZWN0ZWQpOwogCi0gICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZTxJUEM6
OkVuY29kZXI+KFQ6OnJlY2VpdmVyTmFtZSgpLCBUOjpuYW1lKCksIGRlc3RpbmF0aW9uSUQpOwor
ICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWU8SVBDOjpFbmNvZGVyPihUOjpuYW1lKCksIGRl
c3RpbmF0aW9uSUQpOwogICAgIHVpbnQ2NF90IGxpc3RlbmVySUQgPSBJUEM6Om5leHRBc3luY1Jl
cGx5SGFuZGxlcklEKCk7CiAgICAgZW5jb2Rlci0+ZW5jb2RlKGxpc3RlbmVySUQpOwogICAgIGVu
Y29kZXItPmVuY29kZShtZXNzYWdlLmFyZ3VtZW50cygpKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0xlZ2FjeVNlc3Npb25TdGF0ZUNvZGluZ05vbmUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xlZ2FjeVNlc3Npb25TdGF0ZUNvZGluZ05vbmUuY3Bw
CShyZXZpc2lvbiAyNjEwMzMpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MZWdhY3lTZXNz
aW9uU3RhdGVDb2RpbmdOb25lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAog
I2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJEZWNvZGVyLmgiCiAjaW5jbHVk
ZSAiRW5jb2Rlci5oIgorI2luY2x1ZGUgIk1lc3NhZ2VOYW1lcy5oIgogI2luY2x1ZGUgIlNlc3Np
b25TdGF0ZS5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogCkBAIC0zNyw4
ICszOCw4IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBSZWZQdHI8QVBJOjpEYXRhPiBlbmNvZGVM
ZWdhY3lTZXNzaW9uU3RhdGUoY29uc3QgU2Vzc2lvblN0YXRlJiBzZXNzaW9uU3RhdGUpCiB7Ci0g
ICAgLy8gRklYTUU6IEknbSBub3Qgc3VyZSB3aGV0aGVyIHRoZXNlIGFyZSB0aGUgcHJvcGVyIGFy
Z3VtZW50cyBmb3IgdGhlIGVuY29kZXIuCi0gICAgSVBDOjpFbmNvZGVyIGVuY29kZXIoIklQQyIs
ICJMZWdhY3lTZXNzaW9uU3RhdGUiLCAwKTsKKyAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgdXNl
IFdURjo6UGVyc2lzdGVuY2U6OkVuY29kZXIgaW5zdGVhZC4KKyAgICBJUEM6OkVuY29kZXIgZW5j
b2RlcihNZXNzYWdlTmFtZTo6TGVnYWN5U2Vzc2lvblN0YXRlLCAwKTsKICAgICBlbmNvZGVyIDw8
IHNlc3Npb25TdGF0ZS5iYWNrRm9yd2FyZExpc3RTdGF0ZTsKICAgICBlbmNvZGVyIDw8IHNlc3Np
b25TdGF0ZS5yZW5kZXJUcmVlU2l6ZTsKICAgICBlbmNvZGVyIDw8IHNlc3Npb25TdGF0ZS5wcm92
aXNpb25hbFVSTDsKQEAgLTQ4LDE1ICs0OSwyNSBAQCBSZWZQdHI8QVBJOjpEYXRhPiBlbmNvZGVM
ZWdhY3lTZXNzaW9uU3RhCiBib29sIGRlY29kZUxlZ2FjeVNlc3Npb25TdGF0ZShjb25zdCB1aW50
OF90KiBkYXRhLCBzaXplX3QgZGF0YVNpemUsIFNlc3Npb25TdGF0ZSYgc2Vzc2lvblN0YXRlKQog
ewogICAgIElQQzo6RGVjb2RlciBkZWNvZGVyKGRhdGEsIGRhdGFTaXplLCBudWxscHRyLCBWZWN0
b3I8SVBDOjpBdHRhY2htZW50PigpKTsKKwogICAgIE9wdGlvbmFsPEJhY2tGb3J3YXJkTGlzdFN0
YXRlPiBiYWNrRm9yd2FyZExpc3RTdGF0ZTsKICAgICBkZWNvZGVyID4+IGJhY2tGb3J3YXJkTGlz
dFN0YXRlOwogICAgIGlmICghYmFja0ZvcndhcmRMaXN0U3RhdGUpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICBzZXNzaW9uU3RhdGUuYmFja0ZvcndhcmRMaXN0U3RhdGUgPSBXVEZNb3ZlKCpi
YWNrRm9yd2FyZExpc3RTdGF0ZSk7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShzZXNzaW9uU3Rh
dGUucmVuZGVyVHJlZVNpemUpKQorCisgICAgT3B0aW9uYWw8dWludDY0X3Q+IHJlbmRlclRyZWVT
aXplOworICAgIGRlY29kZXIgPj4gcmVuZGVyVHJlZVNpemU7CisgICAgaWYgKCFyZW5kZXJUcmVl
U2l6ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc2Vz
c2lvblN0YXRlLnByb3Zpc2lvbmFsVVJMKSkKKyAgICBzZXNzaW9uU3RhdGUucmVuZGVyVHJlZVNp
emUgPSAqcmVuZGVyVHJlZVNpemU7CisKKyAgICBPcHRpb25hbDxVUkw+IHByb3Zpc2lvbmFsVVJM
OworICAgIGRlY29kZXIgPj4gcHJvdmlzaW9uYWxVUkw7CisgICAgaWYgKCFwcm92aXNpb25hbFVS
TCkKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHNlc3Npb25TdGF0ZS5wcm92aXNpb25hbFVS
TCA9IFdURk1vdmUoKnByb3Zpc2lvbmFsVVJMKTsKKwogICAgIHJldHVybiB0cnVlOwogfQogCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHku
Y3BwCShyZXZpc2lvbiAyNjEwMzMpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNp
b25hbFBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxOSw3ICs1MTksNyBAQCB2b2lk
IFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRSZWNlaXZlTWVzCiAgICAgfQogI2VuZGlmCiAKLSAg
ICBMT0coUHJvY2Vzc1N3YXBwaW5nLCAiVW5oYW5kbGVkIG1lc3NhZ2UgJXM6OiVzIGZyb20gcHJv
dmlzaW9uYWwgcHJvY2VzcyIsIGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpLnRvU3RyaW5n
KCkuZGF0YSgpLCBkZWNvZGVyLm1lc3NhZ2VOYW1lKCkudG9TdHJpbmcoKS5kYXRhKCkpOworICAg
IExPRyhQcm9jZXNzU3dhcHBpbmcsICJVbmhhbmRsZWQgbWVzc2FnZSAlcyBmcm9tIHByb3Zpc2lv
bmFsIHByb2Nlc3MiLCBkZXNjcmlwdGlvbihkZWNvZGVyLm1lc3NhZ2VOYW1lKCkpKTsKIH0KIAog
dm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBzdGQ6OnVuaXF1ZV9w
dHI8SVBDOjpFbmNvZGVyPiYgcmVwbHlFbmNvZGVyKQpJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwCShyZXZpc2lvbiAyNjEwMzMpCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC02MSwzMyArNjEsMzIgQEAgUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gU3VzcGVuZGVk
UGFnZVBybwogfQogCiAjaWYgIUxPR19ESVNBQkxFRAotc3RhdGljIGNvbnN0IEhhc2hTZXQ8SVBD
OjpTdHJpbmdSZWZlcmVuY2U+JiBtZXNzYWdlTmFtZXNUb0lnbm9yZVdoaWxlU3VzcGVuZGVkKCkK
K3N0YXRpYyBjb25zdCBIYXNoU2V0PHVpbnQxNl90PiYgbWVzc2FnZU5hbWVzVG9JZ25vcmVXaGls
ZVN1c3BlbmRlZCgpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8SVBDOjpT
dHJpbmdSZWZlcmVuY2U+PiBtZXNzYWdlTmFtZXM7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PEhhc2hTZXQ8dWludDE2X3Q+PiBtZXNzYWdlTmFtZXM7CiAgICAgc3RhdGljIHN0ZDo6b25jZV9m
bGFnIG9uY2VGbGFnOwogICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7Ci0gICAgICAg
IG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoIkJhY2tGb3J3YXJkQWRkSXRlbSIpOwotICAgICAgICBt
ZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJDbGVhckFsbEVkaXRDb21tYW5kcyIpOwotICAgICAgICBt
ZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJEaWRDaGFuZ2VDb250ZW50U2l6ZSIpOwotICAgICAgICBt
ZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJEaWRDaGFuZ2VNYWluRG9jdW1lbnQiKTsKLSAgICAgICAg
bWVzc2FnZU5hbWVzLmdldCgpLmFkZCgiRGlkQ2hhbmdlUHJvZ3Jlc3MiKTsKLSAgICAgICAgbWVz
c2FnZU5hbWVzLmdldCgpLmFkZCgiRGlkQ29tbWl0TG9hZEZvckZyYW1lIik7Ci0gICAgICAgIG1l
c3NhZ2VOYW1lcy5nZXQoKS5hZGQoIkRpZERlc3Ryb3lOYXZpZ2F0aW9uIik7Ci0gICAgICAgIG1l
c3NhZ2VOYW1lcy5nZXQoKS5hZGQoIkRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lIik7Ci0g
ICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoIkRpZEZpbmlzaFByb2dyZXNzIik7Ci0gICAg
ICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoIkRpZENvbXBsZXRlUGFnZVRyYW5zaXRpb24iKTsK
LSAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZCgiRGlkRmlyc3RMYXlvdXRGb3JGcmFtZSIp
OwotICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJEaWRGaXJzdFZpc3VhbGx5Tm9uRW1w
dHlMYXlvdXRGb3JGcmFtZSIpOwotICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJEaWRO
YXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YSIpOwotICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCku
YWRkKCJEaWRSZWFjaExheW91dE1pbGVzdG9uZSIpOwotICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0
KCkuYWRkKCJEaWRSZXN0b3JlU2Nyb2xsUG9zaXRpb24iKTsKLSAgICAgICAgbWVzc2FnZU5hbWVz
LmdldCgpLmFkZCgiRGlkU3RhcnRQcm9ncmVzcyIpOwotICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0
KCkuYWRkKCJEaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lIik7Ci0gICAgICAgIG1lc3Nh
Z2VOYW1lcy5nZXQoKS5hZGQoIkVkaXRvclN0YXRlQ2hhbmdlZCIpOwotICAgICAgICBtZXNzYWdl
TmFtZXMuZ2V0KCkuYWRkKCJQYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3JEaWRDaGFuZ2UiKTsK
LSAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZCgiU2V0UmVuZGVyVHJlZVNpemUiKTsKLSAg
ICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZCgiU2V0U3RhdHVzVGV4dCIpOwotICAgICAgICBt
ZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJTZXROZXR3b3JrUmVxdWVzdHNJblByb2dyZXNzIik7Cisg
ICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoc3RhdGljX2Nhc3Q8dWludDE2X3Q+KElQQzo6
TWVzc2FnZU5hbWU6OldlYlBhZ2VQcm94eV9CYWNrRm9yd2FyZEFkZEl0ZW0pKTsKKyAgICAgICAg
bWVzc2FnZU5hbWVzLmdldCgpLmFkZChzdGF0aWNfY2FzdDx1aW50MTZfdD4oSVBDOjpNZXNzYWdl
TmFtZTo6V2ViUGFnZVByb3h5X0NsZWFyQWxsRWRpdENvbW1hbmRzKSk7CisgICAgICAgIG1lc3Nh
Z2VOYW1lcy5nZXQoKS5hZGQoc3RhdGljX2Nhc3Q8dWludDE2X3Q+KElQQzo6TWVzc2FnZU5hbWU6
OldlYlBhZ2VQcm94eV9EaWRDaGFuZ2VDb250ZW50U2l6ZSkpOworICAgICAgICBtZXNzYWdlTmFt
ZXMuZ2V0KCkuYWRkKHN0YXRpY19jYXN0PHVpbnQxNl90PihJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQ
YWdlUHJveHlfRGlkQ2hhbmdlTWFpbkRvY3VtZW50KSk7CisgICAgICAgIG1lc3NhZ2VOYW1lcy5n
ZXQoKS5hZGQoc3RhdGljX2Nhc3Q8dWludDE2X3Q+KElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VQ
cm94eV9EaWRDaGFuZ2VQcm9ncmVzcykpOworICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRk
KHN0YXRpY19jYXN0PHVpbnQxNl90PihJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlUHJveHlfRGlk
Q29tbWl0TG9hZEZvckZyYW1lKSk7CisgICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoc3Rh
dGljX2Nhc3Q8dWludDE2X3Q+KElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VQcm94eV9EaWREZXN0
cm95TmF2aWdhdGlvbikpOworICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKHN0YXRpY19j
YXN0PHVpbnQxNl90PihJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlUHJveHlfRGlkRmluaXNoRG9j
dW1lbnRMb2FkRm9yRnJhbWUpKTsKKyAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZChzdGF0
aWNfY2FzdDx1aW50MTZfdD4oSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZVByb3h5X0RpZEZpbmlz
aFByb2dyZXNzKSk7CisgICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoc3RhdGljX2Nhc3Q8
dWludDE2X3Q+KElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VQcm94eV9EaWRGaXJzdExheW91dEZv
ckZyYW1lKSk7CisgICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoc3RhdGljX2Nhc3Q8dWlu
dDE2X3Q+KElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VQcm94eV9EaWRGaXJzdFZpc3VhbGx5Tm9u
RW1wdHlMYXlvdXRGb3JGcmFtZSkpOworICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKHN0
YXRpY19jYXN0PHVpbnQxNl90PihJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlUHJveHlfRGlkTmF2
aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGEpKTsKKyAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFk
ZChzdGF0aWNfY2FzdDx1aW50MTZfdD4oSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZVByb3h5X0Rp
ZFJlYWNoTGF5b3V0TWlsZXN0b25lKSk7CisgICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQo
c3RhdGljX2Nhc3Q8dWludDE2X3Q+KElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VQcm94eV9EaWRS
ZXN0b3JlU2Nyb2xsUG9zaXRpb24pKTsKKyAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZChz
dGF0aWNfY2FzdDx1aW50MTZfdD4oSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZVByb3h5X0RpZFN0
YXJ0UHJvZ3Jlc3MpKTsKKyAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZChzdGF0aWNfY2Fz
dDx1aW50MTZfdD4oSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZVByb3h5X0RpZFN0YXJ0UHJvdmlz
aW9uYWxMb2FkRm9yRnJhbWUpKTsKKyAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZChzdGF0
aWNfY2FzdDx1aW50MTZfdD4oSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZVByb3h5X0VkaXRvclN0
YXRlQ2hhbmdlZCkpOworICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKHN0YXRpY19jYXN0
PHVpbnQxNl90PihJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlUHJveHlfUGFnZUV4dGVuZGVkQmFj
a2dyb3VuZENvbG9yRGlkQ2hhbmdlKSk7CisgICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQo
c3RhdGljX2Nhc3Q8dWludDE2X3Q+KElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VQcm94eV9TZXRS
ZW5kZXJUcmVlU2l6ZSkpOworICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKHN0YXRpY19j
YXN0PHVpbnQxNl90PihJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlUHJveHlfU2V0U3RhdHVzVGV4
dCkpOworICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKHN0YXRpY19jYXN0PHVpbnQxNl90
PihJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlUHJveHlfU2V0TmV0d29ya1JlcXVlc3RzSW5Qcm9n
cmVzcykpOwogICAgIH0pOwogCiAgICAgcmV0dXJuIG1lc3NhZ2VOYW1lczsKQEAgLTI1NCw4ICsy
NTMsOCBAQCB2b2lkIFN1c3BlbmRlZFBhZ2VQcm94eTo6ZGlkUmVjZWl2ZU1lc3NhCiAgICAgfQog
CiAjaWYgIUxPR19ESVNBQkxFRAotICAgIGlmICghbWVzc2FnZU5hbWVzVG9JZ25vcmVXaGlsZVN1
c3BlbmRlZCgpLmNvbnRhaW5zKGRlY29kZXIubWVzc2FnZU5hbWUoKSkpCi0gICAgICAgIExPRyhQ
cm9jZXNzU3dhcHBpbmcsICJTdXNwZW5kZWRQYWdlUHJveHkgcmVjZWl2ZWQgdW5leHBlY3RlZCBX
ZWJQYWdlUHJveHkgbWVzc2FnZSAnJXMnIiwgZGVjb2Rlci5tZXNzYWdlTmFtZSgpLnRvU3RyaW5n
KCkuZGF0YSgpKTsKKyAgICBpZiAoIW1lc3NhZ2VOYW1lc1RvSWdub3JlV2hpbGVTdXNwZW5kZWQo
KS5jb250YWlucyhzdGF0aWNfY2FzdDx1aW50MTZfdD4oZGVjb2Rlci5tZXNzYWdlTmFtZSgpKSkp
CisgICAgICAgIExPRyhQcm9jZXNzU3dhcHBpbmcsICJTdXNwZW5kZWRQYWdlUHJveHkgcmVjZWl2
ZWQgdW5leHBlY3RlZCBXZWJQYWdlUHJveHkgbWVzc2FnZSAnJXMnIiwgZGVzY3JpcHRpb24oZGVj
b2Rlci5tZXNzYWdlTmFtZSgpKSk7CiAjZW5kaWYKIH0KIApJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJldmlzaW9uIDI2MTAzMykKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMjgwLDggKzIyODAs
NiBAQCBwcml2YXRlOgogICAgIGNvbnN0IFN0cmluZyYgcGF5bWVudENvb3JkaW5hdG9yQm91bmRJ
bnRlcmZhY2VJZGVudGlmaWVyKGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JikgZmlu
YWw7CiAgICAgY29uc3QgU3RyaW5nJiBwYXltZW50Q29vcmRpbmF0b3JTb3VyY2VBcHBsaWNhdGlv
bkJ1bmRsZUlkZW50aWZpZXIoY29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmKSBmaW5h
bDsKICAgICBjb25zdCBTdHJpbmcmIHBheW1lbnRDb29yZGluYXRvclNvdXJjZUFwcGxpY2F0aW9u
U2Vjb25kYXJ5SWRlbnRpZmllcihjb25zdCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYpIGZp
bmFsOwotICAgIHZvaWQgcGF5bWVudENvb3JkaW5hdG9yQWRkTWVzc2FnZVJlY2VpdmVyKFdlYlBh
eW1lbnRDb29yZGluYXRvclByb3h5JiwgY29uc3QgSVBDOjpTdHJpbmdSZWZlcmVuY2UmLCBJUEM6
Ok1lc3NhZ2VSZWNlaXZlciYpIGZpbmFsOwotICAgIHZvaWQgcGF5bWVudENvb3JkaW5hdG9yUmVt
b3ZlTWVzc2FnZVJlY2VpdmVyKFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JiwgY29uc3QgSVBD
OjpTdHJpbmdSZWZlcmVuY2UmKSBmaW5hbDsKICNlbmRpZgogI2lmIEVOQUJMRShBUFBMRV9QQVkp
ICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgVUlWaWV3Q29udHJvbGxlciAqcGF5bWVudENv
b3JkaW5hdG9yUHJlc2VudGluZ1ZpZXdDb250cm9sbGVyKGNvbnN0IFdlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5JikgZmluYWw7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuY3BwCShyZXZpc2lvbiAyNjEwMzMpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg1MiwxNyArODUyLDEyIEBA
IHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldEludmFsaWRNZXNzYWdlQ2EKICAgICBzX2ludmFsaWRN
ZXNzYWdlQ2FsbGJhY2sgPSBpbnZhbGlkTWVzc2FnZUNhbGxiYWNrOwogfQogCi12b2lkIFdlYlBy
b2Nlc3NQb29sOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoY29uc3QgSVBDOjpTdHJpbmdSZWZl
cmVuY2UmIG1lc3NhZ2VSZWNlaXZlck5hbWUsIGNvbnN0IElQQzo6U3RyaW5nUmVmZXJlbmNlJiBt
ZXNzYWdlTmFtZSkKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2Fn
ZShJUEM6Ok1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lKQogewogICAgIGlmICghc19pbnZhbGlkTWVz
c2FnZUNhbGxiYWNrKQogICAgICAgICByZXR1cm47CiAKLSAgICBTdHJpbmdCdWlsZGVyIG1lc3Nh
Z2VOYW1lU3RyaW5nQnVpbGRlcjsKLSAgICBtZXNzYWdlTmFtZVN0cmluZ0J1aWxkZXIuYXBwZW5k
Q2hhcmFjdGVycyhtZXNzYWdlUmVjZWl2ZXJOYW1lLmRhdGEoKSwgbWVzc2FnZVJlY2VpdmVyTmFt
ZS5zaXplKCkpOwotICAgIG1lc3NhZ2VOYW1lU3RyaW5nQnVpbGRlci5hcHBlbmQoJy4nKTsKLSAg
ICBtZXNzYWdlTmFtZVN0cmluZ0J1aWxkZXIuYXBwZW5kQ2hhcmFjdGVycyhtZXNzYWdlTmFtZS5k
YXRhKCksIG1lc3NhZ2VOYW1lLnNpemUoKSk7Ci0KLSAgICBzX2ludmFsaWRNZXNzYWdlQ2FsbGJh
Y2sodG9BUEkoQVBJOjpTdHJpbmc6OmNyZWF0ZShtZXNzYWdlTmFtZVN0cmluZ0J1aWxkZXIudG9T
dHJpbmcoKSkucHRyKCkpKTsKKyAgICBzX2ludmFsaWRNZXNzYWdlQ2FsbGJhY2sodG9BUEkoQVBJ
OjpTdHJpbmc6OmNyZWF0ZShkZXNjcmlwdGlvbihtZXNzYWdlTmFtZSkpLnB0cigpKSk7CiB9CiAK
IHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlc29sdmVQYXRoc0ZvclNhbmRib3hFeHRlbnNpb25zKCkK
QEAgLTE2ODEsMjIgKzE2NzYsMjIgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6c3ludGhlc2l6ZUFw
cElzQmFjawogICAgIGVuc3VyZU5ldHdvcmtQcm9jZXNzKCkuc3ludGhlc2l6ZUFwcElzQmFja2dy
b3VuZChiYWNrZ3JvdW5kKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzUG9vbDo6YWRkTWVzc2FnZVJl
Y2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIElQQzo6TWVz
c2FnZVJlY2VpdmVyJiBtZXNzYWdlUmVjZWl2ZXIpCit2b2lkIFdlYlByb2Nlc3NQb29sOjphZGRN
ZXNzYWdlUmVjZWl2ZXIoSVBDOjpSZWNlaXZlck5hbWUgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBD
OjpNZXNzYWdlUmVjZWl2ZXImIG1lc3NhZ2VSZWNlaXZlcikKIHsKICAgICBtX21lc3NhZ2VSZWNl
aXZlck1hcC5hZGRNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSwgbWVzc2FnZVJl
Y2VpdmVyKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzUG9vbDo6YWRkTWVzc2FnZVJlY2VpdmVyKElQ
Qzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0
aW9uSUQsIElQQzo6TWVzc2FnZVJlY2VpdmVyJiBtZXNzYWdlUmVjZWl2ZXIpCit2b2lkIFdlYlBy
b2Nlc3NQb29sOjphZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpSZWNlaXZlck5hbWUgbWVzc2FnZVJl
Y2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgSVBDOjpNZXNzYWdlUmVjZWl2ZXIm
IG1lc3NhZ2VSZWNlaXZlcikKIHsKICAgICBtX21lc3NhZ2VSZWNlaXZlck1hcC5hZGRNZXNzYWdl
UmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRCwgbWVzc2FnZVJlY2Vp
dmVyKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQ
Qzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUpCit2b2lkIFdlYlByb2Nlc3NQ
b29sOjpyZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpSZWNlaXZlck5hbWUgbWVzc2FnZVJlY2Vp
dmVyTmFtZSkKIHsKICAgICBtX21lc3NhZ2VSZWNlaXZlck1hcC5yZW1vdmVNZXNzYWdlUmVjZWl2
ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlbW92
ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1l
LCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKQordm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVtb3ZlTWVz
c2FnZVJlY2VpdmVyKElQQzo6UmVjZWl2ZXJOYW1lIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2
NF90IGRlc3RpbmF0aW9uSUQpCiB7CiAgICAgbV9tZXNzYWdlUmVjZWl2ZXJNYXAucmVtb3ZlTWVz
c2FnZVJlY2VpdmVyKG1lc3NhZ2VSZWNlaXZlck5hbWUsIGRlc3RpbmF0aW9uSUQpOwogfQpJbmRl
eDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCShyZXZpc2lvbiAyNjEw
MzMpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xNDgsMjEgKzE0OCwyMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fc3VwcGxlbWVu
dHMuYWRkKFQ6OnN1cHBsZW1lbnROYW1lKCksIFQ6OmNyZWF0ZSh0aGlzKSk7CiAgICAgfQogCi0g
ICAgdm9pZCBhZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJl
Y2VpdmVyTmFtZSwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImKTsKLSAgICB2b2lkIGFkZE1lc3NhZ2VS
ZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCB1aW50NjRf
dCBkZXN0aW5hdGlvbklELCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYpOwotICAgIHZvaWQgcmVtb3Zl
TWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUp
OwotICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1l
c3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpOworICAgIHZvaWQgYWRk
TWVzc2FnZVJlY2VpdmVyKElQQzo6UmVjZWl2ZXJOYW1lLCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYp
OworICAgIHZvaWQgYWRkTWVzc2FnZVJlY2VpdmVyKElQQzo6UmVjZWl2ZXJOYW1lLCB1aW50NjRf
dCBkZXN0aW5hdGlvbklELCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYpOworICAgIHZvaWQgcmVtb3Zl
TWVzc2FnZVJlY2VpdmVyKElQQzo6UmVjZWl2ZXJOYW1lKTsKKyAgICB2b2lkIHJlbW92ZU1lc3Nh
Z2VSZWNlaXZlcihJUEM6OlJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCk7CiAK
ICAgICBXZWJCYWNrRm9yd2FyZENhY2hlJiBiYWNrRm9yd2FyZENhY2hlKCkgeyByZXR1cm4gbV9i
YWNrRm9yd2FyZENhY2hlLmdldCgpOyB9CiAgICAgCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
Ci0gICAgdm9pZCBhZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2Fn
ZVJlY2VpdmVyTmFtZSwgT2JqZWN0SWRlbnRpZmllcjxUPiBkZXN0aW5hdGlvbklELCBJUEM6Ok1l
c3NhZ2VSZWNlaXZlciYgcmVjZWl2ZXIpCisgICAgdm9pZCBhZGRNZXNzYWdlUmVjZWl2ZXIoSVBD
OjpSZWNlaXZlck5hbWUgbWVzc2FnZVJlY2VpdmVyTmFtZSwgT2JqZWN0SWRlbnRpZmllcjxUPiBk
ZXN0aW5hdGlvbklELCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYgcmVjZWl2ZXIpCiAgICAgewogICAg
ICAgICBhZGRNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25J
RC50b1VJbnQ2NCgpLCByZWNlaXZlcik7CiAgICAgfQogICAgIAogICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPgotICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJl
bmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIE9iamVjdElkZW50aWZpZXI8VD4gZGVzdGluYXRpb25J
RCkKKyAgICB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlJlY2VpdmVyTmFtZSBtZXNz
YWdlUmVjZWl2ZXJOYW1lLCBPYmplY3RJZGVudGlmaWVyPFQ+IGRlc3RpbmF0aW9uSUQpCiAgICAg
ewogICAgICAgICByZW1vdmVNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSwgZGVz
dGluYXRpb25JRC50b1VJbnQ2NCgpKTsKICAgICB9CkBAIC00MTgsNyArNDE4LDcgQEAgcHVibGlj
OgogI2VuZGlmCiAKICAgICBzdGF0aWMgdm9pZCBzZXRJbnZhbGlkTWVzc2FnZUNhbGxiYWNrKHZv
aWQgKCopKFdLU3RyaW5nUmVmKSk7Ci0gICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRN
ZXNzYWdlKGNvbnN0IElQQzo6U3RyaW5nUmVmZXJlbmNlJiBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBj
b25zdCBJUEM6OlN0cmluZ1JlZmVyZW5jZSYgbWVzc2FnZU5hbWUpOworICAgIHN0YXRpYyB2b2lk
IGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6Ok1lc3NhZ2VOYW1lKTsKIAogICAgIGJvb2wg
aXNVUkxLbm93bkhTVFNIb3N0KGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKSBjb25zdDsKICAgICB2
b2lkIHJlc2V0SFNUU0hvc3RzKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQcm94eS5jcHAJKHJldmlzaW9uIDI2MTAzMykKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2MSw4ICsxNjEs
OCBAQCBjbGFzcyBVSVByb3h5Rm9yQ2FwdHVyZSBmaW5hbCA6IHB1YmxpYyBVCiBwdWJsaWM6CiAg
ICAgZXhwbGljaXQgVUlQcm94eUZvckNhcHR1cmUoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzKSA6
IG1fcHJvY2Vzcyhwcm9jZXNzKSB7IH0KIHByaXZhdGU6Ci0gICAgdm9pZCBhZGRNZXNzYWdlUmVj
ZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpNZXNz
YWdlUmVjZWl2ZXImIHJlY2VpdmVyKSBmaW5hbCB7IG1fcHJvY2Vzcy5hZGRNZXNzYWdlUmVjZWl2
ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSwgcmVjZWl2ZXIpOyB9Ci0gICAgdm9pZCByZW1vdmVNZXNz
YWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSkgZmlu
YWwgeyBtX3Byb2Nlc3MucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKG1lc3NhZ2VSZWNlaXZlck5hbWUp
OyB9CisgICAgdm9pZCBhZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpSZWNlaXZlck5hbWUgbWVzc2Fn
ZVJlY2VpdmVyTmFtZSwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImIHJlY2VpdmVyKSBmaW5hbCB7IG1f
cHJvY2Vzcy5hZGRNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSwgcmVjZWl2ZXIp
OyB9CisgICAgdm9pZCByZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpSZWNlaXZlck5hbWUgbWVz
c2FnZVJlY2VpdmVyTmFtZSkgZmluYWwgeyBtX3Byb2Nlc3MucmVtb3ZlTWVzc2FnZVJlY2VpdmVy
KG1lc3NhZ2VSZWNlaXZlck5hbWUpOyB9CiAgICAgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9u
KCkgZmluYWwgeyByZXR1cm4gKm1fcHJvY2Vzcy5jb25uZWN0aW9uKCk7IH0KICAgICBMb2dnZXIm
IGxvZ2dlcigpIGZpbmFsCiAgICAgewpAQCAtMzUyLDcgKzM1Miw3IEBAIHZvaWQgV2ViUHJvY2Vz
c1Byb3h5OjpwbGF0Zm9ybUdldExhdW5jaE8KIGJvb2wgV2ViUHJvY2Vzc1Byb3h5OjpzaG91bGRT
ZW5kUGVuZGluZ01lc3NhZ2UoY29uc3QgUGVuZGluZ01lc3NhZ2UmIG1lc3NhZ2UpCiB7CiAjaWYg
SEFWRShTQU5EQk9YX0lTU1VFX1JFQURfRVhURU5TSU9OX1RPX1BST0NFU1NfQllfQVVESVRfVE9L
RU4pCi0gICAgaWYgKG1lc3NhZ2UuZW5jb2Rlci0+bWVzc2FnZU5hbWUoKSA9PSAiTG9hZFJlcXVl
c3RXYWl0aW5nRm9yUHJvY2Vzc0xhdW5jaCIpIHsKKyAgICBpZiAobWVzc2FnZS5lbmNvZGVyLT5t
ZXNzYWdlTmFtZSgpID09IElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfTG9hZFJlcXVlc3RXYWl0
aW5nRm9yUHJvY2Vzc0xhdW5jaCkgewogICAgICAgICBhdXRvIGJ1ZmZlciA9IG1lc3NhZ2UuZW5j
b2Rlci0+YnVmZmVyKCk7CiAgICAgICAgIGF1dG8gYnVmZmVyU2l6ZSA9IG1lc3NhZ2UuZW5jb2Rl
ci0+YnVmZmVyU2l6ZSgpOwogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpEZWNvZGVyPiBk
ZWNvZGVyID0gbWFrZVVuaXF1ZTxJUEM6OkRlY29kZXI+KGJ1ZmZlciwgYnVmZmVyU2l6ZSwgbnVs
bHB0ciwgVmVjdG9yPElQQzo6QXR0YWNobWVudD4geyB9KTsKQEAgLTgzOSwxMSArODM5LDExIEBA
IHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzRGlkVGVybWluYXQKICAgICB9CiB9CiAKLXZv
aWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiBjb25uZWN0aW9uLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1l
LCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZSkKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5
OjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJ
UEM6Ok1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lKQogewotICAgIGxvZ0ludmFsaWRNZXNzYWdlKGNv
bm5lY3Rpb24sIG1lc3NhZ2VSZWNlaXZlck5hbWUsIG1lc3NhZ2VOYW1lKTsKKyAgICBsb2dJbnZh
bGlkTWVzc2FnZShjb25uZWN0aW9uLCBtZXNzYWdlTmFtZSk7CiAKLSAgICBXZWJQcm9jZXNzUG9v
bDo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKG1lc3NhZ2VSZWNlaXZlck5hbWUsIG1lc3NhZ2VO
YW1lKTsKKyAgICBXZWJQcm9jZXNzUG9vbDo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKG1lc3Nh
Z2VOYW1lKTsKIAogICAgIC8vIFRlcm1pbmF0ZSB0aGUgV2ViQ29udGVudCBwcm9jZXNzLgogICAg
IHRlcm1pbmF0ZSgpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1By
b3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1By
b3h5LmgJKHJldmlzaW9uIDI2MTAzMykKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NTMsNyArNDUzLDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2Rl
ciYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mKSBvdmVycmlkZTsKLSAg
ICB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OlN0
cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBt
ZXNzYWdlTmFtZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlTmFtZSkgb3ZlcnJpZGU7CiAKICAgICAvLyBS
ZXNwb25zaXZlbmVzc1RpbWVyOjpDbGllbnQKICAgICB2b2lkIGRpZEJlY29tZVVucmVzcG9uc2l2
ZSgpIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVXNlck1l
ZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuaAkocmV2aXNpb24gMjYx
MDMzKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1h
bmFnZXJQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw4ICs1MSw4IEBAIHB1YmxpYzoKICAg
ICBjbGFzcyBDb25uZWN0aW9uUHJveHkgewogICAgIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB+
Q29ubmVjdGlvblByb3h5KCkgPSBkZWZhdWx0OwotICAgICAgICB2aXJ0dWFsIHZvaWQgYWRkTWVz
c2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlLCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYp
ID0gMDsKLSAgICAgICAgdmlydHVhbCB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0
cmluZ1JlZmVyZW5jZSkgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgYWRkTWVzc2FnZVJlY2Vp
dmVyKElQQzo6UmVjZWl2ZXJOYW1lLCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYpID0gMDsKKyAgICAg
ICAgdmlydHVhbCB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlJlY2VpdmVyTmFtZSkg
PSAwOwogICAgICAgICB2aXJ0dWFsIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbigpID0gMDsK
ICAgICAgICAgdmlydHVhbCBib29sIHdpbGxTdGFydENhcHR1cmUoV2ViQ29yZTo6Q2FwdHVyZURl
dmljZTo6RGV2aWNlVHlwZSkgY29uc3QgPSAwOwogICAgICAgICB2aXJ0dWFsIExvZ2dlciYgbG9n
Z2VyKCkgPSAwOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVBy
b3h5Q29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViUGFnZVByb3h5Q29jb2EubW0JKHJldmlzaW9uIDI2MTAzMykKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0y
OTAsMTYgKzI5MCw2IEBAIGNvbnN0IFN0cmluZyYgV2ViUGFnZVByb3h5OjpwYXltZW50Q29vcmQK
ICAgICByZXR1cm4gd2Vic2l0ZURhdGFTdG9yZSgpLmNvbmZpZ3VyYXRpb24oKS5zb3VyY2VBcHBs
aWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIoKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnBh
eW1lbnRDb29yZGluYXRvckFkZE1lc3NhZ2VSZWNlaXZlcihXZWJQYXltZW50Q29vcmRpbmF0b3JQ
cm94eSYsIGNvbnN0IElQQzo6U3RyaW5nUmVmZXJlbmNlJiBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBJ
UEM6Ok1lc3NhZ2VSZWNlaXZlciYgbWVzc2FnZVJlY2VpdmVyKQotewotICAgIHByb2Nlc3MoKS5h
ZGRNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSwgbV93ZWJQYWdlSUQsIG1lc3Nh
Z2VSZWNlaXZlcik7Ci19Ci0KLXZvaWQgV2ViUGFnZVByb3h5OjpwYXltZW50Q29vcmRpbmF0b3JS
ZW1vdmVNZXNzYWdlUmVjZWl2ZXIoV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmLCBjb25zdCBJ
UEM6OlN0cmluZ1JlZmVyZW5jZSYgbWVzc2FnZVJlY2VpdmVyTmFtZSkKLXsKLSAgICBwcm9jZXNz
KCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKG1lc3NhZ2VSZWNlaXZlck5hbWUsIG1fd2ViUGFnZUlE
KTsKLX0KLQogI2VuZGlmCiAKICNpZiBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkuY3BwCShyZXZp
c2lvbiAyNjEwMzMpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1By
b3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjExLDExICsyMTEsMTEgQEAgdm9pZCBHUFVQcm9j
ZXNzUHJveHk6OmRpZENsb3NlKElQQzo6Q29ubgogICAgIGdwdVByb2Nlc3NDcmFzaGVkKCk7CiB9
CiAKLXZvaWQgR1BVUHJvY2Vzc1Byb3h5OjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2
ZXJOYW1lLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZSkKK3ZvaWQgR1BVUHJvY2Vz
c1Byb3h5OjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0
aW9uLCBJUEM6Ok1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lKQogewotICAgIGxvZ0ludmFsaWRNZXNz
YWdlKGNvbm5lY3Rpb24sIG1lc3NhZ2VSZWNlaXZlck5hbWUsIG1lc3NhZ2VOYW1lKTsKKyAgICBs
b2dJbnZhbGlkTWVzc2FnZShjb25uZWN0aW9uLCBtZXNzYWdlTmFtZSk7CiAKLSAgICBXZWJQcm9j
ZXNzUG9vbDo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKG1lc3NhZ2VSZWNlaXZlck5hbWUsIG1l
c3NhZ2VOYW1lKTsKKyAgICBXZWJQcm9jZXNzUG9vbDo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdl
KG1lc3NhZ2VOYW1lKTsKIAogICAgIC8vIFRlcm1pbmF0ZSB0aGUgR1BVIHByb2Nlc3MuCiAgICAg
dGVybWluYXRlKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vz
c1Byb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR1BVL0dQVVBy
b2Nlc3NQcm94eS5oCShyZXZpc2lvbiAyNjEwMzMpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMCw3ICsxMDAsNyBA
QCBwcml2YXRlOgogICAgIC8vIElQQzo6Q29ubmVjdGlvbjo6Q2xpZW50CiAgICAgdm9pZCBkaWRS
ZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsK
ICAgICB2b2lkIGRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQg
ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6U3RyaW5nUmVm
ZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VO
YW1lKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VOYW1lKSBvdmVycmlkZTsKIAogI2lmIEhBVkUoVklTSUJJ
TElUWV9QUk9QQUdBVElPTl9WSUVXKQogICAgIHZvaWQgZGlkQ3JlYXRlQ29udGV4dEZvclZpc2li
aWxpdHlQcm9wYWdhdGlvbihMYXllckhvc3RpbmdDb250ZXh0SUQpOwpJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
Y3BwCShyZXZpc2lvbiAyNjEwMzMpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzUsOSArMjc1LDkg
QEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRDbG9zZShJUEM6OgogICAgIG5ldHdvcmtQ
cm9jZXNzQ3Jhc2hlZCgpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZFJlY2Vp
dmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6U3RyaW5n
UmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3Nh
Z2VOYW1lKQordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRSZWNlaXZlSW52YWxpZE1lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6Ok1lc3NhZ2VOYW1lIG1lc3NhZ2VO
YW1lKQogewotICAgIGxvZ0ludmFsaWRNZXNzYWdlKGNvbm5lY3Rpb24sIG1lc3NhZ2VSZWNlaXZl
ck5hbWUsIG1lc3NhZ2VOYW1lKTsKKyAgICBsb2dJbnZhbGlkTWVzc2FnZShjb25uZWN0aW9uLCBt
ZXNzYWdlTmFtZSk7CiAgICAgdGVybWluYXRlKCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCShyZXZp
c2lvbiAyNjEwMzMpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMjQ0LDcgKzI0NCw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29k
ZXImKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIG92
ZXJyaWRlOwogICAgIHZvaWQgZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJikgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpT
dHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpTdHJpbmdSZWZlcmVuY2Ug
bWVzc2FnZU5hbWUpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZU5hbWUpIG92ZXJyaWRlOwogICAgIHZvaWQg
ZGlkUmVjZWl2ZVN5bmNOZXR3b3JrUHJvY2Vzc1Byb3h5TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
LCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpOwogCiAgICAg
Ly8gTWVzc2FnZSBoYW5kbGVycwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5Qcm9jZXNzUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmNwcAkocmV2aXNpb24gMjYxMDMzKQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yMTQsOSArMjE0LDkgQEAgdm9pZCBQbHVnaW5Qcm9jZXNzUHJv
eHk6OmRpZENsb3NlKElQQzo6QwogICAgIHBsdWdpblByb2Nlc3NDcmFzaGVkT3JGYWlsZWRUb0xh
dW5jaCgpOwogfQogCi12b2lkIFBsdWdpblByb2Nlc3NQcm94eTo6ZGlkUmVjZWl2ZUludmFsaWRN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpTdHJpbmdSZWZlcmVuY2Ug
bWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUpCit2
b2lkIFBsdWdpblByb2Nlc3NQcm94eTo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpNZXNzYWdlTmFtZSBtZXNzYWdlTmFtZSkKIHsKLSAg
ICBsb2dJbnZhbGlkTWVzc2FnZShjb25uZWN0aW9uLCBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBtZXNz
YWdlTmFtZSk7CisgICAgbG9nSW52YWxpZE1lc3NhZ2UoY29ubmVjdGlvbiwgbWVzc2FnZU5hbWUp
OwogICAgIHRlcm1pbmF0ZSgpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmgJKHJldmlzaW9uIDI2MTAzMykK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEwNCw3ICsxMDQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlk
UmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6
dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRpZENsb3Nl
KElQQzo6Q29ubmVjdGlvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNl
aXZlck5hbWUsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lKSBvdmVycmlkZTsKKyAg
ICB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1l
c3NhZ2VOYW1lKSBvdmVycmlkZTsKIAogICAgIC8vIFByb2Nlc3NMYXVuY2hlcjo6Q2xpZW50CiAg
ICAgdm9pZCBkaWRGaW5pc2hMYXVuY2hpbmcoUHJvY2Vzc0xhdW5jaGVyKiwgSVBDOjpDb25uZWN0
aW9uOjpJZGVudGlmaWVyKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDI2MTAzMykKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzg1LDcgKzc4NSw3IEBAIHZv
aWQgV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjoKICAgICB9CiAjZW5kaWYKIAot
ICAgIExPR19FUlJPUigiVW5oYW5kbGVkIHdlYiBwcm9jZXNzIG1lc3NhZ2UgJyVzOjolcycgKGRl
c3RpbmF0aW9uOiAlIiBQUkl1NjQgIiBwaWQ6ICVkKSIsIGRlY29kZXIubWVzc2FnZVJlY2VpdmVy
TmFtZSgpLnRvU3RyaW5nKCkuZGF0YSgpLCBkZWNvZGVyLm1lc3NhZ2VOYW1lKCkudG9TdHJpbmco
KS5kYXRhKCksIGRlY29kZXIuZGVzdGluYXRpb25JRCgpLCBzdGF0aWNfY2FzdDxpbnQ+KGdldEN1
cnJlbnRQcm9jZXNzSUQoKSkpOworICAgIExPR19FUlJPUigiVW5oYW5kbGVkIHdlYiBwcm9jZXNz
IG1lc3NhZ2UgJyVzJyAoZGVzdGluYXRpb246ICUiIFBSSXU2NCAiIHBpZDogJWQpIiwgZGVzY3Jp
cHRpb24oZGVjb2Rlci5tZXNzYWdlTmFtZSgpKSwgZGVjb2Rlci5kZXN0aW5hdGlvbklEKCksIHN0
YXRpY19jYXN0PGludD4oZ2V0Q3VycmVudFByb2Nlc3NJRCgpKSk7CiB9CiAKIFdlYkZyYW1lKiBX
ZWJQcm9jZXNzOjp3ZWJGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCkgY29uc3QKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5l
Y3Rpb24uY3BwCShyZXZpc2lvbiAyNjEwMzMpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzMsNyArNzMs
NyBAQCB2b2lkIEdQVVByb2Nlc3NDb25uZWN0aW9uOjpkaWRDbG9zZShJUEM6CiB7CiB9CiAKLXZv
aWQgR1BVUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSwgSVBDOjpTdHJpbmdSZWZlcmVuY2UpCit2
b2lkIEdQVVByb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlTmFtZSkKIHsKIH0KIApJbmRleDogU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaAkocmV2aXNp
b24gMjYxMDMzKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29u
bmVjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC04MCw3ICs4MCw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJl
Y2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwogICAg
IHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2Rl
ciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JikgZmluYWw7Ci0gICAgdm9pZCBkaWRS
ZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpTdHJpbmdSZWZlcmVu
Y2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUp
IG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYsIElQQzo6TWVzc2FnZU5hbWUpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBkaXNwYXRjaE1l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CiAgICAgYm9vbCBkaXNwYXRj
aFN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVl
X3B0cjxJUEM6OkVuY29kZXI+Jik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5z
cGVjdG9yL1dlYkluc3BlY3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yLmgJKHJldmlzaW9uIDI2MTAzMykKKysrIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogCiAgICAgLy8gSVBDOjpDb25uZWN0aW9uOjpD
bGllbnQKICAgICB2b2lkIGRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYpIG92ZXJyaWRlIHsgY2xv
c2UoKTsgfQotICAgIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYsIElQQzo6U3RyaW5nUmVmZXJlbmNlLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSkgb3ZlcnJpZGUg
eyBjbG9zZSgpOyB9CisgICAgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiwgSVBDOjpNZXNzYWdlTmFtZSkgb3ZlcnJpZGUgeyBjbG9zZSgpOyB9CiAKICAgICB2
b2lkIHNob3coKTsKICAgICB2b2lkIGNsb3NlKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSS5oCShyZXZpc2lvbiAyNjEw
MzMpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJ
LmgJKHdvcmtpbmcgY29weSkKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogCiAgICAgLy8gSVBD
OjpDb25uZWN0aW9uOjpDbGllbnQKICAgICB2b2lkIGRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYp
IG92ZXJyaWRlIHsgLyogRG8gbm90aGluZywgdGhlIGluc3BlY3RlZCBwYWdlIHByb2Nlc3MgbWF5
IGhhdmUgY3Jhc2hlZCBhbmQgbWF5IGJlIGdldHRpbmcgcmVwbGFjZWQuICovIH0KLSAgICB2b2lk
IGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OlN0cmluZ1Jl
ZmVyZW5jZSwgSVBDOjpTdHJpbmdSZWZlcmVuY2UpIG92ZXJyaWRlIHsgY2xvc2VXaW5kb3coKTsg
fQorICAgIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQ
Qzo6TWVzc2FnZU5hbWUpIG92ZXJyaWRlIHsgY2xvc2VXaW5kb3coKTsgfQogCiAgICAgLy8gQ2Fs
bGVkIGJ5IFdlYkluc3BlY3RvclVJIG1lc3NhZ2VzCiAgICAgdm9pZCBlc3RhYmxpc2hDb25uZWN0
aW9uKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgaW5zcGVjdGVkUGFnZUlkZW50aWZpZXIsIGNvbnN0
IERlYnVnZ2FibGVJbmZvRGF0YSYsIGJvb2wgdW5kZXJUZXN0LCB1bnNpZ25lZCBpbnNwZWN0aW9u
TGV2ZWwpOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCShyZXZpc2lvbiAyNjEwMzMp
CisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTksNyArMjE5LDcgQEAgdm9pZCBOZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb246OmRpZENsb3NlKAogI2VuZGlmCiB9CiAKLXZvaWQgTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiwgSVBDOjpTdHJpbmdSZWZlcmVuY2UsIElQQzo6U3RyaW5nUmVmZXJlbmNlKQordm9pZCBOZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mLCBJUEM6Ok1lc3NhZ2VOYW1lKQogewogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24uaAkocmV2aXNpb24gMjYxMDMzKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTk4LDcgKzk4
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6
OkVuY29kZXI+Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24m
KSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6OlN0
cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZl
SW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlTmFtZSkgb3ZlcnJp
ZGU7CiAKICAgICB2b2lkIGRpZEZpbmlzaFBpbmdMb2FkKHVpbnQ2NF90IHBpbmdMb2FkSWRlbnRp
ZmllciwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiYpOwogICAgIHZvaWQgZGlkRmluaXNoUHJlY29ubmVjdGlvbih1aW50NjRfdCBwcmVjb25uZWN0
aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmKTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNz
Q29ubmVjdGlvbi5jcHAJKHJldmlzaW9uIDI2MTAzMykKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTI4LDcgKzEyOCw3IEBAIHZvaWQgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZENsb3Nl
KEkKICAgICB9CiB9CiAKLXZvaWQgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVJ
bnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSwgSVBD
OjpTdHJpbmdSZWZlcmVuY2UpCit2b2lkIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNl
aXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlTmFtZSkKIHsK
IH0KIApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vz
c0Nvbm5lY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi5oCShyZXZpc2lvbiAyNjEwMzMpCisrKyBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi5oCSh3
b3JraW5nIGNvcHkpCkBAIC02Niw3ICs2Niw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNl
aXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKICAg
ICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29k
ZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIG92ZXJyaWRlOwogICAgIHZvaWQg
ZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZl
SW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVz
c2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUpIG92ZXJy
aWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYs
IElQQzo6TWVzc2FnZU5hbWUpIG92ZXJyaWRlOwogCiAgICAgLy8gTWVzc2FnZSBoYW5kbGVycy4K
ICAgICB2b2lkIGRpZFJlY2VpdmVTeW5jUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29k
ZXI+Jik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXll
clRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJl
ZURyYXdpbmdBcmVhLm1tCShyZXZpc2lvbiAyNjEwMzMpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTM4NSw3ICszODUsNyBAQCB2b2lkIFJlbW90ZUxheWVyVHJl
ZURyYXdpbmdBcmVhOjp1cGRhdGVSCiAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlTGF5ZXJUcmVl
RHJhd2luZ0FyZWFQcm94eTo6V2lsbENvbW1pdExheWVyVHJlZShsYXllclRyYW5zYWN0aW9uLnRy
YW5zYWN0aW9uSUQoKSkpOwogCiAgICAgTWVzc2FnZXM6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdB
cmVhUHJveHk6OkNvbW1pdExheWVyVHJlZSBtZXNzYWdlKGxheWVyVHJhbnNhY3Rpb24sIHNjcm9s
bGluZ1RyYW5zYWN0aW9uKTsKLSAgICBhdXRvIGNvbW1pdEVuY29kZXIgPSBtYWtlVW5pcXVlPElQ
Qzo6RW5jb2Rlcj4oTWVzc2FnZXM6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OkNv
bW1pdExheWVyVHJlZTo6cmVjZWl2ZXJOYW1lKCksIE1lc3NhZ2VzOjpSZW1vdGVMYXllclRyZWVE
cmF3aW5nQXJlYVByb3h5OjpDb21taXRMYXllclRyZWU6Om5hbWUoKSwgbV9pZGVudGlmaWVyLnRv
VUludDY0KCkpOworICAgIGF1dG8gY29tbWl0RW5jb2RlciA9IG1ha2VVbmlxdWU8SVBDOjpFbmNv
ZGVyPihNZXNzYWdlczo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6Q29tbWl0TGF5
ZXJUcmVlOjpuYW1lKCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsKICAgICBjb21taXRFbmNv
ZGVyLT5lbmNvZGUobWVzc2FnZS5hcmd1bWVudHMoKSk7CiAKICAgICAvLyBGSVhNRTogTW92ZSBh
bGwgYmFja2luZyBzdG9yZSBmbHVzaGluZyBtYW5hZ2VtZW50IHRvIFJlbW90ZUxheWVyQmFja2lu
Z1N0b3JlQ29sbGVjdGlvbi4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398390</attachid>
            <date>2020-05-04 10:45:55 -0700</date>
            <delta_ts>2020-05-06 09:54:01 -0700</delta_ts>
            <desc>patch</desc>
            <filename>attachment.cgi.patch</filename>
            <type>text/plain</type>
            <size>312782</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNjEwMzMpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDIwLTA1LTAxICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVkdWNlIElQQyBvdmVyaGVhZCBm
b3IgbWVzc2FnZSByZWNlaXZlciBuYW1lIGFuZCBtZXNzYWdlIG5hbWUgdG8gMiBieXRlcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjExMTEyCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvRW51bVRy
YWl0cy5oOgorCiAyMDIwLTA1LTAxICBEb24gT2xtc3RlYWQgIDxkb24ub2xtc3RlYWRAc29ueS5j
b20+CiAKICAgICAgICAgW0dUS10gQWRkIGFkZGl0aW9uYWwgZXhwb3J0cyB0byBzdXBwb3J0IGhp
ZGRlbiB2aXNpYmlsaXR5CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9FbnVtVHJhaXRzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dURi93dGYvRW51bVRyYWl0cy5oCShyZXZpc2lvbiAyNjEwMzMpCisr
KyBTb3VyY2UvV1RGL3d0Zi9FbnVtVHJhaXRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUx
LDkgQEAgc3RydWN0IEVudW1WYWx1ZUNoZWNrZXI8VCwgRW51bVZhbHVlczxFPgogICAgIH0KIH07
CiAKLXRlbXBsYXRlPHR5cGVuYW1lIEUsIHR5cGVuYW1lIFQsIHN0ZDo6ZW5hYmxlX2lmX3Q8c3Rk
Ojppc19lbnVtPEU+Ojp2YWx1ZSAmJiAhc3RkOjppc19zYW1lPHN0ZDo6dW5kZXJseWluZ190eXBl
X3Q8RT4sIGJvb2w+Ojp2YWx1ZT4qID0gbnVsbHB0cj4KK3RlbXBsYXRlPHR5cGVuYW1lIFU+IGNs
YXNzIEhhc0N1c3RvbUlzVmFsaWRFbnVtIDogcHVibGljIHN0ZDo6ZmFsc2VfdHlwZSB7IH07CisK
K3RlbXBsYXRlPHR5cGVuYW1lIEUsIHR5cGVuYW1lIFQsIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjpp
c19lbnVtPEU+Ojp2YWx1ZSAmJiAhc3RkOjppc19zYW1lPHN0ZDo6dW5kZXJseWluZ190eXBlX3Q8
RT4sIGJvb2w+Ojp2YWx1ZSAmJiAhSGFzQ3VzdG9tSXNWYWxpZEVudW08RT46OnZhbHVlPiogPSBu
dWxscHRyPgogY29uc3RleHByIGJvb2wgaXNWYWxpZEVudW0oVCB0KQogewogICAgIHN0YXRpY19h
c3NlcnQoc2l6ZW9mKFQpID49IHN0ZDo6dW5kZXJseWluZ190eXBlX3Q8RT4oKSwgIkludGVncmFs
IHR5cGUgbXVzdCBiZSBhdCBsZWFzdCB0aGUgc2l6ZSBvZiB0aGUgdW5kZXJseWluZyBlbnVtIHR5
cGUiKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjEwMzMpCisrKyBTb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4NiBAQAorMjAyMC0wNS0wMSAgQWxl
eCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFJlZHVj
ZSBJUEMgb3ZlcmhlYWQgZm9yIG1lc3NhZ2UgcmVjZWl2ZXIgbmFtZSBhbmQgbWVzc2FnZSBuYW1l
IHRvIDIgYnl0ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxMTExMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZl
ZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpk
aWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UpOgorICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVTeW5jTWVzc2FnZSk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlSW52
YWxpZE1lc3NhZ2UpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2Up
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdl
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9pb3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3NJT1MubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpwYXltZW50Q29vcmRpbmF0b3JBZGRNZXNzYWdlUmVjZWl2ZXIpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cGF5bWVudENvb3Jk
aW5hdG9yUmVtb3ZlTWVzc2FnZVJlY2VpdmVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBQbGF0Zm9y
bS9JUEMvQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OldhaXRGb3JN
ZXNzYWdlU3RhdGU6OldhaXRGb3JNZXNzYWdlU3RhdGUpOgorICAgICAgICAoSVBDOjpDb25uZWN0
aW9uOjphZGRXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIpOgorICAgICAgICAoSVBDOjpDb25uZWN0
aW9uOjpyZW1vdmVXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIpOgorICAgICAgICAoSVBDOjpDb25u
ZWN0aW9uOjpkaXNwYXRjaFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlck1lc3NhZ2UpOgorICAgICAg
ICAoSVBDOjpDb25uZWN0aW9uOjphZGRUaHJlYWRNZXNzYWdlUmVjZWl2ZXIpOgorICAgICAgICAo
SVBDOjpDb25uZWN0aW9uOjpyZW1vdmVUaHJlYWRNZXNzYWdlUmVjZWl2ZXIpOgorICAgICAgICAo
SVBDOjpDb25uZWN0aW9uOjpkaXNwYXRjaFRocmVhZE1lc3NhZ2VSZWNlaXZlck1lc3NhZ2UpOgor
ICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVTeW5jTWVzc2FnZUVuY29kZXIpOgorICAg
ICAgICAoSVBDOjpDb25uZWN0aW9uOjpzZW5kTWVzc2FnZSk6CisgICAgICAgIChJUEM6OkNvbm5l
Y3Rpb246OndhaXRGb3JNZXNzYWdlKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6c2VuZFN5
bmNNZXNzYWdlKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6d2FpdEZvclN5bmNSZXBseSk6
CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnByb2Nlc3NJbmNvbWluZ01lc3NhZ2UpOgorICAg
ICAgICAoSVBDOjpDb25uZWN0aW9uOjpkaXNwYXRjaFN5bmNNZXNzYWdlKToKKyAgICAgICAgKElQ
Qzo6Q29ubmVjdGlvbjo6ZGlzcGF0Y2hEaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UpOgorICAgICAg
ICAoSVBDOjpDb25uZWN0aW9uOjpkaXNwYXRjaE1lc3NhZ2UpOgorICAgICAgICAoSVBDOjpDb25u
ZWN0aW9uOjpkaXNwYXRjaE1lc3NhZ2VUb1dvcmtRdWV1ZVJlY2VpdmVyKToKKyAgICAgICAgKElQ
Qzo6Q29ubmVjdGlvbjo6ZGlzcGF0Y2hNZXNzYWdlVG9UaHJlYWRSZWNlaXZlcik6CisgICAgICAg
IChJUEM6OkNvbm5lY3Rpb246OmRpc3BhdGNoSW5jb21pbmdNZXNzYWdlcyk6CisgICAgICAgICog
UGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6c2Vu
ZCk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnNlbmRXaXRoQXN5bmNSZXBseSk6CisgICAg
ICAgIChJUEM6OkNvbm5lY3Rpb246OnNlbmRTeW5jKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlv
bjo6d2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRlbHkpOgorICAgICAgICAqIFBsYXRmb3JtL0lQ
Qy9EZWNvZGVyLmNwcDoKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvRGVjb2Rlci5oOgorICAgICAg
ICAoSVBDOjpEZWNvZGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lIGNvbnN0KToKKyAgICAgICAgKElQ
Qzo6RGVjb2Rlcjo6bWVzc2FnZU5hbWUgY29uc3QpOgorICAgICAgICAoSVBDOjpEZWNvZGVyOjpk
ZWNvZGUpOgorICAgICAgICAoSVBDOjpEZWNvZGVyOjpvcGVyYXRvcj4+KToKKyAgICAgICAgKiBQ
bGF0Zm9ybS9JUEMvRW5jb2Rlci5jcHA6CisgICAgICAgIChJUEM6OkVuY29kZXI6OkVuY29kZXIp
OgorICAgICAgICAoSVBDOjpFbmNvZGVyOjplbmNvZGVIZWFkZXIpOgorICAgICAgICAqIFBsYXRm
b3JtL0lQQy9FbmNvZGVyLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2Uu
aDoKKyAgICAgICAgKElQQzo6aGFuZGxlTWVzc2FnZUFzeW5jKToKKyAgICAgICAgKiBQbGF0Zm9y
bS9JUEMvTWVzc2FnZVJlY2VpdmVyTWFwLmNwcDoKKyAgICAgICAgKElQQzo6TWVzc2FnZVJlY2Vp
dmVyTWFwOjphZGRNZXNzYWdlUmVjZWl2ZXIpOgorICAgICAgICAoSVBDOjpNZXNzYWdlUmVjZWl2
ZXJNYXA6OnJlbW92ZU1lc3NhZ2VSZWNlaXZlcik6CisgICAgICAgIChJUEM6Ok1lc3NhZ2VSZWNl
aXZlck1hcDo6ZGlzcGF0Y2hNZXNzYWdlKToKKyAgICAgICAgKElQQzo6TWVzc2FnZVJlY2VpdmVy
TWFwOjpkaXNwYXRjaFN5bmNNZXNzYWdlKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvTWVzc2Fn
ZVJlY2VpdmVyTWFwLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL01lc3NhZ2VTZW5kZXIuaDoK
KyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvY29jb2EvQ29ubmVjdGlvbkNvY29hLm1tOgorICAgICAg
ICAoSVBDOjpDb25uZWN0aW9uOjpvcGVuKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6c2Vu
ZE1lc3NhZ2UpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpzZW5kT3V0Z29pbmdNZXNzYWdl
KToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6cmVjZWl2ZVNvdXJjZUV2ZW50SGFuZGxlcik6
CisgICAgICAgICogUGxhdGZvcm0vSVBDL2NvY29hL01hY2hNZXNzYWdlLmNwcDoKKyAgICAgICAg
KElQQzo6TWFjaE1lc3NhZ2U6OmNyZWF0ZSk6CisgICAgICAgIChJUEM6Ok1hY2hNZXNzYWdlOjpN
YWNoTWVzc2FnZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL2NvY29hL01hY2hNZXNzYWdlLmg6
CisgICAgICAgIChJUEM6Ok1hY2hNZXNzYWdlOjptZXNzYWdlUmVjZWl2ZXJOYW1lIGNvbnN0KToK
KyAgICAgICAgKElQQzo6TWFjaE1lc3NhZ2U6Om1lc3NhZ2VOYW1lIGNvbnN0KToKKyAgICAgICAg
KiBQbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZSk6CisgICAg
ICAgICogUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5oOgorICAgICAgICAqIFNj
cmlwdHMvTWFrZWZpbGU6CisgICAgICAgICogU2NyaXB0cy9nZW5lcmF0ZS1tZXNzYWdlLXJlY2Vp
dmVyLnB5OgorICAgICAgICAobWFpbik6CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvTGVnYWN5
TWVzc2FnZXMtZXhwZWN0ZWQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9M
ZWdhY3lNZXNzYWdlc1JlcGxpZXMtZXhwZWN0ZWQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdC9NZXNzYWdlTmFtZXMuY3BwOiBBZGRlZC4KKyAgICAgICAgKElQQzo6ZGVzY3Jp
cHRpb24pOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L01lc3NhZ2VOYW1lcy5oOiBBZGRlZC4K
KyAgICAgICAgKElQQzo6cmVjZWl2ZXJOYW1lKToKKyAgICAgICAgKFdURjo6aXNWYWxpZEVudW0p
OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L01lc3NhZ2VSZWNlaXZlci1leHBlY3RlZC5jcHA6
IFJlbW92ZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXQvTWVzc2FnZVJlY2VpdmVyU3VwZXJj
bGFzcy1leHBlY3RlZC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXQvTWVz
c2FnZXMtZXhwZWN0ZWQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9NZXNz
YWdlc1JlcGxpZXMtZXhwZWN0ZWQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dC9NZXNzYWdlc1JlcGxpZXNTdXBlcmNsYXNzUmVwbGllcy1leHBlY3RlZC5oOiBSZW1vdmVkLgor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0L01lc3NhZ2VzU3VwZXJjbGFzcy1leHBlY3RlZC5oOiBS
ZW1vdmVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5OgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0L3Rlc3QtbGVnYWN5LW1lc3NhZ2VzLmluOiBSZW1vdmVkLgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0L3Rlc3QtbGVnYWN5Lm1lc3NhZ2VzLmluOiBDb3BpZWQgZnJvbSBT
b3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3QtbGVnYWN5LW1lc3NhZ2VzLmluLgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3QtbGVnYWN5TWVzc2FnZVJlY2VpdmVyLmNwcDogQWRk
ZWQuCisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rp
b246OnNlbmQpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RNdWx0aXBsZUF0dHJp
YnV0ZXM6OnNlbmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkaWRSZWNlaXZlV2ViUGFn
ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkaWRSZWNlaXZlU3luY1dlYlBh
Z2VNZXNzYWdlKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0LWxlZ2FjeU1lc3NhZ2Vz
Lmg6IEFkZGVkLgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6Om1lc3NhZ2VSZWNlaXZlck5h
bWUpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRVUkw6Om5hbWUpOgorICAgICAg
ICAoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRVUkw6OkxvYWRVUkwpOgorICAgICAgICAoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkxvYWRVUkw6OmFyZ3VtZW50cyBjb25zdCk6CisgICAgICAgIChNZXNzYWdl
czo6V2ViUGFnZTo6TG9hZFNvbWV0aGluZzo6bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6V2Vi
UGFnZTo6TG9hZFNvbWV0aGluZzo6TG9hZFNvbWV0aGluZyk6CisgICAgICAgIChNZXNzYWdlczo6
V2ViUGFnZTo6TG9hZFNvbWV0aGluZzo6YXJndW1lbnRzIGNvbnN0KToKKyAgICAgICAgKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpUb3VjaEV2ZW50OjpuYW1lKToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpUb3VjaEV2ZW50OjpUb3VjaEV2ZW50KToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdl
OjpUb3VjaEV2ZW50Ojphcmd1bWVudHMgY29uc3QpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBh
Z2U6OkFkZEV2ZW50OjpuYW1lKToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpBZGRFdmVu
dDo6QWRkRXZlbnQpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OkFkZEV2ZW50Ojphcmd1
bWVudHMgY29uc3QpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRTb21ldGhpbmdF
bHNlOjpuYW1lKToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkU29tZXRoaW5nRWxz
ZTo6TG9hZFNvbWV0aGluZ0Vsc2UpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRT
b21ldGhpbmdFbHNlOjphcmd1bWVudHMgY29uc3QpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBh
Z2U6OkRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbjo6bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6
V2ViUGFnZTo6RGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uOjpEaWRSZWNlaXZlUG9saWN5RGVjaXNp
b24pOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJlY2VpdmVQb2xpY3lEZWNpc2lv
bjo6YXJndW1lbnRzIGNvbnN0KToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpDbG9zZTo6
bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6Q2xvc2U6OmFyZ3VtZW50cyBjb25z
dCk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6UHJlZmVyZW5jZXNEaWRDaGFuZ2U6Om5h
bWUpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlByZWZlcmVuY2VzRGlkQ2hhbmdlOjpQ
cmVmZXJlbmNlc0RpZENoYW5nZSk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6UHJlZmVy
ZW5jZXNEaWRDaGFuZ2U6OmFyZ3VtZW50cyBjb25zdCk6CisgICAgICAgIChNZXNzYWdlczo6V2Vi
UGFnZTo6U2VuZERvdWJsZUFuZEZsb2F0OjpuYW1lKToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpTZW5kRG91YmxlQW5kRmxvYXQ6OlNlbmREb3VibGVBbmRGbG9hdCk6CisgICAgICAgIChN
ZXNzYWdlczo6V2ViUGFnZTo6U2VuZERvdWJsZUFuZEZsb2F0Ojphcmd1bWVudHMgY29uc3QpOgor
ICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlNlbmRJbnRzOjpuYW1lKToKKyAgICAgICAgKE1l
c3NhZ2VzOjpXZWJQYWdlOjpTZW5kSW50czo6U2VuZEludHMpOgorICAgICAgICAoTWVzc2FnZXM6
OldlYlBhZ2U6OlNlbmRJbnRzOjphcmd1bWVudHMgY29uc3QpOgorICAgICAgICAoTWVzc2FnZXM6
OldlYlBhZ2U6OkNyZWF0ZVBsdWdpbjo6bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFn
ZTo6Q3JlYXRlUGx1Z2luOjpDcmVhdGVQbHVnaW4pOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBh
Z2U6OkNyZWF0ZVBsdWdpbjo6YXJndW1lbnRzIGNvbnN0KToKKyAgICAgICAgKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpSdW5KYXZhU2NyaXB0QWxlcnQ6Om5hbWUpOgorICAgICAgICAoTWVzc2FnZXM6Oldl
YlBhZ2U6OlJ1bkphdmFTY3JpcHRBbGVydDo6UnVuSmF2YVNjcmlwdEFsZXJ0KToKKyAgICAgICAg
KE1lc3NhZ2VzOjpXZWJQYWdlOjpSdW5KYXZhU2NyaXB0QWxlcnQ6OmFyZ3VtZW50cyBjb25zdCk6
CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6R2V0UGx1Z2luczo6bmFtZSk6CisgICAgICAg
IChNZXNzYWdlczo6V2ViUGFnZTo6R2V0UGx1Z2luczo6R2V0UGx1Z2lucyk6CisgICAgICAgIChN
ZXNzYWdlczo6V2ViUGFnZTo6R2V0UGx1Z2luczo6YXJndW1lbnRzIGNvbnN0KToKKyAgICAgICAg
KE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6bmFtZSk6Cisg
ICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246Okdl
dFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpH
ZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6YXJndW1lbnRzIGNvbnN0KToKKyAgICAgICAgKE1l
c3NhZ2VzOjpXZWJQYWdlOjpUZXN0TXVsdGlwbGVBdHRyaWJ1dGVzOjpuYW1lKToKKyAgICAgICAg
KE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0TXVsdGlwbGVBdHRyaWJ1dGVzOjphcmd1bWVudHMgY29u
c3QpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RQYXJhbWV0ZXJBdHRyaWJ1dGVz
OjpuYW1lKToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0UGFyYW1ldGVyQXR0cmli
dXRlczo6VGVzdFBhcmFtZXRlckF0dHJpYnV0ZXMpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBh
Z2U6OlRlc3RQYXJhbWV0ZXJBdHRyaWJ1dGVzOjphcmd1bWVudHMgY29uc3QpOgorICAgICAgICAo
TWVzc2FnZXM6OldlYlBhZ2U6OlRlbXBsYXRlVGVzdDo6bmFtZSk6CisgICAgICAgIChNZXNzYWdl
czo6V2ViUGFnZTo6VGVtcGxhdGVUZXN0OjpUZW1wbGF0ZVRlc3QpOgorICAgICAgICAoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlRlbXBsYXRlVGVzdDo6YXJndW1lbnRzIGNvbnN0KToKKyAgICAgICAgKE1l
c3NhZ2VzOjpXZWJQYWdlOjpTZXRWaWRlb0xheWVySUQ6Om5hbWUpOgorICAgICAgICAoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlNldFZpZGVvTGF5ZXJJRDo6U2V0VmlkZW9MYXllcklEKToKKyAgICAgICAg
KE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRWaWRlb0xheWVySUQ6OmFyZ3VtZW50cyBjb25zdCk6Cisg
ICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6RGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb246
Om5hbWUpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZENyZWF0ZVdlYlByb2Nlc3ND
b25uZWN0aW9uOjpEaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIChNZXNz
YWdlczo6V2ViUGFnZTo6RGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmFyZ3VtZW50cyBj
b25zdCk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6SW50ZXJwcmV0S2V5RXZlbnQ6Om5h
bWUpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OkludGVycHJldEtleUV2ZW50OjpJbnRl
cnByZXRLZXlFdmVudCk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6SW50ZXJwcmV0S2V5
RXZlbnQ6OmFyZ3VtZW50cyBjb25zdCk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6RGVw
cmVjYXRlZE9wZXJhdGlvbjo6bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6RGVw
cmVjYXRlZE9wZXJhdGlvbjo6RGVwcmVjYXRlZE9wZXJhdGlvbik6CisgICAgICAgIChNZXNzYWdl
czo6V2ViUGFnZTo6RGVwcmVjYXRlZE9wZXJhdGlvbjo6YXJndW1lbnRzIGNvbnN0KToKKyAgICAg
ICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpFeHBlcmltZW50YWxPcGVyYXRpb246Om5hbWUpOgorICAg
ICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OkV4cGVyaW1lbnRhbE9wZXJhdGlvbjo6RXhwZXJpbWVu
dGFsT3BlcmF0aW9uKToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpFeHBlcmltZW50YWxP
cGVyYXRpb246OmFyZ3VtZW50cyBjb25zdCk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvdGVz
dC1sZWdhY3lNZXNzYWdlc1JlcGxpZXMuaDogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJr
aXQvdGVzdC1tZXNzYWdlcy5pbjogUmVtb3ZlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC90
ZXN0LXN1cGVyY2xhc3MtbWVzc2FnZXMuaW46IFJlbW92ZWQuCisgICAgICAgICogU2NyaXB0cy93
ZWJraXQvdGVzdC1zdXBlcmNsYXNzLm1lc3NhZ2VzLmluOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2Vi
S2l0L1NjcmlwdHMvd2Via2l0L3Rlc3Qtc3VwZXJjbGFzcy1tZXNzYWdlcy5pbi4KKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdC90ZXN0LXN1cGVyY2xhc3NNZXNzYWdlUmVjZWl2ZXIuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0QXN5bmNNZXNzYWdlOjpjYWxsUmVw
bHkpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RBc3luY01lc3NhZ2U6OmNhbmNl
bFJlcGx5KToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0QXN5bmNNZXNzYWdlOjpz
ZW5kKToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0QXN5bmNNZXNzYWdlV2l0aE5v
QXJndW1lbnRzOjpjYWxsUmVwbHkpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RB
c3luY01lc3NhZ2VXaXRoTm9Bcmd1bWVudHM6OmNhbmNlbFJlcGx5KToKKyAgICAgICAgKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpUZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJndW1lbnRzOjpzZW5kKToKKyAg
ICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJn
dW1lbnRzOjpjYWxsUmVwbHkpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RBc3lu
Y01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHM6OmNhbmNlbFJlcGx5KToKKyAgICAgICAgKE1l
c3NhZ2VzOjpXZWJQYWdlOjpUZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1lbnRzOjpz
ZW5kKToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0U3luY01lc3NhZ2U6OnNlbmQp
OgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RTeW5jaHJvbm91c01lc3NhZ2U6OnNl
bmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRpZFJlY2VpdmVTeW5jTWVzc2FnZSk6CisgICAgICAgICog
U2NyaXB0cy93ZWJraXQvdGVzdC1zdXBlcmNsYXNzTWVzc2FnZXMuaDogQWRkZWQuCisgICAgICAg
IChNZXNzYWdlczo6V2ViUGFnZTo6bWVzc2FnZVJlY2VpdmVyTmFtZSk6CisgICAgICAgIChNZXNz
YWdlczo6V2ViUGFnZTo6TG9hZFVSTDo6bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFn
ZTo6TG9hZFVSTDo6TG9hZFVSTCk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFVS
TDo6YXJndW1lbnRzIGNvbnN0KToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0QXN5
bmNNZXNzYWdlOjpuYW1lKToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0QXN5bmNN
ZXNzYWdlOjphc3luY01lc3NhZ2VSZXBseU5hbWUpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBh
Z2U6OlRlc3RBc3luY01lc3NhZ2U6OlRlc3RBc3luY01lc3NhZ2UpOgorICAgICAgICAoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlRlc3RBc3luY01lc3NhZ2U6OmFyZ3VtZW50cyBjb25zdCk6CisgICAgICAg
IChNZXNzYWdlczo6V2ViUGFnZTo6VGVzdEFzeW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50czo6bmFt
ZSk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6VGVzdEFzeW5jTWVzc2FnZVdpdGhOb0Fy
Z3VtZW50czo6YXN5bmNNZXNzYWdlUmVwbHlOYW1lKToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpUZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJndW1lbnRzOjphcmd1bWVudHMgY29uc3QpOgor
ICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RBc3luY01lc3NhZ2VXaXRoTXVsdGlwbGVB
cmd1bWVudHM6Om5hbWUpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RBc3luY01l
c3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHM6OmFzeW5jTWVzc2FnZVJlcGx5TmFtZSk6CisgICAg
ICAgIChNZXNzYWdlczo6V2ViUGFnZTo6VGVzdEFzeW5jTWVzc2FnZVdpdGhNdWx0aXBsZUFyZ3Vt
ZW50czo6YXJndW1lbnRzIGNvbnN0KToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0
U3luY01lc3NhZ2U6Om5hbWUpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RTeW5j
TWVzc2FnZTo6VGVzdFN5bmNNZXNzYWdlKToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpU
ZXN0U3luY01lc3NhZ2U6OmFyZ3VtZW50cyBjb25zdCk6CisgICAgICAgIChNZXNzYWdlczo6V2Vi
UGFnZTo6VGVzdFN5bmNocm9ub3VzTWVzc2FnZTo6bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6
V2ViUGFnZTo6VGVzdFN5bmNocm9ub3VzTWVzc2FnZTo6VGVzdFN5bmNocm9ub3VzTWVzc2FnZSk6
CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6VGVzdFN5bmNocm9ub3VzTWVzc2FnZTo6YXJn
dW1lbnRzIGNvbnN0KToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0LXN1cGVyY2xhc3NN
ZXNzYWdlc1JlcGxpZXMuaDogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXQvdGVzdC5t
ZXNzYWdlcy5pbjogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXQvdGVzdE1lc3NhZ2VS
ZWNlaXZlci5jcHA6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3RNZXNzYWdl
cy5oOiBBZGRlZC4KKyAgICAgICAgKE1lc3NhZ2VzOjpOb25lOjptZXNzYWdlUmVjZWl2ZXJOYW1l
KToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0TWVzc2FnZXNSZXBsaWVzLmg6IEFkZGVk
LgorICAgICAgICAqIFNoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5o
OgorICAgICAgICAqIFNoYXJlZC9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQ
cm94eUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94
eTo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eTo6fldlYlBheW1lbnRDb29yZGluYXRvclByb3h5KToKKyAgICAg
ICAgKiBTaGFyZWQvQXV4aWxpYXJ5UHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkF1eGls
aWFyeVByb2Nlc3M6OmFkZE1lc3NhZ2VSZWNlaXZlcik6CisgICAgICAgIChXZWJLaXQ6OkF1eGls
aWFyeVByb2Nlc3M6OnJlbW92ZU1lc3NhZ2VSZWNlaXZlcik6CisgICAgICAgIChXZWJLaXQ6OkF1
eGlsaWFyeVByb2Nlc3M6OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZSk6CisgICAgICAgICogU2hh
cmVkL0F1eGlsaWFyeVByb2Nlc3MuaDoKKyAgICAgICAgKFdlYktpdDo6QXV4aWxpYXJ5UHJvY2Vz
czo6YWRkTWVzc2FnZVJlY2VpdmVyKToKKyAgICAgICAgKFdlYktpdDo6QXV4aWxpYXJ5UHJvY2Vz
czo6cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKToKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvQXV4aWxp
YXJ5UHJvY2Vzc0NvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpBdXhpbGlhcnlQcm9jZXNzOjpk
aWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UpOgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6Cisg
ICAgICAgICogVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OkF1eGlsaWFyeVByb2Nlc3NQcm94eTo6YWRkTWVzc2FnZVJlY2VpdmVyKToKKyAgICAg
ICAgKFdlYktpdDo6QXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjpyZW1vdmVNZXNzYWdlUmVjZWl2ZXIp
OgorICAgICAgICAoV2ViS2l0OjpBdXhpbGlhcnlQcm9jZXNzUHJveHk6OmxvZ0ludmFsaWRNZXNz
YWdlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5Lmg6CisgICAg
ICAgIChXZWJLaXQ6OkF1eGlsaWFyeVByb2Nlc3NQcm94eTo6YWRkTWVzc2FnZVJlY2VpdmVyKToK
KyAgICAgICAgKFdlYktpdDo6QXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjpyZW1vdmVNZXNzYWdlUmVj
ZWl2ZXIpOgorICAgICAgICAoV2ViS2l0OjpBdXhpbGlhcnlQcm9jZXNzUHJveHk6OnNlbmQpOgor
ICAgICAgICAoV2ViS2l0OjpBdXhpbGlhcnlQcm9jZXNzUHJveHk6OnNlbmRXaXRoQXN5bmNSZXBs
eSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJv
eHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW06Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cGF5bWVudENvb3JkaW5hdG9yQWRkTWVzc2Fn
ZVJlY2VpdmVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpwYXlt
ZW50Q29vcmRpbmF0b3JSZW1vdmVNZXNzYWdlUmVjZWl2ZXIpOiBEZWxldGVkLgorICAgICAgICAq
IFVJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6R1BV
UHJvY2Vzc1Byb3h5OjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNz
UHJveHk6OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZSk6CisgICAgICAgICogVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NQ
cm94eTo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUHJvdmlzaW9u
YWxQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNpb25hbFBhZ2VQcm94eTo6
ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjptZXNzYWdlTmFtZXNUb0lnbm9yZVdoaWxlU3VzcGVu
ZGVkKToKKyAgICAgICAgKFdlYktpdDo6U3VzcGVuZGVkUGFnZVByb3h5OjpkaWRSZWNlaXZlTWVz
c2FnZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQ
b29sOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzUG9vbDo6YWRkTWVzc2FnZVJlY2VpdmVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Bvb2w6OnJlbW92ZU1lc3NhZ2VSZWNlaXZlcik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6c2hvdWxkU2VuZFBlbmRpbmdNZXNzYWdl
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpkaWRSZWNlaXZlSW52YWxpZE1l
c3NhZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJL
aXQ6OkdQVVByb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwOgorICAgICAg
ICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZUludmFsaWRNZXNz
YWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rp
b24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90
ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRy
ZWVEcmF3aW5nQXJlYTo6dXBkYXRlUmVuZGVyaW5nKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpkaWRSZWNlaXZlTWVz
c2FnZSk6CisKIDIwMjAtMDUtMDEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAog
ICAgICAgICBVbnJldmlld2VkLCByZXZlcnRpbmcgcjI2MTAxNS4KSW5kZXg6IFNvdXJjZS9XZWJL
aXQvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DTWFrZUxpc3Rz
LnR4dAkocmV2aXNpb24gMjYxMDMzKQorKysgU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dAko
d29ya2luZyBjb3B5KQpAQCAtMTE5LDE0OCArMTE5LDE0OCBAQCBsaXN0KEFQUEVORCBXZWJLaXRf
VU5JRklFRF9TT1VSQ0VfTElTVF9GCiApCiAKIHNldChXZWJLaXRfTUVTU0FHRVNfSU5fRklMRVMK
LSAgICBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KLSAg
ICBHUFVQcm9jZXNzL0dQVVByb2Nlc3MubWVzc2FnZXMuaW4KKyAgICBHUFVQcm9jZXNzL0dQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MKKyAgICBHUFVQcm9jZXNzL0dQVVByb2Nlc3MKIAotICAgIEdQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lm1lc3NhZ2VzLmlu
CisgICAgR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkKIAot
ICAgIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIubWVzc2Fn
ZXMuaW4KLSAgICBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvblByb3h5Lm1lc3Nh
Z2VzLmluCi0gICAgR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5UHJveHkubWVzc2Fn
ZXMuaW4KLSAgICBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkubWVzc2Fn
ZXMuaW4KLSAgICBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5
Lm1lc3NhZ2VzLmluCi0gICAgR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5tZXNzYWdl
cy5pbgotICAgIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5Lm1l
c3NhZ2VzLmluCi0gICAgR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5tZXNz
YWdlcy5pbgotICAgIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5
Lm1lc3NhZ2VzLmluCi0gICAgR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFn
ZXJQcm94eS5tZXNzYWdlcy5pbgotICAgIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5
ZXJQcm94eS5tZXNzYWdlcy5pbgotICAgIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNv
dXJjZU1hbmFnZXIubWVzc2FnZXMuaW4KKyAgICBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlv
RGVzdGluYXRpb25NYW5hZ2VyCisgICAgR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1Nlc3Np
b25Qcm94eQorICAgIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5CisgICAg
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5CisgICAgR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eQorICAgIEdQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlQ0RNUHJveHkKKyAgICBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3Rv
cnlQcm94eQorICAgIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkKKyAgICBH
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eQorICAgIEdQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkKKyAgICBHUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkKKyAgICBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1l
ZGlhUmVzb3VyY2VNYW5hZ2VyCiAKLSAgICBHUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2Rl
Y3NQcm94eS5tZXNzYWdlcy5pbgotICAgIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVyLm1lc3NhZ2VzLmluCi0gICAgR1BVUHJvY2Vzcy93ZWJydGMv
UmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyLm1lc3NhZ2VzLmluCi0g
ICAgR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5tZXNzYWdlcy5pbgotICAg
IEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyLm1lc3NhZ2VzLmlu
Ci0gICAgR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLm1l
c3NhZ2VzLmluCi0gICAgR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyTWFuYWdlci5tZXNzYWdlcy5pbgorICAgIEdQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJU
Q0NvZGVjc1Byb3h5CisgICAgR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXIKKyAgICBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlck1hbmFnZXIKKyAgICBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRp
YVJlY29yZGVyCisgICAgR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFn
ZXIKKyAgICBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIK
KyAgICBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5h
Z2VyCiAKLSAgICBOZXR3b3JrUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIubWVzc2Fn
ZXMuaW4KKyAgICBOZXR3b3JrUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIKIAotICAg
IE5ldHdvcmtQcm9jZXNzL0luZGV4ZWREQi9XZWJJREJTZXJ2ZXIubWVzc2FnZXMuaW4KKyAgICBO
ZXR3b3JrUHJvY2Vzcy9JbmRleGVkREIvV2ViSURCU2VydmVyCiAKLSAgICBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgotICAgIE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyLm1lc3NhZ2VzLmluCi0gICAgTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KLSAgICBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW4KLSAgICBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrU29ja2V0Q2hhbm5lbC5tZXNzYWdlcy5pbgotICAgIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtTb2NrZXRTdHJlYW0ubWVzc2FnZXMuaW4KKyAgICBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2VzcworICAgIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb250ZW50UnVs
ZUxpc3RNYW5hZ2VyCisgICAgTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MKKyAgICBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIKKyAgICBOZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrU29ja2V0Q2hhbm5lbAorICAgIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0K
IAotICAgIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFz
ay5tZXNzYWdlcy5pbgotICAgIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2
ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCi0gICAgTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KKyAgICBOZXR3b3Jr
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2sKKyAgICBOZXR3b3Jr
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbgorICAgIE5ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uCiAKLSAg
ICBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyU2V0Lm1lc3NhZ2VzLmlu
CisgICAgTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlclNldAogCi0gICAg
TmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5tZXNzYWdl
cy5pbgorICAgIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rp
b24KIAotICAgIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrTUROU1JlZ2lzdGVyLm1lc3Nh
Z2VzLmluCi0gICAgTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENNb25pdG9yLm1lc3Nh
Z2VzLmluCi0gICAgTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5tZXNz
YWdlcy5pbgotICAgIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDU29ja2V0Lm1lc3Nh
Z2VzLmluCisgICAgTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtNRE5TUmVnaXN0ZXIKKyAg
ICBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ01vbml0b3IKKyAgICBOZXR3b3JrUHJv
Y2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyCisgICAgTmV0d29ya1Byb2Nlc3Mvd2VicnRj
L05ldHdvcmtSVENTb2NrZXQKIAotICAgIFBsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclBy
b3h5Lm1lc3NhZ2VzLmluCi0gICAgUGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9jZXNzLm1lc3NhZ2Vz
LmluCi0gICAgUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgor
ICAgIFBsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5CisgICAgUGx1Z2luUHJvY2Vz
cy9QbHVnaW5Qcm9jZXNzCisgICAgUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbgog
Ci0gICAgU2hhcmVkL0F1eGlsaWFyeVByb2Nlc3MubWVzc2FnZXMuaW4KLSAgICBTaGFyZWQvV2Vi
Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgorICAgIFNoYXJlZC9BdXhpbGlhcnlQcm9jZXNzCisgICAg
U2hhcmVkL1dlYkNvbm5lY3Rpb24KIAotICAgIFNoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50
aWNhdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4KKyAgICBTaGFyZWQvQXV0aGVudGljYXRpb24vQXV0
aGVudGljYXRpb25NYW5hZ2VyCiAKLSAgICBTaGFyZWQvUGx1Z2lucy9OUE9iamVjdE1lc3NhZ2VS
ZWNlaXZlci5tZXNzYWdlcy5pbgorICAgIFNoYXJlZC9QbHVnaW5zL05QT2JqZWN0TWVzc2FnZVJl
Y2VpdmVyCiAKLSAgICBVSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5tZXNzYWdlcy5pbgotICAg
IFVJUHJvY2Vzcy9WaXNpdGVkTGlua1N0b3JlLm1lc3NhZ2VzLmluCi0gICAgVUlQcm9jZXNzL1dl
YkNvb2tpZU1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgotICAgIFVJUHJvY2Vzcy9XZWJGdWxsU2Ny
ZWVuTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCi0gICAgVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9u
TWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCi0gICAgVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNz
YWdlcy5pbgotICAgIFVJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkubWVzc2FnZXMuaW4KLSAg
ICBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wubWVzc2FnZXMuaW4KLSAgICBVSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCisgICAgVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkK
KyAgICBVSVByb2Nlc3MvVmlzaXRlZExpbmtTdG9yZQorICAgIFVJUHJvY2Vzcy9XZWJDb29raWVN
YW5hZ2VyUHJveHkKKyAgICBVSVByb2Nlc3MvV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eQorICAg
IFVJUHJvY2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eQorICAgIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkKKyAgICBVSVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5CisgICAgVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sCisgICAgVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eQogCi0gICAgVUlQ
cm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24ubWVzc2FnZXMuaW4KKyAgICBV
SVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbgogCi0gICAgVUlQcm9jZXNz
L0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5Lm1lc3NhZ2VzLmluCisgICAgVUlQcm9jZXNzL0Rvd25s
b2Fkcy9Eb3dubG9hZFByb3h5CiAKLSAgICBVSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5t
ZXNzYWdlcy5pbgorICAgIFVJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5CiAKLSAgICBVSVBy
b2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclByb3h5Lm1lc3NhZ2VzLmluCi0gICAg
VUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JQcm94eS5tZXNzYWdlcy5pbgorICAgIFVJ
UHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHkKKyAgICBVSVByb2Nlc3Mv
SW5zcGVjdG9yL1dlYkluc3BlY3RvclByb3h5CiAKLSAgICBVSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCisgICAgVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eQogCi0gICAgVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5
Lm1lc3NhZ2VzLmluCisgICAgVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5CiAK
LSAgICBVSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHku
bWVzc2FnZXMuaW4KKyAgICBVSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyUHJveHkKIAotICAgIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorICAg
IFdlYlByb2Nlc3MvV2ViUHJvY2VzcwogCi0gICAgV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1
dG9tYXRpb25TZXNzaW9uUHJveHkubWVzc2FnZXMuaW4KKyAgICBXZWJQcm9jZXNzL0F1dG9tYXRp
b24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eQogCi0gICAgV2ViUHJvY2Vzcy9EYXRhYmFzZXMv
SW5kZXhlZERCL1dlYklEQkNvbm5lY3Rpb25Ub1NlcnZlci5tZXNzYWdlcy5pbgorICAgIFdlYlBy
b2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIKIAotICAg
IFdlYlByb2Nlc3MvRnVsbFNjcmVlbi9XZWJGdWxsU2NyZWVuTWFuYWdlci5tZXNzYWdlcy5pbgor
ICAgIFdlYlByb2Nlc3MvRnVsbFNjcmVlbi9XZWJGdWxsU2NyZWVuTWFuYWdlcgogCi0gICAgV2Vi
UHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW4KKyAgICBXZWJQcm9j
ZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbgogCi0gICAgV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbgorICAgIFdlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQKIAotICAgIFdlYlByb2Nlc3MvR1BVL21l
ZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5tZXNzYWdlcy5pbgotICAgIFdlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5tZXNzYWdlcy5pbgotICAgIFdl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvbi5tZXNzYWdlcy5pbgotICAgIFdl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5tZXNzYWdlcy5pbgot
ICAgIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb24ubWVzc2FnZXMu
aW4KLSAgICBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIubWVz
c2FnZXMuaW4KKyAgICBXZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1v
dGUKKyAgICBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkK
KyAgICBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb1Nlc3Npb24KKyAgICBXZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24KKyAgICBXZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uCisgICAgV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyCiAKLSAgICBXZWJQcm9jZXNzL0dQVS93ZWJydGMvTGli
V2ViUlRDQ29kZWNzLm1lc3NhZ2VzLmluCi0gICAgV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllci5tZXNzYWdlcy5pbgorICAgIFdlYlByb2Nlc3MvR1BVL3dlYnJ0
Yy9MaWJXZWJSVENDb2RlY3MKKyAgICBXZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyCiAKLSAgICBXZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9u
TWFuYWdlci5tZXNzYWdlcy5pbgorICAgIFdlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9j
YXRpb25NYW5hZ2VyCiAKLSAgICBXZWJQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0
b3JVSS5tZXNzYWdlcy5pbgotICAgIFdlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3Rvci5t
ZXNzYWdlcy5pbgotICAgIFdlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvckludGVycnVw
dERpc3BhdGNoZXIubWVzc2FnZXMuaW4KLSAgICBXZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNw
ZWN0b3JVSS5tZXNzYWdlcy5pbgorICAgIFdlYlByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYklu
c3BlY3RvclVJCisgICAgV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yCisgICAgV2Vi
UHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9ySW50ZXJydXB0RGlzcGF0Y2hlcgorICAgIFdl
YlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJCiAKLSAgICBXZWJQcm9jZXNzL05ldHdv
cmsvd2VicnRjL1dlYk1ETlNSZWdpc3Rlci5tZXNzYWdlcy5pbgotICAgIFdlYlByb2Nlc3MvTmV0
d29yay93ZWJydGMvV2ViUlRDTW9uaXRvci5tZXNzYWdlcy5pbgotICAgIFdlYlByb2Nlc3MvTmV0
d29yay93ZWJydGMvV2ViUlRDUmVzb2x2ZXIubWVzc2FnZXMuaW4KLSAgICBXZWJQcm9jZXNzL05l
dHdvcmsvd2VicnRjL1dlYlJUQ1NvY2tldC5tZXNzYWdlcy5pbgorICAgIFdlYlByb2Nlc3MvTmV0
d29yay93ZWJydGMvV2ViTUROU1JlZ2lzdGVyCisgICAgV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0
Yy9XZWJSVENNb25pdG9yCisgICAgV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJSVENSZXNv
bHZlcgorICAgIFdlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvV2ViUlRDU29ja2V0CiAKLSAgICBX
ZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluCi0g
ICAgV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluCi0gICAg
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwubWVzc2FnZXMuaW4KLSAgICBXZWJQ
cm9jZXNzL05ldHdvcmsvV2ViU29ja2V0U3RyZWFtLm1lc3NhZ2VzLmluCisgICAgV2ViUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbgorICAgIFdlYlByb2Nlc3MvTmV0d29y
ay9XZWJSZXNvdXJjZUxvYWRlcgorICAgIFdlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFu
bmVsCisgICAgV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0cmVhbQogCi0gICAgV2ViUHJv
Y2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4KKyAg
ICBXZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlcgogCi0gICAg
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluCi0g
ICAgV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5tZXNz
YWdlcy5pbgotICAgIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5tZXNzYWdlcy5pbgor
ICAgIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbgorICAgIFdlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIKKyAgICBXZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkKIAotICAgIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0Ns
aWVudENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KLSAgICBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KKyAgICBXZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU1dDbGllbnRDb25uZWN0aW9uCisgICAgV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uCiAKLSAgICBXZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVz
ZXJDb250ZW50Q29udHJvbGxlci5tZXNzYWdlcy5pbgorICAgIFdlYlByb2Nlc3MvVXNlckNvbnRl
bnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyCiAKLSAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvRHJh
d2luZ0FyZWEubWVzc2FnZXMuaW4KLSAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRj
aGVyLm1lc3NhZ2VzLmluCi0gICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1Zpc2l0ZWRMaW5rVGFibGVD
b250cm9sbGVyLm1lc3NhZ2VzLmluCi0gICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVz
c2FnZXMuaW4KKyAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEKKyAgICBXZWJQcm9j
ZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVyCisgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1Zpc2l0
ZWRMaW5rVGFibGVDb250cm9sbGVyCisgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UKIAot
ICAgIFdlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5tZXNzYWdlcy5pbgorICAg
IFdlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcAogKQogCiAjIEZJWE1FOiBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwMzY2CkBAIC00MDYsMjMgKzQw
NiwzOCBAQCBlbmRpZiAoKQogCiAjIEhlbHBlciBtYWNybyB3aGljaCB3cmFwcyB0aGUgZ2VuZXJh
dGUtbWVzc2FnZS1yZWNlaXZlci5weSBzY3JpcHQKICMgICBfb3V0cHV0X3NvdXJjZSBpcyBhIGxp
c3QgbmFtZSB3aGljaCB3aWxsIGNvbnRhaW4gZ2VuZXJhdGVkIHNvdXJjZXMuKGVnLiBXZWJLaXRf
U09VUkNFUykKLSMgICBfaW5wdXRfZmlsZXMgYXJlIG1lc3NhZ2VzLmluIGZpbGVzIHRvIGdlbmVy
YXRlLgotbWFjcm8oR0VORVJBVEVfTUVTU0FHRV9TT1VSQ0VTIF9vdXRwdXRfc291cmNlIF9pbnB1
dF9maWxlcykKLSAgICBmb3JlYWNoIChfZmlsZSAke19pbnB1dF9maWxlc30pCisjICAgX2lucHV0
cyBhcmUgbWVzc2FnZXMuaW4gZmlsZXMgdG8gZ2VuZXJhdGUuCittYWNybyhHRU5FUkFURV9NRVNT
QUdFX1NPVVJDRVMgX291dHB1dF9zb3VyY2UgX2lucHV0cykKKyAgICB1bnNldChfaW5wdXRfZmls
ZXMpCisgICAgdW5zZXQoX291dHB1dHMpCisgICAgZm9yZWFjaCAoX2ZpbGUgSU4gSVRFTVMgJHtf
aW5wdXRzfSkKICAgICAgICAgZ2V0X2ZpbGVuYW1lX2NvbXBvbmVudChfbmFtZSAke19maWxlfSBO
QU1FX1dFKQotICAgICAgICBhZGRfY3VzdG9tX2NvbW1hbmQoCi0gICAgICAgICAgICBPVVRQVVQg
JHtXZWJLaXRfREVSSVZFRF9TT1VSQ0VTX0RJUn0vJHtfbmFtZX1NZXNzYWdlUmVjZWl2ZXIuY3Bw
ICR7V2ViS2l0X0RFUklWRURfU09VUkNFU19ESVJ9LyR7X25hbWV9TWVzc2FnZXMuaCAke1dlYktp
dF9ERVJJVkVEX1NPVVJDRVNfRElSfS8ke19uYW1lfU1lc3NhZ2VzUmVwbGllcy5oCi0gICAgICAg
ICAgICBNQUlOX0RFUEVOREVOQ1kgJHtfZmlsZX0KLSAgICAgICAgICAgIERFUEVORFMgJHtXRUJL
SVRfRElSfS9TY3JpcHRzL3dlYmtpdC9fX2luaXRfXy5weQotICAgICAgICAgICAgICAgICAgICAk
e1dFQktJVF9ESVJ9L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5Ci0gICAgICAgICAgICAgICAg
ICAgICR7V0VCS0lUX0RJUn0vU2NyaXB0cy93ZWJraXQvbW9kZWwucHkKLSAgICAgICAgICAgICAg
ICAgICAgJHtXRUJLSVRfRElSfS9TY3JpcHRzL3dlYmtpdC9wYXJzZXIucHkKLSAgICAgICAgICAg
IENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gJHtXRUJLSVRfRElSfS9TY3JpcHRzL2dlbmVy
YXRlLW1lc3NhZ2UtcmVjZWl2ZXIucHkgJHtfZmlsZX0gLS1pbXBsZW1lbnRhdGlvbiAke1dlYktp
dF9ERVJJVkVEX1NPVVJDRVNfRElSfS8ke19uYW1lfU1lc3NhZ2VSZWNlaXZlci5jcHAgLS1oZWFk
ZXIgJHtXZWJLaXRfREVSSVZFRF9TT1VSQ0VTX0RJUn0vJHtfbmFtZX1NZXNzYWdlcy5oIC0tcmVw
bHktaGVhZGVyICR7V2ViS2l0X0RFUklWRURfU09VUkNFU19ESVJ9LyR7X25hbWV9TWVzc2FnZXNS
ZXBsaWVzLmgKLSAgICAgICAgICAgIFdPUktJTkdfRElSRUNUT1JZICR7V0VCS0lUX0RJUn0KLSAg
ICAgICAgICAgIFZFUkJBVElNKQotCisgICAgICAgIGxpc3QoQVBQRU5EIF9pbnB1dF9maWxlcyAk
e1dFQktJVF9ESVJ9LyR7X2ZpbGV9Lm1lc3NhZ2VzLmluKQorICAgICAgICBsaXN0KEFQUEVORCBf
b3V0cHV0cworICAgICAgICAgICAgJHtXZWJLaXRfREVSSVZFRF9TT1VSQ0VTX0RJUn0vJHtfbmFt
ZX1NZXNzYWdlUmVjZWl2ZXIuY3BwCisgICAgICAgICAgICAke1dlYktpdF9ERVJJVkVEX1NPVVJD
RVNfRElSfS8ke19uYW1lfU1lc3NhZ2VzLmgKKyAgICAgICAgICAgICR7V2ViS2l0X0RFUklWRURf
U09VUkNFU19ESVJ9LyR7X25hbWV9TWVzc2FnZXNSZXBsaWVzLmgKKyAgICAgICAgKQogICAgICAg
ICBsaXN0KEFQUEVORCAke19vdXRwdXRfc291cmNlfSAke1dlYktpdF9ERVJJVkVEX1NPVVJDRVNf
RElSfS8ke19uYW1lfU1lc3NhZ2VSZWNlaXZlci5jcHApCiAgICAgZW5kZm9yZWFjaCAoKQorICAg
IGxpc3QoQVBQRU5EICR7X291dHB1dF9zb3VyY2V9ICR7V2ViS2l0X0RFUklWRURfU09VUkNFU19E
SVJ9L01lc3NhZ2VOYW1lcy5jcHApCisKKyAgICBhZGRfY3VzdG9tX2NvbW1hbmQoCisgICAgICAg
IE9VVFBVVAorICAgICAgICAgICAgJHtXZWJLaXRfREVSSVZFRF9TT1VSQ0VTX0RJUn0vTWVzc2Fn
ZU5hbWVzLmNwcAorICAgICAgICAgICAgJHtXZWJLaXRfREVSSVZFRF9TT1VSQ0VTX0RJUn0vTWVz
c2FnZU5hbWVzLmgKKyAgICAgICAgICAgICR7X291dHB1dHN9CisgICAgICAgIE1BSU5fREVQRU5E
RU5DWSAke1dFQktJVF9ESVJ9L1NjcmlwdHMvZ2VuZXJhdGUtbWVzc2FnZS1yZWNlaXZlci5weQor
ICAgICAgICBERVBFTkRTCisgICAgICAgICAgICAke1dFQktJVF9ESVJ9L1NjcmlwdHMvd2Via2l0
L19faW5pdF9fLnB5CisgICAgICAgICAgICAke1dFQktJVF9ESVJ9L1NjcmlwdHMvd2Via2l0L21l
c3NhZ2VzLnB5CisgICAgICAgICAgICAke1dFQktJVF9ESVJ9L1NjcmlwdHMvd2Via2l0L21vZGVs
LnB5CisgICAgICAgICAgICAke1dFQktJVF9ESVJ9L1NjcmlwdHMvd2Via2l0L3BhcnNlci5weQor
ICAgICAgICAgICAgJHtfaW5wdXRfZmlsZXN9CisgICAgICAgIENPTU1BTkQgJHtQWVRIT05fRVhF
Q1VUQUJMRX0gJHtXRUJLSVRfRElSfS9TY3JpcHRzL2dlbmVyYXRlLW1lc3NhZ2UtcmVjZWl2ZXIu
cHkgJHtXRUJLSVRfRElSfSAke19pbnB1dHN9CisgICAgICAgIFdPUktJTkdfRElSRUNUT1JZICR7
V2ViS2l0X0RFUklWRURfU09VUkNFU19ESVJ9CisgICAgICAgIFZFUkJBVElNCisgICAgKQogZW5k
bWFjcm8oKQogR0VORVJBVEVfTUVTU0FHRV9TT1VSQ0VTKFdlYktpdF9ERVJJVkVEX1NPVVJDRVMg
IiR7V2ViS2l0X01FU1NBR0VTX0lOX0ZJTEVTfSIpCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvRGVy
aXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAkocmV2aXNpb24gMjYxMDMzKQorKysg
U291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAkod29ya2luZyBj
b3B5KQpAQCAtNjMsNiArNjMsOCBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9NZWRp
YVBsYXllclByaXZhdGVSZW1vdGVNZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9NZWRpYVBsYXllclByaXZhdGVSZW1vdGVNZXNz
YWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9NZWRp
YVBsYXllclByaXZhdGVSZW1vdGVNZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvTWVzc2FnZU5hbWVzLmNwcAorJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvTWVzc2FnZU5hbWVzLmgKICQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL05QT2JqZWN0TWVzc2FnZVJlY2Vp
dmVyTWVzc2FnZVJlY2VpdmVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYktpdDIvTlBPYmplY3RNZXNzYWdlUmVjZWl2ZXJNZXNzYWdlcy5oCiAkKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9OUE9iamVjdE1lc3NhZ2VSZWNlaXZl
ck1lc3NhZ2VzUmVwbGllcy5oCkluZGV4OiBTb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1h
a2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCShyZXZp
c2lvbiAyNjEwMzMpCisrKyBTb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHdvcmtp
bmcgY29weSkKQEAgLTExMiwxMzQgKzExMiwxMzUgQEAgZWxzZQogZW5kaWYKIAogTUVTU0FHRV9S
RUNFSVZFUlMgPSBcCi0JQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3JQcm94eSBcCi0gICAg
QXV0aGVudGljYXRpb25NYW5hZ2VyIFwKLSAgICBBdXhpbGlhcnlQcm9jZXNzIFwKLSAgICBDYWNo
ZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uIFwKLSAgICBEb3dubG9hZFByb3h5IFwKLSAgICBEcmF3
aW5nQXJlYSBcCi0gICAgRHJhd2luZ0FyZWFQcm94eSBcCi0gICAgRWRpdGFibGVJbWFnZUNvbnRy
b2xsZXIgXAotICAgIEV2ZW50RGlzcGF0Y2hlciBcCi0gICAgR1BVUHJvY2VzcyBcCi0gICAgR1BV
UHJvY2Vzc1Byb3h5IFwKLSAgICBHUFVQcm9jZXNzQ29ubmVjdGlvbiBcCi0gICAgR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2VzcyBcCi0gICAgTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyIFwKLSAg
ICBMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSBcCi0gICAgTGliV2ViUlRDQ29kZWNz
IFwKLSAgICBMaWJXZWJSVENDb2RlY3NQcm94eSBcCi0gICAgTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlIFwKLSAgICBOUE9iamVjdE1lc3NhZ2VSZWNlaXZlciBcCi0gICAgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MgXAotICAgIE5ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyIFwKLSAg
ICBOZXR3b3JrTUROU1JlZ2lzdGVyXAotICAgIE5ldHdvcmtQcm9jZXNzIFwKLSAgICBOZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb24gXAotICAgIE5ldHdvcmtQcm9jZXNzUHJveHkgXAotICAgIE5ldHdv
cmtSVENNb25pdG9yIFwKLSAgICBOZXR3b3JrUlRDUHJvdmlkZXIgXAotICAgIE5ldHdvcmtSVENT
b2NrZXQgXAotICAgIE5ldHdvcmtSZXNvdXJjZUxvYWRlciBcCi0gICAgTmV0d29ya1NvY2tldENo
YW5uZWwgXAotICAgIE5ldHdvcmtTb2NrZXRTdHJlYW0gXAotICAgIFBsYXliYWNrU2Vzc2lvbk1h
bmFnZXIgXAotICAgIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eSBcCi0gICAgUGx1Z2luQ29u
dHJvbGxlclByb3h5IFwKLSAgICBQbHVnaW5Qcm9jZXNzIFwKLSAgICBQbHVnaW5Qcm9jZXNzQ29u
bmVjdGlvbiBcCi0gICAgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyIFwKLSAgICBQbHVn
aW5Qcm9jZXNzUHJveHkgXAotICAgIFBsdWdpblByb3h5IFwKLSAgICBSZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uTWFuYWdlciBcCi0gICAgUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5IFwKLSAgICBS
ZW1vdGVBdWRpb1Nlc3Npb24gXAotICAgIFJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5IFwKLSAgICBS
ZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXIgXAotICAgIFJlbW90ZUF1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyIFwKLSAgICBSZW1vdGVMYXllclRyZWVEcmF3aW5n
QXJlYVByb3h5IFwKLSAgICBSZW1vdGVDRE1Qcm94eSBcCi0gICAgUmVtb3RlQ0RNRmFjdG9yeVBy
b3h5IFwKLSAgICBSZW1vdGVDRE1JbnN0YW5jZVByb3h5IFwKLSAgICBSZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb24gXAotICAgIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5IFwKLSAgICBSZW1v
dGVMZWdhY3lDRE1Qcm94eSBcCi0gICAgUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5IFwKLSAg
ICBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uIFwKLSAgICBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJv
eHkgXAotICAgIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlciBcCi0gICAgUmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyUHJveHkgXAotICAgIFJlbW90ZU1lZGlhUGxheWVyUHJveHkgXAotICAgIFJlbW90
ZU1lZGlhUmVjb3JkZXIgXAotICAgIFJlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyIFwKLSAgICBS
ZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlciBcCi0gICAgUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVy
IFwKLSAgICBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eSBcCi0gICAgUmVtb3RlT2JqZWN0
UmVnaXN0cnkgXAotICAgIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQgXAotICAgIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eSBcCi0gICAgUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIFwK
LSAgICBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyIFwKLSAgICBSZW1vdGVT
Y3JvbGxpbmdDb29yZGluYXRvciBcCi0gICAgUmVtb3RlV2ViSW5zcGVjdG9yUHJveHkgXAotICAg
IFJlbW90ZVdlYkluc3BlY3RvclVJIFwKLSAgICBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgXAot
ICAgIFNlY0l0ZW1TaGltUHJveHkgXAotICAgIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2sgXAotICAg
IFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIgXAotICAgIFN0b3JhZ2VBcmVhTWFwIFwKLSAg
ICBTdG9yYWdlTWFuYWdlclNldCBcCi0gICAgVGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5IFwK
LSAgICBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlciBcCi0gICAgVXNlck1lZGlhQ2FwdHVyZU1hbmFn
ZXJQcm94eSBcCi0gICAgVmlkZW9GdWxsc2NyZWVuTWFuYWdlciBcCi0gICAgVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlclByb3h5IFwKLSAgICBWaWV3R2VzdHVyZUNvbnRyb2xsZXIgXAotICAgIFZpZXdH
ZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IgXAotICAgIFZpZXdVcGRhdGVEaXNwYXRjaGVyIFwKLSAg
ICBWaXNpdGVkTGlua1N0b3JlIFwKLSAgICBWaXNpdGVkTGlua1RhYmxlQ29udHJvbGxlciBcCi0g
ICAgV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkgXAotICAgIFdlYkF1dG9tYXRpb25T
ZXNzaW9uIFwKLSAgICBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5IFwKLSAgICBXZWJDb25uZWN0
aW9uIFwKLSAgICBXZWJDb29raWVNYW5hZ2VyIFwKLSAgICBXZWJDb29raWVNYW5hZ2VyUHJveHkg
XAotICAgIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyIFwKLSAgICBXZWJGdWxsU2NyZWVuTWFuYWdlclBy
b3h5IFwKLSAgICBXZWJHZW9sb2NhdGlvbk1hbmFnZXIgXAotICAgIFdlYkdlb2xvY2F0aW9uTWFu
YWdlclByb3h5IFwKLSAgICBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIgXAotICAgIFdlYklEQlNl
cnZlciBcCi0gICAgV2ViSW5zcGVjdG9yIFwKLSAgICBXZWJJbnNwZWN0b3JJbnRlcnJ1cHREaXNw
YXRjaGVyIFwKLSAgICBXZWJJbnNwZWN0b3JQcm94eSBcCi0gICAgV2ViSW5zcGVjdG9yVUkgXAot
ICAgIFdlYk1ETlNSZWdpc3RlclwKLSAgICBXZWJOb3RpZmljYXRpb25NYW5hZ2VyIFwKLSAgICBX
ZWJQYWdlIFwKLSAgICBXZWJQYWdlUHJveHkgXAotICAgIFdlYlBhc3RlYm9hcmRQcm94eSBcCi0g
ICAgV2ViUGF5bWVudENvb3JkaW5hdG9yIFwKLSAgICBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94
eSBcCi0gICAgV2ViUHJvY2VzcyBcCi0gICAgV2ViUHJvY2Vzc0Nvbm5lY3Rpb24gXAotICAgIFdl
YlByb2Nlc3NQb29sIFwKLSAgICBXZWJQcm9jZXNzUHJveHkgXAotICAgIFdlYlJUQ01vbml0b3Ig
XAotICAgIFdlYlJUQ1Jlc29sdmVyIFwKLSAgICBXZWJSVENTb2NrZXQgXAotICAgIFdlYlJlc291
cmNlTG9hZGVyIFwKLSAgICBXZWJTV0NsaWVudENvbm5lY3Rpb24gXAotICAgIFdlYlNXQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uIFwKLSAgICBXZWJTV1NlcnZlckNvbm5lY3Rpb24gXAotICAgIFdl
YlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiBcCi0gICAgV2ViRGV2aWNlT3JpZW50YXRpb25V
cGRhdGVQcm92aWRlciBcCi0gICAgV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlclBy
b3h5IFwKLSAgICBXZWJTb2NrZXRDaGFubmVsIFwKLSAgICBXZWJTb2NrZXRTdHJlYW0gXAotICAg
IFdlYlVzZXJDb250ZW50Q29udHJvbGxlciBcCi0gICAgV2ViVXNlckNvbnRlbnRDb250cm9sbGVy
UHJveHkgXAorCU5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzIFwK
KwlOZXR3b3JrUHJvY2Vzcy9JbmRleGVkREIvV2ViSURCU2VydmVyIFwKKwlOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlciBcCisJTmV0d29ya1Byb2Nlc3MvV2ViU3Rv
cmFnZS9TdG9yYWdlTWFuYWdlclNldCBcCisJTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9y
YWdlRW5naW5lQ29ubmVjdGlvbiBcCisJTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0xl
Z2FjeUN1c3RvbVByb3RvY29sTWFuYWdlciBcCisJTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tl
dENoYW5uZWwgXAorCU5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25u
ZWN0aW9uIFwKKwlOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRj
aFRhc2sgXAorCU5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uIFwKKwlOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtIFwKKwlO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2VzcyBcCisJTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jl
c291cmNlTG9hZGVyIFwKKwlOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya01ETlNSZWdpc3Rl
ciBcCisJTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENTb2NrZXQgXAorCU5ldHdvcmtQ
cm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIgXAorCU5ldHdvcmtQcm9jZXNzL3dlYnJ0
Yy9OZXR3b3JrUlRDTW9uaXRvciBcCisJTmV0d29ya1Byb2Nlc3MvQ29va2llcy9XZWJDb29raWVN
YW5hZ2VyIFwKKwlTaGFyZWQvUGx1Z2lucy9OUE9iamVjdE1lc3NhZ2VSZWNlaXZlciBcCisJU2hh
cmVkL0F1eGlsaWFyeVByb2Nlc3MgXAorCVNoYXJlZC9BUEkvQ29jb2EvUmVtb3RlT2JqZWN0UmVn
aXN0cnkgXAorCVNoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSBcCisJ
U2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlciBcCisJU2hhcmVkL1dl
YkNvbm5lY3Rpb24gXAorCVVJUHJvY2Vzcy9XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5IFwKKwlV
SVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkg
XAorCVVJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5IFwKKwlVSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkgXAorCVVJUHJvY2Vzcy9X
ZWJQYXN0ZWJvYXJkUHJveHkgXAorCVVJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eSBcCisJVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JQcm94
eSBcCisJVUlQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eSBcCisJVUlQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5IFwKKwlVSVByb2Nlc3MvRHJhd2luZ0Fy
ZWFQcm94eSBcCisJVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eSBcCisJVUlQ
cm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdl
clByb3h5IFwKKwlVSVByb2Nlc3MvV2ViUGFnZVByb3h5IFwKKwlVSVByb2Nlc3MvVmlzaXRlZExp
bmtTdG9yZSBcCisJVUlQcm9jZXNzL2lvcy9XZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3Zp
ZGVyUHJveHkgXAorCVVJUHJvY2Vzcy9pb3MvRWRpdGFibGVJbWFnZUNvbnRyb2xsZXIgXAorCVVJ
UHJvY2Vzcy9pb3MvU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlciBcCisJVUlQcm9jZXNzL21h
Yy9TZWNJdGVtU2hpbVByb3h5IFwKKwlVSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJv
eHkgXAorCVVJUHJvY2Vzcy9Db2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkgXAorCVVJ
UHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkgXAorCVVJUHJvY2Vzcy9D
b2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5IFwKKwlVSVByb2Nlc3MvV2ViQ29va2ll
TWFuYWdlclByb3h5IFwKKwlVSVByb2Nlc3MvVmlld0dlc3R1cmVDb250cm9sbGVyIFwKKwlVSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5IFwKKwlVSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0
aW9uU2Vzc2lvbiBcCisJVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sIFwKKwlVSVByb2Nlc3MvRG93
bmxvYWRzL0Rvd25sb2FkUHJveHkgXAorCVVJUHJvY2Vzcy9NZWRpYS9BdWRpb1Nlc3Npb25Sb3V0
aW5nQXJiaXRyYXRvclByb3h5IFwKKwlXZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2Vi
SURCQ29ubmVjdGlvblRvU2VydmVyIFwKKwlXZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVj
dGlvbiBcCisJV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZCBc
CisJV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcyBcCisJV2ViUHJvY2Vzcy9H
UFUvd2VicnRjL1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciBcCisJV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlIFwKKwlXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb24gXAorCVdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2Fj
eUNETVNlc3Npb24gXAorCVdlYlByb2Nlc3MvR1BVL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNlc3Np
b25IZWxwZXIgXAorCVdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdl
ciBcCisJV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5IFwK
KwlXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb1Nlc3Npb24gXAorCVdlYlByb2Nlc3Mv
V2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcCBcCisJV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJV
c2VyQ29udGVudENvbnRyb2xsZXIgXAorCVdlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3Rv
ckludGVycnVwdERpc3BhdGNoZXIgXAorCVdlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3Rv
clVJIFwKKwlXZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3IgXAorCVdlYlByb2Nlc3Mv
SW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclVJIFwKKwlXZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyIFwKKwlXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
UHJveHkgXAorCVdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbiBcCisJ
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwgXAorCVdlYlByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24gXAorCVdlYlByb2Nlc3MvTmV0d29yay9XZWJTb2Nr
ZXRTdHJlYW0gXAorCVdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlciBcCisJV2Vi
UHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJSVENTb2NrZXQgXAorCVdlYlByb2Nlc3MvTmV0d29y
ay93ZWJydGMvV2ViUlRDTW9uaXRvciBcCisJV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJN
RE5TUmVnaXN0ZXIgXAorCVdlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvV2ViUlRDUmVzb2x2ZXIg
XAorCVdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQ
cm92aWRlciBcCisJV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uIFwKKwlXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uIFwKKwlXZWJQ
cm9jZXNzL1dlYlByb2Nlc3MgXAorCVdlYlByb2Nlc3MvY29jb2EvUGxheWJhY2tTZXNzaW9uTWFu
YWdlciBcCisJV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlciBcCisJV2Vi
UHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyIFwKKwlXZWJQcm9jZXNzL0dlb2xv
Y2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlciBcCisJV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dl
YkF1dG9tYXRpb25TZXNzaW9uUHJveHkgXAorCVdlYlByb2Nlc3MvRnVsbFNjcmVlbi9XZWJGdWxs
U2NyZWVuTWFuYWdlciBcCisJV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0
b3IgXAorCVdlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyIFwK
KwlXZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVyIFwKKwlXZWJQcm9jZXNzL1dlYlBh
Z2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yIFwKKwlXZWJQcm9j
ZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3RvciBcCisJV2ViUHJvY2Vzcy9X
ZWJQYWdlL0RyYXdpbmdBcmVhIFwKKwlXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZSBcCisJV2Vi
UHJvY2Vzcy9XZWJQYWdlL1Zpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVyIFwKKwlXZWJQcm9jZXNz
L1dlYlBhZ2UvQ29jb2EvVGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5IFwKKwlXZWJQcm9jZXNz
L1dlYlBhZ2UvVmlld1VwZGF0ZURpc3BhdGNoZXIgXAorCVBsdWdpblByb2Nlc3MvV2ViUHJvY2Vz
c0Nvbm5lY3Rpb24gXAorCVBsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5IFwKKwlQ
bHVnaW5Qcm9jZXNzL1BsdWdpblByb2Nlc3MgXAorCUdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyBcCisJR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHkgXAorCUdQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5IFwKKwlHUFVQ
cm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyIFwKKwlH
UFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFn
ZXIgXAorCUdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyIFwKKwlH
UFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgXAorCUdQVVBy
b2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIgXAorCUdQVVByb2Nlc3Mvd2VicnRjL1Jl
bW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyIFwKKwlHUFVQcm9jZXNzL0dQVVByb2Nl
c3MgXAorCUdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5IFwKKwlH
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvblByb3h5TWFuYWdlciBcCisJR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkgXAorCUdQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlQXVkaW9TZXNzaW9uUHJveHkgXAorCUdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uUHJveHkgXAorCUdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkg
XAorCUdQVVByb2Nlc3MvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5IFwK
KwlHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkgXAorCUdQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5IFwKKwlHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1l
ZGlhUmVzb3VyY2VNYW5hZ2VyIFwKKwlHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNl
UHJveHkgXAorCUdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkgXAorCUdQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkgXAorCUdQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIgXAogIwogCiBTQ1JJUFRTID0gXApA
QCAtMjU1LDE1ICsyNTYsMTQgQEAgSEVBREVSX0ZMQUdTID0gJChzaGVsbCBlY2hvICQoQlVJTFRf
UFJPRAogCiAuUEhPTlkgOiBhbGwKIAotYWxsIDogXAotICAgICQoTUVTU0FHRV9SRUNFSVZFUlM6
JT0lTWVzc2FnZVJlY2VpdmVyLmNwcCkgXAotICAgICQoTUVTU0FHRV9SRUNFSVZFUlM6JT0lTWVz
c2FnZXMuaCkgXAotICAgICQoTUVTU0FHRV9SRUNFSVZFUlM6JT0lTWVzc2FnZXNSZXBsaWVzLmgp
IFwKK2FsbCA6IE1lc3NhZ2VOYW1lcy5oIE1lc3NhZ2VOYW1lcy5jcHAgXAorICAgICQoYWRkc3Vm
Zml4IE1lc3NhZ2VSZWNlaXZlci5jcHAsJChub3RkaXIgJChNRVNTQUdFX1JFQ0VJVkVSUykpKSBc
CisgICAgJChhZGRzdWZmaXggTWVzc2FnZXMuaCwkKG5vdGRpciAkKE1FU1NBR0VfUkVDRUlWRVJT
KSkpIFwKKyAgICAkKGFkZHN1ZmZpeCBNZXNzYWdlc1JlcGxpZXMuaCwkKG5vdGRpciAkKE1FU1NB
R0VfUkVDRUlWRVJTKSkpIFwKICMKIAotJU1lc3NhZ2VSZWNlaXZlci5jcHAgJU1lc3NhZ2VzLmgg
JU1lc3NhZ2VzUmVwbGllcy5oIDogJS5tZXNzYWdlcy5pbiAkKFNDUklQVFMpCi0JQGVjaG8gR2Vu
ZXJhdGluZyBtZXNzYWdlIHJlY2VpdmVyIGZvciAkKi4uLgotCUBweXRob24gJChXZWJLaXQyKS9T
Y3JpcHRzL2dlbmVyYXRlLW1lc3NhZ2UtcmVjZWl2ZXIucHkgJDwgLS1pbXBsZW1lbnRhdGlvbiAk
Kk1lc3NhZ2VSZWNlaXZlci5jcHAgLS1oZWFkZXIgJCpNZXNzYWdlcy5oIC0tcmVwbHktaGVhZGVy
ICQqTWVzc2FnZXNSZXBsaWVzLmgKKyQoYWRkc3VmZml4IE1lc3NhZ2VSZWNlaXZlci5jcHAsJChu
b3RkaXIgJChNRVNTQUdFX1JFQ0VJVkVSUykpKSAkKGFkZHN1Zml4IE1lc3NhZ2VzLmgsJChub3Rk
aXIgJChNRVNTQUdFX1JFQ0VJVkVSUykpKSAkKGFkZHN1ZmZpeCBNZXNzYWdlc1JlcGxpZXMuaCwk
KG5vdGRpciAkKE1FU1NBR0VfUkVDRUlWRVJTKSkpIE1lc3NhZ2VOYW1lcy5oIE1lc3NhZ2VOYW1l
cy5jcHA6ICQoYWRkc3VmZml4IC5tZXNzYWdlcy5pbiwkKE1FU1NBR0VfUkVDRUlWRVJTKSkgJChT
Q1JJUFRTKQorCUBweXRob24gJChXZWJLaXQyKS9TY3JpcHRzL2dlbmVyYXRlLW1lc3NhZ2UtcmVj
ZWl2ZXIucHkgJChXZWJLaXQyKSAkKE1FU1NBR0VfUkVDRUlWRVJTKQogCiBURVhUX1BSRVBST0NF
U1NPUl9GTEFHUz0tRSAtUCAtdwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtR1RLLmNt
YWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm1HVEsuY21ha2UJKHJldmlz
aW9uIDI2MTAzMykKKysrIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm1HVEsuY21ha2UJKHdvcmtpbmcg
Y29weSkKQEAgLTQzLDkgKzQzLDkgQEAgaWYgKE5PVCBVU0VfR1RLNCkKICAgICAgICAgV2ViUHJv
Y2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IuY3BwCiAgICAgKQogICAg
IGxpc3QoQVBQRU5EIFdlYktpdF9NRVNTQUdFU19JTl9GSUxFUwotICAgICAgICBVSVByb2Nlc3Mv
Vmlld0dlc3R1cmVDb250cm9sbGVyLm1lc3NhZ2VzLmluCisgICAgICAgIFVJUHJvY2Vzcy9WaWV3
R2VzdHVyZUNvbnRyb2xsZXIKIAotICAgICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1
cmVHZW9tZXRyeUNvbGxlY3Rvci5tZXNzYWdlcy5pbgorICAgICAgICBXZWJQcm9jZXNzL1dlYlBh
Z2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3RvcgogICAgICkKIGVuZGlmICgpCiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1NvdXJjZXNDb2NvYS50eHQJKHJldmlzaW9uIDI2MTAzMykKKysrIFNvdXJjZS9XZWJLaXQv
U291cmNlc0NvY29hLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNjU2LDYgKzY1Niw3IEBAIEdQVVBy
b2Nlc3NQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKIEdQVVByb2Nlc3NNZXNzYWdlUmVjZWl2ZXIu
Y3BwCiBMaWJXZWJSVENDb2RlY3NQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKIExpYldlYlJUQ0Nv
ZGVjc01lc3NhZ2VSZWNlaXZlci5jcHAKK01lc3NhZ2VOYW1lcy5jcHAKIFJlbW90ZUF1ZGlvRGVz
dGluYXRpb25NYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcAogUmVtb3RlQXVkaW9EZXN0aW5hdGlv
blByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAogUmVtb3RlQXVkaW9TZXNzaW9uTWVzc2FnZVJlY2Vp
dmVyLmNwcApJbmRleDogU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAkocmV2aXNpb24gMjYxMDMzKQorKysgU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMTYsOCArMTE2LDggQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIExvZ2dlciYg
bG9nZ2VyKCkgZmluYWwgeyByZXR1cm4gbV9wcm9jZXNzLmxvZ2dlcigpOyB9Ci0gICAgdm9pZCBh
ZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFt
ZSwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImIHJlY2VpdmVyKSBmaW5hbCB7IH0KLSAgICB2b2lkIHJl
bW92ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJO
YW1lKSBmaW5hbCB7IH0KKyAgICB2b2lkIGFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlJlY2VpdmVy
TmFtZSwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImKSBmaW5hbCB7IH0KKyAgICB2b2lkIHJlbW92ZU1l
c3NhZ2VSZWNlaXZlcihJUEM6OlJlY2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1lKSBmaW5h
bCB7IH0KICAgICBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24oKSBmaW5hbCB7IHJldHVybiBt
X3Byb2Nlc3MuY29ubmVjdGlvbigpOyB9CiAgICAgYm9vbCB3aWxsU3RhcnRDYXB0dXJlKENhcHR1
cmVEZXZpY2U6OkRldmljZVR5cGUgdHlwZSkgY29uc3QgZmluYWwKICAgICB7CkBAIC0xODcsOSAr
MTg3LDkgQEAgTG9nZ2VyJiBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpsb2dnZQogICAgIHJl
dHVybiAqbV9sb2dnZXI7CiB9CiAKLXZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlk
UmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpT
dHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpTdHJpbmdSZWZlcmVuY2Ug
bWVzc2FnZU5hbWUpCit2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVJ
bnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6TWVzc2FnZU5h
bWUgbWVzc2FnZU5hbWUpCiB7Ci0gICAgV1RGTG9nQWx3YXlzKCJSZWNlaXZlZCBhbiBpbnZhbGlk
IG1lc3NhZ2UgXCIlcy4lc1wiIGZyb20gdGhlIHdlYiBwcm9jZXNzLlxuIiwgbWVzc2FnZVJlY2Vp
dmVyTmFtZS50b1N0cmluZygpLmRhdGEoKSwgbWVzc2FnZU5hbWUudG9TdHJpbmcoKS5kYXRhKCkp
OworICAgIFdURkxvZ0Fsd2F5cygiUmVjZWl2ZWQgYW4gaW52YWxpZCBtZXNzYWdlIFwiJXNcIiBm
cm9tIHRoZSB3ZWIgcHJvY2Vzcy5cbiIsIGRlc2NyaXB0aW9uKG1lc3NhZ2VOYW1lKSk7CiAgICAg
Q1JBU0goKTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCShyZXZpc2lvbiAyNjEwMzMpCisrKyBTb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xNDQsNyArMTQ0LDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIElQQzo6Q29ubmVjdGlv
bjo6Q2xpZW50CiAgICAgdm9pZCBkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mKSBmaW5hbDsKLSAg
ICB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OlN0
cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBt
ZXNzYWdlTmFtZSkgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlTmFtZSkgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNl
aXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKICAgICB2
b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXIm
LCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIGZpbmFsOwogCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcAkocmV2aXNpb24gMjYxMDMzKQorKysgU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI2NCw3ICsyNjQsNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpkaWRSCiAgICAgICAgIHJldHVybiBwYXltZW50Q29vcmRpbmF0b3IoKS5kaWRSZWNlaXZl
TWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKICNlbmRpZgogCi0gICAgV1RGTG9nQWx3YXlz
KCJVbmhhbmRsZWQgbmV0d29yayBwcm9jZXNzIG1lc3NhZ2UgJyVzOiVzJyIsIGRlY29kZXIubWVz
c2FnZVJlY2VpdmVyTmFtZSgpLnRvU3RyaW5nKCkuZGF0YSgpLCBkZWNvZGVyLm1lc3NhZ2VOYW1l
KCkudG9TdHJpbmcoKS5kYXRhKCkpOworICAgIFdURkxvZ0Fsd2F5cygiVW5oYW5kbGVkIG5ldHdv
cmsgcHJvY2VzcyBtZXNzYWdlICclcyciLCBkZXNjcmlwdGlvbihkZWNvZGVyLm1lc3NhZ2VOYW1l
KCkpKTsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIApAQCAtMzA3LDcgKzMwNyw3IEBA
IHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFIKICAgICAgICAgcmV0dXJu
IHBheW1lbnRDb29yZGluYXRvcigpLmRpZFJlY2VpdmVTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBk
ZWNvZGVyLCByZXBseSk7CiAjZW5kaWYKIAotICAgIFdURkxvZ0Fsd2F5cygiVW5oYW5kbGVkIG5l
dHdvcmsgcHJvY2VzcyBtZXNzYWdlICclczolcyciLCBkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5h
bWUoKS50b1N0cmluZygpLmRhdGEoKSwgZGVjb2Rlci5tZXNzYWdlTmFtZSgpLnRvU3RyaW5nKCku
ZGF0YSgpKTsKKyAgICBXVEZMb2dBbHdheXMoIlVuaGFuZGxlZCBuZXR3b3JrIHByb2Nlc3MgbWVz
c2FnZSAnJXMnIiwgZGVzY3JpcHRpb24oZGVjb2Rlci5tZXNzYWdlTmFtZSgpKSk7CiAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKQEAgLTM1Niw5ICszNTYsOSBAQCB2b2lkIE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRDCiAjZW5kaWYKIH0KIAotdm9pZCBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIElQQzo6U3Ry
aW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVz
c2FnZU5hbWUgbWVzc2FnZU5hbWUpCiB7Ci0gICAgUkVMRUFTRV9MT0dfRkFVTFQoSVBDLCAiUmVj
ZWl2ZWQgYW4gaW52YWxpZCBtZXNzYWdlICclIiBQVUJMSUNfTE9HX1NUUklORyAiOjolIiBQVUJM
SUNfTE9HX1NUUklORyAiJyBmcm9tIFdlYkNvbnRlbnQgcHJvY2VzcyAlIiBQUkl1NjQgIiwgcmVx
dWVzdGluZyBmb3IgaXQgdG8gYmUgdGVybWluYXRlZC4iLCBtZXNzYWdlUmVjZWl2ZXJOYW1lLnRv
U3RyaW5nKCkuZGF0YSgpLCBtZXNzYWdlTmFtZS50b1N0cmluZygpLmRhdGEoKSwgbV93ZWJQcm9j
ZXNzSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBSRUxFQVNFX0xPR19GQVVMVChJUEMsICJS
ZWNlaXZlZCBhbiBpbnZhbGlkIG1lc3NhZ2UgJyUiIFBVQkxJQ19MT0dfU1RSSU5HICInIGZyb20g
V2ViQ29udGVudCBwcm9jZXNzICUiIFBSSXU2NCAiLCByZXF1ZXN0aW5nIGZvciBpdCB0byBiZSB0
ZXJtaW5hdGVkLiIsIGRlc2NyaXB0aW9uKG1lc3NhZ2VOYW1lKSwgbV93ZWJQcm9jZXNzSWRlbnRp
Zmllci50b1VJbnQ2NCgpKTsKICAgICBtX25ldHdvcmtQcm9jZXNzLT5wYXJlbnRQcm9jZXNzQ29u
bmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpUZXJtaW5hdGVX
ZWJQcm9jZXNzKG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIpLCAwKTsKIH0KIApJbmRleDogU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuaAkocmV2aXNpb24gMjYxMDMzKQorKysgU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xODYsNyArMTg2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlk
UmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6
dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRDbG9zZShJ
UEM6OkNvbm5lY3Rpb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2
ZXJOYW1lLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZSkgb3ZlcnJpZGU7CisgICAg
dm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNz
YWdlTmFtZSkgb3ZlcnJpZGU7CiAKICAgICAvLyBNZXNzYWdlIGhhbmRsZXJzLgogICAgIHZvaWQg
ZGlkUmVjZWl2ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mLCBJUEM6OkRlY29kZXImKTsKQEAgLTMyNiw4ICszMjYsNiBAQCBwcml2YXRlOgogICAg
IGNvbnN0IFN0cmluZyYgcGF5bWVudENvb3JkaW5hdG9yU291cmNlQXBwbGljYXRpb25CdW5kbGVJ
ZGVudGlmaWVyKGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JikgZmluYWw7CiAgICAg
Y29uc3QgU3RyaW5nJiBwYXltZW50Q29vcmRpbmF0b3JTb3VyY2VBcHBsaWNhdGlvblNlY29uZGFy
eUlkZW50aWZpZXIoY29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmKSBmaW5hbDsKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8UGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXI+IHBheW1lbnRD
b29yZGluYXRvckF1dGhvcml6YXRpb25QcmVzZW50ZXIoV2ViUGF5bWVudENvb3JkaW5hdG9yUHJv
eHkmLCBQS1BheW1lbnRSZXF1ZXN0ICopIGZpbmFsOwotICAgIHZvaWQgcGF5bWVudENvb3JkaW5h
dG9yQWRkTWVzc2FnZVJlY2VpdmVyKFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JiwgY29uc3Qg
SVBDOjpTdHJpbmdSZWZlcmVuY2UmLCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYpIGZpbmFsOwotICAg
IHZvaWQgcGF5bWVudENvb3JkaW5hdG9yUmVtb3ZlTWVzc2FnZVJlY2VpdmVyKFdlYlBheW1lbnRD
b29yZGluYXRvclByb3h5JiwgY29uc3QgSVBDOjpTdHJpbmdSZWZlcmVuY2UmKSBmaW5hbDsKICNl
bmRpZgogCiAgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOwpJbmRleDogU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAJKHJldmlz
aW9uIDI2MTAzMykKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTQsNyArMjE0LDcgQEAgdm9pZCBOZXR3b3JrUHJv
Y2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSQogewogICAgIEFTU0VSVChwYXJlbnRQcm9jZXNzQ29u
bmVjdGlvbigpID09ICZjb25uZWN0aW9uKTsKICAgICBpZiAocGFyZW50UHJvY2Vzc0Nvbm5lY3Rp
b24oKSAhPSAmY29ubmVjdGlvbikgewotICAgICAgICBXVEZMb2dBbHdheXMoIklnbm9yZWQgbWVz
c2FnZSAnJXM6JXMnIGJlY2F1c2UgaXQgZGlkIG5vdCBjb21lIGZyb20gdGhlIFVJUHJvY2VzcyAo
ZGVzdGluYXRpb246ICUiIFBSSXU2NCAiKSIsIGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgp
LnRvU3RyaW5nKCkuZGF0YSgpLCBkZWNvZGVyLm1lc3NhZ2VOYW1lKCkudG9TdHJpbmcoKS5kYXRh
KCksIGRlY29kZXIuZGVzdGluYXRpb25JRCgpKTsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJJZ25v
cmVkIG1lc3NhZ2UgJyVzJyBiZWNhdXNlIGl0IGRpZCBub3QgY29tZSBmcm9tIHRoZSBVSVByb2Nl
c3MgKGRlc3RpbmF0aW9uOiAlIiBQUkl1NjQgIikiLCBkZXNjcmlwdGlvbihkZWNvZGVyLm1lc3Nh
Z2VOYW1lKCkpLCBkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSk7CiAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjQxLDcgKzI0MSw3IEBAIHZv
aWQgTmV0d29ya1Byb2Nlc3M6OmRpZFJlY2VpdmVTeW5jTWVzc2EKIHsKICAgICBBU1NFUlQocGFy
ZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKSA9PSAmY29ubmVjdGlvbik7CiAgICAgaWYgKHBhcmVudFBy
b2Nlc3NDb25uZWN0aW9uKCkgIT0gJmNvbm5lY3Rpb24pIHsKLSAgICAgICAgV1RGTG9nQWx3YXlz
KCJJZ25vcmVkIG1lc3NhZ2UgJyVzOiVzJyBiZWNhdXNlIGl0IGRpZCBub3QgY29tZSBmcm9tIHRo
ZSBVSVByb2Nlc3MgKGRlc3RpbmF0aW9uOiAlIiBQUkl1NjQgIikiLCBkZWNvZGVyLm1lc3NhZ2VS
ZWNlaXZlck5hbWUoKS50b1N0cmluZygpLmRhdGEoKSwgZGVjb2Rlci5tZXNzYWdlTmFtZSgpLnRv
U3RyaW5nKCkuZGF0YSgpLCBkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSk7CisgICAgICAgIFdURkxv
Z0Fsd2F5cygiSWdub3JlZCBtZXNzYWdlICclcycgYmVjYXVzZSBpdCBkaWQgbm90IGNvbWUgZnJv
bSB0aGUgVUlQcm9jZXNzIChkZXN0aW5hdGlvbjogJSIgUFJJdTY0ICIpIiwgZGVzY3JpcHRpb24o
ZGVjb2Rlci5tZXNzYWdlTmFtZSgpKSwgZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpOwogICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KSW5kZXg6IFNv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzSU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvaW9z
L05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzSU9TLm1tCShyZXZpc2lvbiAyNjEwMzMpCisr
KyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzc0lPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtODUsMTQgKzg1LDYgQEAgc3RkOjp1bmlx
dWVfcHRyPFBheW1lbnRBdXRob3JpemF0aW9uUHJlcwogICAgIHJldHVybiBtYWtlVW5pcXVlPFBh
eW1lbnRBdXRob3JpemF0aW9uQ29udHJvbGxlcj4oY29vcmRpbmF0b3IsIHJlcXVlc3QpOwogfQog
Ci12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpwYXltZW50Q29vcmRpbmF0b3JB
ZGRNZXNzYWdlUmVjZWl2ZXIoV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmLCBjb25zdCBJUEM6
OlN0cmluZ1JlZmVyZW5jZSYsIElQQzo6TWVzc2FnZVJlY2VpdmVyJikKLXsKLX0KLQotdm9pZCBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cGF5bWVudENvb3JkaW5hdG9yUmVtb3ZlTWVz
c2FnZVJlY2VpdmVyKFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JiwgY29uc3QgSVBDOjpTdHJp
bmdSZWZlcmVuY2UmKQotewotfQotCiAjZW5kaWYgLy8gRU5BQkxFKEFQUExFX1BBWV9SRU1PVEVf
VUkpCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvQ29ubmVjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvQ29ubmVjdGlvbi5jcHAJKHJldmlzaW9uIDI2MTAzMykKKysrIFNvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NCwyMSArNTQs
MTcgQEAgY29uc3Qgc2l6ZV90IG1heFBlbmRpbmdJbmNvbWluZ01lc3NhZ2VzSwogc3RkOjphdG9t
aWM8dW5zaWduZWQ+IFVuYm91bmRlZFN5bmNocm9ub3VzSVBDU2NvcGU6OnVuYm91bmRlZFN5bmNo
cm9ub3VzSVBDQ291bnQgPSAwOwogCiBzdHJ1Y3QgQ29ubmVjdGlvbjo6V2FpdEZvck1lc3NhZ2VT
dGF0ZSB7Ci0gICAgV2FpdEZvck1lc3NhZ2VTdGF0ZShTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJl
Y2VpdmVyTmFtZSwgU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lLCB1aW50NjRfdCBkZXN0aW5h
dGlvbklELCBPcHRpb25TZXQ8V2FpdEZvck9wdGlvbj4gd2FpdEZvck9wdGlvbnMpCi0gICAgICAg
IDogbWVzc2FnZVJlY2VpdmVyTmFtZShtZXNzYWdlUmVjZWl2ZXJOYW1lKQotICAgICAgICAsIG1l
c3NhZ2VOYW1lKG1lc3NhZ2VOYW1lKQorICAgIFdhaXRGb3JNZXNzYWdlU3RhdGUoTWVzc2FnZU5h
bWUgbWVzc2FnZU5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIE9wdGlvblNldDxXYWl0Rm9y
T3B0aW9uPiB3YWl0Rm9yT3B0aW9ucykKKyAgICAgICAgOiBtZXNzYWdlTmFtZShtZXNzYWdlTmFt
ZSkKICAgICAgICAgLCBkZXN0aW5hdGlvbklEKGRlc3RpbmF0aW9uSUQpCiAgICAgICAgICwgd2Fp
dEZvck9wdGlvbnMod2FpdEZvck9wdGlvbnMpCiAgICAgewogICAgIH0KIAotICAgIFN0cmluZ1Jl
ZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lOwotICAgIFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdl
TmFtZTsKKyAgICBNZXNzYWdlTmFtZSBtZXNzYWdlTmFtZTsKICAgICB1aW50NjRfdCBkZXN0aW5h
dGlvbklEOwotCiAgICAgT3B0aW9uU2V0PFdhaXRGb3JPcHRpb24+IHdhaXRGb3JPcHRpb25zOwog
ICAgIGJvb2wgbWVzc2FnZVdhaXRpbmdJbnRlcnJ1cHRlZCA9IGZhbHNlOwotCiAgICAgc3RkOjp1
bmlxdWVfcHRyPERlY29kZXI+IGRlY29kZXI7CiB9OwogCkBAIC0zMTUsMjMgKzMxMSwyMyBAQCB2
b2lkIENvbm5lY3Rpb246OnNldFNob3VsZEV4aXRPblN5bmNNZXNzCiAgICAgbV9zaG91bGRFeGl0
T25TeW5jTWVzc2FnZVNlbmRGYWlsdXJlID0gc2hvdWxkRXhpdE9uU3luY01lc3NhZ2VTZW5kRmFp
bHVyZTsKIH0KIAotdm9pZCBDb25uZWN0aW9uOjphZGRXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIo
U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIFdvcmtRdWV1ZSYgd29ya1F1ZXVl
LCBXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIqIHdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcikKK3Zv
aWQgQ29ubmVjdGlvbjo6YWRkV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKFJlY2VpdmVyTmFtZSBt
ZXNzYWdlUmVjZWl2ZXJOYW1lLCBXb3JrUXVldWUmIHdvcmtRdWV1ZSwgV29ya1F1ZXVlTWVzc2Fn
ZVJlY2VpdmVyKiB3b3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIpCiB7CiAgICAgQVNTRVJUKFJ1bkxv
b3A6OmlzTWFpbigpKTsKIAogICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV93b3JrUXVldWVN
ZXNzYWdlUmVjZWl2ZXJzTXV0ZXgpOwotICAgIEFTU0VSVCghbV93b3JrUXVldWVNZXNzYWdlUmVj
ZWl2ZXJzLmNvbnRhaW5zKG1lc3NhZ2VSZWNlaXZlck5hbWUpKTsKKyAgICBBU1NFUlQoIW1fd29y
a1F1ZXVlTWVzc2FnZVJlY2VpdmVycy5jb250YWlucyhzdGF0aWNfY2FzdDx1aW50OF90PihtZXNz
YWdlUmVjZWl2ZXJOYW1lKSkpOwogCi0gICAgbV93b3JrUXVldWVNZXNzYWdlUmVjZWl2ZXJzLmFk
ZChtZXNzYWdlUmVjZWl2ZXJOYW1lLCBzdGQ6Om1ha2VfcGFpcigmd29ya1F1ZXVlLCB3b3JrUXVl
dWVNZXNzYWdlUmVjZWl2ZXIpKTsKKyAgICBtX3dvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcnMuYWRk
KHN0YXRpY19jYXN0PHVpbnQ4X3Q+KG1lc3NhZ2VSZWNlaXZlck5hbWUpLCBzdGQ6Om1ha2VfcGFp
cigmd29ya1F1ZXVlLCB3b3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIpKTsKIH0KIAotdm9pZCBDb25u
ZWN0aW9uOjpyZW1vdmVXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIoU3RyaW5nUmVmZXJlbmNlIG1l
c3NhZ2VSZWNlaXZlck5hbWUpCit2b2lkIENvbm5lY3Rpb246OnJlbW92ZVdvcmtRdWV1ZU1lc3Nh
Z2VSZWNlaXZlcihSZWNlaXZlck5hbWUgbWVzc2FnZVJlY2VpdmVyTmFtZSkKIHsKICAgICBBU1NF
UlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3dv
cmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcnNNdXRleCk7Ci0gICAgQVNTRVJUKG1fd29ya1F1ZXVlTWVz
c2FnZVJlY2VpdmVycy5jb250YWlucyhtZXNzYWdlUmVjZWl2ZXJOYW1lKSk7Ci0gICAgbV93b3Jr
UXVldWVNZXNzYWdlUmVjZWl2ZXJzLnJlbW92ZShtZXNzYWdlUmVjZWl2ZXJOYW1lKTsKKyAgICBB
U1NFUlQobV93b3JrUXVldWVNZXNzYWdlUmVjZWl2ZXJzLmNvbnRhaW5zKHN0YXRpY19jYXN0PHVp
bnQ4X3Q+KG1lc3NhZ2VSZWNlaXZlck5hbWUpKSk7CisgICAgbV93b3JrUXVldWVNZXNzYWdlUmVj
ZWl2ZXJzLnJlbW92ZShzdGF0aWNfY2FzdDx1aW50OF90PihtZXNzYWdlUmVjZWl2ZXJOYW1lKSk7
CiB9CiAKIHZvaWQgQ29ubmVjdGlvbjo6ZGlzcGF0Y2hXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXJN
ZXNzYWdlKFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlciYgd29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVy
LCBEZWNvZGVyJiBkZWNvZGVyKQpAQCAtMzQ5LDcgKzM0NSw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6
ZGlzcGF0Y2hXb3JrUXVldWVNZXNzYWcKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1
dG8gcmVwbHlFbmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNvZGVyPigiSVBDIiwgIlN5bmNNZXNzYWdl
UmVwbHkiLCBzeW5jUmVxdWVzdElEKTsKKyAgICBhdXRvIHJlcGx5RW5jb2RlciA9IG1ha2VVbmlx
dWU8RW5jb2Rlcj4oTWVzc2FnZU5hbWU6OlN5bmNNZXNzYWdlUmVwbHksIHN5bmNSZXF1ZXN0SUQp
OwogCiAgICAgLy8gSGFuZCBvZmYgYm90aCB0aGUgZGVjb2RlciBhbmQgZW5jb2RlciB0byB0aGUg
d29yayBxdWV1ZSBtZXNzYWdlIHJlY2VpdmVyLgogICAgIHdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZl
ci5kaWRSZWNlaXZlU3luY01lc3NhZ2UoKnRoaXMsIGRlY29kZXIsIHJlcGx5RW5jb2Rlcik7CkBA
IC0zNjEsMjQgKzM1NywyNCBAQCB2b2lkIENvbm5lY3Rpb246OmRpc3BhdGNoV29ya1F1ZXVlTWVz
c2FnCiAgICAgICAgIHNlbmRTeW5jUmVwbHkoV1RGTW92ZShyZXBseUVuY29kZXIpKTsKIH0KIAot
dm9pZCBDb25uZWN0aW9uOjphZGRUaHJlYWRNZXNzYWdlUmVjZWl2ZXIoU3RyaW5nUmVmZXJlbmNl
IG1lc3NhZ2VSZWNlaXZlck5hbWUsIFRocmVhZE1lc3NhZ2VSZWNlaXZlciogdGhyZWFkTWVzc2Fn
ZVJlY2VpdmVyKQordm9pZCBDb25uZWN0aW9uOjphZGRUaHJlYWRNZXNzYWdlUmVjZWl2ZXIoUmVj
ZWl2ZXJOYW1lIG1lc3NhZ2VSZWNlaXZlck5hbWUsIFRocmVhZE1lc3NhZ2VSZWNlaXZlciogdGhy
ZWFkTWVzc2FnZVJlY2VpdmVyKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAK
ICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fdGhyZWFkTWVzc2FnZVJlY2VpdmVyc0xvY2sp
OwotICAgIEFTU0VSVCghbV90aHJlYWRNZXNzYWdlUmVjZWl2ZXJzLmNvbnRhaW5zKG1lc3NhZ2VS
ZWNlaXZlck5hbWUpKTsKKyAgICBBU1NFUlQoIW1fdGhyZWFkTWVzc2FnZVJlY2VpdmVycy5jb250
YWlucyhzdGF0aWNfY2FzdDx1aW50OF90PihtZXNzYWdlUmVjZWl2ZXJOYW1lKSkpOwogCi0gICAg
bV90aHJlYWRNZXNzYWdlUmVjZWl2ZXJzLmFkZChtZXNzYWdlUmVjZWl2ZXJOYW1lLCB0aHJlYWRN
ZXNzYWdlUmVjZWl2ZXIpOworICAgIG1fdGhyZWFkTWVzc2FnZVJlY2VpdmVycy5hZGQoc3RhdGlj
X2Nhc3Q8dWludDhfdD4obWVzc2FnZVJlY2VpdmVyTmFtZSksIHRocmVhZE1lc3NhZ2VSZWNlaXZl
cik7CiB9CiAKLXZvaWQgQ29ubmVjdGlvbjo6cmVtb3ZlVGhyZWFkTWVzc2FnZVJlY2VpdmVyKFN0
cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lKQordm9pZCBDb25uZWN0aW9uOjpyZW1v
dmVUaHJlYWRNZXNzYWdlUmVjZWl2ZXIoUmVjZWl2ZXJOYW1lIG1lc3NhZ2VSZWNlaXZlck5hbWUp
CiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAgIGF1dG8gbG9ja2VyID0g
aG9sZExvY2sobV90aHJlYWRNZXNzYWdlUmVjZWl2ZXJzTG9jayk7Ci0gICAgQVNTRVJUKG1fdGhy
ZWFkTWVzc2FnZVJlY2VpdmVycy5jb250YWlucyhtZXNzYWdlUmVjZWl2ZXJOYW1lKSk7CisgICAg
QVNTRVJUKG1fdGhyZWFkTWVzc2FnZVJlY2VpdmVycy5jb250YWlucyhzdGF0aWNfY2FzdDx1aW50
OF90PihtZXNzYWdlUmVjZWl2ZXJOYW1lKSkpOwogCi0gICAgbV90aHJlYWRNZXNzYWdlUmVjZWl2
ZXJzLnJlbW92ZShtZXNzYWdlUmVjZWl2ZXJOYW1lKTsKKyAgICBtX3RocmVhZE1lc3NhZ2VSZWNl
aXZlcnMucmVtb3ZlKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KG1lc3NhZ2VSZWNlaXZlck5hbWUpKTsK
IH0KIAogdm9pZCBDb25uZWN0aW9uOjpkaXNwYXRjaFRocmVhZE1lc3NhZ2VSZWNlaXZlck1lc3Nh
Z2UoVGhyZWFkTWVzc2FnZVJlY2VpdmVyJiB0aHJlYWRNZXNzYWdlUmVjZWl2ZXIsIERlY29kZXIm
IGRlY29kZXIpCkBAIC0zOTUsNyArMzkxLDcgQEAgdm9pZCBDb25uZWN0aW9uOjpkaXNwYXRjaFRo
cmVhZE1lc3NhZ2VSZQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byByZXBseUVu
Y29kZXIgPSBtYWtlVW5pcXVlPEVuY29kZXI+KCJJUEMiLCAiU3luY01lc3NhZ2VSZXBseSIsIHN5
bmNSZXF1ZXN0SUQpOworICAgIGF1dG8gcmVwbHlFbmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNvZGVy
PihNZXNzYWdlTmFtZTo6U3luY01lc3NhZ2VSZXBseSwgc3luY1JlcXVlc3RJRCk7CiAgICAgdGhy
ZWFkTWVzc2FnZVJlY2VpdmVyLmRpZFJlY2VpdmVTeW5jTWVzc2FnZSgqdGhpcywgZGVjb2Rlciwg
cmVwbHlFbmNvZGVyKTsKIAogICAgIC8vIEZJWE1FOiBJZiB0aGUgbWVzc2FnZSB3YXMgaW52YWxp
ZCwgd2Ugc2hvdWxkIHNlbmQgYmFjayBhIFN5bmNNZXNzYWdlRXJyb3IuCkBAIC00MzYsOSArNDMy
LDkgQEAgdm9pZCBDb25uZWN0aW9uOjptYXJrQ3VycmVudGx5RGlzcGF0Y2hlZAogICAgIG1fZGlk
UmVjZWl2ZUludmFsaWRNZXNzYWdlID0gdHJ1ZTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEVuY29k
ZXI+IENvbm5lY3Rpb246OmNyZWF0ZVN5bmNNZXNzYWdlRW5jb2RlcihTdHJpbmdSZWZlcmVuY2Ug
bWVzc2FnZVJlY2VpdmVyTmFtZSwgU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lLCB1aW50NjRf
dCBkZXN0aW5hdGlvbklELCB1aW50NjRfdCYgc3luY1JlcXVlc3RJRCkKK3N0ZDo6dW5pcXVlX3B0
cjxFbmNvZGVyPiBDb25uZWN0aW9uOjpjcmVhdGVTeW5jTWVzc2FnZUVuY29kZXIoTWVzc2FnZU5h
bWUgbWVzc2FnZU5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIHVpbnQ2NF90JiBzeW5jUmVx
dWVzdElEKQogewotICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWU8RW5jb2Rlcj4obWVzc2Fn
ZVJlY2VpdmVyTmFtZSwgbWVzc2FnZU5hbWUsIGRlc3RpbmF0aW9uSUQpOworICAgIGF1dG8gZW5j
b2RlciA9IG1ha2VVbmlxdWU8RW5jb2Rlcj4obWVzc2FnZU5hbWUsIGRlc3RpbmF0aW9uSUQpOwog
ICAgIGVuY29kZXItPnNldElzU3luY01lc3NhZ2UodHJ1ZSk7CiAKICAgICAvLyBFbmNvZGUgdGhl
IHN5bmMgcmVxdWVzdCBJRC4KQEAgLTQ1Myw5ICs0NDksOSBAQCBib29sIENvbm5lY3Rpb246OnNl
bmRNZXNzYWdlKHN0ZDo6dW5pcXVlCiAgICAgaWYgKCFpc1ZhbGlkKCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIGlmIChpc01haW5UaHJlYWQoKSAmJiBtX2luRGlzcGF0Y2hNZXNzYWdl
TWFya2VkVG9Vc2VGdWxseVN5bmNocm9ub3VzTW9kZUZvclRlc3RpbmcgJiYgIWVuY29kZXItPmlz
U3luY01lc3NhZ2UoKSAmJiAhKGVuY29kZXItPm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSAiSVBD
IikgJiYgIXNlbmRPcHRpb25zLmNvbnRhaW5zKFNlbmRPcHRpb246Oklnbm9yZUZ1bGx5U3luY2hy
b25vdXNNb2RlKSkgeworICAgIGlmIChpc01haW5UaHJlYWQoKSAmJiBtX2luRGlzcGF0Y2hNZXNz
YWdlTWFya2VkVG9Vc2VGdWxseVN5bmNocm9ub3VzTW9kZUZvclRlc3RpbmcgJiYgIWVuY29kZXIt
PmlzU3luY01lc3NhZ2UoKSAmJiAhKGVuY29kZXItPm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBS
ZWNlaXZlck5hbWU6OklQQykgJiYgIXNlbmRPcHRpb25zLmNvbnRhaW5zKFNlbmRPcHRpb246Okln
bm9yZUZ1bGx5U3luY2hyb25vdXNNb2RlKSkgewogICAgICAgICB1aW50NjRfdCBzeW5jUmVxdWVz
dElEOwotICAgICAgICBhdXRvIHdyYXBwZWRNZXNzYWdlID0gY3JlYXRlU3luY01lc3NhZ2VFbmNv
ZGVyKCJJUEMiLCAiV3JhcHBlZEFzeW5jTWVzc2FnZUZvclRlc3RpbmciLCBlbmNvZGVyLT5kZXN0
aW5hdGlvbklEKCksIHN5bmNSZXF1ZXN0SUQpOworICAgICAgICBhdXRvIHdyYXBwZWRNZXNzYWdl
ID0gY3JlYXRlU3luY01lc3NhZ2VFbmNvZGVyKE1lc3NhZ2VOYW1lOjpXcmFwcGVkQXN5bmNNZXNz
YWdlRm9yVGVzdGluZywgZW5jb2Rlci0+ZGVzdGluYXRpb25JRCgpLCBzeW5jUmVxdWVzdElEKTsK
ICAgICAgICAgd3JhcHBlZE1lc3NhZ2UtPnNldEZ1bGx5U3luY2hyb25vdXNNb2RlRm9yVGVzdGlu
ZygpOwogICAgICAgICB3cmFwcGVkTWVzc2FnZS0+d3JhcEZvclRlc3RpbmcoV1RGTW92ZShlbmNv
ZGVyKSk7CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxib29sPihzZW5kU3luY01lc3NhZ2Uo
c3luY1JlcXVlc3RJRCwgV1RGTW92ZSh3cmFwcGVkTWVzc2FnZSksIFNlY29uZHM6OmluZmluaXR5
KCksIHsgfSkpOwpAQCAtNDkwLDcgKzQ4Niw3IEBAIFNlY29uZHMgQ29ubmVjdGlvbjo6dGltZW91
dFJlc3BlY3RpbmdJZ24KICAgICByZXR1cm4gbV9pZ25vcmVUaW1lb3V0c0ZvclRlc3RpbmcgPyBT
ZWNvbmRzOjppbmZpbml0eSgpIDogdGltZW91dDsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPERlY29k
ZXI+IENvbm5lY3Rpb246OndhaXRGb3JNZXNzYWdlKFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVj
ZWl2ZXJOYW1lLCBTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0
aW9uSUQsIFNlY29uZHMgdGltZW91dCwgT3B0aW9uU2V0PFdhaXRGb3JPcHRpb24+IHdhaXRGb3JP
cHRpb25zKQorc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IENvbm5lY3Rpb246OndhaXRGb3JNZXNz
YWdlKE1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBTZWNv
bmRzIHRpbWVvdXQsIE9wdGlvblNldDxXYWl0Rm9yT3B0aW9uPiB3YWl0Rm9yT3B0aW9ucykKIHsK
ICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIGF1dG8gcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpOwpAQCAtNTA2LDcgKzUwMiw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxEZWNv
ZGVyPiBDb25uZWN0aW9uOjp3YWkKICAgICAgICAgZm9yIChhdXRvIGl0ID0gbV9pbmNvbWluZ01l
c3NhZ2VzLmJlZ2luKCksIGVuZCA9IG1faW5jb21pbmdNZXNzYWdlcy5lbmQoKTsgaXQgIT0gZW5k
OyArK2l0KSB7CiAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4mIG1lc3NhZ2Ug
PSAqaXQ7CiAKLSAgICAgICAgICAgIGlmIChtZXNzYWdlLT5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkg
PT0gbWVzc2FnZVJlY2VpdmVyTmFtZSAmJiBtZXNzYWdlLT5tZXNzYWdlTmFtZSgpID09IG1lc3Nh
Z2VOYW1lICYmIG1lc3NhZ2UtPmRlc3RpbmF0aW9uSUQoKSA9PSBkZXN0aW5hdGlvbklEKSB7Cisg
ICAgICAgICAgICBpZiAobWVzc2FnZS0+bWVzc2FnZU5hbWUoKSA9PSBtZXNzYWdlTmFtZSAmJiBt
ZXNzYWdlLT5kZXN0aW5hdGlvbklEKCkgPT0gZGVzdGluYXRpb25JRCkgewogICAgICAgICAgICAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiByZXR1cm5lZE1lc3NhZ2UgPSBXVEZNb3ZlKG1l
c3NhZ2UpOwogCiAgICAgICAgICAgICAgICAgbV9pbmNvbWluZ01lc3NhZ2VzLnJlbW92ZShpdCk7
CkBAIC01MjgsNyArNTI0LDcgQEAgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IENvbm5lY3Rpb246
OndhaQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBXYWl0Rm9yTWVzc2Fn
ZVN0YXRlIHdhaXRpbmdGb3JNZXNzYWdlKG1lc3NhZ2VSZWNlaXZlck5hbWUsIG1lc3NhZ2VOYW1l
LCBkZXN0aW5hdGlvbklELCB3YWl0Rm9yT3B0aW9ucyk7CisgICAgV2FpdEZvck1lc3NhZ2VTdGF0
ZSB3YWl0aW5nRm9yTWVzc2FnZShtZXNzYWdlTmFtZSwgZGVzdGluYXRpb25JRCwgd2FpdEZvck9w
dGlvbnMpOwogCiAgICAgewogICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fd2FpdEZv
ck1lc3NhZ2VNdXRleCk7CkBAIC02MDAsMTQgKzU5NiwxMyBAQCBzdGQ6OnVuaXF1ZV9wdHI8RGVj
b2Rlcj4gQ29ubmVjdGlvbjo6c2VuCiAgICAgaWYgKHNlbmRTeW5jT3B0aW9ucy5jb250YWlucyhT
ZW5kU3luY09wdGlvbjo6Rm9yY2VEaXNwYXRjaFdoZW5EZXN0aW5hdGlvbklzV2FpdGluZ0ZvclVu
Ym91bmRlZFN5bmNSZXBseSkpCiAgICAgICAgIHNlbmRPcHRpb25zID0gc2VuZE9wdGlvbnMgfCBJ
UEM6OlNlbmRPcHRpb246OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclVuYm91bmRl
ZFN5bmNSZXBseTsKIAotICAgIGF1dG8gbWVzc2FnZVJlY2VpdmVyTmFtZSA9IGVuY29kZXItPm1l
c3NhZ2VSZWNlaXZlck5hbWUoKTsKICAgICBhdXRvIG1lc3NhZ2VOYW1lID0gZW5jb2Rlci0+bWVz
c2FnZU5hbWUoKTsKICAgICBzZW5kTWVzc2FnZShXVEZNb3ZlKGVuY29kZXIpLCBzZW5kT3B0aW9u
cyk7CiAKICAgICAvLyBUaGVuIHdhaXQgZm9yIGEgcmVwbHkuIFdhaXRpbmcgZm9yIGEgcmVwbHkg
Y291bGQgaW52b2x2ZSBkaXNwYXRjaGluZyBpbmNvbWluZyBzeW5jIG1lc3NhZ2VzLCBzbwogICAg
IC8vIGtlZXAgYW4gZXh0cmEgcmVmZXJlbmNlIHRvIHRoZSBjb25uZWN0aW9uIGhlcmUgaW4gY2Fz
ZSBpdCdzIGludmFsaWRhdGVkLgogICAgIFJlZjxDb25uZWN0aW9uPiBwcm90ZWN0KCp0aGlzKTsK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gcmVwbHkgPSB3YWl0Rm9yU3luY1JlcGx5KHN5
bmNSZXF1ZXN0SUQsIG1lc3NhZ2VSZWNlaXZlck5hbWUsIG1lc3NhZ2VOYW1lLCB0aW1lb3V0LCBz
ZW5kU3luY09wdGlvbnMpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiByZXBseSA9IHdh
aXRGb3JTeW5jUmVwbHkoc3luY1JlcXVlc3RJRCwgbWVzc2FnZU5hbWUsIHRpbWVvdXQsIHNlbmRT
eW5jT3B0aW9ucyk7CiAKICAgICAtLW1faW5TZW5kU3luY0NvdW50OwogCkBAIC02MjQsNyArNjE5
LDcgQEAgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IENvbm5lY3Rpb246OnNlbgogICAgIHJldHVy
biByZXBseTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IENvbm5lY3Rpb246OndhaXRG
b3JTeW5jUmVwbHkodWludDY0X3Qgc3luY1JlcXVlc3RJRCwgU3RyaW5nUmVmZXJlbmNlIG1lc3Nh
Z2VSZWNlaXZlck5hbWUsIFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZSwgU2Vjb25kcyB0aW1l
b3V0LCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucykKK3N0ZDo6dW5p
cXVlX3B0cjxEZWNvZGVyPiBDb25uZWN0aW9uOjp3YWl0Rm9yU3luY1JlcGx5KHVpbnQ2NF90IHN5
bmNSZXF1ZXN0SUQsIE1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lLCBTZWNvbmRzIHRpbWVvdXQsIE9w
dGlvblNldDxTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zKQogewogICAgIHRpbWVvdXQg
PSB0aW1lb3V0UmVzcGVjdGluZ0lnbm9yZVRpbWVvdXRzRm9yVGVzdGluZyh0aW1lb3V0KTsKICAg
ICBNb25vdG9uaWNUaW1lIGFic29sdXRlVGltZSA9IE1vbm90b25pY1RpbWU6Om5vdygpICsgdGlt
ZW91dDsKQEAgLTY2OSw5ICs2NjQsOSBAQCBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gQ29ubmVj
dGlvbjo6d2FpCiAgICAgfQogCiAjaWYgT1MoREFSV0lOKQotICAgIFJFTEVBU0VfTE9HX0VSUk9S
KElQQywgIkNvbm5lY3Rpb246OndhaXRGb3JTeW5jUmVwbHk6IFRpbWVkLW91dCB3aGlsZSB3YWl0
aW5nIGZvciByZXBseSBmb3IgJXtwdWJsaWN9czo6JXtwdWJsaWN9cyBmcm9tIHByb2Nlc3MgJWQs
IGlkID0gJSIgUFJJdTY0LCBtZXNzYWdlUmVjZWl2ZXJOYW1lLnRvU3RyaW5nKCkuZGF0YSgpLCBt
ZXNzYWdlTmFtZS50b1N0cmluZygpLmRhdGEoKSwgcmVtb3RlUHJvY2Vzc0lEKCksIHN5bmNSZXF1
ZXN0SUQpOworICAgIFJFTEVBU0VfTE9HX0VSUk9SKElQQywgIkNvbm5lY3Rpb246OndhaXRGb3JT
eW5jUmVwbHk6IFRpbWVkLW91dCB3aGlsZSB3YWl0aW5nIGZvciByZXBseSBmb3IgJXtwdWJsaWN9
cyBmcm9tIHByb2Nlc3MgJWQsIGlkID0gJSIgUFJJdTY0LCBkZXNjcmlwdGlvbihtZXNzYWdlTmFt
ZSksIHJlbW90ZVByb2Nlc3NJRCgpLCBzeW5jUmVxdWVzdElEKTsKICNlbHNlCi0gICAgUkVMRUFT
RV9MT0dfRVJST1IoSVBDLCAiQ29ubmVjdGlvbjo6d2FpdEZvclN5bmNSZXBseTogVGltZWQtb3V0
IHdoaWxlIHdhaXRpbmcgZm9yIHJlcGx5IGZvciAlczo6JXMsIGlkID0gJSIgUFJJdTY0LCBtZXNz
YWdlUmVjZWl2ZXJOYW1lLnRvU3RyaW5nKCkuZGF0YSgpLCBtZXNzYWdlTmFtZS50b1N0cmluZygp
LmRhdGEoKSwgc3luY1JlcXVlc3RJRCk7CisgICAgUkVMRUFTRV9MT0dfRVJST1IoSVBDLCAiQ29u
bmVjdGlvbjo6d2FpdEZvclN5bmNSZXBseTogVGltZWQtb3V0IHdoaWxlIHdhaXRpbmcgZm9yIHJl
cGx5IGZvciAlcywgaWQgPSAlIiBQUkl1NjQsIGRlc2NyaXB0aW9uKG1lc3NhZ2VOYW1lKSwgc3lu
Y1JlcXVlc3RJRCk7CiAjZW5kaWYKIAogICAgIGRpZFJlY2VpdmVTeW5jUmVwbHkoc2VuZFN5bmNP
cHRpb25zKTsKQEAgLTcxMSwyMyArNzA2LDE2IEBAIHZvaWQgQ29ubmVjdGlvbjo6cHJvY2Vzc0lu
Y29taW5nU3luY1JlcGwKIAogdm9pZCBDb25uZWN0aW9uOjpwcm9jZXNzSW5jb21pbmdNZXNzYWdl
KHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiBtZXNzYWdlKQogewotICAgIEFTU0VSVCghbWVzc2Fn
ZS0+bWVzc2FnZVJlY2VpdmVyTmFtZSgpLmlzRW1wdHkoKSk7Ci0gICAgQVNTRVJUKCFtZXNzYWdl
LT5tZXNzYWdlTmFtZSgpLmlzRW1wdHkoKSk7CisgICAgQVNTRVJUKG1lc3NhZ2UtPm1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSAhPSBSZWNlaXZlck5hbWU6OkludmFsaWQpOwogCi0gICAgaWYgKG1lc3Nh
Z2UtPm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSAiSVBDIiAmJiBtZXNzYWdlLT5tZXNzYWdlTmFt
ZSgpID09ICJTeW5jTWVzc2FnZVJlcGx5IikgeworICAgIGlmIChtZXNzYWdlLT5tZXNzYWdlTmFt
ZSgpID09IE1lc3NhZ2VOYW1lOjpTeW5jTWVzc2FnZVJlcGx5KSB7CiAgICAgICAgIHByb2Nlc3NJ
bmNvbWluZ1N5bmNSZXBseShXVEZNb3ZlKG1lc3NhZ2UpKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIGlmICghV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyTWFwOjppc1ZhbGlkS2V5KG1l
c3NhZ2UtPm1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgfHwgIVRocmVhZE1lc3NhZ2VSZWNlaXZlck1h
cDo6aXNWYWxpZEtleShtZXNzYWdlLT5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkpKSB7Ci0gICAgICAg
IFJlZlB0cjxDb25uZWN0aW9uPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwotICAgICAgICBTdHJpbmdS
ZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZVJlZmVyZW5jZSA9IG1lc3NhZ2UtPm1lc3NhZ2VS
ZWNlaXZlck5hbWUoKTsKLSAgICAgICAgU3RyaW5nIG1lc3NhZ2VSZWNlaXZlck5hbWUobWVzc2Fn
ZVJlY2VpdmVyTmFtZVJlZmVyZW5jZS5pc0VtcHR5KCkgPyAiPHVua25vd24gbWVzc2FnZSByZWNl
aXZlcj4iIDogU3RyaW5nKG1lc3NhZ2VSZWNlaXZlck5hbWVSZWZlcmVuY2UuZGF0YSgpLCBtZXNz
YWdlUmVjZWl2ZXJOYW1lUmVmZXJlbmNlLnNpemUoKSkpOwotICAgICAgICBTdHJpbmdSZWZlcmVu
Y2UgbWVzc2FnZU5hbWVSZWZlcmVuY2UgPSBtZXNzYWdlLT5tZXNzYWdlTmFtZSgpOwotICAgICAg
ICBTdHJpbmcgbWVzc2FnZU5hbWUobWVzc2FnZU5hbWVSZWZlcmVuY2UuaXNFbXB0eSgpID8gIjx1
bmtub3duIG1lc3NhZ2U+IiA6IFN0cmluZyhtZXNzYWdlTmFtZVJlZmVyZW5jZS5kYXRhKCksIG1l
c3NhZ2VOYW1lUmVmZXJlbmNlLnNpemUoKSkpOwotCi0gICAgICAgIFJ1bkxvb3A6Om1haW4oKS5k
aXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBtZXNzYWdlUmVjZWl2ZXJO
YW1lID0gV1RGTW92ZShtZXNzYWdlUmVjZWl2ZXJOYW1lKSwgbWVzc2FnZU5hbWUgPSBXVEZNb3Zl
KG1lc3NhZ2VOYW1lKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPmRp
c3BhdGNoRGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKG1lc3NhZ2VSZWNlaXZlck5hbWUudXRmOCgp
LCBtZXNzYWdlTmFtZS51dGY4KCkpOworICAgIGlmICghV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVy
TWFwOjppc1ZhbGlkS2V5KHN0YXRpY19jYXN0PHVpbnQ4X3Q+KG1lc3NhZ2UtPm1lc3NhZ2VSZWNl
aXZlck5hbWUoKSkpIHx8ICFUaHJlYWRNZXNzYWdlUmVjZWl2ZXJNYXA6OmlzVmFsaWRLZXkoc3Rh
dGljX2Nhc3Q8dWludDhfdD4obWVzc2FnZS0+bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSkpIHsKKyAg
ICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyksIG1lc3NhZ2VOYW1lID0gbWVzc2FnZS0+bWVzc2FnZU5hbWUoKV0oKSBtdXRhYmxlIHsK
KyAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPmRpc3BhdGNoRGlkUmVjZWl2ZUludmFsaWRNZXNz
YWdlKG1lc3NhZ2VOYW1lKTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBA
IC03NTksNyArNzQ3LDcgQEAgdm9pZCBDb25uZWN0aW9uOjpwcm9jZXNzSW5jb21pbmdNZXNzYWdl
KAogICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fd2FpdEZvck1lc3NhZ2VNdXRleCk7
CiAKICAgICAgICAgaWYgKG1fd2FpdGluZ0Zvck1lc3NhZ2UgJiYgIW1fd2FpdGluZ0Zvck1lc3Nh
Z2UtPmRlY29kZXIpIHsKLSAgICAgICAgICAgIGlmIChtX3dhaXRpbmdGb3JNZXNzYWdlLT5tZXNz
YWdlUmVjZWl2ZXJOYW1lID09IG1lc3NhZ2UtPm1lc3NhZ2VSZWNlaXZlck5hbWUoKSAmJiBtX3dh
aXRpbmdGb3JNZXNzYWdlLT5tZXNzYWdlTmFtZSA9PSBtZXNzYWdlLT5tZXNzYWdlTmFtZSgpICYm
IG1fd2FpdGluZ0Zvck1lc3NhZ2UtPmRlc3RpbmF0aW9uSUQgPT0gbWVzc2FnZS0+ZGVzdGluYXRp
b25JRCgpKSB7CisgICAgICAgICAgICBpZiAobV93YWl0aW5nRm9yTWVzc2FnZS0+bWVzc2FnZU5h
bWUgPT0gbWVzc2FnZS0+bWVzc2FnZU5hbWUoKSAmJiBtX3dhaXRpbmdGb3JNZXNzYWdlLT5kZXN0
aW5hdGlvbklEID09IG1lc3NhZ2UtPmRlc3RpbmF0aW9uSUQoKSkgewogICAgICAgICAgICAgICAg
IG1fd2FpdGluZ0Zvck1lc3NhZ2UtPmRlY29kZXIgPSBXVEZNb3ZlKG1lc3NhZ2UpOwogICAgICAg
ICAgICAgICAgIEFTU0VSVChtX3dhaXRpbmdGb3JNZXNzYWdlLT5kZWNvZGVyKTsKICAgICAgICAg
ICAgICAgICBtX3dhaXRGb3JNZXNzYWdlQ29uZGl0aW9uLm5vdGlmeU9uZSgpOwpAQCAtOTEyLDkg
KzkwMCw5IEBAIHZvaWQgQ29ubmVjdGlvbjo6ZGlzcGF0Y2hTeW5jTWVzc2FnZShEZWMKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gcmVwbHlFbmNvZGVyID0gbWFrZVVuaXF1ZTxF
bmNvZGVyPigiSVBDIiwgIlN5bmNNZXNzYWdlUmVwbHkiLCBzeW5jUmVxdWVzdElEKTsKKyAgICBh
dXRvIHJlcGx5RW5jb2RlciA9IG1ha2VVbmlxdWU8RW5jb2Rlcj4oTWVzc2FnZU5hbWU6OlN5bmNN
ZXNzYWdlUmVwbHksIHN5bmNSZXF1ZXN0SUQpOwogCi0gICAgaWYgKGRlY29kZXIubWVzc2FnZVJl
Y2VpdmVyTmFtZSgpID09ICJJUEMiICYmIGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSAiV3JhcHBl
ZEFzeW5jTWVzc2FnZUZvclRlc3RpbmciKSB7CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUo
KSA9PSBNZXNzYWdlTmFtZTo6V3JhcHBlZEFzeW5jTWVzc2FnZUZvclRlc3RpbmcpIHsKICAgICAg
ICAgaWYgKCFtX2Z1bGx5U3luY2hyb25vdXNNb2RlSXNBbGxvd2VkRm9yVGVzdGluZykgewogICAg
ICAgICAgICAgZGVjb2Rlci5tYXJrSW52YWxpZCgpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAt
OTM2LDE0ICs5MjQsMTQgQEAgdm9pZCBDb25uZWN0aW9uOjpkaXNwYXRjaFN5bmNNZXNzYWdlKERl
YwogICAgICAgICBzZW5kU3luY1JlcGx5KFdURk1vdmUocmVwbHlFbmNvZGVyKSk7CiB9CiAKLXZv
aWQgQ29ubmVjdGlvbjo6ZGlzcGF0Y2hEaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoY29uc3QgQ1N0
cmluZyYgbWVzc2FnZVJlY2VpdmVyTmFtZVN0cmluZywgY29uc3QgQ1N0cmluZyYgbWVzc2FnZU5h
bWVTdHJpbmcpCit2b2lkIENvbm5lY3Rpb246OmRpc3BhdGNoRGlkUmVjZWl2ZUludmFsaWRNZXNz
YWdlKE1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01h
aW4oKSk7CiAKICAgICBpZiAoIWlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9j
bGllbnQuZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKCp0aGlzLCBTdHJpbmdSZWZlcmVuY2UobWVz
c2FnZVJlY2VpdmVyTmFtZVN0cmluZy5kYXRhKCksIG1lc3NhZ2VSZWNlaXZlck5hbWVTdHJpbmcu
bGVuZ3RoKCkpLCBTdHJpbmdSZWZlcmVuY2UobWVzc2FnZU5hbWVTdHJpbmcuZGF0YSgpLCBtZXNz
YWdlTmFtZVN0cmluZy5sZW5ndGgoKSkpOworICAgIG1fY2xpZW50LmRpZFJlY2VpdmVJbnZhbGlk
TWVzc2FnZSgqdGhpcywgbWVzc2FnZU5hbWUpOwogfQogCiB2b2lkIENvbm5lY3Rpb246OmRpZEZh
aWxUb1NlbmRTeW5jTWVzc2FnZSgpCkBAIC05ODksNyArOTc3LDcgQEAgdm9pZCBDb25uZWN0aW9u
OjplbnF1ZXVlSW5jb21pbmdNZXNzYWdlKAogdm9pZCBDb25uZWN0aW9uOjpkaXNwYXRjaE1lc3Nh
Z2UoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBSRUxFQVNFX0FTU0VSVChpc1ZhbGlkKCkpOwot
ICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSAiQXN5bmNSZXBseSIpIHsK
KyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gUmVjZWl2ZXJOYW1lOjpB
c3luY1JlcGx5KSB7CiAgICAgICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBsaXN0ZW5lcklEOwogICAg
ICAgICBkZWNvZGVyID4+IGxpc3RlbmVySUQ7CiAgICAgICAgIGlmICghbGlzdGVuZXJJRCkgewpA
QCAtMTAxMSw3ICs5OTksNyBAQCB2b2lkIENvbm5lY3Rpb246OmRpc3BhdGNoTWVzc2FnZShEZWNv
ZGVyCiBib29sIENvbm5lY3Rpb246OmRpc3BhdGNoTWVzc2FnZVRvV29ya1F1ZXVlUmVjZWl2ZXIo
c3RkOjp1bmlxdWVfcHRyPERlY29kZXI+JiBtZXNzYWdlKQogewogICAgIGF1dG8gbG9ja2VyID0g
aG9sZExvY2sobV93b3JrUXVldWVNZXNzYWdlUmVjZWl2ZXJzTXV0ZXgpOwotICAgIGF1dG8gaXQg
PSBtX3dvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcnMuZmluZChtZXNzYWdlLT5tZXNzYWdlUmVjZWl2
ZXJOYW1lKCkpOworICAgIGF1dG8gaXQgPSBtX3dvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcnMuZmlu
ZChzdGF0aWNfY2FzdDx1aW50OF90PihtZXNzYWdlLT5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkpKTsK
ICAgICBpZiAoaXQgIT0gbV93b3JrUXVldWVNZXNzYWdlUmVjZWl2ZXJzLmVuZCgpKSB7CiAgICAg
ICAgIGl0LT52YWx1ZS5maXJzdC0+ZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKSwgd29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyID0gaXQtPnZhbHVlLnNlY29uZCwgZGVjb2Rl
ciA9IFdURk1vdmUobWVzc2FnZSldKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBwcm90ZWN0ZWRU
aGlzLT5kaXNwYXRjaFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlck1lc3NhZ2UoKndvcmtRdWV1ZU1l
c3NhZ2VSZWNlaXZlciwgKmRlY29kZXIpOwpAQCAtMTAyNiw3ICsxMDE0LDcgQEAgYm9vbCBDb25u
ZWN0aW9uOjpkaXNwYXRjaE1lc3NhZ2VUb1RocmVhZAogICAgIFJlZlB0cjxUaHJlYWRNZXNzYWdl
UmVjZWl2ZXI+IHByb3RlY3RlZFRocmVhZE1lc3NhZ2VSZWNlaXZlcjsKICAgICB7CiAgICAgICAg
IGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV90aHJlYWRNZXNzYWdlUmVjZWl2ZXJzTG9jayk7Ci0g
ICAgICAgIHByb3RlY3RlZFRocmVhZE1lc3NhZ2VSZWNlaXZlciA9IG1fdGhyZWFkTWVzc2FnZVJl
Y2VpdmVycy5nZXQobWVzc2FnZS0+bWVzc2FnZVJlY2VpdmVyTmFtZSgpKTsKKyAgICAgICAgcHJv
dGVjdGVkVGhyZWFkTWVzc2FnZVJlY2VpdmVyID0gbV90aHJlYWRNZXNzYWdlUmVjZWl2ZXJzLmdl
dChzdGF0aWNfY2FzdDx1aW50OF90PihtZXNzYWdlLT5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkpKTsK
ICAgICB9CiAKICAgICBpZiAocHJvdGVjdGVkVGhyZWFkTWVzc2FnZVJlY2VpdmVyKSB7CkBAIC0x
MDU0LDcgKzEwNDIsNyBAQCB2b2lkIENvbm5lY3Rpb246OmRpc3BhdGNoTWVzc2FnZShzdGQ6OnVu
CiAKICAgICBpZiAobWVzc2FnZS0+c2hvdWxkVXNlRnVsbHlTeW5jaHJvbm91c01vZGVGb3JUZXN0
aW5nKCkpIHsKICAgICAgICAgaWYgKCFtX2Z1bGx5U3luY2hyb25vdXNNb2RlSXNBbGxvd2VkRm9y
VGVzdGluZykgewotICAgICAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdl
KCp0aGlzLCBtZXNzYWdlLT5tZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1lc3NhZ2UtPm1lc3NhZ2VO
YW1lKCkpOworICAgICAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKCp0
aGlzLCBtZXNzYWdlLT5tZXNzYWdlTmFtZSgpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogICAgICAgICBtX2luRGlzcGF0Y2hNZXNzYWdlTWFya2VkVG9Vc2VGdWxseVN5bmNocm9u
b3VzTW9kZUZvclRlc3RpbmcrKzsKQEAgLTEwODgsNyArMTA3Niw3IEBAIHZvaWQgQ29ubmVjdGlv
bjo6ZGlzcGF0Y2hNZXNzYWdlKHN0ZDo6dW4KICAgICAgICAgbV9pbkRpc3BhdGNoTWVzc2FnZU1h
cmtlZFRvVXNlRnVsbHlTeW5jaHJvbm91c01vZGVGb3JUZXN0aW5nLS07CiAKICAgICBpZiAobV9k
aWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UgJiYgaXNWYWxpZCgpKQotICAgICAgICBtX2NsaWVudC5k
aWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoKnRoaXMsIG1lc3NhZ2UtPm1lc3NhZ2VSZWNlaXZlck5h
bWUoKSwgbWVzc2FnZS0+bWVzc2FnZU5hbWUoKSk7CisgICAgICAgIG1fY2xpZW50LmRpZFJlY2Vp
dmVJbnZhbGlkTWVzc2FnZSgqdGhpcywgbWVzc2FnZS0+bWVzc2FnZU5hbWUoKSk7CiAKICAgICBt
X2RpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZSA9IG9sZERpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZTsK
IH0KQEAgLTExNjgsNyArMTE1Niw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6ZGlzcGF0Y2hJbmNvbWlu
Z01lc3NhZ2UKICAgICAgICAgaWYgKG1lc3NhZ2VzVG9Qcm9jZXNzIDwgbV9pbmNvbWluZ01lc3Nh
Z2VzLnNpemUoKSkgewogICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoSVBDLCAiJXAgLSBD
b25uZWN0aW9uOjpkaXNwYXRjaEluY29taW5nTWVzc2FnZXM6IElQQyB0aHJvdHRsaW5nIHdhcyB0
cmlnZ2VyZWQgKGhhcyAlenUgcGVuZGluZyBpbmNvbWluZyBtZXNzYWdlcywgd2lsbCBvbmx5IHBy
b2Nlc3MgJXp1IGJlZm9yZSB5aWVsZGluZykiLCB0aGlzLCBtX2luY29taW5nTWVzc2FnZXMuc2l6
ZSgpLCBtZXNzYWdlc1RvUHJvY2Vzcyk7CiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgICAgICAg
ICBSRUxFQVNFX0xPR19FUlJPUihJUEMsICIlcCAtIENvbm5lY3Rpb246OmRpc3BhdGNoSW5jb21p
bmdNZXNzYWdlczogZmlyc3QgSVBDIG1lc3NhZ2UgaW4gcXVldWUgaXMgJXtwdWJsaWN9czo6JXtw
dWJsaWN9cyIsIHRoaXMsIG1lc3NhZ2UtPm1lc3NhZ2VSZWNlaXZlck5hbWUoKS50b1N0cmluZygp
LmRhdGEoKSwgbWVzc2FnZS0+bWVzc2FnZU5hbWUoKS50b1N0cmluZygpLmRhdGEoKSk7CisgICAg
ICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihJUEMsICIlcCAtIENvbm5lY3Rpb246OmRpc3BhdGNo
SW5jb21pbmdNZXNzYWdlczogZmlyc3QgSVBDIG1lc3NhZ2UgaW4gcXVldWUgaXMgJXtwdWJsaWN9
cyIsIHRoaXMsIGRlc2NyaXB0aW9uKG1lc3NhZ2UtPm1lc3NhZ2VOYW1lKCkpKTsKICNlbmRpZgog
ICAgICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmgJ
KHJldmlzaW9uIDI2MTAzMykKKysrIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rp
b24uaAkod29ya2luZyBjb3B5KQpAQCAtMTA3LDcgKzEwNyw3IEBAIHB1YmxpYzoKICAgICBjbGFz
cyBDbGllbnQgOiBwdWJsaWMgTWVzc2FnZVJlY2VpdmVyIHsKICAgICBwdWJsaWM6CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBkaWRDbG9zZShDb25uZWN0aW9uJikgPSAwOwotICAgICAgICB2aXJ0dWFs
IHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKENvbm5lY3Rpb24mLCBTdHJpbmdSZWZlcmVu
Y2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lKSA9IDA7
CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoQ29ubmVjdGlv
biYsIE1lc3NhZ2VOYW1lKSA9IDA7CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZpcnR1YWwg
fkNsaWVudCgpIHsgfQpAQCAtMTg5LDExICsxODksMTEgQEAgcHVibGljOgogICAgIHR5cGVkZWYg
dm9pZCAoKkRpZENsb3NlT25Db25uZWN0aW9uV29ya1F1ZXVlQ2FsbGJhY2spKENvbm5lY3Rpb24q
KTsKICAgICB2b2lkIHNldERpZENsb3NlT25Db25uZWN0aW9uV29ya1F1ZXVlQ2FsbGJhY2soRGlk
Q2xvc2VPbkNvbm5lY3Rpb25Xb3JrUXVldWVDYWxsYmFjayk7CiAKLSAgICB2b2lkIGFkZFdvcmtR
dWV1ZU1lc3NhZ2VSZWNlaXZlcihTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwg
V29ya1F1ZXVlJiwgV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKik7Ci0gICAgdm9pZCByZW1vdmVX
b3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIoU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5h
bWUpOworICAgIHZvaWQgYWRkV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKFJlY2VpdmVyTmFtZSwg
V29ya1F1ZXVlJiwgV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKik7CisgICAgdm9pZCByZW1vdmVX
b3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIoUmVjZWl2ZXJOYW1lKTsKIAotICAgIHZvaWQgYWRkVGhy
ZWFkTWVzc2FnZVJlY2VpdmVyKFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBU
aHJlYWRNZXNzYWdlUmVjZWl2ZXIqKTsKLSAgICB2b2lkIHJlbW92ZVRocmVhZE1lc3NhZ2VSZWNl
aXZlcihTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSk7CisgICAgdm9pZCBhZGRU
aHJlYWRNZXNzYWdlUmVjZWl2ZXIoUmVjZWl2ZXJOYW1lLCBUaHJlYWRNZXNzYWdlUmVjZWl2ZXIq
KTsKKyAgICB2b2lkIHJlbW92ZVRocmVhZE1lc3NhZ2VSZWNlaXZlcihSZWNlaXZlck5hbWUpOwog
CiAgICAgYm9vbCBvcGVuKCk7CiAgICAgdm9pZCBpbnZhbGlkYXRlKCk7CkBAIC0yMzUsNyArMjM1
LDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIGJvb2wgc2VuZE1lc3NhZ2Uoc3RkOjp1bmlxdWVf
cHRyPEVuY29kZXI+LCBPcHRpb25TZXQ8U2VuZE9wdGlvbj4gc2VuZE9wdGlvbnMpOwotICAgIHN0
ZDo6dW5pcXVlX3B0cjxFbmNvZGVyPiBjcmVhdGVTeW5jTWVzc2FnZUVuY29kZXIoU3RyaW5nUmVm
ZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZSwg
dWludDY0X3QgZGVzdGluYXRpb25JRCwgdWludDY0X3QmIHN5bmNSZXF1ZXN0SUQpOworICAgIHN0
ZDo6dW5pcXVlX3B0cjxFbmNvZGVyPiBjcmVhdGVTeW5jTWVzc2FnZUVuY29kZXIoTWVzc2FnZU5h
bWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIHVpbnQ2NF90JiBzeW5jUmVxdWVzdElEKTsKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gc2VuZFN5bmNNZXNzYWdlKHVpbnQ2NF90IHN5bmNS
ZXF1ZXN0SUQsIHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVyPiwgU2Vjb25kcyB0aW1lb3V0LCBPcHRp
b25TZXQ8U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucyk7CiAgICAgYm9vbCBzZW5kU3lu
Y1JlcGx5KHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVyPik7CiAKQEAgLTI3NCw5ICsyNzQsOSBAQCBw
cml2YXRlOgogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplKElkZW50aWZpZXIpOwogICAgIHZv
aWQgcGxhdGZvcm1JbnZhbGlkYXRlKCk7CiAgICAgCi0gICAgc3RkOjp1bmlxdWVfcHRyPERlY29k
ZXI+IHdhaXRGb3JNZXNzYWdlKFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBT
dHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIFNlY29u
ZHMgdGltZW91dCwgT3B0aW9uU2V0PFdhaXRGb3JPcHRpb24+KTsKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8RGVjb2Rlcj4gd2FpdEZvck1lc3NhZ2UoTWVzc2FnZU5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0
aW9uSUQsIFNlY29uZHMgdGltZW91dCwgT3B0aW9uU2V0PFdhaXRGb3JPcHRpb24+KTsKICAgICAK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gd2FpdEZvclN5bmNSZXBseSh1aW50NjRfdCBz
eW5jUmVxdWVzdElELCBTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgU3RyaW5n
UmVmZXJlbmNlIG1lc3NhZ2VOYW1lLCBTZWNvbmRzIHRpbWVvdXQsIE9wdGlvblNldDxTZW5kU3lu
Y09wdGlvbj4pOworICAgIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiB3YWl0Rm9yU3luY1JlcGx5
KHVpbnQ2NF90IHN5bmNSZXF1ZXN0SUQsIE1lc3NhZ2VOYW1lLCBTZWNvbmRzIHRpbWVvdXQsIE9w
dGlvblNldDxTZW5kU3luY09wdGlvbj4pOwogCiAgICAgYm9vbCBkaXNwYXRjaE1lc3NhZ2VUb1dv
cmtRdWV1ZVJlY2VpdmVyKHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiYpOwogICAgIGJvb2wgZGlz
cGF0Y2hNZXNzYWdlVG9UaHJlYWRSZWNlaXZlcihzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4mKTsK
QEAgLTMwMCw3ICszMDAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlzcGF0Y2hNZXNzYWdlKHN0
ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPik7CiAgICAgdm9pZCBkaXNwYXRjaE1lc3NhZ2UoRGVjb2Rl
ciYpOwogICAgIHZvaWQgZGlzcGF0Y2hTeW5jTWVzc2FnZShEZWNvZGVyJik7Ci0gICAgdm9pZCBk
aXNwYXRjaERpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShjb25zdCBDU3RyaW5nJiBtZXNzYWdlUmVj
ZWl2ZXJOYW1lU3RyaW5nLCBjb25zdCBDU3RyaW5nJiBtZXNzYWdlTmFtZVN0cmluZyk7CisgICAg
dm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShNZXNzYWdlTmFtZSk7CiAgICAg
dm9pZCBkaWRGYWlsVG9TZW5kU3luY01lc3NhZ2UoKTsKIAogICAgIC8vIENhbiBiZSBjYWxsZWQg
b24gYW55IHRocmVhZC4KQEAgLTM0NiwxMSArMzQ2LDExIEBAIHByaXZhdGU6CiAgICAgUmVmPFdv
cmtRdWV1ZT4gbV9jb25uZWN0aW9uUXVldWU7CiAKICAgICBMb2NrIG1fd29ya1F1ZXVlTWVzc2Fn
ZVJlY2VpdmVyc011dGV4OwotICAgIHVzaW5nIFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlck1hcCA9
IEhhc2hNYXA8U3RyaW5nUmVmZXJlbmNlLCBzdGQ6OnBhaXI8UmVmUHRyPFdvcmtRdWV1ZT4sIFJl
ZlB0cjxXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXI+Pj47CisgICAgdXNpbmcgV29ya1F1ZXVlTWVz
c2FnZVJlY2VpdmVyTWFwID0gSGFzaE1hcDx1aW50OF90LCBzdGQ6OnBhaXI8UmVmUHRyPFdvcmtR
dWV1ZT4sIFJlZlB0cjxXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXI+Pj47CiAgICAgV29ya1F1ZXVl
TWVzc2FnZVJlY2VpdmVyTWFwIG1fd29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyczsKIAogICAgIExv
Y2sgbV90aHJlYWRNZXNzYWdlUmVjZWl2ZXJzTG9jazsKLSAgICB1c2luZyBUaHJlYWRNZXNzYWdl
UmVjZWl2ZXJNYXAgPSBIYXNoTWFwPFN0cmluZ1JlZmVyZW5jZSwgUmVmUHRyPFRocmVhZE1lc3Nh
Z2VSZWNlaXZlcj4+OworICAgIHVzaW5nIFRocmVhZE1lc3NhZ2VSZWNlaXZlck1hcCA9IEhhc2hN
YXA8dWludDhfdCwgUmVmUHRyPFRocmVhZE1lc3NhZ2VSZWNlaXZlcj4+OwogICAgIFRocmVhZE1l
c3NhZ2VSZWNlaXZlck1hcCBtX3RocmVhZE1lc3NhZ2VSZWNlaXZlcnM7CiAKICAgICB1bnNpZ25l
ZCBtX2luU2VuZFN5bmNDb3VudDsKQEAgLTQ2Miw3ICs0NjIsNyBAQCBib29sIENvbm5lY3Rpb246
OnNlbmQoVCYmIG1lc3NhZ2UsIHVpbnQ2CiB7CiAgICAgQ09NUElMRV9BU1NFUlQoIVQ6OmlzU3lu
YywgQXN5bmNNZXNzYWdlRXhwZWN0ZWQpOwogCi0gICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1
ZTxFbmNvZGVyPihUOjpyZWNlaXZlck5hbWUoKSwgVDo6bmFtZSgpLCBkZXN0aW5hdGlvbklEKTsK
KyAgICBhdXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlPEVuY29kZXI+KFQ6Om5hbWUoKSwgZGVzdGlu
YXRpb25JRCk7CiAgICAgZW5jb2Rlci0+ZW5jb2RlKG1lc3NhZ2UuYXJndW1lbnRzKCkpOwogICAg
IAogICAgIHJldHVybiBzZW5kTWVzc2FnZShXVEZNb3ZlKGVuY29kZXIpLCBzZW5kT3B0aW9ucyk7
CkBAIC00NzcsNyArNDc3LDcgQEAgdm9pZCBDb25uZWN0aW9uOjpzZW5kV2l0aEFzeW5jUmVwbHko
VCYmIAogewogICAgIENPTVBJTEVfQVNTRVJUKCFUOjppc1N5bmMsIEFzeW5jTWVzc2FnZUV4cGVj
dGVkKTsKIAotICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWU8RW5jb2Rlcj4oVDo6cmVjZWl2
ZXJOYW1lKCksIFQ6Om5hbWUoKSwgZGVzdGluYXRpb25JRCk7CisgICAgYXV0byBlbmNvZGVyID0g
bWFrZVVuaXF1ZTxFbmNvZGVyPihUOjpuYW1lKCksIGRlc3RpbmF0aW9uSUQpOwogICAgIHVpbnQ2
NF90IGxpc3RlbmVySUQgPSBuZXh0QXN5bmNSZXBseUhhbmRsZXJJRCgpOwogICAgIGVuY29kZXIt
PmVuY29kZShsaXN0ZW5lcklEKTsKICAgICBlbmNvZGVyLT5lbmNvZGUobWVzc2FnZS5hcmd1bWVu
dHMoKSk7CkBAIC01MTUsNyArNTE1LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9vbCBDb25u
ZWN0aW9uOjpzZQogICAgIFJFTEVBU0VfQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAg
IHVpbnQ2NF90IHN5bmNSZXF1ZXN0SUQgPSAwOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVy
PiBlbmNvZGVyID0gY3JlYXRlU3luY01lc3NhZ2VFbmNvZGVyKFQ6OnJlY2VpdmVyTmFtZSgpLCBU
OjpuYW1lKCksIGRlc3RpbmF0aW9uSUQsIHN5bmNSZXF1ZXN0SUQpOworICAgIHN0ZDo6dW5pcXVl
X3B0cjxFbmNvZGVyPiBlbmNvZGVyID0gY3JlYXRlU3luY01lc3NhZ2VFbmNvZGVyKFQ6Om5hbWUo
KSwgZGVzdGluYXRpb25JRCwgc3luY1JlcXVlc3RJRCk7CiAKICAgICBpZiAoc2VuZFN5bmNPcHRp
b25zLmNvbnRhaW5zKFNlbmRTeW5jT3B0aW9uOjpVc2VGdWxseVN5bmNocm9ub3VzTW9kZUZvclRl
c3RpbmcpKSB7CiAgICAgICAgIGVuY29kZXItPnNldEZ1bGx5U3luY2hyb25vdXNNb2RlRm9yVGVz
dGluZygpOwpAQCAtNTQyLDcgKzU0Miw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgQ29u
bmVjdGlvbjo6c2UKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgQ29ubmVjdGlvbjo6d2FpdEZv
ckFuZERpc3BhdGNoSW1tZWRpYXRlbHkodWludDY0X3QgZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0
aW1lb3V0LCBPcHRpb25TZXQ8V2FpdEZvck9wdGlvbj4gd2FpdEZvck9wdGlvbnMpCiB7CiAgICAg
UkVMRUFTRV9BU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxE
ZWNvZGVyPiBkZWNvZGVyID0gd2FpdEZvck1lc3NhZ2UoVDo6cmVjZWl2ZXJOYW1lKCksIFQ6Om5h
bWUoKSwgZGVzdGluYXRpb25JRCwgdGltZW91dCwgd2FpdEZvck9wdGlvbnMpOworICAgIHN0ZDo6
dW5pcXVlX3B0cjxEZWNvZGVyPiBkZWNvZGVyID0gd2FpdEZvck1lc3NhZ2UoVDo6bmFtZSgpLCBk
ZXN0aW5hdGlvbklELCB0aW1lb3V0LCB3YWl0Rm9yT3B0aW9ucyk7CiAgICAgaWYgKCFkZWNvZGVy
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL0RlY29kZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L0RlY29kZXIuY3BwCShyZXZpc2lvbiAyNjEwMzMpCisrKyBTb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9EZWNvZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjYsOSArNjYsNiBAQCBEZWNvZGVy
OjpEZWNvZGVyKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgCiAgICAgaWYgKCFkZWNvZGUobV9tZXNz
YWdlRmxhZ3MpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIWRlY29kZShtX21lc3NhZ2VS
ZWNlaXZlck5hbWUpKQotICAgICAgICByZXR1cm47Ci0KICAgICBpZiAoIWRlY29kZShtX21lc3Nh
Z2VOYW1lKSkKICAgICAgICAgcmV0dXJuOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9EZWNvZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
RGVjb2Rlci5oCShyZXZpc2lvbiAyNjEwMzMpCisrKyBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9EZWNvZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUg
IkFyZ3VtZW50Q29kZXIuaCIKICNpbmNsdWRlICJBdHRhY2htZW50LmgiCisjaW5jbHVkZSAiTWVz
c2FnZU5hbWVzLmgiCiAjaW5jbHVkZSAiU3RyaW5nUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSA8d3Rm
L0VudW1UcmFpdHMuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC01MSw4ICs1Miw4IEBA
IHB1YmxpYzoKICAgICBEZWNvZGVyKGNvbnN0IERlY29kZXImKSA9IGRlbGV0ZTsKICAgICBEZWNv
ZGVyKERlY29kZXImJikgPSBkZWxldGU7CiAKLSAgICBTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJl
Y2VpdmVyTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWVzc2FnZVJlY2VpdmVyTmFtZTsgfQotICAg
IFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWVzc2FnZU5h
bWU7IH0KKyAgICBSZWNlaXZlck5hbWUgbWVzc2FnZVJlY2VpdmVyTmFtZSgpIGNvbnN0IHsgcmV0
dXJuIHJlY2VpdmVyTmFtZShtX21lc3NhZ2VOYW1lKTsgfQorICAgIE1lc3NhZ2VOYW1lIG1lc3Nh
Z2VOYW1lKCkgY29uc3QgeyByZXR1cm4gbV9tZXNzYWdlTmFtZTsgfQogICAgIHVpbnQ2NF90IGRl
c3RpbmF0aW9uSUQoKSBjb25zdCB7IHJldHVybiBtX2Rlc3RpbmF0aW9uSUQ7IH0KIAogICAgIGJv
b2wgaXNTeW5jTWVzc2FnZSgpIGNvbnN0OwpAQCAtMTA2LDcgKzEwNyw3IEBAIHB1YmxpYzoKICAg
ICAgICAgdHlwZW5hbWUgc3RkOjp1bmRlcmx5aW5nX3R5cGU8RT46OnR5cGUgdmFsdWU7CiAgICAg
ICAgIGlmICghZGVjb2RlKHZhbHVlKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgaWYgKCFpc1ZhbGlkRW51bTxFPih2YWx1ZSkpCisgICAgICAgIGlmICghV1RGOjppc1ZhbGlk
RW51bTxFPih2YWx1ZSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgZSA9
IHN0YXRpY19jYXN0PEU+KHZhbHVlKTsKQEAgLTExOCw3ICsxMTksNyBAQCBwdWJsaWM6CiAgICAg
ewogICAgICAgICBPcHRpb25hbDx0eXBlbmFtZSBzdGQ6OnVuZGVybHlpbmdfdHlwZTxFPjo6dHlw
ZT4gdmFsdWU7CiAgICAgICAgICp0aGlzID4+IHZhbHVlOwotICAgICAgICBpZiAodmFsdWUgJiYg
aXNWYWxpZEVudW08RT4oKnZhbHVlKSkKKyAgICAgICAgaWYgKHZhbHVlICYmIFdURjo6aXNWYWxp
ZEVudW08RT4oKnZhbHVlKSkKICAgICAgICAgICAgIG9wdGlvbmFsID0gc3RhdGljX2Nhc3Q8RT4o
KnZhbHVlKTsKICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0KQEAgLTE5OCw4ICsxOTksNyBA
QCBwcml2YXRlOgogICAgIFZlY3RvcjxBdHRhY2htZW50PiBtX2F0dGFjaG1lbnRzOwogCiAgICAg
dWludDhfdCBtX21lc3NhZ2VGbGFnczsKLSAgICBTdHJpbmdSZWZlcmVuY2UgbV9tZXNzYWdlUmVj
ZWl2ZXJOYW1lOwotICAgIFN0cmluZ1JlZmVyZW5jZSBtX21lc3NhZ2VOYW1lOworICAgIE1lc3Nh
Z2VOYW1lIG1fbWVzc2FnZU5hbWU7CiAKICAgICB1aW50NjRfdCBtX2Rlc3RpbmF0aW9uSUQ7CiAK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0VuY29kZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0VuY29kZXIuY3BwCShyZXZpc2lvbiAyNjEw
MzMpCisrKyBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9FbmNvZGVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNjEsOSArNjEsOCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZnJlZUJ1ZmZlcih2b2lk
KiBhZGRyCiAjZW5kaWYKIH0KIAotRW5jb2Rlcjo6RW5jb2RlcihTdHJpbmdSZWZlcmVuY2UgbWVz
c2FnZVJlY2VpdmVyTmFtZSwgU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lLCB1aW50NjRfdCBk
ZXN0aW5hdGlvbklEKQotICAgIDogbV9tZXNzYWdlUmVjZWl2ZXJOYW1lKG1lc3NhZ2VSZWNlaXZl
ck5hbWUpCi0gICAgLCBtX21lc3NhZ2VOYW1lKG1lc3NhZ2VOYW1lKQorRW5jb2Rlcjo6RW5jb2Rl
cihNZXNzYWdlTmFtZSBtZXNzYWdlTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCkKKyAgICA6
IG1fbWVzc2FnZU5hbWUobWVzc2FnZU5hbWUpCiAgICAgLCBtX2Rlc3RpbmF0aW9uSUQoZGVzdGlu
YXRpb25JRCkKICAgICAsIG1fYnVmZmVyKG1faW5saW5lQnVmZmVyKQogICAgICwgbV9idWZmZXJQ
b2ludGVyKG1faW5saW5lQnVmZmVyKQpAQCAtMTY4LDEwICsxNjcsNyBAQCB2b2lkIEVuY29kZXI6
OnJlc2VydmUoc2l6ZV90IHNpemUpCiAKIHZvaWQgRW5jb2Rlcjo6ZW5jb2RlSGVhZGVyKCkKIHsK
LSAgICBBU1NFUlQoIW1fbWVzc2FnZVJlY2VpdmVyTmFtZS5pc0VtcHR5KCkpOwotCiAgICAgKnRo
aXMgPDwgZGVmYXVsdE1lc3NhZ2VGbGFnczsKLSAgICAqdGhpcyA8PCBtX21lc3NhZ2VSZWNlaXZl
ck5hbWU7CiAgICAgKnRoaXMgPDwgbV9tZXNzYWdlTmFtZTsKICAgICAqdGhpcyA8PCBtX2Rlc3Rp
bmF0aW9uSUQ7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9FbmNvZGVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRW5jb2Rlci5oCShyZXZp
c2lvbiAyNjEwMzMpCisrKyBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9FbmNvZGVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXIu
aCIKICNpbmNsdWRlICJBdHRhY2htZW50LmgiCisjaW5jbHVkZSAiTWVzc2FnZU5hbWVzLmgiCiAj
aW5jbHVkZSAiU3RyaW5nUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSA8d3RmL0VudW1UcmFpdHMuaD4K
ICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC0zNSwxNSArMzYsMTYgQEAgbmFtZXNwYWNlIElQ
QyB7CiAKIGNsYXNzIERhdGFSZWZlcmVuY2U7CiBlbnVtIGNsYXNzIFNob3VsZERpc3BhdGNoV2hl
bldhaXRpbmdGb3JTeW5jUmVwbHk7CitlbnVtIGNsYXNzIE1lc3NhZ2VOYW1lIDogdWludDE2X3Q7
CiAKIGNsYXNzIEVuY29kZXIgZmluYWwgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgotICAgIEVuY29kZXIoU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUs
IFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCk7Cisg
ICAgRW5jb2RlcihNZXNzYWdlTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCk7CiAgICAgfkVu
Y29kZXIoKTsKIAotICAgIFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lKCkgY29u
c3QgeyByZXR1cm4gbV9tZXNzYWdlUmVjZWl2ZXJOYW1lOyB9Ci0gICAgU3RyaW5nUmVmZXJlbmNl
IG1lc3NhZ2VOYW1lKCkgY29uc3QgeyByZXR1cm4gbV9tZXNzYWdlTmFtZTsgfQorICAgIFJlY2Vp
dmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gcmVjZWl2ZXJOYW1l
KG1fbWVzc2FnZU5hbWUpOyB9CisgICAgTWVzc2FnZU5hbWUgbWVzc2FnZU5hbWUoKSBjb25zdCB7
IHJldHVybiBtX21lc3NhZ2VOYW1lOyB9CiAgICAgdWludDY0X3QgZGVzdGluYXRpb25JRCgpIGNv
bnN0IHsgcmV0dXJuIG1fZGVzdGluYXRpb25JRDsgfQogCiAgICAgdm9pZCBzZXRJc1N5bmNNZXNz
YWdlKGJvb2wpOwpAQCAtMTEyLDE0ICsxMTQsMTMgQEAgcHJpdmF0ZToKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBFPgogICAgIGF1dG8gZW5jb2RlKEUgdmFsdWUpIC0+IHN0ZDo6ZW5hYmxlX2lmX3Q8
c3RkOjppc19lbnVtPEU+Ojp2YWx1ZT4KICAgICB7Ci0gICAgICAgIEFTU0VSVChpc1ZhbGlkRW51
bTxFPihzdGF0aWNfY2FzdDx0eXBlbmFtZSBzdGQ6OnVuZGVybHlpbmdfdHlwZTxFPjo6dHlwZT4o
dmFsdWUpKSk7CisgICAgICAgIEFTU0VSVChXVEY6OmlzVmFsaWRFbnVtPEU+KHN0YXRpY19jYXN0
PHR5cGVuYW1lIHN0ZDo6dW5kZXJseWluZ190eXBlPEU+Ojp0eXBlPih2YWx1ZSkpKTsKICAgICAg
ICAgZW5jb2RlKHN0YXRpY19jYXN0PHR5cGVuYW1lIHN0ZDo6dW5kZXJseWluZ190eXBlPEU+Ojp0
eXBlPih2YWx1ZSkpOwogICAgIH0KIAogICAgIHZvaWQgZW5jb2RlSGVhZGVyKCk7CiAKLSAgICBT
dHJpbmdSZWZlcmVuY2UgbV9tZXNzYWdlUmVjZWl2ZXJOYW1lOwotICAgIFN0cmluZ1JlZmVyZW5j
ZSBtX21lc3NhZ2VOYW1lOworICAgIE1lc3NhZ2VOYW1lIG1fbWVzc2FnZU5hbWU7CiAgICAgdWlu
dDY0X3QgbV9kZXN0aW5hdGlvbklEOwogCiAgICAgdWludDhfdCBtX2lubGluZUJ1ZmZlcls1MTJd
OwpJbmRleDogU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaAkocmV2
aXNpb24gMjYxMDMzKQorKysgU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2Fn
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzYsNyArMTc2LDcgQEAgdm9pZCBoYW5kbGVNZXNzYWdl
QXN5bmMoQ29ubmVjdGlvbiYgY29ubgogICAgIH0KIAogICAgIHR5cGVuYW1lIFQ6OkFzeW5jUmVw
bHkgY29tcGxldGlvbkhhbmRsZXIgPSBbbGlzdGVuZXJJRCA9ICpsaXN0ZW5lcklELCBjb25uZWN0
aW9uID0gbWFrZVJlZihjb25uZWN0aW9uKV0gKGF1dG8mJi4uLiBhcmdzKSBtdXRhYmxlIHsKLSAg
ICAgICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNvZGVyPigiQXN5bmNSZXBseSIsIFQ6
OmFzeW5jTWVzc2FnZVJlcGx5TmFtZSgpLCAwKTsKKyAgICAgICAgYXV0byBlbmNvZGVyID0gbWFr
ZVVuaXF1ZTxFbmNvZGVyPihUOjphc3luY01lc3NhZ2VSZXBseU5hbWUoKSwgMCk7CiAgICAgICAg
ICplbmNvZGVyIDw8IGxpc3RlbmVySUQ7CiAgICAgICAgIFQ6OnNlbmQoV1RGTW92ZShlbmNvZGVy
KSwgV1RGTW92ZShjb25uZWN0aW9uKSwgYXJncy4uLik7CiAgICAgfTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VSZWNlaXZlck1hcC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVyTWFwLmNwcAkocmV2aXNp
b24gMjYxMDMzKQorKysgU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVy
TWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksMzkgKzM5LDM5IEBAIE1lc3NhZ2VSZWNlaXZl
ck1hcDo6fk1lc3NhZ2VSZWNlaXZlck1hcCgKIHsKIH0KIAotdm9pZCBNZXNzYWdlUmVjZWl2ZXJN
YXA6OmFkZE1lc3NhZ2VSZWNlaXZlcihTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFt
ZSwgTWVzc2FnZVJlY2VpdmVyJiBtZXNzYWdlUmVjZWl2ZXIpCit2b2lkIE1lc3NhZ2VSZWNlaXZl
ck1hcDo6YWRkTWVzc2FnZVJlY2VpdmVyKFJlY2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1l
LCBNZXNzYWdlUmVjZWl2ZXImIG1lc3NhZ2VSZWNlaXZlcikKIHsKLSAgICBBU1NFUlQoIW1fZ2xv
YmFsTWVzc2FnZVJlY2VpdmVycy5jb250YWlucyhtZXNzYWdlUmVjZWl2ZXJOYW1lKSk7CisgICAg
QVNTRVJUKCFtX2dsb2JhbE1lc3NhZ2VSZWNlaXZlcnMuY29udGFpbnMoc3RhdGljX2Nhc3Q8dWlu
dDhfdD4obWVzc2FnZVJlY2VpdmVyTmFtZSkpKTsKIAogICAgIG1lc3NhZ2VSZWNlaXZlci53aWxs
QmVBZGRlZFRvTWVzc2FnZVJlY2VpdmVyTWFwKCk7Ci0gICAgbV9nbG9iYWxNZXNzYWdlUmVjZWl2
ZXJzLnNldChtZXNzYWdlUmVjZWl2ZXJOYW1lLCAmbWVzc2FnZVJlY2VpdmVyKTsKKyAgICBtX2ds
b2JhbE1lc3NhZ2VSZWNlaXZlcnMuc2V0KHN0YXRpY19jYXN0PHVpbnQ4X3Q+KG1lc3NhZ2VSZWNl
aXZlck5hbWUpLCAmbWVzc2FnZVJlY2VpdmVyKTsKIH0KIAotdm9pZCBNZXNzYWdlUmVjZWl2ZXJN
YXA6OmFkZE1lc3NhZ2VSZWNlaXZlcihTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFt
ZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgTWVzc2FnZVJlY2VpdmVyJiBtZXNzYWdlUmVjZWl2
ZXIpCit2b2lkIE1lc3NhZ2VSZWNlaXZlck1hcDo6YWRkTWVzc2FnZVJlY2VpdmVyKFJlY2VpdmVy
TmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBNZXNzYWdl
UmVjZWl2ZXImIG1lc3NhZ2VSZWNlaXZlcikKIHsKICAgICBBU1NFUlQoZGVzdGluYXRpb25JRCk7
Ci0gICAgQVNTRVJUKCFtX21lc3NhZ2VSZWNlaXZlcnMuY29udGFpbnMoc3RkOjptYWtlX3BhaXIo
bWVzc2FnZVJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRCkpKTsKLSAgICBBU1NFUlQoIW1fZ2xv
YmFsTWVzc2FnZVJlY2VpdmVycy5jb250YWlucyhtZXNzYWdlUmVjZWl2ZXJOYW1lKSk7CisgICAg
QVNTRVJUKCFtX21lc3NhZ2VSZWNlaXZlcnMuY29udGFpbnMoc3RkOjptYWtlX3BhaXIoc3RhdGlj
X2Nhc3Q8dWludDhfdD4obWVzc2FnZVJlY2VpdmVyTmFtZSksIGRlc3RpbmF0aW9uSUQpKSk7Cisg
ICAgQVNTRVJUKCFtX2dsb2JhbE1lc3NhZ2VSZWNlaXZlcnMuY29udGFpbnMoc3RhdGljX2Nhc3Q8
dWludDhfdD4obWVzc2FnZVJlY2VpdmVyTmFtZSkpKTsKIAogICAgIG1lc3NhZ2VSZWNlaXZlci53
aWxsQmVBZGRlZFRvTWVzc2FnZVJlY2VpdmVyTWFwKCk7Ci0gICAgbV9tZXNzYWdlUmVjZWl2ZXJz
LnNldChzdGQ6Om1ha2VfcGFpcihtZXNzYWdlUmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklEKSwg
Jm1lc3NhZ2VSZWNlaXZlcik7CisgICAgbV9tZXNzYWdlUmVjZWl2ZXJzLnNldChzdGQ6Om1ha2Vf
cGFpcihzdGF0aWNfY2FzdDx1aW50OF90PihtZXNzYWdlUmVjZWl2ZXJOYW1lKSwgZGVzdGluYXRp
b25JRCksICZtZXNzYWdlUmVjZWl2ZXIpOwogfQogCi12b2lkIE1lc3NhZ2VSZWNlaXZlck1hcDo6
cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1l
KQordm9pZCBNZXNzYWdlUmVjZWl2ZXJNYXA6OnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihSZWNlaXZl
ck5hbWUgbWVzc2FnZVJlY2VpdmVyTmFtZSkKIHsKLSAgICBBU1NFUlQobV9nbG9iYWxNZXNzYWdl
UmVjZWl2ZXJzLmNvbnRhaW5zKG1lc3NhZ2VSZWNlaXZlck5hbWUpKTsKKyAgICBBU1NFUlQobV9n
bG9iYWxNZXNzYWdlUmVjZWl2ZXJzLmNvbnRhaW5zKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KG1lc3Nh
Z2VSZWNlaXZlck5hbWUpKSk7CiAKLSAgICBhdXRvIGl0ID0gbV9nbG9iYWxNZXNzYWdlUmVjZWl2
ZXJzLmZpbmQobWVzc2FnZVJlY2VpdmVyTmFtZSk7CisgICAgYXV0byBpdCA9IG1fZ2xvYmFsTWVz
c2FnZVJlY2VpdmVycy5maW5kKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KG1lc3NhZ2VSZWNlaXZlck5h
bWUpKTsKICAgICBpdC0+dmFsdWUtPndpbGxCZVJlbW92ZWRGcm9tTWVzc2FnZVJlY2VpdmVyTWFw
KCk7CiAKICAgICBtX2dsb2JhbE1lc3NhZ2VSZWNlaXZlcnMucmVtb3ZlKGl0KTsKIH0KIAotdm9p
ZCBNZXNzYWdlUmVjZWl2ZXJNYXA6OnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihTdHJpbmdSZWZlcmVu
Y2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCkKK3ZvaWQgTWVz
c2FnZVJlY2VpdmVyTWFwOjpyZW1vdmVNZXNzYWdlUmVjZWl2ZXIoUmVjZWl2ZXJOYW1lIG1lc3Nh
Z2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpCiB7Ci0gICAgQVNTRVJUKG1f
bWVzc2FnZVJlY2VpdmVycy5jb250YWlucyhzdGQ6Om1ha2VfcGFpcihtZXNzYWdlUmVjZWl2ZXJO
YW1lLCBkZXN0aW5hdGlvbklEKSkpOworICAgIEFTU0VSVChtX21lc3NhZ2VSZWNlaXZlcnMuY29u
dGFpbnMoc3RkOjptYWtlX3BhaXIoc3RhdGljX2Nhc3Q8dWludDhfdD4obWVzc2FnZVJlY2VpdmVy
TmFtZSksIGRlc3RpbmF0aW9uSUQpKSk7CiAKLSAgICBhdXRvIGl0ID0gbV9tZXNzYWdlUmVjZWl2
ZXJzLmZpbmQoc3RkOjptYWtlX3BhaXIobWVzc2FnZVJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25J
RCkpOworICAgIGF1dG8gaXQgPSBtX21lc3NhZ2VSZWNlaXZlcnMuZmluZChzdGQ6Om1ha2VfcGFp
cihzdGF0aWNfY2FzdDx1aW50OF90PihtZXNzYWdlUmVjZWl2ZXJOYW1lKSwgZGVzdGluYXRpb25J
RCkpOwogICAgIGl0LT52YWx1ZS0+d2lsbEJlUmVtb3ZlZEZyb21NZXNzYWdlUmVjZWl2ZXJNYXAo
KTsKIAogICAgIG1fbWVzc2FnZVJlY2VpdmVycy5yZW1vdmUoaXQpOwpAQCAtNzksMjMgKzc5LDIz
IEBAIHZvaWQgTWVzc2FnZVJlY2VpdmVyTWFwOjpyZW1vdmVNZXNzYWdlUmUKIAogdm9pZCBNZXNz
YWdlUmVjZWl2ZXJNYXA6OnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlUmVjZWl2ZXImIG1l
c3NhZ2VSZWNlaXZlcikKIHsKLSAgICBWZWN0b3I8U3RyaW5nUmVmZXJlbmNlPiBnbG9iYWxSZWNl
aXZlcnNUb1JlbW92ZTsKKyAgICBWZWN0b3I8UmVjZWl2ZXJOYW1lPiBnbG9iYWxSZWNlaXZlcnNU
b1JlbW92ZTsKICAgICBmb3IgKGF1dG8mIFtuYW1lLCByZWNlaXZlcl0gOiBtX2dsb2JhbE1lc3Nh
Z2VSZWNlaXZlcnMpIHsKICAgICAgICAgaWYgKHJlY2VpdmVyID09ICZtZXNzYWdlUmVjZWl2ZXIp
Ci0gICAgICAgICAgICBnbG9iYWxSZWNlaXZlcnNUb1JlbW92ZS5hcHBlbmQobmFtZSk7CisgICAg
ICAgICAgICBnbG9iYWxSZWNlaXZlcnNUb1JlbW92ZS5hcHBlbmQoc3RhdGljX2Nhc3Q8UmVjZWl2
ZXJOYW1lPihuYW1lKSk7CiAgICAgfQogCiAgICAgZm9yIChhdXRvJiBnbG9iYWxSZWNlaXZlclRv
UmVtb3ZlIDogZ2xvYmFsUmVjZWl2ZXJzVG9SZW1vdmUpCiAgICAgICAgIHJlbW92ZU1lc3NhZ2VS
ZWNlaXZlcihnbG9iYWxSZWNlaXZlclRvUmVtb3ZlKTsKIAotICAgIFZlY3RvcjxzdGQ6OnBhaXI8
U3RyaW5nUmVmZXJlbmNlLCB1aW50NjRfdD4+IHJlY2VpdmVyc1RvUmVtb3ZlOworICAgIFZlY3Rv
cjxzdGQ6OnBhaXI8dWludDhfdCwgdWludDY0X3Q+PiByZWNlaXZlcnNUb1JlbW92ZTsKICAgICBm
b3IgKGF1dG8mIFtuYW1lQW5kRGVzdGluYXRpb25JRCwgcmVjZWl2ZXJdIDogbV9tZXNzYWdlUmVj
ZWl2ZXJzKSB7CiAgICAgICAgIGlmIChyZWNlaXZlciA9PSAmbWVzc2FnZVJlY2VpdmVyKQotICAg
ICAgICAgICAgcmVjZWl2ZXJzVG9SZW1vdmUuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKG5hbWVBbmRE
ZXN0aW5hdGlvbklELmZpcnN0LCBuYW1lQW5kRGVzdGluYXRpb25JRC5zZWNvbmQpKTsKKyAgICAg
ICAgICAgIHJlY2VpdmVyc1RvUmVtb3ZlLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihzdGF0aWNfY2Fz
dDx1aW50OF90PihuYW1lQW5kRGVzdGluYXRpb25JRC5maXJzdCksIG5hbWVBbmREZXN0aW5hdGlv
bklELnNlY29uZCkpOwogICAgIH0KIAogICAgIGZvciAoYXV0byYgW25hbWUsIGRlc3RpbmF0aW9u
SURdIDogcmVjZWl2ZXJzVG9SZW1vdmUpCi0gICAgICAgIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihu
YW1lLCBkZXN0aW5hdGlvbklEKTsKKyAgICAgICAgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKHN0YXRp
Y19jYXN0PFJlY2VpdmVyTmFtZT4obmFtZSksIGRlc3RpbmF0aW9uSUQpOwogfQogCiB2b2lkIE1l
c3NhZ2VSZWNlaXZlck1hcDo6aW52YWxpZGF0ZSgpCkBAIC0xMTIsMTQgKzExMiwxNCBAQCB2b2lk
IE1lc3NhZ2VSZWNlaXZlck1hcDo6aW52YWxpZGF0ZSgpCiAKIGJvb2wgTWVzc2FnZVJlY2VpdmVy
TWFwOjpkaXNwYXRjaE1lc3NhZ2UoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgRGVjb2RlciYgZGVj
b2RlcikKIHsKLSAgICBpZiAoTWVzc2FnZVJlY2VpdmVyKiBtZXNzYWdlUmVjZWl2ZXIgPSBtX2ds
b2JhbE1lc3NhZ2VSZWNlaXZlcnMuZ2V0KGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpKSkg
eworICAgIGlmIChNZXNzYWdlUmVjZWl2ZXIqIG1lc3NhZ2VSZWNlaXZlciA9IG1fZ2xvYmFsTWVz
c2FnZVJlY2VpdmVycy5nZXQoc3RhdGljX2Nhc3Q8dWludDhfdD4oZGVjb2Rlci5tZXNzYWdlUmVj
ZWl2ZXJOYW1lKCkpKSkgewogICAgICAgICBBU1NFUlQoIWRlY29kZXIuZGVzdGluYXRpb25JRCgp
KTsKIAogICAgICAgICBtZXNzYWdlUmVjZWl2ZXItPmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rp
b24sIGRlY29kZXIpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBpZiAoTWVz
c2FnZVJlY2VpdmVyKiBtZXNzYWdlUmVjZWl2ZXIgPSBtX21lc3NhZ2VSZWNlaXZlcnMuZ2V0KHN0
ZDo6bWFrZV9wYWlyKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBkZWNvZGVyLmRlc3Rp
bmF0aW9uSUQoKSkpKSB7CisgICAgaWYgKE1lc3NhZ2VSZWNlaXZlciogbWVzc2FnZVJlY2VpdmVy
ID0gbV9tZXNzYWdlUmVjZWl2ZXJzLmdldChzdGQ6Om1ha2VfcGFpcihzdGF0aWNfY2FzdDx1aW50
OF90PihkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSksIGRlY29kZXIuZGVzdGluYXRpb25J
RCgpKSkpIHsKICAgICAgICAgbWVzc2FnZVJlY2VpdmVyLT5kaWRSZWNlaXZlTWVzc2FnZShjb25u
ZWN0aW9uLCBkZWNvZGVyKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMTI5LDE0
ICsxMjksMTQgQEAgYm9vbCBNZXNzYWdlUmVjZWl2ZXJNYXA6OmRpc3BhdGNoTWVzc2FnZQogCiBi
b29sIE1lc3NhZ2VSZWNlaXZlck1hcDo6ZGlzcGF0Y2hTeW5jTWVzc2FnZShDb25uZWN0aW9uJiBj
b25uZWN0aW9uLCBEZWNvZGVyJiBkZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8RW5jb2Rlcj4mIHJl
cGx5RW5jb2RlcikKIHsKLSAgICBpZiAoTWVzc2FnZVJlY2VpdmVyKiBtZXNzYWdlUmVjZWl2ZXIg
PSBtX2dsb2JhbE1lc3NhZ2VSZWNlaXZlcnMuZ2V0KGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFt
ZSgpKSkgeworICAgIGlmIChNZXNzYWdlUmVjZWl2ZXIqIG1lc3NhZ2VSZWNlaXZlciA9IG1fZ2xv
YmFsTWVzc2FnZVJlY2VpdmVycy5nZXQoc3RhdGljX2Nhc3Q8dWludDhfdD4oZGVjb2Rlci5tZXNz
YWdlUmVjZWl2ZXJOYW1lKCkpKSkgewogICAgICAgICBBU1NFUlQoIWRlY29kZXIuZGVzdGluYXRp
b25JRCgpKTsKIAogICAgICAgICBtZXNzYWdlUmVjZWl2ZXItPmRpZFJlY2VpdmVTeW5jTWVzc2Fn
ZShjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIpOwogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9CiAKLSAgICBpZiAoTWVzc2FnZVJlY2VpdmVyKiBtZXNzYWdlUmVjZWl2ZXIgPSBt
X21lc3NhZ2VSZWNlaXZlcnMuZ2V0KHN0ZDo6bWFrZV9wYWlyKGRlY29kZXIubWVzc2FnZVJlY2Vp
dmVyTmFtZSgpLCBkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSkpKSB7CisgICAgaWYgKE1lc3NhZ2VS
ZWNlaXZlciogbWVzc2FnZVJlY2VpdmVyID0gbV9tZXNzYWdlUmVjZWl2ZXJzLmdldChzdGQ6Om1h
a2VfcGFpcihzdGF0aWNfY2FzdDx1aW50OF90PihkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUo
KSksIGRlY29kZXIuZGVzdGluYXRpb25JRCgpKSkpIHsKICAgICAgICAgbWVzc2FnZVJlY2VpdmVy
LT5kaWRSZWNlaXZlU3luY01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVy
KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpJbmRleDogU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVyTWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVyTWFwLmgJKHJldmlzaW9uIDI2MTAzMykKKysr
IFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VSZWNlaXZlck1hcC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yMyw4ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAgKi8KIAotI2lmbmRlZiBNZXNzYWdlUmVjZWl2ZXJNYXBfaAotI2RlZmluZSBNZXNzYWdl
UmVjZWl2ZXJNYXBfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJTdHJpbmdSZWZlcmVuY2Uu
aCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAtMzYsMTcgKzM1LDE4IEBAIGNsYXNzIENv
bm5lY3Rpb247CiBjbGFzcyBFbmNvZGVyOwogY2xhc3MgRGVjb2RlcjsKIGNsYXNzIE1lc3NhZ2VS
ZWNlaXZlcjsKK2VudW0gY2xhc3MgUmVjZWl2ZXJOYW1lIDogdWludDhfdDsKIAogY2xhc3MgTWVz
c2FnZVJlY2VpdmVyTWFwIHsKIHB1YmxpYzoKICAgICBNZXNzYWdlUmVjZWl2ZXJNYXAoKTsKICAg
ICB+TWVzc2FnZVJlY2VpdmVyTWFwKCk7CiAKLSAgICB2b2lkIGFkZE1lc3NhZ2VSZWNlaXZlcihT
dHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgTWVzc2FnZVJlY2VpdmVyJik7Ci0g
ICAgdm9pZCBhZGRNZXNzYWdlUmVjZWl2ZXIoU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZl
ck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIE1lc3NhZ2VSZWNlaXZlciYpOworICAgIHZv
aWQgYWRkTWVzc2FnZVJlY2VpdmVyKFJlY2VpdmVyTmFtZSwgTWVzc2FnZVJlY2VpdmVyJik7Cisg
ICAgdm9pZCBhZGRNZXNzYWdlUmVjZWl2ZXIoUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5h
dGlvbklELCBNZXNzYWdlUmVjZWl2ZXImKTsKIAotICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2Vp
dmVyKFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lKTsKLSAgICB2b2lkIHJlbW92
ZU1lc3NhZ2VSZWNlaXZlcihTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgdWlu
dDY0X3QgZGVzdGluYXRpb25JRCk7CisgICAgdm9pZCByZW1vdmVNZXNzYWdlUmVjZWl2ZXIoUmVj
ZWl2ZXJOYW1lKTsKKyAgICB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihSZWNlaXZlck5hbWUs
IHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpOwogICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVy
KE1lc3NhZ2VSZWNlaXZlciYpOwogCiAgICAgdm9pZCBpbnZhbGlkYXRlKCk7CkBAIC01NiwxMSAr
NTYsOSBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgLy8gTWVzc2FnZSByZWNlaXZlcnMgdGhh
dCBkb24ndCByZXF1aXJlIGEgZGVzdGluYXRpb24gSUQuCi0gICAgSGFzaE1hcDxTdHJpbmdSZWZl
cmVuY2UsIE1lc3NhZ2VSZWNlaXZlcio+IG1fZ2xvYmFsTWVzc2FnZVJlY2VpdmVyczsKKyAgICBI
YXNoTWFwPHVpbnQ4X3QsIE1lc3NhZ2VSZWNlaXZlcio+IG1fZ2xvYmFsTWVzc2FnZVJlY2VpdmVy
czsKIAotICAgIEhhc2hNYXA8c3RkOjpwYWlyPFN0cmluZ1JlZmVyZW5jZSwgdWludDY0X3Q+LCBN
ZXNzYWdlUmVjZWl2ZXIqPiBtX21lc3NhZ2VSZWNlaXZlcnM7CisgICAgSGFzaE1hcDxzdGQ6OnBh
aXI8dWludDhfdCwgdWludDY0X3Q+LCBNZXNzYWdlUmVjZWl2ZXIqPiBtX21lc3NhZ2VSZWNlaXZl
cnM7CiB9OwogCiB9OwotCi0jZW5kaWYgLy8gTWVzc2FnZVJlY2VpdmVyTWFwX2gKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VTZW5kZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVyLmgJKHJldmlzaW9uIDI2MTAz
MykKKysrIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VTZW5kZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBzdGF0aWNf
YXNzZXJ0KCFVOjppc1N5bmMsICJNZXNzYWdlIGlzIHN5bmMhIik7CiAKLSAgICAgICAgYXV0byBl
bmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNvZGVyPihVOjpyZWNlaXZlck5hbWUoKSwgVTo6bmFtZSgp
LCBkZXN0aW5hdGlvbklEKTsKKyAgICAgICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNv
ZGVyPihVOjpuYW1lKCksIGRlc3RpbmF0aW9uSUQpOwogICAgICAgICBlbmNvZGVyLT5lbmNvZGUo
bWVzc2FnZS5hcmd1bWVudHMoKSk7CiAgICAgICAgIAogICAgICAgICByZXR1cm4gc2VuZE1lc3Nh
Z2UoV1RGTW92ZShlbmNvZGVyKSwgc2VuZE9wdGlvbnMpOwpAQCAtODgsNyArODgsNyBAQCBwdWJs
aWM6CiAgICAgewogICAgICAgICBDT01QSUxFX0FTU0VSVCghVDo6aXNTeW5jLCBBc3luY01lc3Nh
Z2VFeHBlY3RlZCk7CiAKLSAgICAgICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZTxJUEM6OkVu
Y29kZXI+KFQ6OnJlY2VpdmVyTmFtZSgpLCBUOjpuYW1lKCksIGRlc3RpbmF0aW9uSUQpOworICAg
ICAgICBhdXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlPElQQzo6RW5jb2Rlcj4oVDo6bmFtZSgpLCBk
ZXN0aW5hdGlvbklEKTsKICAgICAgICAgdWludDY0X3QgbGlzdGVuZXJJRCA9IElQQzo6bmV4dEFz
eW5jUmVwbHlIYW5kbGVySUQoKTsKICAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKGxpc3RlbmVySUQp
OwogICAgICAgICBlbmNvZGVyLT5lbmNvZGUobWVzc2FnZS5hcmd1bWVudHMoKSk7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9Db25uZWN0aW9uQ29jb2EubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvQ29ubmVjdGlvbkNvY29h
Lm1tCShyZXZpc2lvbiAyNjEwMzMpCisrKyBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2Nv
YS9Db25uZWN0aW9uQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTIxNCw3ICsyMTQsNyBAQCBi
b29sIENvbm5lY3Rpb246Om9wZW4oKQogICAgICAgICBtX2lzQ29ubmVjdGVkID0gdHJ1ZTsKICAg
ICAgICAgCiAgICAgICAgIC8vIFNlbmQgdGhlIGluaXRpYWxpemUgbWVzc2FnZSwgd2hpY2ggY29u
dGFpbnMgYSBzZW5kIHJpZ2h0IGZvciB0aGUgc2VydmVyIHRvIHVzZS4KLSAgICAgICAgYXV0byBl
bmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNvZGVyPigiSVBDIiwgIkluaXRpYWxpemVDb25uZWN0aW9u
IiwgMCk7CisgICAgICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWU8RW5jb2Rlcj4oTWVzc2Fn
ZU5hbWU6OkluaXRpYWxpemVDb25uZWN0aW9uLCAwKTsKICAgICAgICAgZW5jb2Rlci0+ZW5jb2Rl
KE1hY2hQb3J0KG1fcmVjZWl2ZVBvcnQsIE1BQ0hfTVNHX1RZUEVfTUFLRV9TRU5EKSk7CiAKICAg
ICAgICAgaW5pdGlhbGl6ZVNlbmRTb3VyY2UoKTsKQEAgLTI3Myw3ICsyNzMsNyBAQCBib29sIENv
bm5lY3Rpb246OnNlbmRNZXNzYWdlKHN0ZDo6dW5pcXVlCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgIGRlZmF1bHQ6Ci0gICAgICAgIENTdHJpbmcgbWVzc2FnZU5hbWUgPSBtYWtlU3RyaW5n
KG1lc3NhZ2UtPm1lc3NhZ2VSZWNlaXZlck5hbWUoKS5kYXRhKCksICI6OiIsIG1lc3NhZ2UtPm1l
c3NhZ2VOYW1lKCkuZGF0YSgpKS51dGY4KCk7CisgICAgICAgIENTdHJpbmcgbWVzc2FnZU5hbWUo
ZGVzY3JpcHRpb24obWVzc2FnZS0+bWVzc2FnZU5hbWUoKSkpOwogICAgICAgICBXZWJLaXQ6OnNl
dENyYXNoUmVwb3J0QXBwbGljYXRpb25TcGVjaWZpY0luZm9ybWF0aW9uKChfX2JyaWRnZSBDRlN0
cmluZ1JlZilbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIlVuaGFuZGxlZCBlcnJvciBjb2Rl
ICV4LCBtZXNzYWdlICclcycsIGhhc2ggJWQiLCBrciwgbWVzc2FnZU5hbWUuZGF0YSgpLCBtZXNz
YWdlTmFtZS5oYXNoKCldKTsKICAgICAgICAgQ1JBU0hfV0lUSF9JTkZPKGtyLCBtZXNzYWdlTmFt
ZS5oYXNoKCkpOwogICAgIH0KQEAgLTMwOCw3ICszMDgsNyBAQCBib29sIENvbm5lY3Rpb246OnNl
bmRPdXRnb2luZ01lc3NhZ2Uoc3RkCiAgICAgfQogCiAgICAgc2l6ZV90IHNhZmVNZXNzYWdlU2l6
ZSA9IG1lc3NhZ2VTaXplLnVuc2FmZUdldCgpOwotICAgIGF1dG8gbWVzc2FnZSA9IE1hY2hNZXNz
YWdlOjpjcmVhdGUoZW5jb2Rlci0+bWVzc2FnZVJlY2VpdmVyTmFtZSgpLnRvU3RyaW5nKCksIGVu
Y29kZXItPm1lc3NhZ2VOYW1lKCkudG9TdHJpbmcoKSwgc2FmZU1lc3NhZ2VTaXplKTsKKyAgICBh
dXRvIG1lc3NhZ2UgPSBNYWNoTWVzc2FnZTo6Y3JlYXRlKGVuY29kZXItPm1lc3NhZ2VOYW1lKCks
IHNhZmVNZXNzYWdlU2l6ZSk7CiAgICAgaWYgKCFtZXNzYWdlKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKQEAgLTUzNCw3ICs1MzQsNyBAQCB2b2lkIENvbm5lY3Rpb246OnJlY2VpdmVTb3VyY2VF
dmVudEhhbmRsCiAgICAgZGVjb2Rlci0+c2V0SW1wb3J0YW5jZUFzc2VydGlvbihtYWtlVW5pcXVl
PEltcG9ydGFuY2VBc3NlcnRpb24+KGhlYWRlcikpOwogI2VuZGlmCiAKLSAgICBpZiAoZGVjb2Rl
ci0+bWVzc2FnZVJlY2VpdmVyTmFtZSgpID09ICJJUEMiICYmIGRlY29kZXItPm1lc3NhZ2VOYW1l
KCkgPT0gIkluaXRpYWxpemVDb25uZWN0aW9uIikgeworICAgIGlmIChkZWNvZGVyLT5tZXNzYWdl
TmFtZSgpID09IE1lc3NhZ2VOYW1lOjpJbml0aWFsaXplQ29ubmVjdGlvbikgewogICAgICAgICBB
U1NFUlQobV9pc1NlcnZlcik7CiAgICAgICAgIEFTU0VSVCghbV9pc0Nvbm5lY3RlZCk7CiAgICAg
ICAgIEFTU0VSVCghbV9zZW5kUG9ydCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9jb2NvYS9NYWNoTWVzc2FnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvY29jb2EvTWFjaE1lc3NhZ2UuY3BwCShyZXZpc2lvbiAyNjEwMzMpCisrKyBTb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9NYWNoTWVzc2FnZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM5LDE4ICszOSwxNyBAQCBzdGF0aWMgaW5saW5lIENoZWNrZWRTaXplIHNhZmVSb3Vu
ZE1zZyhDCiAgICAgcmV0dXJuICgodmFsdWUgKyAoYWxpZ25tZW50IC0gMSkpIC8gYWxpZ25tZW50
KSAqIGFsaWdubWVudDsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPE1hY2hNZXNzYWdlPiBNYWNoTWVz
c2FnZTo6Y3JlYXRlKENTdHJpbmcmJiBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBDU3RyaW5nJiYgbWVz
c2FnZU5hbWUsIHNpemVfdCBzaXplKQorc3RkOjp1bmlxdWVfcHRyPE1hY2hNZXNzYWdlPiBNYWNo
TWVzc2FnZTo6Y3JlYXRlKE1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lLCBzaXplX3Qgc2l6ZSkKIHsK
ICAgICBhdXRvIGJ1ZmZlclNpemUgPSBDaGVja2VkU2l6ZShzaXplb2YoTWFjaE1lc3NhZ2UpKSAr
IHNpemU7CiAgICAgaWYgKGJ1ZmZlclNpemUuaGFzT3ZlcmZsb3dlZCgpKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICB2b2lkKiBtZW1vcnkgPSBXVEY6OmZhc3RaZXJvZWRNYWxsb2MoYnVm
ZmVyU2l6ZS51bnNhZmVHZXQoKSk7Ci0gICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxNYWNoTWVz
c2FnZT4geyBuZXcgKE5vdE51bGwsIG1lbW9yeSkgTWFjaE1lc3NhZ2UgeyBXVEZNb3ZlKG1lc3Nh
Z2VSZWNlaXZlck5hbWUpLCBXVEZNb3ZlKG1lc3NhZ2VOYW1lKSwgc2l6ZSB9IH07CisgICAgcmV0
dXJuIHN0ZDo6dW5pcXVlX3B0cjxNYWNoTWVzc2FnZT4geyBuZXcgKE5vdE51bGwsIG1lbW9yeSkg
TWFjaE1lc3NhZ2UgeyBtZXNzYWdlTmFtZSwgc2l6ZSB9IH07CiB9CiAKLU1hY2hNZXNzYWdlOjpN
YWNoTWVzc2FnZShDU3RyaW5nJiYgbWVzc2FnZVJlY2VpdmVyTmFtZSwgQ1N0cmluZyYmIG1lc3Nh
Z2VOYW1lLCBzaXplX3Qgc2l6ZSkKLSAgICA6IG1fbWVzc2FnZVJlY2VpdmVyTmFtZShXVEZNb3Zl
KG1lc3NhZ2VSZWNlaXZlck5hbWUpKQotICAgICwgbV9tZXNzYWdlTmFtZShXVEZNb3ZlKG1lc3Nh
Z2VOYW1lKSkKK01hY2hNZXNzYWdlOjpNYWNoTWVzc2FnZShNZXNzYWdlTmFtZSBtZXNzYWdlTmFt
ZSwgc2l6ZV90IHNpemUpCisgICAgOiBtX21lc3NhZ2VOYW1lIHsgbWVzc2FnZU5hbWUgfQogICAg
ICwgbV9zaXplIHsgc2l6ZSB9CiB7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9jb2NvYS9NYWNoTWVzc2FnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL2NvY29hL01hY2hNZXNzYWdlLmgJKHJldmlzaW9uIDI2MTAzMykKKysrIFNvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL01hY2hNZXNzYWdlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI3LDYgKzI3LDcgQEAKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogCisjaW5jbHVkZSAiTWVzc2Fn
ZU5hbWVzLmgiCiAjaW5jbHVkZSA8bWFjaC9tZXNzYWdlLmg+CiAjaW5jbHVkZSA8bWVtb3J5Pgog
I2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgpAQCAtMzcsNyArMzgsNyBAQCBuYW1l
c3BhY2UgSVBDIHsKIGNsYXNzIE1hY2hNZXNzYWdlIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPE1hY2hNZXNzYWdlPiBj
cmVhdGUoQ1N0cmluZyYmIG1lc3NhZ2VSZWNlaXZlck5hbWUsIENTdHJpbmcmJiBtZXNzYWdlTmFt
ZSwgc2l6ZV90KTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPE1hY2hNZXNzYWdlPiBjcmVh
dGUoTWVzc2FnZU5hbWUsIHNpemVfdCk7CiAgICAgfk1hY2hNZXNzYWdlKCk7CiAKICAgICBzdGF0
aWMgQ2hlY2tlZFNpemUgbWVzc2FnZVNpemUoc2l6ZV90IGJvZHlTaXplLCBzaXplX3QgcG9ydERl
c2NyaXB0b3JDb3VudCwgc2l6ZV90IG1lbW9yeURlc2NyaXB0b3JDb3VudCk7CkBAIC00NywxNCAr
NDgsMTMgQEAgcHVibGljOgogCiAgICAgdm9pZCBsZWFrRGVzY3JpcHRvcnMoKTsKIAotICAgIGNv
bnN0IENTdHJpbmcmIG1lc3NhZ2VSZWNlaXZlck5hbWUoKSBjb25zdCB7IHJldHVybiBtX21lc3Nh
Z2VSZWNlaXZlck5hbWU7IH0KLSAgICBjb25zdCBDU3RyaW5nJiBtZXNzYWdlTmFtZSgpIGNvbnN0
IHsgcmV0dXJuIG1fbWVzc2FnZU5hbWU7IH0KKyAgICBSZWNlaXZlck5hbWUgbWVzc2FnZVJlY2Vp
dmVyTmFtZSgpIGNvbnN0IHsgcmV0dXJuIHJlY2VpdmVyTmFtZShtX21lc3NhZ2VOYW1lKTsgfQor
ICAgIE1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lKCkgY29uc3QgeyByZXR1cm4gbV9tZXNzYWdlTmFt
ZTsgfQogCiBwcml2YXRlOgotICAgIE1hY2hNZXNzYWdlKENTdHJpbmcmJiBtZXNzYWdlUmVjZWl2
ZXJOYW1lLCBDU3RyaW5nJiYgbWVzc2FnZU5hbWUsIHNpemVfdCk7CisgICAgTWFjaE1lc3NhZ2Uo
TWVzc2FnZU5hbWUsIHNpemVfdCk7CiAKLSAgICBDU3RyaW5nIG1fbWVzc2FnZVJlY2VpdmVyTmFt
ZTsKLSAgICBDU3RyaW5nIG1fbWVzc2FnZU5hbWU7CisgICAgTWVzc2FnZU5hbWUgbV9tZXNzYWdl
TmFtZTsKICAgICBzaXplX3QgbV9zaXplOwogICAgIGJvb2wgbV9zaG91bGRGcmVlRGVzY3JpcHRv
cnMgeyB0cnVlIH07CiAgICAgbWFjaF9tc2dfaGVhZGVyX3QgbV9tZXNzYWdlSGVhZGVyW107Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29u
bmVjdGlvbi5jcHAJKHJldmlzaW9uIDI2MTAzMykKKysrIFNvdXJjZS9XZWJLaXQvUGx1Z2luUHJv
Y2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwNSw3ICsy
MDUsNyBAQCB2b2lkIFdlYlByb2Nlc3NDb25uZWN0aW9uOjpkZXN0cm95UGx1Z2luCiAgICAgZGVz
dHJveVBsdWdpbkNvbnRyb2xsZXJQcm94eShwbHVnaW5Db250cm9sbGVyUHJveHkpOwogfQogCi12
b2lkIFdlYlByb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSVBDOjpTdHJpbmdSZWZlcmVuY2UsIElQQzo6U3RyaW5nUmVmZXJlbmNlKQor
dm9pZCBXZWJQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZU5hbWUpCiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVu
dC4KIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVj
dGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9XZWJQcm9j
ZXNzQ29ubmVjdGlvbi5oCShyZXZpc2lvbiAyNjEwMzMpCisrKyBTb3VyY2UvV2ViS2l0L1BsdWdp
blByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNjQsNyAr
NjQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlU3luY01l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQ
Qzo6RW5jb2Rlcj4mKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZENsb3NlKElQQzo6Q29ubmVjdGlv
biYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIElQQzo6
U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2Vp
dmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VOYW1lKSBvdmVy
cmlkZTsKIAogICAgIC8vIE1lc3NhZ2UgaGFuZGxlcnMuCiAgICAgdm9pZCBkaWRSZWNlaXZlV2Vi
UHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYp
OwpJbmRleDogU291cmNlL1dlYktpdC9TY3JpcHRzL01ha2VmaWxlCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvU2NyaXB0cy9NYWtlZmlsZQkocmV2aXNpb24gMjYxMDMzKQorKysgU291cmNl
L1dlYktpdC9TY3JpcHRzL01ha2VmaWxlCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsMiBAQAog
YWxsOgotCXB5dGhvbiAuL2dlbmVyYXRlLW1lc3NhZ2UtcmVjZWl2ZXIucHkgd2Via2l0L3Rlc3Qt
c3VwZXJjbGFzcy1tZXNzYWdlcy5pbiAtLWltcGxlbWVudGF0aW9uIHdlYmtpdC9NZXNzYWdlUmVj
ZWl2ZXJTdXBlcmNsYXNzLWV4cGVjdGVkLmNwcCAtLWhlYWRlciB3ZWJraXQvTWVzc2FnZXNTdXBl
cmNsYXNzLWV4cGVjdGVkLmggLS1yZXBseS1oZWFkZXIgd2Via2l0L01lc3NhZ2VzUmVwbGllc1N1
cGVyY2xhc3NSZXBsaWVzLWV4cGVjdGVkLmgKLQlweXRob24gLi9nZW5lcmF0ZS1tZXNzYWdlLXJl
Y2VpdmVyLnB5IHdlYmtpdC90ZXN0LWxlZ2FjeS1tZXNzYWdlcy5pbiAtLWltcGxlbWVudGF0aW9u
IHdlYmtpdC9MZWdhY3lNZXNzYWdlUmVjZWl2ZXItZXhwZWN0ZWQuY3BwIC0taGVhZGVyIHdlYmtp
dC9MZWdhY3lNZXNzYWdlcy1leHBlY3RlZC5oIC0tcmVwbHktaGVhZGVyIHdlYmtpdC9MZWdhY3lN
ZXNzYWdlc1JlcGxpZXMtZXhwZWN0ZWQuaAotCXB5dGhvbiAuL2dlbmVyYXRlLW1lc3NhZ2UtcmVj
ZWl2ZXIucHkgd2Via2l0L3Rlc3QtbWVzc2FnZXMuaW4gLS1pbXBsZW1lbnRhdGlvbiB3ZWJraXQv
TWVzc2FnZVJlY2VpdmVyLWV4cGVjdGVkLmNwcCAtLWhlYWRlciB3ZWJraXQvTWVzc2FnZXMtZXhw
ZWN0ZWQuaCAtLXJlcGx5LWhlYWRlciB3ZWJraXQvTWVzc2FnZXNSZXBsaWVzLWV4cGVjdGVkLmgK
LQorCXB5dGhvbiBnZW5lcmF0ZS1tZXNzYWdlLXJlY2VpdmVyLnB5IHdlYmtpdCB0ZXN0LXN1cGVy
Y2xhc3MgdGVzdC1sZWdhY3kgdGVzdApJbmRleDogU291cmNlL1dlYktpdC9TY3JpcHRzL01lc3Nh
Z2VOYW1lcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TY3JpcHRzL01lc3NhZ2VO
YW1lcy5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9TY3JpcHRzL01lc3NhZ2VO
YW1lcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzMDMgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTAtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
CisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTWVzc2FnZU5hbWVzLmgiCisKK25h
bWVzcGFjZSBJUEMgeworCitjb25zdCBjaGFyKiBkZXNjcmlwdGlvbihNZXNzYWdlTmFtZSBuYW1l
KQoreworICAgIHN3aXRjaCAobmFtZSkgeworICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2Vf
TG9hZFVSTDoKKyAgICAgICAgcmV0dXJuICJXZWJQYWdlOjpMb2FkVVJMIjsKKyNpZiBFTkFCTEUo
VEVTVF9GRUFUVVJFKQorICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVzdEFzeW5jTWVz
c2FnZToKKyAgICAgICAgcmV0dXJuICJXZWJQYWdlOjpUZXN0QXN5bmNNZXNzYWdlIjsKKyAgICBj
YXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX1Rlc3RBc3luY01lc3NhZ2VSZXBseToKKyAgICAgICAg
cmV0dXJuICJXZWJQYWdlOjpUZXN0QXN5bmNNZXNzYWdlUmVwbHkiOworI2VuZGlmCisjaWYgRU5B
QkxFKFRFU1RfRkVBVFVSRSkKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX1Rlc3RBc3lu
Y01lc3NhZ2VXaXRoTm9Bcmd1bWVudHM6CisgICAgICAgIHJldHVybiAiV2ViUGFnZTo6VGVzdEFz
eW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50cyI7CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFn
ZV9UZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJndW1lbnRzUmVwbHk6CisgICAgICAgIHJldHVybiAi
V2ViUGFnZTo6VGVzdEFzeW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50c1JlcGx5IjsKKyNlbmRpZgor
I2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9U
ZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1lbnRzOgorICAgICAgICByZXR1cm4gIldl
YlBhZ2U6OlRlc3RBc3luY01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHMiOworICAgIGNhc2Ug
TWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVzdEFzeW5jTWVzc2FnZVdpdGhNdWx0aXBsZUFyZ3VtZW50
c1JlcGx5OgorICAgICAgICByZXR1cm4gIldlYlBhZ2U6OlRlc3RBc3luY01lc3NhZ2VXaXRoTXVs
dGlwbGVBcmd1bWVudHNSZXBseSI7CisjZW5kaWYKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQ
YWdlX1Rlc3RTeW5jTWVzc2FnZToKKyAgICAgICAgcmV0dXJuICJXZWJQYWdlOjpUZXN0U3luY01l
c3NhZ2UiOworICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVzdFN5bmNocm9ub3VzTWVz
c2FnZToKKyAgICAgICAgcmV0dXJuICJXZWJQYWdlOjpUZXN0U3luY2hyb25vdXNNZXNzYWdlIjsK
KyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX0xvYWRVUkw6CisgICAgICAgIHJldHVybiAi
V2ViUGFnZTo6TG9hZFVSTCI7CisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAgICBjYXNlIE1l
c3NhZ2VOYW1lOjpXZWJQYWdlX0xvYWRTb21ldGhpbmc6CisgICAgICAgIHJldHVybiAiV2ViUGFn
ZTo6TG9hZFNvbWV0aGluZyI7CisjZW5kaWYKKyNpZiAoRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYg
KE5FU1RFRF9NRVNTQUdFX0NPTkRJVElPTiB8fCBTT01FX09USEVSX01FU1NBR0VfQ09ORElUSU9O
KSkKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX1RvdWNoRXZlbnQ6CisgICAgICAgIHJl
dHVybiAiV2ViUGFnZTo6VG91Y2hFdmVudCI7CisjZW5kaWYKKyNpZiAoRU5BQkxFKFRPVUNIX0VW
RU5UUykgJiYgKE5FU1RFRF9NRVNTQUdFX0NPTkRJVElPTiAmJiBTT01FX09USEVSX01FU1NBR0Vf
Q09ORElUSU9OKSkKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX0FkZEV2ZW50OgorICAg
ICAgICByZXR1cm4gIldlYlBhZ2U6OkFkZEV2ZW50IjsKKyNlbmRpZgorI2lmIEVOQUJMRShUT1VD
SF9FVkVOVFMpCisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9Mb2FkU29tZXRoaW5nRWxz
ZToKKyAgICAgICAgcmV0dXJuICJXZWJQYWdlOjpMb2FkU29tZXRoaW5nRWxzZSI7CisjZW5kaWYK
KyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX0RpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbjoK
KyAgICAgICAgcmV0dXJuICJXZWJQYWdlOjpEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24iOworICAg
IGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfQ2xvc2U6CisgICAgICAgIHJldHVybiAiV2ViUGFn
ZTo6Q2xvc2UiOworICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfUHJlZmVyZW5jZXNEaWRD
aGFuZ2U6CisgICAgICAgIHJldHVybiAiV2ViUGFnZTo6UHJlZmVyZW5jZXNEaWRDaGFuZ2UiOwor
ICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfU2VuZERvdWJsZUFuZEZsb2F0OgorICAgICAg
ICByZXR1cm4gIldlYlBhZ2U6OlNlbmREb3VibGVBbmRGbG9hdCI7CisgICAgY2FzZSBNZXNzYWdl
TmFtZTo6V2ViUGFnZV9TZW5kSW50czoKKyAgICAgICAgcmV0dXJuICJXZWJQYWdlOjpTZW5kSW50
cyI7CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9DcmVhdGVQbHVnaW46CisgICAgICAg
IHJldHVybiAiV2ViUGFnZTo6Q3JlYXRlUGx1Z2luIjsKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpX
ZWJQYWdlX1J1bkphdmFTY3JpcHRBbGVydDoKKyAgICAgICAgcmV0dXJuICJXZWJQYWdlOjpSdW5K
YXZhU2NyaXB0QWxlcnQiOworICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfR2V0UGx1Z2lu
czoKKyAgICAgICAgcmV0dXJuICJXZWJQYWdlOjpHZXRQbHVnaW5zIjsKKyAgICBjYXNlIE1lc3Nh
Z2VOYW1lOjpXZWJQYWdlX0dldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOgorICAgICAgICByZXR1
cm4gIldlYlBhZ2U6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uIjsKKyAgICBjYXNlIE1lc3Nh
Z2VOYW1lOjpXZWJQYWdlX1Rlc3RNdWx0aXBsZUF0dHJpYnV0ZXM6CisgICAgICAgIHJldHVybiAi
V2ViUGFnZTo6VGVzdE11bHRpcGxlQXR0cmlidXRlcyI7CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6
V2ViUGFnZV9UZXN0UGFyYW1ldGVyQXR0cmlidXRlczoKKyAgICAgICAgcmV0dXJuICJXZWJQYWdl
OjpUZXN0UGFyYW1ldGVyQXR0cmlidXRlcyI7CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFn
ZV9UZW1wbGF0ZVRlc3Q6CisgICAgICAgIHJldHVybiAiV2ViUGFnZTo6VGVtcGxhdGVUZXN0IjsK
KyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX1NldFZpZGVvTGF5ZXJJRDoKKyAgICAgICAg
cmV0dXJuICJXZWJQYWdlOjpTZXRWaWRlb0xheWVySUQiOworI2lmIFBMQVRGT1JNKE1BQykKKyAg
ICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX0RpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9u
OgorICAgICAgICByZXR1cm4gIldlYlBhZ2U6OkRpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9u
IjsKKyNlbmRpZgorI2lmIFBMQVRGT1JNKE1BQykKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQ
YWdlX0ludGVycHJldEtleUV2ZW50OgorICAgICAgICByZXR1cm4gIldlYlBhZ2U6OkludGVycHJl
dEtleUV2ZW50IjsKKyNlbmRpZgorI2lmIEVOQUJMRShERVBSRUNBVEVEX0ZFQVRVUkUpCisgICAg
Y2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9EZXByZWNhdGVkT3BlcmF0aW9uOgorICAgICAgICBy
ZXR1cm4gIldlYlBhZ2U6OkRlcHJlY2F0ZWRPcGVyYXRpb24iOworI2VuZGlmCisjaWYgRU5BQkxF
KEVYUEVSSU1FTlRBTF9GRUFUVVJFKQorICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfRXhw
ZXJpbWVudGFsT3BlcmF0aW9uOgorICAgICAgICByZXR1cm4gIldlYlBhZ2U6OkV4cGVyaW1lbnRh
bE9wZXJhdGlvbiI7CisjZW5kaWYKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXcmFwcGVkQXN5bmNN
ZXNzYWdlRm9yVGVzdGluZzoKKyAgICAgICAgcmV0dXJuICJJUEM6OldyYXBwZWRBc3luY01lc3Nh
Z2VGb3JUZXN0aW5nIjsKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpTeW5jTWVzc2FnZVJlcGx5Ogor
ICAgICAgICByZXR1cm4gIklQQzo6U3luY01lc3NhZ2VSZXBseSI7CisgICAgY2FzZSBNZXNzYWdl
TmFtZTo6SW5pdGlhbGl6ZUNvbm5lY3Rpb246CisgICAgICAgIHJldHVybiAiSVBDOjpJbml0aWFs
aXplQ29ubmVjdGlvbiI7CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6TGVnYWN5U2Vzc2lvblN0YXRl
OgorICAgICAgICByZXR1cm4gIklQQzo6TGVnYWN5U2Vzc2lvblN0YXRlIjsKKyAgICB9CisgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuICI8aW52YWxpZCBtZXNzYWdlIG5hbWU+
IjsKK30KKworUmVjZWl2ZXJOYW1lIHJlY2VpdmVyTmFtZShNZXNzYWdlTmFtZSBtZXNzYWdlTmFt
ZSkKK3sKKyAgICBzd2l0Y2ggKG1lc3NhZ2VOYW1lKSB7CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6
V2ViUGFnZV9Mb2FkVVJMOgorI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCisgICAgY2FzZSBNZXNz
YWdlTmFtZTo6V2ViUGFnZV9UZXN0QXN5bmNNZXNzYWdlOgorI2VuZGlmCisjaWYgRU5BQkxFKFRF
U1RfRkVBVFVSRSkKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX1Rlc3RBc3luY01lc3Nh
Z2VXaXRoTm9Bcmd1bWVudHM6CisjZW5kaWYKKyNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQorICAg
IGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVzdEFzeW5jTWVzc2FnZVdpdGhNdWx0aXBsZUFy
Z3VtZW50czoKKyNlbmRpZgorICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVzdFN5bmNN
ZXNzYWdlOgorICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVzdFN5bmNocm9ub3VzTWVz
c2FnZToKKyAgICAgICAgcmV0dXJuIFJlY2VpdmVyTmFtZTo6V2ViUGFnZTsKKyAgICBjYXNlIE1l
c3NhZ2VOYW1lOjpXZWJQYWdlX0xvYWRVUkw6CisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAg
ICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX0xvYWRTb21ldGhpbmc6CisjZW5kaWYKKyNpZiAo
RU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgKE5FU1RFRF9NRVNTQUdFX0NPTkRJVElPTiB8fCBTT01F
X09USEVSX01FU1NBR0VfQ09ORElUSU9OKSkKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdl
X1RvdWNoRXZlbnQ6CisjZW5kaWYKKyNpZiAoRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgKE5FU1RF
RF9NRVNTQUdFX0NPTkRJVElPTiAmJiBTT01FX09USEVSX01FU1NBR0VfQ09ORElUSU9OKSkKKyAg
ICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX0FkZEV2ZW50OgorI2VuZGlmCisjaWYgRU5BQkxF
KFRPVUNIX0VWRU5UUykKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX0xvYWRTb21ldGhp
bmdFbHNlOgorI2VuZGlmCisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9EaWRSZWNlaXZl
UG9saWN5RGVjaXNpb246CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9DbG9zZToKKyAg
ICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX1ByZWZlcmVuY2VzRGlkQ2hhbmdlOgorICAgIGNh
c2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfU2VuZERvdWJsZUFuZEZsb2F0OgorICAgIGNhc2UgTWVz
c2FnZU5hbWU6OldlYlBhZ2VfU2VuZEludHM6CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFn
ZV9DcmVhdGVQbHVnaW46CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9SdW5KYXZhU2Ny
aXB0QWxlcnQ6CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9HZXRQbHVnaW5zOgorICAg
IGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfR2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246Cisg
ICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9UZXN0TXVsdGlwbGVBdHRyaWJ1dGVzOgorICAg
IGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVzdFBhcmFtZXRlckF0dHJpYnV0ZXM6CisgICAg
Y2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9UZW1wbGF0ZVRlc3Q6CisgICAgY2FzZSBNZXNzYWdl
TmFtZTo6V2ViUGFnZV9TZXRWaWRlb0xheWVySUQ6CisjaWYgUExBVEZPUk0oTUFDKQorICAgIGNh
c2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfRGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb246Cisj
ZW5kaWYKKyNpZiBQTEFURk9STShNQUMpCisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9J
bnRlcnByZXRLZXlFdmVudDoKKyNlbmRpZgorI2lmIEVOQUJMRShERVBSRUNBVEVEX0ZFQVRVUkUp
CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9EZXByZWNhdGVkT3BlcmF0aW9uOgorI2Vu
ZGlmCisjaWYgRU5BQkxFKEVYUEVSSU1FTlRBTF9GRUFUVVJFKQorICAgIGNhc2UgTWVzc2FnZU5h
bWU6OldlYlBhZ2VfRXhwZXJpbWVudGFsT3BlcmF0aW9uOgorI2VuZGlmCisgICAgICAgIHJldHVy
biBSZWNlaXZlck5hbWU6OldlYlBhZ2U7CisgICAgICAgIHJldHVybiBSZWNlaXZlck5hbWU6Ok5v
bmU7CisjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQ
YWdlX1Rlc3RBc3luY01lc3NhZ2VSZXBseToKKyNlbmRpZgorI2lmIEVOQUJMRShURVNUX0ZFQVRV
UkUpCisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9UZXN0QXN5bmNNZXNzYWdlV2l0aE5v
QXJndW1lbnRzUmVwbHk6CisjZW5kaWYKKyNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQorICAgIGNh
c2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVzdEFzeW5jTWVzc2FnZVdpdGhNdWx0aXBsZUFyZ3Vt
ZW50c1JlcGx5OgorI2VuZGlmCisgICAgICAgIHJldHVybiBSZWNlaXZlck5hbWU6OkFzeW5jUmVw
bHk7CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V3JhcHBlZEFzeW5jTWVzc2FnZUZvclRlc3Rpbmc6
CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6U3luY01lc3NhZ2VSZXBseToKKyAgICBjYXNlIE1lc3Nh
Z2VOYW1lOjpJbml0aWFsaXplQ29ubmVjdGlvbjoKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpMZWdh
Y3lTZXNzaW9uU3RhdGU6CisgICAgICAgIHJldHVybiBSZWNlaXZlck5hbWU6OklQQzsKKyAgICB9
CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIFJlY2VpdmVyTmFtZTo6SW52
YWxpZDsKK30KKworYm9vbCBpc1ZhbGlkTWVzc2FnZU5hbWUoTWVzc2FnZU5hbWUgbWVzc2FnZU5h
bWUpCit7CisgICAgaWYgKG1lc3NhZ2VOYW1lID09IElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2Vf
TG9hZFVSTCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkK
KyAgICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9UZXN0QXN5
bmNNZXNzYWdlKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAobWVzc2FnZU5hbWUgPT0g
SVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9UZXN0QXN5bmNNZXNzYWdlUmVwbHkpCisgICAgICAg
IHJldHVybiB0cnVlOworI2VuZGlmCisjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKKyAgICBpZiAo
bWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9UZXN0QXN5bmNNZXNzYWdl
V2l0aE5vQXJndW1lbnRzKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAobWVzc2FnZU5h
bWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9UZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJn
dW1lbnRzUmVwbHkpCisgICAgICAgIHJldHVybiB0cnVlOworI2VuZGlmCisjaWYgRU5BQkxFKFRF
U1RfRkVBVFVSRSkKKyAgICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6V2Vi
UGFnZV9UZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1lbnRzKQorICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFn
ZV9UZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1lbnRzUmVwbHkpCisgICAgICAgIHJl
dHVybiB0cnVlOworI2VuZGlmCisgICAgaWYgKG1lc3NhZ2VOYW1lID09IElQQzo6TWVzc2FnZU5h
bWU6OldlYlBhZ2VfVGVzdFN5bmNNZXNzYWdlKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBp
ZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9UZXN0U3luY2hyb25v
dXNNZXNzYWdlKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAobWVzc2FnZU5hbWUgPT0g
SVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9Mb2FkVVJMKQorICAgICAgICByZXR1cm4gdHJ1ZTsK
KyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgIGlmIChtZXNzYWdlTmFtZSA9PSBJUEM6Ok1l
c3NhZ2VOYW1lOjpXZWJQYWdlX0xvYWRTb21ldGhpbmcpCisgICAgICAgIHJldHVybiB0cnVlOwor
I2VuZGlmCisjaWYgKEVOQUJMRShUT1VDSF9FVkVOVFMpICYmIChORVNURURfTUVTU0FHRV9DT05E
SVRJT04gfHwgU09NRV9PVEhFUl9NRVNTQUdFX0NPTkRJVElPTikpCisgICAgaWYgKG1lc3NhZ2VO
YW1lID09IElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfVG91Y2hFdmVudCkKKyAgICAgICAgcmV0
dXJuIHRydWU7CisjZW5kaWYKKyNpZiAoRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgKE5FU1RFRF9N
RVNTQUdFX0NPTkRJVElPTiAmJiBTT01FX09USEVSX01FU1NBR0VfQ09ORElUSU9OKSkKKyAgICBp
ZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9BZGRFdmVudCkKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisjZW5kaWYKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAg
IGlmIChtZXNzYWdlTmFtZSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX0xvYWRTb21ldGhp
bmdFbHNlKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyNlbmRpZgorICAgIGlmIChtZXNzYWdlTmFt
ZSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX0RpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbikK
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKG1lc3NhZ2VOYW1lID09IElQQzo6TWVzc2Fn
ZU5hbWU6OldlYlBhZ2VfQ2xvc2UpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmIChtZXNz
YWdlTmFtZSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX1ByZWZlcmVuY2VzRGlkQ2hhbmdl
KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNz
YWdlTmFtZTo6V2ViUGFnZV9TZW5kRG91YmxlQW5kRmxvYXQpCisgICAgICAgIHJldHVybiB0cnVl
OworICAgIGlmIChtZXNzYWdlTmFtZSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX1NlbmRJ
bnRzKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpN
ZXNzYWdlTmFtZTo6V2ViUGFnZV9DcmVhdGVQbHVnaW4pCisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIGlmIChtZXNzYWdlTmFtZSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX1J1bkphdmFT
Y3JpcHRBbGVydCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKG1lc3NhZ2VOYW1lID09
IElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfR2V0UGx1Z2lucykKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgaWYgKG1lc3NhZ2VOYW1lID09IElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfR2V0
UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24pCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmICht
ZXNzYWdlTmFtZSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX1Rlc3RNdWx0aXBsZUF0dHJp
YnV0ZXMpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmIChtZXNzYWdlTmFtZSA9PSBJUEM6
Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX1Rlc3RQYXJhbWV0ZXJBdHRyaWJ1dGVzKQorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6V2Vi
UGFnZV9UZW1wbGF0ZVRlc3QpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmIChtZXNzYWdl
TmFtZSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX1NldFZpZGVvTGF5ZXJJRCkKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisjaWYgUExBVEZPUk0oTUFDKQorICAgIGlmIChtZXNzYWdlTmFtZSA9
PSBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX0RpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9u
KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyNlbmRpZgorI2lmIFBMQVRGT1JNKE1BQykKKyAgICBp
ZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9JbnRlcnByZXRLZXlF
dmVudCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisjZW5kaWYKKyNpZiBFTkFCTEUoREVQUkVDQVRF
RF9GRUFUVVJFKQorICAgIGlmIChtZXNzYWdlTmFtZSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQ
YWdlX0RlcHJlY2F0ZWRPcGVyYXRpb24pCisgICAgICAgIHJldHVybiB0cnVlOworI2VuZGlmCisj
aWYgRU5BQkxFKEVYUEVSSU1FTlRBTF9GRUFUVVJFKQorICAgIGlmIChtZXNzYWdlTmFtZSA9PSBJ
UEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX0V4cGVyaW1lbnRhbE9wZXJhdGlvbikKKyAgICAgICAg
cmV0dXJuIHRydWU7CisjZW5kaWYKKyAgICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdl
TmFtZTo6V3JhcHBlZEFzeW5jTWVzc2FnZUZvclRlc3RpbmcpCisgICAgICAgIHJldHVybiB0cnVl
OworICAgIGlmIChtZXNzYWdlTmFtZSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpTeW5jTWVzc2FnZVJl
cGx5KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpN
ZXNzYWdlTmFtZTo6SW5pdGlhbGl6ZUNvbm5lY3Rpb24pCisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIGlmIChtZXNzYWdlTmFtZSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpMZWdhY3lTZXNzaW9uU3Rh
dGUpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBmYWxzZTsKK307CisKK30gLy8g
bmFtZXNwYWNlIElQQwpJbmRleDogU291cmNlL1dlYktpdC9TY3JpcHRzL01lc3NhZ2VOYW1lcy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy9NZXNzYWdlTmFtZXMuaAkobm9u
ZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvTWVzc2FnZU5hbWVzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwxMTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisg
KiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2luY2x1ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+CisKK25hbWVzcGFjZSBJUEMgeworCitl
bnVtIGNsYXNzIFJlY2VpdmVyTmFtZSA6IHVpbnQ4X3QgeworICAgIFdlYlBhZ2UgPSAxCisgICAg
LCBXZWJQYWdlID0gMgorICAgICwgTm9uZSA9IDMKKyAgICAsIElQQyA9IDQKKyAgICAsIEFzeW5j
UmVwbHkgPSA1CisgICAgLCBJbnZhbGlkID0gNgorfTsKKworZW51bSBjbGFzcyBNZXNzYWdlTmFt
ZSA6IHVpbnQxNl90IHsKKyAgICBXZWJQYWdlX0xvYWRVUkwgPSAxCisjaWYgRU5BQkxFKFRFU1Rf
RkVBVFVSRSkKKyAgICAsIFdlYlBhZ2VfVGVzdEFzeW5jTWVzc2FnZSA9IDIKKyAgICAsIFdlYlBh
Z2VfVGVzdEFzeW5jTWVzc2FnZVJlcGx5ID0gMworI2VuZGlmCisjaWYgRU5BQkxFKFRFU1RfRkVB
VFVSRSkKKyAgICAsIFdlYlBhZ2VfVGVzdEFzeW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50cyA9IDQK
KyAgICAsIFdlYlBhZ2VfVGVzdEFzeW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50c1JlcGx5ID0gNQor
I2VuZGlmCisjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKKyAgICAsIFdlYlBhZ2VfVGVzdEFzeW5j
TWVzc2FnZVdpdGhNdWx0aXBsZUFyZ3VtZW50cyA9IDYKKyAgICAsIFdlYlBhZ2VfVGVzdEFzeW5j
TWVzc2FnZVdpdGhNdWx0aXBsZUFyZ3VtZW50c1JlcGx5ID0gNworI2VuZGlmCisgICAgLCBXZWJQ
YWdlX1Rlc3RTeW5jTWVzc2FnZSA9IDgKKyAgICAsIFdlYlBhZ2VfVGVzdFN5bmNocm9ub3VzTWVz
c2FnZSA9IDkKKyAgICAsIFdlYlBhZ2VfTG9hZFVSTCA9IDEwCisjaWYgRU5BQkxFKFRPVUNIX0VW
RU5UUykKKyAgICAsIFdlYlBhZ2VfTG9hZFNvbWV0aGluZyA9IDExCisjZW5kaWYKKyNpZiAoRU5B
QkxFKFRPVUNIX0VWRU5UUykgJiYgKE5FU1RFRF9NRVNTQUdFX0NPTkRJVElPTiB8fCBTT01FX09U
SEVSX01FU1NBR0VfQ09ORElUSU9OKSkKKyAgICAsIFdlYlBhZ2VfVG91Y2hFdmVudCA9IDEyCisj
ZW5kaWYKKyNpZiAoRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgKE5FU1RFRF9NRVNTQUdFX0NPTkRJ
VElPTiAmJiBTT01FX09USEVSX01FU1NBR0VfQ09ORElUSU9OKSkKKyAgICAsIFdlYlBhZ2VfQWRk
RXZlbnQgPSAxMworI2VuZGlmCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAgICAsIFdlYlBh
Z2VfTG9hZFNvbWV0aGluZ0Vsc2UgPSAxNAorI2VuZGlmCisgICAgLCBXZWJQYWdlX0RpZFJlY2Vp
dmVQb2xpY3lEZWNpc2lvbiA9IDE1CisgICAgLCBXZWJQYWdlX0Nsb3NlID0gMTYKKyAgICAsIFdl
YlBhZ2VfUHJlZmVyZW5jZXNEaWRDaGFuZ2UgPSAxNworICAgICwgV2ViUGFnZV9TZW5kRG91Ymxl
QW5kRmxvYXQgPSAxOAorICAgICwgV2ViUGFnZV9TZW5kSW50cyA9IDE5CisgICAgLCBXZWJQYWdl
X0NyZWF0ZVBsdWdpbiA9IDIwCisgICAgLCBXZWJQYWdlX1J1bkphdmFTY3JpcHRBbGVydCA9IDIx
CisgICAgLCBXZWJQYWdlX0dldFBsdWdpbnMgPSAyMgorICAgICwgV2ViUGFnZV9HZXRQbHVnaW5Q
cm9jZXNzQ29ubmVjdGlvbiA9IDIzCisgICAgLCBXZWJQYWdlX1Rlc3RNdWx0aXBsZUF0dHJpYnV0
ZXMgPSAyNAorICAgICwgV2ViUGFnZV9UZXN0UGFyYW1ldGVyQXR0cmlidXRlcyA9IDI1CisgICAg
LCBXZWJQYWdlX1RlbXBsYXRlVGVzdCA9IDI2CisgICAgLCBXZWJQYWdlX1NldFZpZGVvTGF5ZXJJ
RCA9IDI3CisjaWYgUExBVEZPUk0oTUFDKQorICAgICwgV2ViUGFnZV9EaWRDcmVhdGVXZWJQcm9j
ZXNzQ29ubmVjdGlvbiA9IDI4CisjZW5kaWYKKyNpZiBQTEFURk9STShNQUMpCisgICAgLCBXZWJQ
YWdlX0ludGVycHJldEtleUV2ZW50ID0gMjkKKyNlbmRpZgorI2lmIEVOQUJMRShERVBSRUNBVEVE
X0ZFQVRVUkUpCisgICAgLCBXZWJQYWdlX0RlcHJlY2F0ZWRPcGVyYXRpb24gPSAzMAorI2VuZGlm
CisjaWYgRU5BQkxFKEVYUEVSSU1FTlRBTF9GRUFUVVJFKQorICAgICwgV2ViUGFnZV9FeHBlcmlt
ZW50YWxPcGVyYXRpb24gPSAzMQorI2VuZGlmCisgICAgLCBXcmFwcGVkQXN5bmNNZXNzYWdlRm9y
VGVzdGluZyA9IDMyCisgICAgLCBTeW5jTWVzc2FnZVJlcGx5ID0gMzMKKyAgICAsIEluaXRpYWxp
emVDb25uZWN0aW9uID0gMzQKKyAgICAsIExlZ2FjeVNlc3Npb25TdGF0ZSA9IDM1Cit9OworCitS
ZWNlaXZlck5hbWUgcmVjZWl2ZXJOYW1lKE1lc3NhZ2VOYW1lKTsKK2NvbnN0IGNoYXIqIGRlc2Ny
aXB0aW9uKE1lc3NhZ2VOYW1lKTsKK2Jvb2wgaXNWYWxpZE1lc3NhZ2VOYW1lKE1lc3NhZ2VOYW1l
KTsKKworfSAvLyBuYW1lc3BhY2UgSVBDCisKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTw+
CitjbGFzcyBIYXNDdXN0b21Jc1ZhbGlkRW51bTxJUEM6Ok1lc3NhZ2VOYW1lPiA6IHB1YmxpYyBz
dGQ6OnRydWVfdHlwZSB7IH07Cit0ZW1wbGF0ZTx0eXBlbmFtZSBFLCB0eXBlbmFtZSBULCB0eXBl
bmFtZSA9IHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19zYW1lPEUsIElQQzo6TWVzc2FnZU5hbWU+
Ojp2YWx1ZT4+Citib29sIGlzVmFsaWRFbnVtKFQgbWVzc2FnZU5hbWUpCit7CisgICAgc3RhdGlj
X2Fzc2VydChzaXplb2YoVCkgPT0gc2l6ZW9mKElQQzo6TWVzc2FnZU5hbWUpLCAiaXNWYWxpZEVu
dW08TWVzc2FnZU5hbWU+IHNob3VsZCBvbmx5IGJlIGNhbGxlZCB3aXRoIDE2LWJpdCB0eXBlcyIp
OworICAgIHJldHVybiBJUEM6OmlzVmFsaWRNZXNzYWdlTmFtZShzdGF0aWNfY2FzdDxJUEM6Ok1l
c3NhZ2VOYW1lPihtZXNzYWdlTmFtZSkpOworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCkluZGV4
OiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvZ2VuZXJhdGUtbWVzc2FnZS1yZWNlaXZlci5weQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvZ2VuZXJhdGUtbWVzc2FnZS1yZWNlaXZl
ci5weQkocmV2aXNpb24gMjYxMDMzKQorKysgU291cmNlL1dlYktpdC9TY3JpcHRzL2dlbmVyYXRl
LW1lc3NhZ2UtcmVjZWl2ZXIucHkJKHdvcmtpbmcgY29weSkKQEAgLTIzLDMzICsyMyw0OCBAQAog
IyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogCiBmcm9tIF9fZnV0dXJlX18gaW1wb3J0IHdpdGhfc3RhdGVtZW50Ci1p
bXBvcnQgYXJncGFyc2UKIGltcG9ydCBzeXMKIAogaW1wb3J0IHdlYmtpdC5tZXNzYWdlcwogaW1w
b3J0IHdlYmtpdC5wYXJzZXIKIAogCi1kZWYgbWFpbihhcmd2PU5vbmUpOgotICAgIHBhcnNlciA9
IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKCkKLSAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCdzb3Vy
Y2UnKQotICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0taW1wbGVtZW50YXRpb24nLCByZXF1aXJl
ZD1UcnVlKQotICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0taGVhZGVyJywgcmVxdWlyZWQ9VHJ1
ZSkKLSAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLXJlcGx5LWhlYWRlcicsIHJlcXVpcmVkPVRy
dWUpCi0KLSAgICBhcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQotCi0gICAgd2l0aCBvcGVuKGFy
Z3Muc291cmNlKSBhcyBzb3VyY2VfZmlsZToKLSAgICAgICAgcmVjZWl2ZXIgPSB3ZWJraXQucGFy
c2VyLnBhcnNlKHNvdXJjZV9maWxlKQorZGVmIG1haW4oYXJndik6CisgICAgcmVjZWl2ZXJzID0g
W10KIAotICAgIHdpdGggb3BlbihhcmdzLmltcGxlbWVudGF0aW9uLCAidysiKSBhcyBpbXBsZW1l
bnRhdGlvbl9vdXRwdXQ6Ci0gICAgICAgIGltcGxlbWVudGF0aW9uX291dHB1dC53cml0ZSh3ZWJr
aXQubWVzc2FnZXMuZ2VuZXJhdGVfbWVzc2FnZV9oYW5kbGVyKHJlY2VpdmVyKSkKKyAgICBmaXJz
dF9hcmcgPSBUcnVlCisgICAgc2Vjb25kX2FyZyA9IEZhbHNlCisgICAgZm9yIHBhcmFtZXRlciBp
biBhcmd2OgorICAgICAgICBpZiBmaXJzdF9hcmc6CisgICAgICAgICAgICBmaXJzdF9hcmcgPSBG
YWxzZQorICAgICAgICAgICAgc2Vjb25kX2FyZyA9IFRydWUKKyAgICAgICAgICAgIGNvbnRpbnVl
CisgICAgICAgIGlmIHNlY29uZF9hcmc6CisgICAgICAgICAgICBiYXNlX2RpciA9IHBhcmFtZXRl
cgorICAgICAgICAgICAgc2Vjb25kX2FyZyA9IEZhbHNlCisgICAgICAgICAgICBjb250aW51ZQor
CisgICAgICAgIHJlY2VpdmVyX25hbWUgPSBwYXJhbWV0ZXIucnNwbGl0KCcvJywgMSkucG9wKCkK
KyAgICAgICAgcHJpbnQgJ0dlbmVyYXRpbmcgbWVzc2FnZSByZWNlaXZlciBmb3IgJXMnICUgcmVj
ZWl2ZXJfbmFtZQorCisgICAgICAgIHdpdGggb3BlbignJXMvJXMubWVzc2FnZXMuaW4nICUgKGJh
c2VfZGlyLCBwYXJhbWV0ZXIpKSBhcyBzb3VyY2VfZmlsZToKKyAgICAgICAgICAgIHJlY2VpdmVy
ID0gd2Via2l0LnBhcnNlci5wYXJzZShzb3VyY2VfZmlsZSkKKyAgICAgICAgcmVjZWl2ZXJzLmFw
cGVuZChyZWNlaXZlcikKKworICAgICAgICB3aXRoIG9wZW4oJyVzTWVzc2FnZVJlY2VpdmVyLmNw
cCcgJSByZWNlaXZlcl9uYW1lLCAidysiKSBhcyBpbXBsZW1lbnRhdGlvbl9vdXRwdXQ6CisgICAg
ICAgICAgICBpbXBsZW1lbnRhdGlvbl9vdXRwdXQud3JpdGUod2Via2l0Lm1lc3NhZ2VzLmdlbmVy
YXRlX21lc3NhZ2VfaGFuZGxlcihyZWNlaXZlcikpCisKKyAgICAgICAgd2l0aCBvcGVuKCclc01l
c3NhZ2VzLmgnICUgcmVjZWl2ZXJfbmFtZSwgIncrIikgYXMgaGVhZGVyX291dHB1dDoKKyAgICAg
ICAgICAgIGhlYWRlcl9vdXRwdXQud3JpdGUod2Via2l0Lm1lc3NhZ2VzLmdlbmVyYXRlX21lc3Nh
Z2VzX2hlYWRlcihyZWNlaXZlcikpCiAKLSAgICB3aXRoIG9wZW4oYXJncy5oZWFkZXIsICJ3KyIp
IGFzIGhlYWRlcl9vdXRwdXQ6Ci0gICAgICAgIGhlYWRlcl9vdXRwdXQud3JpdGUod2Via2l0Lm1l
c3NhZ2VzLmdlbmVyYXRlX21lc3NhZ2VzX2hlYWRlcihyZWNlaXZlcikpCisgICAgICAgIHdpdGgg
b3BlbignJXNNZXNzYWdlc1JlcGxpZXMuaCcgJSByZWNlaXZlcl9uYW1lLCAidysiKSBhcyByZXBs
eV9oZWFkZXJfb3V0cHV0OgorICAgICAgICAgICAgcmVwbHlfaGVhZGVyX291dHB1dC53cml0ZSh3
ZWJraXQubWVzc2FnZXMuZ2VuZXJhdGVfbWVzc2FnZXNfcmVwbHlfaGVhZGVyKHJlY2VpdmVyKSkK
IAotICAgIHdpdGggb3BlbihhcmdzLnJlcGx5X2hlYWRlciwgIncrIikgYXMgcmVwbHlfaGVhZGVy
X291dHB1dDoKLSAgICAgICAgcmVwbHlfaGVhZGVyX291dHB1dC53cml0ZSh3ZWJraXQubWVzc2Fn
ZXMuZ2VuZXJhdGVfbWVzc2FnZXNfcmVwbHlfaGVhZGVyKHJlY2VpdmVyKSkKKyAgICB3aXRoIG9w
ZW4oJ01lc3NhZ2VOYW1lcy5oJywgIncrIikgYXMgbWVzc2FnZV9uYW1lc19oZWFkZXJfb3V0cHV0
OgorICAgICAgICBtZXNzYWdlX25hbWVzX2hlYWRlcl9vdXRwdXQud3JpdGUod2Via2l0Lm1lc3Nh
Z2VzLmdlbmVyYXRlX21lc3NhZ2VfbmFtZXNfaGVhZGVyKHJlY2VpdmVycykpCisKKyAgICB3aXRo
IG9wZW4oJ01lc3NhZ2VOYW1lcy5jcHAnLCAidysiKSBhcyBtZXNzYWdlX25hbWVzX2ltcGxlbWVu
dGF0aW9uX291dHB1dDoKKyAgICAgICAgbWVzc2FnZV9uYW1lc19pbXBsZW1lbnRhdGlvbl9vdXRw
dXQud3JpdGUod2Via2l0Lm1lc3NhZ2VzLmdlbmVyYXRlX21lc3NhZ2VfbmFtZXNfaW1wbGVtZW50
YXRpb24ocmVjZWl2ZXJzKSkKIAogICAgIHJldHVybiAwCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
U2NyaXB0cy90ZXN0LWxlZ2FjeU1lc3NhZ2VSZWNlaXZlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9TY3JpcHRzL3Rlc3QtbGVnYWN5TWVzc2FnZVJlY2VpdmVyLmNwcAkobm9uZXhp
c3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvdGVzdC1sZWdhY3lNZXNzYWdlUmVjZWl2
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjAzIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEwLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisg
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorICogQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAor
ICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisgKiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLAorICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgKEVOQUJMRShXRUJLSVQyKSAmJiAoTkVTVEVE
X01BU1RFUl9DT05ESVRJT04gfHwgTUFTVEVSX09SICYmIE1BU1RFUl9BTkQpKQorCisjaW5jbHVk
ZSAiV2ViUGFnZS5oIgorCisjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJD
b25uZWN0aW9uLmgiCisjaW5jbHVkZSAiRGVjb2Rlci5oIgorI2lmIEVOQUJMRShERVBSRUNBVEVE
X0ZFQVRVUkUpIHx8IEVOQUJMRShFWFBFUklNRU5UQUxfRkVBVFVSRSkKKyNpbmNsdWRlICJEdW1t
eVR5cGUuaCIKKyNlbmRpZgorI2luY2x1ZGUgIkhhbmRsZU1lc3NhZ2UuaCIKKyNpZiBQTEFURk9S
TShNQUMpCisjaW5jbHVkZSAiTWFjaFBvcnQuaCIKKyNlbmRpZgorI2luY2x1ZGUgIlBsdWdpbi5o
IgorI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgorI2lmIChFTkFCTEUoVE9VQ0hf
RVZFTlRTKSAmJiAoTkVTVEVEX01FU1NBR0VfQ09ORElUSU9OICYmIFNPTUVfT1RIRVJfTUVTU0FH
RV9DT05ESVRJT04pKSB8fCAoRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgKE5FU1RFRF9NRVNTQUdF
X0NPTkRJVElPTiB8fCBTT01FX09USEVSX01FU1NBR0VfQ09ORElUSU9OKSkKKyNpbmNsdWRlICJX
ZWJFdmVudC5oIgorI2VuZGlmCisjaW5jbHVkZSAiV2ViUGFnZU1lc3NhZ2VzLmgiCisjaW5jbHVk
ZSAiV2ViUHJlZmVyZW5jZXNTdG9yZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NMYXll
ci5oPgorI2lmIFBMQVRGT1JNKE1BQykKKyNpbmNsdWRlIDxXZWJDb3JlL0tleWJvYXJkRXZlbnQu
aD4KKyNlbmRpZgorI2luY2x1ZGUgPFdlYkNvcmUvUGx1Z2luRGF0YS5oPgorI2luY2x1ZGUgPHV0
aWxpdHk+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBNZXNzYWdlcyB7
CisKK25hbWVzcGFjZSBXZWJQYWdlIHsKKwordm9pZCBHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlv
bjo6c2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYmIGVuY29kZXIsIElQQzo6Q29u
bmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgSVBDOjpDb25uZWN0aW9uOjpIYW5kbGUmIGNvbm5l
Y3Rpb25IYW5kbGUpCit7CisgICAgKmVuY29kZXIgPDwgY29ubmVjdGlvbkhhbmRsZTsKKyAgICBj
b25uZWN0aW9uLnNlbmRTeW5jUmVwbHkoV1RGTW92ZShlbmNvZGVyKSk7Cit9CisKK3ZvaWQgVGVz
dE11bHRpcGxlQXR0cmlidXRlczo6c2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYm
IGVuY29kZXIsIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKK3sKKyAgICBjb25uZWN0aW9u
LnNlbmRTeW5jUmVwbHkoV1RGTW92ZShlbmNvZGVyKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YlBhZ2UKKworfSAvLyBuYW1lc3BhY2UgTWVzc2FnZXMKKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K3ZvaWQgV2ViUGFnZTo6ZGlkUmVjZWl2ZVdlYlBhZ2VNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYg
Y29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIGF1dG8gcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpOworICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0g
TWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRVUkw6Om5hbWUoKSkgeworICAgICAgICBJUEM6OmhhbmRs
ZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRVUkw+KGRlY29kZXIsIHRoaXMsICZXZWJQ
YWdlOjpsb2FkVVJMKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNpZiBFTkFCTEUoVE9VQ0hf
RVZFTlRTKQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBh
Z2U6OkxvYWRTb21ldGhpbmc6Om5hbWUoKSkgeworICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8
TWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRTb21ldGhpbmc+KGRlY29kZXIsIHRoaXMsICZXZWJQYWdl
Ojpsb2FkU29tZXRoaW5nKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorI2lmIChF
TkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiAoTkVTVEVEX01FU1NBR0VfQ09ORElUSU9OIHx8IFNPTUVf
T1RIRVJfTUVTU0FHRV9DT05ESVRJT04pKQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkg
PT0gTWVzc2FnZXM6OldlYlBhZ2U6OlRvdWNoRXZlbnQ6Om5hbWUoKSkgeworICAgICAgICBJUEM6
OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OlRvdWNoRXZlbnQ+KGRlY29kZXIsIHRo
aXMsICZXZWJQYWdlOjp0b3VjaEV2ZW50KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRp
ZgorI2lmIChFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiAoTkVTVEVEX01FU1NBR0VfQ09ORElUSU9O
ICYmIFNPTUVfT1RIRVJfTUVTU0FHRV9DT05ESVRJT04pKQorICAgIGlmIChkZWNvZGVyLm1lc3Nh
Z2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OkFkZEV2ZW50OjpuYW1lKCkpIHsKKyAgICAg
ICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpBZGRFdmVudD4oZGVjb2Rl
ciwgdGhpcywgJldlYlBhZ2U6OmFkZEV2ZW50KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNl
bmRpZgorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5h
bWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFNvbWV0aGluZ0Vsc2U6Om5hbWUoKSkgewor
ICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRTb21ldGhp
bmdFbHNlPihkZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6bG9hZFNvbWV0aGluZ0Vsc2UpOworICAg
ICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUo
KSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uOjpuYW1lKCkp
IHsKKyAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZWNl
aXZlUG9saWN5RGVjaXNpb24+KGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjpkaWRSZWNlaXZlUG9s
aWN5RGVjaXNpb24pOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChkZWNvZGVyLm1l
c3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OkNsb3NlOjpuYW1lKCkpIHsKKyAgICAg
ICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpDbG9zZT4oZGVjb2Rlciwg
dGhpcywgJldlYlBhZ2U6OmNsb3NlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAo
ZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpQcmVmZXJlbmNlc0Rp
ZENoYW5nZTo6bmFtZSgpKSB7CisgICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6
V2ViUGFnZTo6UHJlZmVyZW5jZXNEaWRDaGFuZ2U+KGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjpw
cmVmZXJlbmNlc0RpZENoYW5nZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKGRl
Y29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6U2VuZERvdWJsZUFuZEZs
b2F0OjpuYW1lKCkpIHsKKyAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQ
YWdlOjpTZW5kRG91YmxlQW5kRmxvYXQ+KGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjpzZW5kRG91
YmxlQW5kRmxvYXQpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChkZWNvZGVyLm1l
c3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OlNlbmRJbnRzOjpuYW1lKCkpIHsKKyAg
ICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpTZW5kSW50cz4oZGVj
b2RlciwgdGhpcywgJldlYlBhZ2U6OnNlbmRJbnRzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0
UGFyYW1ldGVyQXR0cmlidXRlczo6bmFtZSgpKSB7CisgICAgICAgIElQQzo6aGFuZGxlTWVzc2Fn
ZTxNZXNzYWdlczo6V2ViUGFnZTo6VGVzdFBhcmFtZXRlckF0dHJpYnV0ZXM+KGRlY29kZXIsIHRo
aXMsICZXZWJQYWdlOjp0ZXN0UGFyYW1ldGVyQXR0cmlidXRlcyk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFn
ZTo6VGVtcGxhdGVUZXN0OjpuYW1lKCkpIHsKKyAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1l
c3NhZ2VzOjpXZWJQYWdlOjpUZW1wbGF0ZVRlc3Q+KGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjp0
ZW1wbGF0ZVRlc3QpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChkZWNvZGVyLm1l
c3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OlNldFZpZGVvTGF5ZXJJRDo6bmFtZSgp
KSB7CisgICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6U2V0Vmlk
ZW9MYXllcklEPihkZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6c2V0VmlkZW9MYXllcklEKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyNpZiBQTEFURk9STShNQUMpCisgICAgaWYgKGRlY29kZXIu
bWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6RGlkQ3JlYXRlV2ViUHJvY2Vzc0Nv
bm5lY3Rpb246Om5hbWUoKSkgeworICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6
OldlYlBhZ2U6OkRpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uPihkZWNvZGVyLCB0aGlzLCAm
V2ViUGFnZTo6ZGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24pOworICAgICAgICByZXR1cm47
CisgICAgfQorI2VuZGlmCisjaWYgRU5BQkxFKERFUFJFQ0FURURfRkVBVFVSRSkKKyAgICBpZiAo
ZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpEZXByZWNhdGVkT3Bl
cmF0aW9uOjpuYW1lKCkpIHsKKyAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpX
ZWJQYWdlOjpEZXByZWNhdGVkT3BlcmF0aW9uPihkZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6ZGVw
cmVjYXRlZE9wZXJhdGlvbik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKyNpZiBF
TkFCTEUoRVhQRVJJTUVOVEFMX0ZFQVRVUkUpCisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUo
KSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6RXhwZXJpbWVudGFsT3BlcmF0aW9uOjpuYW1lKCkpIHsK
KyAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpFeHBlcmltZW50
YWxPcGVyYXRpb24+KGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjpleHBlcmltZW50YWxPcGVyYXRp
b24pOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisgICAgVU5VU0VEX1BBUkFNKGNv
bm5lY3Rpb24pOworICAgIFVOVVNFRF9QQVJBTShkZWNvZGVyKTsKKyAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKK30KKwordm9pZCBXZWJQYWdlOjpkaWRSZWNlaXZlU3luY1dlYlBhZ2VNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBzdGQ6
OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYgcmVwbHlFbmNvZGVyKQoreworICAgIGF1dG8gcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpOworICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1l
KCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OkNyZWF0ZVBsdWdpbjo6bmFtZSgpKSB7CisgICAgICAg
IElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6Q3JlYXRlUGx1Z2luPihkZWNv
ZGVyLCAqcmVwbHlFbmNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6Y3JlYXRlUGx1Z2luKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3Nh
Z2VzOjpXZWJQYWdlOjpSdW5KYXZhU2NyaXB0QWxlcnQ6Om5hbWUoKSkgeworICAgICAgICBJUEM6
OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OlJ1bkphdmFTY3JpcHRBbGVydD4oZGVj
b2RlciwgKnJlcGx5RW5jb2RlciwgdGhpcywgJldlYlBhZ2U6OnJ1bkphdmFTY3JpcHRBbGVydCk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9
PSBNZXNzYWdlczo6V2ViUGFnZTo6R2V0UGx1Z2luczo6bmFtZSgpKSB7CisgICAgICAgIElQQzo6
aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6R2V0UGx1Z2lucz4oZGVjb2RlciwgKnJl
cGx5RW5jb2RlciwgdGhpcywgJldlYlBhZ2U6OmdldFBsdWdpbnMpOworICAgICAgICByZXR1cm47
CisgICAgfQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBh
Z2U6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpuYW1lKCkpIHsKKyAgICAgICAgSVBDOjpo
YW5kbGVNZXNzYWdlU3luY2hyb25vdXM8TWVzc2FnZXM6OldlYlBhZ2U6OkdldFBsdWdpblByb2Nl
c3NDb25uZWN0aW9uPihjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIsIHRoaXMsICZX
ZWJQYWdlOjpnZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbik7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6
VGVzdE11bHRpcGxlQXR0cmlidXRlczo6bmFtZSgpKSB7CisgICAgICAgIElQQzo6aGFuZGxlTWVz
c2FnZVN5bmNocm9ub3VzV2FudHNDb25uZWN0aW9uPE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0TXVs
dGlwbGVBdHRyaWJ1dGVzPihjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIsIHRoaXMs
ICZXZWJQYWdlOjp0ZXN0TXVsdGlwbGVBdHRyaWJ1dGVzKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKyNpZiBQTEFURk9STShNQUMpCisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBN
ZXNzYWdlczo6V2ViUGFnZTo6SW50ZXJwcmV0S2V5RXZlbnQ6Om5hbWUoKSkgeworICAgICAgICBJ
UEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OkludGVycHJldEtleUV2ZW50Pihk
ZWNvZGVyLCAqcmVwbHlFbmNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6aW50ZXJwcmV0S2V5RXZlbnQp
OworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisgICAgVU5VU0VEX1BBUkFNKGNvbm5l
Y3Rpb24pOworICAgIFVOVVNFRF9QQVJBTShkZWNvZGVyKTsKKyAgICBVTlVTRURfUEFSQU0ocmVw
bHlFbmNvZGVyKTsKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CisKKworI2VuZGlmIC8vIChFTkFCTEUoV0VCS0lUMikgJiYgKE5FU1RFRF9NQVNU
RVJfQ09ORElUSU9OIHx8IE1BU1RFUl9PUiAmJiBNQVNURVJfQU5EKSkKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvU2NyaXB0cy90ZXN0LWxlZ2FjeU1lc3NhZ2VzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9TY3JpcHRzL3Rlc3QtbGVnYWN5TWVzc2FnZXMuaAkobm9uZXhpc3RlbnQpCisrKyBT
b3VyY2UvV2ViS2l0L1NjcmlwdHMvdGVzdC1sZWdhY3lNZXNzYWdlcy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsNTQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUgorICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IK
KyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSCisgKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorICogT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
ZiAoRU5BQkxFKFdFQktJVDIpICYmIChORVNURURfTUFTVEVSX0NPTkRJVElPTiB8fCBNQVNURVJf
T1IgJiYgTUFTVEVSX0FORCkpCisKKyNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgorI2luY2x1
ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJNZXNzYWdlTmFtZXMuaCIKKyNpbmNsdWRlICJQ
bHVnaW4uaCIKKyNpbmNsdWRlICJXZWJQYWdlTWVzc2FnZXNSZXBsaWVzLmgiCisjaW5jbHVkZSA8
V2ViQ29yZS9HcmFwaGljc0xheWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9LZXlib2FyZEV2ZW50
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QbHVnaW5EYXRhLmg+CisjaW5jbHVkZSA8dXRpbGl0eT4K
KyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5j
bHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgSVBDIHsKK2Ns
YXNzIER1bW15VHlwZTsKK2NsYXNzIE1hY2hQb3J0OworfQorCituYW1lc3BhY2UgV2ViS2l0IHsK
K2NsYXNzIFdlYlByZWZlcmVuY2VzU3RvcmU7CitjbGFzcyBXZWJUb3VjaEV2ZW50OworfQorCitu
YW1lc3BhY2UgTWVzc2FnZXMgeworbmFtZXNwYWNlIFdlYlBhZ2UgeworCitzdGF0aWMgaW5saW5l
IElQQzo6UmVjZWl2ZXJOYW1lIG1lc3NhZ2VSZWNlaXZlck5hbWUoKQoreworICAgIHJldHVybiBJ
UEM6OlJlY2VpdmVyTmFtZTo6V2ViUGFnZTsKK30KKworY2xhc3MgTG9hZFVSTCB7CitwdWJsaWM6
CisgICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGNvbnN0IFN0cmluZyY+IEFyZ3VtZW50czsKKworICAg
IHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1l
OjpXZWJQYWdlX0xvYWRVUkw7IH0KKyAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxz
ZTsKKworICAgIGV4cGxpY2l0IExvYWRVUkwoY29uc3QgU3RyaW5nJiB1cmwpCisgICAgICAgIDog
bV9hcmd1bWVudHModXJsKQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdCBBcmd1bWVudHMmIGFy
Z3VtZW50cygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7CisgICAg
fQorCitwcml2YXRlOgorICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKK307CisKKyNpZiBFTkFC
TEUoVE9VQ0hfRVZFTlRTKQorY2xhc3MgTG9hZFNvbWV0aGluZyB7CitwdWJsaWM6CisgICAgdHlw
ZWRlZiBzdGQ6OnR1cGxlPGNvbnN0IFN0cmluZyY+IEFyZ3VtZW50czsKKworICAgIHN0YXRpYyBJ
UEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdl
X0xvYWRTb21ldGhpbmc7IH0KKyAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsK
KworICAgIGV4cGxpY2l0IExvYWRTb21ldGhpbmcoY29uc3QgU3RyaW5nJiB1cmwpCisgICAgICAg
IDogbV9hcmd1bWVudHModXJsKQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdCBBcmd1bWVudHMm
IGFyZ3VtZW50cygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7Cisg
ICAgfQorCitwcml2YXRlOgorICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKK307CisjZW5kaWYK
KworI2lmIChFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiAoTkVTVEVEX01FU1NBR0VfQ09ORElUSU9O
IHx8IFNPTUVfT1RIRVJfTUVTU0FHRV9DT05ESVRJT04pKQorY2xhc3MgVG91Y2hFdmVudCB7Citw
dWJsaWM6CisgICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGNvbnN0IFdlYktpdDo6V2ViVG91Y2hFdmVu
dCY+IEFyZ3VtZW50czsKKworICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJl
dHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX1RvdWNoRXZlbnQ7IH0KKyAgICBzdGF0aWMg
Y29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKKworICAgIGV4cGxpY2l0IFRvdWNoRXZlbnQoY29u
c3QgV2ViS2l0OjpXZWJUb3VjaEV2ZW50JiBldmVudCkKKyAgICAgICAgOiBtX2FyZ3VtZW50cyhl
dmVudCkKKyAgICB7CisgICAgfQorCisgICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBj
b25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOworICAgIH0KKworcHJpdmF0
ZToKKyAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Cit9OworI2VuZGlmCisKKyNpZiAoRU5BQkxF
KFRPVUNIX0VWRU5UUykgJiYgKE5FU1RFRF9NRVNTQUdFX0NPTkRJVElPTiAmJiBTT01FX09USEVS
X01FU1NBR0VfQ09ORElUSU9OKSkKK2NsYXNzIEFkZEV2ZW50IHsKK3B1YmxpYzoKKyAgICB0eXBl
ZGVmIHN0ZDo6dHVwbGU8Y29uc3QgV2ViS2l0OjpXZWJUb3VjaEV2ZW50Jj4gQXJndW1lbnRzOwor
CisgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2Fn
ZU5hbWU6OldlYlBhZ2VfQWRkRXZlbnQ7IH0KKyAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMg
PSBmYWxzZTsKKworICAgIGV4cGxpY2l0IEFkZEV2ZW50KGNvbnN0IFdlYktpdDo6V2ViVG91Y2hF
dmVudCYgZXZlbnQpCisgICAgICAgIDogbV9hcmd1bWVudHMoZXZlbnQpCisgICAgeworICAgIH0K
KworICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKKyAgICB7CisgICAgICAg
IHJldHVybiBtX2FyZ3VtZW50czsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQXJndW1lbnRzIG1f
YXJndW1lbnRzOworfTsKKyNlbmRpZgorCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKK2NsYXNz
IExvYWRTb21ldGhpbmdFbHNlIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8Y29u
c3QgU3RyaW5nJj4gQXJndW1lbnRzOworCisgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFt
ZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfTG9hZFNvbWV0aGluZ0Vsc2U7
IH0KKyAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKKworICAgIGV4cGxpY2l0
IExvYWRTb21ldGhpbmdFbHNlKGNvbnN0IFN0cmluZyYgdXJsKQorICAgICAgICA6IG1fYXJndW1l
bnRzKHVybCkKKyAgICB7CisgICAgfQorCisgICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMo
KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOworICAgIH0KKworcHJp
dmF0ZToKKyAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Cit9OworI2VuZGlmCisKK2NsYXNzIERp
ZFJlY2VpdmVQb2xpY3lEZWNpc2lvbiB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBzdGQ6OnR1cGxl
PHVpbnQ2NF90LCB1aW50NjRfdCwgdWludDMyX3Q+IEFyZ3VtZW50czsKKworICAgIHN0YXRpYyBJ
UEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdl
X0RpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbjsgfQorICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3lu
YyA9IGZhbHNlOworCisgICAgRGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKHVpbnQ2NF90IGZyYW1l
SUQsIHVpbnQ2NF90IGxpc3RlbmVySUQsIHVpbnQzMl90IHBvbGljeUFjdGlvbikKKyAgICAgICAg
OiBtX2FyZ3VtZW50cyhmcmFtZUlELCBsaXN0ZW5lcklELCBwb2xpY3lBY3Rpb24pCisgICAgewor
ICAgIH0KKworICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKKyAgICB7Cisg
ICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQXJndW1l
bnRzIG1fYXJndW1lbnRzOworfTsKKworY2xhc3MgQ2xvc2UgeworcHVibGljOgorICAgIHR5cGVk
ZWYgc3RkOjp0dXBsZTw+IEFyZ3VtZW50czsKKworICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1l
IG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX0Nsb3NlOyB9CisgICAg
c3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7CisKKyAgICBjb25zdCBBcmd1bWVudHMm
IGFyZ3VtZW50cygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7Cisg
ICAgfQorCitwcml2YXRlOgorICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKK307CisKK2NsYXNz
IFByZWZlcmVuY2VzRGlkQ2hhbmdlIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8
Y29uc3QgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlJj4gQXJndW1lbnRzOworCisgICAgc3Rh
dGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6Oldl
YlBhZ2VfUHJlZmVyZW5jZXNEaWRDaGFuZ2U7IH0KKyAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5
bmMgPSBmYWxzZTsKKworICAgIGV4cGxpY2l0IFByZWZlcmVuY2VzRGlkQ2hhbmdlKGNvbnN0IFdl
YktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUpCisgICAgICAgIDogbV9hcmd1bWVudHMo
c3RvcmUpCisgICAgeworICAgIH0KKworICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkg
Y29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKKyAgICB9CisKK3ByaXZh
dGU6CisgICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOworfTsKKworY2xhc3MgU2VuZERvdWJsZUFu
ZEZsb2F0IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8ZG91YmxlLCBmbG9hdD4g
QXJndW1lbnRzOworCisgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJu
IElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfU2VuZERvdWJsZUFuZEZsb2F0OyB9CisgICAgc3Rh
dGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7CisKKyAgICBTZW5kRG91YmxlQW5kRmxvYXQo
ZG91YmxlIGQsIGZsb2F0IGYpCisgICAgICAgIDogbV9hcmd1bWVudHMoZCwgZikKKyAgICB7Cisg
ICAgfQorCisgICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAorICAgIHsKKyAg
ICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOworICAgIH0KKworcHJpdmF0ZToKKyAgICBBcmd1bWVu
dHMgbV9hcmd1bWVudHM7Cit9OworCitjbGFzcyBTZW5kSW50cyB7CitwdWJsaWM6CisgICAgdHlw
ZWRlZiBzdGQ6OnR1cGxlPGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mLCBjb25zdCBWZWN0b3I8VmVj
dG9yPHVpbnQ2NF90Pj4mPiBBcmd1bWVudHM7CisKKyAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFt
ZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9TZW5kSW50czsgfQor
ICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOworCisgICAgU2VuZEludHMoY29u
c3QgVmVjdG9yPHVpbnQ2NF90PiYgaW50cywgY29uc3QgVmVjdG9yPFZlY3Rvcjx1aW50NjRfdD4+
JiBpbnRWZWN0b3JzKQorICAgICAgICA6IG1fYXJndW1lbnRzKGludHMsIGludFZlY3RvcnMpCisg
ICAgeworICAgIH0KKworICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKKyAg
ICB7CisgICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKKyAgICB9CisKK3ByaXZhdGU6CisgICAg
QXJndW1lbnRzIG1fYXJndW1lbnRzOworfTsKKworY2xhc3MgQ3JlYXRlUGx1Z2luIHsKK3B1Ymxp
YzoKKyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8dWludDY0X3QsIGNvbnN0IFdlYktpdDo6UGx1Z2lu
OjpQYXJhbWV0ZXJzJj4gQXJndW1lbnRzOworCisgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUg
bmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfQ3JlYXRlUGx1Z2luOyB9
CisgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gdHJ1ZTsKKworICAgIHVzaW5nIFJlcGx5
ID0gc3RkOjp0dXBsZTxib29sJj47CisgICAgdXNpbmcgUmVwbHlBcmd1bWVudHMgPSBzdGQ6OnR1
cGxlPGJvb2w+OworICAgIENyZWF0ZVBsdWdpbih1aW50NjRfdCBwbHVnaW5JbnN0YW5jZUlELCBj
b25zdCBXZWJLaXQ6OlBsdWdpbjo6UGFyYW1ldGVycyYgcGFyYW1ldGVycykKKyAgICAgICAgOiBt
X2FyZ3VtZW50cyhwbHVnaW5JbnN0YW5jZUlELCBwYXJhbWV0ZXJzKQorICAgIHsKKyAgICB9CisK
KyAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0CisgICAgeworICAgICAgICBy
ZXR1cm4gbV9hcmd1bWVudHM7CisgICAgfQorCitwcml2YXRlOgorICAgIEFyZ3VtZW50cyBtX2Fy
Z3VtZW50czsKK307CisKK2NsYXNzIFJ1bkphdmFTY3JpcHRBbGVydCB7CitwdWJsaWM6CisgICAg
dHlwZWRlZiBzdGQ6OnR1cGxlPHVpbnQ2NF90LCBjb25zdCBTdHJpbmcmPiBBcmd1bWVudHM7CisK
KyAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdl
TmFtZTo6V2ViUGFnZV9SdW5KYXZhU2NyaXB0QWxlcnQ7IH0KKyAgICBzdGF0aWMgY29uc3QgYm9v
bCBpc1N5bmMgPSB0cnVlOworCisgICAgdXNpbmcgUmVwbHkgPSBzdGQ6OnR1cGxlPD47CisgICAg
dXNpbmcgUmVwbHlBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPD47CisgICAgUnVuSmF2YVNjcmlwdEFs
ZXJ0KHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKKyAgICAgICAgOiBt
X2FyZ3VtZW50cyhmcmFtZUlELCBtZXNzYWdlKQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdCBB
cmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9hcmd1
bWVudHM7CisgICAgfQorCitwcml2YXRlOgorICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKK307
CisKK2NsYXNzIEdldFBsdWdpbnMgeworcHVibGljOgorICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxi
b29sPiBBcmd1bWVudHM7CisKKyAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyBy
ZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9HZXRQbHVnaW5zOyB9CisgICAgc3RhdGlj
IGNvbnN0IGJvb2wgaXNTeW5jID0gdHJ1ZTsKKworICAgIHVzaW5nIFJlcGx5ID0gc3RkOjp0dXBs
ZTxWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4mPjsKKyAgICB1c2luZyBSZXBseUFyZ3VtZW50
cyA9IHN0ZDo6dHVwbGU8VmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+PjsKKyAgICBleHBsaWNp
dCBHZXRQbHVnaW5zKGJvb2wgcmVmcmVzaCkKKyAgICAgICAgOiBtX2FyZ3VtZW50cyhyZWZyZXNo
KQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0
CisgICAgeworICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7CisgICAgfQorCitwcml2YXRlOgor
ICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKK307CisKK2NsYXNzIEdldFBsdWdpblByb2Nlc3ND
b25uZWN0aW9uIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8Y29uc3QgU3RyaW5n
Jj4gQXJndW1lbnRzOworCisgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0
dXJuIElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfR2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb247
IH0KKyAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSB0cnVlOworCisgICAgdXNpbmcgRGVs
YXllZFJlcGx5ID0gR2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25EZWxheWVkUmVwbHk7CisgICAg
c3RhdGljIHZvaWQgc2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYmLCBJUEM6OkNv
bm5lY3Rpb24mLCBjb25zdCBJUEM6OkNvbm5lY3Rpb246OkhhbmRsZSYgY29ubmVjdGlvbkhhbmRs
ZSk7CisgICAgdXNpbmcgUmVwbHkgPSBzdGQ6OnR1cGxlPElQQzo6Q29ubmVjdGlvbjo6SGFuZGxl
Jj47CisgICAgdXNpbmcgUmVwbHlBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPElQQzo6Q29ubmVjdGlv
bjo6SGFuZGxlPjsKKyAgICBleHBsaWNpdCBHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbihjb25z
dCBTdHJpbmcmIHBsdWdpblBhdGgpCisgICAgICAgIDogbV9hcmd1bWVudHMocGx1Z2luUGF0aCkK
KyAgICB7CisgICAgfQorCisgICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAor
ICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOworICAgIH0KKworcHJpdmF0ZToKKyAg
ICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Cit9OworCitjbGFzcyBUZXN0TXVsdGlwbGVBdHRyaWJ1
dGVzIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8PiBBcmd1bWVudHM7CisKKyAg
ICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFt
ZTo6V2ViUGFnZV9UZXN0TXVsdGlwbGVBdHRyaWJ1dGVzOyB9CisgICAgc3RhdGljIGNvbnN0IGJv
b2wgaXNTeW5jID0gdHJ1ZTsKKworICAgIHVzaW5nIERlbGF5ZWRSZXBseSA9IFRlc3RNdWx0aXBs
ZUF0dHJpYnV0ZXNEZWxheWVkUmVwbHk7CisgICAgc3RhdGljIHZvaWQgc2VuZChzdGQ6OnVuaXF1
ZV9wdHI8SVBDOjpFbmNvZGVyPiYmLCBJUEM6OkNvbm5lY3Rpb24mKTsKKyAgICB1c2luZyBSZXBs
eSA9IHN0ZDo6dHVwbGU8PjsKKyAgICB1c2luZyBSZXBseUFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8
PjsKKyAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0CisgICAgeworICAgICAg
ICByZXR1cm4gbV9hcmd1bWVudHM7CisgICAgfQorCitwcml2YXRlOgorICAgIEFyZ3VtZW50cyBt
X2FyZ3VtZW50czsKK307CisKK2NsYXNzIFRlc3RQYXJhbWV0ZXJBdHRyaWJ1dGVzIHsKK3B1Ymxp
YzoKKyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8dWludDY0X3QsIGRvdWJsZSwgZG91YmxlPiBBcmd1
bWVudHM7CisKKyAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBD
OjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9UZXN0UGFyYW1ldGVyQXR0cmlidXRlczsgfQorICAgIHN0
YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOworCisgICAgVGVzdFBhcmFtZXRlckF0dHJp
YnV0ZXModWludDY0X3QgZm9vLCBkb3VibGUgYmFyLCBkb3VibGUgYmF6KQorICAgICAgICA6IG1f
YXJndW1lbnRzKGZvbywgYmFyLCBiYXopCisgICAgeworICAgIH0KKworICAgIGNvbnN0IEFyZ3Vt
ZW50cyYgYXJndW1lbnRzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2FyZ3VtZW50
czsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOworfTsKKwor
Y2xhc3MgVGVtcGxhdGVUZXN0IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8Y29u
c3QgSGFzaE1hcDxTdHJpbmcsIHN0ZDo6cGFpcjxTdHJpbmcsIHVpbnQ2NF90Pj4mPiBBcmd1bWVu
dHM7CisKKyAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpN
ZXNzYWdlTmFtZTo6V2ViUGFnZV9UZW1wbGF0ZVRlc3Q7IH0KKyAgICBzdGF0aWMgY29uc3QgYm9v
bCBpc1N5bmMgPSBmYWxzZTsKKworICAgIGV4cGxpY2l0IFRlbXBsYXRlVGVzdChjb25zdCBIYXNo
TWFwPFN0cmluZywgc3RkOjpwYWlyPFN0cmluZywgdWludDY0X3Q+PiYgYSkKKyAgICAgICAgOiBt
X2FyZ3VtZW50cyhhKQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3Vt
ZW50cygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7CisgICAgfQor
Citwcml2YXRlOgorICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKK307CisKK2NsYXNzIFNldFZp
ZGVvTGF5ZXJJRCB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGNvbnN0IFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRCY+IEFyZ3VtZW50czsKKworICAgIHN0
YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpX
ZWJQYWdlX1NldFZpZGVvTGF5ZXJJRDsgfQorICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9
IGZhbHNlOworCisgICAgZXhwbGljaXQgU2V0VmlkZW9MYXllcklEKGNvbnN0IFdlYkNvcmU6Okdy
YXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRCYgdmlkZW9MYXllcklEKQorICAgICAgICA6IG1f
YXJndW1lbnRzKHZpZGVvTGF5ZXJJRCkKKyAgICB7CisgICAgfQorCisgICAgY29uc3QgQXJndW1l
bnRzJiBhcmd1bWVudHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRz
OworICAgIH0KKworcHJpdmF0ZToKKyAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Cit9OworCisj
aWYgUExBVEZPUk0oTUFDKQorY2xhc3MgRGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24gewor
cHVibGljOgorICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBJUEM6Ok1hY2hQb3J0Jj4gQXJn
dW1lbnRzOworCisgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQ
Qzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfRGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb247IH0K
KyAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKKworICAgIGV4cGxpY2l0IERp
ZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKGNvbnN0IElQQzo6TWFjaFBvcnQmIGNvbm5lY3Rp
b25JZGVudGlmaWVyKQorICAgICAgICA6IG1fYXJndW1lbnRzKGNvbm5lY3Rpb25JZGVudGlmaWVy
KQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0
CisgICAgeworICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7CisgICAgfQorCitwcml2YXRlOgor
ICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKK307CisjZW5kaWYKKworI2lmIFBMQVRGT1JNKE1B
QykKK2NsYXNzIEludGVycHJldEtleUV2ZW50IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIHN0ZDo6
dHVwbGU8dWludDMyX3Q+IEFyZ3VtZW50czsKKworICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1l
IG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX0ludGVycHJldEtleUV2
ZW50OyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gdHJ1ZTsKKworICAgIHVzaW5n
IFJlcGx5ID0gc3RkOjp0dXBsZTxWZWN0b3I8V2ViQ29yZTo6S2V5cHJlc3NDb21tYW5kPiY+Owor
ICAgIHVzaW5nIFJlcGx5QXJndW1lbnRzID0gc3RkOjp0dXBsZTxWZWN0b3I8V2ViQ29yZTo6S2V5
cHJlc3NDb21tYW5kPj47CisgICAgZXhwbGljaXQgSW50ZXJwcmV0S2V5RXZlbnQodWludDMyX3Qg
dHlwZSkKKyAgICAgICAgOiBtX2FyZ3VtZW50cyh0eXBlKQorICAgIHsKKyAgICB9CisKKyAgICBj
b25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4g
bV9hcmd1bWVudHM7CisgICAgfQorCitwcml2YXRlOgorICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50
czsKK307CisjZW5kaWYKKworI2lmIEVOQUJMRShERVBSRUNBVEVEX0ZFQVRVUkUpCitjbGFzcyBE
ZXByZWNhdGVkT3BlcmF0aW9uIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8Y29u
c3QgSVBDOjpEdW1teVR5cGUmPiBBcmd1bWVudHM7CisKKyAgICBzdGF0aWMgSVBDOjpNZXNzYWdl
TmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9EZXByZWNhdGVk
T3BlcmF0aW9uOyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7CisKKyAg
ICBleHBsaWNpdCBEZXByZWNhdGVkT3BlcmF0aW9uKGNvbnN0IElQQzo6RHVtbXlUeXBlJiBkdW1t
eSkKKyAgICAgICAgOiBtX2FyZ3VtZW50cyhkdW1teSkKKyAgICB7CisgICAgfQorCisgICAgY29u
c3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1f
YXJndW1lbnRzOworICAgIH0KKworcHJpdmF0ZToKKyAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7
Cit9OworI2VuZGlmCisKKyNpZiBFTkFCTEUoRVhQRVJJTUVOVEFMX0ZFQVRVUkUpCitjbGFzcyBF
eHBlcmltZW50YWxPcGVyYXRpb24geworcHVibGljOgorICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxj
b25zdCBJUEM6OkR1bW15VHlwZSY+IEFyZ3VtZW50czsKKworICAgIHN0YXRpYyBJUEM6Ok1lc3Nh
Z2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX0V4cGVyaW1l
bnRhbE9wZXJhdGlvbjsgfQorICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOwor
CisgICAgZXhwbGljaXQgRXhwZXJpbWVudGFsT3BlcmF0aW9uKGNvbnN0IElQQzo6RHVtbXlUeXBl
JiBkdW1teSkKKyAgICAgICAgOiBtX2FyZ3VtZW50cyhkdW1teSkKKyAgICB7CisgICAgfQorCisg
ICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0
dXJuIG1fYXJndW1lbnRzOworICAgIH0KKworcHJpdmF0ZToKKyAgICBBcmd1bWVudHMgbV9hcmd1
bWVudHM7Cit9OworI2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIFdlYlBhZ2UKK30gLy8gbmFtZXNw
YWNlIE1lc3NhZ2VzCisKKyNlbmRpZiAvLyAoRU5BQkxFKFdFQktJVDIpICYmIChORVNURURfTUFT
VEVSX0NPTkRJVElPTiB8fCBNQVNURVJfT1IgJiYgTUFTVEVSX0FORCkpCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvdGVzdC1sZWdhY3lNZXNzYWdlc1JlcGxpZXMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvdGVzdC1sZWdhY3lNZXNzYWdlc1JlcGxpZXMuaAkobm9u
ZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvdGVzdC1sZWdhY3lNZXNzYWdlc1Jl
cGxpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEwLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisg
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorICogQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAor
ICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisgKiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLAorICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpZiAoRU5BQkxFKFdFQktJVDIpICYmIChORVNURURfTUFTVEVS
X0NPTkRJVElPTiB8fCBNQVNURVJfT1IgJiYgTUFTVEVSX0FORCkpCisKKyNpbmNsdWRlICJDb25u
ZWN0aW9uLmgiCisjaW5jbHVkZSAiTWVzc2FnZU5hbWVzLmgiCisjaW5jbHVkZSA8d3RmL0Zvcndh
cmQuaD4KKworCituYW1lc3BhY2UgTWVzc2FnZXMgeworbmFtZXNwYWNlIFdlYlBhZ2UgeworCit1
c2luZyBHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbkRlbGF5ZWRSZXBseSA9IENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoY29uc3QgSVBDOjpDb25uZWN0aW9uOjpIYW5kbGUmIGNvbm5lY3Rpb25IYW5k
bGUpPjsKKwordXNpbmcgVGVzdE11bHRpcGxlQXR0cmlidXRlc0RlbGF5ZWRSZXBseSA9IENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT47CisKK30gLy8gbmFtZXNwYWNlIFdlYlBhZ2UKK30gLy8gbmFt
ZXNwYWNlIE1lc3NhZ2VzCisKKyNlbmRpZiAvLyAoRU5BQkxFKFdFQktJVDIpICYmIChORVNURURf
TUFTVEVSX0NPTkRJVElPTiB8fCBNQVNURVJfT1IgJiYgTUFTVEVSX0FORCkpCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1NjcmlwdHMvdGVzdC1zdXBlcmNsYXNzTWVzc2FnZVJlY2VpdmVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvdGVzdC1zdXBlcmNsYXNzTWVzc2FnZVJl
Y2VpdmVyLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvdGVzdC1z
dXBlcmNsYXNzTWVzc2FnZVJlY2VpdmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE4
OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IKKyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUg
IldlYlBhZ2UuaCIKKworI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiRGVj
b2Rlci5oIgorI2luY2x1ZGUgIkhhbmRsZU1lc3NhZ2UuaCIKKyNpbmNsdWRlICJUZXN0Q2xhc3NO
YW1lLmgiCisjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKKyNpbmNsdWRlICJUZXN0VHdvU3RhdGVF
bnVtLmgiCisjZW5kaWYKKyNpbmNsdWRlICJXZWJQYWdlTWVzc2FnZXMuaCIKKyNpbmNsdWRlIDx3
dGYvT3B0aW9uYWwuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNw
YWNlIE1lc3NhZ2VzIHsKKworbmFtZXNwYWNlIFdlYlBhZ2UgeworCisjaWYgRU5BQkxFKFRFU1Rf
RkVBVFVSRSkKKwordm9pZCBUZXN0QXN5bmNNZXNzYWdlOjpjYWxsUmVwbHkoSVBDOjpEZWNvZGVy
JiBkZWNvZGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90JiYpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQoreworICAgIE9wdGlvbmFsPHVpbnQ2NF90PiByZXN1bHQ7CisgICAgZGVjb2Rl
ciA+PiByZXN1bHQ7CisgICAgaWYgKCFyZXN1bHQpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgICAgIGNhbmNlbFJlcGx5KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKCpy
ZXN1bHQpKTsKK30KKwordm9pZCBUZXN0QXN5bmNNZXNzYWdlOjpjYW5jZWxSZXBseShDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAg
IGNvbXBsZXRpb25IYW5kbGVyKElQQzo6QXN5bmNSZXBseUVycm9yPHVpbnQ2NF90Pjo6Y3JlYXRl
KCkpOworfQorCit2b2lkIFRlc3RBc3luY01lc3NhZ2U6OnNlbmQoc3RkOjp1bmlxdWVfcHRyPElQ
Qzo6RW5jb2Rlcj4mJiBlbmNvZGVyLCBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIHVpbnQ2
NF90IHJlc3VsdCkKK3sKKyAgICAqZW5jb2RlciA8PCByZXN1bHQ7CisgICAgY29ubmVjdGlvbi5z
ZW5kU3luY1JlcGx5KFdURk1vdmUoZW5jb2RlcikpOworfQorCisjZW5kaWYKKworI2lmIEVOQUJM
RShURVNUX0ZFQVRVUkUpCisKK3ZvaWQgVGVzdEFzeW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50czo6
Y2FsbFJlcGx5KElQQzo6RGVjb2RlciYgZGVjb2RlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Cit9CisK
K3ZvaWQgVGVzdEFzeW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50czo6Y2FuY2VsUmVwbHkoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGNvbXBsZXRp
b25IYW5kbGVyKCk7Cit9CisKK3ZvaWQgVGVzdEFzeW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50czo6
c2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYmIGVuY29kZXIsIElQQzo6Q29ubmVj
dGlvbiYgY29ubmVjdGlvbikKK3sKKyAgICBjb25uZWN0aW9uLnNlbmRTeW5jUmVwbHkoV1RGTW92
ZShlbmNvZGVyKSk7Cit9CisKKyNlbmRpZgorCisjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKKwor
dm9pZCBUZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1lbnRzOjpjYWxsUmVwbHkoSVBD
OjpEZWNvZGVyJiBkZWNvZGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wmJiwgdWludDY0
X3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgT3B0aW9uYWw8Ym9vbD4gZmxhZzsK
KyAgICBkZWNvZGVyID4+IGZsYWc7CisgICAgaWYgKCFmbGFnKSB7CisgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICBjYW5jZWxSZXBseShXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgT3B0aW9uYWw8dWludDY0X3Q+IHZh
bHVlOworICAgIGRlY29kZXIgPj4gdmFsdWU7CisgICAgaWYgKCF2YWx1ZSkgeworICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgY2FuY2VsUmVwbHkoV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGNvbXBsZXRpb25IYW5k
bGVyKFdURk1vdmUoKmZsYWcpLCBXVEZNb3ZlKCp2YWx1ZSkpOworfQorCit2b2lkIFRlc3RBc3lu
Y01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHM6OmNhbmNlbFJlcGx5KENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCYmLCB1aW50NjRfdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAg
ICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkFzeW5jUmVwbHlFcnJvcjxib29sPjo6Y3JlYXRlKCks
IElQQzo6QXN5bmNSZXBseUVycm9yPHVpbnQ2NF90Pjo6Y3JlYXRlKCkpOworfQorCit2b2lkIFRl
c3RBc3luY01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHM6OnNlbmQoc3RkOjp1bmlxdWVfcHRy
PElQQzo6RW5jb2Rlcj4mJiBlbmNvZGVyLCBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGJv
b2wgZmxhZywgdWludDY0X3QgdmFsdWUpCit7CisgICAgKmVuY29kZXIgPDwgZmxhZzsKKyAgICAq
ZW5jb2RlciA8PCB2YWx1ZTsKKyAgICBjb25uZWN0aW9uLnNlbmRTeW5jUmVwbHkoV1RGTW92ZShl
bmNvZGVyKSk7Cit9CisKKyNlbmRpZgorCit2b2lkIFRlc3RTeW5jTWVzc2FnZTo6c2VuZChzdGQ6
OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYmIGVuY29kZXIsIElQQzo6Q29ubmVjdGlvbiYgY29u
bmVjdGlvbiwgdWludDhfdCByZXBseSkKK3sKKyAgICAqZW5jb2RlciA8PCByZXBseTsKKyAgICBj
b25uZWN0aW9uLnNlbmRTeW5jUmVwbHkoV1RGTW92ZShlbmNvZGVyKSk7Cit9CisKK3ZvaWQgVGVz
dFN5bmNocm9ub3VzTWVzc2FnZTo6c2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYm
IGVuY29kZXIsIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgT3B0aW9uYWw8V2Vi
S2l0OjpUZXN0Q2xhc3NOYW1lPiYgb3B0aW9uYWxSZXBseSkKK3sKKyAgICAqZW5jb2RlciA8PCBv
cHRpb25hbFJlcGx5OworICAgIGNvbm5lY3Rpb24uc2VuZFN5bmNSZXBseShXVEZNb3ZlKGVuY29k
ZXIpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViUGFnZQorCit9IC8vIG5hbWVzcGFjZSBNZXNz
YWdlcworCituYW1lc3BhY2UgV2ViS2l0IHsKKwordm9pZCBXZWJQYWdlOjpkaWRSZWNlaXZlTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikK
K3sKKyAgICBhdXRvIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKTsKKyAgICBpZiAoZGVj
b2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkVVJMOjpuYW1lKCkp
IHsKKyAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkVVJM
PihkZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6bG9hZFVSTCk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFt
ZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0QXN5bmNNZXNzYWdlOjpuYW1lKCkpIHsKKyAg
ICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlQXN5bmM8TWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RBc3lu
Y01lc3NhZ2U+KGNvbm5lY3Rpb24sIGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjp0ZXN0QXN5bmNN
ZXNzYWdlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorI2lmIEVOQUJMRShURVNU
X0ZFQVRVUkUpCisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2Vi
UGFnZTo6VGVzdEFzeW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50czo6bmFtZSgpKSB7CisgICAgICAg
IElQQzo6aGFuZGxlTWVzc2FnZUFzeW5jPE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0QXN5bmNNZXNz
YWdlV2l0aE5vQXJndW1lbnRzPihjb25uZWN0aW9uLCBkZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6
dGVzdEFzeW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50cyk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisjZW5kaWYKKyNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQorICAgIGlmIChkZWNvZGVyLm1lc3Nh
Z2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RBc3luY01lc3NhZ2VXaXRoTXVsdGlw
bGVBcmd1bWVudHM6Om5hbWUoKSkgeworICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2VBc3luYzxN
ZXNzYWdlczo6V2ViUGFnZTo6VGVzdEFzeW5jTWVzc2FnZVdpdGhNdWx0aXBsZUFyZ3VtZW50cz4o
Y29ubmVjdGlvbiwgZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OnRlc3RBc3luY01lc3NhZ2VXaXRo
TXVsdGlwbGVBcmd1bWVudHMpOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisgICAg
V2ViUGFnZUJhc2U6OmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOworfQor
Cit2b2lkIFdlYlBhZ2U6OmRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNv
bm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2Rlciwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5j
b2Rlcj4mIHJlcGx5RW5jb2RlcikKK3sKKyAgICBhdXRvIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKTsKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQ
YWdlOjpUZXN0U3luY01lc3NhZ2U6Om5hbWUoKSkgeworICAgICAgICBJUEM6OmhhbmRsZU1lc3Nh
Z2VTeW5jaHJvbm91czxNZXNzYWdlczo6V2ViUGFnZTo6VGVzdFN5bmNNZXNzYWdlPihjb25uZWN0
aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIsIHRoaXMsICZXZWJQYWdlOjp0ZXN0U3luY01lc3Nh
Z2UpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1l
KCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RTeW5jaHJvbm91c01lc3NhZ2U6Om5hbWUoKSkg
eworICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2VTeW5jaHJvbm91czxNZXNzYWdlczo6V2ViUGFn
ZTo6VGVzdFN5bmNocm9ub3VzTWVzc2FnZT4oY29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNv
ZGVyLCB0aGlzLCAmV2ViUGFnZTo6dGVzdFN5bmNocm9ub3VzTWVzc2FnZSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisgICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pOworICAgIFVOVVNFRF9Q
QVJBTShkZWNvZGVyKTsKKyAgICBVTlVTRURfUEFSQU0ocmVwbHlFbmNvZGVyKTsKKyAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvU2NyaXB0cy90ZXN0LXN1cGVyY2xhc3NNZXNzYWdlcy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy90ZXN0LXN1cGVyY2xhc3NNZXNzYWdlcy5oCShub25l
eGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy90ZXN0LXN1cGVyY2xhc3NNZXNzYWdl
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjAxIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEwLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorICogQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICog
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisgKiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLAorICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgIkNv
bm5lY3Rpb24uaCIKKyNpbmNsdWRlICJNZXNzYWdlTmFtZXMuaCIKKyNpbmNsdWRlICJUZXN0Q2xh
c3NOYW1lLmgiCisjaW5jbHVkZSAiV2ViUGFnZU1lc3NhZ2VzUmVwbGllcy5oIgorI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisjaW5jbHVkZSA8d3Rm
L1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CisKK25hbWVzcGFjZSBXZWJLaXQgeworZW51bSBjbGFzcyBUZXN0VHdvU3RhdGVFbnVtIDogYm9v
bDsKK30KKworbmFtZXNwYWNlIE1lc3NhZ2VzIHsKK25hbWVzcGFjZSBXZWJQYWdlIHsKKworc3Rh
dGljIGlubGluZSBJUEM6OlJlY2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1lKCkKK3sKKyAg
ICByZXR1cm4gSVBDOjpSZWNlaXZlck5hbWU6OldlYlBhZ2U7Cit9CisKK2NsYXNzIExvYWRVUkwg
eworcHVibGljOgorICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBTdHJpbmcmPiBBcmd1bWVu
dHM7CisKKyAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpN
ZXNzYWdlTmFtZTo6V2ViUGFnZV9Mb2FkVVJMOyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNT
eW5jID0gZmFsc2U7CisKKyAgICBleHBsaWNpdCBMb2FkVVJMKGNvbnN0IFN0cmluZyYgdXJsKQor
ICAgICAgICA6IG1fYXJndW1lbnRzKHVybCkKKyAgICB7CisgICAgfQorCisgICAgY29uc3QgQXJn
dW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYXJndW1l
bnRzOworICAgIH0KKworcHJpdmF0ZToKKyAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Cit9Owor
CisjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKK2NsYXNzIFRlc3RBc3luY01lc3NhZ2UgeworcHVi
bGljOgorICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxXZWJLaXQ6OlRlc3RUd29TdGF0ZUVudW0+IEFy
Z3VtZW50czsKKworICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJ
UEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX1Rlc3RBc3luY01lc3NhZ2U7IH0KKyAgICBzdGF0aWMg
Y29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKKworICAgIHN0YXRpYyB2b2lkIGNhbGxSZXBseShJ
UEM6OkRlY29kZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90JiYpPiYmKTsKKyAg
ICBzdGF0aWMgdm9pZCBjYW5jZWxSZXBseShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90
JiYpPiYmKTsKKyAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBhc3luY01lc3NhZ2VSZXBseU5h
bWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX1Rlc3RBc3luY01lc3NhZ2VS
ZXBseTsgfQorICAgIHVzaW5nIEFzeW5jUmVwbHkgPSBUZXN0QXN5bmNNZXNzYWdlQXN5bmNSZXBs
eTsKKyAgICBzdGF0aWMgdm9pZCBzZW5kKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiYs
IElQQzo6Q29ubmVjdGlvbiYsIHVpbnQ2NF90IHJlc3VsdCk7CisgICAgdXNpbmcgUmVwbHkgPSBz
dGQ6OnR1cGxlPHVpbnQ2NF90Jj47CisgICAgdXNpbmcgUmVwbHlBcmd1bWVudHMgPSBzdGQ6OnR1
cGxlPHVpbnQ2NF90PjsKKyAgICBleHBsaWNpdCBUZXN0QXN5bmNNZXNzYWdlKFdlYktpdDo6VGVz
dFR3b1N0YXRlRW51bSB0d29TdGF0ZUVudW0pCisgICAgICAgIDogbV9hcmd1bWVudHModHdvU3Rh
dGVFbnVtKQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygp
IGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7CisgICAgfQorCitwcml2
YXRlOgorICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKK307CisjZW5kaWYKKworI2lmIEVOQUJM
RShURVNUX0ZFQVRVUkUpCitjbGFzcyBUZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJndW1lbnRzIHsK
K3B1YmxpYzoKKyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8PiBBcmd1bWVudHM7CisKKyAgICBzdGF0
aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6V2Vi
UGFnZV9UZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJndW1lbnRzOyB9CisgICAgc3RhdGljIGNvbnN0
IGJvb2wgaXNTeW5jID0gZmFsc2U7CisKKyAgICBzdGF0aWMgdm9pZCBjYWxsUmVwbHkoSVBDOjpE
ZWNvZGVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICBzdGF0aWMgdm9pZCBj
YW5jZWxSZXBseShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHN0YXRpYyBJUEM6
Ok1lc3NhZ2VOYW1lIGFzeW5jTWVzc2FnZVJlcGx5TmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2Fn
ZU5hbWU6OldlYlBhZ2VfVGVzdEFzeW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50c1JlcGx5OyB9Cisg
ICAgdXNpbmcgQXN5bmNSZXBseSA9IFRlc3RBc3luY01lc3NhZ2VXaXRoTm9Bcmd1bWVudHNBc3lu
Y1JlcGx5OworICAgIHN0YXRpYyB2b2lkIHNlbmQoc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rl
cj4mJiwgSVBDOjpDb25uZWN0aW9uJik7CisgICAgdXNpbmcgUmVwbHkgPSBzdGQ6OnR1cGxlPD47
CisgICAgdXNpbmcgUmVwbHlBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPD47CisgICAgY29uc3QgQXJn
dW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYXJndW1l
bnRzOworICAgIH0KKworcHJpdmF0ZToKKyAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Cit9Owor
I2VuZGlmCisKKyNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQorY2xhc3MgVGVzdEFzeW5jTWVzc2Fn
ZVdpdGhNdWx0aXBsZUFyZ3VtZW50cyB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBzdGQ6OnR1cGxl
PD4gQXJndW1lbnRzOworCisgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0
dXJuIElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVzdEFzeW5jTWVzc2FnZVdpdGhNdWx0aXBs
ZUFyZ3VtZW50czsgfQorICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOworCisg
ICAgc3RhdGljIHZvaWQgY2FsbFJlcGx5KElQQzo6RGVjb2RlciYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCYmLCB1aW50NjRfdCYmKT4mJik7CisgICAgc3RhdGljIHZvaWQgY2FuY2VsUmVw
bHkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sJiYsIHVpbnQ2NF90JiYpPiYmKTsKKyAgICBz
dGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBhc3luY01lc3NhZ2VSZXBseU5hbWUoKSB7IHJldHVybiBJ
UEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX1Rlc3RBc3luY01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1
bWVudHNSZXBseTsgfQorICAgIHVzaW5nIEFzeW5jUmVwbHkgPSBUZXN0QXN5bmNNZXNzYWdlV2l0
aE11bHRpcGxlQXJndW1lbnRzQXN5bmNSZXBseTsKKyAgICBzdGF0aWMgdm9pZCBzZW5kKHN0ZDo6
dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiYsIElQQzo6Q29ubmVjdGlvbiYsIGJvb2wgZmxhZywg
dWludDY0X3QgdmFsdWUpOworICAgIHVzaW5nIFJlcGx5ID0gc3RkOjp0dXBsZTxib29sJiwgdWlu
dDY0X3QmPjsKKyAgICB1c2luZyBSZXBseUFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8Ym9vbCwgdWlu
dDY0X3Q+OworICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKKyAgICB7Cisg
ICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQXJndW1l
bnRzIG1fYXJndW1lbnRzOworfTsKKyNlbmRpZgorCitjbGFzcyBUZXN0U3luY01lc3NhZ2Ugewor
cHVibGljOgorICAgIHR5cGVkZWYgc3RkOjp0dXBsZTx1aW50MzJfdD4gQXJndW1lbnRzOworCisg
ICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5h
bWU6OldlYlBhZ2VfVGVzdFN5bmNNZXNzYWdlOyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNT
eW5jID0gdHJ1ZTsKKworICAgIHVzaW5nIERlbGF5ZWRSZXBseSA9IFRlc3RTeW5jTWVzc2FnZURl
bGF5ZWRSZXBseTsKKyAgICBzdGF0aWMgdm9pZCBzZW5kKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVu
Y29kZXI+JiYsIElQQzo6Q29ubmVjdGlvbiYsIHVpbnQ4X3QgcmVwbHkpOworICAgIHVzaW5nIFJl
cGx5ID0gc3RkOjp0dXBsZTx1aW50OF90Jj47CisgICAgdXNpbmcgUmVwbHlBcmd1bWVudHMgPSBz
dGQ6OnR1cGxlPHVpbnQ4X3Q+OworICAgIGV4cGxpY2l0IFRlc3RTeW5jTWVzc2FnZSh1aW50MzJf
dCBwYXJhbSkKKyAgICAgICAgOiBtX2FyZ3VtZW50cyhwYXJhbSkKKyAgICB7CisgICAgfQorCisg
ICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0
dXJuIG1fYXJndW1lbnRzOworICAgIH0KKworcHJpdmF0ZToKKyAgICBBcmd1bWVudHMgbV9hcmd1
bWVudHM7Cit9OworCitjbGFzcyBUZXN0U3luY2hyb25vdXNNZXNzYWdlIHsKK3B1YmxpYzoKKyAg
ICB0eXBlZGVmIHN0ZDo6dHVwbGU8Ym9vbD4gQXJndW1lbnRzOworCisgICAgc3RhdGljIElQQzo6
TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVz
dFN5bmNocm9ub3VzTWVzc2FnZTsgfQorICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IHRy
dWU7CisKKyAgICB1c2luZyBEZWxheWVkUmVwbHkgPSBUZXN0U3luY2hyb25vdXNNZXNzYWdlRGVs
YXllZFJlcGx5OworICAgIHN0YXRpYyB2b2lkIHNlbmQoc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5j
b2Rlcj4mJiwgSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgT3B0aW9uYWw8V2ViS2l0OjpUZXN0Q2xh
c3NOYW1lPiYgb3B0aW9uYWxSZXBseSk7CisgICAgdXNpbmcgUmVwbHkgPSBzdGQ6OnR1cGxlPE9w
dGlvbmFsPFdlYktpdDo6VGVzdENsYXNzTmFtZT4mPjsKKyAgICB1c2luZyBSZXBseUFyZ3VtZW50
cyA9IHN0ZDo6dHVwbGU8T3B0aW9uYWw8V2ViS2l0OjpUZXN0Q2xhc3NOYW1lPj47CisgICAgZXhw
bGljaXQgVGVzdFN5bmNocm9ub3VzTWVzc2FnZShib29sIHZhbHVlKQorICAgICAgICA6IG1fYXJn
dW1lbnRzKHZhbHVlKQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3Vt
ZW50cygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7CisgICAgfQor
Citwcml2YXRlOgorICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYlBhZ2UKK30gLy8gbmFtZXNwYWNlIE1lc3NhZ2VzCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1NjcmlwdHMvdGVzdC1zdXBlcmNsYXNzTWVzc2FnZXNSZXBsaWVzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9TY3JpcHRzL3Rlc3Qtc3VwZXJjbGFzc01lc3NhZ2VzUmVwbGllcy5oCShu
b25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy90ZXN0LXN1cGVyY2xhc3NNZXNz
YWdlc1JlcGxpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEwLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorICogQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisgKiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLAorICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNZXNzYWdlTmFtZXMuaCIKKyNpbmNs
dWRlICJUZXN0Q2xhc3NOYW1lLmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRl
IDx3dGYvT3B0aW9uYWwuaD4KKworCituYW1lc3BhY2UgTWVzc2FnZXMgeworbmFtZXNwYWNlIFdl
YlBhZ2UgeworCisjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKK3VzaW5nIFRlc3RBc3luY01lc3Nh
Z2VBc3luY1JlcGx5ID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCByZXN1bHQpPjsK
KyNlbmRpZgorCisjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKK3VzaW5nIFRlc3RBc3luY01lc3Nh
Z2VXaXRoTm9Bcmd1bWVudHNBc3luY1JlcGx5ID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPjsK
KyNlbmRpZgorCisjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKK3VzaW5nIFRlc3RBc3luY01lc3Nh
Z2VXaXRoTXVsdGlwbGVBcmd1bWVudHNBc3luY1JlcGx5ID0gQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sIGZsYWcsIHVpbnQ2NF90IHZhbHVlKT47CisjZW5kaWYKKwordXNpbmcgVGVzdFN5bmNN
ZXNzYWdlRGVsYXllZFJlcGx5ID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50OF90IHJlcGx5
KT47CisKK3VzaW5nIFRlc3RTeW5jaHJvbm91c01lc3NhZ2VEZWxheWVkUmVwbHkgPSBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IE9wdGlvbmFsPFdlYktpdDo6VGVzdENsYXNzTmFtZT4mIG9w
dGlvbmFsUmVwbHkpPjsKKworfSAvLyBuYW1lc3BhY2UgV2ViUGFnZQorfSAvLyBuYW1lc3BhY2Ug
TWVzc2FnZXMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy90ZXN0TWVzc2FnZVJlY2VpdmVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvdGVzdE1lc3NhZ2VSZWNl
aXZlci5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9TY3JpcHRzL3Rlc3RNZXNz
YWdlUmVjZWl2ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElN
UExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJOb25lLmgiCisKKyNp
bmNsdWRlICJEZWNvZGVyLmgiCisjaW5jbHVkZSAiSGFuZGxlTWVzc2FnZS5oIgorI2luY2x1ZGUg
Ik5vbmVNZXNzYWdlcy5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKKwpJbmRleDogU291cmNlL1dlYktpdC9TY3JpcHRzL3Rlc3RNZXNzYWdlcy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy90ZXN0TWVzc2FnZXMuaAkobm9uZXhp
c3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvdGVzdE1lc3NhZ2VzLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw0NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQor
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisj
aW5jbHVkZSAiTWVzc2FnZU5hbWVzLmgiCisjaW5jbHVkZSAiTm9uZU1lc3NhZ2VzUmVwbGllcy5o
IgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZD
b3VudGVkLmg+CisKKworbmFtZXNwYWNlIE1lc3NhZ2VzIHsKK25hbWVzcGFjZSBOb25lIHsKKwor
c3RhdGljIGlubGluZSBJUEM6OlJlY2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1lKCkKK3sK
KyAgICByZXR1cm4gSVBDOjpSZWNlaXZlck5hbWU6Ok5vbmU7Cit9CisKKworfSAvLyBuYW1lc3Bh
Y2UgTm9uZQorfSAvLyBuYW1lc3BhY2UgTWVzc2FnZXMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2Ny
aXB0cy90ZXN0TWVzc2FnZXNSZXBsaWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9T
Y3JpcHRzL3Rlc3RNZXNzYWdlc1JlcGxpZXMuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2Vi
S2l0L1NjcmlwdHMvdGVzdE1lc3NhZ2VzUmVwbGllcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAor
ICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1l
c3NhZ2VOYW1lcy5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKKworbmFtZXNwYWNlIE1l
c3NhZ2VzIHsKK25hbWVzcGFjZSBOb25lIHsKKworCit9IC8vIG5hbWVzcGFjZSBOb25lCit9IC8v
IG5hbWVzcGFjZSBNZXNzYWdlcwpJbmRleDogU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9M
ZWdhY3lNZXNzYWdlUmVjZWl2ZXItZXhwZWN0ZWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvU2NyaXB0cy93ZWJraXQvTGVnYWN5TWVzc2FnZVJlY2VpdmVyLWV4cGVjdGVkLmNwcAko
cmV2aXNpb24gMjYxMDMzKQorKysgU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9MZWdhY3lN
ZXNzYWdlUmVjZWl2ZXItZXhwZWN0ZWQuY3BwCShub25leGlzdGVudCkKQEAgLTEsMjAzICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAotICogQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
Ci0gKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMCi0gKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgotICogU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIKLSAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0gKiBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiAoRU5BQkxF
KFdFQktJVDIpICYmIChORVNURURfTUFTVEVSX0NPTkRJVElPTiB8fCBNQVNURVJfT1IgJiYgTUFT
VEVSX0FORCkpCi0KLSNpbmNsdWRlICJXZWJQYWdlLmgiCi0KLSNpbmNsdWRlICJBcmd1bWVudENv
ZGVycy5oIgotI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKLSNpbmNsdWRlICJEZWNvZGVyLmgiCi0j
aWYgRU5BQkxFKERFUFJFQ0FURURfRkVBVFVSRSkgfHwgRU5BQkxFKEVYUEVSSU1FTlRBTF9GRUFU
VVJFKQotI2luY2x1ZGUgIkR1bW15VHlwZS5oIgotI2VuZGlmCi0jaW5jbHVkZSAiSGFuZGxlTWVz
c2FnZS5oIgotI2lmIFBMQVRGT1JNKE1BQykKLSNpbmNsdWRlICJNYWNoUG9ydC5oIgotI2VuZGlm
Ci0jaW5jbHVkZSAiUGx1Z2luLmgiCi0jaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgi
Ci0jaWYgKEVOQUJMRShUT1VDSF9FVkVOVFMpICYmIChORVNURURfTUVTU0FHRV9DT05ESVRJT04g
JiYgU09NRV9PVEhFUl9NRVNTQUdFX0NPTkRJVElPTikpIHx8IChFTkFCTEUoVE9VQ0hfRVZFTlRT
KSAmJiAoTkVTVEVEX01FU1NBR0VfQ09ORElUSU9OIHx8IFNPTUVfT1RIRVJfTUVTU0FHRV9DT05E
SVRJT04pKQotI2luY2x1ZGUgIldlYkV2ZW50LmgiCi0jZW5kaWYKLSNpbmNsdWRlICJXZWJQYWdl
TWVzc2FnZXMuaCIKLSNpbmNsdWRlICJXZWJQcmVmZXJlbmNlc1N0b3JlLmgiCi0jaW5jbHVkZSA8
V2ViQ29yZS9HcmFwaGljc0xheWVyLmg+Ci0jaWYgUExBVEZPUk0oTUFDKQotI2luY2x1ZGUgPFdl
YkNvcmUvS2V5Ym9hcmRFdmVudC5oPgotI2VuZGlmCi0jaW5jbHVkZSA8V2ViQ29yZS9QbHVnaW5E
YXRhLmg+Ci0jaW5jbHVkZSA8dXRpbGl0eT4KLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQot
bmFtZXNwYWNlIE1lc3NhZ2VzIHsKLQotbmFtZXNwYWNlIFdlYlBhZ2UgewotCi12b2lkIEdldFBs
dWdpblByb2Nlc3NDb25uZWN0aW9uOjpzZW5kKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+
JiYgZW5jb2RlciwgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBJUEM6OkNvbm5l
Y3Rpb246OkhhbmRsZSYgY29ubmVjdGlvbkhhbmRsZSkKLXsKLSAgICAqZW5jb2RlciA8PCBjb25u
ZWN0aW9uSGFuZGxlOwotICAgIGNvbm5lY3Rpb24uc2VuZFN5bmNSZXBseShXVEZNb3ZlKGVuY29k
ZXIpKTsKLX0KLQotdm9pZCBUZXN0TXVsdGlwbGVBdHRyaWJ1dGVzOjpzZW5kKHN0ZDo6dW5pcXVl
X3B0cjxJUEM6OkVuY29kZXI+JiYgZW5jb2RlciwgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9u
KQotewotICAgIGNvbm5lY3Rpb24uc2VuZFN5bmNSZXBseShXVEZNb3ZlKGVuY29kZXIpKTsKLX0K
LQotfSAvLyBuYW1lc3BhY2UgV2ViUGFnZQotCi19IC8vIG5hbWVzcGFjZSBNZXNzYWdlcwotCi1u
YW1lc3BhY2UgV2ViS2l0IHsKLQotdm9pZCBXZWJQYWdlOjpkaWRSZWNlaXZlV2ViUGFnZU1lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpCi17
Ci0gICAgYXV0byBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyk7Ci0gICAgaWYgKGRlY29k
ZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFVSTDo6bmFtZSgpKSB7
Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFVSTD4o
ZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OmxvYWRVUkwpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCi0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUo
KSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFNvbWV0aGluZzo6bmFtZSgpKSB7Ci0gICAgICAg
IElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFNvbWV0aGluZz4oZGVj
b2RlciwgdGhpcywgJldlYlBhZ2U6OmxvYWRTb21ldGhpbmcpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotI2VuZGlmCi0jaWYgKEVOQUJMRShUT1VDSF9FVkVOVFMpICYmIChORVNURURfTUVTU0FH
RV9DT05ESVRJT04gfHwgU09NRV9PVEhFUl9NRVNTQUdFX0NPTkRJVElPTikpCi0gICAgaWYgKGRl
Y29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6VG91Y2hFdmVudDo6bmFt
ZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6VG91
Y2hFdmVudD4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OnRvdWNoRXZlbnQpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotI2VuZGlmCi0jaWYgKEVOQUJMRShUT1VDSF9FVkVOVFMpICYmIChORVNU
RURfTUVTU0FHRV9DT05ESVRJT04gJiYgU09NRV9PVEhFUl9NRVNTQUdFX0NPTkRJVElPTikpCi0g
ICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6QWRkRXZl
bnQ6Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBh
Z2U6OkFkZEV2ZW50PihkZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6YWRkRXZlbnQpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotI2VuZGlmCi0jaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLSAgICBp
ZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkU29tZXRo
aW5nRWxzZTo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6
V2ViUGFnZTo6TG9hZFNvbWV0aGluZ0Vsc2U+KGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjpsb2Fk
U29tZXRoaW5nRWxzZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYKLSAgICBpZiAo
ZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZWNlaXZlUG9s
aWN5RGVjaXNpb246Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2Fn
ZXM6OldlYlBhZ2U6OkRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbj4oZGVjb2RlciwgdGhpcywgJldl
YlBhZ2U6OmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6Q2xv
c2U6Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBh
Z2U6OkNsb3NlPihkZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6Y2xvc2UpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6Oldl
YlBhZ2U6OlByZWZlcmVuY2VzRGlkQ2hhbmdlOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5k
bGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpQcmVmZXJlbmNlc0RpZENoYW5nZT4oZGVjb2Rl
ciwgdGhpcywgJldlYlBhZ2U6OnByZWZlcmVuY2VzRGlkQ2hhbmdlKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQ
YWdlOjpTZW5kRG91YmxlQW5kRmxvYXQ6Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1l
c3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OlNlbmREb3VibGVBbmRGbG9hdD4oZGVjb2RlciwgdGhp
cywgJldlYlBhZ2U6OnNlbmREb3VibGVBbmRGbG9hdCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6U2Vu
ZEludHM6Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6Oldl
YlBhZ2U6OlNlbmRJbnRzPihkZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6c2VuZEludHMpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVz
c2FnZXM6OldlYlBhZ2U6OlRlc3RQYXJhbWV0ZXJBdHRyaWJ1dGVzOjpuYW1lKCkpIHsKLSAgICAg
ICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0UGFyYW1ldGVyQXR0
cmlidXRlcz4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OnRlc3RQYXJhbWV0ZXJBdHRyaWJ1dGVz
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgp
ID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpUZW1wbGF0ZVRlc3Q6Om5hbWUoKSkgewotICAgICAgICBJ
UEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OlRlbXBsYXRlVGVzdD4oZGVjb2Rl
ciwgdGhpcywgJldlYlBhZ2U6OnRlbXBsYXRlVGVzdCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6U2V0
VmlkZW9MYXllcklEOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3Nh
Z2VzOjpXZWJQYWdlOjpTZXRWaWRlb0xheWVySUQ+KGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjpz
ZXRWaWRlb0xheWVySUQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2lmIFBMQVRGT1JNKE1B
QykKLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpE
aWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbjo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFu
ZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6RGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rp
b24+KGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjpkaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlv
bik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYKLSNpZiBFTkFCTEUoREVQUkVDQVRF
RF9GRUFUVVJFKQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6Oldl
YlBhZ2U6OkRlcHJlY2F0ZWRPcGVyYXRpb246Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRs
ZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OkRlcHJlY2F0ZWRPcGVyYXRpb24+KGRlY29kZXIs
IHRoaXMsICZXZWJQYWdlOjpkZXByZWNhdGVkT3BlcmF0aW9uKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLSNlbmRpZgotI2lmIEVOQUJMRShFWFBFUklNRU5UQUxfRkVBVFVSRSkKLSAgICBpZiAo
ZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpFeHBlcmltZW50YWxP
cGVyYXRpb246Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6
OldlYlBhZ2U6OkV4cGVyaW1lbnRhbE9wZXJhdGlvbj4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6
OmV4cGVyaW1lbnRhbE9wZXJhdGlvbik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYK
LSAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7Ci0gICAgVU5VU0VEX1BBUkFNKGRlY29kZXIp
OwotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi12b2lkIFdlYlBhZ2U6OmRpZFJlY2Vp
dmVTeW5jV2ViUGFnZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRl
Y29kZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiByZXBseUVuY29k
ZXIpCi17Ci0gICAgYXV0byBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyk7Ci0gICAgaWYg
KGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6Q3JlYXRlUGx1Z2lu
OjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdl
OjpDcmVhdGVQbHVnaW4+KGRlY29kZXIsICpyZXBseUVuY29kZXIsIHRoaXMsICZXZWJQYWdlOjpj
cmVhdGVQbHVnaW4pOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChkZWNvZGVyLm1l
c3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OlJ1bkphdmFTY3JpcHRBbGVydDo6bmFt
ZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6UnVu
SmF2YVNjcmlwdEFsZXJ0PihkZWNvZGVyLCAqcmVwbHlFbmNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6
cnVuSmF2YVNjcmlwdEFsZXJ0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoZGVj
b2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRQbHVnaW5zOjpuYW1l
KCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRQ
bHVnaW5zPihkZWNvZGVyLCAqcmVwbHlFbmNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6Z2V0UGx1Z2lu
cyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUo
KSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246Om5hbWUo
KSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2VTeW5jaHJvbm91czxNZXNzYWdlczo6V2Vi
UGFnZTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24+KGNvbm5lY3Rpb24sIGRlY29kZXIsIHJl
cGx5RW5jb2RlciwgdGhpcywgJldlYlBhZ2U6OmdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09
IE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0TXVsdGlwbGVBdHRyaWJ1dGVzOjpuYW1lKCkpIHsKLSAg
ICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlU3luY2hyb25vdXNXYW50c0Nvbm5lY3Rpb248TWVzc2Fn
ZXM6OldlYlBhZ2U6OlRlc3RNdWx0aXBsZUF0dHJpYnV0ZXM+KGNvbm5lY3Rpb24sIGRlY29kZXIs
IHJlcGx5RW5jb2RlciwgdGhpcywgJldlYlBhZ2U6OnRlc3RNdWx0aXBsZUF0dHJpYnV0ZXMpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotI2lmIFBMQVRGT1JNKE1BQykKLSAgICBpZiAoZGVjb2Rl
ci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpJbnRlcnByZXRLZXlFdmVudDo6
bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6
SW50ZXJwcmV0S2V5RXZlbnQ+KGRlY29kZXIsICpyZXBseUVuY29kZXIsIHRoaXMsICZXZWJQYWdl
OjppbnRlcnByZXRLZXlFdmVudCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYKLSAg
ICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7Ci0gICAgVU5VU0VEX1BBUkFNKGRlY29kZXIpOwot
ICAgIFVOVVNFRF9QQVJBTShyZXBseUVuY29kZXIpOwotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotCi0jZW5kaWYgLy8gKEVOQUJMRShXRUJL
SVQyKSAmJiAoTkVTVEVEX01BU1RFUl9DT05ESVRJT04gfHwgTUFTVEVSX09SICYmIE1BU1RFUl9B
TkQpKQoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9M
ZWdhY3lNZXNzYWdlUmVjZWl2ZXItZXhwZWN0ZWQuY3BwCl9fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3Zu
OmVvbC1zdHlsZQojIyAtMSArMCwwICMjCi1uYXRpdmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBw
cm9wZXJ0eQpJbmRleDogU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9MZWdhY3lNZXNzYWdl
cy1leHBlY3RlZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQv
TGVnYWN5TWVzc2FnZXMtZXhwZWN0ZWQuaAkocmV2aXNpb24gMjYxMDMzKQorKysgU291cmNlL1dl
YktpdC9TY3JpcHRzL3dlYmtpdC9MZWdhY3lNZXNzYWdlcy1leHBlY3RlZC5oCShub25leGlzdGVu
dCkKQEAgLTEsNTcwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnIEFORAotICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SCi0gKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0gKiBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UgotICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0gKiBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQot
I2lmIChFTkFCTEUoV0VCS0lUMikgJiYgKE5FU1RFRF9NQVNURVJfQ09ORElUSU9OIHx8IE1BU1RF
Ul9PUiAmJiBNQVNURVJfQU5EKSkKLQotI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCi0jaW5j
bHVkZSAiQ29ubmVjdGlvbi5oIgotI2luY2x1ZGUgIlBsdWdpbi5oIgotI2luY2x1ZGUgIldlYlBh
Z2VNZXNzYWdlc1JlcGxpZXMuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXIuaD4K
LSNpbmNsdWRlIDxXZWJDb3JlL0tleWJvYXJkRXZlbnQuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1Bs
dWdpbkRhdGEuaD4KLSNpbmNsdWRlIDx1dGlsaXR5PgotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+
Ci0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNv
dW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBJUEMgewotY2xhc3MgRHVtbXlUeXBlOwotY2xhc3MgTWFj
aFBvcnQ7Ci19Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotY2xhc3MgV2ViUHJlZmVyZW5jZXNTdG9y
ZTsKLWNsYXNzIFdlYlRvdWNoRXZlbnQ7Ci19Ci0KLW5hbWVzcGFjZSBNZXNzYWdlcyB7Ci1uYW1l
c3BhY2UgV2ViUGFnZSB7Ci0KLXN0YXRpYyBpbmxpbmUgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVz
c2FnZVJlY2VpdmVyTmFtZSgpCi17Ci0gICAgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJX
ZWJQYWdlIik7Ci19Ci0KLWNsYXNzIExvYWRVUkwgewotcHVibGljOgotICAgIHR5cGVkZWYgc3Rk
Ojp0dXBsZTxjb25zdCBTdHJpbmcmPiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJp
bmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgp
OyB9Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6
OlN0cmluZ1JlZmVyZW5jZSgiTG9hZFVSTCIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNT
eW5jID0gZmFsc2U7Ci0KLSAgICBleHBsaWNpdCBMb2FkVVJMKGNvbnN0IFN0cmluZyYgdXJsKQot
ICAgICAgICA6IG1fYXJndW1lbnRzKHVybCkKLSAgICB7Ci0gICAgfQotCi0gICAgY29uc3QgQXJn
dW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1l
bnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19Owot
Ci0jaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLWNsYXNzIExvYWRTb21ldGhpbmcgewotcHVibGlj
OgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBTdHJpbmcmPiBBcmd1bWVudHM7Ci0KLSAg
ICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVz
c2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5h
bWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiTG9hZFNvbWV0aGluZyIpOyB9Ci0g
ICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7Ci0KLSAgICBleHBsaWNpdCBMb2Fk
U29tZXRoaW5nKGNvbnN0IFN0cmluZyYgdXJsKQotICAgICAgICA6IG1fYXJndW1lbnRzKHVybCkK
LSAgICB7Ci0gICAgfQotCi0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAot
ICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAg
ICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19OwotI2VuZGlmCi0KLSNpZiAoRU5BQkxFKFRPVUNI
X0VWRU5UUykgJiYgKE5FU1RFRF9NRVNTQUdFX0NPTkRJVElPTiB8fCBTT01FX09USEVSX01FU1NB
R0VfQ09ORElUSU9OKSkKLWNsYXNzIFRvdWNoRXZlbnQgewotcHVibGljOgotICAgIHR5cGVkZWYg
c3RkOjp0dXBsZTxjb25zdCBXZWJLaXQ6OldlYlRvdWNoRXZlbnQmPiBBcmd1bWVudHM7Ci0KLSAg
ICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVz
c2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5h
bWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiVG91Y2hFdmVudCIpOyB9Ci0gICAg
c3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7Ci0KLSAgICBleHBsaWNpdCBUb3VjaEV2
ZW50KGNvbnN0IFdlYktpdDo6V2ViVG91Y2hFdmVudCYgZXZlbnQpCi0gICAgICAgIDogbV9hcmd1
bWVudHMoZXZlbnQpCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1l
bnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0K
LXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLSNlbmRpZgotCi0jaWYg
KEVOQUJMRShUT1VDSF9FVkVOVFMpICYmIChORVNURURfTUVTU0FHRV9DT05ESVRJT04gJiYgU09N
RV9PVEhFUl9NRVNTQUdFX0NPTkRJVElPTikpCi1jbGFzcyBBZGRFdmVudCB7Ci1wdWJsaWM6Ci0g
ICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGNvbnN0IFdlYktpdDo6V2ViVG91Y2hFdmVudCY+IEFyZ3Vt
ZW50czsKLQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7
IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdS
ZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJBZGRFdmVudCIp
OyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7Ci0KLSAgICBleHBsaWNp
dCBBZGRFdmVudChjb25zdCBXZWJLaXQ6OldlYlRvdWNoRXZlbnQmIGV2ZW50KQotICAgICAgICA6
IG1fYXJndW1lbnRzKGV2ZW50KQotICAgIHsKLSAgICB9Ci0KLSAgICBjb25zdCBBcmd1bWVudHMm
IGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7Ci0g
ICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKLX07Ci0jZW5kaWYK
LQotI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCi1jbGFzcyBMb2FkU29tZXRoaW5nRWxzZSB7Ci1w
dWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGNvbnN0IFN0cmluZyY+IEFyZ3VtZW50czsK
LQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVy
biBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVu
Y2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJMb2FkU29tZXRoaW5nRWxz
ZSIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7Ci0KLSAgICBleHBs
aWNpdCBMb2FkU29tZXRoaW5nRWxzZShjb25zdCBTdHJpbmcmIHVybCkKLSAgICAgICAgOiBtX2Fy
Z3VtZW50cyh1cmwpCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1l
bnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0K
LXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLSNlbmRpZgotCi1jbGFz
cyBEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24gewotcHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0
dXBsZTx1aW50NjRfdCwgdWludDY0X3QsIHVpbnQzMl90PiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0
aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJl
Y2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7
IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiRGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uIik7
IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKLQotICAgIERpZFJlY2Vp
dmVQb2xpY3lEZWNpc2lvbih1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBsaXN0ZW5lcklELCB1
aW50MzJfdCBwb2xpY3lBY3Rpb24pCi0gICAgICAgIDogbV9hcmd1bWVudHMoZnJhbWVJRCwgbGlz
dGVuZXJJRCwgcG9saWN5QWN0aW9uKQotICAgIHsKLSAgICB9Ci0KLSAgICBjb25zdCBBcmd1bWVu
dHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7
Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKLX07Ci0KLWNs
YXNzIENsb3NlIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8PiBBcmd1bWVudHM7
Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1
cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJl
bmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiQ2xvc2UiKTsgfQotICAg
IHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOwotCi0gICAgY29uc3QgQXJndW1lbnRz
JiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwot
ICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19OwotCi1jbGFz
cyBQcmVmZXJlbmNlc0RpZENoYW5nZSB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxl
PGNvbnN0IFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZSY+IEFyZ3VtZW50czsKLQotICAgIHN0
YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNzYWdl
UmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgp
IHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJQcmVmZXJlbmNlc0RpZENoYW5nZSIpOyB9
Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7Ci0KLSAgICBleHBsaWNpdCBQ
cmVmZXJlbmNlc0RpZENoYW5nZShjb25zdCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmUmIHN0
b3JlKQotICAgICAgICA6IG1fYXJndW1lbnRzKHN0b3JlKQotICAgIHsKLSAgICB9Ci0KLSAgICBj
b25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4g
bV9hcmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50
czsKLX07Ci0KLWNsYXNzIFNlbmREb3VibGVBbmRGbG9hdCB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRl
ZiBzdGQ6OnR1cGxlPGRvdWJsZSwgZmxvYXQ+IEFyZ3VtZW50czsKLQotICAgIHN0YXRpYyBJUEM6
OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJO
YW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJu
IElQQzo6U3RyaW5nUmVmZXJlbmNlKCJTZW5kRG91YmxlQW5kRmxvYXQiKTsgfQotICAgIHN0YXRp
YyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOwotCi0gICAgU2VuZERvdWJsZUFuZEZsb2F0KGRv
dWJsZSBkLCBmbG9hdCBmKQotICAgICAgICA6IG1fYXJndW1lbnRzKGQsIGYpCi0gICAgewotICAg
IH0KLQotICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1lbnRz
IG1fYXJndW1lbnRzOwotfTsKLQotY2xhc3MgU2VuZEludHMgewotcHVibGljOgotICAgIHR5cGVk
ZWYgc3RkOjp0dXBsZTxjb25zdCBWZWN0b3I8dWludDY0X3Q+JiwgY29uc3QgVmVjdG9yPFZlY3Rv
cjx1aW50NjRfdD4+Jj4gQXJndW1lbnRzOwotCi0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJl
bmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsgfQotICAg
IHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpTdHJpbmdS
ZWZlcmVuY2UoIlNlbmRJbnRzIik7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBm
YWxzZTsKLQotICAgIFNlbmRJbnRzKGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIGludHMsIGNvbnN0
IFZlY3RvcjxWZWN0b3I8dWludDY0X3Q+PiYgaW50VmVjdG9ycykKLSAgICAgICAgOiBtX2FyZ3Vt
ZW50cyhpbnRzLCBpbnRWZWN0b3JzKQotICAgIHsKLSAgICB9Ci0KLSAgICBjb25zdCBBcmd1bWVu
dHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7
Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKLX07Ci0KLWNs
YXNzIENyZWF0ZVBsdWdpbiB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPHVpbnQ2
NF90LCBjb25zdCBXZWJLaXQ6OlBsdWdpbjo6UGFyYW1ldGVycyY+IEFyZ3VtZW50czsKLQotICAg
IHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNz
YWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFt
ZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJDcmVhdGVQbHVnaW4iKTsgfQotICAg
IHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IHRydWU7Ci0KLSAgICB1c2luZyBSZXBseSA9IHN0
ZDo6dHVwbGU8Ym9vbCY+OwotICAgIHVzaW5nIFJlcGx5QXJndW1lbnRzID0gc3RkOjp0dXBsZTxi
b29sPjsKLSAgICBDcmVhdGVQbHVnaW4odWludDY0X3QgcGx1Z2luSW5zdGFuY2VJRCwgY29uc3Qg
V2ViS2l0OjpQbHVnaW46OlBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCi0gICAgICAgIDogbV9hcmd1
bWVudHMocGx1Z2luSW5zdGFuY2VJRCwgcGFyYW1ldGVycykKLSAgICB7Ci0gICAgfQotCi0gICAg
Y29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJu
IG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1bWVudHMgbV9hcmd1bWVu
dHM7Ci19OwotCi1jbGFzcyBSdW5KYXZhU2NyaXB0QWxlcnQgewotcHVibGljOgotICAgIHR5cGVk
ZWYgc3RkOjp0dXBsZTx1aW50NjRfdCwgY29uc3QgU3RyaW5nJj4gQXJndW1lbnRzOwotCi0gICAg
c3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3Nh
Z2VSZWNlaXZlck5hbWUoKTsgfQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1l
KCkgeyByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIlJ1bkphdmFTY3JpcHRBbGVydCIpOyB9
Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gdHJ1ZTsKLQotICAgIHVzaW5nIFJlcGx5
ID0gc3RkOjp0dXBsZTw+OwotICAgIHVzaW5nIFJlcGx5QXJndW1lbnRzID0gc3RkOjp0dXBsZTw+
OwotICAgIFJ1bkphdmFTY3JpcHRBbGVydCh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcm
IG1lc3NhZ2UpCi0gICAgICAgIDogbV9hcmd1bWVudHMoZnJhbWVJRCwgbWVzc2FnZSkKLSAgICB7
Ci0gICAgfQotCi0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsK
LSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1
bWVudHMgbV9hcmd1bWVudHM7Ci19OwotCi1jbGFzcyBHZXRQbHVnaW5zIHsKLXB1YmxpYzoKLSAg
ICB0eXBlZGVmIHN0ZDo6dHVwbGU8Ym9vbD4gQXJndW1lbnRzOwotCi0gICAgc3RhdGljIElQQzo6
U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5h
bWUoKTsgfQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4g
SVBDOjpTdHJpbmdSZWZlcmVuY2UoIkdldFBsdWdpbnMiKTsgfQotICAgIHN0YXRpYyBjb25zdCBi
b29sIGlzU3luYyA9IHRydWU7Ci0KLSAgICB1c2luZyBSZXBseSA9IHN0ZDo6dHVwbGU8VmVjdG9y
PFdlYkNvcmU6OlBsdWdpbkluZm8+Jj47Ci0gICAgdXNpbmcgUmVwbHlBcmd1bWVudHMgPSBzdGQ6
OnR1cGxlPFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPj47Ci0gICAgZXhwbGljaXQgR2V0UGx1
Z2lucyhib29sIHJlZnJlc2gpCi0gICAgICAgIDogbV9hcmd1bWVudHMocmVmcmVzaCkKLSAgICB7
Ci0gICAgfQotCi0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsK
LSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1
bWVudHMgbV9hcmd1bWVudHM7Ci19OwotCi1jbGFzcyBHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlv
biB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGNvbnN0IFN0cmluZyY+IEFyZ3Vt
ZW50czsKLQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7
IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdS
ZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJHZXRQbHVnaW5Q
cm9jZXNzQ29ubmVjdGlvbiIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gdHJ1
ZTsKLQotICAgIHVzaW5nIERlbGF5ZWRSZXBseSA9IEdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9u
RGVsYXllZFJlcGx5OwotICAgIHN0YXRpYyB2b2lkIHNlbmQoc3RkOjp1bmlxdWVfcHRyPElQQzo6
RW5jb2Rlcj4mJiwgSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgSVBDOjpDb25uZWN0aW9uOjpIYW5k
bGUmIGNvbm5lY3Rpb25IYW5kbGUpOwotICAgIHVzaW5nIFJlcGx5ID0gc3RkOjp0dXBsZTxJUEM6
OkNvbm5lY3Rpb246OkhhbmRsZSY+OwotICAgIHVzaW5nIFJlcGx5QXJndW1lbnRzID0gc3RkOjp0
dXBsZTxJUEM6OkNvbm5lY3Rpb246OkhhbmRsZT47Ci0gICAgZXhwbGljaXQgR2V0UGx1Z2luUHJv
Y2Vzc0Nvbm5lY3Rpb24oY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoKQotICAgICAgICA6IG1fYXJn
dW1lbnRzKHBsdWdpblBhdGgpCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0IEFyZ3VtZW50cyYg
YXJndW1lbnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAg
ICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLQotY2xhc3Mg
VGVzdE11bHRpcGxlQXR0cmlidXRlcyB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxl
PD4gQXJndW1lbnRzOwotCi0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVy
TmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsgfQotICAgIHN0YXRpYyBJUEM6
OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIlRl
c3RNdWx0aXBsZUF0dHJpYnV0ZXMiKTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9
IHRydWU7Ci0KLSAgICB1c2luZyBEZWxheWVkUmVwbHkgPSBUZXN0TXVsdGlwbGVBdHRyaWJ1dGVz
RGVsYXllZFJlcGx5OwotICAgIHN0YXRpYyB2b2lkIHNlbmQoc3RkOjp1bmlxdWVfcHRyPElQQzo6
RW5jb2Rlcj4mJiwgSVBDOjpDb25uZWN0aW9uJik7Ci0gICAgdXNpbmcgUmVwbHkgPSBzdGQ6OnR1
cGxlPD47Ci0gICAgdXNpbmcgUmVwbHlBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPD47Ci0gICAgY29u
c3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1f
YXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7
Ci19OwotCi1jbGFzcyBUZXN0UGFyYW1ldGVyQXR0cmlidXRlcyB7Ci1wdWJsaWM6Ci0gICAgdHlw
ZWRlZiBzdGQ6OnR1cGxlPHVpbnQ2NF90LCBkb3VibGUsIGRvdWJsZT4gQXJndW1lbnRzOwotCi0g
ICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1l
c3NhZ2VSZWNlaXZlck5hbWUoKTsgfQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBu
YW1lKCkgeyByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIlRlc3RQYXJhbWV0ZXJBdHRyaWJ1
dGVzIik7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKLQotICAgIFRl
c3RQYXJhbWV0ZXJBdHRyaWJ1dGVzKHVpbnQ2NF90IGZvbywgZG91YmxlIGJhciwgZG91YmxlIGJh
eikKLSAgICAgICAgOiBtX2FyZ3VtZW50cyhmb28sIGJhciwgYmF6KQotICAgIHsKLSAgICB9Ci0K
LSAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewotICAgICAgICBy
ZXR1cm4gbV9hcmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBtX2Fy
Z3VtZW50czsKLX07Ci0KLWNsYXNzIFRlbXBsYXRlVGVzdCB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRl
ZiBzdGQ6OnR1cGxlPGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBzdGQ6OnBhaXI8U3RyaW5nLCB1aW50
NjRfdD4+Jj4gQXJndW1lbnRzOwotCi0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJl
Y2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsgfQotICAgIHN0YXRp
YyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVu
Y2UoIlRlbXBsYXRlVGVzdCIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFs
c2U7Ci0KLSAgICBleHBsaWNpdCBUZW1wbGF0ZVRlc3QoY29uc3QgSGFzaE1hcDxTdHJpbmcsIHN0
ZDo6cGFpcjxTdHJpbmcsIHVpbnQ2NF90Pj4mIGEpCi0gICAgICAgIDogbV9hcmd1bWVudHMoYSkK
LSAgICB7Ci0gICAgfQotCi0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAot
ICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAg
ICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19OwotCi1jbGFzcyBTZXRWaWRlb0xheWVySUQgewot
cHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBXZWJDb3JlOjpHcmFwaGljc0xh
eWVyOjpQbGF0Zm9ybUxheWVySUQmPiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJp
bmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgp
OyB9Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6
OlN0cmluZ1JlZmVyZW5jZSgiU2V0VmlkZW9MYXllcklEIik7IH0KLSAgICBzdGF0aWMgY29uc3Qg
Ym9vbCBpc1N5bmMgPSBmYWxzZTsKLQotICAgIGV4cGxpY2l0IFNldFZpZGVvTGF5ZXJJRChjb25z
dCBXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQmIHZpZGVvTGF5ZXJJRCkK
LSAgICAgICAgOiBtX2FyZ3VtZW50cyh2aWRlb0xheWVySUQpCi0gICAgewotICAgIH0KLQotICAg
IGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVy
biBtX2FyZ3VtZW50czsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJndW1l
bnRzOwotfTsKLQotI2lmIFBMQVRGT1JNKE1BQykKLWNsYXNzIERpZENyZWF0ZVdlYlByb2Nlc3ND
b25uZWN0aW9uIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8Y29uc3QgSVBDOjpN
YWNoUG9ydCY+IEFyZ3VtZW50czsKLQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBy
ZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0
aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJl
bmNlKCJEaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbiIpOyB9Ci0gICAgc3RhdGljIGNvbnN0
IGJvb2wgaXNTeW5jID0gZmFsc2U7Ci0KLSAgICBleHBsaWNpdCBEaWRDcmVhdGVXZWJQcm9jZXNz
Q29ubmVjdGlvbihjb25zdCBJUEM6Ok1hY2hQb3J0JiBjb25uZWN0aW9uSWRlbnRpZmllcikKLSAg
ICAgICAgOiBtX2FyZ3VtZW50cyhjb25uZWN0aW9uSWRlbnRpZmllcikKLSAgICB7Ci0gICAgfQot
Ci0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsKLSAgICAgICAg
cmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1bWVudHMgbV9h
cmd1bWVudHM7Ci19OwotI2VuZGlmCi0KLSNpZiBQTEFURk9STShNQUMpCi1jbGFzcyBJbnRlcnBy
ZXRLZXlFdmVudCB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPHVpbnQzMl90PiBB
cmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1l
KCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6U3Ry
aW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiSW50ZXJw
cmV0S2V5RXZlbnQiKTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IHRydWU7Ci0K
LSAgICB1c2luZyBSZXBseSA9IHN0ZDo6dHVwbGU8VmVjdG9yPFdlYkNvcmU6OktleXByZXNzQ29t
bWFuZD4mPjsKLSAgICB1c2luZyBSZXBseUFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8VmVjdG9yPFdl
YkNvcmU6OktleXByZXNzQ29tbWFuZD4+OwotICAgIGV4cGxpY2l0IEludGVycHJldEtleUV2ZW50
KHVpbnQzMl90IHR5cGUpCi0gICAgICAgIDogbV9hcmd1bWVudHModHlwZSkKLSAgICB7Ci0gICAg
fQotCi0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsKLSAgICAg
ICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1bWVudHMg
bV9hcmd1bWVudHM7Ci19OwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoREVQUkVDQVRFRF9GRUFUVVJF
KQotY2xhc3MgRGVwcmVjYXRlZE9wZXJhdGlvbiB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6
OnR1cGxlPGNvbnN0IElQQzo6RHVtbXlUeXBlJj4gQXJndW1lbnRzOwotCi0gICAgc3RhdGljIElQ
Qzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZl
ck5hbWUoKTsgfQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1
cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIkRlcHJlY2F0ZWRPcGVyYXRpb24iKTsgfQotICAgIHN0
YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOwotCi0gICAgZXhwbGljaXQgRGVwcmVjYXRl
ZE9wZXJhdGlvbihjb25zdCBJUEM6OkR1bW15VHlwZSYgZHVtbXkpCi0gICAgICAgIDogbV9hcmd1
bWVudHMoZHVtbXkpCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1l
bnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0K
LXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLSNlbmRpZgotCi0jaWYg
RU5BQkxFKEVYUEVSSU1FTlRBTF9GRUFUVVJFKQotY2xhc3MgRXhwZXJpbWVudGFsT3BlcmF0aW9u
IHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8Y29uc3QgSVBDOjpEdW1teVR5cGUm
PiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJO
YW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6
U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiRXhw
ZXJpbWVudGFsT3BlcmF0aW9uIik7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBm
YWxzZTsKLQotICAgIGV4cGxpY2l0IEV4cGVyaW1lbnRhbE9wZXJhdGlvbihjb25zdCBJUEM6OkR1
bW15VHlwZSYgZHVtbXkpCi0gICAgICAgIDogbV9hcmd1bWVudHMoZHVtbXkpCi0gICAgewotICAg
IH0KLQotICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1lbnRz
IG1fYXJndW1lbnRzOwotfTsKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBXZWJQYWdlCi19IC8v
IG5hbWVzcGFjZSBNZXNzYWdlcwotCi0jZW5kaWYgLy8gKEVOQUJMRShXRUJLSVQyKSAmJiAoTkVT
VEVEX01BU1RFUl9DT05ESVRJT04gfHwgTUFTVEVSX09SICYmIE1BU1RFUl9BTkQpKQoKUHJvcGVy
dHkgY2hhbmdlcyBvbjogU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9MZWdhY3lNZXNzYWdl
cy1leHBlY3RlZC5oCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMSArMCww
ICMjCi1uYXRpdmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogU291cmNl
L1dlYktpdC9TY3JpcHRzL3dlYmtpdC9MZWdhY3lNZXNzYWdlc1JlcGxpZXMtZXhwZWN0ZWQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L0xlZ2FjeU1lc3NhZ2Vz
UmVwbGllcy1leHBlY3RlZC5oCShyZXZpc2lvbiAyNjEwMzMpCisrKyBTb3VyY2UvV2ViS2l0L1Nj
cmlwdHMvd2Via2l0L0xlZ2FjeU1lc3NhZ2VzUmVwbGllcy1leHBlY3RlZC5oCShub25leGlzdGVu
dCkKQEAgLTEsNDMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMC0yMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycgQU5ECi0gKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IKLSAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSAqIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
Ci0gKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUgotICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSAqIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0j
aWYgKEVOQUJMRShXRUJLSVQyKSAmJiAoTkVTVEVEX01BU1RFUl9DT05ESVRJT04gfHwgTUFTVEVS
X09SICYmIE1BU1RFUl9BTkQpKQotCi0jaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgotI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+Ci0KLQotbmFtZXNwYWNlIE1lc3NhZ2VzIHsKLW5hbWVzcGFjZSBXZWJQ
YWdlIHsKLQotdXNpbmcgR2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25EZWxheWVkUmVwbHkgPSBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6Q29ubmVjdGlvbjo6SGFuZGxlJiBjb25u
ZWN0aW9uSGFuZGxlKT47Ci0KLXVzaW5nIFRlc3RNdWx0aXBsZUF0dHJpYnV0ZXNEZWxheWVkUmVw
bHkgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+OwotCi19IC8vIG5hbWVzcGFjZSBXZWJQYWdl
Ci19IC8vIG5hbWVzcGFjZSBNZXNzYWdlcwotCi0jZW5kaWYgLy8gKEVOQUJMRShXRUJLSVQyKSAm
JiAoTkVTVEVEX01BU1RFUl9DT05ESVRJT04gfHwgTUFTVEVSX09SICYmIE1BU1RFUl9BTkQpKQpJ
bmRleDogU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9NZXNzYWdlUmVjZWl2ZXItZXhwZWN0
ZWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvTWVzc2Fn
ZVJlY2VpdmVyLWV4cGVjdGVkLmNwcAkocmV2aXNpb24gMjYxMDMzKQorKysgU291cmNlL1dlYktp
dC9TY3JpcHRzL3dlYmtpdC9NZXNzYWdlUmVjZWl2ZXItZXhwZWN0ZWQuY3BwCShub25leGlzdGVu
dCkKQEAgLTEsMjAzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnIEFORAotICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SCi0gKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0gKiBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UgotICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0gKiBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmln
LmgiCi0KLSNpZiAoRU5BQkxFKFdFQktJVDIpICYmIChORVNURURfTUFTVEVSX0NPTkRJVElPTiB8
fCBNQVNURVJfT1IgJiYgTUFTVEVSX0FORCkpCi0KLSNpbmNsdWRlICJXZWJQYWdlLmgiCi0KLSNp
bmNsdWRlICJBcmd1bWVudENvZGVycy5oIgotI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKLSNpbmNs
dWRlICJEZWNvZGVyLmgiCi0jaWYgRU5BQkxFKERFUFJFQ0FURURfRkVBVFVSRSkgfHwgRU5BQkxF
KEVYUEVSSU1FTlRBTF9GRUFUVVJFKQotI2luY2x1ZGUgIkR1bW15VHlwZS5oIgotI2VuZGlmCi0j
aW5jbHVkZSAiSGFuZGxlTWVzc2FnZS5oIgotI2lmIFBMQVRGT1JNKE1BQykKLSNpbmNsdWRlICJN
YWNoUG9ydC5oIgotI2VuZGlmCi0jaW5jbHVkZSAiUGx1Z2luLmgiCi0jaW5jbHVkZSAiV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmgiCi0jaWYgKEVOQUJMRShUT1VDSF9FVkVOVFMpICYmIChORVNURURf
TUVTU0FHRV9DT05ESVRJT04gJiYgU09NRV9PVEhFUl9NRVNTQUdFX0NPTkRJVElPTikpIHx8IChF
TkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiAoTkVTVEVEX01FU1NBR0VfQ09ORElUSU9OIHx8IFNPTUVf
T1RIRVJfTUVTU0FHRV9DT05ESVRJT04pKQotI2luY2x1ZGUgIldlYkV2ZW50LmgiCi0jZW5kaWYK
LSNpbmNsdWRlICJXZWJQYWdlTWVzc2FnZXMuaCIKLSNpbmNsdWRlICJXZWJQcmVmZXJlbmNlc1N0
b3JlLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0xheWVyLmg+Ci0jaWYgUExBVEZPUk0o
TUFDKQotI2luY2x1ZGUgPFdlYkNvcmUvS2V5Ym9hcmRFdmVudC5oPgotI2VuZGlmCi0jaW5jbHVk
ZSA8V2ViQ29yZS9QbHVnaW5EYXRhLmg+Ci0jaW5jbHVkZSA8dXRpbGl0eT4KLSNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIE1lc3NhZ2VzIHsKLQotbmFtZXNwYWNlIFdlYlBh
Z2UgewotCi12b2lkIEdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpzZW5kKHN0ZDo6dW5pcXVl
X3B0cjxJUEM6OkVuY29kZXI+JiYgZW5jb2RlciwgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9u
LCBjb25zdCBJUEM6OkNvbm5lY3Rpb246OkhhbmRsZSYgY29ubmVjdGlvbkhhbmRsZSkKLXsKLSAg
ICAqZW5jb2RlciA8PCBjb25uZWN0aW9uSGFuZGxlOwotICAgIGNvbm5lY3Rpb24uc2VuZFN5bmNS
ZXBseShXVEZNb3ZlKGVuY29kZXIpKTsKLX0KLQotdm9pZCBUZXN0TXVsdGlwbGVBdHRyaWJ1dGVz
OjpzZW5kKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiYgZW5jb2RlciwgSVBDOjpDb25u
ZWN0aW9uJiBjb25uZWN0aW9uKQotewotICAgIGNvbm5lY3Rpb24uc2VuZFN5bmNSZXBseShXVEZN
b3ZlKGVuY29kZXIpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViUGFnZQotCi19IC8vIG5hbWVz
cGFjZSBNZXNzYWdlcwotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotdm9pZCBXZWJQYWdlOjpkaWRS
ZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYg
ZGVjb2RlcikKLXsKLSAgICBhdXRvIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKTsKLSAg
ICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkVVJM
OjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdl
OjpMb2FkVVJMPihkZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6bG9hZFVSTCk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0jaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLSAgICBpZiAoZGVjb2Rlci5t
ZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkU29tZXRoaW5nOjpuYW1lKCkp
IHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkU29t
ZXRoaW5nPihkZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6bG9hZFNvbWV0aGluZyk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0jZW5kaWYKLSNpZiAoRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgKE5F
U1RFRF9NRVNTQUdFX0NPTkRJVElPTiB8fCBTT01FX09USEVSX01FU1NBR0VfQ09ORElUSU9OKSkK
LSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpUb3Vj
aEV2ZW50OjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpX
ZWJQYWdlOjpUb3VjaEV2ZW50PihkZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6dG91Y2hFdmVudCk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYKLSNpZiAoRU5BQkxFKFRPVUNIX0VWRU5U
UykgJiYgKE5FU1RFRF9NRVNTQUdFX0NPTkRJVElPTiAmJiBTT01FX09USEVSX01FU1NBR0VfQ09O
RElUSU9OKSkKLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQ
YWdlOjpBZGRFdmVudDo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNz
YWdlczo6V2ViUGFnZTo6QWRkRXZlbnQ+KGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjphZGRFdmVu
dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYKLSNpZiBFTkFCTEUoVE9VQ0hfRVZF
TlRTKQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6
OkxvYWRTb21ldGhpbmdFbHNlOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdl
PE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkU29tZXRoaW5nRWxzZT4oZGVjb2RlciwgdGhpcywgJldl
YlBhZ2U6OmxvYWRTb21ldGhpbmdFbHNlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNlbmRp
ZgotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OkRp
ZFJlY2VpdmVQb2xpY3lEZWNpc2lvbjo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVz
c2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uPihkZWNvZGVy
LCB0aGlzLCAmV2ViUGFnZTo6ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpX
ZWJQYWdlOjpDbG9zZTo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNz
YWdlczo6V2ViUGFnZTo6Q2xvc2U+KGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjpjbG9zZSk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBN
ZXNzYWdlczo6V2ViUGFnZTo6UHJlZmVyZW5jZXNEaWRDaGFuZ2U6Om5hbWUoKSkgewotICAgICAg
ICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OlByZWZlcmVuY2VzRGlkQ2hh
bmdlPihkZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6cHJlZmVyZW5jZXNEaWRDaGFuZ2UpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVz
c2FnZXM6OldlYlBhZ2U6OlNlbmREb3VibGVBbmRGbG9hdDo6bmFtZSgpKSB7Ci0gICAgICAgIElQ
Qzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6U2VuZERvdWJsZUFuZEZsb2F0Pihk
ZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6c2VuZERvdWJsZUFuZEZsb2F0KTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpX
ZWJQYWdlOjpTZW5kSW50czo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxN
ZXNzYWdlczo6V2ViUGFnZTo6U2VuZEludHM+KGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjpzZW5k
SW50cyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5h
bWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6VGVzdFBhcmFtZXRlckF0dHJpYnV0ZXM6Om5hbWUo
KSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RQ
YXJhbWV0ZXJBdHRyaWJ1dGVzPihkZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6dGVzdFBhcmFtZXRl
ckF0dHJpYnV0ZXMpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChkZWNvZGVyLm1l
c3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OlRlbXBsYXRlVGVzdDo6bmFtZSgpKSB7
Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6VGVtcGxhdGVU
ZXN0PihkZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6dGVtcGxhdGVUZXN0KTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpX
ZWJQYWdlOjpTZXRWaWRlb0xheWVySUQ6Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1l
c3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OlNldFZpZGVvTGF5ZXJJRD4oZGVjb2RlciwgdGhpcywg
JldlYlBhZ2U6OnNldFZpZGVvTGF5ZXJJRCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jaWYg
UExBVEZPUk0oTUFDKQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6
OldlYlBhZ2U6OkRpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uOjpuYW1lKCkpIHsKLSAgICAg
ICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRDcmVhdGVXZWJQcm9j
ZXNzQ29ubmVjdGlvbj4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OmRpZENyZWF0ZVdlYlByb2Nl
c3NDb25uZWN0aW9uKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNlbmRpZgotI2lmIEVOQUJM
RShERVBSRUNBVEVEX0ZFQVRVUkUpCi0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBN
ZXNzYWdlczo6V2ViUGFnZTo6RGVwcmVjYXRlZE9wZXJhdGlvbjo6bmFtZSgpKSB7Ci0gICAgICAg
IElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6RGVwcmVjYXRlZE9wZXJhdGlv
bj4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OmRlcHJlY2F0ZWRPcGVyYXRpb24pOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotI2VuZGlmCi0jaWYgRU5BQkxFKEVYUEVSSU1FTlRBTF9GRUFUVVJF
KQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OkV4
cGVyaW1lbnRhbE9wZXJhdGlvbjo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2Fn
ZTxNZXNzYWdlczo6V2ViUGFnZTo6RXhwZXJpbWVudGFsT3BlcmF0aW9uPihkZWNvZGVyLCB0aGlz
LCAmV2ViUGFnZTo6ZXhwZXJpbWVudGFsT3BlcmF0aW9uKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLSNlbmRpZgotICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsKLSAgICBVTlVTRURfUEFS
QU0oZGVjb2Rlcik7Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLXZvaWQgV2ViUGFn
ZTo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBD
OjpEZWNvZGVyJiBkZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYgcmVwbHlF
bmNvZGVyKQotewotICAgIGF1dG8gcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpOwotICAg
IGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OkNyZWF0ZVBs
dWdpbjo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2Vi
UGFnZTo6Q3JlYXRlUGx1Z2luPihkZWNvZGVyLCAqcmVwbHlFbmNvZGVyLCB0aGlzLCAmV2ViUGFn
ZTo6Y3JlYXRlUGx1Z2luKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoZGVjb2Rl
ci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpSdW5KYXZhU2NyaXB0QWxlcnQ6
Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6
OlJ1bkphdmFTY3JpcHRBbGVydD4oZGVjb2RlciwgKnJlcGx5RW5jb2RlciwgdGhpcywgJldlYlBh
Z2U6OnJ1bkphdmFTY3JpcHRBbGVydCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYg
KGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6R2V0UGx1Z2luczo6
bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6
R2V0UGx1Z2lucz4oZGVjb2RlciwgKnJlcGx5RW5jb2RlciwgdGhpcywgJldlYlBhZ2U6OmdldFBs
dWdpbnMpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VO
YW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpu
YW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlU3luY2hyb25vdXM8TWVzc2FnZXM6
OldlYlBhZ2U6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uPihjb25uZWN0aW9uLCBkZWNvZGVy
LCByZXBseUVuY29kZXIsIHRoaXMsICZXZWJQYWdlOjpnZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlv
bik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUo
KSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6VGVzdE11bHRpcGxlQXR0cmlidXRlczo6bmFtZSgpKSB7
Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZVN5bmNocm9ub3VzV2FudHNDb25uZWN0aW9uPE1l
c3NhZ2VzOjpXZWJQYWdlOjpUZXN0TXVsdGlwbGVBdHRyaWJ1dGVzPihjb25uZWN0aW9uLCBkZWNv
ZGVyLCByZXBseUVuY29kZXIsIHRoaXMsICZXZWJQYWdlOjp0ZXN0TXVsdGlwbGVBdHRyaWJ1dGVz
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNpZiBQTEFURk9STShNQUMpCi0gICAgaWYgKGRl
Y29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6SW50ZXJwcmV0S2V5RXZl
bnQ6Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBh
Z2U6OkludGVycHJldEtleUV2ZW50PihkZWNvZGVyLCAqcmVwbHlFbmNvZGVyLCB0aGlzLCAmV2Vi
UGFnZTo6aW50ZXJwcmV0S2V5RXZlbnQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlm
Ci0gICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pOwotICAgIFVOVVNFRF9QQVJBTShkZWNvZGVy
KTsKLSAgICBVTlVTRURfUEFSQU0ocmVwbHlFbmNvZGVyKTsKLSAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLQotI2VuZGlmIC8vIChFTkFCTEUo
V0VCS0lUMikgJiYgKE5FU1RFRF9NQVNURVJfQ09ORElUSU9OIHx8IE1BU1RFUl9PUiAmJiBNQVNU
RVJfQU5EKSkKClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJr
aXQvTWVzc2FnZVJlY2VpdmVyLWV4cGVjdGVkLmNwcApfX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjpl
b2wtc3R5bGUKIyMgLTEgKzAsMCAjIwotbmF0aXZlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJv
cGVydHkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvTWVzc2FnZVJlY2VpdmVy
U3VwZXJjbGFzcy1leHBlY3RlZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TY3Jp
cHRzL3dlYmtpdC9NZXNzYWdlUmVjZWl2ZXJTdXBlcmNsYXNzLWV4cGVjdGVkLmNwcAkocmV2aXNp
b24gMjYxMDMzKQorKysgU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9NZXNzYWdlUmVjZWl2
ZXJTdXBlcmNsYXNzLWV4cGVjdGVkLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDE4OSArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKLSAqIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgot
ICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTAotICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSAqIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSCi0gKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaW5jbHVkZSAiV2Vi
UGFnZS5oIgotCi0jaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKLSNpbmNsdWRlICJEZWNvZGVy
LmgiCi0jaW5jbHVkZSAiSGFuZGxlTWVzc2FnZS5oIgotI2luY2x1ZGUgIlRlc3RDbGFzc05hbWUu
aCIKLSNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQotI2luY2x1ZGUgIlRlc3RUd29TdGF0ZUVudW0u
aCIKLSNlbmRpZgotI2luY2x1ZGUgIldlYlBhZ2VNZXNzYWdlcy5oIgotI2luY2x1ZGUgPHd0Zi9P
cHRpb25hbC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2Ug
TWVzc2FnZXMgewotCi1uYW1lc3BhY2UgV2ViUGFnZSB7Ci0KLSNpZiBFTkFCTEUoVEVTVF9GRUFU
VVJFKQotCi12b2lkIFRlc3RBc3luY01lc3NhZ2U6OmNhbGxSZXBseShJUEM6OkRlY29kZXImIGRl
Y29kZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0X3QmJik+JiYgY29tcGxldGlvbkhh
bmRsZXIpCi17Ci0gICAgT3B0aW9uYWw8dWludDY0X3Q+IHJlc3VsdDsKLSAgICBkZWNvZGVyID4+
IHJlc3VsdDsKLSAgICBpZiAoIXJlc3VsdCkgewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICAgICAgY2FuY2VsUmVwbHkoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoKnJlc3Vs
dCkpOwotfQotCi12b2lkIFRlc3RBc3luY01lc3NhZ2U6OmNhbmNlbFJlcGx5KENvbXBsZXRpb25I
YW5kbGVyPHZvaWQodWludDY0X3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCi17Ci0gICAgY29t
cGxldGlvbkhhbmRsZXIoSVBDOjpBc3luY1JlcGx5RXJyb3I8dWludDY0X3Q+OjpjcmVhdGUoKSk7
Ci19Ci0KLXZvaWQgVGVzdEFzeW5jTWVzc2FnZTo6c2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpF
bmNvZGVyPiYmIGVuY29kZXIsIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgdWludDY0X3Qg
cmVzdWx0KQotewotICAgICplbmNvZGVyIDw8IHJlc3VsdDsKLSAgICBjb25uZWN0aW9uLnNlbmRT
eW5jUmVwbHkoV1RGTW92ZShlbmNvZGVyKSk7Ci19Ci0KLSNlbmRpZgotCi0jaWYgRU5BQkxFKFRF
U1RfRkVBVFVSRSkKLQotdm9pZCBUZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJndW1lbnRzOjpjYWxs
UmVwbHkoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCi17Ci0gICAgY29tcGxldGlvbkhhbmRsZXIoKTsKLX0KLQotdm9p
ZCBUZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJndW1lbnRzOjpjYW5jZWxSZXBseShDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCi17Ci0gICAgY29tcGxldGlvbkhh
bmRsZXIoKTsKLX0KLQotdm9pZCBUZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJndW1lbnRzOjpzZW5k
KHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiYgZW5jb2RlciwgSVBDOjpDb25uZWN0aW9u
JiBjb25uZWN0aW9uKQotewotICAgIGNvbm5lY3Rpb24uc2VuZFN5bmNSZXBseShXVEZNb3ZlKGVu
Y29kZXIpKTsKLX0KLQotI2VuZGlmCi0KLSNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQotCi12b2lk
IFRlc3RBc3luY01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHM6OmNhbGxSZXBseShJUEM6OkRl
Y29kZXImIGRlY29kZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCYmLCB1aW50NjRfdCYm
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAgICBPcHRpb25hbDxib29sPiBmbGFnOwotICAg
IGRlY29kZXIgPj4gZmxhZzsKLSAgICBpZiAoIWZsYWcpIHsKLSAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0gICAgICAgIGNhbmNlbFJlcGx5KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBPcHRpb25hbDx1aW50NjRfdD4gdmFsdWU7
Ci0gICAgZGVjb2RlciA+PiB2YWx1ZTsKLSAgICBpZiAoIXZhbHVlKSB7Ci0gICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICBjYW5jZWxSZXBseShXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY29tcGxldGlvbkhhbmRsZXIo
V1RGTW92ZSgqZmxhZyksIFdURk1vdmUoKnZhbHVlKSk7Ci19Ci0KLXZvaWQgVGVzdEFzeW5jTWVz
c2FnZVdpdGhNdWx0aXBsZUFyZ3VtZW50czo6Y2FuY2VsUmVwbHkoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sJiYsIHVpbnQ2NF90JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIGNv
bXBsZXRpb25IYW5kbGVyKElQQzo6QXN5bmNSZXBseUVycm9yPGJvb2w+OjpjcmVhdGUoKSwgSVBD
OjpBc3luY1JlcGx5RXJyb3I8dWludDY0X3Q+OjpjcmVhdGUoKSk7Ci19Ci0KLXZvaWQgVGVzdEFz
eW5jTWVzc2FnZVdpdGhNdWx0aXBsZUFyZ3VtZW50czo6c2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBD
OjpFbmNvZGVyPiYmIGVuY29kZXIsIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgYm9vbCBm
bGFnLCB1aW50NjRfdCB2YWx1ZSkKLXsKLSAgICAqZW5jb2RlciA8PCBmbGFnOwotICAgICplbmNv
ZGVyIDw8IHZhbHVlOwotICAgIGNvbm5lY3Rpb24uc2VuZFN5bmNSZXBseShXVEZNb3ZlKGVuY29k
ZXIpKTsKLX0KLQotI2VuZGlmCi0KLXZvaWQgVGVzdFN5bmNNZXNzYWdlOjpzZW5kKHN0ZDo6dW5p
cXVlX3B0cjxJUEM6OkVuY29kZXI+JiYgZW5jb2RlciwgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0
aW9uLCB1aW50OF90IHJlcGx5KQotewotICAgICplbmNvZGVyIDw8IHJlcGx5OwotICAgIGNvbm5l
Y3Rpb24uc2VuZFN5bmNSZXBseShXVEZNb3ZlKGVuY29kZXIpKTsKLX0KLQotdm9pZCBUZXN0U3lu
Y2hyb25vdXNNZXNzYWdlOjpzZW5kKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiYgZW5j
b2RlciwgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBPcHRpb25hbDxXZWJLaXQ6
OlRlc3RDbGFzc05hbWU+JiBvcHRpb25hbFJlcGx5KQotewotICAgICplbmNvZGVyIDw8IG9wdGlv
bmFsUmVwbHk7Ci0gICAgY29ubmVjdGlvbi5zZW5kU3luY1JlcGx5KFdURk1vdmUoZW5jb2Rlcikp
OwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJQYWdlCi0KLX0gLy8gbmFtZXNwYWNlIE1lc3NhZ2Vz
Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi12b2lkIFdlYlBhZ2U6OmRpZFJlY2VpdmVNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQotewot
ICAgIGF1dG8gcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpOwotICAgIGlmIChkZWNvZGVy
Lm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRVUkw6Om5hbWUoKSkgewot
ICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRVUkw+KGRl
Y29kZXIsIHRoaXMsICZXZWJQYWdlOjpsb2FkVVJMKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LSNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkg
PT0gTWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RBc3luY01lc3NhZ2U6Om5hbWUoKSkgewotICAgICAg
ICBJUEM6OmhhbmRsZU1lc3NhZ2VBc3luYzxNZXNzYWdlczo6V2ViUGFnZTo6VGVzdEFzeW5jTWVz
c2FnZT4oY29ubmVjdGlvbiwgZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OnRlc3RBc3luY01lc3Nh
Z2UpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlmCi0jaWYgRU5BQkxFKFRFU1RfRkVB
VFVSRSkKLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdl
OjpUZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJndW1lbnRzOjpuYW1lKCkpIHsKLSAgICAgICAgSVBD
OjpoYW5kbGVNZXNzYWdlQXN5bmM8TWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RBc3luY01lc3NhZ2VX
aXRoTm9Bcmd1bWVudHM+KGNvbm5lY3Rpb24sIGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjp0ZXN0
QXN5bmNNZXNzYWdlV2l0aE5vQXJndW1lbnRzKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNl
bmRpZgotI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCi0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5h
bWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6VGVzdEFzeW5jTWVzc2FnZVdpdGhNdWx0aXBsZUFy
Z3VtZW50czo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZUFzeW5jPE1lc3Nh
Z2VzOjpXZWJQYWdlOjpUZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1lbnRzPihjb25u
ZWN0aW9uLCBkZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6dGVzdEFzeW5jTWVzc2FnZVdpdGhNdWx0
aXBsZUFyZ3VtZW50cyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYKLSAgICBXZWJQ
YWdlQmFzZTo6ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7Ci19Ci0KLXZv
aWQgV2ViUGFnZTo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVj
dGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVy
PiYgcmVwbHlFbmNvZGVyKQotewotICAgIGF1dG8gcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpOwotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6
OlRlc3RTeW5jTWVzc2FnZTo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZVN5
bmNocm9ub3VzPE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0U3luY01lc3NhZ2U+KGNvbm5lY3Rpb24s
IGRlY29kZXIsIHJlcGx5RW5jb2RlciwgdGhpcywgJldlYlBhZ2U6OnRlc3RTeW5jTWVzc2FnZSk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9
PSBNZXNzYWdlczo6V2ViUGFnZTo6VGVzdFN5bmNocm9ub3VzTWVzc2FnZTo6bmFtZSgpKSB7Ci0g
ICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZVN5bmNocm9ub3VzPE1lc3NhZ2VzOjpXZWJQYWdlOjpU
ZXN0U3luY2hyb25vdXNNZXNzYWdlPihjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIs
IHRoaXMsICZXZWJQYWdlOjp0ZXN0U3luY2hyb25vdXNNZXNzYWdlKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLSAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7Ci0gICAgVU5VU0VEX1BBUkFN
KGRlY29kZXIpOwotICAgIFVOVVNFRF9QQVJBTShyZXBseUVuY29kZXIpOwotICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQoKUHJvcGVydHkgY2hh
bmdlcyBvbjogU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9NZXNzYWdlUmVjZWl2ZXJTdXBl
cmNsYXNzLWV4cGVjdGVkLmNwcApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjplb2wtc3R5bGUKIyMg
LTEgKzAsMCAjIwotbmF0aXZlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvTWVzc2FnZXMtZXhwZWN0ZWQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L01lc3NhZ2VzLWV4cGVjdGVkLmgJ
KHJldmlzaW9uIDI2MTAzMykKKysrIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvTWVzc2Fn
ZXMtZXhwZWN0ZWQuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDU3MCArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDEwLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKLSAqIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgotICogQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTAotICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0gKiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLAotICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiAoRU5BQkxFKFdFQktJVDIpICYmIChORVNURURf
TUFTVEVSX0NPTkRJVElPTiB8fCBNQVNURVJfT1IgJiYgTUFTVEVSX0FORCkpCi0KLSNpbmNsdWRl
ICJBcmd1bWVudENvZGVycy5oIgotI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKLSNpbmNsdWRlICJQ
bHVnaW4uaCIKLSNpbmNsdWRlICJXZWJQYWdlTWVzc2FnZXNSZXBsaWVzLmgiCi0jaW5jbHVkZSA8
V2ViQ29yZS9HcmFwaGljc0xheWVyLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9LZXlib2FyZEV2ZW50
Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9QbHVnaW5EYXRhLmg+Ci0jaW5jbHVkZSA8dXRpbGl0eT4K
LSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5j
bHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgSVBDIHsKLWNs
YXNzIER1bW15VHlwZTsKLWNsYXNzIE1hY2hQb3J0OwotfQotCi1uYW1lc3BhY2UgV2ViS2l0IHsK
LWNsYXNzIFdlYlByZWZlcmVuY2VzU3RvcmU7Ci1jbGFzcyBXZWJUb3VjaEV2ZW50OwotfQotCi1u
YW1lc3BhY2UgTWVzc2FnZXMgewotbmFtZXNwYWNlIFdlYlBhZ2UgewotCi1zdGF0aWMgaW5saW5l
IElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUoKQotewotICAgIHJldHVy
biBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiV2ViUGFnZSIpOwotfQotCi1jbGFzcyBMb2FkVVJMIHsK
LXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8Y29uc3QgU3RyaW5nJj4gQXJndW1lbnRz
OwotCi0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0
dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsgfQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVy
ZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIkxvYWRVUkwiKTsgfQot
ICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOwotCi0gICAgZXhwbGljaXQgTG9h
ZFVSTChjb25zdCBTdHJpbmcmIHVybCkKLSAgICAgICAgOiBtX2FyZ3VtZW50cyh1cmwpCi0gICAg
ewotICAgIH0KLQotICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKLSAgICB7
Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJn
dW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLQotI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCi1jbGFz
cyBMb2FkU29tZXRoaW5nIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8Y29uc3Qg
U3RyaW5nJj4gQXJndW1lbnRzOwotCi0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJl
Y2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsgfQotICAgIHN0YXRp
YyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVu
Y2UoIkxvYWRTb21ldGhpbmciKTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZh
bHNlOwotCi0gICAgZXhwbGljaXQgTG9hZFNvbWV0aGluZyhjb25zdCBTdHJpbmcmIHVybCkKLSAg
ICAgICAgOiBtX2FyZ3VtZW50cyh1cmwpCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0IEFyZ3Vt
ZW50cyYgYXJndW1lbnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50
czsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLSNl
bmRpZgotCi0jaWYgKEVOQUJMRShUT1VDSF9FVkVOVFMpICYmIChORVNURURfTUVTU0FHRV9DT05E
SVRJT04gfHwgU09NRV9PVEhFUl9NRVNTQUdFX0NPTkRJVElPTikpCi1jbGFzcyBUb3VjaEV2ZW50
IHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8Y29uc3QgV2ViS2l0OjpXZWJUb3Vj
aEV2ZW50Jj4gQXJndW1lbnRzOwotCi0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJl
Y2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsgfQotICAgIHN0YXRp
YyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVu
Y2UoIlRvdWNoRXZlbnQiKTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNl
OwotCi0gICAgZXhwbGljaXQgVG91Y2hFdmVudChjb25zdCBXZWJLaXQ6OldlYlRvdWNoRXZlbnQm
IGV2ZW50KQotICAgICAgICA6IG1fYXJndW1lbnRzKGV2ZW50KQotICAgIHsKLSAgICB9Ci0KLSAg
ICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1
cm4gbV9hcmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3Vt
ZW50czsKLX07Ci0jZW5kaWYKLQotI2lmIChFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiAoTkVTVEVE
X01FU1NBR0VfQ09ORElUSU9OICYmIFNPTUVfT1RIRVJfTUVTU0FHRV9DT05ESVRJT04pKQotY2xh
c3MgQWRkRXZlbnQgewotcHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBXZWJL
aXQ6OldlYlRvdWNoRXZlbnQmPiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdS
ZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9
Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0
cmluZ1JlZmVyZW5jZSgiQWRkRXZlbnQiKTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3lu
YyA9IGZhbHNlOwotCi0gICAgZXhwbGljaXQgQWRkRXZlbnQoY29uc3QgV2ViS2l0OjpXZWJUb3Vj
aEV2ZW50JiBldmVudCkKLSAgICAgICAgOiBtX2FyZ3VtZW50cyhldmVudCkKLSAgICB7Ci0gICAg
fQotCi0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsKLSAgICAg
ICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1bWVudHMg
bV9hcmd1bWVudHM7Ci19OwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQotY2xh
c3MgTG9hZFNvbWV0aGluZ0Vsc2UgewotcHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxj
b25zdCBTdHJpbmcmPiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVu
Y2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAg
c3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1Jl
ZmVyZW5jZSgiTG9hZFNvbWV0aGluZ0Vsc2UiKTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlz
U3luYyA9IGZhbHNlOwotCi0gICAgZXhwbGljaXQgTG9hZFNvbWV0aGluZ0Vsc2UoY29uc3QgU3Ry
aW5nJiB1cmwpCi0gICAgICAgIDogbV9hcmd1bWVudHModXJsKQotICAgIHsKLSAgICB9Ci0KLSAg
ICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1
cm4gbV9hcmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3Vt
ZW50czsKLX07Ci0jZW5kaWYKLQotY2xhc3MgRGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uIHsKLXB1
YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8dWludDY0X3QsIHVpbnQ2NF90LCB1aW50MzJf
dD4gQXJndW1lbnRzOwotCi0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVy
TmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsgfQotICAgIHN0YXRpYyBJUEM6
OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIkRp
ZFJlY2VpdmVQb2xpY3lEZWNpc2lvbiIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5j
ID0gZmFsc2U7Ci0KLSAgICBEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24odWludDY0X3QgZnJhbWVJ
RCwgdWludDY0X3QgbGlzdGVuZXJJRCwgdWludDMyX3QgcG9saWN5QWN0aW9uKQotICAgICAgICA6
IG1fYXJndW1lbnRzKGZyYW1lSUQsIGxpc3RlbmVySUQsIHBvbGljeUFjdGlvbikKLSAgICB7Ci0g
ICAgfQotCi0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsKLSAg
ICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1bWVu
dHMgbV9hcmd1bWVudHM7Ci19OwotCi1jbGFzcyBDbG9zZSB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRl
ZiBzdGQ6OnR1cGxlPD4gQXJndW1lbnRzOwotCi0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJl
bmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsgfQotICAg
IHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpTdHJpbmdS
ZWZlcmVuY2UoIkNsb3NlIik7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxz
ZTsKLQotICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1lbnRz
IG1fYXJndW1lbnRzOwotfTsKLQotY2xhc3MgUHJlZmVyZW5jZXNEaWRDaGFuZ2UgewotcHVibGlj
OgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3Rv
cmUmPiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2
ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGljIElQ
Qzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgi
UHJlZmVyZW5jZXNEaWRDaGFuZ2UiKTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9
IGZhbHNlOwotCi0gICAgZXhwbGljaXQgUHJlZmVyZW5jZXNEaWRDaGFuZ2UoY29uc3QgV2ViS2l0
OjpXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSkKLSAgICAgICAgOiBtX2FyZ3VtZW50cyhzdG9y
ZSkKLSAgICB7Ci0gICAgfQotCi0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25z
dAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToK
LSAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19OwotCi1jbGFzcyBTZW5kRG91YmxlQW5kRmxv
YXQgewotcHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxkb3VibGUsIGZsb2F0PiBBcmd1
bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkg
eyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6U3RyaW5n
UmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiU2VuZERvdWJs
ZUFuZEZsb2F0Iik7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKLQot
ICAgIFNlbmREb3VibGVBbmRGbG9hdChkb3VibGUgZCwgZmxvYXQgZikKLSAgICAgICAgOiBtX2Fy
Z3VtZW50cyhkLCBmKQotICAgIHsKLSAgICB9Ci0KLSAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3Vt
ZW50cygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7Ci0gICAgfQot
Ci1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKLX07Ci0KLWNsYXNzIFNlbmRJ
bnRzIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8Y29uc3QgVmVjdG9yPHVpbnQ2
NF90PiYsIGNvbnN0IFZlY3RvcjxWZWN0b3I8dWludDY0X3Q+PiY+IEFyZ3VtZW50czsKLQotICAg
IHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNz
YWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFt
ZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJTZW5kSW50cyIpOyB9Ci0gICAgc3Rh
dGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7Ci0KLSAgICBTZW5kSW50cyhjb25zdCBWZWN0
b3I8dWludDY0X3Q+JiBpbnRzLCBjb25zdCBWZWN0b3I8VmVjdG9yPHVpbnQ2NF90Pj4mIGludFZl
Y3RvcnMpCi0gICAgICAgIDogbV9hcmd1bWVudHMoaW50cywgaW50VmVjdG9ycykKLSAgICB7Ci0g
ICAgfQotCi0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsKLSAg
ICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1bWVu
dHMgbV9hcmd1bWVudHM7Ci19OwotCi1jbGFzcyBDcmVhdGVQbHVnaW4gewotcHVibGljOgotICAg
IHR5cGVkZWYgc3RkOjp0dXBsZTx1aW50NjRfdCwgY29uc3QgV2ViS2l0OjpQbHVnaW46OlBhcmFt
ZXRlcnMmPiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVj
ZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGlj
IElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5j
ZSgiQ3JlYXRlUGx1Z2luIik7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSB0cnVl
OwotCi0gICAgdXNpbmcgUmVwbHkgPSBzdGQ6OnR1cGxlPGJvb2wmPjsKLSAgICB1c2luZyBSZXBs
eUFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8Ym9vbD47Ci0gICAgQ3JlYXRlUGx1Z2luKHVpbnQ2NF90
IHBsdWdpbkluc3RhbmNlSUQsIGNvbnN0IFdlYktpdDo6UGx1Z2luOjpQYXJhbWV0ZXJzJiBwYXJh
bWV0ZXJzKQotICAgICAgICA6IG1fYXJndW1lbnRzKHBsdWdpbkluc3RhbmNlSUQsIHBhcmFtZXRl
cnMpCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29u
c3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0KLXByaXZhdGU6
Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLQotY2xhc3MgUnVuSmF2YVNjcmlwdEFs
ZXJ0IHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8dWludDY0X3QsIGNvbnN0IFN0
cmluZyY+IEFyZ3VtZW50czsKLQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNl
aXZlck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMg
SVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNl
KCJSdW5KYXZhU2NyaXB0QWxlcnQiKTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9
IHRydWU7Ci0KLSAgICB1c2luZyBSZXBseSA9IHN0ZDo6dHVwbGU8PjsKLSAgICB1c2luZyBSZXBs
eUFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8PjsKLSAgICBSdW5KYXZhU2NyaXB0QWxlcnQodWludDY0
X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQotICAgICAgICA6IG1fYXJndW1lbnRz
KGZyYW1lSUQsIG1lc3NhZ2UpCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0IEFyZ3VtZW50cyYg
YXJndW1lbnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAg
ICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLQotY2xhc3Mg
R2V0UGx1Z2lucyB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGJvb2w+IEFyZ3Vt
ZW50czsKLQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7
IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdS
ZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJHZXRQbHVnaW5z
Iik7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSB0cnVlOwotCi0gICAgdXNpbmcg
UmVwbHkgPSBzdGQ6OnR1cGxlPFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiY+OwotICAgIHVz
aW5nIFJlcGx5QXJndW1lbnRzID0gc3RkOjp0dXBsZTxWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5m
bz4+OwotICAgIGV4cGxpY2l0IEdldFBsdWdpbnMoYm9vbCByZWZyZXNoKQotICAgICAgICA6IG1f
YXJndW1lbnRzKHJlZnJlc2gpCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0IEFyZ3VtZW50cyYg
YXJndW1lbnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAg
ICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLQotY2xhc3Mg
R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24gewotcHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0
dXBsZTxjb25zdCBTdHJpbmcmPiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdS
ZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9
Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0
cmluZ1JlZmVyZW5jZSgiR2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24iKTsgfQotICAgIHN0YXRp
YyBjb25zdCBib29sIGlzU3luYyA9IHRydWU7Ci0KLSAgICB1c2luZyBEZWxheWVkUmVwbHkgPSBH
ZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbkRlbGF5ZWRSZXBseTsKLSAgICBzdGF0aWMgdm9pZCBz
ZW5kKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiYsIElQQzo6Q29ubmVjdGlvbiYsIGNv
bnN0IElQQzo6Q29ubmVjdGlvbjo6SGFuZGxlJiBjb25uZWN0aW9uSGFuZGxlKTsKLSAgICB1c2lu
ZyBSZXBseSA9IHN0ZDo6dHVwbGU8SVBDOjpDb25uZWN0aW9uOjpIYW5kbGUmPjsKLSAgICB1c2lu
ZyBSZXBseUFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8SVBDOjpDb25uZWN0aW9uOjpIYW5kbGU+Owot
ICAgIGV4cGxpY2l0IEdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKGNvbnN0IFN0cmluZyYgcGx1
Z2luUGF0aCkKLSAgICAgICAgOiBtX2FyZ3VtZW50cyhwbHVnaW5QYXRoKQotICAgIHsKLSAgICB9
Ci0KLSAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewotICAgICAg
ICByZXR1cm4gbV9hcmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBt
X2FyZ3VtZW50czsKLX07Ci0KLWNsYXNzIFRlc3RNdWx0aXBsZUF0dHJpYnV0ZXMgewotcHVibGlj
OgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTw+IEFyZ3VtZW50czsKLQotICAgIHN0YXRpYyBJUEM6
OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJO
YW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJu
IElQQzo6U3RyaW5nUmVmZXJlbmNlKCJUZXN0TXVsdGlwbGVBdHRyaWJ1dGVzIik7IH0KLSAgICBz
dGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSB0cnVlOwotCi0gICAgdXNpbmcgRGVsYXllZFJlcGx5
ID0gVGVzdE11bHRpcGxlQXR0cmlidXRlc0RlbGF5ZWRSZXBseTsKLSAgICBzdGF0aWMgdm9pZCBz
ZW5kKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiYsIElQQzo6Q29ubmVjdGlvbiYpOwot
ICAgIHVzaW5nIFJlcGx5ID0gc3RkOjp0dXBsZTw+OwotICAgIHVzaW5nIFJlcGx5QXJndW1lbnRz
ID0gc3RkOjp0dXBsZTw+OwotICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QK
LSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0KLXByaXZhdGU6Ci0g
ICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLQotY2xhc3MgVGVzdFBhcmFtZXRlckF0dHJp
YnV0ZXMgewotcHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTx1aW50NjRfdCwgZG91Ymxl
LCBkb3VibGU+IEFyZ3VtZW50czsKLQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBy
ZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0
aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJl
bmNlKCJUZXN0UGFyYW1ldGVyQXR0cmlidXRlcyIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wg
aXNTeW5jID0gZmFsc2U7Ci0KLSAgICBUZXN0UGFyYW1ldGVyQXR0cmlidXRlcyh1aW50NjRfdCBm
b28sIGRvdWJsZSBiYXIsIGRvdWJsZSBiYXopCi0gICAgICAgIDogbV9hcmd1bWVudHMoZm9vLCBi
YXIsIGJheikKLSAgICB7Ci0gICAgfQotCi0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMo
KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJp
dmF0ZToKLSAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19OwotCi1jbGFzcyBUZW1wbGF0ZVRl
c3QgewotcHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBIYXNoTWFwPFN0cmlu
Zywgc3RkOjpwYWlyPFN0cmluZywgdWludDY0X3Q+PiY+IEFyZ3VtZW50czsKLQotICAgIHN0YXRp
YyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVj
ZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsg
cmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJUZW1wbGF0ZVRlc3QiKTsgfQotICAgIHN0YXRp
YyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOwotCi0gICAgZXhwbGljaXQgVGVtcGxhdGVUZXN0
KGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBzdGQ6OnBhaXI8U3RyaW5nLCB1aW50NjRfdD4+JiBhKQot
ICAgICAgICA6IG1fYXJndW1lbnRzKGEpCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0IEFyZ3Vt
ZW50cyYgYXJndW1lbnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50
czsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLQot
Y2xhc3MgU2V0VmlkZW9MYXllcklEIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8
Y29uc3QgV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklEJj4gQXJndW1lbnRz
OwotCi0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0
dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsgfQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVy
ZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIlNldFZpZGVvTGF5ZXJJ
RCIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7Ci0KLSAgICBleHBs
aWNpdCBTZXRWaWRlb0xheWVySUQoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6UGxhdGZv
cm1MYXllcklEJiB2aWRlb0xheWVySUQpCi0gICAgICAgIDogbV9hcmd1bWVudHModmlkZW9MYXll
cklEKQotICAgIHsKLSAgICB9Ci0KLSAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNv
bnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRl
OgotICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKLX07Ci0KLSNpZiBQTEFURk9STShNQUMpCi1j
bGFzcyBEaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbiB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRl
ZiBzdGQ6OnR1cGxlPGNvbnN0IElQQzo6TWFjaFBvcnQmPiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0
aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJl
Y2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7
IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiRGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rp
b24iKTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOwotCi0gICAgZXhw
bGljaXQgRGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oY29uc3QgSVBDOjpNYWNoUG9ydCYg
Y29ubmVjdGlvbklkZW50aWZpZXIpCi0gICAgICAgIDogbV9hcmd1bWVudHMoY29ubmVjdGlvbklk
ZW50aWZpZXIpCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRz
KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0KLXBy
aXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLSNlbmRpZgotCi0jaWYgUExB
VEZPUk0oTUFDKQotY2xhc3MgSW50ZXJwcmV0S2V5RXZlbnQgewotcHVibGljOgotICAgIHR5cGVk
ZWYgc3RkOjp0dXBsZTx1aW50MzJfdD4gQXJndW1lbnRzOwotCi0gICAgc3RhdGljIElQQzo6U3Ry
aW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUo
KTsgfQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBD
OjpTdHJpbmdSZWZlcmVuY2UoIkludGVycHJldEtleUV2ZW50Iik7IH0KLSAgICBzdGF0aWMgY29u
c3QgYm9vbCBpc1N5bmMgPSB0cnVlOwotCi0gICAgdXNpbmcgUmVwbHkgPSBzdGQ6OnR1cGxlPFZl
Y3RvcjxXZWJDb3JlOjpLZXlwcmVzc0NvbW1hbmQ+Jj47Ci0gICAgdXNpbmcgUmVwbHlBcmd1bWVu
dHMgPSBzdGQ6OnR1cGxlPFZlY3RvcjxXZWJDb3JlOjpLZXlwcmVzc0NvbW1hbmQ+PjsKLSAgICBl
eHBsaWNpdCBJbnRlcnByZXRLZXlFdmVudCh1aW50MzJfdCB0eXBlKQotICAgICAgICA6IG1fYXJn
dW1lbnRzKHR5cGUpCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1l
bnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0K
LXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLSNlbmRpZgotCi0jaWYg
RU5BQkxFKERFUFJFQ0FURURfRkVBVFVSRSkKLWNsYXNzIERlcHJlY2F0ZWRPcGVyYXRpb24gewot
cHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBJUEM6OkR1bW15VHlwZSY+IEFy
Z3VtZW50czsKLQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUo
KSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJp
bmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJEZXByZWNh
dGVkT3BlcmF0aW9uIik7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsK
LQotICAgIGV4cGxpY2l0IERlcHJlY2F0ZWRPcGVyYXRpb24oY29uc3QgSVBDOjpEdW1teVR5cGUm
IGR1bW15KQotICAgICAgICA6IG1fYXJndW1lbnRzKGR1bW15KQotICAgIHsKLSAgICB9Ci0KLSAg
ICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1
cm4gbV9hcmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3Vt
ZW50czsKLX07Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShFWFBFUklNRU5UQUxfRkVBVFVSRSkKLWNs
YXNzIEV4cGVyaW1lbnRhbE9wZXJhdGlvbiB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1
cGxlPGNvbnN0IElQQzo6RHVtbXlUeXBlJj4gQXJndW1lbnRzOwotCi0gICAgc3RhdGljIElQQzo6
U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5h
bWUoKTsgfQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4g
SVBDOjpTdHJpbmdSZWZlcmVuY2UoIkV4cGVyaW1lbnRhbE9wZXJhdGlvbiIpOyB9Ci0gICAgc3Rh
dGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7Ci0KLSAgICBleHBsaWNpdCBFeHBlcmltZW50
YWxPcGVyYXRpb24oY29uc3QgSVBDOjpEdW1teVR5cGUmIGR1bW15KQotICAgICAgICA6IG1fYXJn
dW1lbnRzKGR1bW15KQotICAgIHsKLSAgICB9Ci0KLSAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3Vt
ZW50cygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7Ci0gICAgfQot
Ci1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKLX07Ci0jZW5kaWYKLQotfSAv
LyBuYW1lc3BhY2UgV2ViUGFnZQotfSAvLyBuYW1lc3BhY2UgTWVzc2FnZXMKLQotI2VuZGlmIC8v
IChFTkFCTEUoV0VCS0lUMikgJiYgKE5FU1RFRF9NQVNURVJfQ09ORElUSU9OIHx8IE1BU1RFUl9P
UiAmJiBNQVNURVJfQU5EKSkKClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9XZWJLaXQvU2Ny
aXB0cy93ZWJraXQvTWVzc2FnZXMtZXhwZWN0ZWQuaApfX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjpl
b2wtc3R5bGUKIyMgLTEgKzAsMCAjIwotbmF0aXZlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJv
cGVydHkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvTWVzc2FnZXNSZXBsaWVz
LWV4cGVjdGVkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9N
ZXNzYWdlc1JlcGxpZXMtZXhwZWN0ZWQuaAkocmV2aXNpb24gMjYxMDMzKQorKysgU291cmNlL1dl
YktpdC9TY3JpcHRzL3dlYmtpdC9NZXNzYWdlc1JlcGxpZXMtZXhwZWN0ZWQuaAkobm9uZXhpc3Rl
bnQpCkBAIC0xLDQzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnIEFORAotICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SCi0gKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0gKiBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UgotICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0gKiBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQot
I2lmIChFTkFCTEUoV0VCS0lUMikgJiYgKE5FU1RFRF9NQVNURVJfQ09ORElUSU9OIHx8IE1BU1RF
Ul9PUiAmJiBNQVNURVJfQU5EKSkKLQotI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKLSNpbmNsdWRl
IDx3dGYvRm9yd2FyZC5oPgotCi0KLW5hbWVzcGFjZSBNZXNzYWdlcyB7Ci1uYW1lc3BhY2UgV2Vi
UGFnZSB7Ci0KLXVzaW5nIEdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uRGVsYXllZFJlcGx5ID0g
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkNvbm5lY3Rpb246OkhhbmRsZSYgY29u
bmVjdGlvbkhhbmRsZSk+OwotCi11c2luZyBUZXN0TXVsdGlwbGVBdHRyaWJ1dGVzRGVsYXllZFJl
cGx5ID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPjsKLQotfSAvLyBuYW1lc3BhY2UgV2ViUGFn
ZQotfSAvLyBuYW1lc3BhY2UgTWVzc2FnZXMKLQotI2VuZGlmIC8vIChFTkFCTEUoV0VCS0lUMikg
JiYgKE5FU1RFRF9NQVNURVJfQ09ORElUSU9OIHx8IE1BU1RFUl9PUiAmJiBNQVNURVJfQU5EKSkK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvTWVzc2FnZXNSZXBsaWVzU3VwZXJj
bGFzc1JlcGxpZXMtZXhwZWN0ZWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1Njcmlw
dHMvd2Via2l0L01lc3NhZ2VzUmVwbGllc1N1cGVyY2xhc3NSZXBsaWVzLWV4cGVjdGVkLmgJKHJl
dmlzaW9uIDI2MTAzMykKKysrIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvTWVzc2FnZXNS
ZXBsaWVzU3VwZXJjbGFzc1JlcGxpZXMtZXhwZWN0ZWQuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDUy
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAot
ICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SCi0gKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0gKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgotICogU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIKLSAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0gKiBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIlRl
c3RDbGFzc05hbWUuaCIKLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9P
cHRpb25hbC5oPgotCi0KLW5hbWVzcGFjZSBNZXNzYWdlcyB7Ci1uYW1lc3BhY2UgV2ViUGFnZSB7
Ci0KLSNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQotdXNpbmcgVGVzdEFzeW5jTWVzc2FnZUFzeW5j
UmVwbHkgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90IHJlc3VsdCk+OwotI2VuZGlm
Ci0KLSNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQotdXNpbmcgVGVzdEFzeW5jTWVzc2FnZVdpdGhO
b0FyZ3VtZW50c0FzeW5jUmVwbHkgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+OwotI2VuZGlm
Ci0KLSNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQotdXNpbmcgVGVzdEFzeW5jTWVzc2FnZVdpdGhN
dWx0aXBsZUFyZ3VtZW50c0FzeW5jUmVwbHkgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wg
ZmxhZywgdWludDY0X3QgdmFsdWUpPjsKLSNlbmRpZgotCi11c2luZyBUZXN0U3luY01lc3NhZ2VE
ZWxheWVkUmVwbHkgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ4X3QgcmVwbHkpPjsKLQot
dXNpbmcgVGVzdFN5bmNocm9ub3VzTWVzc2FnZURlbGF5ZWRSZXBseSA9IENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoY29uc3QgT3B0aW9uYWw8V2ViS2l0OjpUZXN0Q2xhc3NOYW1lPiYgb3B0aW9uYWxS
ZXBseSk+OwotCi19IC8vIG5hbWVzcGFjZSBXZWJQYWdlCi19IC8vIG5hbWVzcGFjZSBNZXNzYWdl
cwpJbmRleDogU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9NZXNzYWdlc1N1cGVyY2xhc3Mt
ZXhwZWN0ZWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L01l
c3NhZ2VzU3VwZXJjbGFzcy1leHBlY3RlZC5oCShyZXZpc2lvbiAyNjEwMzMpCisrKyBTb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvd2Via2l0L01lc3NhZ2VzU3VwZXJjbGFzcy1leHBlY3RlZC5oCShub25l
eGlzdGVudCkKQEAgLTEsMjA2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnIEFORAotICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0gKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0gKiBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUgotICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0g
KiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9u
Y2UKLQotI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCi0jaW5jbHVkZSAiQ29ubmVjdGlvbi5o
IgotI2luY2x1ZGUgIlRlc3RDbGFzc05hbWUuaCIKLSNpbmNsdWRlICJXZWJQYWdlTWVzc2FnZXNS
ZXBsaWVzLmgiCi0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvT3B0aW9u
YWwuaD4KLSNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci1lbnVtIGNsYXNzIFRl
c3RUd29TdGF0ZUVudW0gOiBib29sOwotfQotCi1uYW1lc3BhY2UgTWVzc2FnZXMgewotbmFtZXNw
YWNlIFdlYlBhZ2UgewotCi1zdGF0aWMgaW5saW5lIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3Nh
Z2VSZWNlaXZlck5hbWUoKQotewotICAgIHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiV2Vi
UGFnZSIpOwotfQotCi1jbGFzcyBMb2FkVVJMIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6
dHVwbGU8Y29uc3QgU3RyaW5nJj4gQXJndW1lbnRzOwotCi0gICAgc3RhdGljIElQQzo6U3RyaW5n
UmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsg
fQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpT
dHJpbmdSZWZlcmVuY2UoIkxvYWRVUkwiKTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3lu
YyA9IGZhbHNlOwotCi0gICAgZXhwbGljaXQgTG9hZFVSTChjb25zdCBTdHJpbmcmIHVybCkKLSAg
ICAgICAgOiBtX2FyZ3VtZW50cyh1cmwpCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0IEFyZ3Vt
ZW50cyYgYXJndW1lbnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50
czsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLQot
I2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCi1jbGFzcyBUZXN0QXN5bmNNZXNzYWdlIHsKLXB1Ymxp
YzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8V2ViS2l0OjpUZXN0VHdvU3RhdGVFbnVtPiBBcmd1
bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkg
eyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6U3RyaW5n
UmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiVGVzdEFzeW5j
TWVzc2FnZSIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7Ci0KLSAg
ICBzdGF0aWMgdm9pZCBjYWxsUmVwbHkoSVBDOjpEZWNvZGVyJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCh1aW50NjRfdCYmKT4mJik7Ci0gICAgc3RhdGljIHZvaWQgY2FuY2VsUmVwbHkoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCYmKT4mJik7Ci0gICAgc3RhdGljIElQQzo6U3RyaW5n
UmVmZXJlbmNlIGFzeW5jTWVzc2FnZVJlcGx5TmFtZSgpIHsgcmV0dXJuIHsgIlRlc3RBc3luY01l
c3NhZ2VSZXBseSIgfTsgfQotICAgIHVzaW5nIEFzeW5jUmVwbHkgPSBUZXN0QXN5bmNNZXNzYWdl
QXN5bmNSZXBseTsKLSAgICBzdGF0aWMgdm9pZCBzZW5kKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVu
Y29kZXI+JiYsIElQQzo6Q29ubmVjdGlvbiYsIHVpbnQ2NF90IHJlc3VsdCk7Ci0gICAgdXNpbmcg
UmVwbHkgPSBzdGQ6OnR1cGxlPHVpbnQ2NF90Jj47Ci0gICAgdXNpbmcgUmVwbHlBcmd1bWVudHMg
PSBzdGQ6OnR1cGxlPHVpbnQ2NF90PjsKLSAgICBleHBsaWNpdCBUZXN0QXN5bmNNZXNzYWdlKFdl
YktpdDo6VGVzdFR3b1N0YXRlRW51bSB0d29TdGF0ZUVudW0pCi0gICAgICAgIDogbV9hcmd1bWVu
dHModHdvU3RhdGVFbnVtKQotICAgIHsKLSAgICB9Ci0KLSAgICBjb25zdCBBcmd1bWVudHMmIGFy
Z3VtZW50cygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7Ci0gICAg
fQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKLX07Ci0jZW5kaWYKLQot
I2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCi1jbGFzcyBUZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJn
dW1lbnRzIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8PiBBcmd1bWVudHM7Ci0K
LSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4g
bWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNl
IG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiVGVzdEFzeW5jTWVzc2FnZVdp
dGhOb0FyZ3VtZW50cyIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7
Ci0KLSAgICBzdGF0aWMgdm9pZCBjYWxsUmVwbHkoSVBDOjpEZWNvZGVyJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKLSAgICBzdGF0aWMgdm9pZCBjYW5jZWxSZXBseShDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBhc3lu
Y01lc3NhZ2VSZXBseU5hbWUoKSB7IHJldHVybiB7ICJUZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJn
dW1lbnRzUmVwbHkiIH07IH0KLSAgICB1c2luZyBBc3luY1JlcGx5ID0gVGVzdEFzeW5jTWVzc2Fn
ZVdpdGhOb0FyZ3VtZW50c0FzeW5jUmVwbHk7Ci0gICAgc3RhdGljIHZvaWQgc2VuZChzdGQ6OnVu
aXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYmLCBJUEM6OkNvbm5lY3Rpb24mKTsKLSAgICB1c2luZyBS
ZXBseSA9IHN0ZDo6dHVwbGU8PjsKLSAgICB1c2luZyBSZXBseUFyZ3VtZW50cyA9IHN0ZDo6dHVw
bGU8PjsKLSAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewotICAg
ICAgICByZXR1cm4gbV9hcmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50
cyBtX2FyZ3VtZW50czsKLX07Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCi1j
bGFzcyBUZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1lbnRzIHsKLXB1YmxpYzoKLSAg
ICB0eXBlZGVmIHN0ZDo6dHVwbGU8PiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJp
bmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgp
OyB9Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6
OlN0cmluZ1JlZmVyZW5jZSgiVGVzdEFzeW5jTWVzc2FnZVdpdGhNdWx0aXBsZUFyZ3VtZW50cyIp
OyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7Ci0KLSAgICBzdGF0aWMg
dm9pZCBjYWxsUmVwbHkoSVBDOjpEZWNvZGVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
JiYsIHVpbnQ2NF90JiYpPiYmKTsKLSAgICBzdGF0aWMgdm9pZCBjYW5jZWxSZXBseShDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wmJiwgdWludDY0X3QmJik+JiYpOwotICAgIHN0YXRpYyBJUEM6
OlN0cmluZ1JlZmVyZW5jZSBhc3luY01lc3NhZ2VSZXBseU5hbWUoKSB7IHJldHVybiB7ICJUZXN0
QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1lbnRzUmVwbHkiIH07IH0KLSAgICB1c2luZyBB
c3luY1JlcGx5ID0gVGVzdEFzeW5jTWVzc2FnZVdpdGhNdWx0aXBsZUFyZ3VtZW50c0FzeW5jUmVw
bHk7Ci0gICAgc3RhdGljIHZvaWQgc2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYm
LCBJUEM6OkNvbm5lY3Rpb24mLCBib29sIGZsYWcsIHVpbnQ2NF90IHZhbHVlKTsKLSAgICB1c2lu
ZyBSZXBseSA9IHN0ZDo6dHVwbGU8Ym9vbCYsIHVpbnQ2NF90Jj47Ci0gICAgdXNpbmcgUmVwbHlB
cmd1bWVudHMgPSBzdGQ6OnR1cGxlPGJvb2wsIHVpbnQ2NF90PjsKLSAgICBjb25zdCBBcmd1bWVu
dHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7
Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKLX07Ci0jZW5k
aWYKLQotY2xhc3MgVGVzdFN5bmNNZXNzYWdlIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6
dHVwbGU8dWludDMyX3Q+IEFyZ3VtZW50czsKLQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVy
ZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAg
ICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5n
UmVmZXJlbmNlKCJUZXN0U3luY01lc3NhZ2UiKTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlz
U3luYyA9IHRydWU7Ci0KLSAgICB1c2luZyBEZWxheWVkUmVwbHkgPSBUZXN0U3luY01lc3NhZ2VE
ZWxheWVkUmVwbHk7Ci0gICAgc3RhdGljIHZvaWQgc2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpF
bmNvZGVyPiYmLCBJUEM6OkNvbm5lY3Rpb24mLCB1aW50OF90IHJlcGx5KTsKLSAgICB1c2luZyBS
ZXBseSA9IHN0ZDo6dHVwbGU8dWludDhfdCY+OwotICAgIHVzaW5nIFJlcGx5QXJndW1lbnRzID0g
c3RkOjp0dXBsZTx1aW50OF90PjsKLSAgICBleHBsaWNpdCBUZXN0U3luY01lc3NhZ2UodWludDMy
X3QgcGFyYW0pCi0gICAgICAgIDogbV9hcmd1bWVudHMocGFyYW0pCi0gICAgewotICAgIH0KLQot
ICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJn
dW1lbnRzOwotfTsKLQotY2xhc3MgVGVzdFN5bmNocm9ub3VzTWVzc2FnZSB7Ci1wdWJsaWM6Ci0g
ICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGJvb2w+IEFyZ3VtZW50czsKLQotICAgIHN0YXRpYyBJUEM6
OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJO
YW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJu
IElQQzo6U3RyaW5nUmVmZXJlbmNlKCJUZXN0U3luY2hyb25vdXNNZXNzYWdlIik7IH0KLSAgICBz
dGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSB0cnVlOwotCi0gICAgdXNpbmcgRGVsYXllZFJlcGx5
ID0gVGVzdFN5bmNocm9ub3VzTWVzc2FnZURlbGF5ZWRSZXBseTsKLSAgICBzdGF0aWMgdm9pZCBz
ZW5kKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiYsIElQQzo6Q29ubmVjdGlvbiYsIGNv
bnN0IE9wdGlvbmFsPFdlYktpdDo6VGVzdENsYXNzTmFtZT4mIG9wdGlvbmFsUmVwbHkpOwotICAg
IHVzaW5nIFJlcGx5ID0gc3RkOjp0dXBsZTxPcHRpb25hbDxXZWJLaXQ6OlRlc3RDbGFzc05hbWU+
Jj47Ci0gICAgdXNpbmcgUmVwbHlBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPE9wdGlvbmFsPFdlYktp
dDo6VGVzdENsYXNzTmFtZT4+OwotICAgIGV4cGxpY2l0IFRlc3RTeW5jaHJvbm91c01lc3NhZ2Uo
Ym9vbCB2YWx1ZSkKLSAgICAgICAgOiBtX2FyZ3VtZW50cyh2YWx1ZSkKLSAgICB7Ci0gICAgfQot
Ci0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsKLSAgICAgICAg
cmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1bWVudHMgbV9h
cmd1bWVudHM7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJQYWdlCi19IC8vIG5hbWVzcGFjZSBN
ZXNzYWdlcwoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtp
dC9NZXNzYWdlc1N1cGVyY2xhc3MtZXhwZWN0ZWQuaApfX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjpl
b2wtc3R5bGUKIyMgLTEgKzAsMCAjIwotbmF0aXZlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJv
cGVydHkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQkocmV2
aXNpb24gMjYxMDMzKQorKysgU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5w
eQkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQCBTWU5DSFJPTk9VU19BVFRSSUJVVEUg
PSAnU3luY2hyb25vdXMnCiBBU1lOQ19BVFRSSUJVVEUgPSAnQXN5bmMnCiAKIF9saWNlbnNlX2hl
YWRlciA9ICIiIi8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEz
NCw3ICsxMzQsNyBAQCBkZWYgbWVzc2FnZV90b19yZXBseV9mb3J3YXJkX2RlY2xhcmF0aW9uCiAg
ICAgcmV0dXJuIHN1cnJvdW5kX2luX2NvbmRpdGlvbignJy5qb2luKHJlc3VsdCksIG1lc3NhZ2Uu
Y29uZGl0aW9uKQogCiAKLWRlZiBtZXNzYWdlX3RvX3N0cnVjdF9kZWNsYXJhdGlvbihtZXNzYWdl
KToKK2RlZiBtZXNzYWdlX3RvX3N0cnVjdF9kZWNsYXJhdGlvbihyZWNlaXZlciwgbWVzc2FnZSk6
CiAgICAgcmVzdWx0ID0gW10KICAgICBmdW5jdGlvbl9wYXJhbWV0ZXJzID0gWyhmdW5jdGlvbl9w
YXJhbWV0ZXJfdHlwZSh4LnR5cGUsIHgua2luZCksIHgubmFtZSkgZm9yIHggaW4gbWVzc2FnZS5w
YXJhbWV0ZXJzXQogCkBAIC0xNDIsOCArMTQyLDcgQEAgZGVmIG1lc3NhZ2VfdG9fc3RydWN0X2Rl
Y2xhcmF0aW9uKG1lc3NhZwogICAgIHJlc3VsdC5hcHBlbmQoJ3B1YmxpYzpcbicpCiAgICAgcmVz
dWx0LmFwcGVuZCgnICAgIHR5cGVkZWYgJXMgQXJndW1lbnRzO1xuJyAlIGFyZ3VtZW50c190eXBl
KG1lc3NhZ2UpKQogICAgIHJlc3VsdC5hcHBlbmQoJ1xuJykKLSAgICByZXN1bHQuYXBwZW5kKCcg
ICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1l
c3NhZ2VSZWNlaXZlck5hbWUoKTsgfVxuJykKLSAgICByZXN1bHQuYXBwZW5kKCcgICAgc3RhdGlj
IElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5j
ZSgiJXMiKTsgfVxuJyAlIG1lc3NhZ2UubmFtZSkKKyAgICByZXN1bHQuYXBwZW5kKCcgICAgc3Rh
dGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OiVz
XyVzOyB9XG4nICUgKHJlY2VpdmVyLm5hbWUsIG1lc3NhZ2UubmFtZSkpCiAgICAgcmVzdWx0LmFw
cGVuZCgnICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9ICVzO1xuJyAlICgnZmFsc2UnLCAn
dHJ1ZScpW21lc3NhZ2UucmVwbHlfcGFyYW1ldGVycyAhPSBOb25lIGFuZCBub3QgbWVzc2FnZS5o
YXNfYXR0cmlidXRlKEFTWU5DX0FUVFJJQlVURSldKQogICAgIHJlc3VsdC5hcHBlbmQoJ1xuJykK
ICAgICBpZiBtZXNzYWdlLnJlcGx5X3BhcmFtZXRlcnMgIT0gTm9uZToKQEAgLTE1Myw3ICsxNTIs
NyBAQCBkZWYgbWVzc2FnZV90b19zdHJ1Y3RfZGVjbGFyYXRpb24obWVzc2FnCiAgICAgICAgICAg
ICBtb3ZlX3BhcmFtZXRlcnMgPSAnLCAnLmpvaW4oW21vdmVfdHlwZSh4LnR5cGUpIGZvciB4IGlu
IG1lc3NhZ2UucmVwbHlfcGFyYW1ldGVyc10pCiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcg
ICAgc3RhdGljIHZvaWQgY2FsbFJlcGx5KElQQzo6RGVjb2RlciYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoJXMpPiYmKTtcbicgJSBtb3ZlX3BhcmFtZXRlcnMpCiAgICAgICAgICAgICByZXN1bHQu
YXBwZW5kKCcgICAgc3RhdGljIHZvaWQgY2FuY2VsUmVwbHkoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCglcyk+JiYpO1xuJyAlIG1vdmVfcGFyYW1ldGVycykKLSAgICAgICAgICAgIHJlc3VsdC5hcHBl
bmQoJyAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgYXN5bmNNZXNzYWdlUmVwbHlOYW1l
KCkgeyByZXR1cm4geyAiJXNSZXBseSIgfTsgfVxuJyAlIG1lc3NhZ2UubmFtZSkKKyAgICAgICAg
ICAgIHJlc3VsdC5hcHBlbmQoJyAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBhc3luY01lc3Nh
Z2VSZXBseU5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjolc18lc1JlcGx5OyB9XG4n
ICUgKHJlY2VpdmVyLm5hbWUsIG1lc3NhZ2UubmFtZSkpCiAgICAgICAgICAgICByZXN1bHQuYXBw
ZW5kKCcgICAgdXNpbmcgQXN5bmNSZXBseSA9ICVzQXN5bmNSZXBseTtcbicgJSBtZXNzYWdlLm5h
bWUpCiAgICAgICAgIGVsaWYgbWVzc2FnZS5oYXNfYXR0cmlidXRlKFNZTkNIUk9OT1VTX0FUVFJJ
QlVURSk6CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgdXNpbmcgRGVsYXllZFJlcGx5
ID0gJXNEZWxheWVkUmVwbHk7XG4nICUgbWVzc2FnZS5uYW1lKQpAQCAtMjc3LDggKzI3Niw5IEBA
IGRlZiBmb3J3YXJkX2RlY2xhcmF0aW9uc19hbmRfaGVhZGVycyhyZWMKIAogICAgIGhlYWRlcnMg
PSBzZXQoWwogICAgICAgICAnIkFyZ3VtZW50Q29kZXJzLmgiJywKLSAgICAgICAgJzx3dGYvRm9y
d2FyZC5oPicsCiAgICAgICAgICciQ29ubmVjdGlvbi5oIicsCisgICAgICAgICciTWVzc2FnZU5h
bWVzLmgiJywKKyAgICAgICAgJzx3dGYvRm9yd2FyZC5oPicsCiAgICAgICAgICc8d3RmL1RocmVh
ZFNhZmVSZWZDb3VudGVkLmg+JywKICAgICAgICAgJyIlc01lc3NhZ2VzUmVwbGllcy5oIicgJSBy
ZWNlaXZlci5uYW1lLAogICAgIF0pCkBAIC0zMzUsNiArMzM1LDcgQEAgZGVmIGZvcndhcmRfZGVj
bGFyYXRpb25zX2FuZF9oZWFkZXJzX2ZvcgogCiAgICAgaGVhZGVycyA9IHNldChbCiAgICAgICAg
ICc8d3RmL0ZvcndhcmQuaD4nLAorICAgICAgICAnIk1lc3NhZ2VOYW1lcy5oIicsCiAgICAgXSkK
IAogICAgIG5vbl90ZW1wbGF0ZV93dGZfdHlwZXMgPSBmcm96ZW5zZXQoWwpAQCAtNDQwLDEyICs0
NDEsMTIgQEAgZGVmIGdlbmVyYXRlX21lc3NhZ2VzX2hlYWRlcihyZWNlaXZlcik6CiAKICAgICBy
ZXN1bHQuYXBwZW5kKCduYW1lc3BhY2UgTWVzc2FnZXMge1xubmFtZXNwYWNlICVzIHtcbicgJSBy
ZWNlaXZlci5uYW1lKQogICAgIHJlc3VsdC5hcHBlbmQoJ1xuJykKLSAgICByZXN1bHQuYXBwZW5k
KCdzdGF0aWMgaW5saW5lIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUo
KVxuJykKKyAgICByZXN1bHQuYXBwZW5kKCdzdGF0aWMgaW5saW5lIElQQzo6UmVjZWl2ZXJOYW1l
IG1lc3NhZ2VSZWNlaXZlck5hbWUoKVxuJykKICAgICByZXN1bHQuYXBwZW5kKCd7XG4nKQotICAg
IHJlc3VsdC5hcHBlbmQoJyAgICByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIiVzIik7XG4n
ICUgcmVjZWl2ZXIubmFtZSkKKyAgICByZXN1bHQuYXBwZW5kKCcgICAgcmV0dXJuIElQQzo6UmVj
ZWl2ZXJOYW1lOjolcztcbicgJSByZWNlaXZlci5uYW1lKQogICAgIHJlc3VsdC5hcHBlbmQoJ31c
bicpCiAgICAgcmVzdWx0LmFwcGVuZCgnXG4nKQotICAgIHJlc3VsdC5hcHBlbmQoJ1xuJy5qb2lu
KFttZXNzYWdlX3RvX3N0cnVjdF9kZWNsYXJhdGlvbih4KSBmb3IgeCBpbiByZWNlaXZlci5tZXNz
YWdlc10pKQorICAgIHJlc3VsdC5hcHBlbmQoJ1xuJy5qb2luKFttZXNzYWdlX3RvX3N0cnVjdF9k
ZWNsYXJhdGlvbihyZWNlaXZlciwgeCkgZm9yIHggaW4gcmVjZWl2ZXIubWVzc2FnZXNdKSkKICAg
ICByZXN1bHQuYXBwZW5kKCdcbicpCiAgICAgcmVzdWx0LmFwcGVuZCgnfSAvLyBuYW1lc3BhY2Ug
JXNcbn0gLy8gbmFtZXNwYWNlIE1lc3NhZ2VzXG4nICUgcmVjZWl2ZXIubmFtZSkKIApAQCAtODQ4
LDMgKzg0OSwxNzQgQEAgZGVmIGdlbmVyYXRlX21lc3NhZ2VfaGFuZGxlcihyZWNlaXZlcik6CiAg
ICAgICAgIHJlc3VsdC5hcHBlbmQoJ1xuI2VuZGlmIC8vICVzXG4nICUgcmVjZWl2ZXIuY29uZGl0
aW9uKQogCiAgICAgcmV0dXJuICcnLmpvaW4ocmVzdWx0KQorCisKK2RlZiBnZW5lcmF0ZV9tZXNz
YWdlX25hbWVzX2hlYWRlcihyZWNlaXZlcnMpOgorICAgIHJlc3VsdCA9IFtdCisgICAgcmVzdWx0
LmFwcGVuZChfbGljZW5zZV9oZWFkZXIpCisgICAgcmVzdWx0LmFwcGVuZCgnI3ByYWdtYSBvbmNl
XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJ1xuJykKKyAgICByZXN1bHQuYXBwZW5kKCcjaW5jbHVk
ZSA8d3RmL0VudW1UcmFpdHMuaD5cbicpCisgICAgcmVzdWx0LmFwcGVuZCgnXG4nKQorICAgIHJl
c3VsdC5hcHBlbmQoJ25hbWVzcGFjZSBJUEMge1xuJykKKyAgICByZXN1bHQuYXBwZW5kKCdcbicp
CisgICAgcmVzdWx0LmFwcGVuZCgnZW51bSBjbGFzcyBSZWNlaXZlck5hbWUgOiB1aW50OF90IHsn
KQorCisgICAgZW51bV92YWx1ZSA9IDEKKyAgICBmaXJzdF9yZWNlaXZlciA9IFRydWUKKyAgICBm
b3IgcmVjZWl2ZXIgaW4gcmVjZWl2ZXJzOgorICAgICAgICByZXN1bHQuYXBwZW5kKCdcbicpCisg
ICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICAnKQorICAgICAgICBpZiBub3QgZmlyc3RfcmVjZWl2
ZXI6CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcsICcpCisgICAgICAgIGZpcnN0X3JlY2Vp
dmVyID0gRmFsc2UKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgnJXMgPSAlZCcgJSAocmVjZWl2ZXIu
bmFtZSwgZW51bV92YWx1ZSkpCisgICAgICAgIGVudW1fdmFsdWUgPSBlbnVtX3ZhbHVlICsgMQor
ICAgIHJlc3VsdC5hcHBlbmQoJ1xuICAgICwgSVBDID0gJWQnICUgZW51bV92YWx1ZSkKKyAgICBl
bnVtX3ZhbHVlID0gZW51bV92YWx1ZSArIDEKKyAgICByZXN1bHQuYXBwZW5kKCdcbiAgICAsIEFz
eW5jUmVwbHkgPSAlZCcgJSBlbnVtX3ZhbHVlKQorICAgIGVudW1fdmFsdWUgPSBlbnVtX3ZhbHVl
ICsgMQorICAgIHJlc3VsdC5hcHBlbmQoJ1xuICAgICwgSW52YWxpZCA9ICVkJyAlIGVudW1fdmFs
dWUpCisgICAgcmVzdWx0LmFwcGVuZCgnXG59O1xuJykKKyAgICByZXN1bHQuYXBwZW5kKCdcbicp
CisgICAgcmVzdWx0LmFwcGVuZCgnZW51bSBjbGFzcyBNZXNzYWdlTmFtZSA6IHVpbnQxNl90IHsn
KQorCisgICAgZW51bV92YWx1ZSA9IDEKKyAgICBmaXJzdF9tZXNzYWdlID0gVHJ1ZQorICAgIGZv
ciByZWNlaXZlciBpbiByZWNlaXZlcnM6CisgICAgICAgIGZvciBtZXNzYWdlIGluIHJlY2VpdmVy
Lm1lc3NhZ2VzOgorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnXG4nKQorICAgICAgICAgICAg
aWYgbWVzc2FnZS5jb25kaXRpb246CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnI2lm
ICVzXG4nICUgbWVzc2FnZS5jb25kaXRpb24pCisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcg
ICAgJykKKyAgICAgICAgICAgIGlmIG5vdCBmaXJzdF9tZXNzYWdlOgorICAgICAgICAgICAgICAg
IHJlc3VsdC5hcHBlbmQoJywgJykKKyAgICAgICAgICAgIGZpcnN0X21lc3NhZ2UgPSBGYWxzZQor
ICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnJXNfJXMgPSAlZCcgJSAocmVjZWl2ZXIubmFtZSwg
bWVzc2FnZS5uYW1lLCBlbnVtX3ZhbHVlKSkKKyAgICAgICAgICAgIGVudW1fdmFsdWUgPSBlbnVt
X3ZhbHVlICsgMQorICAgICAgICAgICAgaWYgbWVzc2FnZS5oYXNfYXR0cmlidXRlKEFTWU5DX0FU
VFJJQlVURSk6CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnXG4gICAgLCAlc18lc1Jl
cGx5ID0gJWQnICUgKHJlY2VpdmVyLm5hbWUsIG1lc3NhZ2UubmFtZSwgZW51bV92YWx1ZSkpCisg
ICAgICAgICAgICAgICAgZW51bV92YWx1ZSA9IGVudW1fdmFsdWUgKyAxCisgICAgICAgICAgICBp
ZiBtZXNzYWdlLmNvbmRpdGlvbjoKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCdcbiNl
bmRpZicpCisgICAgcmVzdWx0LmFwcGVuZCgnXG4gICAgLCBXcmFwcGVkQXN5bmNNZXNzYWdlRm9y
VGVzdGluZyA9ICVkJyAlIGVudW1fdmFsdWUpCisgICAgZW51bV92YWx1ZSA9IGVudW1fdmFsdWUg
KyAxCisgICAgcmVzdWx0LmFwcGVuZCgnXG4gICAgLCBTeW5jTWVzc2FnZVJlcGx5ID0gJWQnICUg
ZW51bV92YWx1ZSkKKyAgICBlbnVtX3ZhbHVlID0gZW51bV92YWx1ZSArIDEKKyAgICByZXN1bHQu
YXBwZW5kKCdcbiAgICAsIEluaXRpYWxpemVDb25uZWN0aW9uID0gJWQnICUgZW51bV92YWx1ZSkK
KyAgICBlbnVtX3ZhbHVlID0gZW51bV92YWx1ZSArIDEKKyAgICByZXN1bHQuYXBwZW5kKCdcbiAg
ICAsIExlZ2FjeVNlc3Npb25TdGF0ZSA9ICVkJyAlIGVudW1fdmFsdWUpCisgICAgcmVzdWx0LmFw
cGVuZCgnXG59O1xuJykKKyAgICByZXN1bHQuYXBwZW5kKCdcbicpCisgICAgcmVzdWx0LmFwcGVu
ZCgnUmVjZWl2ZXJOYW1lIHJlY2VpdmVyTmFtZShNZXNzYWdlTmFtZSk7XG4nKQorICAgIHJlc3Vs
dC5hcHBlbmQoJ2NvbnN0IGNoYXIqIGRlc2NyaXB0aW9uKE1lc3NhZ2VOYW1lKTtcbicpCisgICAg
cmVzdWx0LmFwcGVuZCgnYm9vbCBpc1ZhbGlkTWVzc2FnZU5hbWUoTWVzc2FnZU5hbWUpO1xuJykK
KyAgICByZXN1bHQuYXBwZW5kKCdcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnfSAvLyBuYW1lc3Bh
Y2UgSVBDXG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJ1xuJykKKyAgICByZXN1bHQuYXBwZW5kKCdu
YW1lc3BhY2UgV1RGIHtcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnXG4nKQorICAgIHJlc3VsdC5h
cHBlbmQoJ3RlbXBsYXRlPD5cbicpCisgICAgcmVzdWx0LmFwcGVuZCgnY2xhc3MgSGFzQ3VzdG9t
SXNWYWxpZEVudW08SVBDOjpNZXNzYWdlTmFtZT4gOiBwdWJsaWMgc3RkOjp0cnVlX3R5cGUgeyB9
O1xuJykKKyAgICByZXN1bHQuYXBwZW5kKCd0ZW1wbGF0ZTx0eXBlbmFtZSBFLCB0eXBlbmFtZSBU
LCB0eXBlbmFtZSA9IHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19zYW1lPEUsIElQQzo6TWVzc2Fn
ZU5hbWU+Ojp2YWx1ZT4+XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJ2Jvb2wgaXNWYWxpZEVudW0o
VCBtZXNzYWdlTmFtZSlcbicpCisgICAgcmVzdWx0LmFwcGVuZCgne1xuJykKKyAgICByZXN1bHQu
YXBwZW5kKCcgICAgc3RhdGljX2Fzc2VydChzaXplb2YoVCkgPT0gc2l6ZW9mKElQQzo6TWVzc2Fn
ZU5hbWUpLCAiaXNWYWxpZEVudW08TWVzc2FnZU5hbWU+IHNob3VsZCBvbmx5IGJlIGNhbGxlZCB3
aXRoIDE2LWJpdCB0eXBlcyIpO1xuJykKKyAgICByZXN1bHQuYXBwZW5kKCcgICAgcmV0dXJuIElQ
Qzo6aXNWYWxpZE1lc3NhZ2VOYW1lKHN0YXRpY19jYXN0PElQQzo6TWVzc2FnZU5hbWU+KG1lc3Nh
Z2VOYW1lKSk7XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJ307XG4nKQorICAgIHJlc3VsdC5hcHBl
bmQoJ1xuJykKKyAgICByZXN1bHQuYXBwZW5kKCd9IC8vIG5hbWVzcGFjZSBXVEZcbicpCisgICAg
cmV0dXJuICcnLmpvaW4ocmVzdWx0KQorCisKK2RlZiBnZW5lcmF0ZV9tZXNzYWdlX25hbWVzX2lt
cGxlbWVudGF0aW9uKHJlY2VpdmVycyk6CisgICAgcmVzdWx0ID0gW10KKyAgICByZXN1bHQuYXBw
ZW5kKF9saWNlbnNlX2hlYWRlcikKKyAgICByZXN1bHQuYXBwZW5kKCcjaW5jbHVkZSAiY29uZmln
LmgiXG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJyNpbmNsdWRlICJNZXNzYWdlTmFtZXMuaCJcbicp
CisgICAgcmVzdWx0LmFwcGVuZCgnXG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJ25hbWVzcGFjZSBJ
UEMge1xuJykKKyAgICByZXN1bHQuYXBwZW5kKCdcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnY29u
c3QgY2hhciogZGVzY3JpcHRpb24oTWVzc2FnZU5hbWUgbmFtZSlcbicpCisgICAgcmVzdWx0LmFw
cGVuZCgne1xuJykKKyAgICByZXN1bHQuYXBwZW5kKCcgICAgc3dpdGNoIChuYW1lKSB7XG4nKQor
ICAgIGZvciByZWNlaXZlciBpbiByZWNlaXZlcnM6CisgICAgICAgIGZvciBtZXNzYWdlIGluIHJl
Y2VpdmVyLm1lc3NhZ2VzOgorICAgICAgICAgICAgaWYgbWVzc2FnZS5jb25kaXRpb246CisgICAg
ICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnI2lmICVzXG4nICUgbWVzc2FnZS5jb25kaXRpb24p
CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgY2FzZSBNZXNzYWdlTmFtZTo6JXNfJXM6
XG4nICUgKHJlY2VpdmVyLm5hbWUsIG1lc3NhZ2UubmFtZSkpCisgICAgICAgICAgICByZXN1bHQu
YXBwZW5kKCcgICAgICAgIHJldHVybiAiJXM6OiVzIjtcbicgJSAocmVjZWl2ZXIubmFtZSwgbWVz
c2FnZS5uYW1lKSkKKyAgICAgICAgICAgIGlmIG1lc3NhZ2UuaGFzX2F0dHJpYnV0ZShBU1lOQ19B
VFRSSUJVVEUpOgorICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBjYXNlIE1lc3Nh
Z2VOYW1lOjolc18lc1JlcGx5OlxuJyAlIChyZWNlaXZlci5uYW1lLCBtZXNzYWdlLm5hbWUpKQor
ICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICAgICAgcmV0dXJuICIlczo6JXNSZXBs
eSI7XG4nICUgKHJlY2VpdmVyLm5hbWUsIG1lc3NhZ2UubmFtZSkpCisgICAgICAgICAgICBpZiBt
ZXNzYWdlLmNvbmRpdGlvbjoKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcjZW5kaWZc
bicpCisgICAgcmVzdWx0LmFwcGVuZCgnICAgIGNhc2UgTWVzc2FnZU5hbWU6OldyYXBwZWRBc3lu
Y01lc3NhZ2VGb3JUZXN0aW5nOlxuJykKKyAgICByZXN1bHQuYXBwZW5kKCcgICAgICAgIHJldHVy
biAiSVBDOjpXcmFwcGVkQXN5bmNNZXNzYWdlRm9yVGVzdGluZyI7XG4nKQorICAgIHJlc3VsdC5h
cHBlbmQoJyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpTeW5jTWVzc2FnZVJlcGx5OlxuJykKKyAgICBy
ZXN1bHQuYXBwZW5kKCcgICAgICAgIHJldHVybiAiSVBDOjpTeW5jTWVzc2FnZVJlcGx5Ijtcbicp
CisgICAgcmVzdWx0LmFwcGVuZCgnICAgIGNhc2UgTWVzc2FnZU5hbWU6OkluaXRpYWxpemVDb25u
ZWN0aW9uOlxuJykKKyAgICByZXN1bHQuYXBwZW5kKCcgICAgICAgIHJldHVybiAiSVBDOjpJbml0
aWFsaXplQ29ubmVjdGlvbiI7XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJyAgICBjYXNlIE1lc3Nh
Z2VOYW1lOjpMZWdhY3lTZXNzaW9uU3RhdGU6XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJyAgICAg
ICAgcmV0dXJuICJJUEM6OkxlZ2FjeVNlc3Npb25TdGF0ZSI7XG4nKQorICAgIHJlc3VsdC5hcHBl
bmQoJyAgICB9XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJyAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTtcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnICAgIHJldHVybiAiPGludmFsaWQgbWVzc2FnZSBu
YW1lPiI7XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJ31cbicpCisgICAgcmVzdWx0LmFwcGVuZCgn
XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJ1JlY2VpdmVyTmFtZSByZWNlaXZlck5hbWUoTWVzc2Fn
ZU5hbWUgbWVzc2FnZU5hbWUpXG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJ3tcbicpCisgICAgcmVz
dWx0LmFwcGVuZCgnICAgIHN3aXRjaCAobWVzc2FnZU5hbWUpIHtcbicpCisgICAgZm9yIHJlY2Vp
dmVyIGluIHJlY2VpdmVyczoKKyAgICAgICAgZm9yIG1lc3NhZ2UgaW4gcmVjZWl2ZXIubWVzc2Fn
ZXM6CisgICAgICAgICAgICBpZiBtZXNzYWdlLmNvbmRpdGlvbjoKKyAgICAgICAgICAgICAgICBy
ZXN1bHQuYXBwZW5kKCcjaWYgJXNcbicgJSBtZXNzYWdlLmNvbmRpdGlvbikKKyAgICAgICAgICAg
IHJlc3VsdC5hcHBlbmQoJyAgICBjYXNlIE1lc3NhZ2VOYW1lOjolc18lczpcbicgJSAocmVjZWl2
ZXIubmFtZSwgbWVzc2FnZS5uYW1lKSkKKyAgICAgICAgICAgIGlmIG1lc3NhZ2UuY29uZGl0aW9u
OgorICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyNlbmRpZlxuJykKKyAgICAgICAgcmVz
dWx0LmFwcGVuZCgnICAgICAgICByZXR1cm4gUmVjZWl2ZXJOYW1lOjolcztcbicgJSByZWNlaXZl
ci5uYW1lKQorICAgIGZvciByZWNlaXZlciBpbiByZWNlaXZlcnM6CisgICAgICAgIGZvciBtZXNz
YWdlIGluIHJlY2VpdmVyLm1lc3NhZ2VzOgorICAgICAgICAgICAgaWYgbWVzc2FnZS5oYXNfYXR0
cmlidXRlKEFTWU5DX0FUVFJJQlVURSk6CisgICAgICAgICAgICAgICAgaWYgbWVzc2FnZS5jb25k
aXRpb246CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyNpZiAlc1xuJyAlIG1l
c3NhZ2UuY29uZGl0aW9uKQorICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBjYXNl
IE1lc3NhZ2VOYW1lOjolc18lc1JlcGx5OlxuJyAlIChyZWNlaXZlci5uYW1lLCBtZXNzYWdlLm5h
bWUpKQorICAgICAgICAgICAgICAgIGlmIG1lc3NhZ2UuY29uZGl0aW9uOgorICAgICAgICAgICAg
ICAgICAgICByZXN1bHQuYXBwZW5kKCcjZW5kaWZcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnICAg
ICAgICByZXR1cm4gUmVjZWl2ZXJOYW1lOjpBc3luY1JlcGx5O1xuJykKKyAgICByZXN1bHQuYXBw
ZW5kKCcgICAgY2FzZSBNZXNzYWdlTmFtZTo6V3JhcHBlZEFzeW5jTWVzc2FnZUZvclRlc3Rpbmc6
XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpTeW5jTWVzc2Fn
ZVJlcGx5OlxuJykKKyAgICByZXN1bHQuYXBwZW5kKCcgICAgY2FzZSBNZXNzYWdlTmFtZTo6SW5p
dGlhbGl6ZUNvbm5lY3Rpb246XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJyAgICBjYXNlIE1lc3Nh
Z2VOYW1lOjpMZWdhY3lTZXNzaW9uU3RhdGU6XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJyAgICAg
ICAgcmV0dXJuIFJlY2VpdmVyTmFtZTo6SVBDO1xuJykKKyAgICByZXN1bHQuYXBwZW5kKCcgICAg
fVxuJykKKyAgICByZXN1bHQuYXBwZW5kKCcgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7XG4nKQor
ICAgIHJlc3VsdC5hcHBlbmQoJyAgICByZXR1cm4gUmVjZWl2ZXJOYW1lOjpJbnZhbGlkO1xuJykK
KyAgICByZXN1bHQuYXBwZW5kKCd9XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJ1xuJykKKyAgICBy
ZXN1bHQuYXBwZW5kKCdib29sIGlzVmFsaWRNZXNzYWdlTmFtZShNZXNzYWdlTmFtZSBtZXNzYWdl
TmFtZSlcbicpCisgICAgcmVzdWx0LmFwcGVuZCgne1xuJykKKyAgICBmb3IgcmVjZWl2ZXIgaW4g
cmVjZWl2ZXJzOgorICAgICAgICBmb3IgbWVzc2FnZSBpbiByZWNlaXZlci5tZXNzYWdlczoKKyAg
ICAgICAgICAgIGlmIG1lc3NhZ2UuY29uZGl0aW9uOgorICAgICAgICAgICAgICAgIHJlc3VsdC5h
cHBlbmQoJyNpZiAlc1xuJyAlIG1lc3NhZ2UuY29uZGl0aW9uKQorICAgICAgICAgICAgcmVzdWx0
LmFwcGVuZCgnICAgIGlmIChtZXNzYWdlTmFtZSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjolc18lcylc
bicgJSAocmVjZWl2ZXIubmFtZSwgbWVzc2FnZS5uYW1lKSkKKyAgICAgICAgICAgIHJlc3VsdC5h
cHBlbmQoJyAgICAgICAgcmV0dXJuIHRydWU7XG4nKQorICAgICAgICAgICAgaWYgbWVzc2FnZS5o
YXNfYXR0cmlidXRlKEFTWU5DX0FUVFJJQlVURSk6CisgICAgICAgICAgICAgICAgcmVzdWx0LmFw
cGVuZCgnICAgIGlmIChtZXNzYWdlTmFtZSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjolc18lc1JlcGx5
KVxuJyAlIChyZWNlaXZlci5uYW1lLCBtZXNzYWdlLm5hbWUpKQorICAgICAgICAgICAgICAgIHJl
c3VsdC5hcHBlbmQoJyAgICAgICAgcmV0dXJuIHRydWU7XG4nKQorICAgICAgICAgICAgaWYgbWVz
c2FnZS5jb25kaXRpb246CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnI2VuZGlmXG4n
KQorICAgIHJlc3VsdC5hcHBlbmQoJyAgICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdl
TmFtZTo6V3JhcHBlZEFzeW5jTWVzc2FnZUZvclRlc3RpbmcpXG4nKQorICAgIHJlc3VsdC5hcHBl
bmQoJyAgICAgICAgcmV0dXJuIHRydWU7XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJyAgICBpZiAo
bWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6U3luY01lc3NhZ2VSZXBseSlcbicpCisg
ICAgcmVzdWx0LmFwcGVuZCgnICAgICAgICByZXR1cm4gdHJ1ZTtcbicpCisgICAgcmVzdWx0LmFw
cGVuZCgnICAgIGlmIChtZXNzYWdlTmFtZSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpJbml0aWFsaXpl
Q29ubmVjdGlvbilcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnICAgICAgICByZXR1cm4gdHJ1ZTtc
bicpCisgICAgcmVzdWx0LmFwcGVuZCgnICAgIGlmIChtZXNzYWdlTmFtZSA9PSBJUEM6Ok1lc3Nh
Z2VOYW1lOjpMZWdhY3lTZXNzaW9uU3RhdGUpXG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJyAgICAg
ICAgcmV0dXJuIHRydWU7XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJyAgICByZXR1cm4gZmFsc2U7
XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJ307XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJ1xuJykK
KyAgICByZXN1bHQuYXBwZW5kKCd9IC8vIG5hbWVzcGFjZSBJUENcbicpCisgICAgcmV0dXJuICcn
LmpvaW4ocmVzdWx0KQpJbmRleDogU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0LWxl
Z2FjeS1tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Vi
a2l0L3Rlc3QtbGVnYWN5LW1lc3NhZ2VzLmluCShyZXZpc2lvbiAyNjEwMzMpCisrKyBTb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3QtbGVnYWN5LW1lc3NhZ2VzLmluCShub25leGlzdGVu
dCkKQEAgLTEsNzcgKzAsMCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6
Ci0jIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECi0jIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECi0jIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSMgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTAotIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgotIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotIyBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLAotIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotCi0jaWYgRU5BQkxFKFdFQktJVDIpCi0jaWYgTkVTVEVEX01BU1RFUl9DT05ESVRJT04gfHwg
TUFTVEVSX09SICYmIE1BU1RFUl9BTkQKLQotbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNl
aXZlciB7Ci0gICAgTG9hZFVSTChTdHJpbmcgdXJsKQotI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMp
Ci0gICAgTG9hZFNvbWV0aGluZyhTdHJpbmcgdXJsKQotI2lmIE5FU1RFRF9NRVNTQUdFX0NPTkRJ
VElPTiB8fCBTT01FX09USEVSX01FU1NBR0VfQ09ORElUSU9OCi0gICAgVG91Y2hFdmVudChXZWJL
aXQ6OldlYlRvdWNoRXZlbnQgZXZlbnQpCi0jZW5kaWYKLSNpZiBORVNURURfTUVTU0FHRV9DT05E
SVRJT04gJiYgU09NRV9PVEhFUl9NRVNTQUdFX0NPTkRJVElPTgotICAgIEFkZEV2ZW50KFdlYktp
dDo6V2ViVG91Y2hFdmVudCBldmVudCkKLSNlbmRpZgotICAgIExvYWRTb21ldGhpbmdFbHNlKFN0
cmluZyB1cmwpCi0jZW5kaWYKLSAgICBEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24odWludDY0X3Qg
ZnJhbWVJRCwgdWludDY0X3QgbGlzdGVuZXJJRCwgdWludDMyX3QgcG9saWN5QWN0aW9uKQotICAg
IENsb3NlKCkKLQotICAgIFByZWZlcmVuY2VzRGlkQ2hhbmdlKFdlYktpdDo6V2ViUHJlZmVyZW5j
ZXNTdG9yZSBzdG9yZSkKLSAgICBTZW5kRG91YmxlQW5kRmxvYXQoZG91YmxlIGQsIGZsb2F0IGYp
Ci0gICAgU2VuZEludHMoVmVjdG9yPHVpbnQ2NF90PiBpbnRzLCBWZWN0b3I8VmVjdG9yPHVpbnQ2
NF90Pj4gaW50VmVjdG9ycykKLQotICAgIENyZWF0ZVBsdWdpbih1aW50NjRfdCBwbHVnaW5JbnN0
YW5jZUlELCBXZWJLaXQ6OlBsdWdpbjo6UGFyYW1ldGVycyBwYXJhbWV0ZXJzKSAtPiAoYm9vbCBy
ZXN1bHQpCi0gICAgUnVuSmF2YVNjcmlwdEFsZXJ0KHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBt
ZXNzYWdlKSAtPiAoKQotICAgIEdldFBsdWdpbnMoYm9vbCByZWZyZXNoKSAtPiAoVmVjdG9yPFdl
YkNvcmU6OlBsdWdpbkluZm8+IHBsdWdpbnMpCi0gICAgR2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rp
b24oU3RyaW5nIHBsdWdpblBhdGgpIC0+IChJUEM6OkNvbm5lY3Rpb246OkhhbmRsZSBjb25uZWN0
aW9uSGFuZGxlKSBTeW5jaHJvbm91cwotCi0gICAgVGVzdE11bHRpcGxlQXR0cmlidXRlcygpIC0+
ICgpIFdhbnRzQ29ubmVjdGlvbiBTeW5jaHJvbm91cwotCi0gICAgVGVzdFBhcmFtZXRlckF0dHJp
YnV0ZXMoW0F0dHJpYnV0ZU9uZSBBdHRyaWJ1dGVUd29dIHVpbnQ2NF90IGZvbywgZG91YmxlIGJh
ciwgW0F0dHJpYnV0ZVRocmVlXSBkb3VibGUgYmF6KQotCi0gICAgVGVtcGxhdGVUZXN0KEhhc2hN
YXA8U3RyaW5nLCBzdGQ6OnBhaXI8U3RyaW5nLCB1aW50NjRfdD4+IGEpCi0KLSAgICBTZXRWaWRl
b0xheWVySUQoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklEIHZpZGVvTGF5
ZXJJRCkKLQotI2lmIFBMQVRGT1JNKE1BQykKLSAgICBEaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVj
dGlvbihJUEM6Ok1hY2hQb3J0IGNvbm5lY3Rpb25JZGVudGlmaWVyKQotI2VuZGlmCi0KLSNpZiBQ
TEFURk9STShNQUMpCi0gICAgIyBLZXlib2FyZCBzdXBwb3J0Ci0gICAgSW50ZXJwcmV0S2V5RXZl
bnQodWludDMyX3QgdHlwZSkgLT4gKFZlY3RvcjxXZWJDb3JlOjpLZXlwcmVzc0NvbW1hbmQ+IGNv
bW1hbmROYW1lKQotI2VuZGlmCi0KLSNpZiBFTkFCTEUoREVQUkVDQVRFRF9GRUFUVVJFKQotICAg
IERlcHJlY2F0ZWRPcGVyYXRpb24oSVBDOjpEdW1teVR5cGUgZHVtbXkpCi0jZW5kaWYKLQotI2lm
IEVOQUJMRShFWFBFUklNRU5UQUxfRkVBVFVSRSkKLSAgICBFeHBlcmltZW50YWxPcGVyYXRpb24o
SVBDOjpEdW1teVR5cGUgZHVtbXkpCi0jZW5kaWYKLX0KLQotI2VuZGlmCi0jZW5kaWYKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdC1sZWdhY3kubWVzc2FnZXMuaW4KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0LWxlZ2FjeS5tZXNz
YWdlcy5pbgkocmV2aXNpb24gMjYxMDMzKQkoZnJvbSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Vi
a2l0L3Rlc3QtbGVnYWN5LW1lc3NhZ2VzLmluOjI2MTAzMykKKysrIFNvdXJjZS9XZWJLaXQvU2Ny
aXB0cy93ZWJraXQvdGVzdC1sZWdhY3kubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw3NyBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaWYg
RU5BQkxFKFdFQktJVDIpCisjaWYgTkVTVEVEX01BU1RFUl9DT05ESVRJT04gfHwgTUFTVEVSX09S
ICYmIE1BU1RFUl9BTkQKKworbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7Cisg
ICAgTG9hZFVSTChTdHJpbmcgdXJsKQorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAgTG9h
ZFNvbWV0aGluZyhTdHJpbmcgdXJsKQorI2lmIE5FU1RFRF9NRVNTQUdFX0NPTkRJVElPTiB8fCBT
T01FX09USEVSX01FU1NBR0VfQ09ORElUSU9OCisgICAgVG91Y2hFdmVudChXZWJLaXQ6OldlYlRv
dWNoRXZlbnQgZXZlbnQpCisjZW5kaWYKKyNpZiBORVNURURfTUVTU0FHRV9DT05ESVRJT04gJiYg
U09NRV9PVEhFUl9NRVNTQUdFX0NPTkRJVElPTgorICAgIEFkZEV2ZW50KFdlYktpdDo6V2ViVG91
Y2hFdmVudCBldmVudCkKKyNlbmRpZgorICAgIExvYWRTb21ldGhpbmdFbHNlKFN0cmluZyB1cmwp
CisjZW5kaWYKKyAgICBEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24odWludDY0X3QgZnJhbWVJRCwg
dWludDY0X3QgbGlzdGVuZXJJRCwgdWludDMyX3QgcG9saWN5QWN0aW9uKQorICAgIENsb3NlKCkK
KworICAgIFByZWZlcmVuY2VzRGlkQ2hhbmdlKFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZSBz
dG9yZSkKKyAgICBTZW5kRG91YmxlQW5kRmxvYXQoZG91YmxlIGQsIGZsb2F0IGYpCisgICAgU2Vu
ZEludHMoVmVjdG9yPHVpbnQ2NF90PiBpbnRzLCBWZWN0b3I8VmVjdG9yPHVpbnQ2NF90Pj4gaW50
VmVjdG9ycykKKworICAgIENyZWF0ZVBsdWdpbih1aW50NjRfdCBwbHVnaW5JbnN0YW5jZUlELCBX
ZWJLaXQ6OlBsdWdpbjo6UGFyYW1ldGVycyBwYXJhbWV0ZXJzKSAtPiAoYm9vbCByZXN1bHQpCisg
ICAgUnVuSmF2YVNjcmlwdEFsZXJ0KHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBtZXNzYWdlKSAt
PiAoKQorICAgIEdldFBsdWdpbnMoYm9vbCByZWZyZXNoKSAtPiAoVmVjdG9yPFdlYkNvcmU6OlBs
dWdpbkluZm8+IHBsdWdpbnMpCisgICAgR2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24oU3RyaW5n
IHBsdWdpblBhdGgpIC0+IChJUEM6OkNvbm5lY3Rpb246OkhhbmRsZSBjb25uZWN0aW9uSGFuZGxl
KSBTeW5jaHJvbm91cworCisgICAgVGVzdE11bHRpcGxlQXR0cmlidXRlcygpIC0+ICgpIFdhbnRz
Q29ubmVjdGlvbiBTeW5jaHJvbm91cworCisgICAgVGVzdFBhcmFtZXRlckF0dHJpYnV0ZXMoW0F0
dHJpYnV0ZU9uZSBBdHRyaWJ1dGVUd29dIHVpbnQ2NF90IGZvbywgZG91YmxlIGJhciwgW0F0dHJp
YnV0ZVRocmVlXSBkb3VibGUgYmF6KQorCisgICAgVGVtcGxhdGVUZXN0KEhhc2hNYXA8U3RyaW5n
LCBzdGQ6OnBhaXI8U3RyaW5nLCB1aW50NjRfdD4+IGEpCisKKyAgICBTZXRWaWRlb0xheWVySUQo
V2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklEIHZpZGVvTGF5ZXJJRCkKKwor
I2lmIFBMQVRGT1JNKE1BQykKKyAgICBEaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbihJUEM6
Ok1hY2hQb3J0IGNvbm5lY3Rpb25JZGVudGlmaWVyKQorI2VuZGlmCisKKyNpZiBQTEFURk9STShN
QUMpCisgICAgIyBLZXlib2FyZCBzdXBwb3J0CisgICAgSW50ZXJwcmV0S2V5RXZlbnQodWludDMy
X3QgdHlwZSkgLT4gKFZlY3RvcjxXZWJDb3JlOjpLZXlwcmVzc0NvbW1hbmQ+IGNvbW1hbmROYW1l
KQorI2VuZGlmCisKKyNpZiBFTkFCTEUoREVQUkVDQVRFRF9GRUFUVVJFKQorICAgIERlcHJlY2F0
ZWRPcGVyYXRpb24oSVBDOjpEdW1teVR5cGUgZHVtbXkpCisjZW5kaWYKKworI2lmIEVOQUJMRShF
WFBFUklNRU5UQUxfRkVBVFVSRSkKKyAgICBFeHBlcmltZW50YWxPcGVyYXRpb24oSVBDOjpEdW1t
eVR5cGUgZHVtbXkpCisjZW5kaWYKK30KKworI2VuZGlmCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdC1tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3QtbWVzc2FnZXMuaW4JKHJldmlzaW9uIDI2MTAz
MykKKysrIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdC1tZXNzYWdlcy5pbgkobm9u
ZXhpc3RlbnQpCkBAIC0xLDg0ICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBh
cmUgbWV0OgotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAotIyBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAotIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0jIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
Ci0jIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwKLSMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSMgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIKLSMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLQotI2lmIEVOQUJMRShXRUJLSVQyKQotI2lmIE5FU1RFRF9NQVNURVJfQ09ORElU
SU9OIHx8IE1BU1RFUl9PUiAmJiBNQVNURVJfQU5ECi0KLQotIyBUaGUgcGFyc2VyIHNob3VsZCB0
cmVhdCBhbGwgb2YgdGhlc2UgYXMgY29tbWVudHMKLSNGYWtlTG9hZFVSTEEoU3RyaW5nIHVybCkK
LSMgRmFrZUxvYWRVUkxCKFN0cmluZyB1cmwpCi0gICAgI0Zha2VMb2FkVVJMQyhTdHJpbmcgdXJs
KQotICAgICMgRmFrZUxvYWRVUkxEKFN0cmluZyB1cmwpCi0KLW1lc3NhZ2VzIC0+IFdlYlBhZ2Ug
ewotICAgIExvYWRVUkwoU3RyaW5nIHVybCkKLSNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQotICAg
IExvYWRTb21ldGhpbmcoU3RyaW5nIHVybCkKLSNpZiBORVNURURfTUVTU0FHRV9DT05ESVRJT04g
fHwgU09NRV9PVEhFUl9NRVNTQUdFX0NPTkRJVElPTgotICAgIFRvdWNoRXZlbnQoV2ViS2l0OjpX
ZWJUb3VjaEV2ZW50IGV2ZW50KQotI2VuZGlmCi0jaWYgTkVTVEVEX01FU1NBR0VfQ09ORElUSU9O
ICYmIFNPTUVfT1RIRVJfTUVTU0FHRV9DT05ESVRJT04KLSAgICBBZGRFdmVudChXZWJLaXQ6Oldl
YlRvdWNoRXZlbnQgZXZlbnQpCi0jZW5kaWYKLSAgICBMb2FkU29tZXRoaW5nRWxzZShTdHJpbmcg
dXJsKQotI2VuZGlmCi0gICAgRGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKHVpbnQ2NF90IGZyYW1l
SUQsIHVpbnQ2NF90IGxpc3RlbmVySUQsIHVpbnQzMl90IHBvbGljeUFjdGlvbikKLSAgICBDbG9z
ZSgpCi0KLSAgICBQcmVmZXJlbmNlc0RpZENoYW5nZShXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3Rv
cmUgc3RvcmUpCi0gICAgU2VuZERvdWJsZUFuZEZsb2F0KGRvdWJsZSBkLCBmbG9hdCBmKQotICAg
IFNlbmRJbnRzKFZlY3Rvcjx1aW50NjRfdD4gaW50cywgVmVjdG9yPFZlY3Rvcjx1aW50NjRfdD4+
IGludFZlY3RvcnMpCi0KLSAgICBDcmVhdGVQbHVnaW4odWludDY0X3QgcGx1Z2luSW5zdGFuY2VJ
RCwgV2ViS2l0OjpQbHVnaW46OlBhcmFtZXRlcnMgcGFyYW1ldGVycykgLT4gKGJvb2wgcmVzdWx0
KQotICAgIFJ1bkphdmFTY3JpcHRBbGVydCh1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgbWVzc2Fn
ZSkgLT4gKCkKLSAgICBHZXRQbHVnaW5zKGJvb2wgcmVmcmVzaCkgLT4gKFZlY3RvcjxXZWJDb3Jl
OjpQbHVnaW5JbmZvPiBwbHVnaW5zKQotICAgIEdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKFN0
cmluZyBwbHVnaW5QYXRoKSAtPiAoSVBDOjpDb25uZWN0aW9uOjpIYW5kbGUgY29ubmVjdGlvbkhh
bmRsZSkgU3luY2hyb25vdXMKLQotICAgIFRlc3RNdWx0aXBsZUF0dHJpYnV0ZXMoKSAtPiAoKSBX
YW50c0Nvbm5lY3Rpb24gU3luY2hyb25vdXMKLQotICAgIFRlc3RQYXJhbWV0ZXJBdHRyaWJ1dGVz
KFtBdHRyaWJ1dGVPbmUgQXR0cmlidXRlVHdvXSB1aW50NjRfdCBmb28sIGRvdWJsZSBiYXIsIFtB
dHRyaWJ1dGVUaHJlZV0gZG91YmxlIGJheikKLQotICAgIFRlbXBsYXRlVGVzdChIYXNoTWFwPFN0
cmluZywgc3RkOjpwYWlyPFN0cmluZywgdWludDY0X3Q+PiBhKQotCi0gICAgU2V0VmlkZW9MYXll
cklEKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRCB2aWRlb0xheWVySUQp
Ci0KLSNpZiBQTEFURk9STShNQUMpCi0gICAgRGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24o
SVBDOjpNYWNoUG9ydCBjb25uZWN0aW9uSWRlbnRpZmllcikKLSNlbmRpZgotCi0jaWYgUExBVEZP
Uk0oTUFDKQotICAgICMgS2V5Ym9hcmQgc3VwcG9ydAotICAgIEludGVycHJldEtleUV2ZW50KHVp
bnQzMl90IHR5cGUpIC0+IChWZWN0b3I8V2ViQ29yZTo6S2V5cHJlc3NDb21tYW5kPiBjb21tYW5k
TmFtZSkKLSNlbmRpZgotCi0jaWYgRU5BQkxFKERFUFJFQ0FURURfRkVBVFVSRSkKLSAgICBEZXBy
ZWNhdGVkT3BlcmF0aW9uKElQQzo6RHVtbXlUeXBlIGR1bW15KQotI2VuZGlmCi0KLSNpZiBFTkFC
TEUoRVhQRVJJTUVOVEFMX0ZFQVRVUkUpCi0gICAgRXhwZXJpbWVudGFsT3BlcmF0aW9uKElQQzo6
RHVtbXlUeXBlIGR1bW15KQotI2VuZGlmCi19Ci0KLSNlbmRpZgotI2VuZGlmCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3Qtc3VwZXJjbGFzcy1tZXNzYWdlcy5pbgo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3Qtc3VwZXJjbGFzcy1t
ZXNzYWdlcy5pbgkocmV2aXNpb24gMjYxMDMzKQorKysgU291cmNlL1dlYktpdC9TY3JpcHRzL3dl
YmtpdC90ZXN0LXN1cGVyY2xhc3MtbWVzc2FnZXMuaW4JKG5vbmV4aXN0ZW50KQpAQCAtMSwzMiAr
MCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0jIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
LSMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQotIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgotIyBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0j
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SCi0jIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0jIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksCi0jIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLW1lc3NhZ2Vz
IC0+IFdlYlBhZ2UgOiBXZWJQYWdlQmFzZSB7Ci0gICAgTG9hZFVSTChTdHJpbmcgdXJsKQotI2lm
IEVOQUJMRShURVNUX0ZFQVRVUkUpCi0gICAgVGVzdEFzeW5jTWVzc2FnZShlbnVtOmJvb2wgV2Vi
S2l0OjpUZXN0VHdvU3RhdGVFbnVtIHR3b1N0YXRlRW51bSkgLT4gKHVpbnQ2NF90IHJlc3VsdCkg
QXN5bmMKLSAgICBUZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJndW1lbnRzKCkgLT4gKCkgQXN5bmMK
LSAgICBUZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1lbnRzKCkgLT4gKGJvb2wgZmxh
ZywgdWludDY0X3QgdmFsdWUpIEFzeW5jCi0jZW5kaWYKLSAgICBUZXN0U3luY01lc3NhZ2UodWlu
dDMyX3QgcGFyYW0pIC0+ICh1aW50OF90IHJlcGx5KSBTeW5jaHJvbm91cwotICAgIFRlc3RTeW5j
aHJvbm91c01lc3NhZ2UoYm9vbCB2YWx1ZSkgLT4gKE9wdGlvbmFsPFdlYktpdDo6VGVzdENsYXNz
TmFtZT4gb3B0aW9uYWxSZXBseSkgU3luY2hyb25vdXMKLX0KSW5kZXg6IFNvdXJjZS9XZWJLaXQv
U2NyaXB0cy93ZWJraXQvdGVzdC1zdXBlcmNsYXNzLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdC1zdXBlcmNsYXNzLm1lc3NhZ2VzLmlu
CShyZXZpc2lvbiAyNjEwMzMpCShmcm9tIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVz
dC1zdXBlcmNsYXNzLW1lc3NhZ2VzLmluOjI2MTAzMykKKysrIFNvdXJjZS9XZWJLaXQvU2NyaXB0
cy93ZWJraXQvdGVzdC1zdXBlcmNsYXNzLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsMzIgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworbWVz
c2FnZXMgLT4gV2ViUGFnZSA6IFdlYlBhZ2VCYXNlIHsKKyAgICBMb2FkVVJMKFN0cmluZyB1cmwp
CisjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKKyAgICBUZXN0QXN5bmNNZXNzYWdlKGVudW06Ym9v
bCBXZWJLaXQ6OlRlc3RUd29TdGF0ZUVudW0gdHdvU3RhdGVFbnVtKSAtPiAodWludDY0X3QgcmVz
dWx0KSBBc3luYworICAgIFRlc3RBc3luY01lc3NhZ2VXaXRoTm9Bcmd1bWVudHMoKSAtPiAoKSBB
c3luYworICAgIFRlc3RBc3luY01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHMoKSAtPiAoYm9v
bCBmbGFnLCB1aW50NjRfdCB2YWx1ZSkgQXN5bmMKKyNlbmRpZgorICAgIFRlc3RTeW5jTWVzc2Fn
ZSh1aW50MzJfdCBwYXJhbSkgLT4gKHVpbnQ4X3QgcmVwbHkpIFN5bmNocm9ub3VzCisgICAgVGVz
dFN5bmNocm9ub3VzTWVzc2FnZShib29sIHZhbHVlKSAtPiAoT3B0aW9uYWw8V2ViS2l0OjpUZXN0
Q2xhc3NOYW1lPiBvcHRpb25hbFJlcGx5KSBTeW5jaHJvbm91cworfQpJbmRleDogU291cmNlL1dl
YktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0Lm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSW5kZXg6IFNv
dXJjZS9XZWJLaXQvU2hhcmVkL0F1eGlsaWFyeVByb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvU2hhcmVkL0F1eGlsaWFyeVByb2Nlc3MuY3BwCShyZXZpc2lvbiAyNjEwMzMp
CisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXhpbGlhcnlQcm9jZXNzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTA3LDIyICsxMDcsMjIgQEAgdm9pZCBBdXhpbGlhcnlQcm9jZXNzOjppbml0aWFs
aXplQ29ubmVjdAogewogfQogCi12b2lkIEF1eGlsaWFyeVByb2Nlc3M6OmFkZE1lc3NhZ2VSZWNl
aXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6Ok1lc3Nh
Z2VSZWNlaXZlciYgbWVzc2FnZVJlY2VpdmVyKQordm9pZCBBdXhpbGlhcnlQcm9jZXNzOjphZGRN
ZXNzYWdlUmVjZWl2ZXIoSVBDOjpSZWNlaXZlck5hbWUgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBD
OjpNZXNzYWdlUmVjZWl2ZXImIG1lc3NhZ2VSZWNlaXZlcikKIHsKICAgICBtX21lc3NhZ2VSZWNl
aXZlck1hcC5hZGRNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSwgbWVzc2FnZVJl
Y2VpdmVyKTsKIH0KIAotdm9pZCBBdXhpbGlhcnlQcm9jZXNzOjphZGRNZXNzYWdlUmVjZWl2ZXIo
SVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGlu
YXRpb25JRCwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImIG1lc3NhZ2VSZWNlaXZlcikKK3ZvaWQgQXV4
aWxpYXJ5UHJvY2Vzczo6YWRkTWVzc2FnZVJlY2VpdmVyKElQQzo6UmVjZWl2ZXJOYW1lIG1lc3Nh
Z2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIElQQzo6TWVzc2FnZVJlY2Vp
dmVyJiBtZXNzYWdlUmVjZWl2ZXIpCiB7CiAgICAgbV9tZXNzYWdlUmVjZWl2ZXJNYXAuYWRkTWVz
c2FnZVJlY2VpdmVyKG1lc3NhZ2VSZWNlaXZlck5hbWUsIGRlc3RpbmF0aW9uSUQsIG1lc3NhZ2VS
ZWNlaXZlcik7CiB9CiAKLXZvaWQgQXV4aWxpYXJ5UHJvY2Vzczo6cmVtb3ZlTWVzc2FnZVJlY2Vp
dmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRl
c3RpbmF0aW9uSUQpCit2b2lkIEF1eGlsaWFyeVByb2Nlc3M6OnJlbW92ZU1lc3NhZ2VSZWNlaXZl
cihJUEM6OlJlY2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5h
dGlvbklEKQogewogICAgIG1fbWVzc2FnZVJlY2VpdmVyTWFwLnJlbW92ZU1lc3NhZ2VSZWNlaXZl
cihtZXNzYWdlUmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklEKTsKIH0KIAotdm9pZCBBdXhpbGlh
cnlQcm9jZXNzOjpyZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVz
c2FnZVJlY2VpdmVyTmFtZSkKK3ZvaWQgQXV4aWxpYXJ5UHJvY2Vzczo6cmVtb3ZlTWVzc2FnZVJl
Y2VpdmVyKElQQzo6UmVjZWl2ZXJOYW1lIG1lc3NhZ2VSZWNlaXZlck5hbWUpCiB7CiAgICAgbV9t
ZXNzYWdlUmVjZWl2ZXJNYXAucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKG1lc3NhZ2VSZWNlaXZlck5h
bWUpOwogfQpAQCAtMjM2LDkgKzIzNiw5IEBAIHZvaWQgQXV4aWxpYXJ5UHJvY2Vzczo6aW5pdGlh
bGl6ZVNhbmRib3gKIHsKIH0KIAotdm9pZCBBdXhpbGlhcnlQcm9jZXNzOjpkaWRSZWNlaXZlSW52
YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2Fn
ZVJlY2VpdmVyTmFtZSwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUpCit2b2lkIEF1
eGlsaWFyeVByb2Nlc3M6OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
LCBJUEM6Ok1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lKQogewotICAgIFdURkxvZ0Fsd2F5cygiUmVj
ZWl2ZWQgaW52YWxpZCBtZXNzYWdlOiAnJXM6OiVzJyIsIG1lc3NhZ2VSZWNlaXZlck5hbWUudG9T
dHJpbmcoKS5kYXRhKCksIG1lc3NhZ2VOYW1lLnRvU3RyaW5nKCkuZGF0YSgpKTsKKyAgICBXVEZM
b2dBbHdheXMoIlJlY2VpdmVkIGludmFsaWQgbWVzc2FnZTogJyVzJyIsIGRlc2NyaXB0aW9uKG1l
c3NhZ2VOYW1lKSk7CiAgICAgQ1JBU0goKTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdC9TaGFy
ZWQvQXV4aWxpYXJ5UHJvY2Vzcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVk
L0F1eGlsaWFyeVByb2Nlc3MuaAkocmV2aXNpb24gMjYxMDMzKQorKysgU291cmNlL1dlYktpdC9T
aGFyZWQvQXV4aWxpYXJ5UHJvY2Vzcy5oCSh3b3JraW5nIGNvcHkpCkBAIC02MCwyMCArNjAsMjAg
QEAgcHVibGljOgogICAgIHZvaWQgZGlzYWJsZVRlcm1pbmF0aW9uKCk7CiAgICAgdm9pZCBlbmFi
bGVUZXJtaW5hdGlvbigpOwogCi0gICAgdm9pZCBhZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJp
bmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImKTsK
LSAgICB2b2lkIGFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdl
UmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBJUEM6Ok1lc3NhZ2VSZWNlaXZl
ciYpOwotICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNl
IG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpOwotICAgIHZvaWQg
cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZl
ck5hbWUpOworICAgIHZvaWQgYWRkTWVzc2FnZVJlY2VpdmVyKElQQzo6UmVjZWl2ZXJOYW1lLCBJ
UEM6Ok1lc3NhZ2VSZWNlaXZlciYpOworICAgIHZvaWQgYWRkTWVzc2FnZVJlY2VpdmVyKElQQzo6
UmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBJUEM6Ok1lc3NhZ2VSZWNlaXZl
ciYpOworICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6UmVjZWl2ZXJOYW1lLCB1
aW50NjRfdCBkZXN0aW5hdGlvbklEKTsKKyAgICB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihJ
UEM6OlJlY2VpdmVyTmFtZSk7CiAgICAgdm9pZCByZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpN
ZXNzYWdlUmVjZWl2ZXImKTsKICAgICAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgICB2
b2lkIGFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2
ZXJOYW1lLCBPYmplY3RJZGVudGlmaWVyPFQ+IGRlc3RpbmF0aW9uSUQsIElQQzo6TWVzc2FnZVJl
Y2VpdmVyJiByZWNlaXZlcikKKyAgICB2b2lkIGFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlJlY2Vp
dmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBPYmplY3RJZGVudGlmaWVyPFQ+IGRlc3RpbmF0
aW9uSUQsIElQQzo6TWVzc2FnZVJlY2VpdmVyJiByZWNlaXZlcikKICAgICB7CiAgICAgICAgIGFk
ZE1lc3NhZ2VSZWNlaXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklELnRvVUlu
dDY0KCksIHJlY2VpdmVyKTsKICAgICB9CiAgICAgCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
Ci0gICAgdm9pZCByZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVz
c2FnZVJlY2VpdmVyTmFtZSwgT2JqZWN0SWRlbnRpZmllcjxUPiBkZXN0aW5hdGlvbklEKQorICAg
IHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6UmVjZWl2ZXJOYW1lIG1lc3NhZ2VSZWNl
aXZlck5hbWUsIE9iamVjdElkZW50aWZpZXI8VD4gZGVzdGluYXRpb25JRCkKICAgICB7CiAgICAg
ICAgIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlv
bklELnRvVUludDY0KCkpOwogICAgIH0KQEAgLTEzOCw3ICsxMzgsNyBAQCBwcml2YXRlOgogICAg
IHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3Qgb3ZlcnJpZGU7CiAK
ICAgICAvLyBJUEM6OkNvbm5lY3Rpb246OkNsaWVudC4KLSAgICB2b2lkIGRpZFJlY2VpdmVJbnZh
bGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdl
UmVjZWl2ZXJOYW1lLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZSkgZmluYWw7Cisg
ICAgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpN
ZXNzYWdlTmFtZSkgZmluYWw7CiAgICAgdm9pZCBkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mKSBv
dmVycmlkZTsKIAogICAgIHZvaWQgc2h1dERvd24oKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hh
cmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHku
aAkocmV2aXNpb24gMjYxMDMzKQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtODYsOCArODYsNiBA
QCBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nJiBwYXltZW50Q29vcmRpbmF0
b3JCb3VuZEludGVyZmFjZUlkZW50aWZpZXIoY29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJv
eHkmKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nJiBwYXltZW50Q29vcmRpbmF0
b3JTb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoY29uc3QgV2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHkmKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nJiBwYXltZW50
Q29vcmRpbmF0b3JTb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIoY29uc3QgV2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHkmKSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBwYXlt
ZW50Q29vcmRpbmF0b3JBZGRNZXNzYWdlUmVjZWl2ZXIoV2ViUGF5bWVudENvb3JkaW5hdG9yUHJv
eHkmLCBjb25zdCBJUEM6OlN0cmluZ1JlZmVyZW5jZSYsIElQQzo6TWVzc2FnZVJlY2VpdmVyJikg
PSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgcGF5bWVudENvb3JkaW5hdG9yUmVtb3ZlTWVzc2Fn
ZVJlY2VpdmVyKFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JiwgY29uc3QgSVBDOjpTdHJpbmdS
ZWZlcmVuY2UmKSA9IDA7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgdmlydHVh
bCBVSVZpZXdDb250cm9sbGVyICpwYXltZW50Q29vcmRpbmF0b3JQcmVzZW50aW5nVmlld0NvbnRy
b2xsZXIoY29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmKSA9IDA7CiAgICAgICAgIHZp
cnR1YWwgY29uc3QgU3RyaW5nJiBwYXltZW50Q29vcmRpbmF0b3JDVERhdGFDb25uZWN0aW9uU2Vy
dmljZVR5cGUoY29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmKSA9IDA7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQ
cm94eUNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5
L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EubW0JKHJldmlzaW9uIDI2MTAz
MykKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29y
ZGluYXRvclByb3h5Q29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTc5LDE1ICs3OSwxMiBAQCBX
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6V2ViUGF5bWVudENvCiAgICAgOiBtX2NsaWVudChj
bGllbnQpCiAgICAgLCBtX2Nhbk1ha2VQYXltZW50c1F1ZXVlKFdvcmtRdWV1ZTo6Y3JlYXRlKCJj
b20uYXBwbGUuV2ViS2l0LkNhbk1ha2VQYXltZW50cyIpKQogewotICAgIG1fY2xpZW50LnBheW1l
bnRDb29yZGluYXRvckFkZE1lc3NhZ2VSZWNlaXZlcigqdGhpcywgTWVzc2FnZXM6OldlYlBheW1l
bnRDb29yZGluYXRvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksICp0aGlzKTsKIH0KIAog
V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6On5XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSgp
CiB7CiAgICAgaWYgKG1fc3RhdGUgIT0gU3RhdGU6OklkbGUpCiAgICAgICAgIGhpZGVQYXltZW50
VUkoKTsKLQotICAgIG1fY2xpZW50LnBheW1lbnRDb29yZGluYXRvclJlbW92ZU1lc3NhZ2VSZWNl
aXZlcigqdGhpcywgTWVzc2FnZXM6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCkpOwogfQogCiB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5Ojpw
bGF0Zm9ybUNhbk1ha2VQYXltZW50c1dpdGhBY3RpdmVDYXJkKGNvbnN0IFN0cmluZyYgbWVyY2hh
bnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGRvbWFpbk5hbWUsIFdURjo6RnVuY3Rpb248dm9p
ZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVk
L0NvY29hL0F1eGlsaWFyeVByb2Nlc3NDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1NoYXJlZC9Db2NvYS9BdXhpbGlhcnlQcm9jZXNzQ29jb2EubW0JKHJldmlzaW9uIDI2MTAz
MykKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0F1eGlsaWFyeVByb2Nlc3NDb2NvYS5t
bQkod29ya2luZyBjb3B5KQpAQCAtMzIsOSArMzIsOSBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAotdm9pZCBBdXhpbGlhcnlQcm9jZXNzOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBD
OjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUpCit2b2lkIEF1eGlsaWFyeVByb2Nlc3M6OmRp
ZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VOYW1l
IG1lc3NhZ2VOYW1lKQogewotICAgIHNldENyYXNoUmVwb3J0QXBwbGljYXRpb25TcGVjaWZpY0lu
Zm9ybWF0aW9uKChfX2JyaWRnZSBDRlN0cmluZ1JlZilbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1h
dDpAIlJlY2VpdmVkIGludmFsaWQgbWVzc2FnZTogJyVzOjolcyciLCBtZXNzYWdlUmVjZWl2ZXJO
YW1lLnRvU3RyaW5nKCkuZGF0YSgpLCBtZXNzYWdlTmFtZS50b1N0cmluZygpLmRhdGEoKV0pOwor
ICAgIHNldENyYXNoUmVwb3J0QXBwbGljYXRpb25TcGVjaWZpY0luZm9ybWF0aW9uKChfX2JyaWRn
ZSBDRlN0cmluZ1JlZilbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIlJlY2VpdmVkIGludmFs
aWQgbWVzc2FnZTogJyVzJyIsIGRlc2NyaXB0aW9uKG1lc3NhZ2VOYW1lKV0pOwogICAgIENSQVNI
KCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQ
cm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV4aWxpYXJ5
UHJvY2Vzc1Byb3h5LmNwcAkocmV2aXNpb24gMjYxMDMzKQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc4LDIy
ICsxNzgsMjIgQEAgYm9vbCBBdXhpbGlhcnlQcm9jZXNzUHJveHk6OnNlbmRNZXNzYWdlKAogICAg
IHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBBdXhpbGlhcnlQcm9jZXNzUHJveHk6OmFkZE1lc3Nh
Z2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6
Ok1lc3NhZ2VSZWNlaXZlciYgbWVzc2FnZVJlY2VpdmVyKQordm9pZCBBdXhpbGlhcnlQcm9jZXNz
UHJveHk6OmFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlJlY2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2
ZXJOYW1lLCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYgbWVzc2FnZVJlY2VpdmVyKQogewogICAgIG1f
bWVzc2FnZVJlY2VpdmVyTWFwLmFkZE1lc3NhZ2VSZWNlaXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1l
LCBtZXNzYWdlUmVjZWl2ZXIpOwogfQogCi12b2lkIEF1eGlsaWFyeVByb2Nlc3NQcm94eTo6YWRk
TWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUs
IHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIElQQzo6TWVzc2FnZVJlY2VpdmVyJiBtZXNzYWdlUmVj
ZWl2ZXIpCit2b2lkIEF1eGlsaWFyeVByb2Nlc3NQcm94eTo6YWRkTWVzc2FnZVJlY2VpdmVyKElQ
Qzo6UmVjZWl2ZXJOYW1lIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9u
SUQsIElQQzo6TWVzc2FnZVJlY2VpdmVyJiBtZXNzYWdlUmVjZWl2ZXIpCiB7CiAgICAgbV9tZXNz
YWdlUmVjZWl2ZXJNYXAuYWRkTWVzc2FnZVJlY2VpdmVyKG1lc3NhZ2VSZWNlaXZlck5hbWUsIGRl
c3RpbmF0aW9uSUQsIG1lc3NhZ2VSZWNlaXZlcik7CiB9CiAKLXZvaWQgQXV4aWxpYXJ5UHJvY2Vz
c1Byb3h5OjpyZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2Fn
ZVJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCkKK3ZvaWQgQXV4aWxpYXJ5UHJv
Y2Vzc1Byb3h5OjpyZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpSZWNlaXZlck5hbWUgbWVzc2Fn
ZVJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCkKIHsKICAgICBtX21lc3NhZ2VS
ZWNlaXZlck1hcC5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSwgZGVz
dGluYXRpb25JRCk7CiB9CiAKLXZvaWQgQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjpyZW1vdmVNZXNz
YWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSkKK3Zv
aWQgQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjpyZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpSZWNl
aXZlck5hbWUgbWVzc2FnZVJlY2VpdmVyTmFtZSkKIHsKICAgICBtX21lc3NhZ2VSZWNlaXZlck1h
cC5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSk7CiB9CkBAIC0yNzgs
OSArMjc4LDkgQEAgdm9pZCBBdXhpbGlhcnlQcm9jZXNzUHJveHk6OmNvbm5lY3Rpb25XaQogewog
fQogCi12b2lkIEF1eGlsaWFyeVByb2Nlc3NQcm94eTo6bG9nSW52YWxpZE1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2
ZXJOYW1lLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZSkKK3ZvaWQgQXV4aWxpYXJ5
UHJvY2Vzc1Byb3h5Ojpsb2dJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rp
b24sIElQQzo6TWVzc2FnZU5hbWUgbWVzc2FnZU5hbWUpCiB7Ci0gICAgUkVMRUFTRV9MT0dfRkFV
TFQoSVBDLCAiUmVjZWl2ZWQgYW4gaW52YWxpZCBtZXNzYWdlICclIiBQVUJMSUNfTE9HX1NUUklO
RyAiOjolIiBQVUJMSUNfTE9HX1NUUklORyAiJyBmcm9tIHRoZSAlIiBQVUJMSUNfTE9HX1NUUklO
RyAiIHByb2Nlc3MuIiwgbWVzc2FnZVJlY2VpdmVyTmFtZS50b1N0cmluZygpLmRhdGEoKSwgbWVz
c2FnZU5hbWUudG9TdHJpbmcoKS5kYXRhKCksIHByb2Nlc3NOYW1lKCkuY2hhcmFjdGVycygpKTsK
KyAgICBSRUxFQVNFX0xPR19GQVVMVChJUEMsICJSZWNlaXZlZCBhbiBpbnZhbGlkIG1lc3NhZ2Ug
JyUiIFBVQkxJQ19MT0dfU1RSSU5HICInIGZyb20gdGhlICUiIFBVQkxJQ19MT0dfU1RSSU5HICIg
cHJvY2Vzcy4iLCBkZXNjcmlwdGlvbihtZXNzYWdlTmFtZSksIHByb2Nlc3NOYW1lKCkuY2hhcmFj
dGVycygpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaAkocmV2aXNpb24gMjYxMDMz
KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmgJKHdv
cmtpbmcgY29weSkKQEAgLTc1LDE5ICs3NSwxOSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBt
X2Nvbm5lY3Rpb24gPT0gJmNvbm5lY3Rpb247CiAgICAgfQogCi0gICAgdm9pZCBhZGRNZXNzYWdl
UmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpN
ZXNzYWdlUmVjZWl2ZXImKTsKLSAgICB2b2lkIGFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmlu
Z1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBJ
UEM6Ok1lc3NhZ2VSZWNlaXZlciYpOwotICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQ
Qzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0
aW9uSUQpOwotICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJl
bmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUpOworICAgIHZvaWQgYWRkTWVzc2FnZVJlY2VpdmVyKElQ
Qzo6UmVjZWl2ZXJOYW1lLCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYpOworICAgIHZvaWQgYWRkTWVz
c2FnZVJlY2VpdmVyKElQQzo6UmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBJ
UEM6Ok1lc3NhZ2VSZWNlaXZlciYpOworICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQ
Qzo6UmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKTsKKyAgICB2b2lkIHJlbW92
ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlJlY2VpdmVyTmFtZSk7CiAgICAgCiAgICAgdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+Ci0gICAgdm9pZCBhZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZl
cmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgT2JqZWN0SWRlbnRpZmllcjxUPiBkZXN0aW5hdGlv
bklELCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYgcmVjZWl2ZXIpCisgICAgdm9pZCBhZGRNZXNzYWdl
UmVjZWl2ZXIoSVBDOjpSZWNlaXZlck5hbWUgbWVzc2FnZVJlY2VpdmVyTmFtZSwgT2JqZWN0SWRl
bnRpZmllcjxUPiBkZXN0aW5hdGlvbklELCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYgcmVjZWl2ZXIp
CiAgICAgewogICAgICAgICBhZGRNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSwg
ZGVzdGluYXRpb25JRC50b1VJbnQ2NCgpLCByZWNlaXZlcik7CiAgICAgfQogICAgIAogICAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBUPgotICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6
U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIE9iamVjdElkZW50aWZpZXI8VD4g
ZGVzdGluYXRpb25JRCkKKyAgICB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlJlY2Vp
dmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBPYmplY3RJZGVudGlmaWVyPFQ+IGRlc3RpbmF0
aW9uSUQpCiAgICAgewogICAgICAgICByZW1vdmVNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2Vp
dmVyTmFtZSwgZGVzdGluYXRpb25JRC50b1VJbnQ2NCgpKTsKICAgICB9CkBAIC0xMTksNyArMTE5
LDcgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgZGlzcGF0Y2hNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYsIElQQzo6RGVjb2RlciYpOwogICAgIGJvb2wgZGlzcGF0Y2hTeW5jTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYp
OwogCi0gICAgdm9pZCBsb2dJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OlN0
cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBt
ZXNzYWdlTmFtZSk7CisgICAgdm9pZCBsb2dJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
LCBJUEM6Ok1lc3NhZ2VOYW1lKTsKICAgICB2aXJ0dWFsIEFTQ0lJTGl0ZXJhbCBwcm9jZXNzTmFt
ZSgpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBnZXRMYXVuY2hPcHRpb25zKFByb2Nl
c3NMYXVuY2hlcjo6TGF1bmNoT3B0aW9ucyYpOwpAQCAtMTUwLDcgKzE1MCw3IEBAIGJvb2wgQXV4
aWxpYXJ5UHJvY2Vzc1Byb3h5OjpzZW5kKFQmJiBtZXMKIHsKICAgICBDT01QSUxFX0FTU0VSVCgh
VDo6aXNTeW5jLCBBc3luY01lc3NhZ2VFeHBlY3RlZCk7CiAKLSAgICBhdXRvIGVuY29kZXIgPSBt
YWtlVW5pcXVlPElQQzo6RW5jb2Rlcj4oVDo6cmVjZWl2ZXJOYW1lKCksIFQ6Om5hbWUoKSwgZGVz
dGluYXRpb25JRCk7CisgICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZTxJUEM6OkVuY29kZXI+
KFQ6Om5hbWUoKSwgZGVzdGluYXRpb25JRCk7CiAgICAgZW5jb2Rlci0+ZW5jb2RlKG1lc3NhZ2Uu
YXJndW1lbnRzKCkpOwogCiAgICAgcmV0dXJuIHNlbmRNZXNzYWdlKFdURk1vdmUoZW5jb2Rlciks
IHNlbmRPcHRpb25zKTsKQEAgLTE3NCw3ICsxNzQsNyBAQCB2b2lkIEF1eGlsaWFyeVByb2Nlc3NQ
cm94eTo6c2VuZFdpdGhBc3luCiB7CiAgICAgQ09NUElMRV9BU1NFUlQoIVQ6OmlzU3luYywgQXN5
bmNNZXNzYWdlRXhwZWN0ZWQpOwogCi0gICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZTxJUEM6
OkVuY29kZXI+KFQ6OnJlY2VpdmVyTmFtZSgpLCBUOjpuYW1lKCksIGRlc3RpbmF0aW9uSUQpOwor
ICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWU8SVBDOjpFbmNvZGVyPihUOjpuYW1lKCksIGRl
c3RpbmF0aW9uSUQpOwogICAgIHVpbnQ2NF90IGxpc3RlbmVySUQgPSBJUEM6Om5leHRBc3luY1Jl
cGx5SGFuZGxlcklEKCk7CiAgICAgZW5jb2Rlci0+ZW5jb2RlKGxpc3RlbmVySUQpOwogICAgIGVu
Y29kZXItPmVuY29kZShtZXNzYWdlLmFyZ3VtZW50cygpKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0xlZ2FjeVNlc3Npb25TdGF0ZUNvZGluZ05vbmUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xlZ2FjeVNlc3Npb25TdGF0ZUNvZGluZ05vbmUuY3Bw
CShyZXZpc2lvbiAyNjEwMzMpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MZWdhY3lTZXNz
aW9uU3RhdGVDb2RpbmdOb25lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAog
I2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJEZWNvZGVyLmgiCiAjaW5jbHVk
ZSAiRW5jb2Rlci5oIgorI2luY2x1ZGUgIk1lc3NhZ2VOYW1lcy5oIgogI2luY2x1ZGUgIlNlc3Np
b25TdGF0ZS5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogCkBAIC0zNyw4
ICszOCw4IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBSZWZQdHI8QVBJOjpEYXRhPiBlbmNvZGVM
ZWdhY3lTZXNzaW9uU3RhdGUoY29uc3QgU2Vzc2lvblN0YXRlJiBzZXNzaW9uU3RhdGUpCiB7Ci0g
ICAgLy8gRklYTUU6IEknbSBub3Qgc3VyZSB3aGV0aGVyIHRoZXNlIGFyZSB0aGUgcHJvcGVyIGFy
Z3VtZW50cyBmb3IgdGhlIGVuY29kZXIuCi0gICAgSVBDOjpFbmNvZGVyIGVuY29kZXIoIklQQyIs
ICJMZWdhY3lTZXNzaW9uU3RhdGUiLCAwKTsKKyAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgdXNl
IFdURjo6UGVyc2lzdGVuY2U6OkVuY29kZXIgaW5zdGVhZC4KKyAgICBJUEM6OkVuY29kZXIgZW5j
b2RlcihJUEM6Ok1lc3NhZ2VOYW1lOjpMZWdhY3lTZXNzaW9uU3RhdGUsIDApOwogICAgIGVuY29k
ZXIgPDwgc2Vzc2lvblN0YXRlLmJhY2tGb3J3YXJkTGlzdFN0YXRlOwogICAgIGVuY29kZXIgPDwg
c2Vzc2lvblN0YXRlLnJlbmRlclRyZWVTaXplOwogICAgIGVuY29kZXIgPDwgc2Vzc2lvblN0YXRl
LnByb3Zpc2lvbmFsVVJMOwpAQCAtNDgsMTUgKzQ5LDI1IEBAIFJlZlB0cjxBUEk6OkRhdGE+IGVu
Y29kZUxlZ2FjeVNlc3Npb25TdGEKIGJvb2wgZGVjb2RlTGVnYWN5U2Vzc2lvblN0YXRlKGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhU2l6ZSwgU2Vzc2lvblN0YXRlJiBzZXNzaW9uU3Rh
dGUpCiB7CiAgICAgSVBDOjpEZWNvZGVyIGRlY29kZXIoZGF0YSwgZGF0YVNpemUsIG51bGxwdHIs
IFZlY3RvcjxJUEM6OkF0dGFjaG1lbnQ+KCkpOworCiAgICAgT3B0aW9uYWw8QmFja0ZvcndhcmRM
aXN0U3RhdGU+IGJhY2tGb3J3YXJkTGlzdFN0YXRlOwogICAgIGRlY29kZXIgPj4gYmFja0Zvcndh
cmRMaXN0U3RhdGU7CiAgICAgaWYgKCFiYWNrRm9yd2FyZExpc3RTdGF0ZSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIHNlc3Npb25TdGF0ZS5iYWNrRm9yd2FyZExpc3RTdGF0ZSA9IFdURk1v
dmUoKmJhY2tGb3J3YXJkTGlzdFN0YXRlKTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNlc3Np
b25TdGF0ZS5yZW5kZXJUcmVlU2l6ZSkpCisKKyAgICBPcHRpb25hbDx1aW50NjRfdD4gcmVuZGVy
VHJlZVNpemU7CisgICAgZGVjb2RlciA+PiByZW5kZXJUcmVlU2l6ZTsKKyAgICBpZiAoIXJlbmRl
clRyZWVTaXplKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShzZXNzaW9uU3RhdGUucHJvdmlzaW9uYWxVUkwpKQorICAgIHNlc3Npb25TdGF0ZS5yZW5kZXJU
cmVlU2l6ZSA9ICpyZW5kZXJUcmVlU2l6ZTsKKworICAgIE9wdGlvbmFsPFVSTD4gcHJvdmlzaW9u
YWxVUkw7CisgICAgZGVjb2RlciA+PiBwcm92aXNpb25hbFVSTDsKKyAgICBpZiAoIXByb3Zpc2lv
bmFsVVJMKQogICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgc2Vzc2lvblN0YXRlLnByb3Zpc2lv
bmFsVVJMID0gV1RGTW92ZSgqcHJvdmlzaW9uYWxVUkwpOworCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQ
cm94eS5jcHAJKHJldmlzaW9uIDI2MTAzMykKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1By
b3Zpc2lvbmFsUGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTE5LDcgKzUxOSw3IEBA
IHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRpZFJlY2VpdmVNZXMKICAgICB9CiAjZW5kaWYK
IAotICAgIExPRyhQcm9jZXNzU3dhcHBpbmcsICJVbmhhbmRsZWQgbWVzc2FnZSAlczo6JXMgZnJv
bSBwcm92aXNpb25hbCBwcm9jZXNzIiwgZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkudG9T
dHJpbmcoKS5kYXRhKCksIGRlY29kZXIubWVzc2FnZU5hbWUoKS50b1N0cmluZygpLmRhdGEoKSk7
CisgICAgTE9HKFByb2Nlc3NTd2FwcGluZywgIlVuaGFuZGxlZCBtZXNzYWdlICVzIGZyb20gcHJv
dmlzaW9uYWwgcHJvY2VzcyIsIGRlc2NyaXB0aW9uKGRlY29kZXIubWVzc2FnZU5hbWUoKSkpOwog
fQogCiB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIHN0ZDo6dW5p
cXVlX3B0cjxJUEM6OkVuY29kZXI+JiByZXBseUVuY29kZXIpCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDI2MTAzMykK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTYxLDMzICs2MSwzMiBAQCBSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiBTdXNw
ZW5kZWRQYWdlUHJvCiB9CiAKICNpZiAhTE9HX0RJU0FCTEVECi1zdGF0aWMgY29uc3QgSGFzaFNl
dDxJUEM6OlN0cmluZ1JlZmVyZW5jZT4mIG1lc3NhZ2VOYW1lc1RvSWdub3JlV2hpbGVTdXNwZW5k
ZWQoKQorc3RhdGljIGNvbnN0IEhhc2hTZXQ8dWludDE2X3Q+JiBtZXNzYWdlTmFtZXNUb0lnbm9y
ZVdoaWxlU3VzcGVuZGVkKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxJ
UEM6OlN0cmluZ1JlZmVyZW5jZT4+IG1lc3NhZ2VOYW1lczsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8SGFzaFNldDx1aW50MTZfdD4+IG1lc3NhZ2VOYW1lczsKICAgICBzdGF0aWMgc3RkOjpv
bmNlX2ZsYWcgb25jZUZsYWc7CiAgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKLSAg
ICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZCgiQmFja0ZvcndhcmRBZGRJdGVtIik7Ci0gICAg
ICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoIkNsZWFyQWxsRWRpdENvbW1hbmRzIik7Ci0gICAg
ICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoIkRpZENoYW5nZUNvbnRlbnRTaXplIik7Ci0gICAg
ICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoIkRpZENoYW5nZU1haW5Eb2N1bWVudCIpOwotICAg
ICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJEaWRDaGFuZ2VQcm9ncmVzcyIpOwotICAgICAg
ICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJEaWRDb21taXRMb2FkRm9yRnJhbWUiKTsKLSAgICAg
ICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZCgiRGlkRGVzdHJveU5hdmlnYXRpb24iKTsKLSAgICAg
ICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZCgiRGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUi
KTsKLSAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZCgiRGlkRmluaXNoUHJvZ3Jlc3MiKTsK
LSAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZCgiRGlkQ29tcGxldGVQYWdlVHJhbnNpdGlv
biIpOwotICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJEaWRGaXJzdExheW91dEZvckZy
YW1lIik7Ci0gICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoIkRpZEZpcnN0VmlzdWFsbHlO
b25FbXB0eUxheW91dEZvckZyYW1lIik7Ci0gICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQo
IkRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhIik7Ci0gICAgICAgIG1lc3NhZ2VOYW1lcy5n
ZXQoKS5hZGQoIkRpZFJlYWNoTGF5b3V0TWlsZXN0b25lIik7Ci0gICAgICAgIG1lc3NhZ2VOYW1l
cy5nZXQoKS5hZGQoIkRpZFJlc3RvcmVTY3JvbGxQb3NpdGlvbiIpOwotICAgICAgICBtZXNzYWdl
TmFtZXMuZ2V0KCkuYWRkKCJEaWRTdGFydFByb2dyZXNzIik7Ci0gICAgICAgIG1lc3NhZ2VOYW1l
cy5nZXQoKS5hZGQoIkRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUiKTsKLSAgICAgICAg
bWVzc2FnZU5hbWVzLmdldCgpLmFkZCgiRWRpdG9yU3RhdGVDaGFuZ2VkIik7Ci0gICAgICAgIG1l
c3NhZ2VOYW1lcy5nZXQoKS5hZGQoIlBhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvckRpZENoYW5n
ZSIpOwotICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJTZXRSZW5kZXJUcmVlU2l6ZSIp
OwotICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJTZXRTdGF0dXNUZXh0Iik7Ci0gICAg
ICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoIlNldE5ldHdvcmtSZXF1ZXN0c0luUHJvZ3Jlc3Mi
KTsKKyAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZChzdGF0aWNfY2FzdDx1aW50MTZfdD4o
SVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZVByb3h5X0JhY2tGb3J3YXJkQWRkSXRlbSkpOworICAg
ICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKHN0YXRpY19jYXN0PHVpbnQxNl90PihJUEM6Ok1l
c3NhZ2VOYW1lOjpXZWJQYWdlUHJveHlfQ2xlYXJBbGxFZGl0Q29tbWFuZHMpKTsKKyAgICAgICAg
bWVzc2FnZU5hbWVzLmdldCgpLmFkZChzdGF0aWNfY2FzdDx1aW50MTZfdD4oSVBDOjpNZXNzYWdl
TmFtZTo6V2ViUGFnZVByb3h5X0RpZENoYW5nZUNvbnRlbnRTaXplKSk7CisgICAgICAgIG1lc3Nh
Z2VOYW1lcy5nZXQoKS5hZGQoc3RhdGljX2Nhc3Q8dWludDE2X3Q+KElQQzo6TWVzc2FnZU5hbWU6
OldlYlBhZ2VQcm94eV9EaWRDaGFuZ2VNYWluRG9jdW1lbnQpKTsKKyAgICAgICAgbWVzc2FnZU5h
bWVzLmdldCgpLmFkZChzdGF0aWNfY2FzdDx1aW50MTZfdD4oSVBDOjpNZXNzYWdlTmFtZTo6V2Vi
UGFnZVByb3h5X0RpZENoYW5nZVByb2dyZXNzKSk7CisgICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQo
KS5hZGQoc3RhdGljX2Nhc3Q8dWludDE2X3Q+KElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VQcm94
eV9EaWRDb21taXRMb2FkRm9yRnJhbWUpKTsKKyAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFk
ZChzdGF0aWNfY2FzdDx1aW50MTZfdD4oSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZVByb3h5X0Rp
ZERlc3Ryb3lOYXZpZ2F0aW9uKSk7CisgICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoc3Rh
dGljX2Nhc3Q8dWludDE2X3Q+KElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VQcm94eV9EaWRGaW5p
c2hEb2N1bWVudExvYWRGb3JGcmFtZSkpOworICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRk
KHN0YXRpY19jYXN0PHVpbnQxNl90PihJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlUHJveHlfRGlk
RmluaXNoUHJvZ3Jlc3MpKTsKKyAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZChzdGF0aWNf
Y2FzdDx1aW50MTZfdD4oSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZVByb3h5X0RpZEZpcnN0TGF5
b3V0Rm9yRnJhbWUpKTsKKyAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZChzdGF0aWNfY2Fz
dDx1aW50MTZfdD4oSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZVByb3h5X0RpZEZpcnN0VmlzdWFs
bHlOb25FbXB0eUxheW91dEZvckZyYW1lKSk7CisgICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5h
ZGQoc3RhdGljX2Nhc3Q8dWludDE2X3Q+KElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VQcm94eV9E
aWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YSkpOworICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0
KCkuYWRkKHN0YXRpY19jYXN0PHVpbnQxNl90PihJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlUHJv
eHlfRGlkUmVhY2hMYXlvdXRNaWxlc3RvbmUpKTsKKyAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgp
LmFkZChzdGF0aWNfY2FzdDx1aW50MTZfdD4oSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZVByb3h5
X0RpZFJlc3RvcmVTY3JvbGxQb3NpdGlvbikpOworICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCku
YWRkKHN0YXRpY19jYXN0PHVpbnQxNl90PihJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlUHJveHlf
RGlkU3RhcnRQcm9ncmVzcykpOworICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKHN0YXRp
Y19jYXN0PHVpbnQxNl90PihJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlUHJveHlfRGlkU3RhcnRQ
cm92aXNpb25hbExvYWRGb3JGcmFtZSkpOworICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRk
KHN0YXRpY19jYXN0PHVpbnQxNl90PihJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlUHJveHlfRWRp
dG9yU3RhdGVDaGFuZ2VkKSk7CisgICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoc3RhdGlj
X2Nhc3Q8dWludDE2X3Q+KElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VQcm94eV9QYWdlRXh0ZW5k
ZWRCYWNrZ3JvdW5kQ29sb3JEaWRDaGFuZ2UpKTsKKyAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgp
LmFkZChzdGF0aWNfY2FzdDx1aW50MTZfdD4oSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZVByb3h5
X1NldFJlbmRlclRyZWVTaXplKSk7CisgICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoc3Rh
dGljX2Nhc3Q8dWludDE2X3Q+KElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VQcm94eV9TZXRTdGF0
dXNUZXh0KSk7CisgICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoc3RhdGljX2Nhc3Q8dWlu
dDE2X3Q+KElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VQcm94eV9TZXROZXR3b3JrUmVxdWVzdHNJ
blByb2dyZXNzKSk7CiAgICAgfSk7CiAKICAgICByZXR1cm4gbWVzc2FnZU5hbWVzOwpAQCAtMjU0
LDggKzI1Myw4IEBAIHZvaWQgU3VzcGVuZGVkUGFnZVByb3h5OjpkaWRSZWNlaXZlTWVzc2EKICAg
ICB9CiAKICNpZiAhTE9HX0RJU0FCTEVECi0gICAgaWYgKCFtZXNzYWdlTmFtZXNUb0lnbm9yZVdo
aWxlU3VzcGVuZGVkKCkuY29udGFpbnMoZGVjb2Rlci5tZXNzYWdlTmFtZSgpKSkKLSAgICAgICAg
TE9HKFByb2Nlc3NTd2FwcGluZywgIlN1c3BlbmRlZFBhZ2VQcm94eSByZWNlaXZlZCB1bmV4cGVj
dGVkIFdlYlBhZ2VQcm94eSBtZXNzYWdlICclcyciLCBkZWNvZGVyLm1lc3NhZ2VOYW1lKCkudG9T
dHJpbmcoKS5kYXRhKCkpOworICAgIGlmICghbWVzc2FnZU5hbWVzVG9JZ25vcmVXaGlsZVN1c3Bl
bmRlZCgpLmNvbnRhaW5zKHN0YXRpY19jYXN0PHVpbnQxNl90PihkZWNvZGVyLm1lc3NhZ2VOYW1l
KCkpKSkKKyAgICAgICAgTE9HKFByb2Nlc3NTd2FwcGluZywgIlN1c3BlbmRlZFBhZ2VQcm94eSBy
ZWNlaXZlZCB1bmV4cGVjdGVkIFdlYlBhZ2VQcm94eSBtZXNzYWdlICclcyciLCBkZXNjcmlwdGlv
bihkZWNvZGVyLm1lc3NhZ2VOYW1lKCkpKTsKICNlbmRpZgogfQogCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24gMjYxMDMzKQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTIyODAsOCAr
MjI4MCw2IEBAIHByaXZhdGU6CiAgICAgY29uc3QgU3RyaW5nJiBwYXltZW50Q29vcmRpbmF0b3JC
b3VuZEludGVyZmFjZUlkZW50aWZpZXIoY29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkm
KSBmaW5hbDsKICAgICBjb25zdCBTdHJpbmcmIHBheW1lbnRDb29yZGluYXRvclNvdXJjZUFwcGxp
Y2F0aW9uQnVuZGxlSWRlbnRpZmllcihjb25zdCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYp
IGZpbmFsOwogICAgIGNvbnN0IFN0cmluZyYgcGF5bWVudENvb3JkaW5hdG9yU291cmNlQXBwbGlj
YXRpb25TZWNvbmRhcnlJZGVudGlmaWVyKGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5
JikgZmluYWw7Ci0gICAgdm9pZCBwYXltZW50Q29vcmRpbmF0b3JBZGRNZXNzYWdlUmVjZWl2ZXIo
V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmLCBjb25zdCBJUEM6OlN0cmluZ1JlZmVyZW5jZSYs
IElQQzo6TWVzc2FnZVJlY2VpdmVyJikgZmluYWw7Ci0gICAgdm9pZCBwYXltZW50Q29vcmRpbmF0
b3JSZW1vdmVNZXNzYWdlUmVjZWl2ZXIoV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmLCBjb25z
dCBJUEM6OlN0cmluZ1JlZmVyZW5jZSYpIGZpbmFsOwogI2VuZGlmCiAjaWYgRU5BQkxFKEFQUExF
X1BBWSkgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBVSVZpZXdDb250cm9sbGVyICpwYXlt
ZW50Q29vcmRpbmF0b3JQcmVzZW50aW5nVmlld0NvbnRyb2xsZXIoY29uc3QgV2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHkmKSBmaW5hbDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5jcHAJKHJldmlzaW9uIDI2MTAzMykKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODUyLDE3ICs4NTIs
MTIgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0SW52YWxpZE1lc3NhZ2VDYQogICAgIHNfaW52
YWxpZE1lc3NhZ2VDYWxsYmFjayA9IGludmFsaWRNZXNzYWdlQ2FsbGJhY2s7CiB9CiAKLXZvaWQg
V2ViUHJvY2Vzc1Bvb2w6OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShjb25zdCBJUEM6OlN0cmlu
Z1JlZmVyZW5jZSYgbWVzc2FnZVJlY2VpdmVyTmFtZSwgY29uc3QgSVBDOjpTdHJpbmdSZWZlcmVu
Y2UmIG1lc3NhZ2VOYW1lKQordm9pZCBXZWJQcm9jZXNzUG9vbDo6ZGlkUmVjZWl2ZUludmFsaWRN
ZXNzYWdlKElQQzo6TWVzc2FnZU5hbWUgbWVzc2FnZU5hbWUpCiB7CiAgICAgaWYgKCFzX2ludmFs
aWRNZXNzYWdlQ2FsbGJhY2spCiAgICAgICAgIHJldHVybjsKIAotICAgIFN0cmluZ0J1aWxkZXIg
bWVzc2FnZU5hbWVTdHJpbmdCdWlsZGVyOwotICAgIG1lc3NhZ2VOYW1lU3RyaW5nQnVpbGRlci5h
cHBlbmRDaGFyYWN0ZXJzKG1lc3NhZ2VSZWNlaXZlck5hbWUuZGF0YSgpLCBtZXNzYWdlUmVjZWl2
ZXJOYW1lLnNpemUoKSk7Ci0gICAgbWVzc2FnZU5hbWVTdHJpbmdCdWlsZGVyLmFwcGVuZCgnLicp
OwotICAgIG1lc3NhZ2VOYW1lU3RyaW5nQnVpbGRlci5hcHBlbmRDaGFyYWN0ZXJzKG1lc3NhZ2VO
YW1lLmRhdGEoKSwgbWVzc2FnZU5hbWUuc2l6ZSgpKTsKLQotICAgIHNfaW52YWxpZE1lc3NhZ2VD
YWxsYmFjayh0b0FQSShBUEk6OlN0cmluZzo6Y3JlYXRlKG1lc3NhZ2VOYW1lU3RyaW5nQnVpbGRl
ci50b1N0cmluZygpKS5wdHIoKSkpOworICAgIHNfaW52YWxpZE1lc3NhZ2VDYWxsYmFjayh0b0FQ
SShBUEk6OlN0cmluZzo6Y3JlYXRlKGRlc2NyaXB0aW9uKG1lc3NhZ2VOYW1lKSkucHRyKCkpKTsK
IH0KIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVzb2x2ZVBhdGhzRm9yU2FuZGJveEV4dGVuc2lv
bnMoKQpAQCAtMTY4MSwyMiArMTY3NiwyMiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpzeW50aGVz
aXplQXBwSXNCYWNrCiAgICAgZW5zdXJlTmV0d29ya1Byb2Nlc3MoKS5zeW50aGVzaXplQXBwSXNC
YWNrZ3JvdW5kKGJhY2tncm91bmQpOwogfQogCi12b2lkIFdlYlByb2Nlc3NQb29sOjphZGRNZXNz
YWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBD
OjpNZXNzYWdlUmVjZWl2ZXImIG1lc3NhZ2VSZWNlaXZlcikKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6
OmFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlJlY2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1l
LCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYgbWVzc2FnZVJlY2VpdmVyKQogewogICAgIG1fbWVzc2Fn
ZVJlY2VpdmVyTWFwLmFkZE1lc3NhZ2VSZWNlaXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1lLCBtZXNz
YWdlUmVjZWl2ZXIpOwogfQogCi12b2lkIFdlYlByb2Nlc3NQb29sOjphZGRNZXNzYWdlUmVjZWl2
ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVz
dGluYXRpb25JRCwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImIG1lc3NhZ2VSZWNlaXZlcikKK3ZvaWQg
V2ViUHJvY2Vzc1Bvb2w6OmFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlJlY2VpdmVyTmFtZSBtZXNz
YWdlUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBJUEM6Ok1lc3NhZ2VSZWNl
aXZlciYgbWVzc2FnZVJlY2VpdmVyKQogewogICAgIG1fbWVzc2FnZVJlY2VpdmVyTWFwLmFkZE1l
c3NhZ2VSZWNlaXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklELCBtZXNzYWdl
UmVjZWl2ZXIpOwogfQogCi12b2lkIFdlYlByb2Nlc3NQb29sOjpyZW1vdmVNZXNzYWdlUmVjZWl2
ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSkKK3ZvaWQgV2ViUHJv
Y2Vzc1Bvb2w6OnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlJlY2VpdmVyTmFtZSBtZXNzYWdl
UmVjZWl2ZXJOYW1lKQogewogICAgIG1fbWVzc2FnZVJlY2VpdmVyTWFwLnJlbW92ZU1lc3NhZ2VS
ZWNlaXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1lKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzUG9vbDo6
cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZl
ck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpCit2b2lkIFdlYlByb2Nlc3NQb29sOjpyZW1v
dmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpSZWNlaXZlck5hbWUgbWVzc2FnZVJlY2VpdmVyTmFtZSwg
dWludDY0X3QgZGVzdGluYXRpb25JRCkKIHsKICAgICBtX21lc3NhZ2VSZWNlaXZlck1hcC5yZW1v
dmVNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRCk7CiB9
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgJKHJldmlzaW9u
IDI2MTAzMykKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgJKHdv
cmtpbmcgY29weSkKQEAgLTE0OCwyMSArMTQ4LDIxIEBAIHB1YmxpYzoKICAgICAgICAgbV9zdXBw
bGVtZW50cy5hZGQoVDo6c3VwcGxlbWVudE5hbWUoKSwgVDo6Y3JlYXRlKHRoaXMpKTsKICAgICB9
CiAKLSAgICB2b2lkIGFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNz
YWdlUmVjZWl2ZXJOYW1lLCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYpOwotICAgIHZvaWQgYWRkTWVz
c2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVp
bnQ2NF90IGRlc3RpbmF0aW9uSUQsIElQQzo6TWVzc2FnZVJlY2VpdmVyJik7Ci0gICAgdm9pZCBy
ZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVy
TmFtZSk7Ci0gICAgdm9pZCByZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVu
Y2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCk7CisgICAgdm9p
ZCBhZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpSZWNlaXZlck5hbWUsIElQQzo6TWVzc2FnZVJlY2Vp
dmVyJik7CisgICAgdm9pZCBhZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpSZWNlaXZlck5hbWUsIHVp
bnQ2NF90IGRlc3RpbmF0aW9uSUQsIElQQzo6TWVzc2FnZVJlY2VpdmVyJik7CisgICAgdm9pZCBy
ZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpSZWNlaXZlck5hbWUpOworICAgIHZvaWQgcmVtb3Zl
TWVzc2FnZVJlY2VpdmVyKElQQzo6UmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklE
KTsKIAogICAgIFdlYkJhY2tGb3J3YXJkQ2FjaGUmIGJhY2tGb3J3YXJkQ2FjaGUoKSB7IHJldHVy
biBtX2JhY2tGb3J3YXJkQ2FjaGUuZ2V0KCk7IH0KICAgICAKICAgICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4KLSAgICB2b2lkIGFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBt
ZXNzYWdlUmVjZWl2ZXJOYW1lLCBPYmplY3RJZGVudGlmaWVyPFQ+IGRlc3RpbmF0aW9uSUQsIElQ
Qzo6TWVzc2FnZVJlY2VpdmVyJiByZWNlaXZlcikKKyAgICB2b2lkIGFkZE1lc3NhZ2VSZWNlaXZl
cihJUEM6OlJlY2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBPYmplY3RJZGVudGlmaWVy
PFQ+IGRlc3RpbmF0aW9uSUQsIElQQzo6TWVzc2FnZVJlY2VpdmVyJiByZWNlaXZlcikKICAgICB7
CiAgICAgICAgIGFkZE1lc3NhZ2VSZWNlaXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1lLCBkZXN0aW5h
dGlvbklELnRvVUludDY0KCksIHJlY2VpdmVyKTsKICAgICB9CiAgICAgCiAgICAgdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+Ci0gICAgdm9pZCByZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdS
ZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgT2JqZWN0SWRlbnRpZmllcjxUPiBkZXN0aW5h
dGlvbklEKQorICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6UmVjZWl2ZXJOYW1l
IG1lc3NhZ2VSZWNlaXZlck5hbWUsIE9iamVjdElkZW50aWZpZXI8VD4gZGVzdGluYXRpb25JRCkK
ICAgICB7CiAgICAgICAgIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1l
LCBkZXN0aW5hdGlvbklELnRvVUludDY0KCkpOwogICAgIH0KQEAgLTQxOCw3ICs0MTgsNyBAQCBw
dWJsaWM6CiAjZW5kaWYKIAogICAgIHN0YXRpYyB2b2lkIHNldEludmFsaWRNZXNzYWdlQ2FsbGJh
Y2sodm9pZCAoKikoV0tTdHJpbmdSZWYpKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlSW52
YWxpZE1lc3NhZ2UoY29uc3QgSVBDOjpTdHJpbmdSZWZlcmVuY2UmIG1lc3NhZ2VSZWNlaXZlck5h
bWUsIGNvbnN0IElQQzo6U3RyaW5nUmVmZXJlbmNlJiBtZXNzYWdlTmFtZSk7CisgICAgc3RhdGlj
IHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6TWVzc2FnZU5hbWUpOwogCiAgICAg
Ym9vbCBpc1VSTEtub3duSFNUU0hvc3QoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpIGNvbnN0Owog
ICAgIHZvaWQgcmVzZXRIU1RTSG9zdHMoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAkocmV2aXNpb24gMjYxMDMzKQorKysgU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYxLDgg
KzE2MSw4IEBAIGNsYXNzIFVJUHJveHlGb3JDYXB0dXJlIGZpbmFsIDogcHVibGljIFUKIHB1Ymxp
YzoKICAgICBleHBsaWNpdCBVSVByb3h5Rm9yQ2FwdHVyZShXZWJQcm9jZXNzUHJveHkmIHByb2Nl
c3MpIDogbV9wcm9jZXNzKHByb2Nlc3MpIHsgfQogcHJpdmF0ZToKLSAgICB2b2lkIGFkZE1lc3Nh
Z2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6
Ok1lc3NhZ2VSZWNlaXZlciYgcmVjZWl2ZXIpIGZpbmFsIHsgbV9wcm9jZXNzLmFkZE1lc3NhZ2VS
ZWNlaXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1lLCByZWNlaXZlcik7IH0KLSAgICB2b2lkIHJlbW92
ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1l
KSBmaW5hbCB7IG1fcHJvY2Vzcy5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVy
TmFtZSk7IH0KKyAgICB2b2lkIGFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlJlY2VpdmVyTmFtZSBt
ZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYgcmVjZWl2ZXIpIGZpbmFs
IHsgbV9wcm9jZXNzLmFkZE1lc3NhZ2VSZWNlaXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1lLCByZWNl
aXZlcik7IH0KKyAgICB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlJlY2VpdmVyTmFt
ZSBtZXNzYWdlUmVjZWl2ZXJOYW1lKSBmaW5hbCB7IG1fcHJvY2Vzcy5yZW1vdmVNZXNzYWdlUmVj
ZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSk7IH0KICAgICBJUEM6OkNvbm5lY3Rpb24mIGNvbm5l
Y3Rpb24oKSBmaW5hbCB7IHJldHVybiAqbV9wcm9jZXNzLmNvbm5lY3Rpb24oKTsgfQogICAgIExv
Z2dlciYgbG9nZ2VyKCkgZmluYWwKICAgICB7CkBAIC0zNTIsNyArMzUyLDcgQEAgdm9pZCBXZWJQ
cm9jZXNzUHJveHk6OnBsYXRmb3JtR2V0TGF1bmNoTwogYm9vbCBXZWJQcm9jZXNzUHJveHk6OnNo
b3VsZFNlbmRQZW5kaW5nTWVzc2FnZShjb25zdCBQZW5kaW5nTWVzc2FnZSYgbWVzc2FnZSkKIHsK
ICNpZiBIQVZFKFNBTkRCT1hfSVNTVUVfUkVBRF9FWFRFTlNJT05fVE9fUFJPQ0VTU19CWV9BVURJ
VF9UT0tFTikKLSAgICBpZiAobWVzc2FnZS5lbmNvZGVyLT5tZXNzYWdlTmFtZSgpID09ICJMb2Fk
UmVxdWVzdFdhaXRpbmdGb3JQcm9jZXNzTGF1bmNoIikgeworICAgIGlmIChtZXNzYWdlLmVuY29k
ZXItPm1lc3NhZ2VOYW1lKCkgPT0gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9Mb2FkUmVxdWVz
dFdhaXRpbmdGb3JQcm9jZXNzTGF1bmNoKSB7CiAgICAgICAgIGF1dG8gYnVmZmVyID0gbWVzc2Fn
ZS5lbmNvZGVyLT5idWZmZXIoKTsKICAgICAgICAgYXV0byBidWZmZXJTaXplID0gbWVzc2FnZS5l
bmNvZGVyLT5idWZmZXJTaXplKCk7CiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkRlY29k
ZXI+IGRlY29kZXIgPSBtYWtlVW5pcXVlPElQQzo6RGVjb2Rlcj4oYnVmZmVyLCBidWZmZXJTaXpl
LCBudWxscHRyLCBWZWN0b3I8SVBDOjpBdHRhY2htZW50PiB7IH0pOwpAQCAtODM5LDExICs4Mzks
MTEgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnByb2Nlc3NEaWRUZXJtaW5hdAogICAgIH0KIH0K
IAotdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZl
ck5hbWUsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lKQordm9pZCBXZWJQcm9jZXNz
UHJveHk6OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rp
b24sIElQQzo6TWVzc2FnZU5hbWUgbWVzc2FnZU5hbWUpCiB7Ci0gICAgbG9nSW52YWxpZE1lc3Nh
Z2UoY29ubmVjdGlvbiwgbWVzc2FnZVJlY2VpdmVyTmFtZSwgbWVzc2FnZU5hbWUpOworICAgIGxv
Z0ludmFsaWRNZXNzYWdlKGNvbm5lY3Rpb24sIG1lc3NhZ2VOYW1lKTsKIAotICAgIFdlYlByb2Nl
c3NQb29sOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UobWVzc2FnZVJlY2VpdmVyTmFtZSwgbWVz
c2FnZU5hbWUpOworICAgIFdlYlByb2Nlc3NQb29sOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2Uo
bWVzc2FnZU5hbWUpOwogCiAgICAgLy8gVGVybWluYXRlIHRoZSBXZWJDb250ZW50IHByb2Nlc3Mu
CiAgICAgdGVybWluYXRlKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuaAkocmV2aXNpb24gMjYxMDMzKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1Myw3ICs0NTMsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpE
ZWNvZGVyJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4m
KSBvdmVycmlkZTsKICAgICB2b2lkIGRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYpIG92ZXJyaWRl
OwotICAgIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQ
Qzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIElQQzo6U3RyaW5nUmVmZXJl
bmNlIG1lc3NhZ2VOYW1lKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VOYW1lKSBvdmVycmlkZTsKIAogICAg
IC8vIFJlc3BvbnNpdmVuZXNzVGltZXI6OkNsaWVudAogICAgIHZvaWQgZGlkQmVjb21lVW5yZXNw
b25zaXZlKCkgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9V
c2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5oCShyZXZpc2lv
biAyNjEwMzMpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0
dXJlTWFuYWdlclByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDggKzUxLDggQEAgcHVibGlj
OgogICAgIGNsYXNzIENvbm5lY3Rpb25Qcm94eSB7CiAgICAgcHVibGljOgogICAgICAgICB2aXJ0
dWFsIH5Db25uZWN0aW9uUHJveHkoKSA9IGRlZmF1bHQ7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBh
ZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UsIElQQzo6TWVzc2FnZVJlY2Vp
dmVyJikgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQ
Qzo6U3RyaW5nUmVmZXJlbmNlKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBhZGRNZXNzYWdl
UmVjZWl2ZXIoSVBDOjpSZWNlaXZlck5hbWUsIElQQzo6TWVzc2FnZVJlY2VpdmVyJikgPSAwOwor
ICAgICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6UmVjZWl2ZXJO
YW1lKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKCkg
PSAwOwogICAgICAgICB2aXJ0dWFsIGJvb2wgd2lsbFN0YXJ0Q2FwdHVyZShXZWJDb3JlOjpDYXB0
dXJlRGV2aWNlOjpEZXZpY2VUeXBlKSBjb25zdCA9IDA7CiAgICAgICAgIHZpcnR1YWwgTG9nZ2Vy
JiBsb2dnZXIoKSA9IDA7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQ
YWdlUHJveHlDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQkocmV2aXNpb24gMjYxMDMzKQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0JKHdvcmtpbmcgY29weSkK
QEAgLTI5MCwxNiArMjkwLDYgQEAgY29uc3QgU3RyaW5nJiBXZWJQYWdlUHJveHk6OnBheW1lbnRD
b29yZAogICAgIHJldHVybiB3ZWJzaXRlRGF0YVN0b3JlKCkuY29uZmlndXJhdGlvbigpLnNvdXJj
ZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllcigpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94
eTo6cGF5bWVudENvb3JkaW5hdG9yQWRkTWVzc2FnZVJlY2VpdmVyKFdlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5JiwgY29uc3QgSVBDOjpTdHJpbmdSZWZlcmVuY2UmIG1lc3NhZ2VSZWNlaXZlck5h
bWUsIElQQzo6TWVzc2FnZVJlY2VpdmVyJiBtZXNzYWdlUmVjZWl2ZXIpCi17Ci0gICAgcHJvY2Vz
cygpLmFkZE1lc3NhZ2VSZWNlaXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1lLCBtX3dlYlBhZ2VJRCwg
bWVzc2FnZVJlY2VpdmVyKTsKLX0KLQotdm9pZCBXZWJQYWdlUHJveHk6OnBheW1lbnRDb29yZGlu
YXRvclJlbW92ZU1lc3NhZ2VSZWNlaXZlcihXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYsIGNv
bnN0IElQQzo6U3RyaW5nUmVmZXJlbmNlJiBtZXNzYWdlUmVjZWl2ZXJOYW1lKQotewotICAgIHBy
b2Nlc3MoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSwgbV93ZWJQ
YWdlSUQpOwotfQotCiAjZW5kaWYKIAogI2lmIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQpJbmRl
eDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5jcHAJ
KHJldmlzaW9uIDI2MTAzMykKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dQVS9HUFVQcm9j
ZXNzUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTEsMTEgKzIxMSwxMSBAQCB2b2lkIEdQ
VVByb2Nlc3NQcm94eTo6ZGlkQ2xvc2UoSVBDOjpDb25uCiAgICAgZ3B1UHJvY2Vzc0NyYXNoZWQo
KTsKIH0KIAotdm9pZCBHUFVQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VS
ZWNlaXZlck5hbWUsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lKQordm9pZCBHUFVQ
cm9jZXNzUHJveHk6OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNv
bm5lY3Rpb24sIElQQzo6TWVzc2FnZU5hbWUgbWVzc2FnZU5hbWUpCiB7Ci0gICAgbG9nSW52YWxp
ZE1lc3NhZ2UoY29ubmVjdGlvbiwgbWVzc2FnZVJlY2VpdmVyTmFtZSwgbWVzc2FnZU5hbWUpOwor
ICAgIGxvZ0ludmFsaWRNZXNzYWdlKGNvbm5lY3Rpb24sIG1lc3NhZ2VOYW1lKTsKIAotICAgIFdl
YlByb2Nlc3NQb29sOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UobWVzc2FnZVJlY2VpdmVyTmFt
ZSwgbWVzc2FnZU5hbWUpOworICAgIFdlYlByb2Nlc3NQb29sOjpkaWRSZWNlaXZlSW52YWxpZE1l
c3NhZ2UobWVzc2FnZU5hbWUpOwogCiAgICAgLy8gVGVybWluYXRlIHRoZSBHUFUgcHJvY2Vzcy4K
ICAgICB0ZXJtaW5hdGUoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dQVS9HUFVQ
cm9jZXNzUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HUFUv
R1BVUHJvY2Vzc1Byb3h5LmgJKHJldmlzaW9uIDI2MTAzMykKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMTAwLDcgKzEw
MCw3IEBAIHByaXZhdGU6CiAgICAgLy8gSVBDOjpDb25uZWN0aW9uOjpDbGllbnQKICAgICB2b2lk
IGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJy
aWRlOwogICAgIHZvaWQgZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpTdHJp
bmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVz
c2FnZU5hbWUpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZU5hbWUpIG92ZXJyaWRlOwogCiAjaWYgSEFWRShW
SVNJQklMSVRZX1BST1BBR0FUSU9OX1ZJRVcpCiAgICAgdm9pZCBkaWRDcmVhdGVDb250ZXh0Rm9y
VmlzaWJpbGl0eVByb3BhZ2F0aW9uKExheWVySG9zdGluZ0NvbnRleHRJRCk7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5jcHAJKHJldmlzaW9uIDI2MTAzMykKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3NSw5ICsy
NzUsOSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZENsb3NlKElQQzo6CiAgICAgbmV0
d29ya1Byb2Nlc3NDcmFzaGVkKCk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlk
UmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpT
dHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpTdHJpbmdSZWZlcmVuY2Ug
bWVzc2FnZU5hbWUpCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVJbnZhbGlk
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6TWVzc2FnZU5hbWUgbWVz
c2FnZU5hbWUpCiB7Ci0gICAgbG9nSW52YWxpZE1lc3NhZ2UoY29ubmVjdGlvbiwgbWVzc2FnZVJl
Y2VpdmVyTmFtZSwgbWVzc2FnZU5hbWUpOworICAgIGxvZ0ludmFsaWRNZXNzYWdlKGNvbm5lY3Rp
b24sIG1lc3NhZ2VOYW1lKTsKICAgICB0ZXJtaW5hdGUoKTsKIH0KIApJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgJ
KHJldmlzaW9uIDI2MTAzMykKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNDQsNyArMjQ0LDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6
RGVjb2RlciYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+
Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mKSBvdmVycmlk
ZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJ
UEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6OlN0cmluZ1JlZmVy
ZW5jZSBtZXNzYWdlTmFtZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlTmFtZSkgb3ZlcnJpZGU7CiAgICAg
dm9pZCBkaWRSZWNlaXZlU3luY05ldHdvcmtQcm9jZXNzUHJveHlNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jik7CiAK
ICAgICAvLyBNZXNzYWdlIGhhbmRsZXJzCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuY3BwCShyZXZpc2lvbiAyNjEw
MzMpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94
eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxNCw5ICsyMTQsOSBAQCB2b2lkIFBsdWdpblByb2Nl
c3NQcm94eTo6ZGlkQ2xvc2UoSVBDOjpDCiAgICAgcGx1Z2luUHJvY2Vzc0NyYXNoZWRPckZhaWxl
ZFRvTGF1bmNoKCk7CiB9CiAKLXZvaWQgUGx1Z2luUHJvY2Vzc1Byb3h5OjpkaWRSZWNlaXZlSW52
YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OlN0cmluZ1JlZmVy
ZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFt
ZSkKK3ZvaWQgUGx1Z2luUHJvY2Vzc1Byb3h5OjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6Ok1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lKQog
ewotICAgIGxvZ0ludmFsaWRNZXNzYWdlKGNvbm5lY3Rpb24sIG1lc3NhZ2VSZWNlaXZlck5hbWUs
IG1lc3NhZ2VOYW1lKTsKKyAgICBsb2dJbnZhbGlkTWVzc2FnZShjb25uZWN0aW9uLCBtZXNzYWdl
TmFtZSk7CiAgICAgdGVybWluYXRlKCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuaAkocmV2aXNpb24gMjYx
MDMzKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJv
eHkuaAkod29ya2luZyBjb3B5KQpAQCAtMTA0LDcgKzEwNCw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwg
c3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZGlk
Q2xvc2UoSVBDOjpDb25uZWN0aW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlSW52
YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2Fn
ZVJlY2VpdmVyTmFtZSwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUpIG92ZXJyaWRl
OworICAgIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQ
Qzo6TWVzc2FnZU5hbWUpIG92ZXJyaWRlOwogCiAgICAgLy8gUHJvY2Vzc0xhdW5jaGVyOjpDbGll
bnQKICAgICB2b2lkIGRpZEZpbmlzaExhdW5jaGluZyhQcm9jZXNzTGF1bmNoZXIqLCBJUEM6OkNv
bm5lY3Rpb246OklkZW50aWZpZXIpIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmNwcAkocmV2aXNpb24gMjYxMDMzKQorKysgU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03ODUsNyArNzg1LDcg
QEAgdm9pZCBXZWJQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OgogICAgIH0KICNlbmRp
ZgogCi0gICAgTE9HX0VSUk9SKCJVbmhhbmRsZWQgd2ViIHByb2Nlc3MgbWVzc2FnZSAnJXM6OiVz
JyAoZGVzdGluYXRpb246ICUiIFBSSXU2NCAiIHBpZDogJWQpIiwgZGVjb2Rlci5tZXNzYWdlUmVj
ZWl2ZXJOYW1lKCkudG9TdHJpbmcoKS5kYXRhKCksIGRlY29kZXIubWVzc2FnZU5hbWUoKS50b1N0
cmluZygpLmRhdGEoKSwgZGVjb2Rlci5kZXN0aW5hdGlvbklEKCksIHN0YXRpY19jYXN0PGludD4o
Z2V0Q3VycmVudFByb2Nlc3NJRCgpKSk7CisgICAgTE9HX0VSUk9SKCJVbmhhbmRsZWQgd2ViIHBy
b2Nlc3MgbWVzc2FnZSAnJXMnIChkZXN0aW5hdGlvbjogJSIgUFJJdTY0ICIgcGlkOiAlZCkiLCBk
ZXNjcmlwdGlvbihkZWNvZGVyLm1lc3NhZ2VOYW1lKCkpLCBkZWNvZGVyLmRlc3RpbmF0aW9uSUQo
KSwgc3RhdGljX2Nhc3Q8aW50PihnZXRDdXJyZW50UHJvY2Vzc0lEKCkpKTsKIH0KIAogV2ViRnJh
bWUqIFdlYlByb2Nlc3M6OndlYkZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlEKSBjb25zdApJ
bmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNz
Q29ubmVjdGlvbi5jcHAJKHJldmlzaW9uIDI2MTAzMykKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Myw3
ICs3Myw3IEBAIHZvaWQgR1BVUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZENsb3NlKElQQzoKIHsKIH0K
IAotdm9pZCBHUFVQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYsIElQQzo6U3RyaW5nUmVmZXJlbmNlLCBJUEM6OlN0cmluZ1JlZmVyZW5j
ZSkKK3ZvaWQgR1BVUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VOYW1lKQogewogfQogCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5oCShy
ZXZpc2lvbiAyNjEwMzMpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nl
c3NDb25uZWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTgwLDcgKzgwLDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYpIG92ZXJyaWRlOwogICAgIHZvaWQg
ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7
CiAgICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpE
ZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBmaW5hbDsKLSAgICB2b2lk
IGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OlN0cmluZ1Jl
ZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdl
TmFtZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlTmFtZSkgb3ZlcnJpZGU7CiAKICAgICBib29sIGRpc3Bh
dGNoTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKICAgICBib29sIGRp
c3BhdGNoU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1
bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3IuaAkocmV2aXNpb24gMjYxMDMzKQorKysg
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3IuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAKICAgICAvLyBJUEM6OkNvbm5lY3Rp
b246OkNsaWVudAogICAgIHZvaWQgZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJikgb3ZlcnJpZGUg
eyBjbG9zZSgpOyB9Ci0gICAgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiwgSVBDOjpTdHJpbmdSZWZlcmVuY2UsIElQQzo6U3RyaW5nUmVmZXJlbmNlKSBvdmVy
cmlkZSB7IGNsb3NlKCk7IH0KKyAgICB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VOYW1lKSBvdmVycmlkZSB7IGNsb3NlKCk7IH0KIAog
ICAgIHZvaWQgc2hvdygpOwogICAgIHZvaWQgY2xvc2UoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUkuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJLmgJKHJldmlzaW9u
IDI2MTAzMykKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVj
dG9yVUkuaAkod29ya2luZyBjb3B5KQpAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAKICAgICAv
LyBJUEM6OkNvbm5lY3Rpb246OkNsaWVudAogICAgIHZvaWQgZGlkQ2xvc2UoSVBDOjpDb25uZWN0
aW9uJikgb3ZlcnJpZGUgeyAvKiBEbyBub3RoaW5nLCB0aGUgaW5zcGVjdGVkIHBhZ2UgcHJvY2Vz
cyBtYXkgaGF2ZSBjcmFzaGVkIGFuZCBtYXkgYmUgZ2V0dGluZyByZXBsYWNlZC4gKi8gfQotICAg
IHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6U3Ry
aW5nUmVmZXJlbmNlLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSkgb3ZlcnJpZGUgeyBjbG9zZVdpbmRv
dygpOyB9CisgICAgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiwgSVBDOjpNZXNzYWdlTmFtZSkgb3ZlcnJpZGUgeyBjbG9zZVdpbmRvdygpOyB9CiAKICAgICAv
LyBDYWxsZWQgYnkgV2ViSW5zcGVjdG9yVUkgbWVzc2FnZXMKICAgICB2b2lkIGVzdGFibGlzaENv
bm5lY3Rpb24oV2ViUGFnZVByb3h5SWRlbnRpZmllciBpbnNwZWN0ZWRQYWdlSWRlbnRpZmllciwg
Y29uc3QgRGVidWdnYWJsZUluZm9EYXRhJiwgYm9vbCB1bmRlclRlc3QsIHVuc2lnbmVkIGluc3Bl
Y3Rpb25MZXZlbCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAJKHJldmlzaW9uIDI2
MTAzMykKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxOSw3ICsyMTksNyBAQCB2b2lkIE5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkQ2xvc2UoCiAjZW5kaWYKIH0KIAotdm9pZCBOZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSwgSVBDOjpTdHJpbmdSZWZlcmVuY2UpCit2b2lk
IE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZU5hbWUpCiB7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbi5oCShyZXZpc2lvbiAyNjEwMzMpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtOTgs
NyArOTgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlU3lu
Y01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRy
PElQQzo6RW5jb2Rlcj4mKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZENsb3NlKElQQzo6Q29ubmVj
dGlvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIElQ
Qzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJl
Y2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VOYW1lKSBv
dmVycmlkZTsKIAogICAgIHZvaWQgZGlkRmluaXNoUGluZ0xvYWQodWludDY0X3QgcGluZ0xvYWRJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiYsIFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmJik7CiAgICAgdm9pZCBkaWRGaW5pc2hQcmVjb25uZWN0aW9uKHVpbnQ2NF90IHByZWNv
bm5lY3Rpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiYpOwpJbmRleDogU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblBy
b2Nlc3NDb25uZWN0aW9uLmNwcAkocmV2aXNpb24gMjYxMDMzKQorKysgU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMjgsNyArMTI4LDcgQEAgdm9pZCBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6ZGlk
Q2xvc2UoSQogICAgIH0KIH0KIAotdm9pZCBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVj
ZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6U3RyaW5nUmVmZXJlbmNl
LCBJUEM6OlN0cmluZ1JlZmVyZW5jZSkKK3ZvaWQgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OmRp
ZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VOYW1l
KQogewogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Q
cm9jZXNzQ29ubmVjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uLmgJKHJldmlzaW9uIDI2MTAzMykKKysr
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9u
LmgJKHdvcmtpbmcgY29weSkKQEAgLTY2LDcgKzY2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRp
ZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRl
OwogICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6
RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jikgb3ZlcnJpZGU7CiAgICAg
dm9pZCBkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJl
Y2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OlN0cmluZ1JlZmVyZW5j
ZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZSkg
b3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiwgSVBDOjpNZXNzYWdlTmFtZSkgb3ZlcnJpZGU7CiAKICAgICAvLyBNZXNzYWdlIGhhbmRs
ZXJzLgogICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6
RW5jb2Rlcj4mKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90
ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5
ZXJUcmVlRHJhd2luZ0FyZWEubW0JKHJldmlzaW9uIDI2MTAzMykKKysrIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5n
QXJlYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMzg1LDcgKzM4NSw3IEBAIHZvaWQgUmVtb3RlTGF5
ZXJUcmVlRHJhd2luZ0FyZWE6OnVwZGF0ZVIKICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVMYXll
clRyZWVEcmF3aW5nQXJlYVByb3h5OjpXaWxsQ29tbWl0TGF5ZXJUcmVlKGxheWVyVHJhbnNhY3Rp
b24udHJhbnNhY3Rpb25JRCgpKSk7CiAKICAgICBNZXNzYWdlczo6UmVtb3RlTGF5ZXJUcmVlRHJh
d2luZ0FyZWFQcm94eTo6Q29tbWl0TGF5ZXJUcmVlIG1lc3NhZ2UobGF5ZXJUcmFuc2FjdGlvbiwg
c2Nyb2xsaW5nVHJhbnNhY3Rpb24pOwotICAgIGF1dG8gY29tbWl0RW5jb2RlciA9IG1ha2VVbmlx
dWU8SVBDOjpFbmNvZGVyPihNZXNzYWdlczo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94
eTo6Q29tbWl0TGF5ZXJUcmVlOjpyZWNlaXZlck5hbWUoKSwgTWVzc2FnZXM6OlJlbW90ZUxheWVy
VHJlZURyYXdpbmdBcmVhUHJveHk6OkNvbW1pdExheWVyVHJlZTo6bmFtZSgpLCBtX2lkZW50aWZp
ZXIudG9VSW50NjQoKSk7CisgICAgYXV0byBjb21taXRFbmNvZGVyID0gbWFrZVVuaXF1ZTxJUEM6
OkVuY29kZXI+KE1lc3NhZ2VzOjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5OjpDb21t
aXRMYXllclRyZWU6Om5hbWUoKSwgbV9pZGVudGlmaWVyLnRvVUludDY0KCkpOwogICAgIGNvbW1p
dEVuY29kZXItPmVuY29kZShtZXNzYWdlLmFyZ3VtZW50cygpKTsKIAogICAgIC8vIEZJWE1FOiBN
b3ZlIGFsbCBiYWNraW5nIHN0b3JlIGZsdXNoaW5nIG1hbmFnZW1lbnQgdG8gUmVtb3RlTGF5ZXJC
YWNraW5nU3RvcmVDb2xsZWN0aW9uLgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398631</attachid>
            <date>2020-05-06 09:54:04 -0700</date>
            <delta_ts>2020-05-06 11:52:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211112-20200506095403.patch</filename>
            <type>text/plain</type>
            <size>306191</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNjEwMzgpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDIwLTA1LTA2ICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVkdWNlIElQQyBvdmVyaGVhZCBm
b3IgbWVzc2FnZSByZWNlaXZlciBuYW1lIGFuZCBtZXNzYWdlIG5hbWUgdG8gMiBieXRlcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjExMTEyCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvRW51bVRy
YWl0cy5oOgorCiAyMDIwLTA1LTAxICBEb24gT2xtc3RlYWQgIDxkb24ub2xtc3RlYWRAc29ueS5j
b20+CiAKICAgICAgICAgW0dUS10gQWRkIGFkZGl0aW9uYWwgZXhwb3J0cyB0byBzdXBwb3J0IGhp
ZGRlbiB2aXNpYmlsaXR5CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9FbnVtVHJhaXRzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dURi93dGYvRW51bVRyYWl0cy5oCShyZXZpc2lvbiAyNjEwMzgpCisr
KyBTb3VyY2UvV1RGL3d0Zi9FbnVtVHJhaXRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUx
LDkgQEAgc3RydWN0IEVudW1WYWx1ZUNoZWNrZXI8VCwgRW51bVZhbHVlczxFPgogICAgIH0KIH07
CiAKLXRlbXBsYXRlPHR5cGVuYW1lIEUsIHR5cGVuYW1lIFQsIHN0ZDo6ZW5hYmxlX2lmX3Q8c3Rk
Ojppc19lbnVtPEU+Ojp2YWx1ZSAmJiAhc3RkOjppc19zYW1lPHN0ZDo6dW5kZXJseWluZ190eXBl
X3Q8RT4sIGJvb2w+Ojp2YWx1ZT4qID0gbnVsbHB0cj4KK3RlbXBsYXRlPHR5cGVuYW1lIFU+IGNs
YXNzIEhhc0N1c3RvbUlzVmFsaWRFbnVtIDogcHVibGljIHN0ZDo6ZmFsc2VfdHlwZSB7IH07CisK
K3RlbXBsYXRlPHR5cGVuYW1lIEUsIHR5cGVuYW1lIFQsIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjpp
c19lbnVtPEU+Ojp2YWx1ZSAmJiAhc3RkOjppc19zYW1lPHN0ZDo6dW5kZXJseWluZ190eXBlX3Q8
RT4sIGJvb2w+Ojp2YWx1ZSAmJiAhSGFzQ3VzdG9tSXNWYWxpZEVudW08RT46OnZhbHVlPiogPSBu
dWxscHRyPgogY29uc3RleHByIGJvb2wgaXNWYWxpZEVudW0oVCB0KQogewogICAgIHN0YXRpY19h
c3NlcnQoc2l6ZW9mKFQpID49IHN0ZDo6dW5kZXJseWluZ190eXBlX3Q8RT4oKSwgIkludGVncmFs
IHR5cGUgbXVzdCBiZSBhdCBsZWFzdCB0aGUgc2l6ZSBvZiB0aGUgdW5kZXJseWluZyBlbnVtIHR5
cGUiKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjExMjApCisrKyBTb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4NiBAQAorMjAyMC0wNS0wNiAgQWxl
eCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFJlZHVj
ZSBJUEMgb3ZlcmhlYWQgZm9yIG1lc3NhZ2UgcmVjZWl2ZXIgbmFtZSBhbmQgbWVzc2FnZSBuYW1l
IHRvIDIgYnl0ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxMTExMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZl
ZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpk
aWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UpOgorICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVTeW5jTWVzc2FnZSk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlSW52
YWxpZE1lc3NhZ2UpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2Up
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdl
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9pb3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3NJT1MubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpwYXltZW50Q29vcmRpbmF0b3JBZGRNZXNzYWdlUmVjZWl2ZXIpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cGF5bWVudENvb3Jk
aW5hdG9yUmVtb3ZlTWVzc2FnZVJlY2VpdmVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBQbGF0Zm9y
bS9JUEMvQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OldhaXRGb3JN
ZXNzYWdlU3RhdGU6OldhaXRGb3JNZXNzYWdlU3RhdGUpOgorICAgICAgICAoSVBDOjpDb25uZWN0
aW9uOjphZGRXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIpOgorICAgICAgICAoSVBDOjpDb25uZWN0
aW9uOjpyZW1vdmVXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIpOgorICAgICAgICAoSVBDOjpDb25u
ZWN0aW9uOjpkaXNwYXRjaFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlck1lc3NhZ2UpOgorICAgICAg
ICAoSVBDOjpDb25uZWN0aW9uOjphZGRUaHJlYWRNZXNzYWdlUmVjZWl2ZXIpOgorICAgICAgICAo
SVBDOjpDb25uZWN0aW9uOjpyZW1vdmVUaHJlYWRNZXNzYWdlUmVjZWl2ZXIpOgorICAgICAgICAo
SVBDOjpDb25uZWN0aW9uOjpkaXNwYXRjaFRocmVhZE1lc3NhZ2VSZWNlaXZlck1lc3NhZ2UpOgor
ICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVTeW5jTWVzc2FnZUVuY29kZXIpOgorICAg
ICAgICAoSVBDOjpDb25uZWN0aW9uOjpzZW5kTWVzc2FnZSk6CisgICAgICAgIChJUEM6OkNvbm5l
Y3Rpb246OndhaXRGb3JNZXNzYWdlKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6c2VuZFN5
bmNNZXNzYWdlKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6d2FpdEZvclN5bmNSZXBseSk6
CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnByb2Nlc3NJbmNvbWluZ01lc3NhZ2UpOgorICAg
ICAgICAoSVBDOjpDb25uZWN0aW9uOjpkaXNwYXRjaFN5bmNNZXNzYWdlKToKKyAgICAgICAgKElQ
Qzo6Q29ubmVjdGlvbjo6ZGlzcGF0Y2hEaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UpOgorICAgICAg
ICAoSVBDOjpDb25uZWN0aW9uOjpkaXNwYXRjaE1lc3NhZ2UpOgorICAgICAgICAoSVBDOjpDb25u
ZWN0aW9uOjpkaXNwYXRjaE1lc3NhZ2VUb1dvcmtRdWV1ZVJlY2VpdmVyKToKKyAgICAgICAgKElQ
Qzo6Q29ubmVjdGlvbjo6ZGlzcGF0Y2hNZXNzYWdlVG9UaHJlYWRSZWNlaXZlcik6CisgICAgICAg
IChJUEM6OkNvbm5lY3Rpb246OmRpc3BhdGNoSW5jb21pbmdNZXNzYWdlcyk6CisgICAgICAgICog
UGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6c2Vu
ZCk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnNlbmRXaXRoQXN5bmNSZXBseSk6CisgICAg
ICAgIChJUEM6OkNvbm5lY3Rpb246OnNlbmRTeW5jKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlv
bjo6d2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRlbHkpOgorICAgICAgICAqIFBsYXRmb3JtL0lQ
Qy9EZWNvZGVyLmNwcDoKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvRGVjb2Rlci5oOgorICAgICAg
ICAoSVBDOjpEZWNvZGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lIGNvbnN0KToKKyAgICAgICAgKElQ
Qzo6RGVjb2Rlcjo6bWVzc2FnZU5hbWUgY29uc3QpOgorICAgICAgICAoSVBDOjpEZWNvZGVyOjpk
ZWNvZGUpOgorICAgICAgICAoSVBDOjpEZWNvZGVyOjpvcGVyYXRvcj4+KToKKyAgICAgICAgKiBQ
bGF0Zm9ybS9JUEMvRW5jb2Rlci5jcHA6CisgICAgICAgIChJUEM6OkVuY29kZXI6OkVuY29kZXIp
OgorICAgICAgICAoSVBDOjpFbmNvZGVyOjplbmNvZGVIZWFkZXIpOgorICAgICAgICAqIFBsYXRm
b3JtL0lQQy9FbmNvZGVyLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2Uu
aDoKKyAgICAgICAgKElQQzo6aGFuZGxlTWVzc2FnZUFzeW5jKToKKyAgICAgICAgKiBQbGF0Zm9y
bS9JUEMvTWVzc2FnZVJlY2VpdmVyTWFwLmNwcDoKKyAgICAgICAgKElQQzo6TWVzc2FnZVJlY2Vp
dmVyTWFwOjphZGRNZXNzYWdlUmVjZWl2ZXIpOgorICAgICAgICAoSVBDOjpNZXNzYWdlUmVjZWl2
ZXJNYXA6OnJlbW92ZU1lc3NhZ2VSZWNlaXZlcik6CisgICAgICAgIChJUEM6Ok1lc3NhZ2VSZWNl
aXZlck1hcDo6ZGlzcGF0Y2hNZXNzYWdlKToKKyAgICAgICAgKElQQzo6TWVzc2FnZVJlY2VpdmVy
TWFwOjpkaXNwYXRjaFN5bmNNZXNzYWdlKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvTWVzc2Fn
ZVJlY2VpdmVyTWFwLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL01lc3NhZ2VTZW5kZXIuaDoK
KyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvY29jb2EvQ29ubmVjdGlvbkNvY29hLm1tOgorICAgICAg
ICAoSVBDOjpDb25uZWN0aW9uOjpvcGVuKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6c2Vu
ZE1lc3NhZ2UpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpzZW5kT3V0Z29pbmdNZXNzYWdl
KToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6cmVjZWl2ZVNvdXJjZUV2ZW50SGFuZGxlcik6
CisgICAgICAgICogUGxhdGZvcm0vSVBDL2NvY29hL01hY2hNZXNzYWdlLmNwcDoKKyAgICAgICAg
KElQQzo6TWFjaE1lc3NhZ2U6OmNyZWF0ZSk6CisgICAgICAgIChJUEM6Ok1hY2hNZXNzYWdlOjpN
YWNoTWVzc2FnZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL2NvY29hL01hY2hNZXNzYWdlLmg6
CisgICAgICAgIChJUEM6Ok1hY2hNZXNzYWdlOjptZXNzYWdlUmVjZWl2ZXJOYW1lIGNvbnN0KToK
KyAgICAgICAgKElQQzo6TWFjaE1lc3NhZ2U6Om1lc3NhZ2VOYW1lIGNvbnN0KToKKyAgICAgICAg
KiBQbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZSk6CisgICAg
ICAgICogUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5oOgorICAgICAgICAqIFNj
cmlwdHMvTWFrZWZpbGU6CisgICAgICAgICogU2NyaXB0cy9nZW5lcmF0ZS1tZXNzYWdlLXJlY2Vp
dmVyLnB5OgorICAgICAgICAobWFpbik6CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvTGVnYWN5
TWVzc2FnZXMtZXhwZWN0ZWQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9M
ZWdhY3lNZXNzYWdlc1JlcGxpZXMtZXhwZWN0ZWQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdC9NZXNzYWdlTmFtZXMuY3BwOiBBZGRlZC4KKyAgICAgICAgKElQQzo6ZGVzY3Jp
cHRpb24pOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L01lc3NhZ2VOYW1lcy5oOiBBZGRlZC4K
KyAgICAgICAgKElQQzo6cmVjZWl2ZXJOYW1lKToKKyAgICAgICAgKFdURjo6aXNWYWxpZEVudW0p
OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L01lc3NhZ2VSZWNlaXZlci1leHBlY3RlZC5jcHA6
IFJlbW92ZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXQvTWVzc2FnZVJlY2VpdmVyU3VwZXJj
bGFzcy1leHBlY3RlZC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXQvTWVz
c2FnZXMtZXhwZWN0ZWQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9NZXNz
YWdlc1JlcGxpZXMtZXhwZWN0ZWQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dC9NZXNzYWdlc1JlcGxpZXNTdXBlcmNsYXNzUmVwbGllcy1leHBlY3RlZC5oOiBSZW1vdmVkLgor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0L01lc3NhZ2VzU3VwZXJjbGFzcy1leHBlY3RlZC5oOiBS
ZW1vdmVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5OgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0L3Rlc3QtbGVnYWN5LW1lc3NhZ2VzLmluOiBSZW1vdmVkLgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0L3Rlc3QtbGVnYWN5Lm1lc3NhZ2VzLmluOiBDb3BpZWQgZnJvbSBT
b3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3QtbGVnYWN5LW1lc3NhZ2VzLmluLgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3QtbGVnYWN5TWVzc2FnZVJlY2VpdmVyLmNwcDogQWRk
ZWQuCisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rp
b246OnNlbmQpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RNdWx0aXBsZUF0dHJp
YnV0ZXM6OnNlbmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkaWRSZWNlaXZlV2ViUGFn
ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkaWRSZWNlaXZlU3luY1dlYlBh
Z2VNZXNzYWdlKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0LWxlZ2FjeU1lc3NhZ2Vz
Lmg6IEFkZGVkLgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6Om1lc3NhZ2VSZWNlaXZlck5h
bWUpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRVUkw6Om5hbWUpOgorICAgICAg
ICAoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRVUkw6OkxvYWRVUkwpOgorICAgICAgICAoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkxvYWRVUkw6OmFyZ3VtZW50cyBjb25zdCk6CisgICAgICAgIChNZXNzYWdl
czo6V2ViUGFnZTo6TG9hZFNvbWV0aGluZzo6bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6V2Vi
UGFnZTo6TG9hZFNvbWV0aGluZzo6TG9hZFNvbWV0aGluZyk6CisgICAgICAgIChNZXNzYWdlczo6
V2ViUGFnZTo6TG9hZFNvbWV0aGluZzo6YXJndW1lbnRzIGNvbnN0KToKKyAgICAgICAgKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpUb3VjaEV2ZW50OjpuYW1lKToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpUb3VjaEV2ZW50OjpUb3VjaEV2ZW50KToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdl
OjpUb3VjaEV2ZW50Ojphcmd1bWVudHMgY29uc3QpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBh
Z2U6OkFkZEV2ZW50OjpuYW1lKToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpBZGRFdmVu
dDo6QWRkRXZlbnQpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OkFkZEV2ZW50Ojphcmd1
bWVudHMgY29uc3QpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRTb21ldGhpbmdF
bHNlOjpuYW1lKToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkU29tZXRoaW5nRWxz
ZTo6TG9hZFNvbWV0aGluZ0Vsc2UpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRT
b21ldGhpbmdFbHNlOjphcmd1bWVudHMgY29uc3QpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBh
Z2U6OkRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbjo6bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6
V2ViUGFnZTo6RGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uOjpEaWRSZWNlaXZlUG9saWN5RGVjaXNp
b24pOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJlY2VpdmVQb2xpY3lEZWNpc2lv
bjo6YXJndW1lbnRzIGNvbnN0KToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpDbG9zZTo6
bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6Q2xvc2U6OmFyZ3VtZW50cyBjb25z
dCk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6UHJlZmVyZW5jZXNEaWRDaGFuZ2U6Om5h
bWUpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlByZWZlcmVuY2VzRGlkQ2hhbmdlOjpQ
cmVmZXJlbmNlc0RpZENoYW5nZSk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6UHJlZmVy
ZW5jZXNEaWRDaGFuZ2U6OmFyZ3VtZW50cyBjb25zdCk6CisgICAgICAgIChNZXNzYWdlczo6V2Vi
UGFnZTo6U2VuZERvdWJsZUFuZEZsb2F0OjpuYW1lKToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpTZW5kRG91YmxlQW5kRmxvYXQ6OlNlbmREb3VibGVBbmRGbG9hdCk6CisgICAgICAgIChN
ZXNzYWdlczo6V2ViUGFnZTo6U2VuZERvdWJsZUFuZEZsb2F0Ojphcmd1bWVudHMgY29uc3QpOgor
ICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlNlbmRJbnRzOjpuYW1lKToKKyAgICAgICAgKE1l
c3NhZ2VzOjpXZWJQYWdlOjpTZW5kSW50czo6U2VuZEludHMpOgorICAgICAgICAoTWVzc2FnZXM6
OldlYlBhZ2U6OlNlbmRJbnRzOjphcmd1bWVudHMgY29uc3QpOgorICAgICAgICAoTWVzc2FnZXM6
OldlYlBhZ2U6OkNyZWF0ZVBsdWdpbjo6bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFn
ZTo6Q3JlYXRlUGx1Z2luOjpDcmVhdGVQbHVnaW4pOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBh
Z2U6OkNyZWF0ZVBsdWdpbjo6YXJndW1lbnRzIGNvbnN0KToKKyAgICAgICAgKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpSdW5KYXZhU2NyaXB0QWxlcnQ6Om5hbWUpOgorICAgICAgICAoTWVzc2FnZXM6Oldl
YlBhZ2U6OlJ1bkphdmFTY3JpcHRBbGVydDo6UnVuSmF2YVNjcmlwdEFsZXJ0KToKKyAgICAgICAg
KE1lc3NhZ2VzOjpXZWJQYWdlOjpSdW5KYXZhU2NyaXB0QWxlcnQ6OmFyZ3VtZW50cyBjb25zdCk6
CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6R2V0UGx1Z2luczo6bmFtZSk6CisgICAgICAg
IChNZXNzYWdlczo6V2ViUGFnZTo6R2V0UGx1Z2luczo6R2V0UGx1Z2lucyk6CisgICAgICAgIChN
ZXNzYWdlczo6V2ViUGFnZTo6R2V0UGx1Z2luczo6YXJndW1lbnRzIGNvbnN0KToKKyAgICAgICAg
KE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6bmFtZSk6Cisg
ICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246Okdl
dFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpH
ZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6YXJndW1lbnRzIGNvbnN0KToKKyAgICAgICAgKE1l
c3NhZ2VzOjpXZWJQYWdlOjpUZXN0TXVsdGlwbGVBdHRyaWJ1dGVzOjpuYW1lKToKKyAgICAgICAg
KE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0TXVsdGlwbGVBdHRyaWJ1dGVzOjphcmd1bWVudHMgY29u
c3QpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RQYXJhbWV0ZXJBdHRyaWJ1dGVz
OjpuYW1lKToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0UGFyYW1ldGVyQXR0cmli
dXRlczo6VGVzdFBhcmFtZXRlckF0dHJpYnV0ZXMpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBh
Z2U6OlRlc3RQYXJhbWV0ZXJBdHRyaWJ1dGVzOjphcmd1bWVudHMgY29uc3QpOgorICAgICAgICAo
TWVzc2FnZXM6OldlYlBhZ2U6OlRlbXBsYXRlVGVzdDo6bmFtZSk6CisgICAgICAgIChNZXNzYWdl
czo6V2ViUGFnZTo6VGVtcGxhdGVUZXN0OjpUZW1wbGF0ZVRlc3QpOgorICAgICAgICAoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlRlbXBsYXRlVGVzdDo6YXJndW1lbnRzIGNvbnN0KToKKyAgICAgICAgKE1l
c3NhZ2VzOjpXZWJQYWdlOjpTZXRWaWRlb0xheWVySUQ6Om5hbWUpOgorICAgICAgICAoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlNldFZpZGVvTGF5ZXJJRDo6U2V0VmlkZW9MYXllcklEKToKKyAgICAgICAg
KE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRWaWRlb0xheWVySUQ6OmFyZ3VtZW50cyBjb25zdCk6Cisg
ICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6RGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb246
Om5hbWUpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZENyZWF0ZVdlYlByb2Nlc3ND
b25uZWN0aW9uOjpEaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIChNZXNz
YWdlczo6V2ViUGFnZTo6RGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmFyZ3VtZW50cyBj
b25zdCk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6SW50ZXJwcmV0S2V5RXZlbnQ6Om5h
bWUpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OkludGVycHJldEtleUV2ZW50OjpJbnRl
cnByZXRLZXlFdmVudCk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6SW50ZXJwcmV0S2V5
RXZlbnQ6OmFyZ3VtZW50cyBjb25zdCk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6RGVw
cmVjYXRlZE9wZXJhdGlvbjo6bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6RGVw
cmVjYXRlZE9wZXJhdGlvbjo6RGVwcmVjYXRlZE9wZXJhdGlvbik6CisgICAgICAgIChNZXNzYWdl
czo6V2ViUGFnZTo6RGVwcmVjYXRlZE9wZXJhdGlvbjo6YXJndW1lbnRzIGNvbnN0KToKKyAgICAg
ICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpFeHBlcmltZW50YWxPcGVyYXRpb246Om5hbWUpOgorICAg
ICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OkV4cGVyaW1lbnRhbE9wZXJhdGlvbjo6RXhwZXJpbWVu
dGFsT3BlcmF0aW9uKToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpFeHBlcmltZW50YWxP
cGVyYXRpb246OmFyZ3VtZW50cyBjb25zdCk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvdGVz
dC1sZWdhY3lNZXNzYWdlc1JlcGxpZXMuaDogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJr
aXQvdGVzdC1tZXNzYWdlcy5pbjogUmVtb3ZlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC90
ZXN0LXN1cGVyY2xhc3MtbWVzc2FnZXMuaW46IFJlbW92ZWQuCisgICAgICAgICogU2NyaXB0cy93
ZWJraXQvdGVzdC1zdXBlcmNsYXNzLm1lc3NhZ2VzLmluOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2Vi
S2l0L1NjcmlwdHMvd2Via2l0L3Rlc3Qtc3VwZXJjbGFzcy1tZXNzYWdlcy5pbi4KKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdC90ZXN0LXN1cGVyY2xhc3NNZXNzYWdlUmVjZWl2ZXIuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0QXN5bmNNZXNzYWdlOjpjYWxsUmVw
bHkpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RBc3luY01lc3NhZ2U6OmNhbmNl
bFJlcGx5KToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0QXN5bmNNZXNzYWdlOjpz
ZW5kKToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0QXN5bmNNZXNzYWdlV2l0aE5v
QXJndW1lbnRzOjpjYWxsUmVwbHkpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RB
c3luY01lc3NhZ2VXaXRoTm9Bcmd1bWVudHM6OmNhbmNlbFJlcGx5KToKKyAgICAgICAgKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpUZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJndW1lbnRzOjpzZW5kKToKKyAg
ICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJn
dW1lbnRzOjpjYWxsUmVwbHkpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RBc3lu
Y01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHM6OmNhbmNlbFJlcGx5KToKKyAgICAgICAgKE1l
c3NhZ2VzOjpXZWJQYWdlOjpUZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1lbnRzOjpz
ZW5kKToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0U3luY01lc3NhZ2U6OnNlbmQp
OgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RTeW5jaHJvbm91c01lc3NhZ2U6OnNl
bmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRpZFJlY2VpdmVTeW5jTWVzc2FnZSk6CisgICAgICAgICog
U2NyaXB0cy93ZWJraXQvdGVzdC1zdXBlcmNsYXNzTWVzc2FnZXMuaDogQWRkZWQuCisgICAgICAg
IChNZXNzYWdlczo6V2ViUGFnZTo6bWVzc2FnZVJlY2VpdmVyTmFtZSk6CisgICAgICAgIChNZXNz
YWdlczo6V2ViUGFnZTo6TG9hZFVSTDo6bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFn
ZTo6TG9hZFVSTDo6TG9hZFVSTCk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFVS
TDo6YXJndW1lbnRzIGNvbnN0KToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0QXN5
bmNNZXNzYWdlOjpuYW1lKToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0QXN5bmNN
ZXNzYWdlOjphc3luY01lc3NhZ2VSZXBseU5hbWUpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBh
Z2U6OlRlc3RBc3luY01lc3NhZ2U6OlRlc3RBc3luY01lc3NhZ2UpOgorICAgICAgICAoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlRlc3RBc3luY01lc3NhZ2U6OmFyZ3VtZW50cyBjb25zdCk6CisgICAgICAg
IChNZXNzYWdlczo6V2ViUGFnZTo6VGVzdEFzeW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50czo6bmFt
ZSk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6VGVzdEFzeW5jTWVzc2FnZVdpdGhOb0Fy
Z3VtZW50czo6YXN5bmNNZXNzYWdlUmVwbHlOYW1lKToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpUZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJndW1lbnRzOjphcmd1bWVudHMgY29uc3QpOgor
ICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RBc3luY01lc3NhZ2VXaXRoTXVsdGlwbGVB
cmd1bWVudHM6Om5hbWUpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RBc3luY01l
c3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHM6OmFzeW5jTWVzc2FnZVJlcGx5TmFtZSk6CisgICAg
ICAgIChNZXNzYWdlczo6V2ViUGFnZTo6VGVzdEFzeW5jTWVzc2FnZVdpdGhNdWx0aXBsZUFyZ3Vt
ZW50czo6YXJndW1lbnRzIGNvbnN0KToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0
U3luY01lc3NhZ2U6Om5hbWUpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RTeW5j
TWVzc2FnZTo6VGVzdFN5bmNNZXNzYWdlKToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpU
ZXN0U3luY01lc3NhZ2U6OmFyZ3VtZW50cyBjb25zdCk6CisgICAgICAgIChNZXNzYWdlczo6V2Vi
UGFnZTo6VGVzdFN5bmNocm9ub3VzTWVzc2FnZTo6bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6
V2ViUGFnZTo6VGVzdFN5bmNocm9ub3VzTWVzc2FnZTo6VGVzdFN5bmNocm9ub3VzTWVzc2FnZSk6
CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6VGVzdFN5bmNocm9ub3VzTWVzc2FnZTo6YXJn
dW1lbnRzIGNvbnN0KToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0LXN1cGVyY2xhc3NN
ZXNzYWdlc1JlcGxpZXMuaDogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXQvdGVzdC5t
ZXNzYWdlcy5pbjogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXQvdGVzdE1lc3NhZ2VS
ZWNlaXZlci5jcHA6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3RNZXNzYWdl
cy5oOiBBZGRlZC4KKyAgICAgICAgKE1lc3NhZ2VzOjpOb25lOjptZXNzYWdlUmVjZWl2ZXJOYW1l
KToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0TWVzc2FnZXNSZXBsaWVzLmg6IEFkZGVk
LgorICAgICAgICAqIFNoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5o
OgorICAgICAgICAqIFNoYXJlZC9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQ
cm94eUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94
eTo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eTo6fldlYlBheW1lbnRDb29yZGluYXRvclByb3h5KToKKyAgICAg
ICAgKiBTaGFyZWQvQXV4aWxpYXJ5UHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkF1eGls
aWFyeVByb2Nlc3M6OmFkZE1lc3NhZ2VSZWNlaXZlcik6CisgICAgICAgIChXZWJLaXQ6OkF1eGls
aWFyeVByb2Nlc3M6OnJlbW92ZU1lc3NhZ2VSZWNlaXZlcik6CisgICAgICAgIChXZWJLaXQ6OkF1
eGlsaWFyeVByb2Nlc3M6OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZSk6CisgICAgICAgICogU2hh
cmVkL0F1eGlsaWFyeVByb2Nlc3MuaDoKKyAgICAgICAgKFdlYktpdDo6QXV4aWxpYXJ5UHJvY2Vz
czo6YWRkTWVzc2FnZVJlY2VpdmVyKToKKyAgICAgICAgKFdlYktpdDo6QXV4aWxpYXJ5UHJvY2Vz
czo6cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKToKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvQXV4aWxp
YXJ5UHJvY2Vzc0NvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpBdXhpbGlhcnlQcm9jZXNzOjpk
aWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UpOgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6Cisg
ICAgICAgICogVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OkF1eGlsaWFyeVByb2Nlc3NQcm94eTo6YWRkTWVzc2FnZVJlY2VpdmVyKToKKyAgICAg
ICAgKFdlYktpdDo6QXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjpyZW1vdmVNZXNzYWdlUmVjZWl2ZXIp
OgorICAgICAgICAoV2ViS2l0OjpBdXhpbGlhcnlQcm9jZXNzUHJveHk6OmxvZ0ludmFsaWRNZXNz
YWdlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5Lmg6CisgICAg
ICAgIChXZWJLaXQ6OkF1eGlsaWFyeVByb2Nlc3NQcm94eTo6YWRkTWVzc2FnZVJlY2VpdmVyKToK
KyAgICAgICAgKFdlYktpdDo6QXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjpyZW1vdmVNZXNzYWdlUmVj
ZWl2ZXIpOgorICAgICAgICAoV2ViS2l0OjpBdXhpbGlhcnlQcm9jZXNzUHJveHk6OnNlbmQpOgor
ICAgICAgICAoV2ViS2l0OjpBdXhpbGlhcnlQcm9jZXNzUHJveHk6OnNlbmRXaXRoQXN5bmNSZXBs
eSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJv
eHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW06Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cGF5bWVudENvb3JkaW5hdG9yQWRkTWVzc2Fn
ZVJlY2VpdmVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpwYXlt
ZW50Q29vcmRpbmF0b3JSZW1vdmVNZXNzYWdlUmVjZWl2ZXIpOiBEZWxldGVkLgorICAgICAgICAq
IFVJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6R1BV
UHJvY2Vzc1Byb3h5OjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNz
UHJveHk6OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZSk6CisgICAgICAgICogVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NQ
cm94eTo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUHJvdmlzaW9u
YWxQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNpb25hbFBhZ2VQcm94eTo6
ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjptZXNzYWdlTmFtZXNUb0lnbm9yZVdoaWxlU3VzcGVu
ZGVkKToKKyAgICAgICAgKFdlYktpdDo6U3VzcGVuZGVkUGFnZVByb3h5OjpkaWRSZWNlaXZlTWVz
c2FnZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQ
b29sOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzUG9vbDo6YWRkTWVzc2FnZVJlY2VpdmVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Bvb2w6OnJlbW92ZU1lc3NhZ2VSZWNlaXZlcik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6c2hvdWxkU2VuZFBlbmRpbmdNZXNzYWdl
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpkaWRSZWNlaXZlSW52YWxpZE1l
c3NhZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJL
aXQ6OkdQVVByb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwOgorICAgICAg
ICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZUludmFsaWRNZXNz
YWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rp
b24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90
ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRy
ZWVEcmF3aW5nQXJlYTo6dXBkYXRlUmVuZGVyaW5nKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpkaWRSZWNlaXZlTWVz
c2FnZSk6CisKIDIwMjAtMDUtMDQgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4K
IAogICAgICAgICBbV2ViQXV0aG5dIEltcGxlbWVudCArW19XS1dlYkF1dGhlbnRpY2F0aW9uUGFu
ZWwgY2xlYXJBbGxMb2NhbEF1dGhlbnRpY2F0b3JDcmVkZW50aWFsc10KSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DTWFrZUxp
c3RzLnR4dAkocmV2aXNpb24gMjYxMDM4KQorKysgU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtMTE5LDE0OCArMTE5LDE0OCBAQCBsaXN0KEFQUEVORCBXZWJL
aXRfVU5JRklFRF9TT1VSQ0VfTElTVF9GCiApCiAKIHNldChXZWJLaXRfTUVTU0FHRVNfSU5fRklM
RVMKLSAgICBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4K
LSAgICBHUFVQcm9jZXNzL0dQVVByb2Nlc3MubWVzc2FnZXMuaW4KKyAgICBHUFVQcm9jZXNzL0dQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MKKyAgICBHUFVQcm9jZXNzL0dQVVByb2Nlc3MKIAotICAg
IEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lm1lc3NhZ2Vz
LmluCisgICAgR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkK
IAotICAgIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIubWVz
c2FnZXMuaW4KLSAgICBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvblByb3h5Lm1l
c3NhZ2VzLmluCi0gICAgR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5UHJveHkubWVz
c2FnZXMuaW4KLSAgICBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkubWVz
c2FnZXMuaW4KLSAgICBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblBy
b3h5Lm1lc3NhZ2VzLmluCi0gICAgR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5tZXNz
YWdlcy5pbgotICAgIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5
Lm1lc3NhZ2VzLmluCi0gICAgR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5t
ZXNzYWdlcy5pbgotICAgIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblBy
b3h5Lm1lc3NhZ2VzLmluCi0gICAgR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1h
bmFnZXJQcm94eS5tZXNzYWdlcy5pbgotICAgIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQ
bGF5ZXJQcm94eS5tZXNzYWdlcy5pbgotICAgIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFS
ZXNvdXJjZU1hbmFnZXIubWVzc2FnZXMuaW4KKyAgICBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1
ZGlvRGVzdGluYXRpb25NYW5hZ2VyCisgICAgR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1Nl
c3Npb25Qcm94eQorICAgIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5Cisg
ICAgR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5CisgICAgR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eQorICAgIEdQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlQ0RNUHJveHkKKyAgICBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZh
Y3RvcnlQcm94eQorICAgIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkKKyAg
ICBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eQorICAgIEdQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkKKyAgICBHUFVQcm9jZXNz
L21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkKKyAgICBHUFVQcm9jZXNzL21lZGlhL1JlbW90
ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyCiAKLSAgICBHUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVEND
b2RlY3NQcm94eS5tZXNzYWdlcy5pbgotICAgIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlv
TWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLm1lc3NhZ2VzLmluCi0gICAgR1BVUHJvY2Vzcy93ZWJy
dGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyLm1lc3NhZ2VzLmlu
Ci0gICAgR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5tZXNzYWdlcy5pbgot
ICAgIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyLm1lc3NhZ2Vz
LmluCi0gICAgR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
Lm1lc3NhZ2VzLmluCi0gICAgR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyTWFuYWdlci5tZXNzYWdlcy5pbgorICAgIEdQVVByb2Nlc3Mvd2VicnRjL0xpYldl
YlJUQ0NvZGVjc1Byb3h5CisgICAgR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0
cmVhbVRyYWNrUmVuZGVyZXIKKyAgICBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlh
U3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXIKKyAgICBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVN
ZWRpYVJlY29yZGVyCisgICAgR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlck1h
bmFnZXIKKyAgICBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXIKKyAgICBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJN
YW5hZ2VyCiAKLSAgICBOZXR3b3JrUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIubWVz
c2FnZXMuaW4KKyAgICBOZXR3b3JrUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIKIAot
ICAgIE5ldHdvcmtQcm9jZXNzL0luZGV4ZWREQi9XZWJJREJTZXJ2ZXIubWVzc2FnZXMuaW4KKyAg
ICBOZXR3b3JrUHJvY2Vzcy9JbmRleGVkREIvV2ViSURCU2VydmVyCiAKLSAgICBOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgotICAgIE5ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyLm1lc3NhZ2VzLmluCi0gICAg
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KLSAgICBOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW4KLSAgICBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrU29ja2V0Q2hhbm5lbC5tZXNzYWdlcy5pbgotICAgIE5ldHdvcmtQcm9jZXNzL05l
dHdvcmtTb2NrZXRTdHJlYW0ubWVzc2FnZXMuaW4KKyAgICBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2VzcworICAgIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb250ZW50
UnVsZUxpc3RNYW5hZ2VyCisgICAgTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MKKyAgICBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIKKyAgICBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrU29ja2V0Q2hhbm5lbAorICAgIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRTdHJl
YW0KIAotICAgIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNo
VGFzay5tZXNzYWdlcy5pbgotICAgIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dT
ZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCi0gICAgTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KKyAgICBOZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2sKKyAgICBOZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbgorICAgIE5ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uCiAK
LSAgICBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyU2V0Lm1lc3NhZ2Vz
LmluCisgICAgTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlclNldAogCi0g
ICAgTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5tZXNz
YWdlcy5pbgorICAgIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5l
Y3Rpb24KIAotICAgIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrTUROU1JlZ2lzdGVyLm1l
c3NhZ2VzLmluCi0gICAgTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENNb25pdG9yLm1l
c3NhZ2VzLmluCi0gICAgTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5t
ZXNzYWdlcy5pbgotICAgIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDU29ja2V0Lm1l
c3NhZ2VzLmluCisgICAgTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtNRE5TUmVnaXN0ZXIK
KyAgICBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ01vbml0b3IKKyAgICBOZXR3b3Jr
UHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyCisgICAgTmV0d29ya1Byb2Nlc3Mvd2Vi
cnRjL05ldHdvcmtSVENTb2NrZXQKIAotICAgIFBsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxl
clByb3h5Lm1lc3NhZ2VzLmluCi0gICAgUGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9jZXNzLm1lc3Nh
Z2VzLmluCi0gICAgUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5p
bgorICAgIFBsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5CisgICAgUGx1Z2luUHJv
Y2Vzcy9QbHVnaW5Qcm9jZXNzCisgICAgUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlv
bgogCi0gICAgU2hhcmVkL0F1eGlsaWFyeVByb2Nlc3MubWVzc2FnZXMuaW4KLSAgICBTaGFyZWQv
V2ViQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgorICAgIFNoYXJlZC9BdXhpbGlhcnlQcm9jZXNzCisg
ICAgU2hhcmVkL1dlYkNvbm5lY3Rpb24KIAotICAgIFNoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRo
ZW50aWNhdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4KKyAgICBTaGFyZWQvQXV0aGVudGljYXRpb24v
QXV0aGVudGljYXRpb25NYW5hZ2VyCiAKLSAgICBTaGFyZWQvUGx1Z2lucy9OUE9iamVjdE1lc3Nh
Z2VSZWNlaXZlci5tZXNzYWdlcy5pbgorICAgIFNoYXJlZC9QbHVnaW5zL05QT2JqZWN0TWVzc2Fn
ZVJlY2VpdmVyCiAKLSAgICBVSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5tZXNzYWdlcy5pbgot
ICAgIFVJUHJvY2Vzcy9WaXNpdGVkTGlua1N0b3JlLm1lc3NhZ2VzLmluCi0gICAgVUlQcm9jZXNz
L1dlYkNvb2tpZU1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgotICAgIFVJUHJvY2Vzcy9XZWJGdWxs
U2NyZWVuTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCi0gICAgVUlQcm9jZXNzL1dlYkdlb2xvY2F0
aW9uTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCi0gICAgVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5t
ZXNzYWdlcy5pbgotICAgIFVJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkubWVzc2FnZXMuaW4K
LSAgICBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wubWVzc2FnZXMuaW4KLSAgICBVSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCisgICAgVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJv
eHkKKyAgICBVSVByb2Nlc3MvVmlzaXRlZExpbmtTdG9yZQorICAgIFVJUHJvY2Vzcy9XZWJDb29r
aWVNYW5hZ2VyUHJveHkKKyAgICBVSVByb2Nlc3MvV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eQor
ICAgIFVJUHJvY2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eQorICAgIFVJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkKKyAgICBVSVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5CisgICAgVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sCisgICAgVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eQogCi0gICAg
VUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24ubWVzc2FnZXMuaW4KKyAg
ICBVSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbgogCi0gICAgVUlQcm9j
ZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5Lm1lc3NhZ2VzLmluCisgICAgVUlQcm9jZXNzL0Rv
d25sb2Fkcy9Eb3dubG9hZFByb3h5CiAKLSAgICBVSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94
eS5tZXNzYWdlcy5pbgorICAgIFVJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5CiAKLSAgICBV
SVByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclByb3h5Lm1lc3NhZ2VzLmluCi0g
ICAgVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JQcm94eS5tZXNzYWdlcy5pbgorICAg
IFVJUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHkKKyAgICBVSVByb2Nl
c3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclByb3h5CiAKLSAgICBVSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCisgICAgVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eQogCi0gICAgVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1By
b3h5Lm1lc3NhZ2VzLmluCisgICAgVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5
CiAKLSAgICBVSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJv
eHkubWVzc2FnZXMuaW4KKyAgICBVSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyUHJveHkKIAotICAgIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgor
ICAgIFdlYlByb2Nlc3MvV2ViUHJvY2VzcwogCi0gICAgV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dl
YkF1dG9tYXRpb25TZXNzaW9uUHJveHkubWVzc2FnZXMuaW4KKyAgICBXZWJQcm9jZXNzL0F1dG9t
YXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eQogCi0gICAgV2ViUHJvY2Vzcy9EYXRhYmFz
ZXMvSW5kZXhlZERCL1dlYklEQkNvbm5lY3Rpb25Ub1NlcnZlci5tZXNzYWdlcy5pbgorICAgIFdl
YlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIKIAot
ICAgIFdlYlByb2Nlc3MvRnVsbFNjcmVlbi9XZWJGdWxsU2NyZWVuTWFuYWdlci5tZXNzYWdlcy5p
bgorICAgIFdlYlByb2Nlc3MvRnVsbFNjcmVlbi9XZWJGdWxsU2NyZWVuTWFuYWdlcgogCi0gICAg
V2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW4KKyAgICBXZWJQ
cm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbgogCi0gICAgV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbgorICAgIFdlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQKIAotICAgIFdlYlByb2Nlc3MvR1BV
L21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5tZXNzYWdlcy5pbgotICAgIFdlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5tZXNzYWdlcy5pbgotICAg
IFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvbi5tZXNzYWdlcy5pbgotICAg
IFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5tZXNzYWdlcy5p
bgotICAgIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb24ubWVzc2Fn
ZXMuaW4KLSAgICBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIu
bWVzc2FnZXMuaW4KKyAgICBXZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVS
ZW1vdGUKKyAgICBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJv
eHkKKyAgICBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb1Nlc3Npb24KKyAgICBXZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24KKyAgICBXZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uCisgICAgV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyCiAKLSAgICBXZWJQcm9jZXNzL0dQVS93ZWJydGMv
TGliV2ViUlRDQ29kZWNzLm1lc3NhZ2VzLmluCi0gICAgV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1Nh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllci5tZXNzYWdlcy5pbgorICAgIFdlYlByb2Nlc3MvR1BVL3dl
YnJ0Yy9MaWJXZWJSVENDb2RlY3MKKyAgICBXZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyCiAKLSAgICBXZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0
aW9uTWFuYWdlci5tZXNzYWdlcy5pbgorICAgIFdlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2Vv
bG9jYXRpb25NYW5hZ2VyCiAKLSAgICBXZWJQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNw
ZWN0b3JVSS5tZXNzYWdlcy5pbgotICAgIFdlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3Rv
ci5tZXNzYWdlcy5pbgotICAgIFdlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvckludGVy
cnVwdERpc3BhdGNoZXIubWVzc2FnZXMuaW4KLSAgICBXZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJ
bnNwZWN0b3JVSS5tZXNzYWdlcy5pbgorICAgIFdlYlByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdl
Ykluc3BlY3RvclVJCisgICAgV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yCisgICAg
V2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9ySW50ZXJydXB0RGlzcGF0Y2hlcgorICAg
IFdlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJCiAKLSAgICBXZWJQcm9jZXNzL05l
dHdvcmsvd2VicnRjL1dlYk1ETlNSZWdpc3Rlci5tZXNzYWdlcy5pbgotICAgIFdlYlByb2Nlc3Mv
TmV0d29yay93ZWJydGMvV2ViUlRDTW9uaXRvci5tZXNzYWdlcy5pbgotICAgIFdlYlByb2Nlc3Mv
TmV0d29yay93ZWJydGMvV2ViUlRDUmVzb2x2ZXIubWVzc2FnZXMuaW4KLSAgICBXZWJQcm9jZXNz
L05ldHdvcmsvd2VicnRjL1dlYlJUQ1NvY2tldC5tZXNzYWdlcy5pbgorICAgIFdlYlByb2Nlc3Mv
TmV0d29yay93ZWJydGMvV2ViTUROU1JlZ2lzdGVyCisgICAgV2ViUHJvY2Vzcy9OZXR3b3JrL3dl
YnJ0Yy9XZWJSVENNb25pdG9yCisgICAgV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJSVENS
ZXNvbHZlcgorICAgIFdlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvV2ViUlRDU29ja2V0CiAKLSAg
ICBXZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmlu
Ci0gICAgV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluCi0g
ICAgV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwubWVzc2FnZXMuaW4KLSAgICBX
ZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0U3RyZWFtLm1lc3NhZ2VzLmluCisgICAgV2ViUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbgorICAgIFdlYlByb2Nlc3MvTmV0
d29yay9XZWJSZXNvdXJjZUxvYWRlcgorICAgIFdlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRD
aGFubmVsCisgICAgV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0cmVhbQogCi0gICAgV2Vi
UHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4K
KyAgICBXZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlcgogCi0g
ICAgV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmlu
Ci0gICAgV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5t
ZXNzYWdlcy5pbgotICAgIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5tZXNzYWdlcy5p
bgorICAgIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbgorICAgIFdl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIKKyAgICBXZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkKIAotICAgIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
V0NsaWVudENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KLSAgICBXZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KKyAgICBXZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uCisgICAgV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNX
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uCiAKLSAgICBXZWJQcm9jZXNzL1VzZXJDb250ZW50L1dl
YlVzZXJDb250ZW50Q29udHJvbGxlci5tZXNzYWdlcy5pbgorICAgIFdlYlByb2Nlc3MvVXNlckNv
bnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyCiAKLSAgICBXZWJQcm9jZXNzL1dlYlBhZ2Uv
RHJhd2luZ0FyZWEubWVzc2FnZXMuaW4KLSAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNw
YXRjaGVyLm1lc3NhZ2VzLmluCi0gICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1Zpc2l0ZWRMaW5rVGFi
bGVDb250cm9sbGVyLm1lc3NhZ2VzLmluCi0gICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
bWVzc2FnZXMuaW4KKyAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEKKyAgICBXZWJQ
cm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVyCisgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1Zp
c2l0ZWRMaW5rVGFibGVDb250cm9sbGVyCisgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UK
IAotICAgIFdlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5tZXNzYWdlcy5pbgor
ICAgIFdlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcAogKQogCiAjIEZJWE1FOiBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwMzY2CkBAIC00MDYsMjMg
KzQwNiwzOCBAQCBlbmRpZiAoKQogCiAjIEhlbHBlciBtYWNybyB3aGljaCB3cmFwcyB0aGUgZ2Vu
ZXJhdGUtbWVzc2FnZS1yZWNlaXZlci5weSBzY3JpcHQKICMgICBfb3V0cHV0X3NvdXJjZSBpcyBh
IGxpc3QgbmFtZSB3aGljaCB3aWxsIGNvbnRhaW4gZ2VuZXJhdGVkIHNvdXJjZXMuKGVnLiBXZWJL
aXRfU09VUkNFUykKLSMgICBfaW5wdXRfZmlsZXMgYXJlIG1lc3NhZ2VzLmluIGZpbGVzIHRvIGdl
bmVyYXRlLgotbWFjcm8oR0VORVJBVEVfTUVTU0FHRV9TT1VSQ0VTIF9vdXRwdXRfc291cmNlIF9p
bnB1dF9maWxlcykKLSAgICBmb3JlYWNoIChfZmlsZSAke19pbnB1dF9maWxlc30pCisjICAgX2lu
cHV0cyBhcmUgbWVzc2FnZXMuaW4gZmlsZXMgdG8gZ2VuZXJhdGUuCittYWNybyhHRU5FUkFURV9N
RVNTQUdFX1NPVVJDRVMgX291dHB1dF9zb3VyY2UgX2lucHV0cykKKyAgICB1bnNldChfaW5wdXRf
ZmlsZXMpCisgICAgdW5zZXQoX291dHB1dHMpCisgICAgZm9yZWFjaCAoX2ZpbGUgSU4gSVRFTVMg
JHtfaW5wdXRzfSkKICAgICAgICAgZ2V0X2ZpbGVuYW1lX2NvbXBvbmVudChfbmFtZSAke19maWxl
fSBOQU1FX1dFKQotICAgICAgICBhZGRfY3VzdG9tX2NvbW1hbmQoCi0gICAgICAgICAgICBPVVRQ
VVQgJHtXZWJLaXRfREVSSVZFRF9TT1VSQ0VTX0RJUn0vJHtfbmFtZX1NZXNzYWdlUmVjZWl2ZXIu
Y3BwICR7V2ViS2l0X0RFUklWRURfU09VUkNFU19ESVJ9LyR7X25hbWV9TWVzc2FnZXMuaCAke1dl
YktpdF9ERVJJVkVEX1NPVVJDRVNfRElSfS8ke19uYW1lfU1lc3NhZ2VzUmVwbGllcy5oCi0gICAg
ICAgICAgICBNQUlOX0RFUEVOREVOQ1kgJHtfZmlsZX0KLSAgICAgICAgICAgIERFUEVORFMgJHtX
RUJLSVRfRElSfS9TY3JpcHRzL3dlYmtpdC9fX2luaXRfXy5weQotICAgICAgICAgICAgICAgICAg
ICAke1dFQktJVF9ESVJ9L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5Ci0gICAgICAgICAgICAg
ICAgICAgICR7V0VCS0lUX0RJUn0vU2NyaXB0cy93ZWJraXQvbW9kZWwucHkKLSAgICAgICAgICAg
ICAgICAgICAgJHtXRUJLSVRfRElSfS9TY3JpcHRzL3dlYmtpdC9wYXJzZXIucHkKLSAgICAgICAg
ICAgIENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gJHtXRUJLSVRfRElSfS9TY3JpcHRzL2dl
bmVyYXRlLW1lc3NhZ2UtcmVjZWl2ZXIucHkgJHtfZmlsZX0gLS1pbXBsZW1lbnRhdGlvbiAke1dl
YktpdF9ERVJJVkVEX1NPVVJDRVNfRElSfS8ke19uYW1lfU1lc3NhZ2VSZWNlaXZlci5jcHAgLS1o
ZWFkZXIgJHtXZWJLaXRfREVSSVZFRF9TT1VSQ0VTX0RJUn0vJHtfbmFtZX1NZXNzYWdlcy5oIC0t
cmVwbHktaGVhZGVyICR7V2ViS2l0X0RFUklWRURfU09VUkNFU19ESVJ9LyR7X25hbWV9TWVzc2Fn
ZXNSZXBsaWVzLmgKLSAgICAgICAgICAgIFdPUktJTkdfRElSRUNUT1JZICR7V0VCS0lUX0RJUn0K
LSAgICAgICAgICAgIFZFUkJBVElNKQotCisgICAgICAgIGxpc3QoQVBQRU5EIF9pbnB1dF9maWxl
cyAke1dFQktJVF9ESVJ9LyR7X2ZpbGV9Lm1lc3NhZ2VzLmluKQorICAgICAgICBsaXN0KEFQUEVO
RCBfb3V0cHV0cworICAgICAgICAgICAgJHtXZWJLaXRfREVSSVZFRF9TT1VSQ0VTX0RJUn0vJHtf
bmFtZX1NZXNzYWdlUmVjZWl2ZXIuY3BwCisgICAgICAgICAgICAke1dlYktpdF9ERVJJVkVEX1NP
VVJDRVNfRElSfS8ke19uYW1lfU1lc3NhZ2VzLmgKKyAgICAgICAgICAgICR7V2ViS2l0X0RFUklW
RURfU09VUkNFU19ESVJ9LyR7X25hbWV9TWVzc2FnZXNSZXBsaWVzLmgKKyAgICAgICAgKQogICAg
ICAgICBsaXN0KEFQUEVORCAke19vdXRwdXRfc291cmNlfSAke1dlYktpdF9ERVJJVkVEX1NPVVJD
RVNfRElSfS8ke19uYW1lfU1lc3NhZ2VSZWNlaXZlci5jcHApCiAgICAgZW5kZm9yZWFjaCAoKQor
ICAgIGxpc3QoQVBQRU5EICR7X291dHB1dF9zb3VyY2V9ICR7V2ViS2l0X0RFUklWRURfU09VUkNF
U19ESVJ9L01lc3NhZ2VOYW1lcy5jcHApCisKKyAgICBhZGRfY3VzdG9tX2NvbW1hbmQoCisgICAg
ICAgIE9VVFBVVAorICAgICAgICAgICAgJHtXZWJLaXRfREVSSVZFRF9TT1VSQ0VTX0RJUn0vTWVz
c2FnZU5hbWVzLmNwcAorICAgICAgICAgICAgJHtXZWJLaXRfREVSSVZFRF9TT1VSQ0VTX0RJUn0v
TWVzc2FnZU5hbWVzLmgKKyAgICAgICAgICAgICR7X291dHB1dHN9CisgICAgICAgIE1BSU5fREVQ
RU5ERU5DWSAke1dFQktJVF9ESVJ9L1NjcmlwdHMvZ2VuZXJhdGUtbWVzc2FnZS1yZWNlaXZlci5w
eQorICAgICAgICBERVBFTkRTCisgICAgICAgICAgICAke1dFQktJVF9ESVJ9L1NjcmlwdHMvd2Vi
a2l0L19faW5pdF9fLnB5CisgICAgICAgICAgICAke1dFQktJVF9ESVJ9L1NjcmlwdHMvd2Via2l0
L21lc3NhZ2VzLnB5CisgICAgICAgICAgICAke1dFQktJVF9ESVJ9L1NjcmlwdHMvd2Via2l0L21v
ZGVsLnB5CisgICAgICAgICAgICAke1dFQktJVF9ESVJ9L1NjcmlwdHMvd2Via2l0L3BhcnNlci5w
eQorICAgICAgICAgICAgJHtfaW5wdXRfZmlsZXN9CisgICAgICAgIENPTU1BTkQgJHtQWVRIT05f
RVhFQ1VUQUJMRX0gJHtXRUJLSVRfRElSfS9TY3JpcHRzL2dlbmVyYXRlLW1lc3NhZ2UtcmVjZWl2
ZXIucHkgJHtXRUJLSVRfRElSfSAke19pbnB1dHN9CisgICAgICAgIFdPUktJTkdfRElSRUNUT1JZ
ICR7V2ViS2l0X0RFUklWRURfU09VUkNFU19ESVJ9CisgICAgICAgIFZFUkJBVElNCisgICAgKQog
ZW5kbWFjcm8oKQogR0VORVJBVEVfTUVTU0FHRV9TT1VSQ0VTKFdlYktpdF9ERVJJVkVEX1NPVVJD
RVMgIiR7V2ViS2l0X01FU1NBR0VTX0lOX0ZJTEVTfSIpCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
RGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAkocmV2aXNpb24gMjYxMDM4KQor
KysgU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAkod29ya2lu
ZyBjb3B5KQpAQCAtNjMsNiArNjMsOCBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9N
ZWRpYVBsYXllclByaXZhdGVSZW1vdGVNZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9NZWRpYVBsYXllclByaXZhdGVSZW1vdGVN
ZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9N
ZWRpYVBsYXllclByaXZhdGVSZW1vdGVNZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvTWVzc2FnZU5hbWVzLmNwcAorJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvTWVzc2FnZU5hbWVzLmgKICQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL05QT2JqZWN0TWVzc2FnZVJl
Y2VpdmVyTWVzc2FnZVJlY2VpdmVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYktpdDIvTlBPYmplY3RNZXNzYWdlUmVjZWl2ZXJNZXNzYWdlcy5oCiAkKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9OUE9iamVjdE1lc3NhZ2VSZWNl
aXZlck1lc3NhZ2VzUmVwbGllcy5oCkluZGV4OiBTb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2Vz
Lm1ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCShy
ZXZpc2lvbiAyNjEwMzgpCisrKyBTb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHdv
cmtpbmcgY29weSkKQEAgLTExMiwxMzQgKzExMiwxMzUgQEAgZWxzZQogZW5kaWYKIAogTUVTU0FH
RV9SRUNFSVZFUlMgPSBcCi0JQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3JQcm94eSBcCi0g
ICAgQXV0aGVudGljYXRpb25NYW5hZ2VyIFwKLSAgICBBdXhpbGlhcnlQcm9jZXNzIFwKLSAgICBD
YWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uIFwKLSAgICBEb3dubG9hZFByb3h5IFwKLSAgICBE
cmF3aW5nQXJlYSBcCi0gICAgRHJhd2luZ0FyZWFQcm94eSBcCi0gICAgRWRpdGFibGVJbWFnZUNv
bnRyb2xsZXIgXAotICAgIEV2ZW50RGlzcGF0Y2hlciBcCi0gICAgR1BVUHJvY2VzcyBcCi0gICAg
R1BVUHJvY2Vzc1Byb3h5IFwKLSAgICBHUFVQcm9jZXNzQ29ubmVjdGlvbiBcCi0gICAgR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyBcCi0gICAgTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyIFwK
LSAgICBMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSBcCi0gICAgTGliV2ViUlRDQ29k
ZWNzIFwKLSAgICBMaWJXZWJSVENDb2RlY3NQcm94eSBcCi0gICAgTWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlIFwKLSAgICBOUE9iamVjdE1lc3NhZ2VSZWNlaXZlciBcCi0gICAgTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MgXAotICAgIE5ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyIFwK
LSAgICBOZXR3b3JrTUROU1JlZ2lzdGVyXAotICAgIE5ldHdvcmtQcm9jZXNzIFwKLSAgICBOZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24gXAotICAgIE5ldHdvcmtQcm9jZXNzUHJveHkgXAotICAgIE5l
dHdvcmtSVENNb25pdG9yIFwKLSAgICBOZXR3b3JrUlRDUHJvdmlkZXIgXAotICAgIE5ldHdvcmtS
VENTb2NrZXQgXAotICAgIE5ldHdvcmtSZXNvdXJjZUxvYWRlciBcCi0gICAgTmV0d29ya1NvY2tl
dENoYW5uZWwgXAotICAgIE5ldHdvcmtTb2NrZXRTdHJlYW0gXAotICAgIFBsYXliYWNrU2Vzc2lv
bk1hbmFnZXIgXAotICAgIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eSBcCi0gICAgUGx1Z2lu
Q29udHJvbGxlclByb3h5IFwKLSAgICBQbHVnaW5Qcm9jZXNzIFwKLSAgICBQbHVnaW5Qcm9jZXNz
Q29ubmVjdGlvbiBcCi0gICAgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyIFwKLSAgICBQ
bHVnaW5Qcm9jZXNzUHJveHkgXAotICAgIFBsdWdpblByb3h5IFwKLSAgICBSZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uTWFuYWdlciBcCi0gICAgUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5IFwKLSAg
ICBSZW1vdGVBdWRpb1Nlc3Npb24gXAotICAgIFJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5IFwKLSAg
ICBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXIgXAotICAgIFJlbW90
ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyIFwKLSAgICBSZW1vdGVMYXllclRyZWVEcmF3
aW5nQXJlYVByb3h5IFwKLSAgICBSZW1vdGVDRE1Qcm94eSBcCi0gICAgUmVtb3RlQ0RNRmFjdG9y
eVByb3h5IFwKLSAgICBSZW1vdGVDRE1JbnN0YW5jZVByb3h5IFwKLSAgICBSZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb24gXAotICAgIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5IFwKLSAgICBS
ZW1vdGVMZWdhY3lDRE1Qcm94eSBcCi0gICAgUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5IFwK
LSAgICBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uIFwKLSAgICBSZW1vdGVMZWdhY3lDRE1TZXNzaW9u
UHJveHkgXAotICAgIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlciBcCi0gICAgUmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyUHJveHkgXAotICAgIFJlbW90ZU1lZGlhUGxheWVyUHJveHkgXAotICAgIFJl
bW90ZU1lZGlhUmVjb3JkZXIgXAotICAgIFJlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyIFwKLSAg
ICBSZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlciBcCi0gICAgUmVtb3RlTWVkaWFTZXNzaW9uSGVs
cGVyIFwKLSAgICBSZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eSBcCi0gICAgUmVtb3RlT2Jq
ZWN0UmVnaXN0cnkgXAotICAgIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQgXAotICAgIFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eSBcCi0gICAgUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
IFwKLSAgICBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyIFwKLSAgICBSZW1v
dGVTY3JvbGxpbmdDb29yZGluYXRvciBcCi0gICAgUmVtb3RlV2ViSW5zcGVjdG9yUHJveHkgXAot
ICAgIFJlbW90ZVdlYkluc3BlY3RvclVJIFwKLSAgICBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIg
XAotICAgIFNlY0l0ZW1TaGltUHJveHkgXAotICAgIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2sgXAot
ICAgIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIgXAotICAgIFN0b3JhZ2VBcmVhTWFwIFwK
LSAgICBTdG9yYWdlTWFuYWdlclNldCBcCi0gICAgVGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5
IFwKLSAgICBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlciBcCi0gICAgVXNlck1lZGlhQ2FwdHVyZU1h
bmFnZXJQcm94eSBcCi0gICAgVmlkZW9GdWxsc2NyZWVuTWFuYWdlciBcCi0gICAgVmlkZW9GdWxs
c2NyZWVuTWFuYWdlclByb3h5IFwKLSAgICBWaWV3R2VzdHVyZUNvbnRyb2xsZXIgXAotICAgIFZp
ZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IgXAotICAgIFZpZXdVcGRhdGVEaXNwYXRjaGVyIFwK
LSAgICBWaXNpdGVkTGlua1N0b3JlIFwKLSAgICBWaXNpdGVkTGlua1RhYmxlQ29udHJvbGxlciBc
Ci0gICAgV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkgXAotICAgIFdlYkF1dG9tYXRp
b25TZXNzaW9uIFwKLSAgICBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5IFwKLSAgICBXZWJDb25u
ZWN0aW9uIFwKLSAgICBXZWJDb29raWVNYW5hZ2VyIFwKLSAgICBXZWJDb29raWVNYW5hZ2VyUHJv
eHkgXAotICAgIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyIFwKLSAgICBXZWJGdWxsU2NyZWVuTWFuYWdl
clByb3h5IFwKLSAgICBXZWJHZW9sb2NhdGlvbk1hbmFnZXIgXAotICAgIFdlYkdlb2xvY2F0aW9u
TWFuYWdlclByb3h5IFwKLSAgICBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIgXAotICAgIFdlYklE
QlNlcnZlciBcCi0gICAgV2ViSW5zcGVjdG9yIFwKLSAgICBXZWJJbnNwZWN0b3JJbnRlcnJ1cHRE
aXNwYXRjaGVyIFwKLSAgICBXZWJJbnNwZWN0b3JQcm94eSBcCi0gICAgV2ViSW5zcGVjdG9yVUkg
XAotICAgIFdlYk1ETlNSZWdpc3RlclwKLSAgICBXZWJOb3RpZmljYXRpb25NYW5hZ2VyIFwKLSAg
ICBXZWJQYWdlIFwKLSAgICBXZWJQYWdlUHJveHkgXAotICAgIFdlYlBhc3RlYm9hcmRQcm94eSBc
Ci0gICAgV2ViUGF5bWVudENvb3JkaW5hdG9yIFwKLSAgICBXZWJQYXltZW50Q29vcmRpbmF0b3JQ
cm94eSBcCi0gICAgV2ViUHJvY2VzcyBcCi0gICAgV2ViUHJvY2Vzc0Nvbm5lY3Rpb24gXAotICAg
IFdlYlByb2Nlc3NQb29sIFwKLSAgICBXZWJQcm9jZXNzUHJveHkgXAotICAgIFdlYlJUQ01vbml0
b3IgXAotICAgIFdlYlJUQ1Jlc29sdmVyIFwKLSAgICBXZWJSVENTb2NrZXQgXAotICAgIFdlYlJl
c291cmNlTG9hZGVyIFwKLSAgICBXZWJTV0NsaWVudENvbm5lY3Rpb24gXAotICAgIFdlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uIFwKLSAgICBXZWJTV1NlcnZlckNvbm5lY3Rpb24gXAotICAg
IFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiBcCi0gICAgV2ViRGV2aWNlT3JpZW50YXRp
b25VcGRhdGVQcm92aWRlciBcCi0gICAgV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRl
clByb3h5IFwKLSAgICBXZWJTb2NrZXRDaGFubmVsIFwKLSAgICBXZWJTb2NrZXRTdHJlYW0gXAot
ICAgIFdlYlVzZXJDb250ZW50Q29udHJvbGxlciBcCi0gICAgV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyUHJveHkgXAorCU5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
IFwKKwlOZXR3b3JrUHJvY2Vzcy9JbmRleGVkREIvV2ViSURCU2VydmVyIFwKKwlOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlciBcCisJTmV0d29ya1Byb2Nlc3MvV2Vi
U3RvcmFnZS9TdG9yYWdlTWFuYWdlclNldCBcCisJTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVT
dG9yYWdlRW5naW5lQ29ubmVjdGlvbiBcCisJTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xz
L0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlciBcCisJTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nv
Y2tldENoYW5uZWwgXAorCU5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJD
b25uZWN0aW9uIFwKKwlOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJG
ZXRjaFRhc2sgXAorCU5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uIFwKKwlOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtIFwK
KwlOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2VzcyBcCisJTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZGVyIFwKKwlOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya01ETlNSZWdp
c3RlciBcCisJTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENTb2NrZXQgXAorCU5ldHdv
cmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIgXAorCU5ldHdvcmtQcm9jZXNzL3dl
YnJ0Yy9OZXR3b3JrUlRDTW9uaXRvciBcCisJTmV0d29ya1Byb2Nlc3MvQ29va2llcy9XZWJDb29r
aWVNYW5hZ2VyIFwKKwlTaGFyZWQvUGx1Z2lucy9OUE9iamVjdE1lc3NhZ2VSZWNlaXZlciBcCisJ
U2hhcmVkL0F1eGlsaWFyeVByb2Nlc3MgXAorCVNoYXJlZC9BUEkvQ29jb2EvUmVtb3RlT2JqZWN0
UmVnaXN0cnkgXAorCVNoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSBc
CisJU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlciBcCisJU2hhcmVk
L1dlYkNvbm5lY3Rpb24gXAorCVVJUHJvY2Vzcy9XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5IFwK
KwlVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJv
eHkgXAorCVVJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5IFwKKwlVSVByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkgXAorCVVJUHJvY2Vz
cy9XZWJQYXN0ZWJvYXJkUHJveHkgXAorCVVJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29u
dGVudENvbnRyb2xsZXJQcm94eSBcCisJVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JQ
cm94eSBcCisJVUlQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eSBcCisJ
VUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5IFwKKwlVSVByb2Nlc3MvRHJhd2lu
Z0FyZWFQcm94eSBcCisJVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eSBcCisJ
VUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFu
YWdlclByb3h5IFwKKwlVSVByb2Nlc3MvV2ViUGFnZVByb3h5IFwKKwlVSVByb2Nlc3MvVmlzaXRl
ZExpbmtTdG9yZSBcCisJVUlQcm9jZXNzL2lvcy9XZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVBy
b3ZpZGVyUHJveHkgXAorCVVJUHJvY2Vzcy9pb3MvRWRpdGFibGVJbWFnZUNvbnRyb2xsZXIgXAor
CVVJUHJvY2Vzcy9pb3MvU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlciBcCisJVUlQcm9jZXNz
L21hYy9TZWNJdGVtU2hpbVByb3h5IFwKKwlVSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2Vy
UHJveHkgXAorCVVJUHJvY2Vzcy9Db2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkgXAor
CVVJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkgXAorCVVJUHJvY2Vz
cy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5IFwKKwlVSVByb2Nlc3MvV2ViQ29v
a2llTWFuYWdlclByb3h5IFwKKwlVSVByb2Nlc3MvVmlld0dlc3R1cmVDb250cm9sbGVyIFwKKwlV
SVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5IFwKKwlVSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRv
bWF0aW9uU2Vzc2lvbiBcCisJVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sIFwKKwlVSVByb2Nlc3Mv
RG93bmxvYWRzL0Rvd25sb2FkUHJveHkgXAorCVVJUHJvY2Vzcy9NZWRpYS9BdWRpb1Nlc3Npb25S
b3V0aW5nQXJiaXRyYXRvclByb3h5IFwKKwlXZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIv
V2ViSURCQ29ubmVjdGlvblRvU2VydmVyIFwKKwlXZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29u
bmVjdGlvbiBcCisJV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZCBcCisJV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcyBcCisJV2ViUHJvY2Vz
cy9HUFUvd2VicnRjL1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciBcCisJV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlIFwKKwlXZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24gXAorCVdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxl
Z2FjeUNETVNlc3Npb24gXAorCVdlYlByb2Nlc3MvR1BVL21lZGlhL2lvcy9SZW1vdGVNZWRpYVNl
c3Npb25IZWxwZXIgXAorCVdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFu
YWdlciBcCisJV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5
IFwKKwlXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb1Nlc3Npb24gXAorCVdlYlByb2Nl
c3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcCBcCisJV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9X
ZWJVc2VyQ29udGVudENvbnRyb2xsZXIgXAorCVdlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3Bl
Y3RvckludGVycnVwdERpc3BhdGNoZXIgXAorCVdlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3Bl
Y3RvclVJIFwKKwlXZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3IgXAorCVdlYlByb2Nl
c3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclVJIFwKKwlXZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyIFwKKwlXZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luUHJveHkgXAorCVdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbiBc
CisJV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwgXAorCVdlYlByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24gXAorCVdlYlByb2Nlc3MvTmV0d29yay9XZWJT
b2NrZXRTdHJlYW0gXAorCVdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlciBcCisJ
V2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJSVENTb2NrZXQgXAorCVdlYlByb2Nlc3MvTmV0
d29yay93ZWJydGMvV2ViUlRDTW9uaXRvciBcCisJV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9X
ZWJNRE5TUmVnaXN0ZXIgXAorCVdlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvV2ViUlRDUmVzb2x2
ZXIgXAorCVdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRGV2aWNlT3JpZW50YXRpb25VcGRh
dGVQcm92aWRlciBcCisJV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uIFwKKwlXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uIFwKKwlX
ZWJQcm9jZXNzL1dlYlByb2Nlc3MgXAorCVdlYlByb2Nlc3MvY29jb2EvUGxheWJhY2tTZXNzaW9u
TWFuYWdlciBcCisJV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlciBcCisJ
V2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyIFwKKwlXZWJQcm9jZXNzL0dl
b2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlciBcCisJV2ViUHJvY2Vzcy9BdXRvbWF0aW9u
L1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkgXAorCVdlYlByb2Nlc3MvRnVsbFNjcmVlbi9XZWJG
dWxsU2NyZWVuTWFuYWdlciBcCisJV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRp
bmF0b3IgXAorCVdlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2Vy
IFwKKwlXZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVyIFwKKwlXZWJQcm9jZXNzL1dl
YlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yIFwKKwlXZWJQ
cm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3RvciBcCisJV2ViUHJvY2Vz
cy9XZWJQYWdlL0RyYXdpbmdBcmVhIFwKKwlXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZSBcCisJ
V2ViUHJvY2Vzcy9XZWJQYWdlL1Zpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVyIFwKKwlXZWJQcm9j
ZXNzL1dlYlBhZ2UvQ29jb2EvVGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5IFwKKwlXZWJQcm9j
ZXNzL1dlYlBhZ2UvVmlld1VwZGF0ZURpc3BhdGNoZXIgXAorCVBsdWdpblByb2Nlc3MvV2ViUHJv
Y2Vzc0Nvbm5lY3Rpb24gXAorCVBsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5IFwK
KwlQbHVnaW5Qcm9jZXNzL1BsdWdpblByb2Nlc3MgXAorCUdQVVByb2Nlc3MvR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyBcCisJR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHkgXAorCUdQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5IFwKKwlH
UFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyIFwK
KwlHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1h
bmFnZXIgXAorCUdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyIFwK
KwlHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgXAorCUdQ
VVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIgXAorCUdQVVByb2Nlc3Mvd2VicnRj
L1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyIFwKKwlHUFVQcm9jZXNzL0dQVVBy
b2Nlc3MgXAorCUdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5IFwK
KwlHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvblByb3h5TWFuYWdlciBcCisJR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkgXAorCUdQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlQXVkaW9TZXNzaW9uUHJveHkgXAorCUdQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uUHJveHkgXAorCUdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJv
eHkgXAorCUdQVVByb2Nlc3MvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5
IFwKKwlHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkgXAorCUdQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5IFwKKwlHUFVQcm9jZXNzL21lZGlhL1JlbW90
ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyIFwKKwlHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3Rh
bmNlUHJveHkgXAorCUdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkgXAorCUdQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkgXAorCUdQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIgXAogIwogCiBTQ1JJUFRTID0g
XApAQCAtMjU1LDE1ICsyNTYsMTQgQEAgSEVBREVSX0ZMQUdTID0gJChzaGVsbCBlY2hvICQoQlVJ
TFRfUFJPRAogCiAuUEhPTlkgOiBhbGwKIAotYWxsIDogXAotICAgICQoTUVTU0FHRV9SRUNFSVZF
UlM6JT0lTWVzc2FnZVJlY2VpdmVyLmNwcCkgXAotICAgICQoTUVTU0FHRV9SRUNFSVZFUlM6JT0l
TWVzc2FnZXMuaCkgXAotICAgICQoTUVTU0FHRV9SRUNFSVZFUlM6JT0lTWVzc2FnZXNSZXBsaWVz
LmgpIFwKK2FsbCA6IE1lc3NhZ2VOYW1lcy5oIE1lc3NhZ2VOYW1lcy5jcHAgXAorICAgICQoYWRk
c3VmZml4IE1lc3NhZ2VSZWNlaXZlci5jcHAsJChub3RkaXIgJChNRVNTQUdFX1JFQ0VJVkVSUykp
KSBcCisgICAgJChhZGRzdWZmaXggTWVzc2FnZXMuaCwkKG5vdGRpciAkKE1FU1NBR0VfUkVDRUlW
RVJTKSkpIFwKKyAgICAkKGFkZHN1ZmZpeCBNZXNzYWdlc1JlcGxpZXMuaCwkKG5vdGRpciAkKE1F
U1NBR0VfUkVDRUlWRVJTKSkpIFwKICMKIAotJU1lc3NhZ2VSZWNlaXZlci5jcHAgJU1lc3NhZ2Vz
LmggJU1lc3NhZ2VzUmVwbGllcy5oIDogJS5tZXNzYWdlcy5pbiAkKFNDUklQVFMpCi0JQGVjaG8g
R2VuZXJhdGluZyBtZXNzYWdlIHJlY2VpdmVyIGZvciAkKi4uLgotCUBweXRob24gJChXZWJLaXQy
KS9TY3JpcHRzL2dlbmVyYXRlLW1lc3NhZ2UtcmVjZWl2ZXIucHkgJDwgLS1pbXBsZW1lbnRhdGlv
biAkKk1lc3NhZ2VSZWNlaXZlci5jcHAgLS1oZWFkZXIgJCpNZXNzYWdlcy5oIC0tcmVwbHktaGVh
ZGVyICQqTWVzc2FnZXNSZXBsaWVzLmgKKyQoYWRkc3VmZml4IE1lc3NhZ2VSZWNlaXZlci5jcHAs
JChub3RkaXIgJChNRVNTQUdFX1JFQ0VJVkVSUykpKSAkKGFkZHN1Zml4IE1lc3NhZ2VzLmgsJChu
b3RkaXIgJChNRVNTQUdFX1JFQ0VJVkVSUykpKSAkKGFkZHN1ZmZpeCBNZXNzYWdlc1JlcGxpZXMu
aCwkKG5vdGRpciAkKE1FU1NBR0VfUkVDRUlWRVJTKSkpIE1lc3NhZ2VOYW1lcy5oIE1lc3NhZ2VO
YW1lcy5jcHA6ICQoYWRkc3VmZml4IC5tZXNzYWdlcy5pbiwkKE1FU1NBR0VfUkVDRUlWRVJTKSkg
JChTQ1JJUFRTKQorCUBweXRob24gJChXZWJLaXQyKS9TY3JpcHRzL2dlbmVyYXRlLW1lc3NhZ2Ut
cmVjZWl2ZXIucHkgJChXZWJLaXQyKSAkKE1FU1NBR0VfUkVDRUlWRVJTKQogCiBURVhUX1BSRVBS
T0NFU1NPUl9GTEFHUz0tRSAtUCAtdwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtR1RL
LmNtYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm1HVEsuY21ha2UJKHJl
dmlzaW9uIDI2MTAzOCkKKysrIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm1HVEsuY21ha2UJKHdvcmtp
bmcgY29weSkKQEAgLTQzLDkgKzQzLDkgQEAgaWYgKE5PVCBVU0VfR1RLNCkKICAgICAgICAgV2Vi
UHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IuY3BwCiAgICAgKQog
ICAgIGxpc3QoQVBQRU5EIFdlYktpdF9NRVNTQUdFU19JTl9GSUxFUwotICAgICAgICBVSVByb2Nl
c3MvVmlld0dlc3R1cmVDb250cm9sbGVyLm1lc3NhZ2VzLmluCisgICAgICAgIFVJUHJvY2Vzcy9W
aWV3R2VzdHVyZUNvbnRyb2xsZXIKIAotICAgICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dl
c3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5tZXNzYWdlcy5pbgorICAgICAgICBXZWJQcm9jZXNzL1dl
YlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3RvcgogICAgICkKIGVuZGlmICgpCiAKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1NvdXJjZXNDb2NvYS50eHQJKHJldmlzaW9uIDI2MTAzOCkKKysrIFNvdXJjZS9XZWJL
aXQvU291cmNlc0NvY29hLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNjU2LDYgKzY1Niw3IEBAIEdQ
VVByb2Nlc3NQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKIEdQVVByb2Nlc3NNZXNzYWdlUmVjZWl2
ZXIuY3BwCiBMaWJXZWJSVENDb2RlY3NQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKIExpYldlYlJU
Q0NvZGVjc01lc3NhZ2VSZWNlaXZlci5jcHAKK01lc3NhZ2VOYW1lcy5jcHAKIFJlbW90ZUF1ZGlv
RGVzdGluYXRpb25NYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcAogUmVtb3RlQXVkaW9EZXN0aW5h
dGlvblByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAogUmVtb3RlQXVkaW9TZXNzaW9uTWVzc2FnZVJl
Y2VpdmVyLmNwcApJbmRleDogU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9H
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAkocmV2aXNpb24gMjYxMDM4KQorKysgU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMTYsOCArMTE2LDggQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIExvZ2dl
ciYgbG9nZ2VyKCkgZmluYWwgeyByZXR1cm4gbV9wcm9jZXNzLmxvZ2dlcigpOyB9Ci0gICAgdm9p
ZCBhZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVy
TmFtZSwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImIHJlY2VpdmVyKSBmaW5hbCB7IH0KLSAgICB2b2lk
IHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2
ZXJOYW1lKSBmaW5hbCB7IH0KKyAgICB2b2lkIGFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlJlY2Vp
dmVyTmFtZSwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImKSBmaW5hbCB7IH0KKyAgICB2b2lkIHJlbW92
ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlJlY2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1lKSBm
aW5hbCB7IH0KICAgICBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24oKSBmaW5hbCB7IHJldHVy
biBtX3Byb2Nlc3MuY29ubmVjdGlvbigpOyB9CiAgICAgYm9vbCB3aWxsU3RhcnRDYXB0dXJlKENh
cHR1cmVEZXZpY2U6OkRldmljZVR5cGUgdHlwZSkgY29uc3QgZmluYWwKICAgICB7CkBAIC0xODcs
OSArMTg3LDkgQEAgTG9nZ2VyJiBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpsb2dnZQogICAg
IHJldHVybiAqbV9sb2dnZXI7CiB9CiAKLXZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBD
OjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpTdHJpbmdSZWZlcmVu
Y2UgbWVzc2FnZU5hbWUpCit2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFJlY2Vp
dmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6TWVzc2Fn
ZU5hbWUgbWVzc2FnZU5hbWUpCiB7Ci0gICAgV1RGTG9nQWx3YXlzKCJSZWNlaXZlZCBhbiBpbnZh
bGlkIG1lc3NhZ2UgXCIlcy4lc1wiIGZyb20gdGhlIHdlYiBwcm9jZXNzLlxuIiwgbWVzc2FnZVJl
Y2VpdmVyTmFtZS50b1N0cmluZygpLmRhdGEoKSwgbWVzc2FnZU5hbWUudG9TdHJpbmcoKS5kYXRh
KCkpOworICAgIFdURkxvZ0Fsd2F5cygiUmVjZWl2ZWQgYW4gaW52YWxpZCBtZXNzYWdlIFwiJXNc
IiBmcm9tIHRoZSB3ZWIgcHJvY2Vzcy5cbiIsIGRlc2NyaXB0aW9uKG1lc3NhZ2VOYW1lKSk7CiAg
ICAgQ1JBU0goKTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCShyZXZpc2lvbiAyNjEwMzgpCisrKyBTb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xNDQsNyArMTQ0LDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIElQQzo6Q29ubmVj
dGlvbjo6Q2xpZW50CiAgICAgdm9pZCBkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mKSBmaW5hbDsK
LSAgICB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6
OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6OlN0cmluZ1JlZmVyZW5j
ZSBtZXNzYWdlTmFtZSkgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlTmFtZSkgZmluYWw7CiAgICAgdm9pZCBkaWRS
ZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKICAg
ICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29k
ZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIGZpbmFsOwogCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAkocmV2aXNpb24gMjYxMDM4KQorKysgU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI2NCw3ICsyNjQsNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpkaWRSCiAgICAgICAgIHJldHVybiBwYXltZW50Q29vcmRpbmF0b3IoKS5kaWRSZWNl
aXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKICNlbmRpZgogCi0gICAgV1RGTG9nQWx3
YXlzKCJVbmhhbmRsZWQgbmV0d29yayBwcm9jZXNzIG1lc3NhZ2UgJyVzOiVzJyIsIGRlY29kZXIu
bWVzc2FnZVJlY2VpdmVyTmFtZSgpLnRvU3RyaW5nKCkuZGF0YSgpLCBkZWNvZGVyLm1lc3NhZ2VO
YW1lKCkudG9TdHJpbmcoKS5kYXRhKCkpOworICAgIFdURkxvZ0Fsd2F5cygiVW5oYW5kbGVkIG5l
dHdvcmsgcHJvY2VzcyBtZXNzYWdlICclcyciLCBkZXNjcmlwdGlvbihkZWNvZGVyLm1lc3NhZ2VO
YW1lKCkpKTsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIApAQCAtMzA3LDcgKzMwNyw3
IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFIKICAgICAgICAgcmV0
dXJuIHBheW1lbnRDb29yZGluYXRvcigpLmRpZFJlY2VpdmVTeW5jTWVzc2FnZShjb25uZWN0aW9u
LCBkZWNvZGVyLCByZXBseSk7CiAjZW5kaWYKIAotICAgIFdURkxvZ0Fsd2F5cygiVW5oYW5kbGVk
IG5ldHdvcmsgcHJvY2VzcyBtZXNzYWdlICclczolcyciLCBkZWNvZGVyLm1lc3NhZ2VSZWNlaXZl
ck5hbWUoKS50b1N0cmluZygpLmRhdGEoKSwgZGVjb2Rlci5tZXNzYWdlTmFtZSgpLnRvU3RyaW5n
KCkuZGF0YSgpKTsKKyAgICBXVEZMb2dBbHdheXMoIlVuaGFuZGxlZCBuZXR3b3JrIHByb2Nlc3Mg
bWVzc2FnZSAnJXMnIiwgZGVzY3JpcHRpb24oZGVjb2Rlci5tZXNzYWdlTmFtZSgpKSk7CiAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKQEAgLTM1Niw5ICszNTYsOSBAQCB2b2lkIE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRDCiAjZW5kaWYKIH0KIAotdm9pZCBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIElQQzo6
U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6
TWVzc2FnZU5hbWUgbWVzc2FnZU5hbWUpCiB7Ci0gICAgUkVMRUFTRV9MT0dfRkFVTFQoSVBDLCAi
UmVjZWl2ZWQgYW4gaW52YWxpZCBtZXNzYWdlICclIiBQVUJMSUNfTE9HX1NUUklORyAiOjolIiBQ
VUJMSUNfTE9HX1NUUklORyAiJyBmcm9tIFdlYkNvbnRlbnQgcHJvY2VzcyAlIiBQUkl1NjQgIiwg
cmVxdWVzdGluZyBmb3IgaXQgdG8gYmUgdGVybWluYXRlZC4iLCBtZXNzYWdlUmVjZWl2ZXJOYW1l
LnRvU3RyaW5nKCkuZGF0YSgpLCBtZXNzYWdlTmFtZS50b1N0cmluZygpLmRhdGEoKSwgbV93ZWJQ
cm9jZXNzSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBSRUxFQVNFX0xPR19GQVVMVChJUEMs
ICJSZWNlaXZlZCBhbiBpbnZhbGlkIG1lc3NhZ2UgJyUiIFBVQkxJQ19MT0dfU1RSSU5HICInIGZy
b20gV2ViQ29udGVudCBwcm9jZXNzICUiIFBSSXU2NCAiLCByZXF1ZXN0aW5nIGZvciBpdCB0byBi
ZSB0ZXJtaW5hdGVkLiIsIGRlc2NyaXB0aW9uKG1lc3NhZ2VOYW1lKSwgbV93ZWJQcm9jZXNzSWRl
bnRpZmllci50b1VJbnQ2NCgpKTsKICAgICBtX25ldHdvcmtQcm9jZXNzLT5wYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpUZXJtaW5h
dGVXZWJQcm9jZXNzKG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIpLCAwKTsKIH0KIApJbmRleDogU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuaAkocmV2aXNpb24gMjYxMDM4KQorKysgU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xODYsNyArMTg2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwogICAgIHZvaWQg
ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0
ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRDbG9z
ZShJUEM6OkNvbm5lY3Rpb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVJbnZhbGlk
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVj
ZWl2ZXJOYW1lLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZSkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpN
ZXNzYWdlTmFtZSkgb3ZlcnJpZGU7CiAKICAgICAvLyBNZXNzYWdlIGhhbmRsZXJzLgogICAgIHZv
aWQgZGlkUmVjZWl2ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKQEAgLTMyNiw4ICszMjYsNiBAQCBwcml2YXRlOgog
ICAgIGNvbnN0IFN0cmluZyYgcGF5bWVudENvb3JkaW5hdG9yU291cmNlQXBwbGljYXRpb25CdW5k
bGVJZGVudGlmaWVyKGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JikgZmluYWw7CiAg
ICAgY29uc3QgU3RyaW5nJiBwYXltZW50Q29vcmRpbmF0b3JTb3VyY2VBcHBsaWNhdGlvblNlY29u
ZGFyeUlkZW50aWZpZXIoY29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmKSBmaW5hbDsK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXI+IHBheW1l
bnRDb29yZGluYXRvckF1dGhvcml6YXRpb25QcmVzZW50ZXIoV2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHkmLCBQS1BheW1lbnRSZXF1ZXN0ICopIGZpbmFsOwotICAgIHZvaWQgcGF5bWVudENvb3Jk
aW5hdG9yQWRkTWVzc2FnZVJlY2VpdmVyKFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JiwgY29u
c3QgSVBDOjpTdHJpbmdSZWZlcmVuY2UmLCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYpIGZpbmFsOwot
ICAgIHZvaWQgcGF5bWVudENvb3JkaW5hdG9yUmVtb3ZlTWVzc2FnZVJlY2VpdmVyKFdlYlBheW1l
bnRDb29yZGluYXRvclByb3h5JiwgY29uc3QgSVBDOjpTdHJpbmdSZWZlcmVuY2UmKSBmaW5hbDsK
ICNlbmRpZgogCiAgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOwpJbmRleDog
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAJKHJl
dmlzaW9uIDI2MTAzOCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTQsNyArMjE0LDcgQEAgdm9pZCBOZXR3b3Jr
UHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSQogewogICAgIEFTU0VSVChwYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpID09ICZjb25uZWN0aW9uKTsKICAgICBpZiAocGFyZW50UHJvY2Vzc0Nvbm5l
Y3Rpb24oKSAhPSAmY29ubmVjdGlvbikgewotICAgICAgICBXVEZMb2dBbHdheXMoIklnbm9yZWQg
bWVzc2FnZSAnJXM6JXMnIGJlY2F1c2UgaXQgZGlkIG5vdCBjb21lIGZyb20gdGhlIFVJUHJvY2Vz
cyAoZGVzdGluYXRpb246ICUiIFBSSXU2NCAiKSIsIGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFt
ZSgpLnRvU3RyaW5nKCkuZGF0YSgpLCBkZWNvZGVyLm1lc3NhZ2VOYW1lKCkudG9TdHJpbmcoKS5k
YXRhKCksIGRlY29kZXIuZGVzdGluYXRpb25JRCgpKTsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJJ
Z25vcmVkIG1lc3NhZ2UgJyVzJyBiZWNhdXNlIGl0IGRpZCBub3QgY29tZSBmcm9tIHRoZSBVSVBy
b2Nlc3MgKGRlc3RpbmF0aW9uOiAlIiBQUkl1NjQgIikiLCBkZXNjcmlwdGlvbihkZWNvZGVyLm1l
c3NhZ2VOYW1lKCkpLCBkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSk7CiAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjQxLDcgKzI0MSw3IEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRpZFJlY2VpdmVTeW5jTWVzc2EKIHsKICAgICBBU1NFUlQo
cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKSA9PSAmY29ubmVjdGlvbik7CiAgICAgaWYgKHBhcmVu
dFByb2Nlc3NDb25uZWN0aW9uKCkgIT0gJmNvbm5lY3Rpb24pIHsKLSAgICAgICAgV1RGTG9nQWx3
YXlzKCJJZ25vcmVkIG1lc3NhZ2UgJyVzOiVzJyBiZWNhdXNlIGl0IGRpZCBub3QgY29tZSBmcm9t
IHRoZSBVSVByb2Nlc3MgKGRlc3RpbmF0aW9uOiAlIiBQUkl1NjQgIikiLCBkZWNvZGVyLm1lc3Nh
Z2VSZWNlaXZlck5hbWUoKS50b1N0cmluZygpLmRhdGEoKSwgZGVjb2Rlci5tZXNzYWdlTmFtZSgp
LnRvU3RyaW5nKCkuZGF0YSgpLCBkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSk7CisgICAgICAgIFdU
RkxvZ0Fsd2F5cygiSWdub3JlZCBtZXNzYWdlICclcycgYmVjYXVzZSBpdCBkaWQgbm90IGNvbWUg
ZnJvbSB0aGUgVUlQcm9jZXNzIChkZXN0aW5hdGlvbjogJSIgUFJJdTY0ICIpIiwgZGVzY3JpcHRp
b24oZGVjb2Rlci5tZXNzYWdlTmFtZSgpKSwgZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpOwogICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KSW5kZXg6
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzSU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
aW9zL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzSU9TLm1tCShyZXZpc2lvbiAyNjEwMzgp
CisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzc0lPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtODUsMTQgKzg1LDYgQEAgc3RkOjp1
bmlxdWVfcHRyPFBheW1lbnRBdXRob3JpemF0aW9uUHJlcwogICAgIHJldHVybiBtYWtlVW5pcXVl
PFBheW1lbnRBdXRob3JpemF0aW9uQ29udHJvbGxlcj4oY29vcmRpbmF0b3IsIHJlcXVlc3QpOwog
fQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpwYXltZW50Q29vcmRpbmF0
b3JBZGRNZXNzYWdlUmVjZWl2ZXIoV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmLCBjb25zdCBJ
UEM6OlN0cmluZ1JlZmVyZW5jZSYsIElQQzo6TWVzc2FnZVJlY2VpdmVyJikKLXsKLX0KLQotdm9p
ZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cGF5bWVudENvb3JkaW5hdG9yUmVtb3Zl
TWVzc2FnZVJlY2VpdmVyKFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JiwgY29uc3QgSVBDOjpT
dHJpbmdSZWZlcmVuY2UmKQotewotfQotCiAjZW5kaWYgLy8gRU5BQkxFKEFQUExFX1BBWV9SRU1P
VEVfVUkpCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAJKHJldmlzaW9uIDI2MTAzOCkKKysrIFNvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NCwyMSAr
NTQsMTcgQEAgY29uc3Qgc2l6ZV90IG1heFBlbmRpbmdJbmNvbWluZ01lc3NhZ2VzSwogc3RkOjph
dG9taWM8dW5zaWduZWQ+IFVuYm91bmRlZFN5bmNocm9ub3VzSVBDU2NvcGU6OnVuYm91bmRlZFN5
bmNocm9ub3VzSVBDQ291bnQgPSAwOwogCiBzdHJ1Y3QgQ29ubmVjdGlvbjo6V2FpdEZvck1lc3Nh
Z2VTdGF0ZSB7Ci0gICAgV2FpdEZvck1lc3NhZ2VTdGF0ZShTdHJpbmdSZWZlcmVuY2UgbWVzc2Fn
ZVJlY2VpdmVyTmFtZSwgU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lLCB1aW50NjRfdCBkZXN0
aW5hdGlvbklELCBPcHRpb25TZXQ8V2FpdEZvck9wdGlvbj4gd2FpdEZvck9wdGlvbnMpCi0gICAg
ICAgIDogbWVzc2FnZVJlY2VpdmVyTmFtZShtZXNzYWdlUmVjZWl2ZXJOYW1lKQotICAgICAgICAs
IG1lc3NhZ2VOYW1lKG1lc3NhZ2VOYW1lKQorICAgIFdhaXRGb3JNZXNzYWdlU3RhdGUoTWVzc2Fn
ZU5hbWUgbWVzc2FnZU5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIE9wdGlvblNldDxXYWl0
Rm9yT3B0aW9uPiB3YWl0Rm9yT3B0aW9ucykKKyAgICAgICAgOiBtZXNzYWdlTmFtZShtZXNzYWdl
TmFtZSkKICAgICAgICAgLCBkZXN0aW5hdGlvbklEKGRlc3RpbmF0aW9uSUQpCiAgICAgICAgICwg
d2FpdEZvck9wdGlvbnMod2FpdEZvck9wdGlvbnMpCiAgICAgewogICAgIH0KIAotICAgIFN0cmlu
Z1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lOwotICAgIFN0cmluZ1JlZmVyZW5jZSBtZXNz
YWdlTmFtZTsKKyAgICBNZXNzYWdlTmFtZSBtZXNzYWdlTmFtZTsKICAgICB1aW50NjRfdCBkZXN0
aW5hdGlvbklEOwotCiAgICAgT3B0aW9uU2V0PFdhaXRGb3JPcHRpb24+IHdhaXRGb3JPcHRpb25z
OwogICAgIGJvb2wgbWVzc2FnZVdhaXRpbmdJbnRlcnJ1cHRlZCA9IGZhbHNlOwotCiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPERlY29kZXI+IGRlY29kZXI7CiB9OwogCkBAIC0zMTUsNyArMzExLDcgQEAg
dm9pZCBDb25uZWN0aW9uOjpzZXRTaG91bGRFeGl0T25TeW5jTWVzcwogICAgIG1fc2hvdWxkRXhp
dE9uU3luY01lc3NhZ2VTZW5kRmFpbHVyZSA9IHNob3VsZEV4aXRPblN5bmNNZXNzYWdlU2VuZEZh
aWx1cmU7CiB9CiAKLXZvaWQgQ29ubmVjdGlvbjo6YWRkV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVy
KFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBXb3JrUXVldWUmIHdvcmtRdWV1
ZSwgV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKiB3b3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIpCit2
b2lkIENvbm5lY3Rpb246OmFkZFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcihSZWNlaXZlck5hbWUg
bWVzc2FnZVJlY2VpdmVyTmFtZSwgV29ya1F1ZXVlJiB3b3JrUXVldWUsIFdvcmtRdWV1ZU1lc3Nh
Z2VSZWNlaXZlciogd29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKQogewogICAgIEFTU0VSVChSdW5M
b29wOjppc01haW4oKSk7CiAKQEAgLTMyNSw3ICszMjEsNyBAQCB2b2lkIENvbm5lY3Rpb246OmFk
ZFdvcmtRdWV1ZU1lc3NhZ2VSZWNlCiAgICAgbV93b3JrUXVldWVNZXNzYWdlUmVjZWl2ZXJzLmFk
ZChtZXNzYWdlUmVjZWl2ZXJOYW1lLCBzdGQ6Om1ha2VfcGFpcigmd29ya1F1ZXVlLCB3b3JrUXVl
dWVNZXNzYWdlUmVjZWl2ZXIpKTsKIH0KIAotdm9pZCBDb25uZWN0aW9uOjpyZW1vdmVXb3JrUXVl
dWVNZXNzYWdlUmVjZWl2ZXIoU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUpCit2
b2lkIENvbm5lY3Rpb246OnJlbW92ZVdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcihSZWNlaXZlck5h
bWUgbWVzc2FnZVJlY2VpdmVyTmFtZSkKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkp
OwogCkBAIC0zNDksNyArMzQ1LDcgQEAgdm9pZCBDb25uZWN0aW9uOjpkaXNwYXRjaFdvcmtRdWV1
ZU1lc3NhZwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byByZXBseUVuY29kZXIg
PSBtYWtlVW5pcXVlPEVuY29kZXI+KCJJUEMiLCAiU3luY01lc3NhZ2VSZXBseSIsIHN5bmNSZXF1
ZXN0SUQpOworICAgIGF1dG8gcmVwbHlFbmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNvZGVyPihNZXNz
YWdlTmFtZTo6U3luY01lc3NhZ2VSZXBseSwgc3luY1JlcXVlc3RJRCk7CiAKICAgICAvLyBIYW5k
IG9mZiBib3RoIHRoZSBkZWNvZGVyIGFuZCBlbmNvZGVyIHRvIHRoZSB3b3JrIHF1ZXVlIG1lc3Nh
Z2UgcmVjZWl2ZXIuCiAgICAgd29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyLmRpZFJlY2VpdmVTeW5j
TWVzc2FnZSgqdGhpcywgZGVjb2RlciwgcmVwbHlFbmNvZGVyKTsKQEAgLTM2MSw3ICszNTcsNyBA
QCB2b2lkIENvbm5lY3Rpb246OmRpc3BhdGNoV29ya1F1ZXVlTWVzc2FnCiAgICAgICAgIHNlbmRT
eW5jUmVwbHkoV1RGTW92ZShyZXBseUVuY29kZXIpKTsKIH0KIAotdm9pZCBDb25uZWN0aW9uOjph
ZGRUaHJlYWRNZXNzYWdlUmVjZWl2ZXIoU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5h
bWUsIFRocmVhZE1lc3NhZ2VSZWNlaXZlciogdGhyZWFkTWVzc2FnZVJlY2VpdmVyKQordm9pZCBD
b25uZWN0aW9uOjphZGRUaHJlYWRNZXNzYWdlUmVjZWl2ZXIoUmVjZWl2ZXJOYW1lIG1lc3NhZ2VS
ZWNlaXZlck5hbWUsIFRocmVhZE1lc3NhZ2VSZWNlaXZlciogdGhyZWFkTWVzc2FnZVJlY2VpdmVy
KQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKQEAgLTM3MSw3ICszNjcsNyBA
QCB2b2lkIENvbm5lY3Rpb246OmFkZFRocmVhZE1lc3NhZ2VSZWNlaXZlCiAgICAgbV90aHJlYWRN
ZXNzYWdlUmVjZWl2ZXJzLmFkZChtZXNzYWdlUmVjZWl2ZXJOYW1lLCB0aHJlYWRNZXNzYWdlUmVj
ZWl2ZXIpOwogfQogCi12b2lkIENvbm5lY3Rpb246OnJlbW92ZVRocmVhZE1lc3NhZ2VSZWNlaXZl
cihTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSkKK3ZvaWQgQ29ubmVjdGlvbjo6
cmVtb3ZlVGhyZWFkTWVzc2FnZVJlY2VpdmVyKFJlY2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJO
YW1lKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKQEAgLTM5NSw3ICszOTEs
NyBAQCB2b2lkIENvbm5lY3Rpb246OmRpc3BhdGNoVGhyZWFkTWVzc2FnZVJlCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBhdXRvIHJlcGx5RW5jb2RlciA9IG1ha2VVbmlxdWU8RW5jb2Rl
cj4oIklQQyIsICJTeW5jTWVzc2FnZVJlcGx5Iiwgc3luY1JlcXVlc3RJRCk7CisgICAgYXV0byBy
ZXBseUVuY29kZXIgPSBtYWtlVW5pcXVlPEVuY29kZXI+KE1lc3NhZ2VOYW1lOjpTeW5jTWVzc2Fn
ZVJlcGx5LCBzeW5jUmVxdWVzdElEKTsKICAgICB0aHJlYWRNZXNzYWdlUmVjZWl2ZXIuZGlkUmVj
ZWl2ZVN5bmNNZXNzYWdlKCp0aGlzLCBkZWNvZGVyLCByZXBseUVuY29kZXIpOwogCiAgICAgLy8g
RklYTUU6IElmIHRoZSBtZXNzYWdlIHdhcyBpbnZhbGlkLCB3ZSBzaG91bGQgc2VuZCBiYWNrIGEg
U3luY01lc3NhZ2VFcnJvci4KQEAgLTQzNiw5ICs0MzIsOSBAQCB2b2lkIENvbm5lY3Rpb246Om1h
cmtDdXJyZW50bHlEaXNwYXRjaGVkCiAgICAgbV9kaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UgPSB0
cnVlOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8RW5jb2Rlcj4gQ29ubmVjdGlvbjo6Y3JlYXRlU3lu
Y01lc3NhZ2VFbmNvZGVyKFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBTdHJp
bmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIHVpbnQ2NF90
JiBzeW5jUmVxdWVzdElEKQorc3RkOjp1bmlxdWVfcHRyPEVuY29kZXI+IENvbm5lY3Rpb246OmNy
ZWF0ZVN5bmNNZXNzYWdlRW5jb2RlcihNZXNzYWdlTmFtZSBtZXNzYWdlTmFtZSwgdWludDY0X3Qg
ZGVzdGluYXRpb25JRCwgdWludDY0X3QmIHN5bmNSZXF1ZXN0SUQpCiB7Ci0gICAgYXV0byBlbmNv
ZGVyID0gbWFrZVVuaXF1ZTxFbmNvZGVyPihtZXNzYWdlUmVjZWl2ZXJOYW1lLCBtZXNzYWdlTmFt
ZSwgZGVzdGluYXRpb25JRCk7CisgICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNvZGVy
PihtZXNzYWdlTmFtZSwgZGVzdGluYXRpb25JRCk7CiAgICAgZW5jb2Rlci0+c2V0SXNTeW5jTWVz
c2FnZSh0cnVlKTsKIAogICAgIC8vIEVuY29kZSB0aGUgc3luYyByZXF1ZXN0IElELgpAQCAtNDUz
LDkgKzQ0OSw5IEBAIGJvb2wgQ29ubmVjdGlvbjo6c2VuZE1lc3NhZ2Uoc3RkOjp1bmlxdWUKICAg
ICBpZiAoIWlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKGlzTWFp
blRocmVhZCgpICYmIG1faW5EaXNwYXRjaE1lc3NhZ2VNYXJrZWRUb1VzZUZ1bGx5U3luY2hyb25v
dXNNb2RlRm9yVGVzdGluZyAmJiAhZW5jb2Rlci0+aXNTeW5jTWVzc2FnZSgpICYmICEoZW5jb2Rl
ci0+bWVzc2FnZVJlY2VpdmVyTmFtZSgpID09ICJJUEMiKSAmJiAhc2VuZE9wdGlvbnMuY29udGFp
bnMoU2VuZE9wdGlvbjo6SWdub3JlRnVsbHlTeW5jaHJvbm91c01vZGUpKSB7CisgICAgaWYgKGlz
TWFpblRocmVhZCgpICYmIG1faW5EaXNwYXRjaE1lc3NhZ2VNYXJrZWRUb1VzZUZ1bGx5U3luY2hy
b25vdXNNb2RlRm9yVGVzdGluZyAmJiAhZW5jb2Rlci0+aXNTeW5jTWVzc2FnZSgpICYmICEoZW5j
b2Rlci0+bWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IFJlY2VpdmVyTmFtZTo6SVBDKSAmJiAhc2Vu
ZE9wdGlvbnMuY29udGFpbnMoU2VuZE9wdGlvbjo6SWdub3JlRnVsbHlTeW5jaHJvbm91c01vZGUp
KSB7CiAgICAgICAgIHVpbnQ2NF90IHN5bmNSZXF1ZXN0SUQ7Ci0gICAgICAgIGF1dG8gd3JhcHBl
ZE1lc3NhZ2UgPSBjcmVhdGVTeW5jTWVzc2FnZUVuY29kZXIoIklQQyIsICJXcmFwcGVkQXN5bmNN
ZXNzYWdlRm9yVGVzdGluZyIsIGVuY29kZXItPmRlc3RpbmF0aW9uSUQoKSwgc3luY1JlcXVlc3RJ
RCk7CisgICAgICAgIGF1dG8gd3JhcHBlZE1lc3NhZ2UgPSBjcmVhdGVTeW5jTWVzc2FnZUVuY29k
ZXIoTWVzc2FnZU5hbWU6OldyYXBwZWRBc3luY01lc3NhZ2VGb3JUZXN0aW5nLCBlbmNvZGVyLT5k
ZXN0aW5hdGlvbklEKCksIHN5bmNSZXF1ZXN0SUQpOwogICAgICAgICB3cmFwcGVkTWVzc2FnZS0+
c2V0RnVsbHlTeW5jaHJvbm91c01vZGVGb3JUZXN0aW5nKCk7CiAgICAgICAgIHdyYXBwZWRNZXNz
YWdlLT53cmFwRm9yVGVzdGluZyhXVEZNb3ZlKGVuY29kZXIpKTsKICAgICAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PGJvb2w+KHNlbmRTeW5jTWVzc2FnZShzeW5jUmVxdWVzdElELCBXVEZNb3ZlKHdy
YXBwZWRNZXNzYWdlKSwgU2Vjb25kczo6aW5maW5pdHkoKSwgeyB9KSk7CkBAIC00OTAsNyArNDg2
LDcgQEAgU2Vjb25kcyBDb25uZWN0aW9uOjp0aW1lb3V0UmVzcGVjdGluZ0lnbgogICAgIHJldHVy
biBtX2lnbm9yZVRpbWVvdXRzRm9yVGVzdGluZyA/IFNlY29uZHM6OmluZmluaXR5KCkgOiB0aW1l
b3V0OwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gQ29ubmVjdGlvbjo6d2FpdEZvck1l
c3NhZ2UoU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIFN0cmluZ1JlZmVyZW5j
ZSBtZXNzYWdlTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0LCBP
cHRpb25TZXQ8V2FpdEZvck9wdGlvbj4gd2FpdEZvck9wdGlvbnMpCitzdGQ6OnVuaXF1ZV9wdHI8
RGVjb2Rlcj4gQ29ubmVjdGlvbjo6d2FpdEZvck1lc3NhZ2UoTWVzc2FnZU5hbWUgbWVzc2FnZU5h
bWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCwgT3B0aW9uU2V0PFdh
aXRGb3JPcHRpb24+IHdhaXRGb3JPcHRpb25zKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01h
aW4oKSk7CiAgICAgYXV0byBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyk7CkBAIC01MDYs
NyArNTAyLDcgQEAgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IENvbm5lY3Rpb246OndhaQogICAg
ICAgICBmb3IgKGF1dG8gaXQgPSBtX2luY29taW5nTWVzc2FnZXMuYmVnaW4oKSwgZW5kID0gbV9p
bmNvbWluZ01lc3NhZ2VzLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgICAgIHN0
ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiYgbWVzc2FnZSA9ICppdDsKIAotICAgICAgICAgICAgaWYg
KG1lc3NhZ2UtPm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBtZXNzYWdlUmVjZWl2ZXJOYW1lICYm
IG1lc3NhZ2UtPm1lc3NhZ2VOYW1lKCkgPT0gbWVzc2FnZU5hbWUgJiYgbWVzc2FnZS0+ZGVzdGlu
YXRpb25JRCgpID09IGRlc3RpbmF0aW9uSUQpIHsKKyAgICAgICAgICAgIGlmIChtZXNzYWdlLT5t
ZXNzYWdlTmFtZSgpID09IG1lc3NhZ2VOYW1lICYmIG1lc3NhZ2UtPmRlc3RpbmF0aW9uSUQoKSA9
PSBkZXN0aW5hdGlvbklEKSB7CiAgICAgICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPERlY29k
ZXI+IHJldHVybmVkTWVzc2FnZSA9IFdURk1vdmUobWVzc2FnZSk7CiAKICAgICAgICAgICAgICAg
ICBtX2luY29taW5nTWVzc2FnZXMucmVtb3ZlKGl0KTsKQEAgLTUyOCw3ICs1MjQsNyBAQCBzdGQ6
OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gQ29ubmVjdGlvbjo6d2FpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIH0KIAotICAgIFdhaXRGb3JNZXNzYWdlU3RhdGUgd2FpdGluZ0Zvck1lc3NhZ2Uo
bWVzc2FnZVJlY2VpdmVyTmFtZSwgbWVzc2FnZU5hbWUsIGRlc3RpbmF0aW9uSUQsIHdhaXRGb3JP
cHRpb25zKTsKKyAgICBXYWl0Rm9yTWVzc2FnZVN0YXRlIHdhaXRpbmdGb3JNZXNzYWdlKG1lc3Nh
Z2VOYW1lLCBkZXN0aW5hdGlvbklELCB3YWl0Rm9yT3B0aW9ucyk7CiAKICAgICB7CiAgICAgICAg
IGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV93YWl0Rm9yTWVzc2FnZU11dGV4KTsKQEAgLTYwMCwx
NCArNTk2LDEzIEBAIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiBDb25uZWN0aW9uOjpzZW4KICAg
ICBpZiAoc2VuZFN5bmNPcHRpb25zLmNvbnRhaW5zKFNlbmRTeW5jT3B0aW9uOjpGb3JjZURpc3Bh
dGNoV2hlbkRlc3RpbmF0aW9uSXNXYWl0aW5nRm9yVW5ib3VuZGVkU3luY1JlcGx5KSkKICAgICAg
ICAgc2VuZE9wdGlvbnMgPSBzZW5kT3B0aW9ucyB8IElQQzo6U2VuZE9wdGlvbjo6RGlzcGF0Y2hN
ZXNzYWdlRXZlbldoZW5XYWl0aW5nRm9yVW5ib3VuZGVkU3luY1JlcGx5OwogCi0gICAgYXV0byBt
ZXNzYWdlUmVjZWl2ZXJOYW1lID0gZW5jb2Rlci0+bWVzc2FnZVJlY2VpdmVyTmFtZSgpOwogICAg
IGF1dG8gbWVzc2FnZU5hbWUgPSBlbmNvZGVyLT5tZXNzYWdlTmFtZSgpOwogICAgIHNlbmRNZXNz
YWdlKFdURk1vdmUoZW5jb2RlciksIHNlbmRPcHRpb25zKTsKIAogICAgIC8vIFRoZW4gd2FpdCBm
b3IgYSByZXBseS4gV2FpdGluZyBmb3IgYSByZXBseSBjb3VsZCBpbnZvbHZlIGRpc3BhdGNoaW5n
IGluY29taW5nIHN5bmMgbWVzc2FnZXMsIHNvCiAgICAgLy8ga2VlcCBhbiBleHRyYSByZWZlcmVu
Y2UgdG8gdGhlIGNvbm5lY3Rpb24gaGVyZSBpbiBjYXNlIGl0J3MgaW52YWxpZGF0ZWQuCiAgICAg
UmVmPENvbm5lY3Rpb24+IHByb3RlY3QoKnRoaXMpOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxEZWNv
ZGVyPiByZXBseSA9IHdhaXRGb3JTeW5jUmVwbHkoc3luY1JlcXVlc3RJRCwgbWVzc2FnZVJlY2Vp
dmVyTmFtZSwgbWVzc2FnZU5hbWUsIHRpbWVvdXQsIHNlbmRTeW5jT3B0aW9ucyk7CisgICAgc3Rk
Ojp1bmlxdWVfcHRyPERlY29kZXI+IHJlcGx5ID0gd2FpdEZvclN5bmNSZXBseShzeW5jUmVxdWVz
dElELCBtZXNzYWdlTmFtZSwgdGltZW91dCwgc2VuZFN5bmNPcHRpb25zKTsKIAogICAgIC0tbV9p
blNlbmRTeW5jQ291bnQ7CiAKQEAgLTYyNCw3ICs2MTksNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8RGVj
b2Rlcj4gQ29ubmVjdGlvbjo6c2VuCiAgICAgcmV0dXJuIHJlcGx5OwogfQogCi1zdGQ6OnVuaXF1
ZV9wdHI8RGVjb2Rlcj4gQ29ubmVjdGlvbjo6d2FpdEZvclN5bmNSZXBseSh1aW50NjRfdCBzeW5j
UmVxdWVzdElELCBTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgU3RyaW5nUmVm
ZXJlbmNlIG1lc3NhZ2VOYW1lLCBTZWNvbmRzIHRpbWVvdXQsIE9wdGlvblNldDxTZW5kU3luY09w
dGlvbj4gc2VuZFN5bmNPcHRpb25zKQorc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IENvbm5lY3Rp
b246OndhaXRGb3JTeW5jUmVwbHkodWludDY0X3Qgc3luY1JlcXVlc3RJRCwgTWVzc2FnZU5hbWUg
bWVzc2FnZU5hbWUsIFNlY29uZHMgdGltZW91dCwgT3B0aW9uU2V0PFNlbmRTeW5jT3B0aW9uPiBz
ZW5kU3luY09wdGlvbnMpCiB7CiAgICAgdGltZW91dCA9IHRpbWVvdXRSZXNwZWN0aW5nSWdub3Jl
VGltZW91dHNGb3JUZXN0aW5nKHRpbWVvdXQpOwogICAgIE1vbm90b25pY1RpbWUgYWJzb2x1dGVU
aW1lID0gTW9ub3RvbmljVGltZTo6bm93KCkgKyB0aW1lb3V0OwpAQCAtNjY5LDkgKzY2NCw5IEBA
IHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiBDb25uZWN0aW9uOjp3YWkKICAgICB9CiAKICNpZiBP
UyhEQVJXSU4pCi0gICAgUkVMRUFTRV9MT0dfRVJST1IoSVBDLCAiQ29ubmVjdGlvbjo6d2FpdEZv
clN5bmNSZXBseTogVGltZWQtb3V0IHdoaWxlIHdhaXRpbmcgZm9yIHJlcGx5IGZvciAle3B1Ymxp
Y31zOjole3B1YmxpY31zIGZyb20gcHJvY2VzcyAlZCwgaWQgPSAlIiBQUkl1NjQsIG1lc3NhZ2VS
ZWNlaXZlck5hbWUudG9TdHJpbmcoKS5kYXRhKCksIG1lc3NhZ2VOYW1lLnRvU3RyaW5nKCkuZGF0
YSgpLCByZW1vdGVQcm9jZXNzSUQoKSwgc3luY1JlcXVlc3RJRCk7CisgICAgUkVMRUFTRV9MT0df
RVJST1IoSVBDLCAiQ29ubmVjdGlvbjo6d2FpdEZvclN5bmNSZXBseTogVGltZWQtb3V0IHdoaWxl
IHdhaXRpbmcgZm9yIHJlcGx5IGZvciAle3B1YmxpY31zIGZyb20gcHJvY2VzcyAlZCwgaWQgPSAl
IiBQUkl1NjQsIGRlc2NyaXB0aW9uKG1lc3NhZ2VOYW1lKSwgcmVtb3RlUHJvY2Vzc0lEKCksIHN5
bmNSZXF1ZXN0SUQpOwogI2Vsc2UKLSAgICBSRUxFQVNFX0xPR19FUlJPUihJUEMsICJDb25uZWN0
aW9uOjp3YWl0Rm9yU3luY1JlcGx5OiBUaW1lZC1vdXQgd2hpbGUgd2FpdGluZyBmb3IgcmVwbHkg
Zm9yICVzOjolcywgaWQgPSAlIiBQUkl1NjQsIG1lc3NhZ2VSZWNlaXZlck5hbWUudG9TdHJpbmco
KS5kYXRhKCksIG1lc3NhZ2VOYW1lLnRvU3RyaW5nKCkuZGF0YSgpLCBzeW5jUmVxdWVzdElEKTsK
KyAgICBSRUxFQVNFX0xPR19FUlJPUihJUEMsICJDb25uZWN0aW9uOjp3YWl0Rm9yU3luY1JlcGx5
OiBUaW1lZC1vdXQgd2hpbGUgd2FpdGluZyBmb3IgcmVwbHkgZm9yICVzLCBpZCA9ICUiIFBSSXU2
NCwgZGVzY3JpcHRpb24obWVzc2FnZU5hbWUpLCBzeW5jUmVxdWVzdElEKTsKICNlbmRpZgogCiAg
ICAgZGlkUmVjZWl2ZVN5bmNSZXBseShzZW5kU3luY09wdGlvbnMpOwpAQCAtNzExLDIzICs3MDYs
MTYgQEAgdm9pZCBDb25uZWN0aW9uOjpwcm9jZXNzSW5jb21pbmdTeW5jUmVwbAogCiB2b2lkIENv
bm5lY3Rpb246OnByb2Nlc3NJbmNvbWluZ01lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+
IG1lc3NhZ2UpCiB7Ci0gICAgQVNTRVJUKCFtZXNzYWdlLT5tZXNzYWdlUmVjZWl2ZXJOYW1lKCku
aXNFbXB0eSgpKTsKLSAgICBBU1NFUlQoIW1lc3NhZ2UtPm1lc3NhZ2VOYW1lKCkuaXNFbXB0eSgp
KTsKKyAgICBBU1NFUlQobWVzc2FnZS0+bWVzc2FnZVJlY2VpdmVyTmFtZSgpICE9IFJlY2VpdmVy
TmFtZTo6SW52YWxpZCk7CiAKLSAgICBpZiAobWVzc2FnZS0+bWVzc2FnZVJlY2VpdmVyTmFtZSgp
ID09ICJJUEMiICYmIG1lc3NhZ2UtPm1lc3NhZ2VOYW1lKCkgPT0gIlN5bmNNZXNzYWdlUmVwbHki
KSB7CisgICAgaWYgKG1lc3NhZ2UtPm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZU5hbWU6OlN5bmNN
ZXNzYWdlUmVwbHkpIHsKICAgICAgICAgcHJvY2Vzc0luY29taW5nU3luY1JlcGx5KFdURk1vdmUo
bWVzc2FnZSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKCFXb3JrUXVldWVN
ZXNzYWdlUmVjZWl2ZXJNYXA6OmlzVmFsaWRLZXkobWVzc2FnZS0+bWVzc2FnZVJlY2VpdmVyTmFt
ZSgpKSB8fCAhVGhyZWFkTWVzc2FnZVJlY2VpdmVyTWFwOjppc1ZhbGlkS2V5KG1lc3NhZ2UtPm1l
c3NhZ2VSZWNlaXZlck5hbWUoKSkpIHsKLSAgICAgICAgUmVmUHRyPENvbm5lY3Rpb24+IHByb3Rl
Y3RlZFRoaXModGhpcyk7Ci0gICAgICAgIFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJO
YW1lUmVmZXJlbmNlID0gbWVzc2FnZS0+bWVzc2FnZVJlY2VpdmVyTmFtZSgpOwotICAgICAgICBT
dHJpbmcgbWVzc2FnZVJlY2VpdmVyTmFtZShtZXNzYWdlUmVjZWl2ZXJOYW1lUmVmZXJlbmNlLmlz
RW1wdHkoKSA/ICI8dW5rbm93biBtZXNzYWdlIHJlY2VpdmVyPiIgOiBTdHJpbmcobWVzc2FnZVJl
Y2VpdmVyTmFtZVJlZmVyZW5jZS5kYXRhKCksIG1lc3NhZ2VSZWNlaXZlck5hbWVSZWZlcmVuY2Uu
c2l6ZSgpKSk7Ci0gICAgICAgIFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZVJlZmVyZW5jZSA9
IG1lc3NhZ2UtPm1lc3NhZ2VOYW1lKCk7Ci0gICAgICAgIFN0cmluZyBtZXNzYWdlTmFtZShtZXNz
YWdlTmFtZVJlZmVyZW5jZS5pc0VtcHR5KCkgPyAiPHVua25vd24gbWVzc2FnZT4iIDogU3RyaW5n
KG1lc3NhZ2VOYW1lUmVmZXJlbmNlLmRhdGEoKSwgbWVzc2FnZU5hbWVSZWZlcmVuY2Uuc2l6ZSgp
KSk7Ci0KLSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyksIG1lc3NhZ2VSZWNlaXZlck5hbWUgPSBXVEZNb3ZlKG1lc3NhZ2VSZWNl
aXZlck5hbWUpLCBtZXNzYWdlTmFtZSA9IFdURk1vdmUobWVzc2FnZU5hbWUpXSgpIG11dGFibGUg
ewotICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+ZGlzcGF0Y2hEaWRSZWNlaXZlSW52YWxpZE1l
c3NhZ2UobWVzc2FnZVJlY2VpdmVyTmFtZS51dGY4KCksIG1lc3NhZ2VOYW1lLnV0ZjgoKSk7Cisg
ICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYo
KnRoaXMpLCBtZXNzYWdlTmFtZSA9IG1lc3NhZ2UtPm1lc3NhZ2VOYW1lKCldKCkgbXV0YWJsZSB7
CisgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5kaXNwYXRjaERpZFJlY2VpdmVJbnZhbGlkTWVz
c2FnZShtZXNzYWdlTmFtZSk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQpA
QCAtNzU5LDcgKzc0Nyw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6cHJvY2Vzc0luY29taW5nTWVzc2Fn
ZSgKICAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3dhaXRGb3JNZXNzYWdlTXV0ZXgp
OwogCiAgICAgICAgIGlmIChtX3dhaXRpbmdGb3JNZXNzYWdlICYmICFtX3dhaXRpbmdGb3JNZXNz
YWdlLT5kZWNvZGVyKSB7Ci0gICAgICAgICAgICBpZiAobV93YWl0aW5nRm9yTWVzc2FnZS0+bWVz
c2FnZVJlY2VpdmVyTmFtZSA9PSBtZXNzYWdlLT5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgJiYgbV93
YWl0aW5nRm9yTWVzc2FnZS0+bWVzc2FnZU5hbWUgPT0gbWVzc2FnZS0+bWVzc2FnZU5hbWUoKSAm
JiBtX3dhaXRpbmdGb3JNZXNzYWdlLT5kZXN0aW5hdGlvbklEID09IG1lc3NhZ2UtPmRlc3RpbmF0
aW9uSUQoKSkgeworICAgICAgICAgICAgaWYgKG1fd2FpdGluZ0Zvck1lc3NhZ2UtPm1lc3NhZ2VO
YW1lID09IG1lc3NhZ2UtPm1lc3NhZ2VOYW1lKCkgJiYgbV93YWl0aW5nRm9yTWVzc2FnZS0+ZGVz
dGluYXRpb25JRCA9PSBtZXNzYWdlLT5kZXN0aW5hdGlvbklEKCkpIHsKICAgICAgICAgICAgICAg
ICBtX3dhaXRpbmdGb3JNZXNzYWdlLT5kZWNvZGVyID0gV1RGTW92ZShtZXNzYWdlKTsKICAgICAg
ICAgICAgICAgICBBU1NFUlQobV93YWl0aW5nRm9yTWVzc2FnZS0+ZGVjb2Rlcik7CiAgICAgICAg
ICAgICAgICAgbV93YWl0Rm9yTWVzc2FnZUNvbmRpdGlvbi5ub3RpZnlPbmUoKTsKQEAgLTkxMiw5
ICs5MDAsOSBAQCB2b2lkIENvbm5lY3Rpb246OmRpc3BhdGNoU3luY01lc3NhZ2UoRGVjCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIHJlcGx5RW5jb2RlciA9IG1ha2VVbmlxdWU8
RW5jb2Rlcj4oIklQQyIsICJTeW5jTWVzc2FnZVJlcGx5Iiwgc3luY1JlcXVlc3RJRCk7CisgICAg
YXV0byByZXBseUVuY29kZXIgPSBtYWtlVW5pcXVlPEVuY29kZXI+KE1lc3NhZ2VOYW1lOjpTeW5j
TWVzc2FnZVJlcGx5LCBzeW5jUmVxdWVzdElEKTsKIAotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSA9PSAiSVBDIiAmJiBkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gIldyYXBw
ZWRBc3luY01lc3NhZ2VGb3JUZXN0aW5nIikgeworICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1l
KCkgPT0gTWVzc2FnZU5hbWU6OldyYXBwZWRBc3luY01lc3NhZ2VGb3JUZXN0aW5nKSB7CiAgICAg
ICAgIGlmICghbV9mdWxseVN5bmNocm9ub3VzTW9kZUlzQWxsb3dlZEZvclRlc3RpbmcpIHsKICAg
ICAgICAgICAgIGRlY29kZXIubWFya0ludmFsaWQoKTsKICAgICAgICAgICAgIHJldHVybjsKQEAg
LTkzNiwxNCArOTI0LDE0IEBAIHZvaWQgQ29ubmVjdGlvbjo6ZGlzcGF0Y2hTeW5jTWVzc2FnZShE
ZWMKICAgICAgICAgc2VuZFN5bmNSZXBseShXVEZNb3ZlKHJlcGx5RW5jb2RlcikpOwogfQogCi12
b2lkIENvbm5lY3Rpb246OmRpc3BhdGNoRGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKGNvbnN0IENT
dHJpbmcmIG1lc3NhZ2VSZWNlaXZlck5hbWVTdHJpbmcsIGNvbnN0IENTdHJpbmcmIG1lc3NhZ2VO
YW1lU3RyaW5nKQordm9pZCBDb25uZWN0aW9uOjpkaXNwYXRjaERpZFJlY2VpdmVJbnZhbGlkTWVz
c2FnZShNZXNzYWdlTmFtZSBtZXNzYWdlTmFtZSkKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNN
YWluKCkpOwogCiAgICAgaWYgKCFpc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1f
Y2xpZW50LmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZSgqdGhpcywgU3RyaW5nUmVmZXJlbmNlKG1l
c3NhZ2VSZWNlaXZlck5hbWVTdHJpbmcuZGF0YSgpLCBtZXNzYWdlUmVjZWl2ZXJOYW1lU3RyaW5n
Lmxlbmd0aCgpKSwgU3RyaW5nUmVmZXJlbmNlKG1lc3NhZ2VOYW1lU3RyaW5nLmRhdGEoKSwgbWVz
c2FnZU5hbWVTdHJpbmcubGVuZ3RoKCkpKTsKKyAgICBtX2NsaWVudC5kaWRSZWNlaXZlSW52YWxp
ZE1lc3NhZ2UoKnRoaXMsIG1lc3NhZ2VOYW1lKTsKIH0KIAogdm9pZCBDb25uZWN0aW9uOjpkaWRG
YWlsVG9TZW5kU3luY01lc3NhZ2UoKQpAQCAtOTg5LDcgKzk3Nyw3IEBAIHZvaWQgQ29ubmVjdGlv
bjo6ZW5xdWV1ZUluY29taW5nTWVzc2FnZSgKIHZvaWQgQ29ubmVjdGlvbjo6ZGlzcGF0Y2hNZXNz
YWdlKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoaXNWYWxpZCgpKTsK
LSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gIkFzeW5jUmVwbHkiKSB7
CisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IFJlY2VpdmVyTmFtZTo6
QXN5bmNSZXBseSkgewogICAgICAgICBPcHRpb25hbDx1aW50NjRfdD4gbGlzdGVuZXJJRDsKICAg
ICAgICAgZGVjb2RlciA+PiBsaXN0ZW5lcklEOwogICAgICAgICBpZiAoIWxpc3RlbmVySUQpIHsK
QEAgLTEwNTQsNyArMTA0Miw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6ZGlzcGF0Y2hNZXNzYWdlKHN0
ZDo6dW4KIAogICAgIGlmIChtZXNzYWdlLT5zaG91bGRVc2VGdWxseVN5bmNocm9ub3VzTW9kZUZv
clRlc3RpbmcoKSkgewogICAgICAgICBpZiAoIW1fZnVsbHlTeW5jaHJvbm91c01vZGVJc0FsbG93
ZWRGb3JUZXN0aW5nKSB7Ci0gICAgICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlSW52YWxpZE1l
c3NhZ2UoKnRoaXMsIG1lc3NhZ2UtPm1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbWVzc2FnZS0+bWVz
c2FnZU5hbWUoKSk7CisgICAgICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlSW52YWxpZE1lc3Nh
Z2UoKnRoaXMsIG1lc3NhZ2UtPm1lc3NhZ2VOYW1lKCkpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAgICAgICAgIG1faW5EaXNwYXRjaE1lc3NhZ2VNYXJrZWRUb1VzZUZ1bGx5U3lu
Y2hyb25vdXNNb2RlRm9yVGVzdGluZysrOwpAQCAtMTA4OCw3ICsxMDc2LDcgQEAgdm9pZCBDb25u
ZWN0aW9uOjpkaXNwYXRjaE1lc3NhZ2Uoc3RkOjp1bgogICAgICAgICBtX2luRGlzcGF0Y2hNZXNz
YWdlTWFya2VkVG9Vc2VGdWxseVN5bmNocm9ub3VzTW9kZUZvclRlc3RpbmctLTsKIAogICAgIGlm
IChtX2RpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZSAmJiBpc1ZhbGlkKCkpCi0gICAgICAgIG1fY2xp
ZW50LmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZSgqdGhpcywgbWVzc2FnZS0+bWVzc2FnZVJlY2Vp
dmVyTmFtZSgpLCBtZXNzYWdlLT5tZXNzYWdlTmFtZSgpKTsKKyAgICAgICAgbV9jbGllbnQuZGlk
UmVjZWl2ZUludmFsaWRNZXNzYWdlKCp0aGlzLCBtZXNzYWdlLT5tZXNzYWdlTmFtZSgpKTsKIAog
ICAgIG1fZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlID0gb2xkRGlkUmVjZWl2ZUludmFsaWRNZXNz
YWdlOwogfQpAQCAtMTE2OCw3ICsxMTU2LDcgQEAgdm9pZCBDb25uZWN0aW9uOjpkaXNwYXRjaElu
Y29taW5nTWVzc2FnZQogICAgICAgICBpZiAobWVzc2FnZXNUb1Byb2Nlc3MgPCBtX2luY29taW5n
TWVzc2FnZXMuc2l6ZSgpKSB7CiAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihJUEMsICIl
cCAtIENvbm5lY3Rpb246OmRpc3BhdGNoSW5jb21pbmdNZXNzYWdlczogSVBDIHRocm90dGxpbmcg
d2FzIHRyaWdnZXJlZCAoaGFzICV6dSBwZW5kaW5nIGluY29taW5nIG1lc3NhZ2VzLCB3aWxsIG9u
bHkgcHJvY2VzcyAlenUgYmVmb3JlIHlpZWxkaW5nKSIsIHRoaXMsIG1faW5jb21pbmdNZXNzYWdl
cy5zaXplKCksIG1lc3NhZ2VzVG9Qcm9jZXNzKTsKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICAg
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKElQQywgIiVwIC0gQ29ubmVjdGlvbjo6ZGlzcGF0Y2hJ
bmNvbWluZ01lc3NhZ2VzOiBmaXJzdCBJUEMgbWVzc2FnZSBpbiBxdWV1ZSBpcyAle3B1YmxpY31z
Ojole3B1YmxpY31zIiwgdGhpcywgbWVzc2FnZS0+bWVzc2FnZVJlY2VpdmVyTmFtZSgpLnRvU3Ry
aW5nKCkuZGF0YSgpLCBtZXNzYWdlLT5tZXNzYWdlTmFtZSgpLnRvU3RyaW5nKCkuZGF0YSgpKTsK
KyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKElQQywgIiVwIC0gQ29ubmVjdGlvbjo6ZGlz
cGF0Y2hJbmNvbWluZ01lc3NhZ2VzOiBmaXJzdCBJUEMgbWVzc2FnZSBpbiBxdWV1ZSBpcyAle3B1
YmxpY31zIiwgdGhpcywgZGVzY3JpcHRpb24obWVzc2FnZS0+bWVzc2FnZU5hbWUoKSkpOwogI2Vu
ZGlmCiAgICAgICAgIH0KIApJbmRleDogU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVj
dGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rp
b24uaAkocmV2aXNpb24gMjYxMDM4KQorKysgU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29u
bmVjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDcsNyArMTA3LDcgQEAgcHVibGljOgogICAg
IGNsYXNzIENsaWVudCA6IHB1YmxpYyBNZXNzYWdlUmVjZWl2ZXIgewogICAgIHB1YmxpYzoKICAg
ICAgICAgdmlydHVhbCB2b2lkIGRpZENsb3NlKENvbm5lY3Rpb24mKSA9IDA7Ci0gICAgICAgIHZp
cnR1YWwgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoQ29ubmVjdGlvbiYsIFN0cmluZ1Jl
ZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUp
ID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShDb25u
ZWN0aW9uJiwgTWVzc2FnZU5hbWUpID0gMDsKIAogICAgIHByb3RlY3RlZDoKICAgICAgICAgdmly
dHVhbCB+Q2xpZW50KCkgeyB9CkBAIC0xODksMTEgKzE4OSwxMSBAQCBwdWJsaWM6CiAgICAgdHlw
ZWRlZiB2b2lkICgqRGlkQ2xvc2VPbkNvbm5lY3Rpb25Xb3JrUXVldWVDYWxsYmFjaykoQ29ubmVj
dGlvbiopOwogICAgIHZvaWQgc2V0RGlkQ2xvc2VPbkNvbm5lY3Rpb25Xb3JrUXVldWVDYWxsYmFj
ayhEaWRDbG9zZU9uQ29ubmVjdGlvbldvcmtRdWV1ZUNhbGxiYWNrKTsKIAotICAgIHZvaWQgYWRk
V29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJO
YW1lLCBXb3JrUXVldWUmLCBXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIqKTsKLSAgICB2b2lkIHJl
bW92ZVdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcihTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2Vp
dmVyTmFtZSk7CisgICAgdm9pZCBhZGRXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIoUmVjZWl2ZXJO
YW1lLCBXb3JrUXVldWUmLCBXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIqKTsKKyAgICB2b2lkIHJl
bW92ZVdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcihSZWNlaXZlck5hbWUpOwogCi0gICAgdm9pZCBh
ZGRUaHJlYWRNZXNzYWdlUmVjZWl2ZXIoU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5h
bWUsIFRocmVhZE1lc3NhZ2VSZWNlaXZlciopOwotICAgIHZvaWQgcmVtb3ZlVGhyZWFkTWVzc2Fn
ZVJlY2VpdmVyKFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lKTsKKyAgICB2b2lk
IGFkZFRocmVhZE1lc3NhZ2VSZWNlaXZlcihSZWNlaXZlck5hbWUsIFRocmVhZE1lc3NhZ2VSZWNl
aXZlciopOworICAgIHZvaWQgcmVtb3ZlVGhyZWFkTWVzc2FnZVJlY2VpdmVyKFJlY2VpdmVyTmFt
ZSk7CiAKICAgICBib29sIG9wZW4oKTsKICAgICB2b2lkIGludmFsaWRhdGUoKTsKQEAgLTIzNSw3
ICsyMzUsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgYm9vbCBzZW5kTWVzc2FnZShzdGQ6OnVu
aXF1ZV9wdHI8RW5jb2Rlcj4sIE9wdGlvblNldDxTZW5kT3B0aW9uPiBzZW5kT3B0aW9ucyk7Ci0g
ICAgc3RkOjp1bmlxdWVfcHRyPEVuY29kZXI+IGNyZWF0ZVN5bmNNZXNzYWdlRW5jb2RlcihTdHJp
bmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VO
YW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCB1aW50NjRfdCYgc3luY1JlcXVlc3RJRCk7Cisg
ICAgc3RkOjp1bmlxdWVfcHRyPEVuY29kZXI+IGNyZWF0ZVN5bmNNZXNzYWdlRW5jb2RlcihNZXNz
YWdlTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgdWludDY0X3QmIHN5bmNSZXF1ZXN0SUQp
OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiBzZW5kU3luY01lc3NhZ2UodWludDY0X3Qg
c3luY1JlcXVlc3RJRCwgc3RkOjp1bmlxdWVfcHRyPEVuY29kZXI+LCBTZWNvbmRzIHRpbWVvdXQs
IE9wdGlvblNldDxTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zKTsKICAgICBib29sIHNl
bmRTeW5jUmVwbHkoc3RkOjp1bmlxdWVfcHRyPEVuY29kZXI+KTsKIApAQCAtMjc0LDkgKzI3NCw5
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemUoSWRlbnRpZmllcik7CiAg
ICAgdm9pZCBwbGF0Zm9ybUludmFsaWRhdGUoKTsKICAgICAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
RGVjb2Rlcj4gd2FpdEZvck1lc3NhZ2UoU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5h
bWUsIFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwg
U2Vjb25kcyB0aW1lb3V0LCBPcHRpb25TZXQ8V2FpdEZvck9wdGlvbj4pOworICAgIHN0ZDo6dW5p
cXVlX3B0cjxEZWNvZGVyPiB3YWl0Rm9yTWVzc2FnZShNZXNzYWdlTmFtZSwgdWludDY0X3QgZGVz
dGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0LCBPcHRpb25TZXQ8V2FpdEZvck9wdGlvbj4pOwog
ICAgIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiB3YWl0Rm9yU3luY1JlcGx5KHVpbnQ2
NF90IHN5bmNSZXF1ZXN0SUQsIFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBT
dHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUsIFNlY29uZHMgdGltZW91dCwgT3B0aW9uU2V0PFNl
bmRTeW5jT3B0aW9uPik7CisgICAgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IHdhaXRGb3JTeW5j
UmVwbHkodWludDY0X3Qgc3luY1JlcXVlc3RJRCwgTWVzc2FnZU5hbWUsIFNlY29uZHMgdGltZW91
dCwgT3B0aW9uU2V0PFNlbmRTeW5jT3B0aW9uPik7CiAKICAgICBib29sIGRpc3BhdGNoTWVzc2Fn
ZVRvV29ya1F1ZXVlUmVjZWl2ZXIoc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+Jik7CiAgICAgYm9v
bCBkaXNwYXRjaE1lc3NhZ2VUb1RocmVhZFJlY2VpdmVyKHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVy
PiYpOwpAQCAtMzAwLDcgKzMwMCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaXNwYXRjaE1lc3Nh
Z2Uoc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+KTsKICAgICB2b2lkIGRpc3BhdGNoTWVzc2FnZShE
ZWNvZGVyJik7CiAgICAgdm9pZCBkaXNwYXRjaFN5bmNNZXNzYWdlKERlY29kZXImKTsKLSAgICB2
b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKGNvbnN0IENTdHJpbmcmIG1lc3Nh
Z2VSZWNlaXZlck5hbWVTdHJpbmcsIGNvbnN0IENTdHJpbmcmIG1lc3NhZ2VOYW1lU3RyaW5nKTsK
KyAgICB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKE1lc3NhZ2VOYW1lKTsK
ICAgICB2b2lkIGRpZEZhaWxUb1NlbmRTeW5jTWVzc2FnZSgpOwogCiAgICAgLy8gQ2FuIGJlIGNh
bGxlZCBvbiBhbnkgdGhyZWFkLgpAQCAtMzQ2LDExICszNDYsMTEgQEAgcHJpdmF0ZToKICAgICBS
ZWY8V29ya1F1ZXVlPiBtX2Nvbm5lY3Rpb25RdWV1ZTsKIAogICAgIExvY2sgbV93b3JrUXVldWVN
ZXNzYWdlUmVjZWl2ZXJzTXV0ZXg7Ci0gICAgdXNpbmcgV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVy
TWFwID0gSGFzaE1hcDxTdHJpbmdSZWZlcmVuY2UsIHN0ZDo6cGFpcjxSZWZQdHI8V29ya1F1ZXVl
PiwgUmVmUHRyPFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcj4+PjsKKyAgICB1c2luZyBXb3JrUXVl
dWVNZXNzYWdlUmVjZWl2ZXJNYXAgPSBIYXNoTWFwPFJlY2VpdmVyTmFtZSwgc3RkOjpwYWlyPFJl
ZlB0cjxXb3JrUXVldWU+LCBSZWZQdHI8V29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyPj4sIFdURjo6
SW50SGFzaDxSZWNlaXZlck5hbWU+LCBXVEY6OlN0cm9uZ0VudW1IYXNoVHJhaXRzPFJlY2VpdmVy
TmFtZT4+OwogICAgIFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlck1hcCBtX3dvcmtRdWV1ZU1lc3Nh
Z2VSZWNlaXZlcnM7CiAKICAgICBMb2NrIG1fdGhyZWFkTWVzc2FnZVJlY2VpdmVyc0xvY2s7Ci0g
ICAgdXNpbmcgVGhyZWFkTWVzc2FnZVJlY2VpdmVyTWFwID0gSGFzaE1hcDxTdHJpbmdSZWZlcmVu
Y2UsIFJlZlB0cjxUaHJlYWRNZXNzYWdlUmVjZWl2ZXI+PjsKKyAgICB1c2luZyBUaHJlYWRNZXNz
YWdlUmVjZWl2ZXJNYXAgPSBIYXNoTWFwPFJlY2VpdmVyTmFtZSwgUmVmUHRyPFRocmVhZE1lc3Nh
Z2VSZWNlaXZlcj4sIFdURjo6SW50SGFzaDxSZWNlaXZlck5hbWU+LCBXVEY6OlN0cm9uZ0VudW1I
YXNoVHJhaXRzPFJlY2VpdmVyTmFtZT4+OwogICAgIFRocmVhZE1lc3NhZ2VSZWNlaXZlck1hcCBt
X3RocmVhZE1lc3NhZ2VSZWNlaXZlcnM7CiAKICAgICB1bnNpZ25lZCBtX2luU2VuZFN5bmNDb3Vu
dDsKQEAgLTQ2Miw3ICs0NjIsNyBAQCBib29sIENvbm5lY3Rpb246OnNlbmQoVCYmIG1lc3NhZ2Us
IHVpbnQ2CiB7CiAgICAgQ09NUElMRV9BU1NFUlQoIVQ6OmlzU3luYywgQXN5bmNNZXNzYWdlRXhw
ZWN0ZWQpOwogCi0gICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNvZGVyPihUOjpyZWNl
aXZlck5hbWUoKSwgVDo6bmFtZSgpLCBkZXN0aW5hdGlvbklEKTsKKyAgICBhdXRvIGVuY29kZXIg
PSBtYWtlVW5pcXVlPEVuY29kZXI+KFQ6Om5hbWUoKSwgZGVzdGluYXRpb25JRCk7CiAgICAgZW5j
b2Rlci0+ZW5jb2RlKG1lc3NhZ2UuYXJndW1lbnRzKCkpOwogICAgIAogICAgIHJldHVybiBzZW5k
TWVzc2FnZShXVEZNb3ZlKGVuY29kZXIpLCBzZW5kT3B0aW9ucyk7CkBAIC00NzcsNyArNDc3LDcg
QEAgdm9pZCBDb25uZWN0aW9uOjpzZW5kV2l0aEFzeW5jUmVwbHkoVCYmIAogewogICAgIENPTVBJ
TEVfQVNTRVJUKCFUOjppc1N5bmMsIEFzeW5jTWVzc2FnZUV4cGVjdGVkKTsKIAotICAgIGF1dG8g
ZW5jb2RlciA9IG1ha2VVbmlxdWU8RW5jb2Rlcj4oVDo6cmVjZWl2ZXJOYW1lKCksIFQ6Om5hbWUo
KSwgZGVzdGluYXRpb25JRCk7CisgICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNvZGVy
PihUOjpuYW1lKCksIGRlc3RpbmF0aW9uSUQpOwogICAgIHVpbnQ2NF90IGxpc3RlbmVySUQgPSBu
ZXh0QXN5bmNSZXBseUhhbmRsZXJJRCgpOwogICAgIGVuY29kZXItPmVuY29kZShsaXN0ZW5lcklE
KTsKICAgICBlbmNvZGVyLT5lbmNvZGUobWVzc2FnZS5hcmd1bWVudHMoKSk7CkBAIC01MTUsNyAr
NTE1LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9vbCBDb25uZWN0aW9uOjpzZQogICAgIFJF
TEVBU0VfQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAgIHVpbnQ2NF90IHN5bmNSZXF1
ZXN0SUQgPSAwOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVyPiBlbmNvZGVyID0gY3JlYXRl
U3luY01lc3NhZ2VFbmNvZGVyKFQ6OnJlY2VpdmVyTmFtZSgpLCBUOjpuYW1lKCksIGRlc3RpbmF0
aW9uSUQsIHN5bmNSZXF1ZXN0SUQpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVyPiBlbmNv
ZGVyID0gY3JlYXRlU3luY01lc3NhZ2VFbmNvZGVyKFQ6Om5hbWUoKSwgZGVzdGluYXRpb25JRCwg
c3luY1JlcXVlc3RJRCk7CiAKICAgICBpZiAoc2VuZFN5bmNPcHRpb25zLmNvbnRhaW5zKFNlbmRT
eW5jT3B0aW9uOjpVc2VGdWxseVN5bmNocm9ub3VzTW9kZUZvclRlc3RpbmcpKSB7CiAgICAgICAg
IGVuY29kZXItPnNldEZ1bGx5U3luY2hyb25vdXNNb2RlRm9yVGVzdGluZygpOwpAQCAtNTQyLDcg
KzU0Miw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgQ29ubmVjdGlvbjo6c2UKIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+IGJvb2wgQ29ubmVjdGlvbjo6d2FpdEZvckFuZERpc3BhdGNoSW1tZWRp
YXRlbHkodWludDY0X3QgZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0LCBPcHRpb25TZXQ8
V2FpdEZvck9wdGlvbj4gd2FpdEZvck9wdGlvbnMpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoUnVu
TG9vcDo6aXNNYWluKCkpOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiBkZWNvZGVyID0g
d2FpdEZvck1lc3NhZ2UoVDo6cmVjZWl2ZXJOYW1lKCksIFQ6Om5hbWUoKSwgZGVzdGluYXRpb25J
RCwgdGltZW91dCwgd2FpdEZvck9wdGlvbnMpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVy
PiBkZWNvZGVyID0gd2FpdEZvck1lc3NhZ2UoVDo6bmFtZSgpLCBkZXN0aW5hdGlvbklELCB0aW1l
b3V0LCB3YWl0Rm9yT3B0aW9ucyk7CiAgICAgaWYgKCFkZWNvZGVyKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwCShyZXZp
c2lvbiAyNjEwMzgpCisrKyBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNjYsOSArNjYsNiBAQCBEZWNvZGVyOjpEZWNvZGVyKGNvbnN0IHVp
bnQ4X3QqIGJ1ZmZlciwgCiAgICAgaWYgKCFkZWNvZGUobV9tZXNzYWdlRmxhZ3MpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBpZiAoIWRlY29kZShtX21lc3NhZ2VSZWNlaXZlck5hbWUpKQotICAg
ICAgICByZXR1cm47Ci0KICAgICBpZiAoIWRlY29kZShtX21lc3NhZ2VOYW1lKSkKICAgICAgICAg
cmV0dXJuOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5oCShyZXZpc2lv
biAyNjEwMzgpCisrKyBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXIuaCIK
ICNpbmNsdWRlICJBdHRhY2htZW50LmgiCisjaW5jbHVkZSAiTWVzc2FnZU5hbWVzLmgiCiAjaW5j
bHVkZSAiU3RyaW5nUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSA8d3RmL0VudW1UcmFpdHMuaD4KICNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC01MSw4ICs1Miw4IEBAIHB1YmxpYzoKICAgICBEZWNv
ZGVyKGNvbnN0IERlY29kZXImKSA9IGRlbGV0ZTsKICAgICBEZWNvZGVyKERlY29kZXImJikgPSBk
ZWxldGU7CiAKLSAgICBTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSgpIGNvbnN0
IHsgcmV0dXJuIG1fbWVzc2FnZVJlY2VpdmVyTmFtZTsgfQotICAgIFN0cmluZ1JlZmVyZW5jZSBt
ZXNzYWdlTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWVzc2FnZU5hbWU7IH0KKyAgICBSZWNlaXZl
ck5hbWUgbWVzc2FnZVJlY2VpdmVyTmFtZSgpIGNvbnN0IHsgcmV0dXJuIHJlY2VpdmVyTmFtZSht
X21lc3NhZ2VOYW1lKTsgfQorICAgIE1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lKCkgY29uc3QgeyBy
ZXR1cm4gbV9tZXNzYWdlTmFtZTsgfQogICAgIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQoKSBjb25z
dCB7IHJldHVybiBtX2Rlc3RpbmF0aW9uSUQ7IH0KIAogICAgIGJvb2wgaXNTeW5jTWVzc2FnZSgp
IGNvbnN0OwpAQCAtMTA2LDcgKzEwNyw3IEBAIHB1YmxpYzoKICAgICAgICAgdHlwZW5hbWUgc3Rk
Ojp1bmRlcmx5aW5nX3R5cGU8RT46OnR5cGUgdmFsdWU7CiAgICAgICAgIGlmICghZGVjb2RlKHZh
bHVlKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgaWYgKCFpc1ZhbGlkRW51
bTxFPih2YWx1ZSkpCisgICAgICAgIGlmICghV1RGOjppc1ZhbGlkRW51bTxFPih2YWx1ZSkpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgZSA9IHN0YXRpY19jYXN0PEU+KHZh
bHVlKTsKQEAgLTExOCw3ICsxMTksNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBPcHRpb25h
bDx0eXBlbmFtZSBzdGQ6OnVuZGVybHlpbmdfdHlwZTxFPjo6dHlwZT4gdmFsdWU7CiAgICAgICAg
ICp0aGlzID4+IHZhbHVlOwotICAgICAgICBpZiAodmFsdWUgJiYgaXNWYWxpZEVudW08RT4oKnZh
bHVlKSkKKyAgICAgICAgaWYgKHZhbHVlICYmIFdURjo6aXNWYWxpZEVudW08RT4oKnZhbHVlKSkK
ICAgICAgICAgICAgIG9wdGlvbmFsID0gc3RhdGljX2Nhc3Q8RT4oKnZhbHVlKTsKICAgICAgICAg
cmV0dXJuICp0aGlzOwogICAgIH0KQEAgLTE5OCw4ICsxOTksNyBAQCBwcml2YXRlOgogICAgIFZl
Y3RvcjxBdHRhY2htZW50PiBtX2F0dGFjaG1lbnRzOwogCiAgICAgdWludDhfdCBtX21lc3NhZ2VG
bGFnczsKLSAgICBTdHJpbmdSZWZlcmVuY2UgbV9tZXNzYWdlUmVjZWl2ZXJOYW1lOwotICAgIFN0
cmluZ1JlZmVyZW5jZSBtX21lc3NhZ2VOYW1lOworICAgIE1lc3NhZ2VOYW1lIG1fbWVzc2FnZU5h
bWU7CiAKICAgICB1aW50NjRfdCBtX2Rlc3RpbmF0aW9uSUQ7CiAKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL0VuY29kZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL0VuY29kZXIuY3BwCShyZXZpc2lvbiAyNjEwMzgpCisrKyBTb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9FbmNvZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjEsOSArNjEs
OCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZnJlZUJ1ZmZlcih2b2lkKiBhZGRyCiAjZW5kaWYKIH0K
IAotRW5jb2Rlcjo6RW5jb2RlcihTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwg
U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKQotICAg
IDogbV9tZXNzYWdlUmVjZWl2ZXJOYW1lKG1lc3NhZ2VSZWNlaXZlck5hbWUpCi0gICAgLCBtX21l
c3NhZ2VOYW1lKG1lc3NhZ2VOYW1lKQorRW5jb2Rlcjo6RW5jb2RlcihNZXNzYWdlTmFtZSBtZXNz
YWdlTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCkKKyAgICA6IG1fbWVzc2FnZU5hbWUobWVz
c2FnZU5hbWUpCiAgICAgLCBtX2Rlc3RpbmF0aW9uSUQoZGVzdGluYXRpb25JRCkKICAgICAsIG1f
YnVmZmVyKG1faW5saW5lQnVmZmVyKQogICAgICwgbV9idWZmZXJQb2ludGVyKG1faW5saW5lQnVm
ZmVyKQpAQCAtMTY4LDEwICsxNjcsNyBAQCB2b2lkIEVuY29kZXI6OnJlc2VydmUoc2l6ZV90IHNp
emUpCiAKIHZvaWQgRW5jb2Rlcjo6ZW5jb2RlSGVhZGVyKCkKIHsKLSAgICBBU1NFUlQoIW1fbWVz
c2FnZVJlY2VpdmVyTmFtZS5pc0VtcHR5KCkpOwotCiAgICAgKnRoaXMgPDwgZGVmYXVsdE1lc3Nh
Z2VGbGFnczsKLSAgICAqdGhpcyA8PCBtX21lc3NhZ2VSZWNlaXZlck5hbWU7CiAgICAgKnRoaXMg
PDwgbV9tZXNzYWdlTmFtZTsKICAgICAqdGhpcyA8PCBtX2Rlc3RpbmF0aW9uSUQ7CiB9CkluZGV4
OiBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9FbmNvZGVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRW5jb2Rlci5oCShyZXZpc2lvbiAyNjEwMzgpCisrKyBT
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9FbmNvZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3
LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXIuaCIKICNpbmNsdWRlICJBdHRh
Y2htZW50LmgiCisjaW5jbHVkZSAiTWVzc2FnZU5hbWVzLmgiCiAjaW5jbHVkZSAiU3RyaW5nUmVm
ZXJlbmNlLmgiCiAjaW5jbHVkZSA8d3RmL0VudW1UcmFpdHMuaD4KICNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CkBAIC0zNSwxNSArMzYsMTYgQEAgbmFtZXNwYWNlIElQQyB7CiAKIGNsYXNzIERhdGFS
ZWZlcmVuY2U7CiBlbnVtIGNsYXNzIFNob3VsZERpc3BhdGNoV2hlbldhaXRpbmdGb3JTeW5jUmVw
bHk7CitlbnVtIGNsYXNzIE1lc3NhZ2VOYW1lIDogdWludDE2X3Q7CiAKIGNsYXNzIEVuY29kZXIg
ZmluYWwgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIEVuY29k
ZXIoU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIFN0cmluZ1JlZmVyZW5jZSBt
ZXNzYWdlTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCk7CisgICAgRW5jb2RlcihNZXNzYWdl
TmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCk7CiAgICAgfkVuY29kZXIoKTsKIAotICAgIFN0
cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gbV9tZXNz
YWdlUmVjZWl2ZXJOYW1lOyB9Ci0gICAgU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lKCkgY29u
c3QgeyByZXR1cm4gbV9tZXNzYWdlTmFtZTsgfQorICAgIFJlY2VpdmVyTmFtZSBtZXNzYWdlUmVj
ZWl2ZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gcmVjZWl2ZXJOYW1lKG1fbWVzc2FnZU5hbWUpOyB9
CisgICAgTWVzc2FnZU5hbWUgbWVzc2FnZU5hbWUoKSBjb25zdCB7IHJldHVybiBtX21lc3NhZ2VO
YW1lOyB9CiAgICAgdWludDY0X3QgZGVzdGluYXRpb25JRCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVz
dGluYXRpb25JRDsgfQogCiAgICAgdm9pZCBzZXRJc1N5bmNNZXNzYWdlKGJvb2wpOwpAQCAtMTEy
LDE0ICsxMTQsMTMgQEAgcHJpdmF0ZToKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFPgogICAgIGF1
dG8gZW5jb2RlKEUgdmFsdWUpIC0+IHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19lbnVtPEU+Ojp2
YWx1ZT4KICAgICB7Ci0gICAgICAgIEFTU0VSVChpc1ZhbGlkRW51bTxFPihzdGF0aWNfY2FzdDx0
eXBlbmFtZSBzdGQ6OnVuZGVybHlpbmdfdHlwZTxFPjo6dHlwZT4odmFsdWUpKSk7CisgICAgICAg
IEFTU0VSVChXVEY6OmlzVmFsaWRFbnVtPEU+KHN0YXRpY19jYXN0PHR5cGVuYW1lIHN0ZDo6dW5k
ZXJseWluZ190eXBlPEU+Ojp0eXBlPih2YWx1ZSkpKTsKICAgICAgICAgZW5jb2RlKHN0YXRpY19j
YXN0PHR5cGVuYW1lIHN0ZDo6dW5kZXJseWluZ190eXBlPEU+Ojp0eXBlPih2YWx1ZSkpOwogICAg
IH0KIAogICAgIHZvaWQgZW5jb2RlSGVhZGVyKCk7CiAKLSAgICBTdHJpbmdSZWZlcmVuY2UgbV9t
ZXNzYWdlUmVjZWl2ZXJOYW1lOwotICAgIFN0cmluZ1JlZmVyZW5jZSBtX21lc3NhZ2VOYW1lOwor
ICAgIE1lc3NhZ2VOYW1lIG1fbWVzc2FnZU5hbWU7CiAgICAgdWludDY0X3QgbV9kZXN0aW5hdGlv
bklEOwogCiAgICAgdWludDhfdCBtX2lubGluZUJ1ZmZlcls1MTJdOwpJbmRleDogU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaAkocmV2aXNpb24gMjYxMDM4KQorKysg
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xNzYsNyArMTc2LDcgQEAgdm9pZCBoYW5kbGVNZXNzYWdlQXN5bmMoQ29ubmVjdGlvbiYg
Y29ubgogICAgIH0KIAogICAgIHR5cGVuYW1lIFQ6OkFzeW5jUmVwbHkgY29tcGxldGlvbkhhbmRs
ZXIgPSBbbGlzdGVuZXJJRCA9ICpsaXN0ZW5lcklELCBjb25uZWN0aW9uID0gbWFrZVJlZihjb25u
ZWN0aW9uKV0gKGF1dG8mJi4uLiBhcmdzKSBtdXRhYmxlIHsKLSAgICAgICAgYXV0byBlbmNvZGVy
ID0gbWFrZVVuaXF1ZTxFbmNvZGVyPigiQXN5bmNSZXBseSIsIFQ6OmFzeW5jTWVzc2FnZVJlcGx5
TmFtZSgpLCAwKTsKKyAgICAgICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNvZGVyPihU
Ojphc3luY01lc3NhZ2VSZXBseU5hbWUoKSwgMCk7CiAgICAgICAgICplbmNvZGVyIDw8IGxpc3Rl
bmVySUQ7CiAgICAgICAgIFQ6OnNlbmQoV1RGTW92ZShlbmNvZGVyKSwgV1RGTW92ZShjb25uZWN0
aW9uKSwgYXJncy4uLik7CiAgICAgfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L01lc3NhZ2VSZWNlaXZlck1hcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVyTWFwLmNwcAkocmV2aXNpb24gMjYxMDM4KQorKysgU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVyTWFwLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzksNyArMzksNyBAQCBNZXNzYWdlUmVjZWl2ZXJNYXA6On5NZXNzYWdlUmVjZWl2
ZXJNYXAoCiB7CiB9CiAKLXZvaWQgTWVzc2FnZVJlY2VpdmVyTWFwOjphZGRNZXNzYWdlUmVjZWl2
ZXIoU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIE1lc3NhZ2VSZWNlaXZlciYg
bWVzc2FnZVJlY2VpdmVyKQordm9pZCBNZXNzYWdlUmVjZWl2ZXJNYXA6OmFkZE1lc3NhZ2VSZWNl
aXZlcihSZWNlaXZlck5hbWUgbWVzc2FnZVJlY2VpdmVyTmFtZSwgTWVzc2FnZVJlY2VpdmVyJiBt
ZXNzYWdlUmVjZWl2ZXIpCiB7CiAgICAgQVNTRVJUKCFtX2dsb2JhbE1lc3NhZ2VSZWNlaXZlcnMu
Y29udGFpbnMobWVzc2FnZVJlY2VpdmVyTmFtZSkpOwogCkBAIC00Nyw3ICs0Nyw3IEBAIHZvaWQg
TWVzc2FnZVJlY2VpdmVyTWFwOjphZGRNZXNzYWdlUmVjZWkKICAgICBtX2dsb2JhbE1lc3NhZ2VS
ZWNlaXZlcnMuc2V0KG1lc3NhZ2VSZWNlaXZlck5hbWUsICZtZXNzYWdlUmVjZWl2ZXIpOwogfQog
Ci12b2lkIE1lc3NhZ2VSZWNlaXZlck1hcDo6YWRkTWVzc2FnZVJlY2VpdmVyKFN0cmluZ1JlZmVy
ZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBNZXNzYWdl
UmVjZWl2ZXImIG1lc3NhZ2VSZWNlaXZlcikKK3ZvaWQgTWVzc2FnZVJlY2VpdmVyTWFwOjphZGRN
ZXNzYWdlUmVjZWl2ZXIoUmVjZWl2ZXJOYW1lIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90
IGRlc3RpbmF0aW9uSUQsIE1lc3NhZ2VSZWNlaXZlciYgbWVzc2FnZVJlY2VpdmVyKQogewogICAg
IEFTU0VSVChkZXN0aW5hdGlvbklEKTsKICAgICBBU1NFUlQoIW1fbWVzc2FnZVJlY2VpdmVycy5j
b250YWlucyhzdGQ6Om1ha2VfcGFpcihtZXNzYWdlUmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklE
KSkpOwpAQCAtNTcsNyArNTcsNyBAQCB2b2lkIE1lc3NhZ2VSZWNlaXZlck1hcDo6YWRkTWVzc2Fn
ZVJlY2VpCiAgICAgbV9tZXNzYWdlUmVjZWl2ZXJzLnNldChzdGQ6Om1ha2VfcGFpcihtZXNzYWdl
UmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklEKSwgJm1lc3NhZ2VSZWNlaXZlcik7CiB9CiAKLXZv
aWQgTWVzc2FnZVJlY2VpdmVyTWFwOjpyZW1vdmVNZXNzYWdlUmVjZWl2ZXIoU3RyaW5nUmVmZXJl
bmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUpCit2b2lkIE1lc3NhZ2VSZWNlaXZlck1hcDo6cmVtb3Zl
TWVzc2FnZVJlY2VpdmVyKFJlY2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1lKQogewogICAg
IEFTU0VSVChtX2dsb2JhbE1lc3NhZ2VSZWNlaXZlcnMuY29udGFpbnMobWVzc2FnZVJlY2VpdmVy
TmFtZSkpOwogCkBAIC02Nyw3ICs2Nyw3IEBAIHZvaWQgTWVzc2FnZVJlY2VpdmVyTWFwOjpyZW1v
dmVNZXNzYWdlUmUKICAgICBtX2dsb2JhbE1lc3NhZ2VSZWNlaXZlcnMucmVtb3ZlKGl0KTsKIH0K
IAotdm9pZCBNZXNzYWdlUmVjZWl2ZXJNYXA6OnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihTdHJpbmdS
ZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCkKK3Zv
aWQgTWVzc2FnZVJlY2VpdmVyTWFwOjpyZW1vdmVNZXNzYWdlUmVjZWl2ZXIoUmVjZWl2ZXJOYW1l
IG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpCiB7CiAgICAgQVNT
RVJUKG1fbWVzc2FnZVJlY2VpdmVycy5jb250YWlucyhzdGQ6Om1ha2VfcGFpcihtZXNzYWdlUmVj
ZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklEKSkpOwogCkBAIC03OSw3ICs3OSw3IEBAIHZvaWQgTWVz
c2FnZVJlY2VpdmVyTWFwOjpyZW1vdmVNZXNzYWdlUmUKIAogdm9pZCBNZXNzYWdlUmVjZWl2ZXJN
YXA6OnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlUmVjZWl2ZXImIG1lc3NhZ2VSZWNlaXZl
cikKIHsKLSAgICBWZWN0b3I8U3RyaW5nUmVmZXJlbmNlPiBnbG9iYWxSZWNlaXZlcnNUb1JlbW92
ZTsKKyAgICBWZWN0b3I8UmVjZWl2ZXJOYW1lPiBnbG9iYWxSZWNlaXZlcnNUb1JlbW92ZTsKICAg
ICBmb3IgKGF1dG8mIFtuYW1lLCByZWNlaXZlcl0gOiBtX2dsb2JhbE1lc3NhZ2VSZWNlaXZlcnMp
IHsKICAgICAgICAgaWYgKHJlY2VpdmVyID09ICZtZXNzYWdlUmVjZWl2ZXIpCiAgICAgICAgICAg
ICBnbG9iYWxSZWNlaXZlcnNUb1JlbW92ZS5hcHBlbmQobmFtZSk7CkBAIC04OCw3ICs4OCw3IEBA
IHZvaWQgTWVzc2FnZVJlY2VpdmVyTWFwOjpyZW1vdmVNZXNzYWdlUmUKICAgICBmb3IgKGF1dG8m
IGdsb2JhbFJlY2VpdmVyVG9SZW1vdmUgOiBnbG9iYWxSZWNlaXZlcnNUb1JlbW92ZSkKICAgICAg
ICAgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKGdsb2JhbFJlY2VpdmVyVG9SZW1vdmUpOwogCi0gICAg
VmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmdSZWZlcmVuY2UsIHVpbnQ2NF90Pj4gcmVjZWl2ZXJzVG9S
ZW1vdmU7CisgICAgVmVjdG9yPHN0ZDo6cGFpcjxSZWNlaXZlck5hbWUsIHVpbnQ2NF90Pj4gcmVj
ZWl2ZXJzVG9SZW1vdmU7CiAgICAgZm9yIChhdXRvJiBbbmFtZUFuZERlc3RpbmF0aW9uSUQsIHJl
Y2VpdmVyXSA6IG1fbWVzc2FnZVJlY2VpdmVycykgewogICAgICAgICBpZiAocmVjZWl2ZXIgPT0g
Jm1lc3NhZ2VSZWNlaXZlcikKICAgICAgICAgICAgIHJlY2VpdmVyc1RvUmVtb3ZlLmFwcGVuZChz
dGQ6Om1ha2VfcGFpcihuYW1lQW5kRGVzdGluYXRpb25JRC5maXJzdCwgbmFtZUFuZERlc3RpbmF0
aW9uSUQuc2Vjb25kKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdl
UmVjZWl2ZXJNYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9N
ZXNzYWdlUmVjZWl2ZXJNYXAuaAkocmV2aXNpb24gMjYxMDM4KQorKysgU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVyTWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDgg
KzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZu
ZGVmIE1lc3NhZ2VSZWNlaXZlck1hcF9oCi0jZGVmaW5lIE1lc3NhZ2VSZWNlaXZlck1hcF9oCisj
cHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIlN0cmluZ1JlZmVyZW5jZS5oIgogI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+CkBAIC0zNiwxNyArMzUsMTggQEAgY2xhc3MgQ29ubmVjdGlvbjsKIGNsYXNz
IEVuY29kZXI7CiBjbGFzcyBEZWNvZGVyOwogY2xhc3MgTWVzc2FnZVJlY2VpdmVyOworZW51bSBj
bGFzcyBSZWNlaXZlck5hbWUgOiB1aW50OF90OwogCiBjbGFzcyBNZXNzYWdlUmVjZWl2ZXJNYXAg
ewogcHVibGljOgogICAgIE1lc3NhZ2VSZWNlaXZlck1hcCgpOwogICAgIH5NZXNzYWdlUmVjZWl2
ZXJNYXAoKTsKIAotICAgIHZvaWQgYWRkTWVzc2FnZVJlY2VpdmVyKFN0cmluZ1JlZmVyZW5jZSBt
ZXNzYWdlUmVjZWl2ZXJOYW1lLCBNZXNzYWdlUmVjZWl2ZXImKTsKLSAgICB2b2lkIGFkZE1lc3Nh
Z2VSZWNlaXZlcihTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgdWludDY0X3Qg
ZGVzdGluYXRpb25JRCwgTWVzc2FnZVJlY2VpdmVyJik7CisgICAgdm9pZCBhZGRNZXNzYWdlUmVj
ZWl2ZXIoUmVjZWl2ZXJOYW1lLCBNZXNzYWdlUmVjZWl2ZXImKTsKKyAgICB2b2lkIGFkZE1lc3Nh
Z2VSZWNlaXZlcihSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIE1lc3NhZ2VS
ZWNlaXZlciYpOwogCi0gICAgdm9pZCByZW1vdmVNZXNzYWdlUmVjZWl2ZXIoU3RyaW5nUmVmZXJl
bmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUpOwotICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVy
KFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlv
bklEKTsKKyAgICB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihSZWNlaXZlck5hbWUpOworICAg
IHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKFJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGlu
YXRpb25JRCk7CiAgICAgdm9pZCByZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZVJlY2VpdmVy
Jik7CiAKICAgICB2b2lkIGludmFsaWRhdGUoKTsKQEAgLTU2LDExICs1NiwxOCBAQCBwdWJsaWM6
CiAKIHByaXZhdGU6CiAgICAgLy8gTWVzc2FnZSByZWNlaXZlcnMgdGhhdCBkb24ndCByZXF1aXJl
IGEgZGVzdGluYXRpb24gSUQuCi0gICAgSGFzaE1hcDxTdHJpbmdSZWZlcmVuY2UsIE1lc3NhZ2VS
ZWNlaXZlcio+IG1fZ2xvYmFsTWVzc2FnZVJlY2VpdmVyczsKKyAgICBIYXNoTWFwPFJlY2VpdmVy
TmFtZSwgTWVzc2FnZVJlY2VpdmVyKiwgV1RGOjpJbnRIYXNoPFJlY2VpdmVyTmFtZT4sIFdURjo6
U3Ryb25nRW51bUhhc2hUcmFpdHM8UmVjZWl2ZXJOYW1lPj4gbV9nbG9iYWxNZXNzYWdlUmVjZWl2
ZXJzOwogCi0gICAgSGFzaE1hcDxzdGQ6OnBhaXI8U3RyaW5nUmVmZXJlbmNlLCB1aW50NjRfdD4s
IE1lc3NhZ2VSZWNlaXZlcio+IG1fbWVzc2FnZVJlY2VpdmVyczsKKyAgICBIYXNoTWFwPHN0ZDo6
cGFpcjxSZWNlaXZlck5hbWUsIHVpbnQ2NF90PiwgTWVzc2FnZVJlY2VpdmVyKiwgRGVmYXVsdEhh
c2g8c3RkOjpwYWlyPFJlY2VpdmVyTmFtZSwgdWludDY0X3Q+Pjo6SGFzaCwgUGFpckhhc2hUcmFp
dHM8V1RGOjpTdHJvbmdFbnVtSGFzaFRyYWl0czxSZWNlaXZlck5hbWU+LCBIYXNoVHJhaXRzPHVp
bnQ2NF90Pj4+IG1fbWVzc2FnZVJlY2VpdmVyczsKIH07CiAKIH07CiAKLSNlbmRpZiAvLyBNZXNz
YWdlUmVjZWl2ZXJNYXBfaAorbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+
IHN0cnVjdCBEZWZhdWx0SGFzaDsKK3RlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPElQQzo6
UmVjZWl2ZXJOYW1lPiB7CisgICAgdXNpbmcgSGFzaCA9IEludEhhc2g8SVBDOjpSZWNlaXZlck5h
bWU+OworfTsKKworfQpJbmRleDogU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVNl
bmRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VT
ZW5kZXIuaAkocmV2aXNpb24gMjYxMDM4KQorKysgU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
TWVzc2FnZVNlbmRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoK
ICAgICB7CiAgICAgICAgIHN0YXRpY19hc3NlcnQoIVU6OmlzU3luYywgIk1lc3NhZ2UgaXMgc3lu
YyEiKTsKIAotICAgICAgICBhdXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlPEVuY29kZXI+KFU6OnJl
Y2VpdmVyTmFtZSgpLCBVOjpuYW1lKCksIGRlc3RpbmF0aW9uSUQpOworICAgICAgICBhdXRvIGVu
Y29kZXIgPSBtYWtlVW5pcXVlPEVuY29kZXI+KFU6Om5hbWUoKSwgZGVzdGluYXRpb25JRCk7CiAg
ICAgICAgIGVuY29kZXItPmVuY29kZShtZXNzYWdlLmFyZ3VtZW50cygpKTsKICAgICAgICAgCiAg
ICAgICAgIHJldHVybiBzZW5kTWVzc2FnZShXVEZNb3ZlKGVuY29kZXIpLCBzZW5kT3B0aW9ucyk7
CkBAIC04OCw3ICs4OCw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIENPTVBJTEVfQVNTRVJU
KCFUOjppc1N5bmMsIEFzeW5jTWVzc2FnZUV4cGVjdGVkKTsKIAotICAgICAgICBhdXRvIGVuY29k
ZXIgPSBtYWtlVW5pcXVlPElQQzo6RW5jb2Rlcj4oVDo6cmVjZWl2ZXJOYW1lKCksIFQ6Om5hbWUo
KSwgZGVzdGluYXRpb25JRCk7CisgICAgICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWU8SVBD
OjpFbmNvZGVyPihUOjpuYW1lKCksIGRlc3RpbmF0aW9uSUQpOwogICAgICAgICB1aW50NjRfdCBs
aXN0ZW5lcklEID0gSVBDOjpuZXh0QXN5bmNSZXBseUhhbmRsZXJJRCgpOwogICAgICAgICBlbmNv
ZGVyLT5lbmNvZGUobGlzdGVuZXJJRCk7CiAgICAgICAgIGVuY29kZXItPmVuY29kZShtZXNzYWdl
LmFyZ3VtZW50cygpKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL0Nv
bm5lY3Rpb25Db2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9jb2NvYS9Db25uZWN0aW9uQ29jb2EubW0JKHJldmlzaW9uIDI2MTAzOCkKKysrIFNvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL0Nvbm5lY3Rpb25Db2NvYS5tbQkod29ya2luZyBjb3B5
KQpAQCAtMjE0LDcgKzIxNCw3IEBAIGJvb2wgQ29ubmVjdGlvbjo6b3BlbigpCiAgICAgICAgIG1f
aXNDb25uZWN0ZWQgPSB0cnVlOwogICAgICAgICAKICAgICAgICAgLy8gU2VuZCB0aGUgaW5pdGlh
bGl6ZSBtZXNzYWdlLCB3aGljaCBjb250YWlucyBhIHNlbmQgcmlnaHQgZm9yIHRoZSBzZXJ2ZXIg
dG8gdXNlLgotICAgICAgICBhdXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlPEVuY29kZXI+KCJJUEMi
LCAiSW5pdGlhbGl6ZUNvbm5lY3Rpb24iLCAwKTsKKyAgICAgICAgYXV0byBlbmNvZGVyID0gbWFr
ZVVuaXF1ZTxFbmNvZGVyPihNZXNzYWdlTmFtZTo6SW5pdGlhbGl6ZUNvbm5lY3Rpb24sIDApOwog
ICAgICAgICBlbmNvZGVyLT5lbmNvZGUoTWFjaFBvcnQobV9yZWNlaXZlUG9ydCwgTUFDSF9NU0df
VFlQRV9NQUtFX1NFTkQpKTsKIAogICAgICAgICBpbml0aWFsaXplU2VuZFNvdXJjZSgpOwpAQCAt
MjczLDcgKzI3Myw3IEBAIGJvb2wgQ29ubmVjdGlvbjo6c2VuZE1lc3NhZ2Uoc3RkOjp1bmlxdWUK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgZGVmYXVsdDoKLSAgICAgICAgQ1N0cmluZyBt
ZXNzYWdlTmFtZSA9IG1ha2VTdHJpbmcobWVzc2FnZS0+bWVzc2FnZVJlY2VpdmVyTmFtZSgpLmRh
dGEoKSwgIjo6IiwgbWVzc2FnZS0+bWVzc2FnZU5hbWUoKS5kYXRhKCkpLnV0ZjgoKTsKKyAgICAg
ICAgQ1N0cmluZyBtZXNzYWdlTmFtZShkZXNjcmlwdGlvbihtZXNzYWdlLT5tZXNzYWdlTmFtZSgp
KSk7CiAgICAgICAgIFdlYktpdDo6c2V0Q3Jhc2hSZXBvcnRBcHBsaWNhdGlvblNwZWNpZmljSW5m
b3JtYXRpb24oKF9fYnJpZGdlIENGU3RyaW5nUmVmKVtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0
OkAiVW5oYW5kbGVkIGVycm9yIGNvZGUgJXgsIG1lc3NhZ2UgJyVzJywgaGFzaCAlZCIsIGtyLCBt
ZXNzYWdlTmFtZS5kYXRhKCksIG1lc3NhZ2VOYW1lLmhhc2goKV0pOwogICAgICAgICBDUkFTSF9X
SVRIX0lORk8oa3IsIG1lc3NhZ2VOYW1lLmhhc2goKSk7CiAgICAgfQpAQCAtMzA4LDcgKzMwOCw3
IEBAIGJvb2wgQ29ubmVjdGlvbjo6c2VuZE91dGdvaW5nTWVzc2FnZShzdGQKICAgICB9CiAKICAg
ICBzaXplX3Qgc2FmZU1lc3NhZ2VTaXplID0gbWVzc2FnZVNpemUudW5zYWZlR2V0KCk7Ci0gICAg
YXV0byBtZXNzYWdlID0gTWFjaE1lc3NhZ2U6OmNyZWF0ZShlbmNvZGVyLT5tZXNzYWdlUmVjZWl2
ZXJOYW1lKCkudG9TdHJpbmcoKSwgZW5jb2Rlci0+bWVzc2FnZU5hbWUoKS50b1N0cmluZygpLCBz
YWZlTWVzc2FnZVNpemUpOworICAgIGF1dG8gbWVzc2FnZSA9IE1hY2hNZXNzYWdlOjpjcmVhdGUo
ZW5jb2Rlci0+bWVzc2FnZU5hbWUoKSwgc2FmZU1lc3NhZ2VTaXplKTsKICAgICBpZiAoIW1lc3Nh
Z2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtNTM0LDcgKzUzNCw3IEBAIHZvaWQgQ29u
bmVjdGlvbjo6cmVjZWl2ZVNvdXJjZUV2ZW50SGFuZGwKICAgICBkZWNvZGVyLT5zZXRJbXBvcnRh
bmNlQXNzZXJ0aW9uKG1ha2VVbmlxdWU8SW1wb3J0YW5jZUFzc2VydGlvbj4oaGVhZGVyKSk7CiAj
ZW5kaWYKIAotICAgIGlmIChkZWNvZGVyLT5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gIklQQyIg
JiYgZGVjb2Rlci0+bWVzc2FnZU5hbWUoKSA9PSAiSW5pdGlhbGl6ZUNvbm5lY3Rpb24iKSB7Cisg
ICAgaWYgKGRlY29kZXItPm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZU5hbWU6OkluaXRpYWxpemVD
b25uZWN0aW9uKSB7CiAgICAgICAgIEFTU0VSVChtX2lzU2VydmVyKTsKICAgICAgICAgQVNTRVJU
KCFtX2lzQ29ubmVjdGVkKTsKICAgICAgICAgQVNTRVJUKCFtX3NlbmRQb3J0KTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL01hY2hNZXNzYWdlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9NYWNoTWVzc2FnZS5jcHAJKHJl
dmlzaW9uIDI2MTAzOCkKKysrIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL01hY2hN
ZXNzYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksMTggKzM5LDE3IEBAIHN0YXRpYyBpbmxp
bmUgQ2hlY2tlZFNpemUgc2FmZVJvdW5kTXNnKEMKICAgICByZXR1cm4gKCh2YWx1ZSArIChhbGln
bm1lbnQgLSAxKSkgLyBhbGlnbm1lbnQpICogYWxpZ25tZW50OwogfQogCi1zdGQ6OnVuaXF1ZV9w
dHI8TWFjaE1lc3NhZ2U+IE1hY2hNZXNzYWdlOjpjcmVhdGUoQ1N0cmluZyYmIG1lc3NhZ2VSZWNl
aXZlck5hbWUsIENTdHJpbmcmJiBtZXNzYWdlTmFtZSwgc2l6ZV90IHNpemUpCitzdGQ6OnVuaXF1
ZV9wdHI8TWFjaE1lc3NhZ2U+IE1hY2hNZXNzYWdlOjpjcmVhdGUoTWVzc2FnZU5hbWUgbWVzc2Fn
ZU5hbWUsIHNpemVfdCBzaXplKQogewogICAgIGF1dG8gYnVmZmVyU2l6ZSA9IENoZWNrZWRTaXpl
KHNpemVvZihNYWNoTWVzc2FnZSkpICsgc2l6ZTsKICAgICBpZiAoYnVmZmVyU2l6ZS5oYXNPdmVy
Zmxvd2VkKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIHZvaWQqIG1lbW9yeSA9IFdU
Rjo6ZmFzdFplcm9lZE1hbGxvYyhidWZmZXJTaXplLnVuc2FmZUdldCgpKTsKLSAgICByZXR1cm4g
c3RkOjp1bmlxdWVfcHRyPE1hY2hNZXNzYWdlPiB7IG5ldyAoTm90TnVsbCwgbWVtb3J5KSBNYWNo
TWVzc2FnZSB7IFdURk1vdmUobWVzc2FnZVJlY2VpdmVyTmFtZSksIFdURk1vdmUobWVzc2FnZU5h
bWUpLCBzaXplIH0gfTsKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPE1hY2hNZXNzYWdlPiB7
IG5ldyAoTm90TnVsbCwgbWVtb3J5KSBNYWNoTWVzc2FnZSB7IG1lc3NhZ2VOYW1lLCBzaXplIH0g
fTsKIH0KIAotTWFjaE1lc3NhZ2U6Ok1hY2hNZXNzYWdlKENTdHJpbmcmJiBtZXNzYWdlUmVjZWl2
ZXJOYW1lLCBDU3RyaW5nJiYgbWVzc2FnZU5hbWUsIHNpemVfdCBzaXplKQotICAgIDogbV9tZXNz
YWdlUmVjZWl2ZXJOYW1lKFdURk1vdmUobWVzc2FnZVJlY2VpdmVyTmFtZSkpCi0gICAgLCBtX21l
c3NhZ2VOYW1lKFdURk1vdmUobWVzc2FnZU5hbWUpKQorTWFjaE1lc3NhZ2U6Ok1hY2hNZXNzYWdl
KE1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lLCBzaXplX3Qgc2l6ZSkKKyAgICA6IG1fbWVzc2FnZU5h
bWUgeyBtZXNzYWdlTmFtZSB9CiAgICAgLCBtX3NpemUgeyBzaXplIH0KIHsKIH0KSW5kZXg6IFNv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL01hY2hNZXNzYWdlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvTWFjaE1lc3NhZ2UuaAkocmV2aXNp
b24gMjYxMDM4KQorKysgU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvTWFjaE1lc3Nh
Z2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogCiAjaWYgUExBVEZPUk0oQ09D
T0EpCiAKKyNpbmNsdWRlICJNZXNzYWdlTmFtZXMuaCIKICNpbmNsdWRlIDxtYWNoL21lc3NhZ2Uu
aD4KICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+
CkBAIC0zNyw3ICszOCw3IEBAIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgTWFjaE1lc3NhZ2Ugewog
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8TWFjaE1lc3NhZ2U+IGNyZWF0ZShDU3RyaW5nJiYgbWVzc2FnZVJlY2VpdmVyTmFt
ZSwgQ1N0cmluZyYmIG1lc3NhZ2VOYW1lLCBzaXplX3QpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1
ZV9wdHI8TWFjaE1lc3NhZ2U+IGNyZWF0ZShNZXNzYWdlTmFtZSwgc2l6ZV90KTsKICAgICB+TWFj
aE1lc3NhZ2UoKTsKIAogICAgIHN0YXRpYyBDaGVja2VkU2l6ZSBtZXNzYWdlU2l6ZShzaXplX3Qg
Ym9keVNpemUsIHNpemVfdCBwb3J0RGVzY3JpcHRvckNvdW50LCBzaXplX3QgbWVtb3J5RGVzY3Jp
cHRvckNvdW50KTsKQEAgLTQ3LDE0ICs0OCwxMyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGxlYWtE
ZXNjcmlwdG9ycygpOwogCi0gICAgY29uc3QgQ1N0cmluZyYgbWVzc2FnZVJlY2VpdmVyTmFtZSgp
IGNvbnN0IHsgcmV0dXJuIG1fbWVzc2FnZVJlY2VpdmVyTmFtZTsgfQotICAgIGNvbnN0IENTdHJp
bmcmIG1lc3NhZ2VOYW1lKCkgY29uc3QgeyByZXR1cm4gbV9tZXNzYWdlTmFtZTsgfQorICAgIFJl
Y2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gcmVjZWl2ZXJO
YW1lKG1fbWVzc2FnZU5hbWUpOyB9CisgICAgTWVzc2FnZU5hbWUgbWVzc2FnZU5hbWUoKSBjb25z
dCB7IHJldHVybiBtX21lc3NhZ2VOYW1lOyB9CiAKIHByaXZhdGU6Ci0gICAgTWFjaE1lc3NhZ2Uo
Q1N0cmluZyYmIG1lc3NhZ2VSZWNlaXZlck5hbWUsIENTdHJpbmcmJiBtZXNzYWdlTmFtZSwgc2l6
ZV90KTsKKyAgICBNYWNoTWVzc2FnZShNZXNzYWdlTmFtZSwgc2l6ZV90KTsKIAotICAgIENTdHJp
bmcgbV9tZXNzYWdlUmVjZWl2ZXJOYW1lOwotICAgIENTdHJpbmcgbV9tZXNzYWdlTmFtZTsKKyAg
ICBNZXNzYWdlTmFtZSBtX21lc3NhZ2VOYW1lOwogICAgIHNpemVfdCBtX3NpemU7CiAgICAgYm9v
bCBtX3Nob3VsZEZyZWVEZXNjcmlwdG9ycyB7IHRydWUgfTsKICAgICBtYWNoX21zZ19oZWFkZXJf
dCBtX21lc3NhZ2VIZWFkZXJbXTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9X
ZWJQcm9jZXNzQ29ubmVjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9QbHVn
aW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmNwcAkocmV2aXNpb24gMjYxMDM4KQorKysg
U291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjA1LDcgKzIwNSw3IEBAIHZvaWQgV2ViUHJvY2Vzc0Nvbm5lY3Rpb246
OmRlc3Ryb3lQbHVnaW4KICAgICBkZXN0cm95UGx1Z2luQ29udHJvbGxlclByb3h5KHBsdWdpbkNv
bnRyb2xsZXJQcm94eSk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2Vp
dmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSwg
SVBDOjpTdHJpbmdSZWZlcmVuY2UpCit2b2lkIFdlYlByb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNl
aXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlTmFtZSkKIHsK
ICAgICAvLyBGSVhNRTogSW1wbGVtZW50LgogfQpJbmRleDogU291cmNlL1dlYktpdC9QbHVnaW5Q
cm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmgJKHJldmlzaW9uIDI2MTAzOCkK
KysrIFNvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5oCSh3
b3JraW5nIGNvcHkpCkBAIC02NCw3ICs2NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNl
aXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKICAg
ICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29k
ZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIG92ZXJyaWRlOwogICAgIHZvaWQg
ZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZl
SW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVz
c2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUpIG92ZXJy
aWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYs
IElQQzo6TWVzc2FnZU5hbWUpIG92ZXJyaWRlOwogCiAgICAgLy8gTWVzc2FnZSBoYW5kbGVycy4K
ICAgICB2b2lkIGRpZFJlY2VpdmVXZWJQcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvTWFr
ZWZpbGUKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TY3JpcHRzL01ha2VmaWxlCShyZXZp
c2lvbiAyNjEwMzgpCisrKyBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvTWFrZWZpbGUJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSwyIEBACiBhbGw6Ci0JcHl0aG9uIC4vZ2VuZXJhdGUtbWVzc2FnZS1y
ZWNlaXZlci5weSB3ZWJraXQvdGVzdC1zdXBlcmNsYXNzLW1lc3NhZ2VzLmluIC0taW1wbGVtZW50
YXRpb24gd2Via2l0L01lc3NhZ2VSZWNlaXZlclN1cGVyY2xhc3MtZXhwZWN0ZWQuY3BwIC0taGVh
ZGVyIHdlYmtpdC9NZXNzYWdlc1N1cGVyY2xhc3MtZXhwZWN0ZWQuaCAtLXJlcGx5LWhlYWRlciB3
ZWJraXQvTWVzc2FnZXNSZXBsaWVzU3VwZXJjbGFzc1JlcGxpZXMtZXhwZWN0ZWQuaAotCXB5dGhv
biAuL2dlbmVyYXRlLW1lc3NhZ2UtcmVjZWl2ZXIucHkgd2Via2l0L3Rlc3QtbGVnYWN5LW1lc3Nh
Z2VzLmluIC0taW1wbGVtZW50YXRpb24gd2Via2l0L0xlZ2FjeU1lc3NhZ2VSZWNlaXZlci1leHBl
Y3RlZC5jcHAgLS1oZWFkZXIgd2Via2l0L0xlZ2FjeU1lc3NhZ2VzLWV4cGVjdGVkLmggLS1yZXBs
eS1oZWFkZXIgd2Via2l0L0xlZ2FjeU1lc3NhZ2VzUmVwbGllcy1leHBlY3RlZC5oCi0JcHl0aG9u
IC4vZ2VuZXJhdGUtbWVzc2FnZS1yZWNlaXZlci5weSB3ZWJraXQvdGVzdC1tZXNzYWdlcy5pbiAt
LWltcGxlbWVudGF0aW9uIHdlYmtpdC9NZXNzYWdlUmVjZWl2ZXItZXhwZWN0ZWQuY3BwIC0taGVh
ZGVyIHdlYmtpdC9NZXNzYWdlcy1leHBlY3RlZC5oIC0tcmVwbHktaGVhZGVyIHdlYmtpdC9NZXNz
YWdlc1JlcGxpZXMtZXhwZWN0ZWQuaAotCisJcHl0aG9uIGdlbmVyYXRlLW1lc3NhZ2UtcmVjZWl2
ZXIucHkgd2Via2l0IHRlc3Qtc3VwZXJjbGFzcyB0ZXN0LWxlZ2FjeSB0ZXN0CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1NjcmlwdHMvTWVzc2FnZU5hbWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvTWVzc2FnZU5hbWVzLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvTWVzc2FnZU5hbWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDMwMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisg
KiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IKKyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJNZXNzYWdlTmFtZXMuaCIKKworbmFtZXNwYWNlIElQQyB7CisKK2NvbnN0IGNoYXIqIGRlc2Ny
aXB0aW9uKE1lc3NhZ2VOYW1lIG5hbWUpCit7CisgICAgc3dpdGNoIChuYW1lKSB7CisgICAgY2Fz
ZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9Mb2FkVVJMOgorICAgICAgICByZXR1cm4gIldlYlBhZ2U6
OkxvYWRVUkwiOworI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCisgICAgY2FzZSBNZXNzYWdlTmFt
ZTo6V2ViUGFnZV9UZXN0QXN5bmNNZXNzYWdlOgorICAgICAgICByZXR1cm4gIldlYlBhZ2U6OlRl
c3RBc3luY01lc3NhZ2UiOworICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVzdEFzeW5j
TWVzc2FnZVJlcGx5OgorICAgICAgICByZXR1cm4gIldlYlBhZ2U6OlRlc3RBc3luY01lc3NhZ2VS
ZXBseSI7CisjZW5kaWYKKyNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQorICAgIGNhc2UgTWVzc2Fn
ZU5hbWU6OldlYlBhZ2VfVGVzdEFzeW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50czoKKyAgICAgICAg
cmV0dXJuICJXZWJQYWdlOjpUZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJndW1lbnRzIjsKKyAgICBj
YXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX1Rlc3RBc3luY01lc3NhZ2VXaXRoTm9Bcmd1bWVudHNS
ZXBseToKKyAgICAgICAgcmV0dXJuICJXZWJQYWdlOjpUZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJn
dW1lbnRzUmVwbHkiOworI2VuZGlmCisjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKKyAgICBjYXNl
IE1lc3NhZ2VOYW1lOjpXZWJQYWdlX1Rlc3RBc3luY01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVu
dHM6CisgICAgICAgIHJldHVybiAiV2ViUGFnZTo6VGVzdEFzeW5jTWVzc2FnZVdpdGhNdWx0aXBs
ZUFyZ3VtZW50cyI7CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9UZXN0QXN5bmNNZXNz
YWdlV2l0aE11bHRpcGxlQXJndW1lbnRzUmVwbHk6CisgICAgICAgIHJldHVybiAiV2ViUGFnZTo6
VGVzdEFzeW5jTWVzc2FnZVdpdGhNdWx0aXBsZUFyZ3VtZW50c1JlcGx5IjsKKyNlbmRpZgorICAg
IGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVzdFN5bmNNZXNzYWdlOgorICAgICAgICByZXR1
cm4gIldlYlBhZ2U6OlRlc3RTeW5jTWVzc2FnZSI7CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2Vi
UGFnZV9UZXN0U3luY2hyb25vdXNNZXNzYWdlOgorICAgICAgICByZXR1cm4gIldlYlBhZ2U6OlRl
c3RTeW5jaHJvbm91c01lc3NhZ2UiOworICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfTG9h
ZFVSTDoKKyAgICAgICAgcmV0dXJuICJXZWJQYWdlOjpMb2FkVVJMIjsKKyNpZiBFTkFCTEUoVE9V
Q0hfRVZFTlRTKQorICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfTG9hZFNvbWV0aGluZzoK
KyAgICAgICAgcmV0dXJuICJXZWJQYWdlOjpMb2FkU29tZXRoaW5nIjsKKyNlbmRpZgorI2lmIChF
TkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiAoTkVTVEVEX01FU1NBR0VfQ09ORElUSU9OIHx8IFNPTUVf
T1RIRVJfTUVTU0FHRV9DT05ESVRJT04pKQorICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2Vf
VG91Y2hFdmVudDoKKyAgICAgICAgcmV0dXJuICJXZWJQYWdlOjpUb3VjaEV2ZW50IjsKKyNlbmRp
ZgorI2lmIChFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiAoTkVTVEVEX01FU1NBR0VfQ09ORElUSU9O
ICYmIFNPTUVfT1RIRVJfTUVTU0FHRV9DT05ESVRJT04pKQorICAgIGNhc2UgTWVzc2FnZU5hbWU6
OldlYlBhZ2VfQWRkRXZlbnQ6CisgICAgICAgIHJldHVybiAiV2ViUGFnZTo6QWRkRXZlbnQiOwor
I2VuZGlmCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpX
ZWJQYWdlX0xvYWRTb21ldGhpbmdFbHNlOgorICAgICAgICByZXR1cm4gIldlYlBhZ2U6OkxvYWRT
b21ldGhpbmdFbHNlIjsKKyNlbmRpZgorICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfRGlk
UmVjZWl2ZVBvbGljeURlY2lzaW9uOgorICAgICAgICByZXR1cm4gIldlYlBhZ2U6OkRpZFJlY2Vp
dmVQb2xpY3lEZWNpc2lvbiI7CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9DbG9zZToK
KyAgICAgICAgcmV0dXJuICJXZWJQYWdlOjpDbG9zZSI7CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6
V2ViUGFnZV9QcmVmZXJlbmNlc0RpZENoYW5nZToKKyAgICAgICAgcmV0dXJuICJXZWJQYWdlOjpQ
cmVmZXJlbmNlc0RpZENoYW5nZSI7CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9TZW5k
RG91YmxlQW5kRmxvYXQ6CisgICAgICAgIHJldHVybiAiV2ViUGFnZTo6U2VuZERvdWJsZUFuZEZs
b2F0IjsKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX1NlbmRJbnRzOgorICAgICAgICBy
ZXR1cm4gIldlYlBhZ2U6OlNlbmRJbnRzIjsKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdl
X0NyZWF0ZVBsdWdpbjoKKyAgICAgICAgcmV0dXJuICJXZWJQYWdlOjpDcmVhdGVQbHVnaW4iOwor
ICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfUnVuSmF2YVNjcmlwdEFsZXJ0OgorICAgICAg
ICByZXR1cm4gIldlYlBhZ2U6OlJ1bkphdmFTY3JpcHRBbGVydCI7CisgICAgY2FzZSBNZXNzYWdl
TmFtZTo6V2ViUGFnZV9HZXRQbHVnaW5zOgorICAgICAgICByZXR1cm4gIldlYlBhZ2U6OkdldFBs
dWdpbnMiOworICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfR2V0UGx1Z2luUHJvY2Vzc0Nv
bm5lY3Rpb246CisgICAgICAgIHJldHVybiAiV2ViUGFnZTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5l
Y3Rpb24iOworICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVzdE11bHRpcGxlQXR0cmli
dXRlczoKKyAgICAgICAgcmV0dXJuICJXZWJQYWdlOjpUZXN0TXVsdGlwbGVBdHRyaWJ1dGVzIjsK
KyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX1Rlc3RQYXJhbWV0ZXJBdHRyaWJ1dGVzOgor
ICAgICAgICByZXR1cm4gIldlYlBhZ2U6OlRlc3RQYXJhbWV0ZXJBdHRyaWJ1dGVzIjsKKyAgICBj
YXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX1RlbXBsYXRlVGVzdDoKKyAgICAgICAgcmV0dXJuICJX
ZWJQYWdlOjpUZW1wbGF0ZVRlc3QiOworICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfU2V0
VmlkZW9MYXllcklEOgorICAgICAgICByZXR1cm4gIldlYlBhZ2U6OlNldFZpZGVvTGF5ZXJJRCI7
CisjaWYgUExBVEZPUk0oTUFDKQorICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfRGlkQ3Jl
YXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb246CisgICAgICAgIHJldHVybiAiV2ViUGFnZTo6RGlkQ3Jl
YXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24iOworI2VuZGlmCisjaWYgUExBVEZPUk0oTUFDKQorICAg
IGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfSW50ZXJwcmV0S2V5RXZlbnQ6CisgICAgICAgIHJl
dHVybiAiV2ViUGFnZTo6SW50ZXJwcmV0S2V5RXZlbnQiOworI2VuZGlmCisjaWYgRU5BQkxFKERF
UFJFQ0FURURfRkVBVFVSRSkKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX0RlcHJlY2F0
ZWRPcGVyYXRpb246CisgICAgICAgIHJldHVybiAiV2ViUGFnZTo6RGVwcmVjYXRlZE9wZXJhdGlv
biI7CisjZW5kaWYKKyNpZiBFTkFCTEUoRVhQRVJJTUVOVEFMX0ZFQVRVUkUpCisgICAgY2FzZSBN
ZXNzYWdlTmFtZTo6V2ViUGFnZV9FeHBlcmltZW50YWxPcGVyYXRpb246CisgICAgICAgIHJldHVy
biAiV2ViUGFnZTo6RXhwZXJpbWVudGFsT3BlcmF0aW9uIjsKKyNlbmRpZgorICAgIGNhc2UgTWVz
c2FnZU5hbWU6OldyYXBwZWRBc3luY01lc3NhZ2VGb3JUZXN0aW5nOgorICAgICAgICByZXR1cm4g
IklQQzo6V3JhcHBlZEFzeW5jTWVzc2FnZUZvclRlc3RpbmciOworICAgIGNhc2UgTWVzc2FnZU5h
bWU6OlN5bmNNZXNzYWdlUmVwbHk6CisgICAgICAgIHJldHVybiAiSVBDOjpTeW5jTWVzc2FnZVJl
cGx5IjsKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpJbml0aWFsaXplQ29ubmVjdGlvbjoKKyAgICAg
ICAgcmV0dXJuICJJUEM6OkluaXRpYWxpemVDb25uZWN0aW9uIjsKKyAgICBjYXNlIE1lc3NhZ2VO
YW1lOjpMZWdhY3lTZXNzaW9uU3RhdGU6CisgICAgICAgIHJldHVybiAiSVBDOjpMZWdhY3lTZXNz
aW9uU3RhdGUiOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4g
IjxpbnZhbGlkIG1lc3NhZ2UgbmFtZT4iOworfQorCitSZWNlaXZlck5hbWUgcmVjZWl2ZXJOYW1l
KE1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lKQoreworICAgIHN3aXRjaCAobWVzc2FnZU5hbWUpIHsK
KyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX0xvYWRVUkw6CisjaWYgRU5BQkxFKFRFU1Rf
RkVBVFVSRSkKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX1Rlc3RBc3luY01lc3NhZ2U6
CisjZW5kaWYKKyNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQorICAgIGNhc2UgTWVzc2FnZU5hbWU6
OldlYlBhZ2VfVGVzdEFzeW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50czoKKyNlbmRpZgorI2lmIEVO
QUJMRShURVNUX0ZFQVRVUkUpCisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9UZXN0QXN5
bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1lbnRzOgorI2VuZGlmCisgICAgY2FzZSBNZXNzYWdl
TmFtZTo6V2ViUGFnZV9UZXN0U3luY01lc3NhZ2U6CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2Vi
UGFnZV9UZXN0U3luY2hyb25vdXNNZXNzYWdlOgorICAgICAgICByZXR1cm4gUmVjZWl2ZXJOYW1l
OjpXZWJQYWdlOworICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfTG9hZFVSTDoKKyNpZiBF
TkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfTG9hZFNv
bWV0aGluZzoKKyNlbmRpZgorI2lmIChFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiAoTkVTVEVEX01F
U1NBR0VfQ09ORElUSU9OIHx8IFNPTUVfT1RIRVJfTUVTU0FHRV9DT05ESVRJT04pKQorICAgIGNh
c2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfVG91Y2hFdmVudDoKKyNlbmRpZgorI2lmIChFTkFCTEUo
VE9VQ0hfRVZFTlRTKSAmJiAoTkVTVEVEX01FU1NBR0VfQ09ORElUSU9OICYmIFNPTUVfT1RIRVJf
TUVTU0FHRV9DT05ESVRJT04pKQorICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfQWRkRXZl
bnQ6CisjZW5kaWYKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgIGNhc2UgTWVzc2FnZU5h
bWU6OldlYlBhZ2VfTG9hZFNvbWV0aGluZ0Vsc2U6CisjZW5kaWYKKyAgICBjYXNlIE1lc3NhZ2VO
YW1lOjpXZWJQYWdlX0RpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbjoKKyAgICBjYXNlIE1lc3NhZ2VO
YW1lOjpXZWJQYWdlX0Nsb3NlOgorICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfUHJlZmVy
ZW5jZXNEaWRDaGFuZ2U6CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9TZW5kRG91Ymxl
QW5kRmxvYXQ6CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9TZW5kSW50czoKKyAgICBj
YXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX0NyZWF0ZVBsdWdpbjoKKyAgICBjYXNlIE1lc3NhZ2VO
YW1lOjpXZWJQYWdlX1J1bkphdmFTY3JpcHRBbGVydDoKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpX
ZWJQYWdlX0dldFBsdWdpbnM6CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9HZXRQbHVn
aW5Qcm9jZXNzQ29ubmVjdGlvbjoKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX1Rlc3RN
dWx0aXBsZUF0dHJpYnV0ZXM6CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9UZXN0UGFy
YW1ldGVyQXR0cmlidXRlczoKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX1RlbXBsYXRl
VGVzdDoKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX1NldFZpZGVvTGF5ZXJJRDoKKyNp
ZiBQTEFURk9STShNQUMpCisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9EaWRDcmVhdGVX
ZWJQcm9jZXNzQ29ubmVjdGlvbjoKKyNlbmRpZgorI2lmIFBMQVRGT1JNKE1BQykKKyAgICBjYXNl
IE1lc3NhZ2VOYW1lOjpXZWJQYWdlX0ludGVycHJldEtleUV2ZW50OgorI2VuZGlmCisjaWYgRU5B
QkxFKERFUFJFQ0FURURfRkVBVFVSRSkKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX0Rl
cHJlY2F0ZWRPcGVyYXRpb246CisjZW5kaWYKKyNpZiBFTkFCTEUoRVhQRVJJTUVOVEFMX0ZFQVRV
UkUpCisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9FeHBlcmltZW50YWxPcGVyYXRpb246
CisjZW5kaWYKKyAgICAgICAgcmV0dXJuIFJlY2VpdmVyTmFtZTo6V2ViUGFnZTsKKyAgICAgICAg
cmV0dXJuIFJlY2VpdmVyTmFtZTo6Tm9uZTsKKyNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQorICAg
IGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVzdEFzeW5jTWVzc2FnZVJlcGx5OgorI2VuZGlm
CisjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdl
X1Rlc3RBc3luY01lc3NhZ2VXaXRoTm9Bcmd1bWVudHNSZXBseToKKyNlbmRpZgorI2lmIEVOQUJM
RShURVNUX0ZFQVRVUkUpCisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9UZXN0QXN5bmNN
ZXNzYWdlV2l0aE11bHRpcGxlQXJndW1lbnRzUmVwbHk6CisjZW5kaWYKKyAgICAgICAgcmV0dXJu
IFJlY2VpdmVyTmFtZTo6QXN5bmNSZXBseTsKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXcmFwcGVk
QXN5bmNNZXNzYWdlRm9yVGVzdGluZzoKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpTeW5jTWVzc2Fn
ZVJlcGx5OgorICAgIGNhc2UgTWVzc2FnZU5hbWU6OkluaXRpYWxpemVDb25uZWN0aW9uOgorICAg
IGNhc2UgTWVzc2FnZU5hbWU6OkxlZ2FjeVNlc3Npb25TdGF0ZToKKyAgICAgICAgcmV0dXJuIFJl
Y2VpdmVyTmFtZTo6SVBDOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBy
ZXR1cm4gUmVjZWl2ZXJOYW1lOjpJbnZhbGlkOworfQorCitib29sIGlzVmFsaWRNZXNzYWdlTmFt
ZShNZXNzYWdlTmFtZSBtZXNzYWdlTmFtZSkKK3sKKyAgICBpZiAobWVzc2FnZU5hbWUgPT0gSVBD
OjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9Mb2FkVVJMKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyNp
ZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQorICAgIGlmIChtZXNzYWdlTmFtZSA9PSBJUEM6Ok1lc3Nh
Z2VOYW1lOjpXZWJQYWdlX1Rlc3RBc3luY01lc3NhZ2UpCisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIGlmIChtZXNzYWdlTmFtZSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX1Rlc3RBc3lu
Y01lc3NhZ2VSZXBseSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisjZW5kaWYKKyNpZiBFTkFCTEUo
VEVTVF9GRUFUVVJFKQorICAgIGlmIChtZXNzYWdlTmFtZSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpX
ZWJQYWdlX1Rlc3RBc3luY01lc3NhZ2VXaXRoTm9Bcmd1bWVudHMpCisgICAgICAgIHJldHVybiB0
cnVlOworICAgIGlmIChtZXNzYWdlTmFtZSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX1Rl
c3RBc3luY01lc3NhZ2VXaXRoTm9Bcmd1bWVudHNSZXBseSkKKyAgICAgICAgcmV0dXJuIHRydWU7
CisjZW5kaWYKKyNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQorICAgIGlmIChtZXNzYWdlTmFtZSA9
PSBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX1Rlc3RBc3luY01lc3NhZ2VXaXRoTXVsdGlwbGVB
cmd1bWVudHMpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmIChtZXNzYWdlTmFtZSA9PSBJ
UEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX1Rlc3RBc3luY01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1
bWVudHNSZXBseSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisjZW5kaWYKKyAgICBpZiAobWVzc2Fn
ZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9UZXN0U3luY01lc3NhZ2UpCisgICAg
ICAgIHJldHVybiB0cnVlOworICAgIGlmIChtZXNzYWdlTmFtZSA9PSBJUEM6Ok1lc3NhZ2VOYW1l
OjpXZWJQYWdlX1Rlc3RTeW5jaHJvbm91c01lc3NhZ2UpCisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIGlmIChtZXNzYWdlTmFtZSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX0xvYWRVUkwp
CisgICAgICAgIHJldHVybiB0cnVlOworI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAgaWYg
KG1lc3NhZ2VOYW1lID09IElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfTG9hZFNvbWV0aGluZykK
KyAgICAgICAgcmV0dXJuIHRydWU7CisjZW5kaWYKKyNpZiAoRU5BQkxFKFRPVUNIX0VWRU5UUykg
JiYgKE5FU1RFRF9NRVNTQUdFX0NPTkRJVElPTiB8fCBTT01FX09USEVSX01FU1NBR0VfQ09ORElU
SU9OKSkKKyAgICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9U
b3VjaEV2ZW50KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyNlbmRpZgorI2lmIChFTkFCTEUoVE9V
Q0hfRVZFTlRTKSAmJiAoTkVTVEVEX01FU1NBR0VfQ09ORElUSU9OICYmIFNPTUVfT1RIRVJfTUVT
U0FHRV9DT05ESVRJT04pKQorICAgIGlmIChtZXNzYWdlTmFtZSA9PSBJUEM6Ok1lc3NhZ2VOYW1l
OjpXZWJQYWdlX0FkZEV2ZW50KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyNlbmRpZgorI2lmIEVO
QUJMRShUT1VDSF9FVkVOVFMpCisgICAgaWYgKG1lc3NhZ2VOYW1lID09IElQQzo6TWVzc2FnZU5h
bWU6OldlYlBhZ2VfTG9hZFNvbWV0aGluZ0Vsc2UpCisgICAgICAgIHJldHVybiB0cnVlOworI2Vu
ZGlmCisgICAgaWYgKG1lc3NhZ2VOYW1lID09IElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfRGlk
UmVjZWl2ZVBvbGljeURlY2lzaW9uKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAobWVz
c2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9DbG9zZSkKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgaWYgKG1lc3NhZ2VOYW1lID09IElQQzo6TWVzc2FnZU5hbWU6OldlYlBh
Z2VfUHJlZmVyZW5jZXNEaWRDaGFuZ2UpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmICht
ZXNzYWdlTmFtZSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX1NlbmREb3VibGVBbmRGbG9h
dCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKG1lc3NhZ2VOYW1lID09IElQQzo6TWVz
c2FnZU5hbWU6OldlYlBhZ2VfU2VuZEludHMpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlm
IChtZXNzYWdlTmFtZSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX0NyZWF0ZVBsdWdpbikK
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKG1lc3NhZ2VOYW1lID09IElQQzo6TWVzc2Fn
ZU5hbWU6OldlYlBhZ2VfUnVuSmF2YVNjcmlwdEFsZXJ0KQorICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9HZXRQbHVn
aW5zKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpN
ZXNzYWdlTmFtZTo6V2ViUGFnZV9HZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbikKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgaWYgKG1lc3NhZ2VOYW1lID09IElQQzo6TWVzc2FnZU5hbWU6Oldl
YlBhZ2VfVGVzdE11bHRpcGxlQXR0cmlidXRlcykKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
aWYgKG1lc3NhZ2VOYW1lID09IElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVzdFBhcmFtZXRl
ckF0dHJpYnV0ZXMpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmIChtZXNzYWdlTmFtZSA9
PSBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX1RlbXBsYXRlVGVzdCkKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgaWYgKG1lc3NhZ2VOYW1lID09IElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2Vf
U2V0VmlkZW9MYXllcklEKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyNpZiBQTEFURk9STShNQUMp
CisgICAgaWYgKG1lc3NhZ2VOYW1lID09IElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfRGlkQ3Jl
YXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24pCisgICAgICAgIHJldHVybiB0cnVlOworI2VuZGlmCisj
aWYgUExBVEZPUk0oTUFDKQorICAgIGlmIChtZXNzYWdlTmFtZSA9PSBJUEM6Ok1lc3NhZ2VOYW1l
OjpXZWJQYWdlX0ludGVycHJldEtleUV2ZW50KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyNlbmRp
ZgorI2lmIEVOQUJMRShERVBSRUNBVEVEX0ZFQVRVUkUpCisgICAgaWYgKG1lc3NhZ2VOYW1lID09
IElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfRGVwcmVjYXRlZE9wZXJhdGlvbikKKyAgICAgICAg
cmV0dXJuIHRydWU7CisjZW5kaWYKKyNpZiBFTkFCTEUoRVhQRVJJTUVOVEFMX0ZFQVRVUkUpCisg
ICAgaWYgKG1lc3NhZ2VOYW1lID09IElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfRXhwZXJpbWVu
dGFsT3BlcmF0aW9uKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyNlbmRpZgorICAgIGlmIChtZXNz
YWdlTmFtZSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpXcmFwcGVkQXN5bmNNZXNzYWdlRm9yVGVzdGlu
ZykKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKG1lc3NhZ2VOYW1lID09IElQQzo6TWVz
c2FnZU5hbWU6OlN5bmNNZXNzYWdlUmVwbHkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlm
IChtZXNzYWdlTmFtZSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpJbml0aWFsaXplQ29ubmVjdGlvbikK
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKG1lc3NhZ2VOYW1lID09IElQQzo6TWVzc2Fn
ZU5hbWU6OkxlZ2FjeVNlc3Npb25TdGF0ZSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgcmV0
dXJuIGZhbHNlOworfTsKKworfSAvLyBuYW1lc3BhY2UgSVBDCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1NjcmlwdHMvTWVzc2FnZU5hbWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TY3Jp
cHRzL01lc3NhZ2VOYW1lcy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvU2NyaXB0
cy9NZXNzYWdlTmFtZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDExNyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorICog
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL0VudW1UcmFpdHMuaD4K
KworbmFtZXNwYWNlIElQQyB7CisKK2VudW0gY2xhc3MgUmVjZWl2ZXJOYW1lIDogdWludDhfdCB7
CisgICAgV2ViUGFnZSA9IDEKKyAgICAsIFdlYlBhZ2UgPSAyCisgICAgLCBOb25lID0gMworICAg
ICwgSVBDID0gNAorICAgICwgQXN5bmNSZXBseSA9IDUKKyAgICAsIEludmFsaWQgPSA2Cit9Owor
CitlbnVtIGNsYXNzIE1lc3NhZ2VOYW1lIDogdWludDE2X3QgeworICAgIFdlYlBhZ2VfTG9hZFVS
TCA9IDEKKyNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQorICAgICwgV2ViUGFnZV9UZXN0QXN5bmNN
ZXNzYWdlID0gMgorICAgICwgV2ViUGFnZV9UZXN0QXN5bmNNZXNzYWdlUmVwbHkgPSAzCisjZW5k
aWYKKyNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQorICAgICwgV2ViUGFnZV9UZXN0QXN5bmNNZXNz
YWdlV2l0aE5vQXJndW1lbnRzID0gNAorICAgICwgV2ViUGFnZV9UZXN0QXN5bmNNZXNzYWdlV2l0
aE5vQXJndW1lbnRzUmVwbHkgPSA1CisjZW5kaWYKKyNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQor
ICAgICwgV2ViUGFnZV9UZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1lbnRzID0gNgor
ICAgICwgV2ViUGFnZV9UZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1lbnRzUmVwbHkg
PSA3CisjZW5kaWYKKyAgICAsIFdlYlBhZ2VfVGVzdFN5bmNNZXNzYWdlID0gOAorICAgICwgV2Vi
UGFnZV9UZXN0U3luY2hyb25vdXNNZXNzYWdlID0gOQorICAgICwgV2ViUGFnZV9Mb2FkVVJMID0g
MTAKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgICwgV2ViUGFnZV9Mb2FkU29tZXRoaW5n
ID0gMTEKKyNlbmRpZgorI2lmIChFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiAoTkVTVEVEX01FU1NB
R0VfQ09ORElUSU9OIHx8IFNPTUVfT1RIRVJfTUVTU0FHRV9DT05ESVRJT04pKQorICAgICwgV2Vi
UGFnZV9Ub3VjaEV2ZW50ID0gMTIKKyNlbmRpZgorI2lmIChFTkFCTEUoVE9VQ0hfRVZFTlRTKSAm
JiAoTkVTVEVEX01FU1NBR0VfQ09ORElUSU9OICYmIFNPTUVfT1RIRVJfTUVTU0FHRV9DT05ESVRJ
T04pKQorICAgICwgV2ViUGFnZV9BZGRFdmVudCA9IDEzCisjZW5kaWYKKyNpZiBFTkFCTEUoVE9V
Q0hfRVZFTlRTKQorICAgICwgV2ViUGFnZV9Mb2FkU29tZXRoaW5nRWxzZSA9IDE0CisjZW5kaWYK
KyAgICAsIFdlYlBhZ2VfRGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uID0gMTUKKyAgICAsIFdlYlBh
Z2VfQ2xvc2UgPSAxNgorICAgICwgV2ViUGFnZV9QcmVmZXJlbmNlc0RpZENoYW5nZSA9IDE3Cisg
ICAgLCBXZWJQYWdlX1NlbmREb3VibGVBbmRGbG9hdCA9IDE4CisgICAgLCBXZWJQYWdlX1NlbmRJ
bnRzID0gMTkKKyAgICAsIFdlYlBhZ2VfQ3JlYXRlUGx1Z2luID0gMjAKKyAgICAsIFdlYlBhZ2Vf
UnVuSmF2YVNjcmlwdEFsZXJ0ID0gMjEKKyAgICAsIFdlYlBhZ2VfR2V0UGx1Z2lucyA9IDIyCisg
ICAgLCBXZWJQYWdlX0dldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uID0gMjMKKyAgICAsIFdlYlBh
Z2VfVGVzdE11bHRpcGxlQXR0cmlidXRlcyA9IDI0CisgICAgLCBXZWJQYWdlX1Rlc3RQYXJhbWV0
ZXJBdHRyaWJ1dGVzID0gMjUKKyAgICAsIFdlYlBhZ2VfVGVtcGxhdGVUZXN0ID0gMjYKKyAgICAs
IFdlYlBhZ2VfU2V0VmlkZW9MYXllcklEID0gMjcKKyNpZiBQTEFURk9STShNQUMpCisgICAgLCBX
ZWJQYWdlX0RpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uID0gMjgKKyNlbmRpZgorI2lmIFBM
QVRGT1JNKE1BQykKKyAgICAsIFdlYlBhZ2VfSW50ZXJwcmV0S2V5RXZlbnQgPSAyOQorI2VuZGlm
CisjaWYgRU5BQkxFKERFUFJFQ0FURURfRkVBVFVSRSkKKyAgICAsIFdlYlBhZ2VfRGVwcmVjYXRl
ZE9wZXJhdGlvbiA9IDMwCisjZW5kaWYKKyNpZiBFTkFCTEUoRVhQRVJJTUVOVEFMX0ZFQVRVUkUp
CisgICAgLCBXZWJQYWdlX0V4cGVyaW1lbnRhbE9wZXJhdGlvbiA9IDMxCisjZW5kaWYKKyAgICAs
IFdyYXBwZWRBc3luY01lc3NhZ2VGb3JUZXN0aW5nID0gMzIKKyAgICAsIFN5bmNNZXNzYWdlUmVw
bHkgPSAzMworICAgICwgSW5pdGlhbGl6ZUNvbm5lY3Rpb24gPSAzNAorICAgICwgTGVnYWN5U2Vz
c2lvblN0YXRlID0gMzUKK307CisKK1JlY2VpdmVyTmFtZSByZWNlaXZlck5hbWUoTWVzc2FnZU5h
bWUpOworY29uc3QgY2hhciogZGVzY3JpcHRpb24oTWVzc2FnZU5hbWUpOworYm9vbCBpc1ZhbGlk
TWVzc2FnZU5hbWUoTWVzc2FnZU5hbWUpOworCit9IC8vIG5hbWVzcGFjZSBJUEMKKworbmFtZXNw
YWNlIFdURiB7CisKK3RlbXBsYXRlPD4KK2NsYXNzIEhhc0N1c3RvbUlzVmFsaWRFbnVtPElQQzo6
TWVzc2FnZU5hbWU+IDogcHVibGljIHN0ZDo6dHJ1ZV90eXBlIHsgfTsKK3RlbXBsYXRlPHR5cGVu
YW1lIEUsIHR5cGVuYW1lIFQsIHR5cGVuYW1lID0gc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX3Nh
bWU8RSwgSVBDOjpNZXNzYWdlTmFtZT46OnZhbHVlPj4KK2Jvb2wgaXNWYWxpZEVudW0oVCBtZXNz
YWdlTmFtZSkKK3sKKyAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihUKSA9PSBzaXplb2YoSVBDOjpN
ZXNzYWdlTmFtZSksICJpc1ZhbGlkRW51bTxNZXNzYWdlTmFtZT4gc2hvdWxkIG9ubHkgYmUgY2Fs
bGVkIHdpdGggMTYtYml0IHR5cGVzIik7CisgICAgcmV0dXJuIElQQzo6aXNWYWxpZE1lc3NhZ2VO
YW1lKHN0YXRpY19jYXN0PElQQzo6TWVzc2FnZU5hbWU+KG1lc3NhZ2VOYW1lKSk7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXVEYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy9nZW5lcmF0ZS1t
ZXNzYWdlLXJlY2VpdmVyLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy9n
ZW5lcmF0ZS1tZXNzYWdlLXJlY2VpdmVyLnB5CShyZXZpc2lvbiAyNjEwMzgpCisrKyBTb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvZ2VuZXJhdGUtbWVzc2FnZS1yZWNlaXZlci5weQkod29ya2luZyBjb3B5
KQpAQCAtMjMsMzMgKzIzLDQ4IEBACiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIGZyb20gX19mdXR1cmVfXyBp
bXBvcnQgd2l0aF9zdGF0ZW1lbnQKLWltcG9ydCBhcmdwYXJzZQogaW1wb3J0IHN5cwogCiBpbXBv
cnQgd2Via2l0Lm1lc3NhZ2VzCiBpbXBvcnQgd2Via2l0LnBhcnNlcgogCiAKLWRlZiBtYWluKGFy
Z3Y9Tm9uZSk6Ci0gICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoKQotICAgIHBh
cnNlci5hZGRfYXJndW1lbnQoJ3NvdXJjZScpCi0gICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1p
bXBsZW1lbnRhdGlvbicsIHJlcXVpcmVkPVRydWUpCi0gICAgcGFyc2VyLmFkZF9hcmd1bWVudCgn
LS1oZWFkZXInLCByZXF1aXJlZD1UcnVlKQotICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tcmVw
bHktaGVhZGVyJywgcmVxdWlyZWQ9VHJ1ZSkKLQotICAgIGFyZ3MgPSBwYXJzZXIucGFyc2VfYXJn
cygpCi0KLSAgICB3aXRoIG9wZW4oYXJncy5zb3VyY2UpIGFzIHNvdXJjZV9maWxlOgotICAgICAg
ICByZWNlaXZlciA9IHdlYmtpdC5wYXJzZXIucGFyc2Uoc291cmNlX2ZpbGUpCitkZWYgbWFpbihh
cmd2KToKKyAgICByZWNlaXZlcnMgPSBbXQogCi0gICAgd2l0aCBvcGVuKGFyZ3MuaW1wbGVtZW50
YXRpb24sICJ3KyIpIGFzIGltcGxlbWVudGF0aW9uX291dHB1dDoKLSAgICAgICAgaW1wbGVtZW50
YXRpb25fb3V0cHV0LndyaXRlKHdlYmtpdC5tZXNzYWdlcy5nZW5lcmF0ZV9tZXNzYWdlX2hhbmRs
ZXIocmVjZWl2ZXIpKQorICAgIGZpcnN0X2FyZyA9IFRydWUKKyAgICBzZWNvbmRfYXJnID0gRmFs
c2UKKyAgICBmb3IgcGFyYW1ldGVyIGluIGFyZ3Y6CisgICAgICAgIGlmIGZpcnN0X2FyZzoKKyAg
ICAgICAgICAgIGZpcnN0X2FyZyA9IEZhbHNlCisgICAgICAgICAgICBzZWNvbmRfYXJnID0gVHJ1
ZQorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgaWYgc2Vjb25kX2FyZzoKKyAgICAgICAg
ICAgIGJhc2VfZGlyID0gcGFyYW1ldGVyCisgICAgICAgICAgICBzZWNvbmRfYXJnID0gRmFsc2UK
KyAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgcmVjZWl2ZXJfbmFtZSA9IHBhcmFtZXRl
ci5yc3BsaXQoJy8nLCAxKS5wb3AoKQorICAgICAgICBwcmludCAnR2VuZXJhdGluZyBtZXNzYWdl
IHJlY2VpdmVyIGZvciAlcycgJSByZWNlaXZlcl9uYW1lCisKKyAgICAgICAgd2l0aCBvcGVuKCcl
cy8lcy5tZXNzYWdlcy5pbicgJSAoYmFzZV9kaXIsIHBhcmFtZXRlcikpIGFzIHNvdXJjZV9maWxl
OgorICAgICAgICAgICAgcmVjZWl2ZXIgPSB3ZWJraXQucGFyc2VyLnBhcnNlKHNvdXJjZV9maWxl
KQorICAgICAgICByZWNlaXZlcnMuYXBwZW5kKHJlY2VpdmVyKQorCisgICAgICAgIHdpdGggb3Bl
bignJXNNZXNzYWdlUmVjZWl2ZXIuY3BwJyAlIHJlY2VpdmVyX25hbWUsICJ3KyIpIGFzIGltcGxl
bWVudGF0aW9uX291dHB1dDoKKyAgICAgICAgICAgIGltcGxlbWVudGF0aW9uX291dHB1dC53cml0
ZSh3ZWJraXQubWVzc2FnZXMuZ2VuZXJhdGVfbWVzc2FnZV9oYW5kbGVyKHJlY2VpdmVyKSkKKwor
ICAgICAgICB3aXRoIG9wZW4oJyVzTWVzc2FnZXMuaCcgJSByZWNlaXZlcl9uYW1lLCAidysiKSBh
cyBoZWFkZXJfb3V0cHV0OgorICAgICAgICAgICAgaGVhZGVyX291dHB1dC53cml0ZSh3ZWJraXQu
bWVzc2FnZXMuZ2VuZXJhdGVfbWVzc2FnZXNfaGVhZGVyKHJlY2VpdmVyKSkKIAotICAgIHdpdGgg
b3BlbihhcmdzLmhlYWRlciwgIncrIikgYXMgaGVhZGVyX291dHB1dDoKLSAgICAgICAgaGVhZGVy
X291dHB1dC53cml0ZSh3ZWJraXQubWVzc2FnZXMuZ2VuZXJhdGVfbWVzc2FnZXNfaGVhZGVyKHJl
Y2VpdmVyKSkKKyAgICAgICAgd2l0aCBvcGVuKCclc01lc3NhZ2VzUmVwbGllcy5oJyAlIHJlY2Vp
dmVyX25hbWUsICJ3KyIpIGFzIHJlcGx5X2hlYWRlcl9vdXRwdXQ6CisgICAgICAgICAgICByZXBs
eV9oZWFkZXJfb3V0cHV0LndyaXRlKHdlYmtpdC5tZXNzYWdlcy5nZW5lcmF0ZV9tZXNzYWdlc19y
ZXBseV9oZWFkZXIocmVjZWl2ZXIpKQogCi0gICAgd2l0aCBvcGVuKGFyZ3MucmVwbHlfaGVhZGVy
LCAidysiKSBhcyByZXBseV9oZWFkZXJfb3V0cHV0OgotICAgICAgICByZXBseV9oZWFkZXJfb3V0
cHV0LndyaXRlKHdlYmtpdC5tZXNzYWdlcy5nZW5lcmF0ZV9tZXNzYWdlc19yZXBseV9oZWFkZXIo
cmVjZWl2ZXIpKQorICAgIHdpdGggb3BlbignTWVzc2FnZU5hbWVzLmgnLCAidysiKSBhcyBtZXNz
YWdlX25hbWVzX2hlYWRlcl9vdXRwdXQ6CisgICAgICAgIG1lc3NhZ2VfbmFtZXNfaGVhZGVyX291
dHB1dC53cml0ZSh3ZWJraXQubWVzc2FnZXMuZ2VuZXJhdGVfbWVzc2FnZV9uYW1lc19oZWFkZXIo
cmVjZWl2ZXJzKSkKKworICAgIHdpdGggb3BlbignTWVzc2FnZU5hbWVzLmNwcCcsICJ3KyIpIGFz
IG1lc3NhZ2VfbmFtZXNfaW1wbGVtZW50YXRpb25fb3V0cHV0OgorICAgICAgICBtZXNzYWdlX25h
bWVzX2ltcGxlbWVudGF0aW9uX291dHB1dC53cml0ZSh3ZWJraXQubWVzc2FnZXMuZ2VuZXJhdGVf
bWVzc2FnZV9uYW1lc19pbXBsZW1lbnRhdGlvbihyZWNlaXZlcnMpKQogCiAgICAgcmV0dXJuIDAK
IApJbmRleDogU291cmNlL1dlYktpdC9TY3JpcHRzL3Rlc3QtbGVnYWN5TWVzc2FnZVJlY2VpdmVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvdGVzdC1sZWdhY3lNZXNz
YWdlUmVjZWl2ZXIuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy90
ZXN0LWxlZ2FjeU1lc3NhZ2VSZWNlaXZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwy
MDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICog
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiAoRU5B
QkxFKFdFQktJVDIpICYmIChORVNURURfTUFTVEVSX0NPTkRJVElPTiB8fCBNQVNURVJfT1IgJiYg
TUFTVEVSX0FORCkpCisKKyNpbmNsdWRlICJXZWJQYWdlLmgiCisKKyNpbmNsdWRlICJBcmd1bWVu
dENvZGVycy5oIgorI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJEZWNvZGVyLmgi
CisjaWYgRU5BQkxFKERFUFJFQ0FURURfRkVBVFVSRSkgfHwgRU5BQkxFKEVYUEVSSU1FTlRBTF9G
RUFUVVJFKQorI2luY2x1ZGUgIkR1bW15VHlwZS5oIgorI2VuZGlmCisjaW5jbHVkZSAiSGFuZGxl
TWVzc2FnZS5oIgorI2lmIFBMQVRGT1JNKE1BQykKKyNpbmNsdWRlICJNYWNoUG9ydC5oIgorI2Vu
ZGlmCisjaW5jbHVkZSAiUGx1Z2luLmgiCisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmgiCisjaWYgKEVOQUJMRShUT1VDSF9FVkVOVFMpICYmIChORVNURURfTUVTU0FHRV9DT05ESVRJ
T04gJiYgU09NRV9PVEhFUl9NRVNTQUdFX0NPTkRJVElPTikpIHx8IChFTkFCTEUoVE9VQ0hfRVZF
TlRTKSAmJiAoTkVTVEVEX01FU1NBR0VfQ09ORElUSU9OIHx8IFNPTUVfT1RIRVJfTUVTU0FHRV9D
T05ESVRJT04pKQorI2luY2x1ZGUgIldlYkV2ZW50LmgiCisjZW5kaWYKKyNpbmNsdWRlICJXZWJQ
YWdlTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJQcmVmZXJlbmNlc1N0b3JlLmgiCisjaW5jbHVk
ZSA8V2ViQ29yZS9HcmFwaGljc0xheWVyLmg+CisjaWYgUExBVEZPUk0oTUFDKQorI2luY2x1ZGUg
PFdlYkNvcmUvS2V5Ym9hcmRFdmVudC5oPgorI2VuZGlmCisjaW5jbHVkZSA8V2ViQ29yZS9QbHVn
aW5EYXRhLmg+CisjaW5jbHVkZSA8dXRpbGl0eT4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgor
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
KworbmFtZXNwYWNlIE1lc3NhZ2VzIHsKKworbmFtZXNwYWNlIFdlYlBhZ2UgeworCit2b2lkIEdl
dFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpzZW5kKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29k
ZXI+JiYgZW5jb2RlciwgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBJUEM6OkNv
bm5lY3Rpb246OkhhbmRsZSYgY29ubmVjdGlvbkhhbmRsZSkKK3sKKyAgICAqZW5jb2RlciA8PCBj
b25uZWN0aW9uSGFuZGxlOworICAgIGNvbm5lY3Rpb24uc2VuZFN5bmNSZXBseShXVEZNb3ZlKGVu
Y29kZXIpKTsKK30KKwordm9pZCBUZXN0TXVsdGlwbGVBdHRyaWJ1dGVzOjpzZW5kKHN0ZDo6dW5p
cXVlX3B0cjxJUEM6OkVuY29kZXI+JiYgZW5jb2RlciwgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0
aW9uKQoreworICAgIGNvbm5lY3Rpb24uc2VuZFN5bmNSZXBseShXVEZNb3ZlKGVuY29kZXIpKTsK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViUGFnZQorCit9IC8vIG5hbWVzcGFjZSBNZXNzYWdlcwor
CituYW1lc3BhY2UgV2ViS2l0IHsKKwordm9pZCBXZWJQYWdlOjpkaWRSZWNlaXZlV2ViUGFnZU1l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIp
Cit7CisgICAgYXV0byBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyk7CisgICAgaWYgKGRl
Y29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFVSTDo6bmFtZSgp
KSB7CisgICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFVS
TD4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OmxvYWRVUkwpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5h
bWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFNvbWV0aGluZzo6bmFtZSgpKSB7CisgICAg
ICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFNvbWV0aGluZz4o
ZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OmxvYWRTb21ldGhpbmcpOworICAgICAgICByZXR1cm47
CisgICAgfQorI2VuZGlmCisjaWYgKEVOQUJMRShUT1VDSF9FVkVOVFMpICYmIChORVNURURfTUVT
U0FHRV9DT05ESVRJT04gfHwgU09NRV9PVEhFUl9NRVNTQUdFX0NPTkRJVElPTikpCisgICAgaWYg
KGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6VG91Y2hFdmVudDo6
bmFtZSgpKSB7CisgICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6
VG91Y2hFdmVudD4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OnRvdWNoRXZlbnQpOworICAgICAg
ICByZXR1cm47CisgICAgfQorI2VuZGlmCisjaWYgKEVOQUJMRShUT1VDSF9FVkVOVFMpICYmIChO
RVNURURfTUVTU0FHRV9DT05ESVRJT04gJiYgU09NRV9PVEhFUl9NRVNTQUdFX0NPTkRJVElPTikp
CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6QWRk
RXZlbnQ6Om5hbWUoKSkgeworICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6Oldl
YlBhZ2U6OkFkZEV2ZW50PihkZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6YWRkRXZlbnQpOworICAg
ICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAg
ICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkU29t
ZXRoaW5nRWxzZTo6bmFtZSgpKSB7CisgICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdl
czo6V2ViUGFnZTo6TG9hZFNvbWV0aGluZ0Vsc2U+KGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjps
b2FkU29tZXRoaW5nRWxzZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKyAgICBp
ZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZWNlaXZl
UG9saWN5RGVjaXNpb246Om5hbWUoKSkgeworICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVz
c2FnZXM6OldlYlBhZ2U6OkRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbj4oZGVjb2RlciwgdGhpcywg
JldlYlBhZ2U6OmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbik7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6
Q2xvc2U6Om5hbWUoKSkgeworICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6Oldl
YlBhZ2U6OkNsb3NlPihkZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6Y2xvc2UpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6
OldlYlBhZ2U6OlByZWZlcmVuY2VzRGlkQ2hhbmdlOjpuYW1lKCkpIHsKKyAgICAgICAgSVBDOjpo
YW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpQcmVmZXJlbmNlc0RpZENoYW5nZT4oZGVj
b2RlciwgdGhpcywgJldlYlBhZ2U6OnByZWZlcmVuY2VzRGlkQ2hhbmdlKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpX
ZWJQYWdlOjpTZW5kRG91YmxlQW5kRmxvYXQ6Om5hbWUoKSkgeworICAgICAgICBJUEM6OmhhbmRs
ZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OlNlbmREb3VibGVBbmRGbG9hdD4oZGVjb2Rlciwg
dGhpcywgJldlYlBhZ2U6OnNlbmREb3VibGVBbmRGbG9hdCk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6
U2VuZEludHM6Om5hbWUoKSkgeworICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6
OldlYlBhZ2U6OlNlbmRJbnRzPihkZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6c2VuZEludHMpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0g
TWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RQYXJhbWV0ZXJBdHRyaWJ1dGVzOjpuYW1lKCkpIHsKKyAg
ICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0UGFyYW1ldGVy
QXR0cmlidXRlcz4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OnRlc3RQYXJhbWV0ZXJBdHRyaWJ1
dGVzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFt
ZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpUZW1wbGF0ZVRlc3Q6Om5hbWUoKSkgeworICAgICAg
ICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OlRlbXBsYXRlVGVzdD4oZGVj
b2RlciwgdGhpcywgJldlYlBhZ2U6OnRlbXBsYXRlVGVzdCk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6
U2V0VmlkZW9MYXllcklEOjpuYW1lKCkpIHsKKyAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1l
c3NhZ2VzOjpXZWJQYWdlOjpTZXRWaWRlb0xheWVySUQ+KGRlY29kZXIsIHRoaXMsICZXZWJQYWdl
OjpzZXRWaWRlb0xheWVySUQpOworICAgICAgICByZXR1cm47CisgICAgfQorI2lmIFBMQVRGT1JN
KE1BQykKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdl
OjpEaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbjo6bmFtZSgpKSB7CisgICAgICAgIElQQzo6
aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6RGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5l
Y3Rpb24+KGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjpkaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVj
dGlvbik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKyNpZiBFTkFCTEUoREVQUkVD
QVRFRF9GRUFUVVJFKQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6
OldlYlBhZ2U6OkRlcHJlY2F0ZWRPcGVyYXRpb246Om5hbWUoKSkgeworICAgICAgICBJUEM6Omhh
bmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OkRlcHJlY2F0ZWRPcGVyYXRpb24+KGRlY29k
ZXIsIHRoaXMsICZXZWJQYWdlOjpkZXByZWNhdGVkT3BlcmF0aW9uKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKyNlbmRpZgorI2lmIEVOQUJMRShFWFBFUklNRU5UQUxfRkVBVFVSRSkKKyAgICBp
ZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpFeHBlcmltZW50
YWxPcGVyYXRpb246Om5hbWUoKSkgeworICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2Fn
ZXM6OldlYlBhZ2U6OkV4cGVyaW1lbnRhbE9wZXJhdGlvbj4oZGVjb2RlciwgdGhpcywgJldlYlBh
Z2U6OmV4cGVyaW1lbnRhbE9wZXJhdGlvbik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5k
aWYKKyAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7CisgICAgVU5VU0VEX1BBUkFNKGRlY29k
ZXIpOworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit2b2lkIFdlYlBhZ2U6OmRpZFJl
Y2VpdmVTeW5jV2ViUGFnZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6
OkRlY29kZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiByZXBseUVu
Y29kZXIpCit7CisgICAgYXV0byBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyk7CisgICAg
aWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6Q3JlYXRlUGx1
Z2luOjpuYW1lKCkpIHsKKyAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQ
YWdlOjpDcmVhdGVQbHVnaW4+KGRlY29kZXIsICpyZXBseUVuY29kZXIsIHRoaXMsICZXZWJQYWdl
OjpjcmVhdGVQbHVnaW4pOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChkZWNvZGVy
Lm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OlJ1bkphdmFTY3JpcHRBbGVydDo6
bmFtZSgpKSB7CisgICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6
UnVuSmF2YVNjcmlwdEFsZXJ0PihkZWNvZGVyLCAqcmVwbHlFbmNvZGVyLCB0aGlzLCAmV2ViUGFn
ZTo6cnVuSmF2YVNjcmlwdEFsZXJ0KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAo
ZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRQbHVnaW5zOjpu
YW1lKCkpIHsKKyAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpH
ZXRQbHVnaW5zPihkZWNvZGVyLCAqcmVwbHlFbmNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6Z2V0UGx1
Z2lucyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5h
bWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246Om5h
bWUoKSkgeworICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2VTeW5jaHJvbm91czxNZXNzYWdlczo6
V2ViUGFnZTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24+KGNvbm5lY3Rpb24sIGRlY29kZXIs
IHJlcGx5RW5jb2RlciwgdGhpcywgJldlYlBhZ2U6OmdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9u
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgp
ID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0TXVsdGlwbGVBdHRyaWJ1dGVzOjpuYW1lKCkpIHsK
KyAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlU3luY2hyb25vdXNXYW50c0Nvbm5lY3Rpb248TWVz
c2FnZXM6OldlYlBhZ2U6OlRlc3RNdWx0aXBsZUF0dHJpYnV0ZXM+KGNvbm5lY3Rpb24sIGRlY29k
ZXIsIHJlcGx5RW5jb2RlciwgdGhpcywgJldlYlBhZ2U6OnRlc3RNdWx0aXBsZUF0dHJpYnV0ZXMp
OworICAgICAgICByZXR1cm47CisgICAgfQorI2lmIFBMQVRGT1JNKE1BQykKKyAgICBpZiAoZGVj
b2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpJbnRlcnByZXRLZXlFdmVu
dDo6bmFtZSgpKSB7CisgICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFn
ZTo6SW50ZXJwcmV0S2V5RXZlbnQ+KGRlY29kZXIsICpyZXBseUVuY29kZXIsIHRoaXMsICZXZWJQ
YWdlOjppbnRlcnByZXRLZXlFdmVudCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYK
KyAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7CisgICAgVU5VU0VEX1BBUkFNKGRlY29kZXIp
OworICAgIFVOVVNFRF9QQVJBTShyZXBseUVuY29kZXIpOworICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworCisjZW5kaWYgLy8gKEVOQUJMRShX
RUJLSVQyKSAmJiAoTkVTVEVEX01BU1RFUl9DT05ESVRJT04gfHwgTUFTVEVSX09SICYmIE1BU1RF
Ul9BTkQpKQpJbmRleDogU291cmNlL1dlYktpdC9TY3JpcHRzL3Rlc3QtbGVnYWN5TWVzc2FnZXMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvdGVzdC1sZWdhY3lNZXNzYWdl
cy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy90ZXN0LWxlZ2FjeU1l
c3NhZ2VzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NDkgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTAtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
CisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2lmIChFTkFCTEUoV0VCS0lUMikgJiYgKE5FU1RFRF9NQVNU
RVJfQ09ORElUSU9OIHx8IE1BU1RFUl9PUiAmJiBNQVNURVJfQU5EKSkKKworI2luY2x1ZGUgIkFy
Z3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIk1lc3Nh
Z2VOYW1lcy5oIgorI2luY2x1ZGUgIlBsdWdpbi5oIgorI2luY2x1ZGUgIldlYlBhZ2VNZXNzYWdl
c1JlcGxpZXMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXIuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL0tleWJvYXJkRXZlbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BsdWdpbkRhdGEu
aD4KKyNpbmNsdWRlIDx1dGlsaXR5PgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4K
KyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CisKK25hbWVzcGFjZSBJUEMgeworY2xhc3MgRHVtbXlUeXBlOworY2xhc3MgTWFjaFBvcnQ7Cit9
CisKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgV2ViUHJlZmVyZW5jZXNTdG9yZTsKK2NsYXNz
IFdlYlRvdWNoRXZlbnQ7Cit9CisKK25hbWVzcGFjZSBNZXNzYWdlcyB7CituYW1lc3BhY2UgV2Vi
UGFnZSB7CisKK3N0YXRpYyBpbmxpbmUgSVBDOjpSZWNlaXZlck5hbWUgbWVzc2FnZVJlY2VpdmVy
TmFtZSgpCit7CisgICAgcmV0dXJuIElQQzo6UmVjZWl2ZXJOYW1lOjpXZWJQYWdlOworfQorCitj
bGFzcyBMb2FkVVJMIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8Y29uc3QgU3Ry
aW5nJj4gQXJndW1lbnRzOworCisgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsg
cmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfTG9hZFVSTDsgfQorICAgIHN0YXRpYyBj
b25zdCBib29sIGlzU3luYyA9IGZhbHNlOworCisgICAgZXhwbGljaXQgTG9hZFVSTChjb25zdCBT
dHJpbmcmIHVybCkKKyAgICAgICAgOiBtX2FyZ3VtZW50cyh1cmwpCisgICAgeworICAgIH0KKwor
ICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJl
dHVybiBtX2FyZ3VtZW50czsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQXJndW1lbnRzIG1fYXJn
dW1lbnRzOworfTsKKworI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCitjbGFzcyBMb2FkU29tZXRo
aW5nIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8Y29uc3QgU3RyaW5nJj4gQXJn
dW1lbnRzOworCisgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQ
Qzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfTG9hZFNvbWV0aGluZzsgfQorICAgIHN0YXRpYyBjb25z
dCBib29sIGlzU3luYyA9IGZhbHNlOworCisgICAgZXhwbGljaXQgTG9hZFNvbWV0aGluZyhjb25z
dCBTdHJpbmcmIHVybCkKKyAgICAgICAgOiBtX2FyZ3VtZW50cyh1cmwpCisgICAgeworICAgIH0K
KworICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKKyAgICB7CisgICAgICAg
IHJldHVybiBtX2FyZ3VtZW50czsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQXJndW1lbnRzIG1f
YXJndW1lbnRzOworfTsKKyNlbmRpZgorCisjaWYgKEVOQUJMRShUT1VDSF9FVkVOVFMpICYmIChO
RVNURURfTUVTU0FHRV9DT05ESVRJT04gfHwgU09NRV9PVEhFUl9NRVNTQUdFX0NPTkRJVElPTikp
CitjbGFzcyBUb3VjaEV2ZW50IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8Y29u
c3QgV2ViS2l0OjpXZWJUb3VjaEV2ZW50Jj4gQXJndW1lbnRzOworCisgICAgc3RhdGljIElQQzo6
TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfVG91
Y2hFdmVudDsgfQorICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOworCisgICAg
ZXhwbGljaXQgVG91Y2hFdmVudChjb25zdCBXZWJLaXQ6OldlYlRvdWNoRXZlbnQmIGV2ZW50KQor
ICAgICAgICA6IG1fYXJndW1lbnRzKGV2ZW50KQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdCBB
cmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9hcmd1
bWVudHM7CisgICAgfQorCitwcml2YXRlOgorICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKK307
CisjZW5kaWYKKworI2lmIChFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiAoTkVTVEVEX01FU1NBR0Vf
Q09ORElUSU9OICYmIFNPTUVfT1RIRVJfTUVTU0FHRV9DT05ESVRJT04pKQorY2xhc3MgQWRkRXZl
bnQgeworcHVibGljOgorICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBXZWJLaXQ6OldlYlRv
dWNoRXZlbnQmPiBBcmd1bWVudHM7CisKKyAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1l
KCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9BZGRFdmVudDsgfQorICAgIHN0
YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOworCisgICAgZXhwbGljaXQgQWRkRXZlbnQo
Y29uc3QgV2ViS2l0OjpXZWJUb3VjaEV2ZW50JiBldmVudCkKKyAgICAgICAgOiBtX2FyZ3VtZW50
cyhldmVudCkKKyAgICB7CisgICAgfQorCisgICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMo
KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOworICAgIH0KKworcHJp
dmF0ZToKKyAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Cit9OworI2VuZGlmCisKKyNpZiBFTkFC
TEUoVE9VQ0hfRVZFTlRTKQorY2xhc3MgTG9hZFNvbWV0aGluZ0Vsc2UgeworcHVibGljOgorICAg
IHR5cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBTdHJpbmcmPiBBcmd1bWVudHM7CisKKyAgICBzdGF0
aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6V2Vi
UGFnZV9Mb2FkU29tZXRoaW5nRWxzZTsgfQorICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9
IGZhbHNlOworCisgICAgZXhwbGljaXQgTG9hZFNvbWV0aGluZ0Vsc2UoY29uc3QgU3RyaW5nJiB1
cmwpCisgICAgICAgIDogbV9hcmd1bWVudHModXJsKQorICAgIHsKKyAgICB9CisKKyAgICBjb25z
dCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9h
cmd1bWVudHM7CisgICAgfQorCitwcml2YXRlOgorICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsK
K307CisjZW5kaWYKKworY2xhc3MgRGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uIHsKK3B1YmxpYzoK
KyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8dWludDY0X3QsIHVpbnQ2NF90LCB1aW50MzJfdD4gQXJn
dW1lbnRzOworCisgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQ
Qzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfRGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uOyB9CisgICAg
c3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7CisKKyAgICBEaWRSZWNlaXZlUG9saWN5
RGVjaXNpb24odWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbGlzdGVuZXJJRCwgdWludDMyX3Qg
cG9saWN5QWN0aW9uKQorICAgICAgICA6IG1fYXJndW1lbnRzKGZyYW1lSUQsIGxpc3RlbmVySUQs
IHBvbGljeUFjdGlvbikKKyAgICB7CisgICAgfQorCisgICAgY29uc3QgQXJndW1lbnRzJiBhcmd1
bWVudHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOworICAgIH0K
KworcHJpdmF0ZToKKyAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Cit9OworCitjbGFzcyBDbG9z
ZSB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBzdGQ6OnR1cGxlPD4gQXJndW1lbnRzOworCisgICAg
c3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6
OldlYlBhZ2VfQ2xvc2U7IH0KKyAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsK
KworICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKKyAgICB7CisgICAgICAg
IHJldHVybiBtX2FyZ3VtZW50czsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQXJndW1lbnRzIG1f
YXJndW1lbnRzOworfTsKKworY2xhc3MgUHJlZmVyZW5jZXNEaWRDaGFuZ2UgeworcHVibGljOgor
ICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmUm
PiBBcmd1bWVudHM7CisKKyAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1
cm4gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9QcmVmZXJlbmNlc0RpZENoYW5nZTsgfQorICAg
IHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOworCisgICAgZXhwbGljaXQgUHJlZmVy
ZW5jZXNEaWRDaGFuZ2UoY29uc3QgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSkK
KyAgICAgICAgOiBtX2FyZ3VtZW50cyhzdG9yZSkKKyAgICB7CisgICAgfQorCisgICAgY29uc3Qg
QXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYXJn
dW1lbnRzOworICAgIH0KKworcHJpdmF0ZToKKyAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Cit9
OworCitjbGFzcyBTZW5kRG91YmxlQW5kRmxvYXQgeworcHVibGljOgorICAgIHR5cGVkZWYgc3Rk
Ojp0dXBsZTxkb3VibGUsIGZsb2F0PiBBcmd1bWVudHM7CisKKyAgICBzdGF0aWMgSVBDOjpNZXNz
YWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9TZW5kRG91
YmxlQW5kRmxvYXQ7IH0KKyAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKKwor
ICAgIFNlbmREb3VibGVBbmRGbG9hdChkb3VibGUgZCwgZmxvYXQgZikKKyAgICAgICAgOiBtX2Fy
Z3VtZW50cyhkLCBmKQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3Vt
ZW50cygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7CisgICAgfQor
Citwcml2YXRlOgorICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKK307CisKK2NsYXNzIFNlbmRJ
bnRzIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8Y29uc3QgVmVjdG9yPHVpbnQ2
NF90PiYsIGNvbnN0IFZlY3RvcjxWZWN0b3I8dWludDY0X3Q+PiY+IEFyZ3VtZW50czsKKworICAg
IHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1l
OjpXZWJQYWdlX1NlbmRJbnRzOyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFs
c2U7CisKKyAgICBTZW5kSW50cyhjb25zdCBWZWN0b3I8dWludDY0X3Q+JiBpbnRzLCBjb25zdCBW
ZWN0b3I8VmVjdG9yPHVpbnQ2NF90Pj4mIGludFZlY3RvcnMpCisgICAgICAgIDogbV9hcmd1bWVu
dHMoaW50cywgaW50VmVjdG9ycykKKyAgICB7CisgICAgfQorCisgICAgY29uc3QgQXJndW1lbnRz
JiBhcmd1bWVudHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwor
ICAgIH0KKworcHJpdmF0ZToKKyAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Cit9OworCitjbGFz
cyBDcmVhdGVQbHVnaW4geworcHVibGljOgorICAgIHR5cGVkZWYgc3RkOjp0dXBsZTx1aW50NjRf
dCwgY29uc3QgV2ViS2l0OjpQbHVnaW46OlBhcmFtZXRlcnMmPiBBcmd1bWVudHM7CisKKyAgICBz
dGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6
V2ViUGFnZV9DcmVhdGVQbHVnaW47IH0KKyAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSB0
cnVlOworCisgICAgdXNpbmcgUmVwbHkgPSBzdGQ6OnR1cGxlPGJvb2wmPjsKKyAgICB1c2luZyBS
ZXBseUFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8Ym9vbD47CisgICAgQ3JlYXRlUGx1Z2luKHVpbnQ2
NF90IHBsdWdpbkluc3RhbmNlSUQsIGNvbnN0IFdlYktpdDo6UGx1Z2luOjpQYXJhbWV0ZXJzJiBw
YXJhbWV0ZXJzKQorICAgICAgICA6IG1fYXJndW1lbnRzKHBsdWdpbkluc3RhbmNlSUQsIHBhcmFt
ZXRlcnMpCisgICAgeworICAgIH0KKworICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkg
Y29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKKyAgICB9CisKK3ByaXZh
dGU6CisgICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOworfTsKKworY2xhc3MgUnVuSmF2YVNjcmlw
dEFsZXJ0IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8dWludDY0X3QsIGNvbnN0
IFN0cmluZyY+IEFyZ3VtZW50czsKKworICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUo
KSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX1J1bkphdmFTY3JpcHRBbGVydDsg
fQorICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IHRydWU7CisKKyAgICB1c2luZyBSZXBs
eSA9IHN0ZDo6dHVwbGU8PjsKKyAgICB1c2luZyBSZXBseUFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8
PjsKKyAgICBSdW5KYXZhU2NyaXB0QWxlcnQodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5n
JiBtZXNzYWdlKQorICAgICAgICA6IG1fYXJndW1lbnRzKGZyYW1lSUQsIG1lc3NhZ2UpCisgICAg
eworICAgIH0KKworICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKKyAgICB7
CisgICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQXJn
dW1lbnRzIG1fYXJndW1lbnRzOworfTsKKworY2xhc3MgR2V0UGx1Z2lucyB7CitwdWJsaWM6Cisg
ICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGJvb2w+IEFyZ3VtZW50czsKKworICAgIHN0YXRpYyBJUEM6
Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX0dl
dFBsdWdpbnM7IH0KKyAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSB0cnVlOworCisgICAg
dXNpbmcgUmVwbHkgPSBzdGQ6OnR1cGxlPFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiY+Owor
ICAgIHVzaW5nIFJlcGx5QXJndW1lbnRzID0gc3RkOjp0dXBsZTxWZWN0b3I8V2ViQ29yZTo6UGx1
Z2luSW5mbz4+OworICAgIGV4cGxpY2l0IEdldFBsdWdpbnMoYm9vbCByZWZyZXNoKQorICAgICAg
ICA6IG1fYXJndW1lbnRzKHJlZnJlc2gpCisgICAgeworICAgIH0KKworICAgIGNvbnN0IEFyZ3Vt
ZW50cyYgYXJndW1lbnRzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2FyZ3VtZW50
czsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOworfTsKKwor
Y2xhc3MgR2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24geworcHVibGljOgorICAgIHR5cGVkZWYg
c3RkOjp0dXBsZTxjb25zdCBTdHJpbmcmPiBBcmd1bWVudHM7CisKKyAgICBzdGF0aWMgSVBDOjpN
ZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9HZXRQ
bHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjsgfQorICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9
IHRydWU7CisKKyAgICB1c2luZyBEZWxheWVkUmVwbHkgPSBHZXRQbHVnaW5Qcm9jZXNzQ29ubmVj
dGlvbkRlbGF5ZWRSZXBseTsKKyAgICBzdGF0aWMgdm9pZCBzZW5kKHN0ZDo6dW5pcXVlX3B0cjxJ
UEM6OkVuY29kZXI+JiYsIElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IElQQzo6Q29ubmVjdGlvbjo6
SGFuZGxlJiBjb25uZWN0aW9uSGFuZGxlKTsKKyAgICB1c2luZyBSZXBseSA9IHN0ZDo6dHVwbGU8
SVBDOjpDb25uZWN0aW9uOjpIYW5kbGUmPjsKKyAgICB1c2luZyBSZXBseUFyZ3VtZW50cyA9IHN0
ZDo6dHVwbGU8SVBDOjpDb25uZWN0aW9uOjpIYW5kbGU+OworICAgIGV4cGxpY2l0IEdldFBsdWdp
blByb2Nlc3NDb25uZWN0aW9uKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCkKKyAgICAgICAgOiBt
X2FyZ3VtZW50cyhwbHVnaW5QYXRoKQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdCBBcmd1bWVu
dHMmIGFyZ3VtZW50cygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7
CisgICAgfQorCitwcml2YXRlOgorICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKK307CisKK2Ns
YXNzIFRlc3RNdWx0aXBsZUF0dHJpYnV0ZXMgeworcHVibGljOgorICAgIHR5cGVkZWYgc3RkOjp0
dXBsZTw+IEFyZ3VtZW50czsKKworICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7
IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX1Rlc3RNdWx0aXBsZUF0dHJpYnV0ZXM7
IH0KKyAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSB0cnVlOworCisgICAgdXNpbmcgRGVs
YXllZFJlcGx5ID0gVGVzdE11bHRpcGxlQXR0cmlidXRlc0RlbGF5ZWRSZXBseTsKKyAgICBzdGF0
aWMgdm9pZCBzZW5kKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiYsIElQQzo6Q29ubmVj
dGlvbiYpOworICAgIHVzaW5nIFJlcGx5ID0gc3RkOjp0dXBsZTw+OworICAgIHVzaW5nIFJlcGx5
QXJndW1lbnRzID0gc3RkOjp0dXBsZTw+OworICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRz
KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKKyAgICB9CisKK3By
aXZhdGU6CisgICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOworfTsKKworY2xhc3MgVGVzdFBhcmFt
ZXRlckF0dHJpYnV0ZXMgeworcHVibGljOgorICAgIHR5cGVkZWYgc3RkOjp0dXBsZTx1aW50NjRf
dCwgZG91YmxlLCBkb3VibGU+IEFyZ3VtZW50czsKKworICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VO
YW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX1Rlc3RQYXJhbWV0
ZXJBdHRyaWJ1dGVzOyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7CisK
KyAgICBUZXN0UGFyYW1ldGVyQXR0cmlidXRlcyh1aW50NjRfdCBmb28sIGRvdWJsZSBiYXIsIGRv
dWJsZSBiYXopCisgICAgICAgIDogbV9hcmd1bWVudHMoZm9vLCBiYXIsIGJheikKKyAgICB7Cisg
ICAgfQorCisgICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAorICAgIHsKKyAg
ICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOworICAgIH0KKworcHJpdmF0ZToKKyAgICBBcmd1bWVu
dHMgbV9hcmd1bWVudHM7Cit9OworCitjbGFzcyBUZW1wbGF0ZVRlc3QgeworcHVibGljOgorICAg
IHR5cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBIYXNoTWFwPFN0cmluZywgc3RkOjpwYWlyPFN0cmlu
ZywgdWludDY0X3Q+PiY+IEFyZ3VtZW50czsKKworICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1l
IG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX1RlbXBsYXRlVGVzdDsg
fQorICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOworCisgICAgZXhwbGljaXQg
VGVtcGxhdGVUZXN0KGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBzdGQ6OnBhaXI8U3RyaW5nLCB1aW50
NjRfdD4+JiBhKQorICAgICAgICA6IG1fYXJndW1lbnRzKGEpCisgICAgeworICAgIH0KKworICAg
IGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVy
biBtX2FyZ3VtZW50czsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQXJndW1lbnRzIG1fYXJndW1l
bnRzOworfTsKKworY2xhc3MgU2V0VmlkZW9MYXllcklEIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVm
IHN0ZDo6dHVwbGU8Y29uc3QgV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklE
Jj4gQXJndW1lbnRzOworCisgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0
dXJuIElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfU2V0VmlkZW9MYXllcklEOyB9CisgICAgc3Rh
dGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7CisKKyAgICBleHBsaWNpdCBTZXRWaWRlb0xh
eWVySUQoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklEJiB2aWRl
b0xheWVySUQpCisgICAgICAgIDogbV9hcmd1bWVudHModmlkZW9MYXllcklEKQorICAgIHsKKyAg
ICB9CisKKyAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0CisgICAgeworICAg
ICAgICByZXR1cm4gbV9hcmd1bWVudHM7CisgICAgfQorCitwcml2YXRlOgorICAgIEFyZ3VtZW50
cyBtX2FyZ3VtZW50czsKK307CisKKyNpZiBQTEFURk9STShNQUMpCitjbGFzcyBEaWRDcmVhdGVX
ZWJQcm9jZXNzQ29ubmVjdGlvbiB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGNv
bnN0IElQQzo6TWFjaFBvcnQmPiBBcmd1bWVudHM7CisKKyAgICBzdGF0aWMgSVBDOjpNZXNzYWdl
TmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9EaWRDcmVhdGVX
ZWJQcm9jZXNzQ29ubmVjdGlvbjsgfQorICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZh
bHNlOworCisgICAgZXhwbGljaXQgRGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oY29uc3Qg
SVBDOjpNYWNoUG9ydCYgY29ubmVjdGlvbklkZW50aWZpZXIpCisgICAgICAgIDogbV9hcmd1bWVu
dHMoY29ubmVjdGlvbklkZW50aWZpZXIpCisgICAgeworICAgIH0KKworICAgIGNvbnN0IEFyZ3Vt
ZW50cyYgYXJndW1lbnRzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2FyZ3VtZW50
czsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOworfTsKKyNl
bmRpZgorCisjaWYgUExBVEZPUk0oTUFDKQorY2xhc3MgSW50ZXJwcmV0S2V5RXZlbnQgeworcHVi
bGljOgorICAgIHR5cGVkZWYgc3RkOjp0dXBsZTx1aW50MzJfdD4gQXJndW1lbnRzOworCisgICAg
c3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6
OldlYlBhZ2VfSW50ZXJwcmV0S2V5RXZlbnQ7IH0KKyAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5
bmMgPSB0cnVlOworCisgICAgdXNpbmcgUmVwbHkgPSBzdGQ6OnR1cGxlPFZlY3RvcjxXZWJDb3Jl
OjpLZXlwcmVzc0NvbW1hbmQ+Jj47CisgICAgdXNpbmcgUmVwbHlBcmd1bWVudHMgPSBzdGQ6OnR1
cGxlPFZlY3RvcjxXZWJDb3JlOjpLZXlwcmVzc0NvbW1hbmQ+PjsKKyAgICBleHBsaWNpdCBJbnRl
cnByZXRLZXlFdmVudCh1aW50MzJfdCB0eXBlKQorICAgICAgICA6IG1fYXJndW1lbnRzKHR5cGUp
CisgICAgeworICAgIH0KKworICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QK
KyAgICB7CisgICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKKyAgICB9CisKK3ByaXZhdGU6Cisg
ICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOworfTsKKyNlbmRpZgorCisjaWYgRU5BQkxFKERFUFJF
Q0FURURfRkVBVFVSRSkKK2NsYXNzIERlcHJlY2F0ZWRPcGVyYXRpb24geworcHVibGljOgorICAg
IHR5cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBJUEM6OkR1bW15VHlwZSY+IEFyZ3VtZW50czsKKwor
ICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VO
YW1lOjpXZWJQYWdlX0RlcHJlY2F0ZWRPcGVyYXRpb247IH0KKyAgICBzdGF0aWMgY29uc3QgYm9v
bCBpc1N5bmMgPSBmYWxzZTsKKworICAgIGV4cGxpY2l0IERlcHJlY2F0ZWRPcGVyYXRpb24oY29u
c3QgSVBDOjpEdW1teVR5cGUmIGR1bW15KQorICAgICAgICA6IG1fYXJndW1lbnRzKGR1bW15KQor
ICAgIHsKKyAgICB9CisKKyAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Cisg
ICAgeworICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7CisgICAgfQorCitwcml2YXRlOgorICAg
IEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKK307CisjZW5kaWYKKworI2lmIEVOQUJMRShFWFBFUklN
RU5UQUxfRkVBVFVSRSkKK2NsYXNzIEV4cGVyaW1lbnRhbE9wZXJhdGlvbiB7CitwdWJsaWM6Cisg
ICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGNvbnN0IElQQzo6RHVtbXlUeXBlJj4gQXJndW1lbnRzOwor
CisgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2Fn
ZU5hbWU6OldlYlBhZ2VfRXhwZXJpbWVudGFsT3BlcmF0aW9uOyB9CisgICAgc3RhdGljIGNvbnN0
IGJvb2wgaXNTeW5jID0gZmFsc2U7CisKKyAgICBleHBsaWNpdCBFeHBlcmltZW50YWxPcGVyYXRp
b24oY29uc3QgSVBDOjpEdW1teVR5cGUmIGR1bW15KQorICAgICAgICA6IG1fYXJndW1lbnRzKGR1
bW15KQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNv
bnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7CisgICAgfQorCitwcml2YXRl
OgorICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKK307CisjZW5kaWYKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViUGFnZQorfSAvLyBuYW1lc3BhY2UgTWVzc2FnZXMKKworI2VuZGlmIC8vIChFTkFCTEUo
V0VCS0lUMikgJiYgKE5FU1RFRF9NQVNURVJfQ09ORElUSU9OIHx8IE1BU1RFUl9PUiAmJiBNQVNU
RVJfQU5EKSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy90ZXN0LWxlZ2FjeU1lc3NhZ2Vz
UmVwbGllcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy90ZXN0LWxlZ2Fj
eU1lc3NhZ2VzUmVwbGllcy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvU2NyaXB0
cy90ZXN0LWxlZ2FjeU1lc3NhZ2VzUmVwbGllcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
NDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICog
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIChFTkFCTEUoV0VC
S0lUMikgJiYgKE5FU1RFRF9NQVNURVJfQ09ORElUSU9OIHx8IE1BU1RFUl9PUiAmJiBNQVNURVJf
QU5EKSkKKworI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJNZXNzYWdlTmFtZXMu
aCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCisKK25hbWVzcGFjZSBNZXNzYWdlcyB7Citu
YW1lc3BhY2UgV2ViUGFnZSB7CisKK3VzaW5nIEdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uRGVs
YXllZFJlcGx5ID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkNvbm5lY3Rpb246
OkhhbmRsZSYgY29ubmVjdGlvbkhhbmRsZSk+OworCit1c2luZyBUZXN0TXVsdGlwbGVBdHRyaWJ1
dGVzRGVsYXllZFJlcGx5ID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPjsKKworfSAvLyBuYW1l
c3BhY2UgV2ViUGFnZQorfSAvLyBuYW1lc3BhY2UgTWVzc2FnZXMKKworI2VuZGlmIC8vIChFTkFC
TEUoV0VCS0lUMikgJiYgKE5FU1RFRF9NQVNURVJfQ09ORElUSU9OIHx8IE1BU1RFUl9PUiAmJiBN
QVNURVJfQU5EKSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy90ZXN0LXN1cGVyY2xhc3NN
ZXNzYWdlUmVjZWl2ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy90
ZXN0LXN1cGVyY2xhc3NNZXNzYWdlUmVjZWl2ZXIuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJj
ZS9XZWJLaXQvU2NyaXB0cy90ZXN0LXN1cGVyY2xhc3NNZXNzYWdlUmVjZWl2ZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMTg5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisgKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAor
ICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorCisjaW5jbHVkZSAiV2ViUGFnZS5oIgorCisjaW5jbHVkZSAiQXJndW1lbnRD
b2RlcnMuaCIKKyNpbmNsdWRlICJEZWNvZGVyLmgiCisjaW5jbHVkZSAiSGFuZGxlTWVzc2FnZS5o
IgorI2luY2x1ZGUgIlRlc3RDbGFzc05hbWUuaCIKKyNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQor
I2luY2x1ZGUgIlRlc3RUd29TdGF0ZUVudW0uaCIKKyNlbmRpZgorI2luY2x1ZGUgIldlYlBhZ2VN
ZXNzYWdlcy5oIgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgTWVzc2FnZXMgeworCituYW1lc3BhY2UgV2ViUGFn
ZSB7CisKKyNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQorCit2b2lkIFRlc3RBc3luY01lc3NhZ2U6
OmNhbGxSZXBseShJUEM6OkRlY29kZXImIGRlY29kZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
dWludDY0X3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgT3B0aW9uYWw8dWludDY0
X3Q+IHJlc3VsdDsKKyAgICBkZWNvZGVyID4+IHJlc3VsdDsKKyAgICBpZiAoIXJlc3VsdCkgewor
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgY2FuY2VsUmVwbHkoV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGNvbXBs
ZXRpb25IYW5kbGVyKFdURk1vdmUoKnJlc3VsdCkpOworfQorCit2b2lkIFRlc3RBc3luY01lc3Nh
Z2U6OmNhbmNlbFJlcGx5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0X3QmJik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit7CisgICAgY29tcGxldGlvbkhhbmRsZXIoSVBDOjpBc3luY1JlcGx5
RXJyb3I8dWludDY0X3Q+OjpjcmVhdGUoKSk7Cit9CisKK3ZvaWQgVGVzdEFzeW5jTWVzc2FnZTo6
c2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYmIGVuY29kZXIsIElQQzo6Q29ubmVj
dGlvbiYgY29ubmVjdGlvbiwgdWludDY0X3QgcmVzdWx0KQoreworICAgICplbmNvZGVyIDw8IHJl
c3VsdDsKKyAgICBjb25uZWN0aW9uLnNlbmRTeW5jUmVwbHkoV1RGTW92ZShlbmNvZGVyKSk7Cit9
CisKKyNlbmRpZgorCisjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKKwordm9pZCBUZXN0QXN5bmNN
ZXNzYWdlV2l0aE5vQXJndW1lbnRzOjpjYWxsUmVwbHkoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgY29t
cGxldGlvbkhhbmRsZXIoKTsKK30KKwordm9pZCBUZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJndW1l
bnRzOjpjYW5jZWxSZXBseShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCit7CisgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKK30KKwordm9pZCBUZXN0QXN5bmNN
ZXNzYWdlV2l0aE5vQXJndW1lbnRzOjpzZW5kKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+
JiYgZW5jb2RlciwgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQoreworICAgIGNvbm5lY3Rp
b24uc2VuZFN5bmNSZXBseShXVEZNb3ZlKGVuY29kZXIpKTsKK30KKworI2VuZGlmCisKKyNpZiBF
TkFCTEUoVEVTVF9GRUFUVVJFKQorCit2b2lkIFRlc3RBc3luY01lc3NhZ2VXaXRoTXVsdGlwbGVB
cmd1bWVudHM6OmNhbGxSZXBseShJUEM6OkRlY29kZXImIGRlY29kZXIsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCYmLCB1aW50NjRfdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAg
ICBPcHRpb25hbDxib29sPiBmbGFnOworICAgIGRlY29kZXIgPj4gZmxhZzsKKyAgICBpZiAoIWZs
YWcpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGNhbmNlbFJlcGx5
KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICBPcHRpb25hbDx1aW50NjRfdD4gdmFsdWU7CisgICAgZGVjb2RlciA+PiB2YWx1ZTsKKyAgICBp
ZiAoIXZhbHVlKSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBjYW5j
ZWxSZXBseShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZSgqZmxhZyksIFdURk1vdmUoKnZhbHVl
KSk7Cit9CisKK3ZvaWQgVGVzdEFzeW5jTWVzc2FnZVdpdGhNdWx0aXBsZUFyZ3VtZW50czo6Y2Fu
Y2VsUmVwbHkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sJiYsIHVpbnQ2NF90JiYpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQoreworICAgIGNvbXBsZXRpb25IYW5kbGVyKElQQzo6QXN5bmNSZXBs
eUVycm9yPGJvb2w+OjpjcmVhdGUoKSwgSVBDOjpBc3luY1JlcGx5RXJyb3I8dWludDY0X3Q+Ojpj
cmVhdGUoKSk7Cit9CisKK3ZvaWQgVGVzdEFzeW5jTWVzc2FnZVdpdGhNdWx0aXBsZUFyZ3VtZW50
czo6c2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYmIGVuY29kZXIsIElQQzo6Q29u
bmVjdGlvbiYgY29ubmVjdGlvbiwgYm9vbCBmbGFnLCB1aW50NjRfdCB2YWx1ZSkKK3sKKyAgICAq
ZW5jb2RlciA8PCBmbGFnOworICAgICplbmNvZGVyIDw8IHZhbHVlOworICAgIGNvbm5lY3Rpb24u
c2VuZFN5bmNSZXBseShXVEZNb3ZlKGVuY29kZXIpKTsKK30KKworI2VuZGlmCisKK3ZvaWQgVGVz
dFN5bmNNZXNzYWdlOjpzZW5kKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiYgZW5jb2Rl
ciwgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCB1aW50OF90IHJlcGx5KQoreworICAgICpl
bmNvZGVyIDw8IHJlcGx5OworICAgIGNvbm5lY3Rpb24uc2VuZFN5bmNSZXBseShXVEZNb3ZlKGVu
Y29kZXIpKTsKK30KKwordm9pZCBUZXN0U3luY2hyb25vdXNNZXNzYWdlOjpzZW5kKHN0ZDo6dW5p
cXVlX3B0cjxJUEM6OkVuY29kZXI+JiYgZW5jb2RlciwgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0
aW9uLCBjb25zdCBPcHRpb25hbDxXZWJLaXQ6OlRlc3RDbGFzc05hbWU+JiBvcHRpb25hbFJlcGx5
KQoreworICAgICplbmNvZGVyIDw8IG9wdGlvbmFsUmVwbHk7CisgICAgY29ubmVjdGlvbi5zZW5k
U3luY1JlcGx5KFdURk1vdmUoZW5jb2RlcikpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJQYWdl
CisKK30gLy8gbmFtZXNwYWNlIE1lc3NhZ2VzCisKK25hbWVzcGFjZSBXZWJLaXQgeworCit2b2lk
IFdlYlBhZ2U6OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwg
SVBDOjpEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIGF1dG8gcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpOworICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6Oldl
YlBhZ2U6OkxvYWRVUkw6Om5hbWUoKSkgeworICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVz
c2FnZXM6OldlYlBhZ2U6OkxvYWRVUkw+KGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjpsb2FkVVJM
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQorICAg
IGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RBc3lu
Y01lc3NhZ2U6Om5hbWUoKSkgeworICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2VBc3luYzxNZXNz
YWdlczo6V2ViUGFnZTo6VGVzdEFzeW5jTWVzc2FnZT4oY29ubmVjdGlvbiwgZGVjb2RlciwgdGhp
cywgJldlYlBhZ2U6OnRlc3RBc3luY01lc3NhZ2UpOworICAgICAgICByZXR1cm47CisgICAgfQor
I2VuZGlmCisjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdl
TmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJndW1l
bnRzOjpuYW1lKCkpIHsKKyAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlQXN5bmM8TWVzc2FnZXM6
OldlYlBhZ2U6OlRlc3RBc3luY01lc3NhZ2VXaXRoTm9Bcmd1bWVudHM+KGNvbm5lY3Rpb24sIGRl
Y29kZXIsIHRoaXMsICZXZWJQYWdlOjp0ZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJndW1lbnRzKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUp
CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6VGVz
dEFzeW5jTWVzc2FnZVdpdGhNdWx0aXBsZUFyZ3VtZW50czo6bmFtZSgpKSB7CisgICAgICAgIElQ
Qzo6aGFuZGxlTWVzc2FnZUFzeW5jPE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0QXN5bmNNZXNzYWdl
V2l0aE11bHRpcGxlQXJndW1lbnRzPihjb25uZWN0aW9uLCBkZWNvZGVyLCB0aGlzLCAmV2ViUGFn
ZTo6dGVzdEFzeW5jTWVzc2FnZVdpdGhNdWx0aXBsZUFyZ3VtZW50cyk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisjZW5kaWYKKyAgICBXZWJQYWdlQmFzZTo6ZGlkUmVjZWl2ZU1lc3NhZ2UoY29u
bmVjdGlvbiwgZGVjb2Rlcik7Cit9CisKK3ZvaWQgV2ViUGFnZTo6ZGlkUmVjZWl2ZVN5bmNNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBz
dGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYgcmVwbHlFbmNvZGVyKQoreworICAgIGF1dG8g
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpOworICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VO
YW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RTeW5jTWVzc2FnZTo6bmFtZSgpKSB7Cisg
ICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZVN5bmNocm9ub3VzPE1lc3NhZ2VzOjpXZWJQYWdlOjpU
ZXN0U3luY01lc3NhZ2U+KGNvbm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5RW5jb2RlciwgdGhpcywg
JldlYlBhZ2U6OnRlc3RTeW5jTWVzc2FnZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAg
aWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6VGVzdFN5bmNo
cm9ub3VzTWVzc2FnZTo6bmFtZSgpKSB7CisgICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZVN5bmNo
cm9ub3VzPE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0U3luY2hyb25vdXNNZXNzYWdlPihjb25uZWN0
aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIsIHRoaXMsICZXZWJQYWdlOjp0ZXN0U3luY2hyb25v
dXNNZXNzYWdlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBVTlVTRURfUEFSQU0oY29u
bmVjdGlvbik7CisgICAgVU5VU0VEX1BBUkFNKGRlY29kZXIpOworICAgIFVOVVNFRF9QQVJBTShy
ZXBseUVuY29kZXIpOworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKKwpJbmRleDogU291cmNlL1dlYktpdC9TY3JpcHRzL3Rlc3Qtc3VwZXJjbGFz
c01lc3NhZ2VzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TY3JpcHRzL3Rlc3Qtc3Vw
ZXJjbGFzc01lc3NhZ2VzLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9TY3JpcHRz
L3Rlc3Qtc3VwZXJjbGFzc01lc3NhZ2VzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyMDEg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
CisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkFyZ3VtZW50
Q29kZXJzLmgiCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIk1lc3NhZ2VOYW1l
cy5oIgorI2luY2x1ZGUgIlRlc3RDbGFzc05hbWUuaCIKKyNpbmNsdWRlICJXZWJQYWdlTWVzc2Fn
ZXNSZXBsaWVzLmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvT3B0
aW9uYWwuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKyNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CitlbnVtIGNsYXNz
IFRlc3RUd29TdGF0ZUVudW0gOiBib29sOworfQorCituYW1lc3BhY2UgTWVzc2FnZXMgeworbmFt
ZXNwYWNlIFdlYlBhZ2UgeworCitzdGF0aWMgaW5saW5lIElQQzo6UmVjZWl2ZXJOYW1lIG1lc3Nh
Z2VSZWNlaXZlck5hbWUoKQoreworICAgIHJldHVybiBJUEM6OlJlY2VpdmVyTmFtZTo6V2ViUGFn
ZTsKK30KKworY2xhc3MgTG9hZFVSTCB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBzdGQ6OnR1cGxl
PGNvbnN0IFN0cmluZyY+IEFyZ3VtZW50czsKKworICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1l
IG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX0xvYWRVUkw7IH0KKyAg
ICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKKworICAgIGV4cGxpY2l0IExvYWRV
UkwoY29uc3QgU3RyaW5nJiB1cmwpCisgICAgICAgIDogbV9hcmd1bWVudHModXJsKQorICAgIHsK
KyAgICB9CisKKyAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0CisgICAgewor
ICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7CisgICAgfQorCitwcml2YXRlOgorICAgIEFyZ3Vt
ZW50cyBtX2FyZ3VtZW50czsKK307CisKKyNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQorY2xhc3Mg
VGVzdEFzeW5jTWVzc2FnZSB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBzdGQ6OnR1cGxlPFdlYktp
dDo6VGVzdFR3b1N0YXRlRW51bT4gQXJndW1lbnRzOworCisgICAgc3RhdGljIElQQzo6TWVzc2Fn
ZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVzdEFzeW5j
TWVzc2FnZTsgfQorICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOworCisgICAg
c3RhdGljIHZvaWQgY2FsbFJlcGx5KElQQzo6RGVjb2RlciYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQodWludDY0X3QmJik+JiYpOworICAgIHN0YXRpYyB2b2lkIGNhbmNlbFJlcGx5KENvbXBsZXRp
b25IYW5kbGVyPHZvaWQodWludDY0X3QmJik+JiYpOworICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VO
YW1lIGFzeW5jTWVzc2FnZVJlcGx5TmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6Oldl
YlBhZ2VfVGVzdEFzeW5jTWVzc2FnZVJlcGx5OyB9CisgICAgdXNpbmcgQXN5bmNSZXBseSA9IFRl
c3RBc3luY01lc3NhZ2VBc3luY1JlcGx5OworICAgIHN0YXRpYyB2b2lkIHNlbmQoc3RkOjp1bmlx
dWVfcHRyPElQQzo6RW5jb2Rlcj4mJiwgSVBDOjpDb25uZWN0aW9uJiwgdWludDY0X3QgcmVzdWx0
KTsKKyAgICB1c2luZyBSZXBseSA9IHN0ZDo6dHVwbGU8dWludDY0X3QmPjsKKyAgICB1c2luZyBS
ZXBseUFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8dWludDY0X3Q+OworICAgIGV4cGxpY2l0IFRlc3RB
c3luY01lc3NhZ2UoV2ViS2l0OjpUZXN0VHdvU3RhdGVFbnVtIHR3b1N0YXRlRW51bSkKKyAgICAg
ICAgOiBtX2FyZ3VtZW50cyh0d29TdGF0ZUVudW0pCisgICAgeworICAgIH0KKworICAgIGNvbnN0
IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2Fy
Z3VtZW50czsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwor
fTsKKyNlbmRpZgorCisjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKK2NsYXNzIFRlc3RBc3luY01l
c3NhZ2VXaXRoTm9Bcmd1bWVudHMgeworcHVibGljOgorICAgIHR5cGVkZWYgc3RkOjp0dXBsZTw+
IEFyZ3VtZW50czsKKworICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVy
biBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX1Rlc3RBc3luY01lc3NhZ2VXaXRoTm9Bcmd1bWVu
dHM7IH0KKyAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKKworICAgIHN0YXRp
YyB2b2lkIGNhbGxSZXBseShJUEM6OkRlY29kZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOworICAgIHN0YXRpYyB2b2lkIGNhbmNlbFJlcGx5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CisgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgYXN5bmNNZXNzYWdlUmVwbHlOYW1l
KCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9UZXN0QXN5bmNNZXNzYWdlV2l0
aE5vQXJndW1lbnRzUmVwbHk7IH0KKyAgICB1c2luZyBBc3luY1JlcGx5ID0gVGVzdEFzeW5jTWVz
c2FnZVdpdGhOb0FyZ3VtZW50c0FzeW5jUmVwbHk7CisgICAgc3RhdGljIHZvaWQgc2VuZChzdGQ6
OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYmLCBJUEM6OkNvbm5lY3Rpb24mKTsKKyAgICB1c2lu
ZyBSZXBseSA9IHN0ZDo6dHVwbGU8PjsKKyAgICB1c2luZyBSZXBseUFyZ3VtZW50cyA9IHN0ZDo6
dHVwbGU8PjsKKyAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0CisgICAgewor
ICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7CisgICAgfQorCitwcml2YXRlOgorICAgIEFyZ3Vt
ZW50cyBtX2FyZ3VtZW50czsKK307CisjZW5kaWYKKworI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUp
CitjbGFzcyBUZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1lbnRzIHsKK3B1YmxpYzoK
KyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8PiBBcmd1bWVudHM7CisKKyAgICBzdGF0aWMgSVBDOjpN
ZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9UZXN0
QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1lbnRzOyB9CisgICAgc3RhdGljIGNvbnN0IGJv
b2wgaXNTeW5jID0gZmFsc2U7CisKKyAgICBzdGF0aWMgdm9pZCBjYWxsUmVwbHkoSVBDOjpEZWNv
ZGVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sJiYsIHVpbnQ2NF90JiYpPiYmKTsKKyAg
ICBzdGF0aWMgdm9pZCBjYW5jZWxSZXBseShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wmJiwg
dWludDY0X3QmJik+JiYpOworICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIGFzeW5jTWVzc2Fn
ZVJlcGx5TmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVzdEFzeW5j
TWVzc2FnZVdpdGhNdWx0aXBsZUFyZ3VtZW50c1JlcGx5OyB9CisgICAgdXNpbmcgQXN5bmNSZXBs
eSA9IFRlc3RBc3luY01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHNBc3luY1JlcGx5OworICAg
IHN0YXRpYyB2b2lkIHNlbmQoc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mJiwgSVBDOjpD
b25uZWN0aW9uJiwgYm9vbCBmbGFnLCB1aW50NjRfdCB2YWx1ZSk7CisgICAgdXNpbmcgUmVwbHkg
PSBzdGQ6OnR1cGxlPGJvb2wmLCB1aW50NjRfdCY+OworICAgIHVzaW5nIFJlcGx5QXJndW1lbnRz
ID0gc3RkOjp0dXBsZTxib29sLCB1aW50NjRfdD47CisgICAgY29uc3QgQXJndW1lbnRzJiBhcmd1
bWVudHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOworICAgIH0K
KworcHJpdmF0ZToKKyAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Cit9OworI2VuZGlmCisKK2Ns
YXNzIFRlc3RTeW5jTWVzc2FnZSB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBzdGQ6OnR1cGxlPHVp
bnQzMl90PiBBcmd1bWVudHM7CisKKyAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkg
eyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9UZXN0U3luY01lc3NhZ2U7IH0KKyAg
ICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSB0cnVlOworCisgICAgdXNpbmcgRGVsYXllZFJl
cGx5ID0gVGVzdFN5bmNNZXNzYWdlRGVsYXllZFJlcGx5OworICAgIHN0YXRpYyB2b2lkIHNlbmQo
c3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mJiwgSVBDOjpDb25uZWN0aW9uJiwgdWludDhf
dCByZXBseSk7CisgICAgdXNpbmcgUmVwbHkgPSBzdGQ6OnR1cGxlPHVpbnQ4X3QmPjsKKyAgICB1
c2luZyBSZXBseUFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8dWludDhfdD47CisgICAgZXhwbGljaXQg
VGVzdFN5bmNNZXNzYWdlKHVpbnQzMl90IHBhcmFtKQorICAgICAgICA6IG1fYXJndW1lbnRzKHBh
cmFtKQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNv
bnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7CisgICAgfQorCitwcml2YXRl
OgorICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKK307CisKK2NsYXNzIFRlc3RTeW5jaHJvbm91
c01lc3NhZ2UgeworcHVibGljOgorICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxib29sPiBBcmd1bWVu
dHM7CisKKyAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpN
ZXNzYWdlTmFtZTo6V2ViUGFnZV9UZXN0U3luY2hyb25vdXNNZXNzYWdlOyB9CisgICAgc3RhdGlj
IGNvbnN0IGJvb2wgaXNTeW5jID0gdHJ1ZTsKKworICAgIHVzaW5nIERlbGF5ZWRSZXBseSA9IFRl
c3RTeW5jaHJvbm91c01lc3NhZ2VEZWxheWVkUmVwbHk7CisgICAgc3RhdGljIHZvaWQgc2VuZChz
dGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYmLCBJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBP
cHRpb25hbDxXZWJLaXQ6OlRlc3RDbGFzc05hbWU+JiBvcHRpb25hbFJlcGx5KTsKKyAgICB1c2lu
ZyBSZXBseSA9IHN0ZDo6dHVwbGU8T3B0aW9uYWw8V2ViS2l0OjpUZXN0Q2xhc3NOYW1lPiY+Owor
ICAgIHVzaW5nIFJlcGx5QXJndW1lbnRzID0gc3RkOjp0dXBsZTxPcHRpb25hbDxXZWJLaXQ6OlRl
c3RDbGFzc05hbWU+PjsKKyAgICBleHBsaWNpdCBUZXN0U3luY2hyb25vdXNNZXNzYWdlKGJvb2wg
dmFsdWUpCisgICAgICAgIDogbV9hcmd1bWVudHModmFsdWUpCisgICAgeworICAgIH0KKworICAg
IGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVy
biBtX2FyZ3VtZW50czsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQXJndW1lbnRzIG1fYXJndW1l
bnRzOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViUGFnZQorfSAvLyBuYW1lc3BhY2UgTWVzc2Fn
ZXMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy90ZXN0LXN1cGVyY2xhc3NNZXNzYWdlc1Jl
cGxpZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvdGVzdC1zdXBlcmNs
YXNzTWVzc2FnZXNSZXBsaWVzLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9TY3Jp
cHRzL3Rlc3Qtc3VwZXJjbGFzc01lc3NhZ2VzUmVwbGllcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFO
RAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUg
Ik1lc3NhZ2VOYW1lcy5oIgorI2luY2x1ZGUgIlRlc3RDbGFzc05hbWUuaCIKKyNpbmNsdWRlIDx3
dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorCisKK25hbWVzcGFjZSBN
ZXNzYWdlcyB7CituYW1lc3BhY2UgV2ViUGFnZSB7CisKKyNpZiBFTkFCTEUoVEVTVF9GRUFUVVJF
KQordXNpbmcgVGVzdEFzeW5jTWVzc2FnZUFzeW5jUmVwbHkgPSBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKHVpbnQ2NF90IHJlc3VsdCk+OworI2VuZGlmCisKKyNpZiBFTkFCTEUoVEVTVF9GRUFUVVJF
KQordXNpbmcgVGVzdEFzeW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50c0FzeW5jUmVwbHkgPSBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+OworI2VuZGlmCisKKyNpZiBFTkFCTEUoVEVTVF9GRUFUVVJF
KQordXNpbmcgVGVzdEFzeW5jTWVzc2FnZVdpdGhNdWx0aXBsZUFyZ3VtZW50c0FzeW5jUmVwbHkg
PSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wgZmxhZywgdWludDY0X3QgdmFsdWUpPjsKKyNl
bmRpZgorCit1c2luZyBUZXN0U3luY01lc3NhZ2VEZWxheWVkUmVwbHkgPSBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKHVpbnQ4X3QgcmVwbHkpPjsKKwordXNpbmcgVGVzdFN5bmNocm9ub3VzTWVzc2Fn
ZURlbGF5ZWRSZXBseSA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgT3B0aW9uYWw8V2Vi
S2l0OjpUZXN0Q2xhc3NOYW1lPiYgb3B0aW9uYWxSZXBseSk+OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJQYWdlCit9IC8vIG5hbWVzcGFjZSBNZXNzYWdlcwpJbmRleDogU291cmNlL1dlYktpdC9TY3Jp
cHRzL3Rlc3RNZXNzYWdlUmVjZWl2ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
U2NyaXB0cy90ZXN0TWVzc2FnZVJlY2VpdmVyLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvdGVzdE1lc3NhZ2VSZWNlaXZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSwzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycg
QU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKwor
I2luY2x1ZGUgIk5vbmUuaCIKKworI2luY2x1ZGUgIkRlY29kZXIuaCIKKyNpbmNsdWRlICJIYW5k
bGVNZXNzYWdlLmgiCisjaW5jbHVkZSAiTm9uZU1lc3NhZ2VzLmgiCisKK25hbWVzcGFjZSBXZWJL
aXQgeworCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCkluZGV4OiBTb3VyY2UvV2ViS2l0L1Nj
cmlwdHMvdGVzdE1lc3NhZ2VzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TY3JpcHRz
L3Rlc3RNZXNzYWdlcy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy90
ZXN0TWVzc2FnZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEwLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorICogQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisgKiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLAorICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgorI2lu
Y2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJNZXNzYWdlTmFtZXMuaCIKKyNpbmNsdWRl
ICJOb25lTWVzc2FnZXNSZXBsaWVzLmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNs
dWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKworCituYW1lc3BhY2UgTWVzc2FnZXMg
eworbmFtZXNwYWNlIE5vbmUgeworCitzdGF0aWMgaW5saW5lIElQQzo6UmVjZWl2ZXJOYW1lIG1l
c3NhZ2VSZWNlaXZlck5hbWUoKQoreworICAgIHJldHVybiBJUEM6OlJlY2VpdmVyTmFtZTo6Tm9u
ZTsKK30KKworCit9IC8vIG5hbWVzcGFjZSBOb25lCit9IC8vIG5hbWVzcGFjZSBNZXNzYWdlcwpJ
bmRleDogU291cmNlL1dlYktpdC9TY3JpcHRzL3Rlc3RNZXNzYWdlc1JlcGxpZXMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvdGVzdE1lc3NhZ2VzUmVwbGllcy5oCShub25l
eGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy90ZXN0TWVzc2FnZXNSZXBsaWVzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwKKyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaW5jbHVkZSAiTWVzc2FnZU5hbWVzLmgiCisjaW5jbHVkZSA8d3RmL0Zvcndh
cmQuaD4KKworCituYW1lc3BhY2UgTWVzc2FnZXMgeworbmFtZXNwYWNlIE5vbmUgeworCisKK30g
Ly8gbmFtZXNwYWNlIE5vbmUKK30gLy8gbmFtZXNwYWNlIE1lc3NhZ2VzCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvd2Via2l0L0xlZ2FjeU1lc3NhZ2VSZWNlaXZlci1leHBlY3RlZC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9MZWdhY3lNZXNzYWdl
UmVjZWl2ZXItZXhwZWN0ZWQuY3BwCShyZXZpc2lvbiAyNjEwMzgpCisrKyBTb3VyY2UvV2ViS2l0
L1NjcmlwdHMvd2Via2l0L0xlZ2FjeU1lc3NhZ2VSZWNlaXZlci1leHBlY3RlZC5jcHAJKG5vbmV4
aXN0ZW50KQpAQCAtMSwyMDMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMC0yMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycgQU5ECi0gKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSAqIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SCi0gKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSAq
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJj
b25maWcuaCIKLQotI2lmIChFTkFCTEUoV0VCS0lUMikgJiYgKE5FU1RFRF9NQVNURVJfQ09ORElU
SU9OIHx8IE1BU1RFUl9PUiAmJiBNQVNURVJfQU5EKSkKLQotI2luY2x1ZGUgIldlYlBhZ2UuaCIK
LQotI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCi0jaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgot
I2luY2x1ZGUgIkRlY29kZXIuaCIKLSNpZiBFTkFCTEUoREVQUkVDQVRFRF9GRUFUVVJFKSB8fCBF
TkFCTEUoRVhQRVJJTUVOVEFMX0ZFQVRVUkUpCi0jaW5jbHVkZSAiRHVtbXlUeXBlLmgiCi0jZW5k
aWYKLSNpbmNsdWRlICJIYW5kbGVNZXNzYWdlLmgiCi0jaWYgUExBVEZPUk0oTUFDKQotI2luY2x1
ZGUgIk1hY2hQb3J0LmgiCi0jZW5kaWYKLSNpbmNsdWRlICJQbHVnaW4uaCIKLSNpbmNsdWRlICJX
ZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKLSNpZiAoRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgKE5F
U1RFRF9NRVNTQUdFX0NPTkRJVElPTiAmJiBTT01FX09USEVSX01FU1NBR0VfQ09ORElUSU9OKSkg
fHwgKEVOQUJMRShUT1VDSF9FVkVOVFMpICYmIChORVNURURfTUVTU0FHRV9DT05ESVRJT04gfHwg
U09NRV9PVEhFUl9NRVNTQUdFX0NPTkRJVElPTikpCi0jaW5jbHVkZSAiV2ViRXZlbnQuaCIKLSNl
bmRpZgotI2luY2x1ZGUgIldlYlBhZ2VNZXNzYWdlcy5oIgotI2luY2x1ZGUgIldlYlByZWZlcmVu
Y2VzU3RvcmUuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXIuaD4KLSNpZiBQTEFU
Rk9STShNQUMpCi0jaW5jbHVkZSA8V2ViQ29yZS9LZXlib2FyZEV2ZW50Lmg+Ci0jZW5kaWYKLSNp
bmNsdWRlIDxXZWJDb3JlL1BsdWdpbkRhdGEuaD4KLSNpbmNsdWRlIDx1dGlsaXR5PgotI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgTWVzc2FnZXMgewotCi1uYW1lc3BhY2Ug
V2ViUGFnZSB7Ci0KLXZvaWQgR2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OnNlbmQoc3RkOjp1
bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mJiBlbmNvZGVyLCBJUEM6OkNvbm5lY3Rpb24mIGNvbm5l
Y3Rpb24sIGNvbnN0IElQQzo6Q29ubmVjdGlvbjo6SGFuZGxlJiBjb25uZWN0aW9uSGFuZGxlKQot
ewotICAgICplbmNvZGVyIDw8IGNvbm5lY3Rpb25IYW5kbGU7Ci0gICAgY29ubmVjdGlvbi5zZW5k
U3luY1JlcGx5KFdURk1vdmUoZW5jb2RlcikpOwotfQotCi12b2lkIFRlc3RNdWx0aXBsZUF0dHJp
YnV0ZXM6OnNlbmQoc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mJiBlbmNvZGVyLCBJUEM6
OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCi17Ci0gICAgY29ubmVjdGlvbi5zZW5kU3luY1JlcGx5
KFdURk1vdmUoZW5jb2RlcikpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJQYWdlCi0KLX0gLy8g
bmFtZXNwYWNlIE1lc3NhZ2VzCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi12b2lkIFdlYlBhZ2U6
OmRpZFJlY2VpdmVXZWJQYWdlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQ
Qzo6RGVjb2RlciYgZGVjb2RlcikKLXsKLSAgICBhdXRvIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKTsKLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQ
YWdlOjpMb2FkVVJMOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3Nh
Z2VzOjpXZWJQYWdlOjpMb2FkVVJMPihkZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6bG9hZFVSTCk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLSAgICBp
ZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkU29tZXRo
aW5nOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQ
YWdlOjpMb2FkU29tZXRoaW5nPihkZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6bG9hZFNvbWV0aGlu
Zyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYKLSNpZiAoRU5BQkxFKFRPVUNIX0VW
RU5UUykgJiYgKE5FU1RFRF9NRVNTQUdFX0NPTkRJVElPTiB8fCBTT01FX09USEVSX01FU1NBR0Vf
Q09ORElUSU9OKSkKLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpX
ZWJQYWdlOjpUb3VjaEV2ZW50OjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdl
PE1lc3NhZ2VzOjpXZWJQYWdlOjpUb3VjaEV2ZW50PihkZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6
dG91Y2hFdmVudCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYKLSNpZiAoRU5BQkxF
KFRPVUNIX0VWRU5UUykgJiYgKE5FU1RFRF9NRVNTQUdFX0NPTkRJVElPTiAmJiBTT01FX09USEVS
X01FU1NBR0VfQ09ORElUSU9OKSkKLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1l
c3NhZ2VzOjpXZWJQYWdlOjpBZGRFdmVudDo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxl
TWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6QWRkRXZlbnQ+KGRlY29kZXIsIHRoaXMsICZXZWJQ
YWdlOjphZGRFdmVudCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYKLSNpZiBFTkFC
TEUoVE9VQ0hfRVZFTlRTKQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2Fn
ZXM6OldlYlBhZ2U6OkxvYWRTb21ldGhpbmdFbHNlOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpo
YW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkU29tZXRoaW5nRWxzZT4oZGVjb2Rl
ciwgdGhpcywgJldlYlBhZ2U6OmxvYWRTb21ldGhpbmdFbHNlKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLSNlbmRpZgotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6
OldlYlBhZ2U6OkRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbjo6bmFtZSgpKSB7Ci0gICAgICAgIElQ
Qzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVjZWl2ZVBvbGljeURlY2lz
aW9uPihkZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09
IE1lc3NhZ2VzOjpXZWJQYWdlOjpDbG9zZTo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxl
TWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6Q2xvc2U+KGRlY29kZXIsIHRoaXMsICZXZWJQYWdl
OjpjbG9zZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKGRlY29kZXIubWVzc2Fn
ZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6UHJlZmVyZW5jZXNEaWRDaGFuZ2U6Om5hbWUo
KSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OlByZWZl
cmVuY2VzRGlkQ2hhbmdlPihkZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6cHJlZmVyZW5jZXNEaWRD
aGFuZ2UpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VO
YW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OlNlbmREb3VibGVBbmRGbG9hdDo6bmFtZSgpKSB7
Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6U2VuZERvdWJs
ZUFuZEZsb2F0PihkZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6c2VuZERvdWJsZUFuZEZsb2F0KTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09
IE1lc3NhZ2VzOjpXZWJQYWdlOjpTZW5kSW50czo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFu
ZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6U2VuZEludHM+KGRlY29kZXIsIHRoaXMsICZX
ZWJQYWdlOjpzZW5kSW50cyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKGRlY29k
ZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6VGVzdFBhcmFtZXRlckF0dHJp
YnV0ZXM6Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6Oldl
YlBhZ2U6OlRlc3RQYXJhbWV0ZXJBdHRyaWJ1dGVzPihkZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6
dGVzdFBhcmFtZXRlckF0dHJpYnV0ZXMpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlm
IChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OlRlbXBsYXRlVGVz
dDo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFn
ZTo6VGVtcGxhdGVUZXN0PihkZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6dGVtcGxhdGVUZXN0KTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09
IE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRWaWRlb0xheWVySUQ6Om5hbWUoKSkgewotICAgICAgICBJ
UEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OlNldFZpZGVvTGF5ZXJJRD4oZGVj
b2RlciwgdGhpcywgJldlYlBhZ2U6OnNldFZpZGVvTGF5ZXJJRCk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0jaWYgUExBVEZPUk0oTUFDKQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkg
PT0gTWVzc2FnZXM6OldlYlBhZ2U6OkRpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uOjpuYW1l
KCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRD
cmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbj4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OmRpZENy
ZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNlbmRp
ZgotI2lmIEVOQUJMRShERVBSRUNBVEVEX0ZFQVRVUkUpCi0gICAgaWYgKGRlY29kZXIubWVzc2Fn
ZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6RGVwcmVjYXRlZE9wZXJhdGlvbjo6bmFtZSgp
KSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6RGVwcmVj
YXRlZE9wZXJhdGlvbj4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OmRlcHJlY2F0ZWRPcGVyYXRp
b24pOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlmCi0jaWYgRU5BQkxFKEVYUEVSSU1F
TlRBTF9GRUFUVVJFKQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6
OldlYlBhZ2U6OkV4cGVyaW1lbnRhbE9wZXJhdGlvbjo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6
aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6RXhwZXJpbWVudGFsT3BlcmF0aW9uPihk
ZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6ZXhwZXJpbWVudGFsT3BlcmF0aW9uKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLSNlbmRpZgotICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsKLSAg
ICBVTlVTRURfUEFSQU0oZGVjb2Rlcik7Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0K
LXZvaWQgV2ViUGFnZTo6ZGlkUmVjZWl2ZVN5bmNXZWJQYWdlTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2Rlciwgc3RkOjp1bmlxdWVfcHRyPElQ
Qzo6RW5jb2Rlcj4mIHJlcGx5RW5jb2RlcikKLXsKLSAgICBhdXRvIHByb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKTsKLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2Vz
OjpXZWJQYWdlOjpDcmVhdGVQbHVnaW46Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1l
c3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OkNyZWF0ZVBsdWdpbj4oZGVjb2RlciwgKnJlcGx5RW5j
b2RlciwgdGhpcywgJldlYlBhZ2U6OmNyZWF0ZVBsdWdpbik7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6
UnVuSmF2YVNjcmlwdEFsZXJ0OjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdl
PE1lc3NhZ2VzOjpXZWJQYWdlOjpSdW5KYXZhU2NyaXB0QWxlcnQ+KGRlY29kZXIsICpyZXBseUVu
Y29kZXIsIHRoaXMsICZXZWJQYWdlOjpydW5KYXZhU2NyaXB0QWxlcnQpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6Oldl
YlBhZ2U6OkdldFBsdWdpbnM6Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8
TWVzc2FnZXM6OldlYlBhZ2U6OkdldFBsdWdpbnM+KGRlY29kZXIsICpyZXBseUVuY29kZXIsIHRo
aXMsICZXZWJQYWdlOjpnZXRQbHVnaW5zKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBp
ZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRQbHVnaW5Q
cm9jZXNzQ29ubmVjdGlvbjo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZVN5
bmNocm9ub3VzPE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbj4o
Y29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6Z2V0UGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb24pOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChk
ZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RNdWx0aXBsZUF0
dHJpYnV0ZXM6Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2VTeW5jaHJvbm91
c1dhbnRzQ29ubmVjdGlvbjxNZXNzYWdlczo6V2ViUGFnZTo6VGVzdE11bHRpcGxlQXR0cmlidXRl
cz4oY29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6dGVz
dE11bHRpcGxlQXR0cmlidXRlcyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jaWYgUExBVEZP
Uk0oTUFDKQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBh
Z2U6OkludGVycHJldEtleUV2ZW50OjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNz
YWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpJbnRlcnByZXRLZXlFdmVudD4oZGVjb2RlciwgKnJlcGx5
RW5jb2RlciwgdGhpcywgJldlYlBhZ2U6OmludGVycHJldEtleUV2ZW50KTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLSNlbmRpZgotICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsKLSAgICBV
TlVTRURfUEFSQU0oZGVjb2Rlcik7Ci0gICAgVU5VU0VEX1BBUkFNKHJlcGx5RW5jb2Rlcik7Ci0g
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0K
LSNlbmRpZiAvLyAoRU5BQkxFKFdFQktJVDIpICYmIChORVNURURfTUFTVEVSX0NPTkRJVElPTiB8
fCBNQVNURVJfT1IgJiYgTUFTVEVSX0FORCkpCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvd2Via2l0L0xlZ2FjeU1lc3NhZ2VSZWNlaXZlci1leHBlY3RlZC5jcHAK
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fXwpEZWxldGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0xICswLDAgIyMKLW5hdGl2ZQpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBTb3VyY2UvV2ViS2l0L1Njcmlw
dHMvd2Via2l0L0xlZ2FjeU1lc3NhZ2VzLWV4cGVjdGVkLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9TY3JpcHRzL3dlYmtpdC9MZWdhY3lNZXNzYWdlcy1leHBlY3RlZC5oCShyZXZpc2lv
biAyNjEwMzgpCisrKyBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L0xlZ2FjeU1lc3NhZ2Vz
LWV4cGVjdGVkLmgJKG5vbmV4aXN0ZW50KQpAQCAtMSw1NzAgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECi0gKiBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSAqIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwKLSAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0gKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotICogQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwKLSAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgKEVOQUJMRShXRUJLSVQyKSAmJiAoTkVTVEVEX01B
U1RFUl9DT05ESVRJT04gfHwgTUFTVEVSX09SICYmIE1BU1RFUl9BTkQpKQotCi0jaW5jbHVkZSAi
QXJndW1lbnRDb2RlcnMuaCIKLSNpbmNsdWRlICJDb25uZWN0aW9uLmgiCi0jaW5jbHVkZSAiUGx1
Z2luLmgiCi0jaW5jbHVkZSAiV2ViUGFnZU1lc3NhZ2VzUmVwbGllcy5oIgotI2luY2x1ZGUgPFdl
YkNvcmUvR3JhcGhpY3NMYXllci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvS2V5Ym9hcmRFdmVudC5o
PgotI2luY2x1ZGUgPFdlYkNvcmUvUGx1Z2luRGF0YS5oPgotI2luY2x1ZGUgPHV0aWxpdHk+Ci0j
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1
ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
LSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIElQQyB7Ci1jbGFz
cyBEdW1teVR5cGU7Ci1jbGFzcyBNYWNoUG9ydDsKLX0KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci1j
bGFzcyBXZWJQcmVmZXJlbmNlc1N0b3JlOwotY2xhc3MgV2ViVG91Y2hFdmVudDsKLX0KLQotbmFt
ZXNwYWNlIE1lc3NhZ2VzIHsKLW5hbWVzcGFjZSBXZWJQYWdlIHsKLQotc3RhdGljIGlubGluZSBJ
UEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lKCkKLXsKLSAgICByZXR1cm4g
SVBDOjpTdHJpbmdSZWZlcmVuY2UoIldlYlBhZ2UiKTsKLX0KLQotY2xhc3MgTG9hZFVSTCB7Ci1w
dWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGNvbnN0IFN0cmluZyY+IEFyZ3VtZW50czsK
LQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVy
biBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVu
Y2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJMb2FkVVJMIik7IH0KLSAg
ICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKLQotICAgIGV4cGxpY2l0IExvYWRV
UkwoY29uc3QgU3RyaW5nJiB1cmwpCi0gICAgICAgIDogbV9hcmd1bWVudHModXJsKQotICAgIHsK
LSAgICB9Ci0KLSAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewot
ICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3Vt
ZW50cyBtX2FyZ3VtZW50czsKLX07Ci0KLSNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQotY2xhc3Mg
TG9hZFNvbWV0aGluZyB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGNvbnN0IFN0
cmluZyY+IEFyZ3VtZW50czsKLQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNl
aXZlck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMg
SVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNl
KCJMb2FkU29tZXRoaW5nIik7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxz
ZTsKLQotICAgIGV4cGxpY2l0IExvYWRTb21ldGhpbmcoY29uc3QgU3RyaW5nJiB1cmwpCi0gICAg
ICAgIDogbV9hcmd1bWVudHModXJsKQotICAgIHsKLSAgICB9Ci0KLSAgICBjb25zdCBBcmd1bWVu
dHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7
Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKLX07Ci0jZW5k
aWYKLQotI2lmIChFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiAoTkVTVEVEX01FU1NBR0VfQ09ORElU
SU9OIHx8IFNPTUVfT1RIRVJfTUVTU0FHRV9DT05ESVRJT04pKQotY2xhc3MgVG91Y2hFdmVudCB7
Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGNvbnN0IFdlYktpdDo6V2ViVG91Y2hF
dmVudCY+IEFyZ3VtZW50czsKLQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNl
aXZlck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMg
SVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNl
KCJUb3VjaEV2ZW50Iik7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsK
LQotICAgIGV4cGxpY2l0IFRvdWNoRXZlbnQoY29uc3QgV2ViS2l0OjpXZWJUb3VjaEV2ZW50JiBl
dmVudCkKLSAgICAgICAgOiBtX2FyZ3VtZW50cyhldmVudCkKLSAgICB7Ci0gICAgfQotCi0gICAg
Y29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJu
IG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1bWVudHMgbV9hcmd1bWVu
dHM7Ci19OwotI2VuZGlmCi0KLSNpZiAoRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgKE5FU1RFRF9N
RVNTQUdFX0NPTkRJVElPTiAmJiBTT01FX09USEVSX01FU1NBR0VfQ09ORElUSU9OKSkKLWNsYXNz
IEFkZEV2ZW50IHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8Y29uc3QgV2ViS2l0
OjpXZWJUb3VjaEV2ZW50Jj4gQXJndW1lbnRzOwotCi0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVm
ZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsgfQot
ICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpTdHJp
bmdSZWZlcmVuY2UoIkFkZEV2ZW50Iik7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMg
PSBmYWxzZTsKLQotICAgIGV4cGxpY2l0IEFkZEV2ZW50KGNvbnN0IFdlYktpdDo6V2ViVG91Y2hF
dmVudCYgZXZlbnQpCi0gICAgICAgIDogbV9hcmd1bWVudHMoZXZlbnQpCi0gICAgewotICAgIH0K
LQotICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAg
IHJldHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1f
YXJndW1lbnRzOwotfTsKLSNlbmRpZgotCi0jaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLWNsYXNz
IExvYWRTb21ldGhpbmdFbHNlIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8Y29u
c3QgU3RyaW5nJj4gQXJndW1lbnRzOwotCi0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNl
IHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsgfQotICAgIHN0
YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpTdHJpbmdSZWZl
cmVuY2UoIkxvYWRTb21ldGhpbmdFbHNlIik7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5
bmMgPSBmYWxzZTsKLQotICAgIGV4cGxpY2l0IExvYWRTb21ldGhpbmdFbHNlKGNvbnN0IFN0cmlu
ZyYgdXJsKQotICAgICAgICA6IG1fYXJndW1lbnRzKHVybCkKLSAgICB7Ci0gICAgfQotCi0gICAg
Y29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJu
IG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1bWVudHMgbV9hcmd1bWVu
dHM7Ci19OwotI2VuZGlmCi0KLWNsYXNzIERpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbiB7Ci1wdWJs
aWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPHVpbnQ2NF90LCB1aW50NjRfdCwgdWludDMyX3Q+
IEFyZ3VtZW50czsKLQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5h
bWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpT
dHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJEaWRS
ZWNlaXZlUG9saWN5RGVjaXNpb24iKTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9
IGZhbHNlOwotCi0gICAgRGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKHVpbnQ2NF90IGZyYW1lSUQs
IHVpbnQ2NF90IGxpc3RlbmVySUQsIHVpbnQzMl90IHBvbGljeUFjdGlvbikKLSAgICAgICAgOiBt
X2FyZ3VtZW50cyhmcmFtZUlELCBsaXN0ZW5lcklELCBwb2xpY3lBY3Rpb24pCi0gICAgewotICAg
IH0KLQotICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1lbnRz
IG1fYXJndW1lbnRzOwotfTsKLQotY2xhc3MgQ2xvc2UgewotcHVibGljOgotICAgIHR5cGVkZWYg
c3RkOjp0dXBsZTw+IEFyZ3VtZW50czsKLQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5j
ZSByZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBz
dGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVm
ZXJlbmNlKCJDbG9zZSIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7
Ci0KLSAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewotICAgICAg
ICByZXR1cm4gbV9hcmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBt
X2FyZ3VtZW50czsKLX07Ci0KLWNsYXNzIFByZWZlcmVuY2VzRGlkQ2hhbmdlIHsKLXB1YmxpYzoK
LSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8Y29uc3QgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3Jl
Jj4gQXJndW1lbnRzOwotCi0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVy
TmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsgfQotICAgIHN0YXRpYyBJUEM6
OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIlBy
ZWZlcmVuY2VzRGlkQ2hhbmdlIik7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBm
YWxzZTsKLQotICAgIGV4cGxpY2l0IFByZWZlcmVuY2VzRGlkQ2hhbmdlKGNvbnN0IFdlYktpdDo6
V2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUpCi0gICAgICAgIDogbV9hcmd1bWVudHMoc3RvcmUp
Ci0gICAgewotICAgIH0KLQotICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QK
LSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0KLXByaXZhdGU6Ci0g
ICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLQotY2xhc3MgU2VuZERvdWJsZUFuZEZsb2F0
IHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8ZG91YmxlLCBmbG9hdD4gQXJndW1l
bnRzOwotCi0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsg
cmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsgfQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1Jl
ZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIlNlbmREb3VibGVB
bmRGbG9hdCIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7Ci0KLSAg
ICBTZW5kRG91YmxlQW5kRmxvYXQoZG91YmxlIGQsIGZsb2F0IGYpCi0gICAgICAgIDogbV9hcmd1
bWVudHMoZCwgZikKLSAgICB7Ci0gICAgfQotCi0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVu
dHMoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQot
cHJpdmF0ZToKLSAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19OwotCi1jbGFzcyBTZW5kSW50
cyB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGNvbnN0IFZlY3Rvcjx1aW50NjRf
dD4mLCBjb25zdCBWZWN0b3I8VmVjdG9yPHVpbnQ2NF90Pj4mPiBBcmd1bWVudHM7Ci0KLSAgICBz
dGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUo
KSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiU2VuZEludHMiKTsgfQotICAgIHN0YXRp
YyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOwotCi0gICAgU2VuZEludHMoY29uc3QgVmVjdG9y
PHVpbnQ2NF90PiYgaW50cywgY29uc3QgVmVjdG9yPFZlY3Rvcjx1aW50NjRfdD4+JiBpbnRWZWN0
b3JzKQotICAgICAgICA6IG1fYXJndW1lbnRzKGludHMsIGludFZlY3RvcnMpCi0gICAgewotICAg
IH0KLQotICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1lbnRz
IG1fYXJndW1lbnRzOwotfTsKLQotY2xhc3MgQ3JlYXRlUGx1Z2luIHsKLXB1YmxpYzoKLSAgICB0
eXBlZGVmIHN0ZDo6dHVwbGU8dWludDY0X3QsIGNvbnN0IFdlYktpdDo6UGx1Z2luOjpQYXJhbWV0
ZXJzJj4gQXJndW1lbnRzOwotCi0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2Vp
dmVyTmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsgfQotICAgIHN0YXRpYyBJ
UEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2Uo
IkNyZWF0ZVBsdWdpbiIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gdHJ1ZTsK
LQotICAgIHVzaW5nIFJlcGx5ID0gc3RkOjp0dXBsZTxib29sJj47Ci0gICAgdXNpbmcgUmVwbHlB
cmd1bWVudHMgPSBzdGQ6OnR1cGxlPGJvb2w+OwotICAgIENyZWF0ZVBsdWdpbih1aW50NjRfdCBw
bHVnaW5JbnN0YW5jZUlELCBjb25zdCBXZWJLaXQ6OlBsdWdpbjo6UGFyYW1ldGVycyYgcGFyYW1l
dGVycykKLSAgICAgICAgOiBtX2FyZ3VtZW50cyhwbHVnaW5JbnN0YW5jZUlELCBwYXJhbWV0ZXJz
KQotICAgIHsKLSAgICB9Ci0KLSAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0
Ci0gICAgewotICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRlOgot
ICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKLX07Ci0KLWNsYXNzIFJ1bkphdmFTY3JpcHRBbGVy
dCB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPHVpbnQ2NF90LCBjb25zdCBTdHJp
bmcmPiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2
ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGljIElQ
Qzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgi
UnVuSmF2YVNjcmlwdEFsZXJ0Iik7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSB0
cnVlOwotCi0gICAgdXNpbmcgUmVwbHkgPSBzdGQ6OnR1cGxlPD47Ci0gICAgdXNpbmcgUmVwbHlB
cmd1bWVudHMgPSBzdGQ6OnR1cGxlPD47Ci0gICAgUnVuSmF2YVNjcmlwdEFsZXJ0KHVpbnQ2NF90
IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKLSAgICAgICAgOiBtX2FyZ3VtZW50cyhm
cmFtZUlELCBtZXNzYWdlKQotICAgIHsKLSAgICB9Ci0KLSAgICBjb25zdCBBcmd1bWVudHMmIGFy
Z3VtZW50cygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7Ci0gICAg
fQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKLX07Ci0KLWNsYXNzIEdl
dFBsdWdpbnMgewotcHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxib29sPiBBcmd1bWVu
dHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyBy
ZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVm
ZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiR2V0UGx1Z2lucyIp
OyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gdHJ1ZTsKLQotICAgIHVzaW5nIFJl
cGx5ID0gc3RkOjp0dXBsZTxWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4mPjsKLSAgICB1c2lu
ZyBSZXBseUFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8VmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+
PjsKLSAgICBleHBsaWNpdCBHZXRQbHVnaW5zKGJvb2wgcmVmcmVzaCkKLSAgICAgICAgOiBtX2Fy
Z3VtZW50cyhyZWZyZXNoKQotICAgIHsKLSAgICB9Ci0KLSAgICBjb25zdCBBcmd1bWVudHMmIGFy
Z3VtZW50cygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7Ci0gICAg
fQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKLX07Ci0KLWNsYXNzIEdl
dFBsdWdpblByb2Nlc3NDb25uZWN0aW9uIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVw
bGU8Y29uc3QgU3RyaW5nJj4gQXJndW1lbnRzOwotCi0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVm
ZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsgfQot
ICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpTdHJp
bmdSZWZlcmVuY2UoIkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uIik7IH0KLSAgICBzdGF0aWMg
Y29uc3QgYm9vbCBpc1N5bmMgPSB0cnVlOwotCi0gICAgdXNpbmcgRGVsYXllZFJlcGx5ID0gR2V0
UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25EZWxheWVkUmVwbHk7Ci0gICAgc3RhdGljIHZvaWQgc2Vu
ZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYmLCBJUEM6OkNvbm5lY3Rpb24mLCBjb25z
dCBJUEM6OkNvbm5lY3Rpb246OkhhbmRsZSYgY29ubmVjdGlvbkhhbmRsZSk7Ci0gICAgdXNpbmcg
UmVwbHkgPSBzdGQ6OnR1cGxlPElQQzo6Q29ubmVjdGlvbjo6SGFuZGxlJj47Ci0gICAgdXNpbmcg
UmVwbHlBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPElQQzo6Q29ubmVjdGlvbjo6SGFuZGxlPjsKLSAg
ICBleHBsaWNpdCBHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbihjb25zdCBTdHJpbmcmIHBsdWdp
blBhdGgpCi0gICAgICAgIDogbV9hcmd1bWVudHMocGx1Z2luUGF0aCkKLSAgICB7Ci0gICAgfQot
Ci0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsKLSAgICAgICAg
cmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1bWVudHMgbV9h
cmd1bWVudHM7Ci19OwotCi1jbGFzcyBUZXN0TXVsdGlwbGVBdHRyaWJ1dGVzIHsKLXB1YmxpYzoK
LSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8PiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpT
dHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFt
ZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJ
UEM6OlN0cmluZ1JlZmVyZW5jZSgiVGVzdE11bHRpcGxlQXR0cmlidXRlcyIpOyB9Ci0gICAgc3Rh
dGljIGNvbnN0IGJvb2wgaXNTeW5jID0gdHJ1ZTsKLQotICAgIHVzaW5nIERlbGF5ZWRSZXBseSA9
IFRlc3RNdWx0aXBsZUF0dHJpYnV0ZXNEZWxheWVkUmVwbHk7Ci0gICAgc3RhdGljIHZvaWQgc2Vu
ZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYmLCBJUEM6OkNvbm5lY3Rpb24mKTsKLSAg
ICB1c2luZyBSZXBseSA9IHN0ZDo6dHVwbGU8PjsKLSAgICB1c2luZyBSZXBseUFyZ3VtZW50cyA9
IHN0ZDo6dHVwbGU8PjsKLSAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0g
ICAgewotICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRlOgotICAg
IEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKLX07Ci0KLWNsYXNzIFRlc3RQYXJhbWV0ZXJBdHRyaWJ1
dGVzIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8dWludDY0X3QsIGRvdWJsZSwg
ZG91YmxlPiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVj
ZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGlj
IElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5j
ZSgiVGVzdFBhcmFtZXRlckF0dHJpYnV0ZXMiKTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlz
U3luYyA9IGZhbHNlOwotCi0gICAgVGVzdFBhcmFtZXRlckF0dHJpYnV0ZXModWludDY0X3QgZm9v
LCBkb3VibGUgYmFyLCBkb3VibGUgYmF6KQotICAgICAgICA6IG1fYXJndW1lbnRzKGZvbywgYmFy
LCBiYXopCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkg
Y29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0KLXByaXZh
dGU6Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLQotY2xhc3MgVGVtcGxhdGVUZXN0
IHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8Y29uc3QgSGFzaE1hcDxTdHJpbmcs
IHN0ZDo6cGFpcjxTdHJpbmcsIHVpbnQ2NF90Pj4mPiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0aWMg
SVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2Vp
dmVyTmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJl
dHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiVGVtcGxhdGVUZXN0Iik7IH0KLSAgICBzdGF0aWMg
Y29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKLQotICAgIGV4cGxpY2l0IFRlbXBsYXRlVGVzdChj
b25zdCBIYXNoTWFwPFN0cmluZywgc3RkOjpwYWlyPFN0cmluZywgdWludDY0X3Q+PiYgYSkKLSAg
ICAgICAgOiBtX2FyZ3VtZW50cyhhKQotICAgIHsKLSAgICB9Ci0KLSAgICBjb25zdCBBcmd1bWVu
dHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7
Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKLX07Ci0KLWNs
YXNzIFNldFZpZGVvTGF5ZXJJRCB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGNv
bnN0IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRCY+IEFyZ3VtZW50czsK
LQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVy
biBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVu
Y2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJTZXRWaWRlb0xheWVySUQi
KTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOwotCi0gICAgZXhwbGlj
aXQgU2V0VmlkZW9MYXllcklEKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OlBsYXRmb3Jt
TGF5ZXJJRCYgdmlkZW9MYXllcklEKQotICAgICAgICA6IG1fYXJndW1lbnRzKHZpZGVvTGF5ZXJJ
RCkKLSAgICB7Ci0gICAgfQotCi0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25z
dAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToK
LSAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19OwotCi0jaWYgUExBVEZPUk0oTUFDKQotY2xh
c3MgRGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24gewotcHVibGljOgotICAgIHR5cGVkZWYg
c3RkOjp0dXBsZTxjb25zdCBJUEM6Ok1hY2hQb3J0Jj4gQXJndW1lbnRzOwotCi0gICAgc3RhdGlj
IElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNl
aXZlck5hbWUoKTsgfQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyBy
ZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIkRpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9u
Iik7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKLQotICAgIGV4cGxp
Y2l0IERpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKGNvbnN0IElQQzo6TWFjaFBvcnQmIGNv
bm5lY3Rpb25JZGVudGlmaWVyKQotICAgICAgICA6IG1fYXJndW1lbnRzKGNvbm5lY3Rpb25JZGVu
dGlmaWVyKQotICAgIHsKLSAgICB9Ci0KLSAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygp
IGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7Ci0gICAgfQotCi1wcml2
YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKLX07Ci0jZW5kaWYKLQotI2lmIFBMQVRG
T1JNKE1BQykKLWNsYXNzIEludGVycHJldEtleUV2ZW50IHsKLXB1YmxpYzoKLSAgICB0eXBlZGVm
IHN0ZDo6dHVwbGU8dWludDMyX3Q+IEFyZ3VtZW50czsKLQotICAgIHN0YXRpYyBJUEM6OlN0cmlu
Z1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7
IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6
U3RyaW5nUmVmZXJlbmNlKCJJbnRlcnByZXRLZXlFdmVudCIpOyB9Ci0gICAgc3RhdGljIGNvbnN0
IGJvb2wgaXNTeW5jID0gdHJ1ZTsKLQotICAgIHVzaW5nIFJlcGx5ID0gc3RkOjp0dXBsZTxWZWN0
b3I8V2ViQ29yZTo6S2V5cHJlc3NDb21tYW5kPiY+OwotICAgIHVzaW5nIFJlcGx5QXJndW1lbnRz
ID0gc3RkOjp0dXBsZTxWZWN0b3I8V2ViQ29yZTo6S2V5cHJlc3NDb21tYW5kPj47Ci0gICAgZXhw
bGljaXQgSW50ZXJwcmV0S2V5RXZlbnQodWludDMyX3QgdHlwZSkKLSAgICAgICAgOiBtX2FyZ3Vt
ZW50cyh0eXBlKQotICAgIHsKLSAgICB9Ci0KLSAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50
cygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7Ci0gICAgfQotCi1w
cml2YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKLX07Ci0jZW5kaWYKLQotI2lmIEVO
QUJMRShERVBSRUNBVEVEX0ZFQVRVUkUpCi1jbGFzcyBEZXByZWNhdGVkT3BlcmF0aW9uIHsKLXB1
YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8Y29uc3QgSVBDOjpEdW1teVR5cGUmPiBBcmd1
bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkg
eyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6U3RyaW5n
UmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiRGVwcmVjYXRl
ZE9wZXJhdGlvbiIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7Ci0K
LSAgICBleHBsaWNpdCBEZXByZWNhdGVkT3BlcmF0aW9uKGNvbnN0IElQQzo6RHVtbXlUeXBlJiBk
dW1teSkKLSAgICAgICAgOiBtX2FyZ3VtZW50cyhkdW1teSkKLSAgICB7Ci0gICAgfQotCi0gICAg
Y29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJu
IG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1bWVudHMgbV9hcmd1bWVu
dHM7Ci19OwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoRVhQRVJJTUVOVEFMX0ZFQVRVUkUpCi1jbGFz
cyBFeHBlcmltZW50YWxPcGVyYXRpb24gewotcHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBs
ZTxjb25zdCBJUEM6OkR1bW15VHlwZSY+IEFyZ3VtZW50czsKLQotICAgIHN0YXRpYyBJUEM6OlN0
cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1l
KCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQ
Qzo6U3RyaW5nUmVmZXJlbmNlKCJFeHBlcmltZW50YWxPcGVyYXRpb24iKTsgfQotICAgIHN0YXRp
YyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOwotCi0gICAgZXhwbGljaXQgRXhwZXJpbWVudGFs
T3BlcmF0aW9uKGNvbnN0IElQQzo6RHVtbXlUeXBlJiBkdW1teSkKLSAgICAgICAgOiBtX2FyZ3Vt
ZW50cyhkdW1teSkKLSAgICB7Ci0gICAgfQotCi0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVu
dHMoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQot
cHJpdmF0ZToKLSAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19OwotI2VuZGlmCi0KLX0gLy8g
bmFtZXNwYWNlIFdlYlBhZ2UKLX0gLy8gbmFtZXNwYWNlIE1lc3NhZ2VzCi0KLSNlbmRpZiAvLyAo
RU5BQkxFKFdFQktJVDIpICYmIChORVNURURfTUFTVEVSX0NPTkRJVElPTiB8fCBNQVNURVJfT1Ig
JiYgTUFTVEVSX0FORCkpCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV2ViS2l0L1Njcmlw
dHMvd2Via2l0L0xlZ2FjeU1lc3NhZ2VzLWV4cGVjdGVkLmgKX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBz
dm46ZW9sLXN0eWxlCiMjIC0xICswLDAgIyMKLW5hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IHByb3BlcnR5CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L0xlZ2FjeU1lc3Nh
Z2VzUmVwbGllcy1leHBlY3RlZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2NyaXB0
cy93ZWJraXQvTGVnYWN5TWVzc2FnZXNSZXBsaWVzLWV4cGVjdGVkLmgJKHJldmlzaW9uIDI2MTAz
OCkKKysrIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvTGVnYWN5TWVzc2FnZXNSZXBsaWVz
LWV4cGVjdGVkLmgJKG5vbmV4aXN0ZW50KQpAQCAtMSw0MyArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDEwLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKLSAqIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
Ci0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgotICogQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TAotICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0gKiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLAotICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiAoRU5BQkxFKFdFQktJVDIpICYmIChORVNURURfTUFT
VEVSX0NPTkRJVElPTiB8fCBNQVNURVJfT1IgJiYgTUFTVEVSX0FORCkpCi0KLSNpbmNsdWRlICJD
b25uZWN0aW9uLmgiCi0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLQotCi1uYW1lc3BhY2UgTWVz
c2FnZXMgewotbmFtZXNwYWNlIFdlYlBhZ2UgewotCi11c2luZyBHZXRQbHVnaW5Qcm9jZXNzQ29u
bmVjdGlvbkRlbGF5ZWRSZXBseSA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpD
b25uZWN0aW9uOjpIYW5kbGUmIGNvbm5lY3Rpb25IYW5kbGUpPjsKLQotdXNpbmcgVGVzdE11bHRp
cGxlQXR0cmlidXRlc0RlbGF5ZWRSZXBseSA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT47Ci0K
LX0gLy8gbmFtZXNwYWNlIFdlYlBhZ2UKLX0gLy8gbmFtZXNwYWNlIE1lc3NhZ2VzCi0KLSNlbmRp
ZiAvLyAoRU5BQkxFKFdFQktJVDIpICYmIChORVNURURfTUFTVEVSX0NPTkRJVElPTiB8fCBNQVNU
RVJfT1IgJiYgTUFTVEVSX0FORCkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0
L01lc3NhZ2VSZWNlaXZlci1leHBlY3RlZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9TY3JpcHRzL3dlYmtpdC9NZXNzYWdlUmVjZWl2ZXItZXhwZWN0ZWQuY3BwCShyZXZpc2lvbiAy
NjEwMzgpCisrKyBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L01lc3NhZ2VSZWNlaXZlci1l
eHBlY3RlZC5jcHAJKG5vbmV4aXN0ZW50KQpAQCAtMSwyMDMgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECi0gKiBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSAqIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwKLSAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0gKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotICogQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwKLSAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lmIChFTkFCTEUoV0VCS0lUMikgJiYgKE5F
U1RFRF9NQVNURVJfQ09ORElUSU9OIHx8IE1BU1RFUl9PUiAmJiBNQVNURVJfQU5EKSkKLQotI2lu
Y2x1ZGUgIldlYlBhZ2UuaCIKLQotI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCi0jaW5jbHVk
ZSAiQ29ubmVjdGlvbi5oIgotI2luY2x1ZGUgIkRlY29kZXIuaCIKLSNpZiBFTkFCTEUoREVQUkVD
QVRFRF9GRUFUVVJFKSB8fCBFTkFCTEUoRVhQRVJJTUVOVEFMX0ZFQVRVUkUpCi0jaW5jbHVkZSAi
RHVtbXlUeXBlLmgiCi0jZW5kaWYKLSNpbmNsdWRlICJIYW5kbGVNZXNzYWdlLmgiCi0jaWYgUExB
VEZPUk0oTUFDKQotI2luY2x1ZGUgIk1hY2hQb3J0LmgiCi0jZW5kaWYKLSNpbmNsdWRlICJQbHVn
aW4uaCIKLSNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKLSNpZiAoRU5BQkxFKFRP
VUNIX0VWRU5UUykgJiYgKE5FU1RFRF9NRVNTQUdFX0NPTkRJVElPTiAmJiBTT01FX09USEVSX01F
U1NBR0VfQ09ORElUSU9OKSkgfHwgKEVOQUJMRShUT1VDSF9FVkVOVFMpICYmIChORVNURURfTUVT
U0FHRV9DT05ESVRJT04gfHwgU09NRV9PVEhFUl9NRVNTQUdFX0NPTkRJVElPTikpCi0jaW5jbHVk
ZSAiV2ViRXZlbnQuaCIKLSNlbmRpZgotI2luY2x1ZGUgIldlYlBhZ2VNZXNzYWdlcy5oIgotI2lu
Y2x1ZGUgIldlYlByZWZlcmVuY2VzU3RvcmUuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNz
TGF5ZXIuaD4KLSNpZiBQTEFURk9STShNQUMpCi0jaW5jbHVkZSA8V2ViQ29yZS9LZXlib2FyZEV2
ZW50Lmg+Ci0jZW5kaWYKLSNpbmNsdWRlIDxXZWJDb3JlL1BsdWdpbkRhdGEuaD4KLSNpbmNsdWRl
IDx1dGlsaXR5PgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgTWVzc2Fn
ZXMgewotCi1uYW1lc3BhY2UgV2ViUGFnZSB7Ci0KLXZvaWQgR2V0UGx1Z2luUHJvY2Vzc0Nvbm5l
Y3Rpb246OnNlbmQoc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mJiBlbmNvZGVyLCBJUEM6
OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IElQQzo6Q29ubmVjdGlvbjo6SGFuZGxlJiBj
b25uZWN0aW9uSGFuZGxlKQotewotICAgICplbmNvZGVyIDw8IGNvbm5lY3Rpb25IYW5kbGU7Ci0g
ICAgY29ubmVjdGlvbi5zZW5kU3luY1JlcGx5KFdURk1vdmUoZW5jb2RlcikpOwotfQotCi12b2lk
IFRlc3RNdWx0aXBsZUF0dHJpYnV0ZXM6OnNlbmQoc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rl
cj4mJiBlbmNvZGVyLCBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCi17Ci0gICAgY29ubmVj
dGlvbi5zZW5kU3luY1JlcGx5KFdURk1vdmUoZW5jb2RlcikpOwotfQotCi19IC8vIG5hbWVzcGFj
ZSBXZWJQYWdlCi0KLX0gLy8gbmFtZXNwYWNlIE1lc3NhZ2VzCi0KLW5hbWVzcGFjZSBXZWJLaXQg
ewotCi12b2lkIFdlYlBhZ2U6OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29u
bmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQotewotICAgIGF1dG8gcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpOwotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVz
c2FnZXM6OldlYlBhZ2U6OkxvYWRVUkw6Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1l
c3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRVUkw+KGRlY29kZXIsIHRoaXMsICZXZWJQYWdl
Ojpsb2FkVVJMKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNpZiBFTkFCTEUoVE9VQ0hfRVZF
TlRTKQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6
OkxvYWRTb21ldGhpbmc6Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVz
c2FnZXM6OldlYlBhZ2U6OkxvYWRTb21ldGhpbmc+KGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjps
b2FkU29tZXRoaW5nKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNlbmRpZgotI2lmIChFTkFC
TEUoVE9VQ0hfRVZFTlRTKSAmJiAoTkVTVEVEX01FU1NBR0VfQ09ORElUSU9OIHx8IFNPTUVfT1RI
RVJfTUVTU0FHRV9DT05ESVRJT04pKQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0g
TWVzc2FnZXM6OldlYlBhZ2U6OlRvdWNoRXZlbnQ6Om5hbWUoKSkgewotICAgICAgICBJUEM6Omhh
bmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OlRvdWNoRXZlbnQ+KGRlY29kZXIsIHRoaXMs
ICZXZWJQYWdlOjp0b3VjaEV2ZW50KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNlbmRpZgot
I2lmIChFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiAoTkVTVEVEX01FU1NBR0VfQ09ORElUSU9OICYm
IFNPTUVfT1RIRVJfTUVTU0FHRV9DT05ESVRJT04pKQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VO
YW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OkFkZEV2ZW50OjpuYW1lKCkpIHsKLSAgICAgICAg
SVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpBZGRFdmVudD4oZGVjb2Rlciwg
dGhpcywgJldlYlBhZ2U6OmFkZEV2ZW50KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNlbmRp
ZgotI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCi0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUo
KSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFNvbWV0aGluZ0Vsc2U6Om5hbWUoKSkgewotICAg
ICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRTb21ldGhpbmdF
bHNlPihkZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6bG9hZFNvbWV0aGluZ0Vsc2UpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotI2VuZGlmCi0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9
PSBNZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uOjpuYW1lKCkpIHsK
LSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZWNlaXZl
UG9saWN5RGVjaXNpb24+KGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjpkaWRSZWNlaXZlUG9saWN5
RGVjaXNpb24pOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChkZWNvZGVyLm1lc3Nh
Z2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OkNsb3NlOjpuYW1lKCkpIHsKLSAgICAgICAg
SVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpDbG9zZT4oZGVjb2RlciwgdGhp
cywgJldlYlBhZ2U6OmNsb3NlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoZGVj
b2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpQcmVmZXJlbmNlc0RpZENo
YW5nZTo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2Vi
UGFnZTo6UHJlZmVyZW5jZXNEaWRDaGFuZ2U+KGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjpwcmVm
ZXJlbmNlc0RpZENoYW5nZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKGRlY29k
ZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6U2VuZERvdWJsZUFuZEZsb2F0
OjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdl
OjpTZW5kRG91YmxlQW5kRmxvYXQ+KGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjpzZW5kRG91Ymxl
QW5kRmxvYXQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChkZWNvZGVyLm1lc3Nh
Z2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OlNlbmRJbnRzOjpuYW1lKCkpIHsKLSAgICAg
ICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpTZW5kSW50cz4oZGVjb2Rl
ciwgdGhpcywgJldlYlBhZ2U6OnNlbmRJbnRzKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAg
ICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0UGFy
YW1ldGVyQXR0cmlidXRlczo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxN
ZXNzYWdlczo6V2ViUGFnZTo6VGVzdFBhcmFtZXRlckF0dHJpYnV0ZXM+KGRlY29kZXIsIHRoaXMs
ICZXZWJQYWdlOjp0ZXN0UGFyYW1ldGVyQXR0cmlidXRlcyk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6
VGVtcGxhdGVUZXN0OjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3Nh
Z2VzOjpXZWJQYWdlOjpUZW1wbGF0ZVRlc3Q+KGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjp0ZW1w
bGF0ZVRlc3QpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChkZWNvZGVyLm1lc3Nh
Z2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OlNldFZpZGVvTGF5ZXJJRDo6bmFtZSgpKSB7
Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6U2V0VmlkZW9M
YXllcklEPihkZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6c2V0VmlkZW9MYXllcklEKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLSNpZiBQTEFURk9STShNQUMpCi0gICAgaWYgKGRlY29kZXIubWVz
c2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6RGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5l
Y3Rpb246Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6Oldl
YlBhZ2U6OkRpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uPihkZWNvZGVyLCB0aGlzLCAmV2Vi
UGFnZTo6ZGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24pOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotI2VuZGlmCi0jaWYgRU5BQkxFKERFUFJFQ0FURURfRkVBVFVSRSkKLSAgICBpZiAoZGVj
b2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpEZXByZWNhdGVkT3BlcmF0
aW9uOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQ
YWdlOjpEZXByZWNhdGVkT3BlcmF0aW9uPihkZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6ZGVwcmVj
YXRlZE9wZXJhdGlvbik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYKLSNpZiBFTkFC
TEUoRVhQRVJJTUVOVEFMX0ZFQVRVUkUpCi0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9
PSBNZXNzYWdlczo6V2ViUGFnZTo6RXhwZXJpbWVudGFsT3BlcmF0aW9uOjpuYW1lKCkpIHsKLSAg
ICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpFeHBlcmltZW50YWxP
cGVyYXRpb24+KGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjpleHBlcmltZW50YWxPcGVyYXRpb24p
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlmCi0gICAgVU5VU0VEX1BBUkFNKGNvbm5l
Y3Rpb24pOwotICAgIFVOVVNFRF9QQVJBTShkZWNvZGVyKTsKLSAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLX0KLQotdm9pZCBXZWJQYWdlOjpkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0
cjxJUEM6OkVuY29kZXI+JiByZXBseUVuY29kZXIpCi17Ci0gICAgYXV0byBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyk7Ci0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNz
YWdlczo6V2ViUGFnZTo6Q3JlYXRlUGx1Z2luOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5k
bGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpDcmVhdGVQbHVnaW4+KGRlY29kZXIsICpyZXBs
eUVuY29kZXIsIHRoaXMsICZXZWJQYWdlOjpjcmVhdGVQbHVnaW4pOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBh
Z2U6OlJ1bkphdmFTY3JpcHRBbGVydDo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVz
c2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6UnVuSmF2YVNjcmlwdEFsZXJ0PihkZWNvZGVyLCAqcmVw
bHlFbmNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6cnVuSmF2YVNjcmlwdEFsZXJ0KTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2Vz
OjpXZWJQYWdlOjpHZXRQbHVnaW5zOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNz
YWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRQbHVnaW5zPihkZWNvZGVyLCAqcmVwbHlFbmNvZGVy
LCB0aGlzLCAmV2ViUGFnZTo6Z2V0UGx1Z2lucyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0g
ICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6R2V0UGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb246Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3Nh
Z2VTeW5jaHJvbm91czxNZXNzYWdlczo6V2ViUGFnZTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rp
b24+KGNvbm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5RW5jb2RlciwgdGhpcywgJldlYlBhZ2U6Omdl
dFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBp
ZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0TXVsdGlw
bGVBdHRyaWJ1dGVzOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlU3luY2hy
b25vdXNXYW50c0Nvbm5lY3Rpb248TWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RNdWx0aXBsZUF0dHJp
YnV0ZXM+KGNvbm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5RW5jb2RlciwgdGhpcywgJldlYlBhZ2U6
OnRlc3RNdWx0aXBsZUF0dHJpYnV0ZXMpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2lmIFBM
QVRGT1JNKE1BQykKLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpX
ZWJQYWdlOjpJbnRlcnByZXRLZXlFdmVudDo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxl
TWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6SW50ZXJwcmV0S2V5RXZlbnQ+KGRlY29kZXIsICpy
ZXBseUVuY29kZXIsIHRoaXMsICZXZWJQYWdlOjppbnRlcnByZXRLZXlFdmVudCk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0jZW5kaWYKLSAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7Ci0g
ICAgVU5VU0VEX1BBUkFNKGRlY29kZXIpOwotICAgIFVOVVNFRF9QQVJBTShyZXBseUVuY29kZXIp
OwotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQK
LQotCi0jZW5kaWYgLy8gKEVOQUJMRShXRUJLSVQyKSAmJiAoTkVTVEVEX01BU1RFUl9DT05ESVRJ
T04gfHwgTUFTVEVSX09SICYmIE1BU1RFUl9BTkQpKQoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291
cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9NZXNzYWdlUmVjZWl2ZXItZXhwZWN0ZWQuY3BwCl9f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX18KRGVsZXRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMSArMCwwICMjCi1uYXRpdmUKXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogU291cmNlL1dlYktpdC9TY3JpcHRz
L3dlYmtpdC9NZXNzYWdlUmVjZWl2ZXJTdXBlcmNsYXNzLWV4cGVjdGVkLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L01lc3NhZ2VSZWNlaXZlclN1cGVyY2xh
c3MtZXhwZWN0ZWQuY3BwCShyZXZpc2lvbiAyNjEwMzgpCisrKyBTb3VyY2UvV2ViS2l0L1Njcmlw
dHMvd2Via2l0L01lc3NhZ2VSZWNlaXZlclN1cGVyY2xhc3MtZXhwZWN0ZWQuY3BwCShub25leGlz
dGVudCkKQEAgLTEsMTg5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnIEFORAotICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
LSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0gKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0gKiBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUgotICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0gKiBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0KLSNpbmNsdWRlICJXZWJQYWdlLmgiCi0KLSNpbmNsdWRlICJBcmd1bWVudENvZGVy
cy5oIgotI2luY2x1ZGUgIkRlY29kZXIuaCIKLSNpbmNsdWRlICJIYW5kbGVNZXNzYWdlLmgiCi0j
aW5jbHVkZSAiVGVzdENsYXNzTmFtZS5oIgotI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCi0jaW5j
bHVkZSAiVGVzdFR3b1N0YXRlRW51bS5oIgotI2VuZGlmCi0jaW5jbHVkZSAiV2ViUGFnZU1lc3Nh
Z2VzLmgiCi0jaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBNZXNzYWdlcyB7Ci0KLW5hbWVzcGFjZSBXZWJQYWdlIHsK
LQotI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCi0KLXZvaWQgVGVzdEFzeW5jTWVzc2FnZTo6Y2Fs
bFJlcGx5KElQQzo6RGVjb2RlciYgZGVjb2RlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50
NjRfdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAgICBPcHRpb25hbDx1aW50NjRfdD4g
cmVzdWx0OwotICAgIGRlY29kZXIgPj4gcmVzdWx0OwotICAgIGlmICghcmVzdWx0KSB7Ci0gICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICBjYW5jZWxSZXBseShXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY29tcGxldGlv
bkhhbmRsZXIoV1RGTW92ZSgqcmVzdWx0KSk7Ci19Ci0KLXZvaWQgVGVzdEFzeW5jTWVzc2FnZTo6
Y2FuY2VsUmVwbHkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCYmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKLXsKLSAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkFzeW5jUmVwbHlFcnJv
cjx1aW50NjRfdD46OmNyZWF0ZSgpKTsKLX0KLQotdm9pZCBUZXN0QXN5bmNNZXNzYWdlOjpzZW5k
KHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiYgZW5jb2RlciwgSVBDOjpDb25uZWN0aW9u
JiBjb25uZWN0aW9uLCB1aW50NjRfdCByZXN1bHQpCi17Ci0gICAgKmVuY29kZXIgPDwgcmVzdWx0
OwotICAgIGNvbm5lY3Rpb24uc2VuZFN5bmNSZXBseShXVEZNb3ZlKGVuY29kZXIpKTsKLX0KLQot
I2VuZGlmCi0KLSNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQotCi12b2lkIFRlc3RBc3luY01lc3Nh
Z2VXaXRoTm9Bcmd1bWVudHM6OmNhbGxSZXBseShJUEM6OkRlY29kZXImIGRlY29kZXIsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAgICBjb21wbGV0
aW9uSGFuZGxlcigpOwotfQotCi12b2lkIFRlc3RBc3luY01lc3NhZ2VXaXRoTm9Bcmd1bWVudHM6
OmNhbmNlbFJlcGx5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKLXsKLSAgICBjb21wbGV0aW9uSGFuZGxlcigpOwotfQotCi12b2lkIFRlc3RBc3luY01lc3Nh
Z2VXaXRoTm9Bcmd1bWVudHM6OnNlbmQoc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mJiBl
bmNvZGVyLCBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCi17Ci0gICAgY29ubmVjdGlvbi5z
ZW5kU3luY1JlcGx5KFdURk1vdmUoZW5jb2RlcikpOwotfQotCi0jZW5kaWYKLQotI2lmIEVOQUJM
RShURVNUX0ZFQVRVUkUpCi0KLXZvaWQgVGVzdEFzeW5jTWVzc2FnZVdpdGhNdWx0aXBsZUFyZ3Vt
ZW50czo6Y2FsbFJlcGx5KElQQzo6RGVjb2RlciYgZGVjb2RlciwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sJiYsIHVpbnQ2NF90JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIE9w
dGlvbmFsPGJvb2w+IGZsYWc7Ci0gICAgZGVjb2RlciA+PiBmbGFnOwotICAgIGlmICghZmxhZykg
ewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgY2FuY2VsUmVwbHkoV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIE9w
dGlvbmFsPHVpbnQ2NF90PiB2YWx1ZTsKLSAgICBkZWNvZGVyID4+IHZhbHVlOwotICAgIGlmICgh
dmFsdWUpIHsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIGNhbmNlbFJl
cGx5KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LSAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKCpmbGFnKSwgV1RGTW92ZSgqdmFsdWUpKTsK
LX0KLQotdm9pZCBUZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1lbnRzOjpjYW5jZWxS
ZXBseShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wmJiwgdWludDY0X3QmJik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCi17Ci0gICAgY29tcGxldGlvbkhhbmRsZXIoSVBDOjpBc3luY1JlcGx5RXJy
b3I8Ym9vbD46OmNyZWF0ZSgpLCBJUEM6OkFzeW5jUmVwbHlFcnJvcjx1aW50NjRfdD46OmNyZWF0
ZSgpKTsKLX0KLQotdm9pZCBUZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1lbnRzOjpz
ZW5kKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiYgZW5jb2RlciwgSVBDOjpDb25uZWN0
aW9uJiBjb25uZWN0aW9uLCBib29sIGZsYWcsIHVpbnQ2NF90IHZhbHVlKQotewotICAgICplbmNv
ZGVyIDw8IGZsYWc7Ci0gICAgKmVuY29kZXIgPDwgdmFsdWU7Ci0gICAgY29ubmVjdGlvbi5zZW5k
U3luY1JlcGx5KFdURk1vdmUoZW5jb2RlcikpOwotfQotCi0jZW5kaWYKLQotdm9pZCBUZXN0U3lu
Y01lc3NhZ2U6OnNlbmQoc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mJiBlbmNvZGVyLCBJ
UEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIHVpbnQ4X3QgcmVwbHkpCi17Ci0gICAgKmVuY29k
ZXIgPDwgcmVwbHk7Ci0gICAgY29ubmVjdGlvbi5zZW5kU3luY1JlcGx5KFdURk1vdmUoZW5jb2Rl
cikpOwotfQotCi12b2lkIFRlc3RTeW5jaHJvbm91c01lc3NhZ2U6OnNlbmQoc3RkOjp1bmlxdWVf
cHRyPElQQzo6RW5jb2Rlcj4mJiBlbmNvZGVyLCBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24s
IGNvbnN0IE9wdGlvbmFsPFdlYktpdDo6VGVzdENsYXNzTmFtZT4mIG9wdGlvbmFsUmVwbHkpCi17
Ci0gICAgKmVuY29kZXIgPDwgb3B0aW9uYWxSZXBseTsKLSAgICBjb25uZWN0aW9uLnNlbmRTeW5j
UmVwbHkoV1RGTW92ZShlbmNvZGVyKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYlBhZ2UKLQot
fSAvLyBuYW1lc3BhY2UgTWVzc2FnZXMKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLXZvaWQgV2Vi
UGFnZTo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6
OkRlY29kZXImIGRlY29kZXIpCi17Ci0gICAgYXV0byBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyk7Ci0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFn
ZTo6TG9hZFVSTDo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdl
czo6V2ViUGFnZTo6TG9hZFVSTD4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OmxvYWRVUkwpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCi0gICAgaWYg
KGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6VGVzdEFzeW5jTWVz
c2FnZTo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZUFzeW5jPE1lc3NhZ2Vz
OjpXZWJQYWdlOjpUZXN0QXN5bmNNZXNzYWdlPihjb25uZWN0aW9uLCBkZWNvZGVyLCB0aGlzLCAm
V2ViUGFnZTo6dGVzdEFzeW5jTWVzc2FnZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5k
aWYKLSNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1l
KCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RBc3luY01lc3NhZ2VXaXRoTm9Bcmd1bWVudHM6
Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2VBc3luYzxNZXNzYWdlczo6V2Vi
UGFnZTo6VGVzdEFzeW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50cz4oY29ubmVjdGlvbiwgZGVjb2Rl
ciwgdGhpcywgJldlYlBhZ2U6OnRlc3RBc3luY01lc3NhZ2VXaXRoTm9Bcmd1bWVudHMpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlmCi0jaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKLSAg
ICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0QXN5
bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1lbnRzOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpo
YW5kbGVNZXNzYWdlQXN5bmM8TWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RBc3luY01lc3NhZ2VXaXRo
TXVsdGlwbGVBcmd1bWVudHM+KGNvbm5lY3Rpb24sIGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjp0
ZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1lbnRzKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLSNlbmRpZgotICAgIFdlYlBhZ2VCYXNlOjpkaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0
aW9uLCBkZWNvZGVyKTsKLX0KLQotdm9pZCBXZWJQYWdlOjpkaWRSZWNlaXZlU3luY01lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIHN0ZDo6
dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiByZXBseUVuY29kZXIpCi17Ci0gICAgYXV0byBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyk7Ci0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUo
KSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6VGVzdFN5bmNNZXNzYWdlOjpuYW1lKCkpIHsKLSAgICAg
ICAgSVBDOjpoYW5kbGVNZXNzYWdlU3luY2hyb25vdXM8TWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RT
eW5jTWVzc2FnZT4oY29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyLCB0aGlzLCAmV2Vi
UGFnZTo6dGVzdFN5bmNNZXNzYWdlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAo
ZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0U3luY2hyb25v
dXNNZXNzYWdlOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlU3luY2hyb25v
dXM8TWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RTeW5jaHJvbm91c01lc3NhZ2U+KGNvbm5lY3Rpb24s
IGRlY29kZXIsIHJlcGx5RW5jb2RlciwgdGhpcywgJldlYlBhZ2U6OnRlc3RTeW5jaHJvbm91c01l
c3NhZ2UpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIFVOVVNFRF9QQVJBTShjb25uZWN0
aW9uKTsKLSAgICBVTlVTRURfUEFSQU0oZGVjb2Rlcik7Ci0gICAgVU5VU0VEX1BBUkFNKHJlcGx5
RW5jb2Rlcik7Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYktpdAotCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Vi
a2l0L01lc3NhZ2VSZWNlaXZlclN1cGVyY2xhc3MtZXhwZWN0ZWQuY3BwCl9fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVs
ZXRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMSArMCwwICMjCi1uYXRpdmUKXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9NZXNz
YWdlcy1leHBlY3RlZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJr
aXQvTWVzc2FnZXMtZXhwZWN0ZWQuaAkocmV2aXNpb24gMjYxMDM4KQorKysgU291cmNlL1dlYktp
dC9TY3JpcHRzL3dlYmtpdC9NZXNzYWdlcy1leHBlY3RlZC5oCShub25leGlzdGVudCkKQEAgLTEs
NTcwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFO
RAotICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SCi0gKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0gKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgotICogU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIKLSAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0gKiBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIChFTkFC
TEUoV0VCS0lUMikgJiYgKE5FU1RFRF9NQVNURVJfQ09ORElUSU9OIHx8IE1BU1RFUl9PUiAmJiBN
QVNURVJfQU5EKSkKLQotI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCi0jaW5jbHVkZSAiQ29u
bmVjdGlvbi5oIgotI2luY2x1ZGUgIlBsdWdpbi5oIgotI2luY2x1ZGUgIldlYlBhZ2VNZXNzYWdl
c1JlcGxpZXMuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXIuaD4KLSNpbmNsdWRl
IDxXZWJDb3JlL0tleWJvYXJkRXZlbnQuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1BsdWdpbkRhdGEu
aD4KLSNpbmNsdWRlIDx1dGlsaXR5PgotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4K
LSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
Ci0KLW5hbWVzcGFjZSBJUEMgewotY2xhc3MgRHVtbXlUeXBlOwotY2xhc3MgTWFjaFBvcnQ7Ci19
Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotY2xhc3MgV2ViUHJlZmVyZW5jZXNTdG9yZTsKLWNsYXNz
IFdlYlRvdWNoRXZlbnQ7Ci19Ci0KLW5hbWVzcGFjZSBNZXNzYWdlcyB7Ci1uYW1lc3BhY2UgV2Vi
UGFnZSB7Ci0KLXN0YXRpYyBpbmxpbmUgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2Vp
dmVyTmFtZSgpCi17Ci0gICAgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJXZWJQYWdlIik7
Ci19Ci0KLWNsYXNzIExvYWRVUkwgewotcHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxj
b25zdCBTdHJpbmcmPiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVu
Y2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAg
c3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1Jl
ZmVyZW5jZSgiTG9hZFVSTCIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFs
c2U7Ci0KLSAgICBleHBsaWNpdCBMb2FkVVJMKGNvbnN0IFN0cmluZyYgdXJsKQotICAgICAgICA6
IG1fYXJndW1lbnRzKHVybCkKLSAgICB7Ci0gICAgfQotCi0gICAgY29uc3QgQXJndW1lbnRzJiBh
cmd1bWVudHMoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAg
IH0KLQotcHJpdmF0ZToKLSAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19OwotCi0jaWYgRU5B
QkxFKFRPVUNIX0VWRU5UUykKLWNsYXNzIExvYWRTb21ldGhpbmcgewotcHVibGljOgotICAgIHR5
cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBTdHJpbmcmPiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0aWMg
SVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2Vp
dmVyTmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJl
dHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiTG9hZFNvbWV0aGluZyIpOyB9Ci0gICAgc3RhdGlj
IGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7Ci0KLSAgICBleHBsaWNpdCBMb2FkU29tZXRoaW5n
KGNvbnN0IFN0cmluZyYgdXJsKQotICAgICAgICA6IG1fYXJndW1lbnRzKHVybCkKLSAgICB7Ci0g
ICAgfQotCi0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsKLSAg
ICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1bWVu
dHMgbV9hcmd1bWVudHM7Ci19OwotI2VuZGlmCi0KLSNpZiAoRU5BQkxFKFRPVUNIX0VWRU5UUykg
JiYgKE5FU1RFRF9NRVNTQUdFX0NPTkRJVElPTiB8fCBTT01FX09USEVSX01FU1NBR0VfQ09ORElU
SU9OKSkKLWNsYXNzIFRvdWNoRXZlbnQgewotcHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBs
ZTxjb25zdCBXZWJLaXQ6OldlYlRvdWNoRXZlbnQmPiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0aWMg
SVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2Vp
dmVyTmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJl
dHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiVG91Y2hFdmVudCIpOyB9Ci0gICAgc3RhdGljIGNv
bnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7Ci0KLSAgICBleHBsaWNpdCBUb3VjaEV2ZW50KGNvbnN0
IFdlYktpdDo6V2ViVG91Y2hFdmVudCYgZXZlbnQpCi0gICAgICAgIDogbV9hcmd1bWVudHMoZXZl
bnQpCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29u
c3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0KLXByaXZhdGU6
Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLSNlbmRpZgotCi0jaWYgKEVOQUJMRShU
T1VDSF9FVkVOVFMpICYmIChORVNURURfTUVTU0FHRV9DT05ESVRJT04gJiYgU09NRV9PVEhFUl9N
RVNTQUdFX0NPTkRJVElPTikpCi1jbGFzcyBBZGRFdmVudCB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRl
ZiBzdGQ6OnR1cGxlPGNvbnN0IFdlYktpdDo6V2ViVG91Y2hFdmVudCY+IEFyZ3VtZW50czsKLQot
ICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVybiBt
ZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2Ug
bmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJBZGRFdmVudCIpOyB9Ci0gICAg
c3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7Ci0KLSAgICBleHBsaWNpdCBBZGRFdmVu
dChjb25zdCBXZWJLaXQ6OldlYlRvdWNoRXZlbnQmIGV2ZW50KQotICAgICAgICA6IG1fYXJndW1l
bnRzKGV2ZW50KQotICAgIHsKLSAgICB9Ci0KLSAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50
cygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7Ci0gICAgfQotCi1w
cml2YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKLX07Ci0jZW5kaWYKLQotI2lmIEVO
QUJMRShUT1VDSF9FVkVOVFMpCi1jbGFzcyBMb2FkU29tZXRoaW5nRWxzZSB7Ci1wdWJsaWM6Ci0g
ICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGNvbnN0IFN0cmluZyY+IEFyZ3VtZW50czsKLQotICAgIHN0
YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNzYWdl
UmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgp
IHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJMb2FkU29tZXRoaW5nRWxzZSIpOyB9Ci0g
ICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7Ci0KLSAgICBleHBsaWNpdCBMb2Fk
U29tZXRoaW5nRWxzZShjb25zdCBTdHJpbmcmIHVybCkKLSAgICAgICAgOiBtX2FyZ3VtZW50cyh1
cmwpCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29u
c3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0KLXByaXZhdGU6
Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLSNlbmRpZgotCi1jbGFzcyBEaWRSZWNl
aXZlUG9saWN5RGVjaXNpb24gewotcHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTx1aW50
NjRfdCwgdWludDY0X3QsIHVpbnQzMl90PiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpT
dHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFt
ZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJ
UEM6OlN0cmluZ1JlZmVyZW5jZSgiRGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uIik7IH0KLSAgICBz
dGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKLQotICAgIERpZFJlY2VpdmVQb2xpY3lE
ZWNpc2lvbih1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBsaXN0ZW5lcklELCB1aW50MzJfdCBw
b2xpY3lBY3Rpb24pCi0gICAgICAgIDogbV9hcmd1bWVudHMoZnJhbWVJRCwgbGlzdGVuZXJJRCwg
cG9saWN5QWN0aW9uKQotICAgIHsKLSAgICB9Ci0KLSAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3Vt
ZW50cygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7Ci0gICAgfQot
Ci1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKLX07Ci0KLWNsYXNzIENsb3Nl
IHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8PiBBcmd1bWVudHM7Ci0KLSAgICBz
dGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUo
KSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiQ2xvc2UiKTsgfQotICAgIHN0YXRpYyBj
b25zdCBib29sIGlzU3luYyA9IGZhbHNlOwotCi0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVu
dHMoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQot
cHJpdmF0ZToKLSAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19OwotCi1jbGFzcyBQcmVmZXJl
bmNlc0RpZENoYW5nZSB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGNvbnN0IFdl
YktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZSY+IEFyZ3VtZW50czsKLQotICAgIHN0YXRpYyBJUEM6
OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJO
YW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJu
IElQQzo6U3RyaW5nUmVmZXJlbmNlKCJQcmVmZXJlbmNlc0RpZENoYW5nZSIpOyB9Ci0gICAgc3Rh
dGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7Ci0KLSAgICBleHBsaWNpdCBQcmVmZXJlbmNl
c0RpZENoYW5nZShjb25zdCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlKQotICAg
ICAgICA6IG1fYXJndW1lbnRzKHN0b3JlKQotICAgIHsKLSAgICB9Ci0KLSAgICBjb25zdCBBcmd1
bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9hcmd1bWVu
dHM7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKLX07Ci0K
LWNsYXNzIFNlbmREb3VibGVBbmRGbG9hdCB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1
cGxlPGRvdWJsZSwgZmxvYXQ+IEFyZ3VtZW50czsKLQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1Jl
ZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0K
LSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3Ry
aW5nUmVmZXJlbmNlKCJTZW5kRG91YmxlQW5kRmxvYXQiKTsgfQotICAgIHN0YXRpYyBjb25zdCBi
b29sIGlzU3luYyA9IGZhbHNlOwotCi0gICAgU2VuZERvdWJsZUFuZEZsb2F0KGRvdWJsZSBkLCBm
bG9hdCBmKQotICAgICAgICA6IG1fYXJndW1lbnRzKGQsIGYpCi0gICAgewotICAgIH0KLQotICAg
IGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVy
biBtX2FyZ3VtZW50czsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJndW1l
bnRzOwotfTsKLQotY2xhc3MgU2VuZEludHMgewotcHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0
dXBsZTxjb25zdCBWZWN0b3I8dWludDY0X3Q+JiwgY29uc3QgVmVjdG9yPFZlY3Rvcjx1aW50NjRf
dD4+Jj4gQXJndW1lbnRzOwotCi0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2Vp
dmVyTmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsgfQotICAgIHN0YXRpYyBJ
UEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2Uo
IlNlbmRJbnRzIik7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKLQot
ICAgIFNlbmRJbnRzKGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIGludHMsIGNvbnN0IFZlY3RvcjxW
ZWN0b3I8dWludDY0X3Q+PiYgaW50VmVjdG9ycykKLSAgICAgICAgOiBtX2FyZ3VtZW50cyhpbnRz
LCBpbnRWZWN0b3JzKQotICAgIHsKLSAgICB9Ci0KLSAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3Vt
ZW50cygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7Ci0gICAgfQot
Ci1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKLX07Ci0KLWNsYXNzIENyZWF0
ZVBsdWdpbiB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPHVpbnQ2NF90LCBjb25z
dCBXZWJLaXQ6OlBsdWdpbjo6UGFyYW1ldGVycyY+IEFyZ3VtZW50czsKLQotICAgIHN0YXRpYyBJ
UEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2
ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0
dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJDcmVhdGVQbHVnaW4iKTsgfQotICAgIHN0YXRpYyBj
b25zdCBib29sIGlzU3luYyA9IHRydWU7Ci0KLSAgICB1c2luZyBSZXBseSA9IHN0ZDo6dHVwbGU8
Ym9vbCY+OwotICAgIHVzaW5nIFJlcGx5QXJndW1lbnRzID0gc3RkOjp0dXBsZTxib29sPjsKLSAg
ICBDcmVhdGVQbHVnaW4odWludDY0X3QgcGx1Z2luSW5zdGFuY2VJRCwgY29uc3QgV2ViS2l0OjpQ
bHVnaW46OlBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCi0gICAgICAgIDogbV9hcmd1bWVudHMocGx1
Z2luSW5zdGFuY2VJRCwgcGFyYW1ldGVycykKLSAgICB7Ci0gICAgfQotCi0gICAgY29uc3QgQXJn
dW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1l
bnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19Owot
Ci1jbGFzcyBSdW5KYXZhU2NyaXB0QWxlcnQgewotcHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0
dXBsZTx1aW50NjRfdCwgY29uc3QgU3RyaW5nJj4gQXJndW1lbnRzOwotCi0gICAgc3RhdGljIElQ
Qzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZl
ck5hbWUoKTsgfQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1
cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIlJ1bkphdmFTY3JpcHRBbGVydCIpOyB9Ci0gICAgc3Rh
dGljIGNvbnN0IGJvb2wgaXNTeW5jID0gdHJ1ZTsKLQotICAgIHVzaW5nIFJlcGx5ID0gc3RkOjp0
dXBsZTw+OwotICAgIHVzaW5nIFJlcGx5QXJndW1lbnRzID0gc3RkOjp0dXBsZTw+OwotICAgIFJ1
bkphdmFTY3JpcHRBbGVydCh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2Up
Ci0gICAgICAgIDogbV9hcmd1bWVudHMoZnJhbWVJRCwgbWVzc2FnZSkKLSAgICB7Ci0gICAgfQot
Ci0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsKLSAgICAgICAg
cmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1bWVudHMgbV9h
cmd1bWVudHM7Ci19OwotCi1jbGFzcyBHZXRQbHVnaW5zIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVm
IHN0ZDo6dHVwbGU8Ym9vbD4gQXJndW1lbnRzOwotCi0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVm
ZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsgfQot
ICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpTdHJp
bmdSZWZlcmVuY2UoIkdldFBsdWdpbnMiKTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3lu
YyA9IHRydWU7Ci0KLSAgICB1c2luZyBSZXBseSA9IHN0ZDo6dHVwbGU8VmVjdG9yPFdlYkNvcmU6
OlBsdWdpbkluZm8+Jj47Ci0gICAgdXNpbmcgUmVwbHlBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPFZl
Y3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPj47Ci0gICAgZXhwbGljaXQgR2V0UGx1Z2lucyhib29s
IHJlZnJlc2gpCi0gICAgICAgIDogbV9hcmd1bWVudHMocmVmcmVzaCkKLSAgICB7Ci0gICAgfQot
Ci0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsKLSAgICAgICAg
cmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1bWVudHMgbV9h
cmd1bWVudHM7Ci19OwotCi1jbGFzcyBHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbiB7Ci1wdWJs
aWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGNvbnN0IFN0cmluZyY+IEFyZ3VtZW50czsKLQot
ICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVybiBt
ZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2Ug
bmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJHZXRQbHVnaW5Qcm9jZXNzQ29u
bmVjdGlvbiIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gdHJ1ZTsKLQotICAg
IHVzaW5nIERlbGF5ZWRSZXBseSA9IEdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uRGVsYXllZFJl
cGx5OwotICAgIHN0YXRpYyB2b2lkIHNlbmQoc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4m
JiwgSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgSVBDOjpDb25uZWN0aW9uOjpIYW5kbGUmIGNvbm5l
Y3Rpb25IYW5kbGUpOwotICAgIHVzaW5nIFJlcGx5ID0gc3RkOjp0dXBsZTxJUEM6OkNvbm5lY3Rp
b246OkhhbmRsZSY+OwotICAgIHVzaW5nIFJlcGx5QXJndW1lbnRzID0gc3RkOjp0dXBsZTxJUEM6
OkNvbm5lY3Rpb246OkhhbmRsZT47Ci0gICAgZXhwbGljaXQgR2V0UGx1Z2luUHJvY2Vzc0Nvbm5l
Y3Rpb24oY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoKQotICAgICAgICA6IG1fYXJndW1lbnRzKHBs
dWdpblBhdGgpCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRz
KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0KLXBy
aXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLQotY2xhc3MgVGVzdE11bHRp
cGxlQXR0cmlidXRlcyB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPD4gQXJndW1l
bnRzOwotCi0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsg
cmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsgfQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1Jl
ZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIlRlc3RNdWx0aXBs
ZUF0dHJpYnV0ZXMiKTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IHRydWU7Ci0K
LSAgICB1c2luZyBEZWxheWVkUmVwbHkgPSBUZXN0TXVsdGlwbGVBdHRyaWJ1dGVzRGVsYXllZFJl
cGx5OwotICAgIHN0YXRpYyB2b2lkIHNlbmQoc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4m
JiwgSVBDOjpDb25uZWN0aW9uJik7Ci0gICAgdXNpbmcgUmVwbHkgPSBzdGQ6OnR1cGxlPD47Ci0g
ICAgdXNpbmcgUmVwbHlBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPD47Ci0gICAgY29uc3QgQXJndW1l
bnRzJiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRz
OwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19OwotCi1j
bGFzcyBUZXN0UGFyYW1ldGVyQXR0cmlidXRlcyB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6
OnR1cGxlPHVpbnQ2NF90LCBkb3VibGUsIGRvdWJsZT4gQXJndW1lbnRzOwotCi0gICAgc3RhdGlj
IElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNl
aXZlck5hbWUoKTsgfQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyBy
ZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIlRlc3RQYXJhbWV0ZXJBdHRyaWJ1dGVzIik7IH0K
LSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKLQotICAgIFRlc3RQYXJhbWV0
ZXJBdHRyaWJ1dGVzKHVpbnQ2NF90IGZvbywgZG91YmxlIGJhciwgZG91YmxlIGJheikKLSAgICAg
ICAgOiBtX2FyZ3VtZW50cyhmb28sIGJhciwgYmF6KQotICAgIHsKLSAgICB9Ci0KLSAgICBjb25z
dCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9h
cmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsK
LX07Ci0KLWNsYXNzIFRlbXBsYXRlVGVzdCB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1
cGxlPGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBzdGQ6OnBhaXI8U3RyaW5nLCB1aW50NjRfdD4+Jj4g
QXJndW1lbnRzOwotCi0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFt
ZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsgfQotICAgIHN0YXRpYyBJUEM6OlN0
cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIlRlbXBs
YXRlVGVzdCIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7Ci0KLSAg
ICBleHBsaWNpdCBUZW1wbGF0ZVRlc3QoY29uc3QgSGFzaE1hcDxTdHJpbmcsIHN0ZDo6cGFpcjxT
dHJpbmcsIHVpbnQ2NF90Pj4mIGEpCi0gICAgICAgIDogbV9hcmd1bWVudHMoYSkKLSAgICB7Ci0g
ICAgfQotCi0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsKLSAg
ICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1bWVu
dHMgbV9hcmd1bWVudHM7Ci19OwotCi1jbGFzcyBTZXRWaWRlb0xheWVySUQgewotcHVibGljOgot
ICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpQbGF0
Zm9ybUxheWVySUQmPiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVu
Y2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAg
c3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1Jl
ZmVyZW5jZSgiU2V0VmlkZW9MYXllcklEIik7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5
bmMgPSBmYWxzZTsKLQotICAgIGV4cGxpY2l0IFNldFZpZGVvTGF5ZXJJRChjb25zdCBXZWJDb3Jl
OjpHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQmIHZpZGVvTGF5ZXJJRCkKLSAgICAgICAg
OiBtX2FyZ3VtZW50cyh2aWRlb0xheWVySUQpCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0IEFy
Z3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3Vt
ZW50czsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsK
LQotI2lmIFBMQVRGT1JNKE1BQykKLWNsYXNzIERpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9u
IHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8Y29uc3QgSVBDOjpNYWNoUG9ydCY+
IEFyZ3VtZW50czsKLQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5h
bWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpT
dHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJEaWRD
cmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbiIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNT
eW5jID0gZmFsc2U7Ci0KLSAgICBleHBsaWNpdCBEaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlv
bihjb25zdCBJUEM6Ok1hY2hQb3J0JiBjb25uZWN0aW9uSWRlbnRpZmllcikKLSAgICAgICAgOiBt
X2FyZ3VtZW50cyhjb25uZWN0aW9uSWRlbnRpZmllcikKLSAgICB7Ci0gICAgfQotCi0gICAgY29u
c3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1f
YXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7
Ci19OwotI2VuZGlmCi0KLSNpZiBQTEFURk9STShNQUMpCi1jbGFzcyBJbnRlcnByZXRLZXlFdmVu
dCB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPHVpbnQzMl90PiBBcmd1bWVudHM7
Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1
cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJl
bmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiSW50ZXJwcmV0S2V5RXZl
bnQiKTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IHRydWU7Ci0KLSAgICB1c2lu
ZyBSZXBseSA9IHN0ZDo6dHVwbGU8VmVjdG9yPFdlYkNvcmU6OktleXByZXNzQ29tbWFuZD4mPjsK
LSAgICB1c2luZyBSZXBseUFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8VmVjdG9yPFdlYkNvcmU6Oktl
eXByZXNzQ29tbWFuZD4+OwotICAgIGV4cGxpY2l0IEludGVycHJldEtleUV2ZW50KHVpbnQzMl90
IHR5cGUpCi0gICAgICAgIDogbV9hcmd1bWVudHModHlwZSkKLSAgICB7Ci0gICAgfQotCi0gICAg
Y29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJu
IG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1bWVudHMgbV9hcmd1bWVu
dHM7Ci19OwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoREVQUkVDQVRFRF9GRUFUVVJFKQotY2xhc3Mg
RGVwcmVjYXRlZE9wZXJhdGlvbiB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGNv
bnN0IElQQzo6RHVtbXlUeXBlJj4gQXJndW1lbnRzOwotCi0gICAgc3RhdGljIElQQzo6U3RyaW5n
UmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsg
fQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpT
dHJpbmdSZWZlcmVuY2UoIkRlcHJlY2F0ZWRPcGVyYXRpb24iKTsgfQotICAgIHN0YXRpYyBjb25z
dCBib29sIGlzU3luYyA9IGZhbHNlOwotCi0gICAgZXhwbGljaXQgRGVwcmVjYXRlZE9wZXJhdGlv
bihjb25zdCBJUEM6OkR1bW15VHlwZSYgZHVtbXkpCi0gICAgICAgIDogbV9hcmd1bWVudHMoZHVt
bXkpCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29u
c3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0KLXByaXZhdGU6
Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLSNlbmRpZgotCi0jaWYgRU5BQkxFKEVY
UEVSSU1FTlRBTF9GRUFUVVJFKQotY2xhc3MgRXhwZXJpbWVudGFsT3BlcmF0aW9uIHsKLXB1Ymxp
YzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8Y29uc3QgSVBDOjpEdW1teVR5cGUmPiBBcmd1bWVu
dHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyBy
ZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVm
ZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiRXhwZXJpbWVudGFs
T3BlcmF0aW9uIik7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKLQot
ICAgIGV4cGxpY2l0IEV4cGVyaW1lbnRhbE9wZXJhdGlvbihjb25zdCBJUEM6OkR1bW15VHlwZSYg
ZHVtbXkpCi0gICAgICAgIDogbV9hcmd1bWVudHMoZHVtbXkpCi0gICAgewotICAgIH0KLQotICAg
IGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVy
biBtX2FyZ3VtZW50czsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJndW1l
bnRzOwotfTsKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBXZWJQYWdlCi19IC8vIG5hbWVzcGFj
ZSBNZXNzYWdlcwotCi0jZW5kaWYgLy8gKEVOQUJMRShXRUJLSVQyKSAmJiAoTkVTVEVEX01BU1RF
Ul9DT05ESVRJT04gfHwgTUFTVEVSX09SICYmIE1BU1RFUl9BTkQpKQoKUHJvcGVydHkgY2hhbmdl
cyBvbjogU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9NZXNzYWdlcy1leHBlY3RlZC5oCl9f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX18KRGVsZXRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMSArMCwwICMjCi1uYXRpdmUKXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogU291cmNlL1dlYktpdC9TY3JpcHRz
L3dlYmtpdC9NZXNzYWdlc1JlcGxpZXMtZXhwZWN0ZWQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvd2Via2l0L01lc3NhZ2VzUmVwbGllcy1leHBlY3RlZC5oCShyZXZpc2lv
biAyNjEwMzgpCisrKyBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L01lc3NhZ2VzUmVwbGll
cy1leHBlY3RlZC5oCShub25leGlzdGVudCkKQEAgLTEsNDMgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECi0gKiBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSAqIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwKLSAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0gKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotICogQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwKLSAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgKEVOQUJMRShXRUJLSVQyKSAmJiAoTkVTVEVEX01B
U1RFUl9DT05ESVRJT04gfHwgTUFTVEVSX09SICYmIE1BU1RFUl9BTkQpKQotCi0jaW5jbHVkZSAi
Q29ubmVjdGlvbi5oIgotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0KLQotbmFtZXNwYWNlIE1l
c3NhZ2VzIHsKLW5hbWVzcGFjZSBXZWJQYWdlIHsKLQotdXNpbmcgR2V0UGx1Z2luUHJvY2Vzc0Nv
bm5lY3Rpb25EZWxheWVkUmVwbHkgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6
Q29ubmVjdGlvbjo6SGFuZGxlJiBjb25uZWN0aW9uSGFuZGxlKT47Ci0KLXVzaW5nIFRlc3RNdWx0
aXBsZUF0dHJpYnV0ZXNEZWxheWVkUmVwbHkgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+Owot
Ci19IC8vIG5hbWVzcGFjZSBXZWJQYWdlCi19IC8vIG5hbWVzcGFjZSBNZXNzYWdlcwotCi0jZW5k
aWYgLy8gKEVOQUJMRShXRUJLSVQyKSAmJiAoTkVTVEVEX01BU1RFUl9DT05ESVRJT04gfHwgTUFT
VEVSX09SICYmIE1BU1RFUl9BTkQpKQpJbmRleDogU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtp
dC9NZXNzYWdlc1JlcGxpZXNTdXBlcmNsYXNzUmVwbGllcy1leHBlY3RlZC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvTWVzc2FnZXNSZXBsaWVzU3VwZXJjbGFz
c1JlcGxpZXMtZXhwZWN0ZWQuaAkocmV2aXNpb24gMjYxMDM4KQorKysgU291cmNlL1dlYktpdC9T
Y3JpcHRzL3dlYmtpdC9NZXNzYWdlc1JlcGxpZXNTdXBlcmNsYXNzUmVwbGllcy1leHBlY3RlZC5o
CShub25leGlzdGVudCkKQEAgLTEsNTIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycgQU5ECi0gKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSAqIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SCi0gKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotICogQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwKLSAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFn
bWEgb25jZQotCi0jaW5jbHVkZSAiVGVzdENsYXNzTmFtZS5oIgotI2luY2x1ZGUgPHd0Zi9Gb3J3
YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+Ci0KLQotbmFtZXNwYWNlIE1lc3NhZ2Vz
IHsKLW5hbWVzcGFjZSBXZWJQYWdlIHsKLQotI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCi11c2lu
ZyBUZXN0QXN5bmNNZXNzYWdlQXN5bmNSZXBseSA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWlu
dDY0X3QgcmVzdWx0KT47Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCi11c2lu
ZyBUZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJndW1lbnRzQXN5bmNSZXBseSA9IENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT47Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCi11c2lu
ZyBUZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1lbnRzQXN5bmNSZXBseSA9IENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBmbGFnLCB1aW50NjRfdCB2YWx1ZSk+OwotI2VuZGlmCi0K
LXVzaW5nIFRlc3RTeW5jTWVzc2FnZURlbGF5ZWRSZXBseSA9IENvbXBsZXRpb25IYW5kbGVyPHZv
aWQodWludDhfdCByZXBseSk+OwotCi11c2luZyBUZXN0U3luY2hyb25vdXNNZXNzYWdlRGVsYXll
ZFJlcGx5ID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBPcHRpb25hbDxXZWJLaXQ6OlRl
c3RDbGFzc05hbWU+JiBvcHRpb25hbFJlcGx5KT47Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYlBhZ2UK
LX0gLy8gbmFtZXNwYWNlIE1lc3NhZ2VzCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Vi
a2l0L01lc3NhZ2VzU3VwZXJjbGFzcy1leHBlY3RlZC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvU2NyaXB0cy93ZWJraXQvTWVzc2FnZXNTdXBlcmNsYXNzLWV4cGVjdGVkLmgJKHJldmlz
aW9uIDI2MTAzOCkKKysrIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvTWVzc2FnZXNTdXBl
cmNsYXNzLWV4cGVjdGVkLmgJKG5vbmV4aXN0ZW50KQpAQCAtMSwyMDYgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECi0gKiBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSAqIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwKLSAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0gKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotICog
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwKLSAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIK
LSNpbmNsdWRlICJDb25uZWN0aW9uLmgiCi0jaW5jbHVkZSAiVGVzdENsYXNzTmFtZS5oIgotI2lu
Y2x1ZGUgIldlYlBhZ2VNZXNzYWdlc1JlcGxpZXMuaCIKLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgotI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgotI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVm
Q291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2Ug
V2ViS2l0IHsKLWVudW0gY2xhc3MgVGVzdFR3b1N0YXRlRW51bSA6IGJvb2w7Ci19Ci0KLW5hbWVz
cGFjZSBNZXNzYWdlcyB7Ci1uYW1lc3BhY2UgV2ViUGFnZSB7Ci0KLXN0YXRpYyBpbmxpbmUgSVBD
OjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSgpCi17Ci0gICAgcmV0dXJuIElQ
Qzo6U3RyaW5nUmVmZXJlbmNlKCJXZWJQYWdlIik7Ci19Ci0KLWNsYXNzIExvYWRVUkwgewotcHVi
bGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBTdHJpbmcmPiBBcmd1bWVudHM7Ci0K
LSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4g
bWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNl
IG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiTG9hZFVSTCIpOyB9Ci0gICAg
c3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7Ci0KLSAgICBleHBsaWNpdCBMb2FkVVJM
KGNvbnN0IFN0cmluZyYgdXJsKQotICAgICAgICA6IG1fYXJndW1lbnRzKHVybCkKLSAgICB7Ci0g
ICAgfQotCi0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsKLSAg
ICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1bWVu
dHMgbV9hcmd1bWVudHM7Ci19OwotCi0jaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKLWNsYXNzIFRl
c3RBc3luY01lc3NhZ2UgewotcHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxXZWJLaXQ6
OlRlc3RUd29TdGF0ZUVudW0+IEFyZ3VtZW50czsKLQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1Jl
ZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0K
LSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3Ry
aW5nUmVmZXJlbmNlKCJUZXN0QXN5bmNNZXNzYWdlIik7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9v
bCBpc1N5bmMgPSBmYWxzZTsKLQotICAgIHN0YXRpYyB2b2lkIGNhbGxSZXBseShJUEM6OkRlY29k
ZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90JiYpPiYmKTsKLSAgICBzdGF0aWMg
dm9pZCBjYW5jZWxSZXBseShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90JiYpPiYmKTsK
LSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgYXN5bmNNZXNzYWdlUmVwbHlOYW1lKCkg
eyByZXR1cm4geyAiVGVzdEFzeW5jTWVzc2FnZVJlcGx5IiB9OyB9Ci0gICAgdXNpbmcgQXN5bmNS
ZXBseSA9IFRlc3RBc3luY01lc3NhZ2VBc3luY1JlcGx5OwotICAgIHN0YXRpYyB2b2lkIHNlbmQo
c3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mJiwgSVBDOjpDb25uZWN0aW9uJiwgdWludDY0
X3QgcmVzdWx0KTsKLSAgICB1c2luZyBSZXBseSA9IHN0ZDo6dHVwbGU8dWludDY0X3QmPjsKLSAg
ICB1c2luZyBSZXBseUFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8dWludDY0X3Q+OwotICAgIGV4cGxp
Y2l0IFRlc3RBc3luY01lc3NhZ2UoV2ViS2l0OjpUZXN0VHdvU3RhdGVFbnVtIHR3b1N0YXRlRW51
bSkKLSAgICAgICAgOiBtX2FyZ3VtZW50cyh0d29TdGF0ZUVudW0pCi0gICAgewotICAgIH0KLQot
ICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJn
dW1lbnRzOwotfTsKLSNlbmRpZgotCi0jaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKLWNsYXNzIFRl
c3RBc3luY01lc3NhZ2VXaXRoTm9Bcmd1bWVudHMgewotcHVibGljOgotICAgIHR5cGVkZWYgc3Rk
Ojp0dXBsZTw+IEFyZ3VtZW50czsKLQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBy
ZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0
aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJl
bmNlKCJUZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJndW1lbnRzIik7IH0KLSAgICBzdGF0aWMgY29u
c3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKLQotICAgIHN0YXRpYyB2b2lkIGNhbGxSZXBseShJUEM6
OkRlY29kZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHN0YXRpYyB2b2lk
IGNhbmNlbFJlcGx5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgc3RhdGljIElQ
Qzo6U3RyaW5nUmVmZXJlbmNlIGFzeW5jTWVzc2FnZVJlcGx5TmFtZSgpIHsgcmV0dXJuIHsgIlRl
c3RBc3luY01lc3NhZ2VXaXRoTm9Bcmd1bWVudHNSZXBseSIgfTsgfQotICAgIHVzaW5nIEFzeW5j
UmVwbHkgPSBUZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJndW1lbnRzQXN5bmNSZXBseTsKLSAgICBz
dGF0aWMgdm9pZCBzZW5kKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiYsIElQQzo6Q29u
bmVjdGlvbiYpOwotICAgIHVzaW5nIFJlcGx5ID0gc3RkOjp0dXBsZTw+OwotICAgIHVzaW5nIFJl
cGx5QXJndW1lbnRzID0gc3RkOjp0dXBsZTw+OwotICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1l
bnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0K
LXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLSNlbmRpZgotCi0jaWYg
RU5BQkxFKFRFU1RfRkVBVFVSRSkKLWNsYXNzIFRlc3RBc3luY01lc3NhZ2VXaXRoTXVsdGlwbGVB
cmd1bWVudHMgewotcHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTw+IEFyZ3VtZW50czsK
LQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVy
biBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVu
Y2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJUZXN0QXN5bmNNZXNzYWdl
V2l0aE11bHRpcGxlQXJndW1lbnRzIik7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMg
PSBmYWxzZTsKLQotICAgIHN0YXRpYyB2b2lkIGNhbGxSZXBseShJUEM6OkRlY29kZXImLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wmJiwgdWludDY0X3QmJik+JiYpOwotICAgIHN0YXRpYyB2
b2lkIGNhbmNlbFJlcGx5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCYmLCB1aW50NjRfdCYm
KT4mJik7Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIGFzeW5jTWVzc2FnZVJlcGx5
TmFtZSgpIHsgcmV0dXJuIHsgIlRlc3RBc3luY01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHNS
ZXBseSIgfTsgfQotICAgIHVzaW5nIEFzeW5jUmVwbHkgPSBUZXN0QXN5bmNNZXNzYWdlV2l0aE11
bHRpcGxlQXJndW1lbnRzQXN5bmNSZXBseTsKLSAgICBzdGF0aWMgdm9pZCBzZW5kKHN0ZDo6dW5p
cXVlX3B0cjxJUEM6OkVuY29kZXI+JiYsIElQQzo6Q29ubmVjdGlvbiYsIGJvb2wgZmxhZywgdWlu
dDY0X3QgdmFsdWUpOwotICAgIHVzaW5nIFJlcGx5ID0gc3RkOjp0dXBsZTxib29sJiwgdWludDY0
X3QmPjsKLSAgICB1c2luZyBSZXBseUFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8Ym9vbCwgdWludDY0
X3Q+OwotICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1lbnRz
IG1fYXJndW1lbnRzOwotfTsKLSNlbmRpZgotCi1jbGFzcyBUZXN0U3luY01lc3NhZ2UgewotcHVi
bGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTx1aW50MzJfdD4gQXJndW1lbnRzOwotCi0gICAg
c3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3Nh
Z2VSZWNlaXZlck5hbWUoKTsgfQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1l
KCkgeyByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIlRlc3RTeW5jTWVzc2FnZSIpOyB9Ci0g
ICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gdHJ1ZTsKLQotICAgIHVzaW5nIERlbGF5ZWRS
ZXBseSA9IFRlc3RTeW5jTWVzc2FnZURlbGF5ZWRSZXBseTsKLSAgICBzdGF0aWMgdm9pZCBzZW5k
KHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiYsIElQQzo6Q29ubmVjdGlvbiYsIHVpbnQ4
X3QgcmVwbHkpOwotICAgIHVzaW5nIFJlcGx5ID0gc3RkOjp0dXBsZTx1aW50OF90Jj47Ci0gICAg
dXNpbmcgUmVwbHlBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPHVpbnQ4X3Q+OwotICAgIGV4cGxpY2l0
IFRlc3RTeW5jTWVzc2FnZSh1aW50MzJfdCBwYXJhbSkKLSAgICAgICAgOiBtX2FyZ3VtZW50cyhw
YXJhbSkKLSAgICB7Ci0gICAgfQotCi0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBj
b25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0
ZToKLSAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19OwotCi1jbGFzcyBUZXN0U3luY2hyb25v
dXNNZXNzYWdlIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8Ym9vbD4gQXJndW1l
bnRzOwotCi0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsg
cmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsgfQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1Jl
ZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIlRlc3RTeW5jaHJv
bm91c01lc3NhZ2UiKTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IHRydWU7Ci0K
LSAgICB1c2luZyBEZWxheWVkUmVwbHkgPSBUZXN0U3luY2hyb25vdXNNZXNzYWdlRGVsYXllZFJl
cGx5OwotICAgIHN0YXRpYyB2b2lkIHNlbmQoc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4m
JiwgSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgT3B0aW9uYWw8V2ViS2l0OjpUZXN0Q2xhc3NOYW1l
PiYgb3B0aW9uYWxSZXBseSk7Ci0gICAgdXNpbmcgUmVwbHkgPSBzdGQ6OnR1cGxlPE9wdGlvbmFs
PFdlYktpdDo6VGVzdENsYXNzTmFtZT4mPjsKLSAgICB1c2luZyBSZXBseUFyZ3VtZW50cyA9IHN0
ZDo6dHVwbGU8T3B0aW9uYWw8V2ViS2l0OjpUZXN0Q2xhc3NOYW1lPj47Ci0gICAgZXhwbGljaXQg
VGVzdFN5bmNocm9ub3VzTWVzc2FnZShib29sIHZhbHVlKQotICAgICAgICA6IG1fYXJndW1lbnRz
KHZhbHVlKQotICAgIHsKLSAgICB9Ci0KLSAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygp
IGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7Ci0gICAgfQotCi1wcml2
YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YlBhZ2UKLX0gLy8gbmFtZXNwYWNlIE1lc3NhZ2VzCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3Vy
Y2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L01lc3NhZ2VzU3VwZXJjbGFzcy1leHBlY3RlZC5oCl9f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX18KRGVsZXRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMSArMCwwICMjCi1uYXRpdmUKXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogU291cmNlL1dlYktpdC9TY3JpcHRz
L3dlYmtpdC9tZXNzYWdlcy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMv
d2Via2l0L21lc3NhZ2VzLnB5CShyZXZpc2lvbiAyNjEwMzgpCisrKyBTb3VyY2UvV2ViS2l0L1Nj
cmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBA
IFNZTkNIUk9OT1VTX0FUVFJJQlVURSA9ICdTeW5jaHJvbm91cycKIEFTWU5DX0FUVFJJQlVURSA9
ICdBc3luYycKIAogX2xpY2Vuc2VfaGVhZGVyID0gIiIiLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMTM0LDcgKzEzNCw3IEBAIGRlZiBtZXNzYWdlX3RvX3JlcGx5
X2ZvcndhcmRfZGVjbGFyYXRpb24KICAgICByZXR1cm4gc3Vycm91bmRfaW5fY29uZGl0aW9uKCcn
LmpvaW4ocmVzdWx0KSwgbWVzc2FnZS5jb25kaXRpb24pCiAKIAotZGVmIG1lc3NhZ2VfdG9fc3Ry
dWN0X2RlY2xhcmF0aW9uKG1lc3NhZ2UpOgorZGVmIG1lc3NhZ2VfdG9fc3RydWN0X2RlY2xhcmF0
aW9uKHJlY2VpdmVyLCBtZXNzYWdlKToKICAgICByZXN1bHQgPSBbXQogICAgIGZ1bmN0aW9uX3Bh
cmFtZXRlcnMgPSBbKGZ1bmN0aW9uX3BhcmFtZXRlcl90eXBlKHgudHlwZSwgeC5raW5kKSwgeC5u
YW1lKSBmb3IgeCBpbiBtZXNzYWdlLnBhcmFtZXRlcnNdCiAKQEAgLTE0Miw4ICsxNDIsNyBAQCBk
ZWYgbWVzc2FnZV90b19zdHJ1Y3RfZGVjbGFyYXRpb24obWVzc2FnCiAgICAgcmVzdWx0LmFwcGVu
ZCgncHVibGljOlxuJykKICAgICByZXN1bHQuYXBwZW5kKCcgICAgdHlwZWRlZiAlcyBBcmd1bWVu
dHM7XG4nICUgYXJndW1lbnRzX3R5cGUobWVzc2FnZSkpCiAgICAgcmVzdWx0LmFwcGVuZCgnXG4n
KQotICAgIHJlc3VsdC5hcHBlbmQoJyAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVj
ZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9XG4nKQotICAgIHJl
c3VsdC5hcHBlbmQoJyAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0
dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCIlcyIpOyB9XG4nICUgbWVzc2FnZS5uYW1lKQorICAg
IHJlc3VsdC5hcHBlbmQoJyAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1
cm4gSVBDOjpNZXNzYWdlTmFtZTo6JXNfJXM7IH1cbicgJSAocmVjZWl2ZXIubmFtZSwgbWVzc2Fn
ZS5uYW1lKSkKICAgICByZXN1bHQuYXBwZW5kKCcgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5j
ID0gJXM7XG4nICUgKCdmYWxzZScsICd0cnVlJylbbWVzc2FnZS5yZXBseV9wYXJhbWV0ZXJzICE9
IE5vbmUgYW5kIG5vdCBtZXNzYWdlLmhhc19hdHRyaWJ1dGUoQVNZTkNfQVRUUklCVVRFKV0pCiAg
ICAgcmVzdWx0LmFwcGVuZCgnXG4nKQogICAgIGlmIG1lc3NhZ2UucmVwbHlfcGFyYW1ldGVycyAh
PSBOb25lOgpAQCAtMTUzLDcgKzE1Miw3IEBAIGRlZiBtZXNzYWdlX3RvX3N0cnVjdF9kZWNsYXJh
dGlvbihtZXNzYWcKICAgICAgICAgICAgIG1vdmVfcGFyYW1ldGVycyA9ICcsICcuam9pbihbbW92
ZV90eXBlKHgudHlwZSkgZm9yIHggaW4gbWVzc2FnZS5yZXBseV9wYXJhbWV0ZXJzXSkKICAgICAg
ICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBzdGF0aWMgdm9pZCBjYWxsUmVwbHkoSVBDOjpEZWNv
ZGVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCglcyk+JiYpO1xuJyAlIG1vdmVfcGFyYW1ldGVy
cykKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBzdGF0aWMgdm9pZCBjYW5jZWxSZXBs
eShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCVzKT4mJik7XG4nICUgbW92ZV9wYXJhbWV0ZXJzKQot
ICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5j
ZSBhc3luY01lc3NhZ2VSZXBseU5hbWUoKSB7IHJldHVybiB7ICIlc1JlcGx5IiB9OyB9XG4nICUg
bWVzc2FnZS5uYW1lKQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIHN0YXRpYyBJUEM6
Ok1lc3NhZ2VOYW1lIGFzeW5jTWVzc2FnZVJlcGx5TmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2Fn
ZU5hbWU6OiVzXyVzUmVwbHk7IH1cbicgJSAocmVjZWl2ZXIubmFtZSwgbWVzc2FnZS5uYW1lKSkK
ICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICB1c2luZyBBc3luY1JlcGx5ID0gJXNBc3lu
Y1JlcGx5O1xuJyAlIG1lc3NhZ2UubmFtZSkKICAgICAgICAgZWxpZiBtZXNzYWdlLmhhc19hdHRy
aWJ1dGUoU1lOQ0hST05PVVNfQVRUUklCVVRFKToKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQo
JyAgICB1c2luZyBEZWxheWVkUmVwbHkgPSAlc0RlbGF5ZWRSZXBseTtcbicgJSBtZXNzYWdlLm5h
bWUpCkBAIC0yNzcsOCArMjc2LDkgQEAgZGVmIGZvcndhcmRfZGVjbGFyYXRpb25zX2FuZF9oZWFk
ZXJzKHJlYwogCiAgICAgaGVhZGVycyA9IHNldChbCiAgICAgICAgICciQXJndW1lbnRDb2RlcnMu
aCInLAotICAgICAgICAnPHd0Zi9Gb3J3YXJkLmg+JywKICAgICAgICAgJyJDb25uZWN0aW9uLmgi
JywKKyAgICAgICAgJyJNZXNzYWdlTmFtZXMuaCInLAorICAgICAgICAnPHd0Zi9Gb3J3YXJkLmg+
JywKICAgICAgICAgJzx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4nLAogICAgICAgICAnIiVz
TWVzc2FnZXNSZXBsaWVzLmgiJyAlIHJlY2VpdmVyLm5hbWUsCiAgICAgXSkKQEAgLTMzNSw2ICsz
MzUsNyBAQCBkZWYgZm9yd2FyZF9kZWNsYXJhdGlvbnNfYW5kX2hlYWRlcnNfZm9yCiAKICAgICBo
ZWFkZXJzID0gc2V0KFsKICAgICAgICAgJzx3dGYvRm9yd2FyZC5oPicsCisgICAgICAgICciTWVz
c2FnZU5hbWVzLmgiJywKICAgICBdKQogCiAgICAgbm9uX3RlbXBsYXRlX3d0Zl90eXBlcyA9IGZy
b3plbnNldChbCkBAIC00NDAsMTIgKzQ0MSwxMiBAQCBkZWYgZ2VuZXJhdGVfbWVzc2FnZXNfaGVh
ZGVyKHJlY2VpdmVyKToKIAogICAgIHJlc3VsdC5hcHBlbmQoJ25hbWVzcGFjZSBNZXNzYWdlcyB7
XG5uYW1lc3BhY2UgJXMge1xuJyAlIHJlY2VpdmVyLm5hbWUpCiAgICAgcmVzdWx0LmFwcGVuZCgn
XG4nKQotICAgIHJlc3VsdC5hcHBlbmQoJ3N0YXRpYyBpbmxpbmUgSVBDOjpTdHJpbmdSZWZlcmVu
Y2UgbWVzc2FnZVJlY2VpdmVyTmFtZSgpXG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJ3N0YXRpYyBp
bmxpbmUgSVBDOjpSZWNlaXZlck5hbWUgbWVzc2FnZVJlY2VpdmVyTmFtZSgpXG4nKQogICAgIHJl
c3VsdC5hcHBlbmQoJ3tcbicpCi0gICAgcmVzdWx0LmFwcGVuZCgnICAgIHJldHVybiBJUEM6OlN0
cmluZ1JlZmVyZW5jZSgiJXMiKTtcbicgJSByZWNlaXZlci5uYW1lKQorICAgIHJlc3VsdC5hcHBl
bmQoJyAgICByZXR1cm4gSVBDOjpSZWNlaXZlck5hbWU6OiVzO1xuJyAlIHJlY2VpdmVyLm5hbWUp
CiAgICAgcmVzdWx0LmFwcGVuZCgnfVxuJykKICAgICByZXN1bHQuYXBwZW5kKCdcbicpCi0gICAg
cmVzdWx0LmFwcGVuZCgnXG4nLmpvaW4oW21lc3NhZ2VfdG9fc3RydWN0X2RlY2xhcmF0aW9uKHgp
IGZvciB4IGluIHJlY2VpdmVyLm1lc3NhZ2VzXSkpCisgICAgcmVzdWx0LmFwcGVuZCgnXG4nLmpv
aW4oW21lc3NhZ2VfdG9fc3RydWN0X2RlY2xhcmF0aW9uKHJlY2VpdmVyLCB4KSBmb3IgeCBpbiBy
ZWNlaXZlci5tZXNzYWdlc10pKQogICAgIHJlc3VsdC5hcHBlbmQoJ1xuJykKICAgICByZXN1bHQu
YXBwZW5kKCd9IC8vIG5hbWVzcGFjZSAlc1xufSAvLyBuYW1lc3BhY2UgTWVzc2FnZXNcbicgJSBy
ZWNlaXZlci5uYW1lKQogCkBAIC04NDgsMyArODQ5LDE3NCBAQCBkZWYgZ2VuZXJhdGVfbWVzc2Fn
ZV9oYW5kbGVyKHJlY2VpdmVyKToKICAgICAgICAgcmVzdWx0LmFwcGVuZCgnXG4jZW5kaWYgLy8g
JXNcbicgJSByZWNlaXZlci5jb25kaXRpb24pCiAKICAgICByZXR1cm4gJycuam9pbihyZXN1bHQp
CisKKworZGVmIGdlbmVyYXRlX21lc3NhZ2VfbmFtZXNfaGVhZGVyKHJlY2VpdmVycyk6CisgICAg
cmVzdWx0ID0gW10KKyAgICByZXN1bHQuYXBwZW5kKF9saWNlbnNlX2hlYWRlcikKKyAgICByZXN1
bHQuYXBwZW5kKCcjcHJhZ21hIG9uY2VcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnXG4nKQorICAg
IHJlc3VsdC5hcHBlbmQoJyNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPlxuJykKKyAgICByZXN1
bHQuYXBwZW5kKCdcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnbmFtZXNwYWNlIElQQyB7XG4nKQor
ICAgIHJlc3VsdC5hcHBlbmQoJ1xuJykKKyAgICByZXN1bHQuYXBwZW5kKCdlbnVtIGNsYXNzIFJl
Y2VpdmVyTmFtZSA6IHVpbnQ4X3QgeycpCisKKyAgICBlbnVtX3ZhbHVlID0gMQorICAgIGZpcnN0
X3JlY2VpdmVyID0gVHJ1ZQorICAgIGZvciByZWNlaXZlciBpbiByZWNlaXZlcnM6CisgICAgICAg
IHJlc3VsdC5hcHBlbmQoJ1xuJykKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgICcpCisgICAg
ICAgIGlmIG5vdCBmaXJzdF9yZWNlaXZlcjoKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJywg
JykKKyAgICAgICAgZmlyc3RfcmVjZWl2ZXIgPSBGYWxzZQorICAgICAgICByZXN1bHQuYXBwZW5k
KCclcyA9ICVkJyAlIChyZWNlaXZlci5uYW1lLCBlbnVtX3ZhbHVlKSkKKyAgICAgICAgZW51bV92
YWx1ZSA9IGVudW1fdmFsdWUgKyAxCisgICAgcmVzdWx0LmFwcGVuZCgnXG4gICAgLCBJUEMgPSAl
ZCcgJSBlbnVtX3ZhbHVlKQorICAgIGVudW1fdmFsdWUgPSBlbnVtX3ZhbHVlICsgMQorICAgIHJl
c3VsdC5hcHBlbmQoJ1xuICAgICwgQXN5bmNSZXBseSA9ICVkJyAlIGVudW1fdmFsdWUpCisgICAg
ZW51bV92YWx1ZSA9IGVudW1fdmFsdWUgKyAxCisgICAgcmVzdWx0LmFwcGVuZCgnXG4gICAgLCBJ
bnZhbGlkID0gJWQnICUgZW51bV92YWx1ZSkKKyAgICByZXN1bHQuYXBwZW5kKCdcbn07XG4nKQor
ICAgIHJlc3VsdC5hcHBlbmQoJ1xuJykKKyAgICByZXN1bHQuYXBwZW5kKCdlbnVtIGNsYXNzIE1l
c3NhZ2VOYW1lIDogdWludDE2X3QgeycpCisKKyAgICBlbnVtX3ZhbHVlID0gMQorICAgIGZpcnN0
X21lc3NhZ2UgPSBUcnVlCisgICAgZm9yIHJlY2VpdmVyIGluIHJlY2VpdmVyczoKKyAgICAgICAg
Zm9yIG1lc3NhZ2UgaW4gcmVjZWl2ZXIubWVzc2FnZXM6CisgICAgICAgICAgICByZXN1bHQuYXBw
ZW5kKCdcbicpCisgICAgICAgICAgICBpZiBtZXNzYWdlLmNvbmRpdGlvbjoKKyAgICAgICAgICAg
ICAgICByZXN1bHQuYXBwZW5kKCcjaWYgJXNcbicgJSBtZXNzYWdlLmNvbmRpdGlvbikKKyAgICAg
ICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICAnKQorICAgICAgICAgICAgaWYgbm90IGZpcnN0X21l
c3NhZ2U6CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnLCAnKQorICAgICAgICAgICAg
Zmlyc3RfbWVzc2FnZSA9IEZhbHNlCisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCclc18lcyA9
ICVkJyAlIChyZWNlaXZlci5uYW1lLCBtZXNzYWdlLm5hbWUsIGVudW1fdmFsdWUpKQorICAgICAg
ICAgICAgZW51bV92YWx1ZSA9IGVudW1fdmFsdWUgKyAxCisgICAgICAgICAgICBpZiBtZXNzYWdl
Lmhhc19hdHRyaWJ1dGUoQVNZTkNfQVRUUklCVVRFKToKKyAgICAgICAgICAgICAgICByZXN1bHQu
YXBwZW5kKCdcbiAgICAsICVzXyVzUmVwbHkgPSAlZCcgJSAocmVjZWl2ZXIubmFtZSwgbWVzc2Fn
ZS5uYW1lLCBlbnVtX3ZhbHVlKSkKKyAgICAgICAgICAgICAgICBlbnVtX3ZhbHVlID0gZW51bV92
YWx1ZSArIDEKKyAgICAgICAgICAgIGlmIG1lc3NhZ2UuY29uZGl0aW9uOgorICAgICAgICAgICAg
ICAgIHJlc3VsdC5hcHBlbmQoJ1xuI2VuZGlmJykKKyAgICByZXN1bHQuYXBwZW5kKCdcbiAgICAs
IFdyYXBwZWRBc3luY01lc3NhZ2VGb3JUZXN0aW5nID0gJWQnICUgZW51bV92YWx1ZSkKKyAgICBl
bnVtX3ZhbHVlID0gZW51bV92YWx1ZSArIDEKKyAgICByZXN1bHQuYXBwZW5kKCdcbiAgICAsIFN5
bmNNZXNzYWdlUmVwbHkgPSAlZCcgJSBlbnVtX3ZhbHVlKQorICAgIGVudW1fdmFsdWUgPSBlbnVt
X3ZhbHVlICsgMQorICAgIHJlc3VsdC5hcHBlbmQoJ1xuICAgICwgSW5pdGlhbGl6ZUNvbm5lY3Rp
b24gPSAlZCcgJSBlbnVtX3ZhbHVlKQorICAgIGVudW1fdmFsdWUgPSBlbnVtX3ZhbHVlICsgMQor
ICAgIHJlc3VsdC5hcHBlbmQoJ1xuICAgICwgTGVnYWN5U2Vzc2lvblN0YXRlID0gJWQnICUgZW51
bV92YWx1ZSkKKyAgICByZXN1bHQuYXBwZW5kKCdcbn07XG4nKQorICAgIHJlc3VsdC5hcHBlbmQo
J1xuJykKKyAgICByZXN1bHQuYXBwZW5kKCdSZWNlaXZlck5hbWUgcmVjZWl2ZXJOYW1lKE1lc3Nh
Z2VOYW1lKTtcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnY29uc3QgY2hhciogZGVzY3JpcHRpb24o
TWVzc2FnZU5hbWUpO1xuJykKKyAgICByZXN1bHQuYXBwZW5kKCdib29sIGlzVmFsaWRNZXNzYWdl
TmFtZShNZXNzYWdlTmFtZSk7XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJ1xuJykKKyAgICByZXN1
bHQuYXBwZW5kKCd9IC8vIG5hbWVzcGFjZSBJUENcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnXG4n
KQorICAgIHJlc3VsdC5hcHBlbmQoJ25hbWVzcGFjZSBXVEYge1xuJykKKyAgICByZXN1bHQuYXBw
ZW5kKCdcbicpCisgICAgcmVzdWx0LmFwcGVuZCgndGVtcGxhdGU8PlxuJykKKyAgICByZXN1bHQu
YXBwZW5kKCdjbGFzcyBIYXNDdXN0b21Jc1ZhbGlkRW51bTxJUEM6Ok1lc3NhZ2VOYW1lPiA6IHB1
YmxpYyBzdGQ6OnRydWVfdHlwZSB7IH07XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJ3RlbXBsYXRl
PHR5cGVuYW1lIEUsIHR5cGVuYW1lIFQsIHR5cGVuYW1lID0gc3RkOjplbmFibGVfaWZfdDxzdGQ6
OmlzX3NhbWU8RSwgSVBDOjpNZXNzYWdlTmFtZT46OnZhbHVlPj5cbicpCisgICAgcmVzdWx0LmFw
cGVuZCgnYm9vbCBpc1ZhbGlkRW51bShUIG1lc3NhZ2VOYW1lKVxuJykKKyAgICByZXN1bHQuYXBw
ZW5kKCd7XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJyAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihU
KSA9PSBzaXplb2YoSVBDOjpNZXNzYWdlTmFtZSksICJpc1ZhbGlkRW51bTxNZXNzYWdlTmFtZT4g
c2hvdWxkIG9ubHkgYmUgY2FsbGVkIHdpdGggMTYtYml0IHR5cGVzIik7XG4nKQorICAgIHJlc3Vs
dC5hcHBlbmQoJyAgICByZXR1cm4gSVBDOjppc1ZhbGlkTWVzc2FnZU5hbWUoc3RhdGljX2Nhc3Q8
SVBDOjpNZXNzYWdlTmFtZT4obWVzc2FnZU5hbWUpKTtcbicpCisgICAgcmVzdWx0LmFwcGVuZCgn
fTtcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnXG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJ30gLy8g
bmFtZXNwYWNlIFdURlxuJykKKyAgICByZXR1cm4gJycuam9pbihyZXN1bHQpCisKKworZGVmIGdl
bmVyYXRlX21lc3NhZ2VfbmFtZXNfaW1wbGVtZW50YXRpb24ocmVjZWl2ZXJzKToKKyAgICByZXN1
bHQgPSBbXQorICAgIHJlc3VsdC5hcHBlbmQoX2xpY2Vuc2VfaGVhZGVyKQorICAgIHJlc3VsdC5h
cHBlbmQoJyNpbmNsdWRlICJjb25maWcuaCJcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnI2luY2x1
ZGUgIk1lc3NhZ2VOYW1lcy5oIlxuJykKKyAgICByZXN1bHQuYXBwZW5kKCdcbicpCisgICAgcmVz
dWx0LmFwcGVuZCgnbmFtZXNwYWNlIElQQyB7XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJ1xuJykK
KyAgICByZXN1bHQuYXBwZW5kKCdjb25zdCBjaGFyKiBkZXNjcmlwdGlvbihNZXNzYWdlTmFtZSBu
YW1lKVxuJykKKyAgICByZXN1bHQuYXBwZW5kKCd7XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJyAg
ICBzd2l0Y2ggKG5hbWUpIHtcbicpCisgICAgZm9yIHJlY2VpdmVyIGluIHJlY2VpdmVyczoKKyAg
ICAgICAgZm9yIG1lc3NhZ2UgaW4gcmVjZWl2ZXIubWVzc2FnZXM6CisgICAgICAgICAgICBpZiBt
ZXNzYWdlLmNvbmRpdGlvbjoKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcjaWYgJXNc
bicgJSBtZXNzYWdlLmNvbmRpdGlvbikKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBj
YXNlIE1lc3NhZ2VOYW1lOjolc18lczpcbicgJSAocmVjZWl2ZXIubmFtZSwgbWVzc2FnZS5uYW1l
KSkKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICAgICAgcmV0dXJuICIlczo6JXMiO1xu
JyAlIChyZWNlaXZlci5uYW1lLCBtZXNzYWdlLm5hbWUpKQorICAgICAgICAgICAgaWYgbWVzc2Fn
ZS5oYXNfYXR0cmlidXRlKEFTWU5DX0FUVFJJQlVURSk6CisgICAgICAgICAgICAgICAgcmVzdWx0
LmFwcGVuZCgnICAgIGNhc2UgTWVzc2FnZU5hbWU6OiVzXyVzUmVwbHk6XG4nICUgKHJlY2VpdmVy
Lm5hbWUsIG1lc3NhZ2UubmFtZSkpCisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAg
ICAgICByZXR1cm4gIiVzOjolc1JlcGx5IjtcbicgJSAocmVjZWl2ZXIubmFtZSwgbWVzc2FnZS5u
YW1lKSkKKyAgICAgICAgICAgIGlmIG1lc3NhZ2UuY29uZGl0aW9uOgorICAgICAgICAgICAgICAg
IHJlc3VsdC5hcHBlbmQoJyNlbmRpZlxuJykKKyAgICByZXN1bHQuYXBwZW5kKCcgICAgY2FzZSBN
ZXNzYWdlTmFtZTo6V3JhcHBlZEFzeW5jTWVzc2FnZUZvclRlc3Rpbmc6XG4nKQorICAgIHJlc3Vs
dC5hcHBlbmQoJyAgICAgICAgcmV0dXJuICJJUEM6OldyYXBwZWRBc3luY01lc3NhZ2VGb3JUZXN0
aW5nIjtcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnICAgIGNhc2UgTWVzc2FnZU5hbWU6OlN5bmNN
ZXNzYWdlUmVwbHk6XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJyAgICAgICAgcmV0dXJuICJJUEM6
OlN5bmNNZXNzYWdlUmVwbHkiO1xuJykKKyAgICByZXN1bHQuYXBwZW5kKCcgICAgY2FzZSBNZXNz
YWdlTmFtZTo6SW5pdGlhbGl6ZUNvbm5lY3Rpb246XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJyAg
ICAgICAgcmV0dXJuICJJUEM6OkluaXRpYWxpemVDb25uZWN0aW9uIjtcbicpCisgICAgcmVzdWx0
LmFwcGVuZCgnICAgIGNhc2UgTWVzc2FnZU5hbWU6OkxlZ2FjeVNlc3Npb25TdGF0ZTpcbicpCisg
ICAgcmVzdWx0LmFwcGVuZCgnICAgICAgICByZXR1cm4gIklQQzo6TGVnYWN5U2Vzc2lvblN0YXRl
IjtcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnICAgIH1cbicpCisgICAgcmVzdWx0LmFwcGVuZCgn
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpO1xuJykKKyAgICByZXN1bHQuYXBwZW5kKCcgICAgcmV0
dXJuICI8aW52YWxpZCBtZXNzYWdlIG5hbWU+IjtcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnfVxu
JykKKyAgICByZXN1bHQuYXBwZW5kKCdcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnUmVjZWl2ZXJO
YW1lIHJlY2VpdmVyTmFtZShNZXNzYWdlTmFtZSBtZXNzYWdlTmFtZSlcbicpCisgICAgcmVzdWx0
LmFwcGVuZCgne1xuJykKKyAgICByZXN1bHQuYXBwZW5kKCcgICAgc3dpdGNoIChtZXNzYWdlTmFt
ZSkge1xuJykKKyAgICBmb3IgcmVjZWl2ZXIgaW4gcmVjZWl2ZXJzOgorICAgICAgICBmb3IgbWVz
c2FnZSBpbiByZWNlaXZlci5tZXNzYWdlczoKKyAgICAgICAgICAgIGlmIG1lc3NhZ2UuY29uZGl0
aW9uOgorICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyNpZiAlc1xuJyAlIG1lc3NhZ2Uu
Y29uZGl0aW9uKQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIGNhc2UgTWVzc2FnZU5h
bWU6OiVzXyVzOlxuJyAlIChyZWNlaXZlci5uYW1lLCBtZXNzYWdlLm5hbWUpKQorICAgICAgICAg
ICAgaWYgbWVzc2FnZS5jb25kaXRpb246CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgn
I2VuZGlmXG4nKQorICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgICAgIHJldHVybiBSZWNlaXZl
ck5hbWU6OiVzO1xuJyAlIHJlY2VpdmVyLm5hbWUpCisgICAgZm9yIHJlY2VpdmVyIGluIHJlY2Vp
dmVyczoKKyAgICAgICAgZm9yIG1lc3NhZ2UgaW4gcmVjZWl2ZXIubWVzc2FnZXM6CisgICAgICAg
ICAgICBpZiBtZXNzYWdlLmhhc19hdHRyaWJ1dGUoQVNZTkNfQVRUUklCVVRFKToKKyAgICAgICAg
ICAgICAgICBpZiBtZXNzYWdlLmNvbmRpdGlvbjoKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0
LmFwcGVuZCgnI2lmICVzXG4nICUgbWVzc2FnZS5jb25kaXRpb24pCisgICAgICAgICAgICAgICAg
cmVzdWx0LmFwcGVuZCgnICAgIGNhc2UgTWVzc2FnZU5hbWU6OiVzXyVzUmVwbHk6XG4nICUgKHJl
Y2VpdmVyLm5hbWUsIG1lc3NhZ2UubmFtZSkpCisgICAgICAgICAgICAgICAgaWYgbWVzc2FnZS5j
b25kaXRpb246CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyNlbmRpZlxuJykK
KyAgICByZXN1bHQuYXBwZW5kKCcgICAgICAgIHJldHVybiBSZWNlaXZlck5hbWU6OkFzeW5jUmVw
bHk7XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXcmFwcGVk
QXN5bmNNZXNzYWdlRm9yVGVzdGluZzpcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnICAgIGNhc2Ug
TWVzc2FnZU5hbWU6OlN5bmNNZXNzYWdlUmVwbHk6XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJyAg
ICBjYXNlIE1lc3NhZ2VOYW1lOjpJbml0aWFsaXplQ29ubmVjdGlvbjpcbicpCisgICAgcmVzdWx0
LmFwcGVuZCgnICAgIGNhc2UgTWVzc2FnZU5hbWU6OkxlZ2FjeVNlc3Npb25TdGF0ZTpcbicpCisg
ICAgcmVzdWx0LmFwcGVuZCgnICAgICAgICByZXR1cm4gUmVjZWl2ZXJOYW1lOjpJUEM7XG4nKQor
ICAgIHJlc3VsdC5hcHBlbmQoJyAgICB9XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJyAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTtcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnICAgIHJldHVybiBSZWNl
aXZlck5hbWU6OkludmFsaWQ7XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJ31cbicpCisgICAgcmVz
dWx0LmFwcGVuZCgnXG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJ2Jvb2wgaXNWYWxpZE1lc3NhZ2VO
YW1lKE1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lKVxuJykKKyAgICByZXN1bHQuYXBwZW5kKCd7XG4n
KQorICAgIGZvciByZWNlaXZlciBpbiByZWNlaXZlcnM6CisgICAgICAgIGZvciBtZXNzYWdlIGlu
IHJlY2VpdmVyLm1lc3NhZ2VzOgorICAgICAgICAgICAgaWYgbWVzc2FnZS5jb25kaXRpb246Cisg
ICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnI2lmICVzXG4nICUgbWVzc2FnZS5jb25kaXRp
b24pCisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgaWYgKG1lc3NhZ2VOYW1lID09IElQ
Qzo6TWVzc2FnZU5hbWU6OiVzXyVzKVxuJyAlIChyZWNlaXZlci5uYW1lLCBtZXNzYWdlLm5hbWUp
KQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgICAgICByZXR1cm4gdHJ1ZTtcbicpCisg
ICAgICAgICAgICBpZiBtZXNzYWdlLmhhc19hdHRyaWJ1dGUoQVNZTkNfQVRUUklCVVRFKToKKyAg
ICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgaWYgKG1lc3NhZ2VOYW1lID09IElQQzo6
TWVzc2FnZU5hbWU6OiVzXyVzUmVwbHkpXG4nICUgKHJlY2VpdmVyLm5hbWUsIG1lc3NhZ2UubmFt
ZSkpCisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgICAgICByZXR1cm4gdHJ1ZTtc
bicpCisgICAgICAgICAgICBpZiBtZXNzYWdlLmNvbmRpdGlvbjoKKyAgICAgICAgICAgICAgICBy
ZXN1bHQuYXBwZW5kKCcjZW5kaWZcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnICAgIGlmIChtZXNz
YWdlTmFtZSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpXcmFwcGVkQXN5bmNNZXNzYWdlRm9yVGVzdGlu
ZylcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnICAgICAgICByZXR1cm4gdHJ1ZTtcbicpCisgICAg
cmVzdWx0LmFwcGVuZCgnICAgIGlmIChtZXNzYWdlTmFtZSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpT
eW5jTWVzc2FnZVJlcGx5KVxuJykKKyAgICByZXN1bHQuYXBwZW5kKCcgICAgICAgIHJldHVybiB0
cnVlO1xuJykKKyAgICByZXN1bHQuYXBwZW5kKCcgICAgaWYgKG1lc3NhZ2VOYW1lID09IElQQzo6
TWVzc2FnZU5hbWU6OkluaXRpYWxpemVDb25uZWN0aW9uKVxuJykKKyAgICByZXN1bHQuYXBwZW5k
KCcgICAgICAgIHJldHVybiB0cnVlO1xuJykKKyAgICByZXN1bHQuYXBwZW5kKCcgICAgaWYgKG1l
c3NhZ2VOYW1lID09IElQQzo6TWVzc2FnZU5hbWU6OkxlZ2FjeVNlc3Npb25TdGF0ZSlcbicpCisg
ICAgcmVzdWx0LmFwcGVuZCgnICAgICAgICByZXR1cm4gdHJ1ZTtcbicpCisgICAgcmVzdWx0LmFw
cGVuZCgnICAgIHJldHVybiBmYWxzZTtcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnfTtcbicpCisg
ICAgcmVzdWx0LmFwcGVuZCgnXG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJ30gLy8gbmFtZXNwYWNl
IElQQ1xuJykKKyAgICByZXR1cm4gJycuam9pbihyZXN1bHQpCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1NjcmlwdHMvd2Via2l0L3Rlc3QtbGVnYWN5LW1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdC1sZWdhY3ktbWVzc2FnZXMuaW4JKHJldmlz
aW9uIDI2MTAzOCkKKysrIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdC1sZWdhY3kt
bWVzc2FnZXMuaW4JKG5vbmV4aXN0ZW50KQpAQCAtMSw3NyArMCwwIEBACi0jIENvcHlyaWdodCAo
QykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
IyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJyBBTkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSMgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotIyBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUgotIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0j
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSCi0jIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0jIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLSNpZiBFTkFCTEUoV0VCS0lUMikKLSNpZiBORVNU
RURfTUFTVEVSX0NPTkRJVElPTiB8fCBNQVNURVJfT1IgJiYgTUFTVEVSX0FORAotCi1tZXNzYWdl
cyAtPiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsKLSAgICBMb2FkVVJMKFN0cmluZyB1cmwpCi0j
aWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLSAgICBMb2FkU29tZXRoaW5nKFN0cmluZyB1cmwpCi0j
aWYgTkVTVEVEX01FU1NBR0VfQ09ORElUSU9OIHx8IFNPTUVfT1RIRVJfTUVTU0FHRV9DT05ESVRJ
T04KLSAgICBUb3VjaEV2ZW50KFdlYktpdDo6V2ViVG91Y2hFdmVudCBldmVudCkKLSNlbmRpZgot
I2lmIE5FU1RFRF9NRVNTQUdFX0NPTkRJVElPTiAmJiBTT01FX09USEVSX01FU1NBR0VfQ09ORElU
SU9OCi0gICAgQWRkRXZlbnQoV2ViS2l0OjpXZWJUb3VjaEV2ZW50IGV2ZW50KQotI2VuZGlmCi0g
ICAgTG9hZFNvbWV0aGluZ0Vsc2UoU3RyaW5nIHVybCkKLSNlbmRpZgotICAgIERpZFJlY2VpdmVQ
b2xpY3lEZWNpc2lvbih1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBsaXN0ZW5lcklELCB1aW50
MzJfdCBwb2xpY3lBY3Rpb24pCi0gICAgQ2xvc2UoKQotCi0gICAgUHJlZmVyZW5jZXNEaWRDaGFu
Z2UoV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlIHN0b3JlKQotICAgIFNlbmREb3VibGVBbmRG
bG9hdChkb3VibGUgZCwgZmxvYXQgZikKLSAgICBTZW5kSW50cyhWZWN0b3I8dWludDY0X3Q+IGlu
dHMsIFZlY3RvcjxWZWN0b3I8dWludDY0X3Q+PiBpbnRWZWN0b3JzKQotCi0gICAgQ3JlYXRlUGx1
Z2luKHVpbnQ2NF90IHBsdWdpbkluc3RhbmNlSUQsIFdlYktpdDo6UGx1Z2luOjpQYXJhbWV0ZXJz
IHBhcmFtZXRlcnMpIC0+IChib29sIHJlc3VsdCkKLSAgICBSdW5KYXZhU2NyaXB0QWxlcnQodWlu
dDY0X3QgZnJhbWVJRCwgU3RyaW5nIG1lc3NhZ2UpIC0+ICgpCi0gICAgR2V0UGx1Z2lucyhib29s
IHJlZnJlc2gpIC0+IChWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4gcGx1Z2lucykKLSAgICBH
ZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbihTdHJpbmcgcGx1Z2luUGF0aCkgLT4gKElQQzo6Q29u
bmVjdGlvbjo6SGFuZGxlIGNvbm5lY3Rpb25IYW5kbGUpIFN5bmNocm9ub3VzCi0KLSAgICBUZXN0
TXVsdGlwbGVBdHRyaWJ1dGVzKCkgLT4gKCkgV2FudHNDb25uZWN0aW9uIFN5bmNocm9ub3VzCi0K
LSAgICBUZXN0UGFyYW1ldGVyQXR0cmlidXRlcyhbQXR0cmlidXRlT25lIEF0dHJpYnV0ZVR3b10g
dWludDY0X3QgZm9vLCBkb3VibGUgYmFyLCBbQXR0cmlidXRlVGhyZWVdIGRvdWJsZSBiYXopCi0K
LSAgICBUZW1wbGF0ZVRlc3QoSGFzaE1hcDxTdHJpbmcsIHN0ZDo6cGFpcjxTdHJpbmcsIHVpbnQ2
NF90Pj4gYSkKLQotICAgIFNldFZpZGVvTGF5ZXJJRChXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpQ
bGF0Zm9ybUxheWVySUQgdmlkZW9MYXllcklEKQotCi0jaWYgUExBVEZPUk0oTUFDKQotICAgIERp
ZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKElQQzo6TWFjaFBvcnQgY29ubmVjdGlvbklkZW50
aWZpZXIpCi0jZW5kaWYKLQotI2lmIFBMQVRGT1JNKE1BQykKLSAgICAjIEtleWJvYXJkIHN1cHBv
cnQKLSAgICBJbnRlcnByZXRLZXlFdmVudCh1aW50MzJfdCB0eXBlKSAtPiAoVmVjdG9yPFdlYkNv
cmU6OktleXByZXNzQ29tbWFuZD4gY29tbWFuZE5hbWUpCi0jZW5kaWYKLQotI2lmIEVOQUJMRShE
RVBSRUNBVEVEX0ZFQVRVUkUpCi0gICAgRGVwcmVjYXRlZE9wZXJhdGlvbihJUEM6OkR1bW15VHlw
ZSBkdW1teSkKLSNlbmRpZgotCi0jaWYgRU5BQkxFKEVYUEVSSU1FTlRBTF9GRUFUVVJFKQotICAg
IEV4cGVyaW1lbnRhbE9wZXJhdGlvbihJUEM6OkR1bW15VHlwZSBkdW1teSkKLSNlbmRpZgotfQot
Ci0jZW5kaWYKLSNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0
LWxlZ2FjeS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMv
d2Via2l0L3Rlc3QtbGVnYWN5Lm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyNjEwMzgpCShmcm9tIFNv
dXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdC1sZWdhY3ktbWVzc2FnZXMuaW46MjYxMDM4
KQorKysgU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0LWxlZ2FjeS5tZXNzYWdlcy5p
bgkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDc3IEBACisjIENvcHlyaWdodCAoQykgMjAxMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
IyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBB
TkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisKKyNpZiBFTkFCTEUoV0VCS0lUMikKKyNpZiBORVNURURfTUFTVEVS
X0NPTkRJVElPTiB8fCBNQVNURVJfT1IgJiYgTUFTVEVSX0FORAorCittZXNzYWdlcyAtPiBXZWJQ
YWdlIExlZ2FjeVJlY2VpdmVyIHsKKyAgICBMb2FkVVJMKFN0cmluZyB1cmwpCisjaWYgRU5BQkxF
KFRPVUNIX0VWRU5UUykKKyAgICBMb2FkU29tZXRoaW5nKFN0cmluZyB1cmwpCisjaWYgTkVTVEVE
X01FU1NBR0VfQ09ORElUSU9OIHx8IFNPTUVfT1RIRVJfTUVTU0FHRV9DT05ESVRJT04KKyAgICBU
b3VjaEV2ZW50KFdlYktpdDo6V2ViVG91Y2hFdmVudCBldmVudCkKKyNlbmRpZgorI2lmIE5FU1RF
RF9NRVNTQUdFX0NPTkRJVElPTiAmJiBTT01FX09USEVSX01FU1NBR0VfQ09ORElUSU9OCisgICAg
QWRkRXZlbnQoV2ViS2l0OjpXZWJUb3VjaEV2ZW50IGV2ZW50KQorI2VuZGlmCisgICAgTG9hZFNv
bWV0aGluZ0Vsc2UoU3RyaW5nIHVybCkKKyNlbmRpZgorICAgIERpZFJlY2VpdmVQb2xpY3lEZWNp
c2lvbih1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBsaXN0ZW5lcklELCB1aW50MzJfdCBwb2xp
Y3lBY3Rpb24pCisgICAgQ2xvc2UoKQorCisgICAgUHJlZmVyZW5jZXNEaWRDaGFuZ2UoV2ViS2l0
OjpXZWJQcmVmZXJlbmNlc1N0b3JlIHN0b3JlKQorICAgIFNlbmREb3VibGVBbmRGbG9hdChkb3Vi
bGUgZCwgZmxvYXQgZikKKyAgICBTZW5kSW50cyhWZWN0b3I8dWludDY0X3Q+IGludHMsIFZlY3Rv
cjxWZWN0b3I8dWludDY0X3Q+PiBpbnRWZWN0b3JzKQorCisgICAgQ3JlYXRlUGx1Z2luKHVpbnQ2
NF90IHBsdWdpbkluc3RhbmNlSUQsIFdlYktpdDo6UGx1Z2luOjpQYXJhbWV0ZXJzIHBhcmFtZXRl
cnMpIC0+IChib29sIHJlc3VsdCkKKyAgICBSdW5KYXZhU2NyaXB0QWxlcnQodWludDY0X3QgZnJh
bWVJRCwgU3RyaW5nIG1lc3NhZ2UpIC0+ICgpCisgICAgR2V0UGx1Z2lucyhib29sIHJlZnJlc2gp
IC0+IChWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4gcGx1Z2lucykKKyAgICBHZXRQbHVnaW5Q
cm9jZXNzQ29ubmVjdGlvbihTdHJpbmcgcGx1Z2luUGF0aCkgLT4gKElQQzo6Q29ubmVjdGlvbjo6
SGFuZGxlIGNvbm5lY3Rpb25IYW5kbGUpIFN5bmNocm9ub3VzCisKKyAgICBUZXN0TXVsdGlwbGVB
dHRyaWJ1dGVzKCkgLT4gKCkgV2FudHNDb25uZWN0aW9uIFN5bmNocm9ub3VzCisKKyAgICBUZXN0
UGFyYW1ldGVyQXR0cmlidXRlcyhbQXR0cmlidXRlT25lIEF0dHJpYnV0ZVR3b10gdWludDY0X3Qg
Zm9vLCBkb3VibGUgYmFyLCBbQXR0cmlidXRlVGhyZWVdIGRvdWJsZSBiYXopCisKKyAgICBUZW1w
bGF0ZVRlc3QoSGFzaE1hcDxTdHJpbmcsIHN0ZDo6cGFpcjxTdHJpbmcsIHVpbnQ2NF90Pj4gYSkK
KworICAgIFNldFZpZGVvTGF5ZXJJRChXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxh
eWVySUQgdmlkZW9MYXllcklEKQorCisjaWYgUExBVEZPUk0oTUFDKQorICAgIERpZENyZWF0ZVdl
YlByb2Nlc3NDb25uZWN0aW9uKElQQzo6TWFjaFBvcnQgY29ubmVjdGlvbklkZW50aWZpZXIpCisj
ZW5kaWYKKworI2lmIFBMQVRGT1JNKE1BQykKKyAgICAjIEtleWJvYXJkIHN1cHBvcnQKKyAgICBJ
bnRlcnByZXRLZXlFdmVudCh1aW50MzJfdCB0eXBlKSAtPiAoVmVjdG9yPFdlYkNvcmU6OktleXBy
ZXNzQ29tbWFuZD4gY29tbWFuZE5hbWUpCisjZW5kaWYKKworI2lmIEVOQUJMRShERVBSRUNBVEVE
X0ZFQVRVUkUpCisgICAgRGVwcmVjYXRlZE9wZXJhdGlvbihJUEM6OkR1bW15VHlwZSBkdW1teSkK
KyNlbmRpZgorCisjaWYgRU5BQkxFKEVYUEVSSU1FTlRBTF9GRUFUVVJFKQorICAgIEV4cGVyaW1l
bnRhbE9wZXJhdGlvbihJUEM6OkR1bW15VHlwZSBkdW1teSkKKyNlbmRpZgorfQorCisjZW5kaWYK
KyNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0LW1lc3NhZ2Vz
LmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdC1tZXNz
YWdlcy5pbgkocmV2aXNpb24gMjYxMDM4KQorKysgU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtp
dC90ZXN0LW1lc3NhZ2VzLmluCShub25leGlzdGVudCkKQEAgLTEsODQgKzAsMCBAQAotIyBDb3B5
cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
IyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0jCi0j
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycgQU5ECi0jIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0jIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotIyBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUgotIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotIyBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0jaWYgRU5BQkxFKFdFQktJVDIpCi0j
aWYgTkVTVEVEX01BU1RFUl9DT05ESVRJT04gfHwgTUFTVEVSX09SICYmIE1BU1RFUl9BTkQKLQot
Ci0jIFRoZSBwYXJzZXIgc2hvdWxkIHRyZWF0IGFsbCBvZiB0aGVzZSBhcyBjb21tZW50cwotI0Zh
a2VMb2FkVVJMQShTdHJpbmcgdXJsKQotIyBGYWtlTG9hZFVSTEIoU3RyaW5nIHVybCkKLSAgICAj
RmFrZUxvYWRVUkxDKFN0cmluZyB1cmwpCi0gICAgIyBGYWtlTG9hZFVSTEQoU3RyaW5nIHVybCkK
LQotbWVzc2FnZXMgLT4gV2ViUGFnZSB7Ci0gICAgTG9hZFVSTChTdHJpbmcgdXJsKQotI2lmIEVO
QUJMRShUT1VDSF9FVkVOVFMpCi0gICAgTG9hZFNvbWV0aGluZyhTdHJpbmcgdXJsKQotI2lmIE5F
U1RFRF9NRVNTQUdFX0NPTkRJVElPTiB8fCBTT01FX09USEVSX01FU1NBR0VfQ09ORElUSU9OCi0g
ICAgVG91Y2hFdmVudChXZWJLaXQ6OldlYlRvdWNoRXZlbnQgZXZlbnQpCi0jZW5kaWYKLSNpZiBO
RVNURURfTUVTU0FHRV9DT05ESVRJT04gJiYgU09NRV9PVEhFUl9NRVNTQUdFX0NPTkRJVElPTgot
ICAgIEFkZEV2ZW50KFdlYktpdDo6V2ViVG91Y2hFdmVudCBldmVudCkKLSNlbmRpZgotICAgIExv
YWRTb21ldGhpbmdFbHNlKFN0cmluZyB1cmwpCi0jZW5kaWYKLSAgICBEaWRSZWNlaXZlUG9saWN5
RGVjaXNpb24odWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbGlzdGVuZXJJRCwgdWludDMyX3Qg
cG9saWN5QWN0aW9uKQotICAgIENsb3NlKCkKLQotICAgIFByZWZlcmVuY2VzRGlkQ2hhbmdlKFdl
YktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZSBzdG9yZSkKLSAgICBTZW5kRG91YmxlQW5kRmxvYXQo
ZG91YmxlIGQsIGZsb2F0IGYpCi0gICAgU2VuZEludHMoVmVjdG9yPHVpbnQ2NF90PiBpbnRzLCBW
ZWN0b3I8VmVjdG9yPHVpbnQ2NF90Pj4gaW50VmVjdG9ycykKLQotICAgIENyZWF0ZVBsdWdpbih1
aW50NjRfdCBwbHVnaW5JbnN0YW5jZUlELCBXZWJLaXQ6OlBsdWdpbjo6UGFyYW1ldGVycyBwYXJh
bWV0ZXJzKSAtPiAoYm9vbCByZXN1bHQpCi0gICAgUnVuSmF2YVNjcmlwdEFsZXJ0KHVpbnQ2NF90
IGZyYW1lSUQsIFN0cmluZyBtZXNzYWdlKSAtPiAoKQotICAgIEdldFBsdWdpbnMoYm9vbCByZWZy
ZXNoKSAtPiAoVmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+IHBsdWdpbnMpCi0gICAgR2V0UGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb24oU3RyaW5nIHBsdWdpblBhdGgpIC0+IChJUEM6OkNvbm5lY3Rp
b246OkhhbmRsZSBjb25uZWN0aW9uSGFuZGxlKSBTeW5jaHJvbm91cwotCi0gICAgVGVzdE11bHRp
cGxlQXR0cmlidXRlcygpIC0+ICgpIFdhbnRzQ29ubmVjdGlvbiBTeW5jaHJvbm91cwotCi0gICAg
VGVzdFBhcmFtZXRlckF0dHJpYnV0ZXMoW0F0dHJpYnV0ZU9uZSBBdHRyaWJ1dGVUd29dIHVpbnQ2
NF90IGZvbywgZG91YmxlIGJhciwgW0F0dHJpYnV0ZVRocmVlXSBkb3VibGUgYmF6KQotCi0gICAg
VGVtcGxhdGVUZXN0KEhhc2hNYXA8U3RyaW5nLCBzdGQ6OnBhaXI8U3RyaW5nLCB1aW50NjRfdD4+
IGEpCi0KLSAgICBTZXRWaWRlb0xheWVySUQoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6UGxhdGZv
cm1MYXllcklEIHZpZGVvTGF5ZXJJRCkKLQotI2lmIFBMQVRGT1JNKE1BQykKLSAgICBEaWRDcmVh
dGVXZWJQcm9jZXNzQ29ubmVjdGlvbihJUEM6Ok1hY2hQb3J0IGNvbm5lY3Rpb25JZGVudGlmaWVy
KQotI2VuZGlmCi0KLSNpZiBQTEFURk9STShNQUMpCi0gICAgIyBLZXlib2FyZCBzdXBwb3J0Ci0g
ICAgSW50ZXJwcmV0S2V5RXZlbnQodWludDMyX3QgdHlwZSkgLT4gKFZlY3RvcjxXZWJDb3JlOjpL
ZXlwcmVzc0NvbW1hbmQ+IGNvbW1hbmROYW1lKQotI2VuZGlmCi0KLSNpZiBFTkFCTEUoREVQUkVD
QVRFRF9GRUFUVVJFKQotICAgIERlcHJlY2F0ZWRPcGVyYXRpb24oSVBDOjpEdW1teVR5cGUgZHVt
bXkpCi0jZW5kaWYKLQotI2lmIEVOQUJMRShFWFBFUklNRU5UQUxfRkVBVFVSRSkKLSAgICBFeHBl
cmltZW50YWxPcGVyYXRpb24oSVBDOjpEdW1teVR5cGUgZHVtbXkpCi0jZW5kaWYKLX0KLQotI2Vu
ZGlmCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdC1zdXBl
cmNsYXNzLW1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93
ZWJraXQvdGVzdC1zdXBlcmNsYXNzLW1lc3NhZ2VzLmluCShyZXZpc2lvbiAyNjEwMzgpCisrKyBT
b3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3Qtc3VwZXJjbGFzcy1tZXNzYWdlcy5pbgko
bm9uZXhpc3RlbnQpCkBAIC0xLDMyICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
IyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAot
IyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAotIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0jIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SCi0jIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwKLSMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSMgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIKLSMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMg
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLQotbWVzc2FnZXMgLT4gV2ViUGFnZSA6IFdlYlBhZ2VCYXNlIHsKLSAgICBM
b2FkVVJMKFN0cmluZyB1cmwpCi0jaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKLSAgICBUZXN0QXN5
bmNNZXNzYWdlKGVudW06Ym9vbCBXZWJLaXQ6OlRlc3RUd29TdGF0ZUVudW0gdHdvU3RhdGVFbnVt
KSAtPiAodWludDY0X3QgcmVzdWx0KSBBc3luYwotICAgIFRlc3RBc3luY01lc3NhZ2VXaXRoTm9B
cmd1bWVudHMoKSAtPiAoKSBBc3luYwotICAgIFRlc3RBc3luY01lc3NhZ2VXaXRoTXVsdGlwbGVB
cmd1bWVudHMoKSAtPiAoYm9vbCBmbGFnLCB1aW50NjRfdCB2YWx1ZSkgQXN5bmMKLSNlbmRpZgot
ICAgIFRlc3RTeW5jTWVzc2FnZSh1aW50MzJfdCBwYXJhbSkgLT4gKHVpbnQ4X3QgcmVwbHkpIFN5
bmNocm9ub3VzCi0gICAgVGVzdFN5bmNocm9ub3VzTWVzc2FnZShib29sIHZhbHVlKSAtPiAoT3B0
aW9uYWw8V2ViS2l0OjpUZXN0Q2xhc3NOYW1lPiBvcHRpb25hbFJlcGx5KSBTeW5jaHJvbm91cwot
fQpJbmRleDogU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0LXN1cGVyY2xhc3MubWVz
c2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0
LXN1cGVyY2xhc3MubWVzc2FnZXMuaW4JKHJldmlzaW9uIDI2MTAzOCkJKGZyb20gU291cmNlL1dl
YktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0LXN1cGVyY2xhc3MtbWVzc2FnZXMuaW46MjYxMDM4KQor
KysgU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0LXN1cGVyY2xhc3MubWVzc2FnZXMu
aW4JKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzMiBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycg
QU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorCittZXNzYWdlcyAtPiBXZWJQYWdlIDogV2ViUGFnZUJhc2Ugewor
ICAgIExvYWRVUkwoU3RyaW5nIHVybCkKKyNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQorICAgIFRl
c3RBc3luY01lc3NhZ2UoZW51bTpib29sIFdlYktpdDo6VGVzdFR3b1N0YXRlRW51bSB0d29TdGF0
ZUVudW0pIC0+ICh1aW50NjRfdCByZXN1bHQpIEFzeW5jCisgICAgVGVzdEFzeW5jTWVzc2FnZVdp
dGhOb0FyZ3VtZW50cygpIC0+ICgpIEFzeW5jCisgICAgVGVzdEFzeW5jTWVzc2FnZVdpdGhNdWx0
aXBsZUFyZ3VtZW50cygpIC0+IChib29sIGZsYWcsIHVpbnQ2NF90IHZhbHVlKSBBc3luYworI2Vu
ZGlmCisgICAgVGVzdFN5bmNNZXNzYWdlKHVpbnQzMl90IHBhcmFtKSAtPiAodWludDhfdCByZXBs
eSkgU3luY2hyb25vdXMKKyAgICBUZXN0U3luY2hyb25vdXNNZXNzYWdlKGJvb2wgdmFsdWUpIC0+
IChPcHRpb25hbDxXZWJLaXQ6OlRlc3RDbGFzc05hbWU+IG9wdGlvbmFsUmVwbHkpIFN5bmNocm9u
b3VzCit9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXhpbGlhcnlQcm9jZXNzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXhpbGlhcnlQcm9jZXNzLmNwcAko
cmV2aXNpb24gMjYxMDM4KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvQXV4aWxpYXJ5UHJvY2Vz
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNywyMiArMTA3LDIyIEBAIHZvaWQgQXV4aWxpYXJ5
UHJvY2Vzczo6aW5pdGlhbGl6ZUNvbm5lY3QKIHsKIH0KIAotdm9pZCBBdXhpbGlhcnlQcm9jZXNz
OjphZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVy
TmFtZSwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImIG1lc3NhZ2VSZWNlaXZlcikKK3ZvaWQgQXV4aWxp
YXJ5UHJvY2Vzczo6YWRkTWVzc2FnZVJlY2VpdmVyKElQQzo6UmVjZWl2ZXJOYW1lIG1lc3NhZ2VS
ZWNlaXZlck5hbWUsIElQQzo6TWVzc2FnZVJlY2VpdmVyJiBtZXNzYWdlUmVjZWl2ZXIpCiB7CiAg
ICAgbV9tZXNzYWdlUmVjZWl2ZXJNYXAuYWRkTWVzc2FnZVJlY2VpdmVyKG1lc3NhZ2VSZWNlaXZl
ck5hbWUsIG1lc3NhZ2VSZWNlaXZlcik7CiB9CiAKLXZvaWQgQXV4aWxpYXJ5UHJvY2Vzczo6YWRk
TWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUs
IHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIElQQzo6TWVzc2FnZVJlY2VpdmVyJiBtZXNzYWdlUmVj
ZWl2ZXIpCit2b2lkIEF1eGlsaWFyeVByb2Nlc3M6OmFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlJl
Y2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBJ
UEM6Ok1lc3NhZ2VSZWNlaXZlciYgbWVzc2FnZVJlY2VpdmVyKQogewogICAgIG1fbWVzc2FnZVJl
Y2VpdmVyTWFwLmFkZE1lc3NhZ2VSZWNlaXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1lLCBkZXN0aW5h
dGlvbklELCBtZXNzYWdlUmVjZWl2ZXIpOwogfQogCi12b2lkIEF1eGlsaWFyeVByb2Nlc3M6OnJl
bW92ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJO
YW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKQordm9pZCBBdXhpbGlhcnlQcm9jZXNzOjpyZW1v
dmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpSZWNlaXZlck5hbWUgbWVzc2FnZVJlY2VpdmVyTmFtZSwg
dWludDY0X3QgZGVzdGluYXRpb25JRCkKIHsKICAgICBtX21lc3NhZ2VSZWNlaXZlck1hcC5yZW1v
dmVNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRCk7CiB9
CiAKLXZvaWQgQXV4aWxpYXJ5UHJvY2Vzczo6cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6U3Ry
aW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUpCit2b2lkIEF1eGlsaWFyeVByb2Nlc3M6
OnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlJlY2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJO
YW1lKQogewogICAgIG1fbWVzc2FnZVJlY2VpdmVyTWFwLnJlbW92ZU1lc3NhZ2VSZWNlaXZlciht
ZXNzYWdlUmVjZWl2ZXJOYW1lKTsKIH0KQEAgLTIzNiw5ICsyMzYsOSBAQCB2b2lkIEF1eGlsaWFy
eVByb2Nlc3M6OmluaXRpYWxpemVTYW5kYm94CiB7CiB9CiAKLXZvaWQgQXV4aWxpYXJ5UHJvY2Vz
czo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6U3RyaW5n
UmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3Nh
Z2VOYW1lKQordm9pZCBBdXhpbGlhcnlQcm9jZXNzOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlTmFtZSBtZXNzYWdlTmFtZSkKIHsKLSAgICBX
VEZMb2dBbHdheXMoIlJlY2VpdmVkIGludmFsaWQgbWVzc2FnZTogJyVzOjolcyciLCBtZXNzYWdl
UmVjZWl2ZXJOYW1lLnRvU3RyaW5nKCkuZGF0YSgpLCBtZXNzYWdlTmFtZS50b1N0cmluZygpLmRh
dGEoKSk7CisgICAgV1RGTG9nQWx3YXlzKCJSZWNlaXZlZCBpbnZhbGlkIG1lc3NhZ2U6ICclcyci
LCBkZXNjcmlwdGlvbihtZXNzYWdlTmFtZSkpOwogICAgIENSQVNIKCk7CiB9CiAKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvU2hhcmVkL0F1eGlsaWFyeVByb2Nlc3MuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BdXhpbGlhcnlQcm9jZXNzLmgJKHJldmlzaW9uIDI2MTAzOCkKKysr
IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0F1eGlsaWFyeVByb2Nlc3MuaAkod29ya2luZyBjb3B5KQpA
QCAtNjAsMjAgKzYwLDIwIEBAIHB1YmxpYzoKICAgICB2b2lkIGRpc2FibGVUZXJtaW5hdGlvbigp
OwogICAgIHZvaWQgZW5hYmxlVGVybWluYXRpb24oKTsKIAotICAgIHZvaWQgYWRkTWVzc2FnZVJl
Y2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIElQQzo6TWVz
c2FnZVJlY2VpdmVyJik7Ci0gICAgdm9pZCBhZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdS
ZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgSVBD
OjpNZXNzYWdlUmVjZWl2ZXImKTsKLSAgICB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihJUEM6
OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlv
bklEKTsKLSAgICB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5j
ZSBtZXNzYWdlUmVjZWl2ZXJOYW1lKTsKKyAgICB2b2lkIGFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6
OlJlY2VpdmVyTmFtZSwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImKTsKKyAgICB2b2lkIGFkZE1lc3Nh
Z2VSZWNlaXZlcihJUEM6OlJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgSVBD
OjpNZXNzYWdlUmVjZWl2ZXImKTsKKyAgICB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihJUEM6
OlJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCk7CisgICAgdm9pZCByZW1vdmVN
ZXNzYWdlUmVjZWl2ZXIoSVBDOjpSZWNlaXZlck5hbWUpOwogICAgIHZvaWQgcmVtb3ZlTWVzc2Fn
ZVJlY2VpdmVyKElQQzo6TWVzc2FnZVJlY2VpdmVyJik7CiAgICAgCiAgICAgdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+Ci0gICAgdm9pZCBhZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVu
Y2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgT2JqZWN0SWRlbnRpZmllcjxUPiBkZXN0aW5hdGlvbklE
LCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYgcmVjZWl2ZXIpCisgICAgdm9pZCBhZGRNZXNzYWdlUmVj
ZWl2ZXIoSVBDOjpSZWNlaXZlck5hbWUgbWVzc2FnZVJlY2VpdmVyTmFtZSwgT2JqZWN0SWRlbnRp
ZmllcjxUPiBkZXN0aW5hdGlvbklELCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYgcmVjZWl2ZXIpCiAg
ICAgewogICAgICAgICBhZGRNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSwgZGVz
dGluYXRpb25JRC50b1VJbnQ2NCgpLCByZWNlaXZlcik7CiAgICAgfQogICAgIAogICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPgotICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6U3Ry
aW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIE9iamVjdElkZW50aWZpZXI8VD4gZGVz
dGluYXRpb25JRCkKKyAgICB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlJlY2VpdmVy
TmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBPYmplY3RJZGVudGlmaWVyPFQ+IGRlc3RpbmF0aW9u
SUQpCiAgICAgewogICAgICAgICByZW1vdmVNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVy
TmFtZSwgZGVzdGluYXRpb25JRC50b1VJbnQ2NCgpKTsKICAgICB9CkBAIC0xMzgsNyArMTM4LDcg
QEAgcHJpdmF0ZToKICAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNv
bnN0IG92ZXJyaWRlOwogCiAgICAgLy8gSVBDOjpDb25uZWN0aW9uOjpDbGllbnQuCi0gICAgdm9p
ZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpTdHJpbmdS
ZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2Fn
ZU5hbWUpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYsIElQQzo6TWVzc2FnZU5hbWUpIGZpbmFsOwogICAgIHZvaWQgZGlkQ2xvc2UoSVBD
OjpDb25uZWN0aW9uJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHNodXREb3duKCk7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRD
b29yZGluYXRvclByb3h5LmgJKHJldmlzaW9uIDI2MTAzOCkKKysrIFNvdXJjZS9XZWJLaXQvU2hh
cmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmgJKHdvcmtpbmcgY29weSkK
QEAgLTg2LDggKzg2LDYgQEAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIGNvbnN0IFN0cmluZyYg
cGF5bWVudENvb3JkaW5hdG9yQm91bmRJbnRlcmZhY2VJZGVudGlmaWVyKGNvbnN0IFdlYlBheW1l
bnRDb29yZGluYXRvclByb3h5JikgPSAwOwogICAgICAgICB2aXJ0dWFsIGNvbnN0IFN0cmluZyYg
cGF5bWVudENvb3JkaW5hdG9yU291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKGNvbnN0
IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JikgPSAwOwogICAgICAgICB2aXJ0dWFsIGNvbnN0
IFN0cmluZyYgcGF5bWVudENvb3JkaW5hdG9yU291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVu
dGlmaWVyKGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JikgPSAwOwotICAgICAgICB2
aXJ0dWFsIHZvaWQgcGF5bWVudENvb3JkaW5hdG9yQWRkTWVzc2FnZVJlY2VpdmVyKFdlYlBheW1l
bnRDb29yZGluYXRvclByb3h5JiwgY29uc3QgSVBDOjpTdHJpbmdSZWZlcmVuY2UmLCBJUEM6Ok1l
c3NhZ2VSZWNlaXZlciYpID0gMDsKLSAgICAgICAgdmlydHVhbCB2b2lkIHBheW1lbnRDb29yZGlu
YXRvclJlbW92ZU1lc3NhZ2VSZWNlaXZlcihXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYsIGNv
bnN0IElQQzo6U3RyaW5nUmVmZXJlbmNlJikgPSAwOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgICAgIHZpcnR1YWwgVUlWaWV3Q29udHJvbGxlciAqcGF5bWVudENvb3JkaW5hdG9yUHJl
c2VudGluZ1ZpZXdDb250cm9sbGVyKGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5Jikg
PSAwOwogICAgICAgICB2aXJ0dWFsIGNvbnN0IFN0cmluZyYgcGF5bWVudENvb3JkaW5hdG9yQ1RE
YXRhQ29ubmVjdGlvblNlcnZpY2VUeXBlKGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5
JikgPSAwOwpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvY29jb2EvV2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1NoYXJlZC9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLm1t
CShyZXZpc2lvbiAyNjEwMzgpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9jb2Nv
YS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC03
OSwxNSArNzksMTIgQEAgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OldlYlBheW1lbnRDbwog
ICAgIDogbV9jbGllbnQoY2xpZW50KQogICAgICwgbV9jYW5NYWtlUGF5bWVudHNRdWV1ZShXb3Jr
UXVldWU6OmNyZWF0ZSgiY29tLmFwcGxlLldlYktpdC5DYW5NYWtlUGF5bWVudHMiKSkKIHsKLSAg
ICBtX2NsaWVudC5wYXltZW50Q29vcmRpbmF0b3JBZGRNZXNzYWdlUmVjZWl2ZXIoKnRoaXMsIE1l
c3NhZ2VzOjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgp
LCAqdGhpcyk7CiB9CiAKIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5Ojp+V2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHkoKQogewogICAgIGlmIChtX3N0YXRlICE9IFN0YXRlOjpJZGxlKQogICAg
ICAgICBoaWRlUGF5bWVudFVJKCk7Ci0KLSAgICBtX2NsaWVudC5wYXltZW50Q29vcmRpbmF0b3JS
ZW1vdmVNZXNzYWdlUmVjZWl2ZXIoKnRoaXMsIE1lc3NhZ2VzOjpXZWJQYXltZW50Q29vcmRpbmF0
b3JQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKTsKIH0KIAogdm9pZCBXZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eTo6cGxhdGZvcm1DYW5NYWtlUGF5bWVudHNXaXRoQWN0aXZlQ2FyZChjb25z
dCBTdHJpbmcmIG1lcmNoYW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkb21haW5OYW1lLCBX
VEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9BdXhpbGlhcnlQcm9jZXNzQ29jb2EubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQXV4aWxpYXJ5UHJvY2Vzc0NvY29hLm1t
CShyZXZpc2lvbiAyNjEwMzgpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9BdXhpbGlh
cnlQcm9jZXNzQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTMyLDkgKzMyLDkgQEAKIAogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKLXZvaWQgQXV4aWxpYXJ5UHJvY2Vzczo6ZGlkUmVjZWl2ZUludmFs
aWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VS
ZWNlaXZlck5hbWUsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lKQordm9pZCBBdXhp
bGlhcnlQcm9jZXNzOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwg
SVBDOjpNZXNzYWdlTmFtZSBtZXNzYWdlTmFtZSkKIHsKLSAgICBzZXRDcmFzaFJlcG9ydEFwcGxp
Y2F0aW9uU3BlY2lmaWNJbmZvcm1hdGlvbigoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpW05TU3RyaW5n
IHN0cmluZ1dpdGhGb3JtYXQ6QCJSZWNlaXZlZCBpbnZhbGlkIG1lc3NhZ2U6ICclczo6JXMnIiwg
bWVzc2FnZVJlY2VpdmVyTmFtZS50b1N0cmluZygpLmRhdGEoKSwgbWVzc2FnZU5hbWUudG9TdHJp
bmcoKS5kYXRhKCldKTsKKyAgICBzZXRDcmFzaFJlcG9ydEFwcGxpY2F0aW9uU3BlY2lmaWNJbmZv
cm1hdGlvbigoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6
QCJSZWNlaXZlZCBpbnZhbGlkIG1lc3NhZ2U6ICclcyciLCBkZXNjcmlwdGlvbihtZXNzYWdlTmFt
ZSldKTsKICAgICBDUkFTSCgpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
dXhpbGlhcnlQcm9jZXNzUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5jcHAJKHJldmlzaW9uIDI2MTAzOCkKKysrIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE3OCwyMiArMTc4LDIyIEBAIGJvb2wgQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5Ojpz
ZW5kTWVzc2FnZSgKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgQXV4aWxpYXJ5UHJvY2Vz
c1Byb3h5OjphZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJl
Y2VpdmVyTmFtZSwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImIG1lc3NhZ2VSZWNlaXZlcikKK3ZvaWQg
QXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjphZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpSZWNlaXZlck5h
bWUgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImIG1lc3NhZ2VSZWNl
aXZlcikKIHsKICAgICBtX21lc3NhZ2VSZWNlaXZlck1hcC5hZGRNZXNzYWdlUmVjZWl2ZXIobWVz
c2FnZVJlY2VpdmVyTmFtZSwgbWVzc2FnZVJlY2VpdmVyKTsKIH0KIAotdm9pZCBBdXhpbGlhcnlQ
cm9jZXNzUHJveHk6OmFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNz
YWdlUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBJUEM6Ok1lc3NhZ2VSZWNl
aXZlciYgbWVzc2FnZVJlY2VpdmVyKQordm9pZCBBdXhpbGlhcnlQcm9jZXNzUHJveHk6OmFkZE1l
c3NhZ2VSZWNlaXZlcihJUEM6OlJlY2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCB1aW50
NjRfdCBkZXN0aW5hdGlvbklELCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYgbWVzc2FnZVJlY2VpdmVy
KQogewogICAgIG1fbWVzc2FnZVJlY2VpdmVyTWFwLmFkZE1lc3NhZ2VSZWNlaXZlcihtZXNzYWdl
UmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklELCBtZXNzYWdlUmVjZWl2ZXIpOwogfQogCi12b2lk
IEF1eGlsaWFyeVByb2Nlc3NQcm94eTo6cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5n
UmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpCit2
b2lkIEF1eGlsaWFyeVByb2Nlc3NQcm94eTo6cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6UmVj
ZWl2ZXJOYW1lIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpCiB7
CiAgICAgbV9tZXNzYWdlUmVjZWl2ZXJNYXAucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKG1lc3NhZ2VS
ZWNlaXZlck5hbWUsIGRlc3RpbmF0aW9uSUQpOwogfQogCi12b2lkIEF1eGlsaWFyeVByb2Nlc3NQ
cm94eTo6cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VS
ZWNlaXZlck5hbWUpCit2b2lkIEF1eGlsaWFyeVByb2Nlc3NQcm94eTo6cmVtb3ZlTWVzc2FnZVJl
Y2VpdmVyKElQQzo6UmVjZWl2ZXJOYW1lIG1lc3NhZ2VSZWNlaXZlck5hbWUpCiB7CiAgICAgbV9t
ZXNzYWdlUmVjZWl2ZXJNYXAucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKG1lc3NhZ2VSZWNlaXZlck5h
bWUpOwogfQpAQCAtMjc4LDkgKzI3OCw5IEBAIHZvaWQgQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5Ojpj
b25uZWN0aW9uV2kKIHsKIH0KIAotdm9pZCBBdXhpbGlhcnlQcm9jZXNzUHJveHk6OmxvZ0ludmFs
aWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpTdHJpbmdSZWZlcmVu
Y2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUp
Cit2b2lkIEF1eGlsaWFyeVByb2Nlc3NQcm94eTo6bG9nSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6Ok1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lKQogewotICAg
IFJFTEVBU0VfTE9HX0ZBVUxUKElQQywgIlJlY2VpdmVkIGFuIGludmFsaWQgbWVzc2FnZSAnJSIg
UFVCTElDX0xPR19TVFJJTkcgIjo6JSIgUFVCTElDX0xPR19TVFJJTkcgIicgZnJvbSB0aGUgJSIg
UFVCTElDX0xPR19TVFJJTkcgIiBwcm9jZXNzLiIsIG1lc3NhZ2VSZWNlaXZlck5hbWUudG9TdHJp
bmcoKS5kYXRhKCksIG1lc3NhZ2VOYW1lLnRvU3RyaW5nKCkuZGF0YSgpLCBwcm9jZXNzTmFtZSgp
LmNoYXJhY3RlcnMoKSk7CisgICAgUkVMRUFTRV9MT0dfRkFVTFQoSVBDLCAiUmVjZWl2ZWQgYW4g
aW52YWxpZCBtZXNzYWdlICclIiBQVUJMSUNfTE9HX1NUUklORyAiJyBmcm9tIHRoZSAlIiBQVUJM
SUNfTE9HX1NUUklORyAiIHByb2Nlc3MuIiwgZGVzY3JpcHRpb24obWVzc2FnZU5hbWUpLCBwcm9j
ZXNzTmFtZSgpLmNoYXJhY3RlcnMoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRl
eDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmgJ
KHJldmlzaW9uIDI2MTAzOCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFyeVBy
b2Nlc3NQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC03NSwxOSArNzUsMTkgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gbV9jb25uZWN0aW9uID09ICZjb25uZWN0aW9uOwogICAgIH0KIAotICAg
IHZvaWQgYWRkTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNl
aXZlck5hbWUsIElQQzo6TWVzc2FnZVJlY2VpdmVyJik7Ci0gICAgdm9pZCBhZGRNZXNzYWdlUmVj
ZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgdWludDY0X3Qg
ZGVzdGluYXRpb25JRCwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImKTsKLSAgICB2b2lkIHJlbW92ZU1l
c3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCB1
aW50NjRfdCBkZXN0aW5hdGlvbklEKTsKLSAgICB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihJ
UEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lKTsKKyAgICB2b2lkIGFkZE1l
c3NhZ2VSZWNlaXZlcihJUEM6OlJlY2VpdmVyTmFtZSwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImKTsK
KyAgICB2b2lkIGFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlJlY2VpdmVyTmFtZSwgdWludDY0X3Qg
ZGVzdGluYXRpb25JRCwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImKTsKKyAgICB2b2lkIHJlbW92ZU1l
c3NhZ2VSZWNlaXZlcihJUEM6OlJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCk7
CisgICAgdm9pZCByZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpSZWNlaXZlck5hbWUpOwogICAg
IAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgIHZvaWQgYWRkTWVzc2FnZVJlY2VpdmVy
KElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIE9iamVjdElkZW50aWZp
ZXI8VD4gZGVzdGluYXRpb25JRCwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImIHJlY2VpdmVyKQorICAg
IHZvaWQgYWRkTWVzc2FnZVJlY2VpdmVyKElQQzo6UmVjZWl2ZXJOYW1lIG1lc3NhZ2VSZWNlaXZl
ck5hbWUsIE9iamVjdElkZW50aWZpZXI8VD4gZGVzdGluYXRpb25JRCwgSVBDOjpNZXNzYWdlUmVj
ZWl2ZXImIHJlY2VpdmVyKQogICAgIHsKICAgICAgICAgYWRkTWVzc2FnZVJlY2VpdmVyKG1lc3Nh
Z2VSZWNlaXZlck5hbWUsIGRlc3RpbmF0aW9uSUQudG9VSW50NjQoKSwgcmVjZWl2ZXIpOwogICAg
IH0KICAgICAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgICB2b2lkIHJlbW92ZU1lc3Nh
Z2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBPYmpl
Y3RJZGVudGlmaWVyPFQ+IGRlc3RpbmF0aW9uSUQpCisgICAgdm9pZCByZW1vdmVNZXNzYWdlUmVj
ZWl2ZXIoSVBDOjpSZWNlaXZlck5hbWUgbWVzc2FnZVJlY2VpdmVyTmFtZSwgT2JqZWN0SWRlbnRp
ZmllcjxUPiBkZXN0aW5hdGlvbklEKQogICAgIHsKICAgICAgICAgcmVtb3ZlTWVzc2FnZVJlY2Vp
dmVyKG1lc3NhZ2VSZWNlaXZlck5hbWUsIGRlc3RpbmF0aW9uSUQudG9VSW50NjQoKSk7CiAgICAg
fQpAQCAtMTE5LDcgKzExOSw3IEBAIHByb3RlY3RlZDoKICAgICBib29sIGRpc3BhdGNoTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKICAgICBib29sIGRpc3BhdGNoU3lu
Y01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRy
PElQQzo6RW5jb2Rlcj4mKTsKIAotICAgIHZvaWQgbG9nSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpT
dHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUpOworICAgIHZvaWQgbG9nSW52YWxpZE1lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlTmFtZSk7CiAgICAgdmlydHVhbCBBU0NJSUxp
dGVyYWwgcHJvY2Vzc05hbWUoKSBjb25zdCA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgZ2V0TGF1
bmNoT3B0aW9ucyhQcm9jZXNzTGF1bmNoZXI6OkxhdW5jaE9wdGlvbnMmKTsKQEAgLTE1MCw3ICsx
NTAsNyBAQCBib29sIEF1eGlsaWFyeVByb2Nlc3NQcm94eTo6c2VuZChUJiYgbWVzCiB7CiAgICAg
Q09NUElMRV9BU1NFUlQoIVQ6OmlzU3luYywgQXN5bmNNZXNzYWdlRXhwZWN0ZWQpOwogCi0gICAg
YXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZTxJUEM6OkVuY29kZXI+KFQ6OnJlY2VpdmVyTmFtZSgp
LCBUOjpuYW1lKCksIGRlc3RpbmF0aW9uSUQpOworICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlx
dWU8SVBDOjpFbmNvZGVyPihUOjpuYW1lKCksIGRlc3RpbmF0aW9uSUQpOwogICAgIGVuY29kZXIt
PmVuY29kZShtZXNzYWdlLmFyZ3VtZW50cygpKTsKIAogICAgIHJldHVybiBzZW5kTWVzc2FnZShX
VEZNb3ZlKGVuY29kZXIpLCBzZW5kT3B0aW9ucyk7CkBAIC0xNzQsNyArMTc0LDcgQEAgdm9pZCBB
dXhpbGlhcnlQcm9jZXNzUHJveHk6OnNlbmRXaXRoQXN5bgogewogICAgIENPTVBJTEVfQVNTRVJU
KCFUOjppc1N5bmMsIEFzeW5jTWVzc2FnZUV4cGVjdGVkKTsKIAotICAgIGF1dG8gZW5jb2RlciA9
IG1ha2VVbmlxdWU8SVBDOjpFbmNvZGVyPihUOjpyZWNlaXZlck5hbWUoKSwgVDo6bmFtZSgpLCBk
ZXN0aW5hdGlvbklEKTsKKyAgICBhdXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlPElQQzo6RW5jb2Rl
cj4oVDo6bmFtZSgpLCBkZXN0aW5hdGlvbklEKTsKICAgICB1aW50NjRfdCBsaXN0ZW5lcklEID0g
SVBDOjpuZXh0QXN5bmNSZXBseUhhbmRsZXJJRCgpOwogICAgIGVuY29kZXItPmVuY29kZShsaXN0
ZW5lcklEKTsKICAgICBlbmNvZGVyLT5lbmNvZGUobWVzc2FnZS5hcmd1bWVudHMoKSk7CkluZGV4
OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmdOb25lLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MZWdhY3lTZXNzaW9uU3Rh
dGVDb2RpbmdOb25lLmNwcAkocmV2aXNpb24gMjYxMDM4KQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTGVnYWN5U2Vzc2lvblN0YXRlQ29kaW5nTm9uZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiRGVj
b2Rlci5oIgogI2luY2x1ZGUgIkVuY29kZXIuaCIKKyNpbmNsdWRlICJNZXNzYWdlTmFtZXMuaCIK
ICNpbmNsdWRlICJTZXNzaW9uU3RhdGUuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2Rl
cnMuaCIKIApAQCAtMzcsOCArMzgsOCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogUmVmUHRyPEFQ
STo6RGF0YT4gZW5jb2RlTGVnYWN5U2Vzc2lvblN0YXRlKGNvbnN0IFNlc3Npb25TdGF0ZSYgc2Vz
c2lvblN0YXRlKQogewotICAgIC8vIEZJWE1FOiBJJ20gbm90IHN1cmUgd2hldGhlciB0aGVzZSBh
cmUgdGhlIHByb3BlciBhcmd1bWVudHMgZm9yIHRoZSBlbmNvZGVyLgotICAgIElQQzo6RW5jb2Rl
ciBlbmNvZGVyKCJJUEMiLCAiTGVnYWN5U2Vzc2lvblN0YXRlIiwgMCk7CisgICAgLy8gRklYTUU6
IFRoaXMgc2hvdWxkIHVzZSBXVEY6OlBlcnNpc3RlbmNlOjpFbmNvZGVyIGluc3RlYWQuCisgICAg
SVBDOjpFbmNvZGVyIGVuY29kZXIoSVBDOjpNZXNzYWdlTmFtZTo6TGVnYWN5U2Vzc2lvblN0YXRl
LCAwKTsKICAgICBlbmNvZGVyIDw8IHNlc3Npb25TdGF0ZS5iYWNrRm9yd2FyZExpc3RTdGF0ZTsK
ICAgICBlbmNvZGVyIDw8IHNlc3Npb25TdGF0ZS5yZW5kZXJUcmVlU2l6ZTsKICAgICBlbmNvZGVy
IDw8IHNlc3Npb25TdGF0ZS5wcm92aXNpb25hbFVSTDsKQEAgLTQ4LDE1ICs0OSwyNSBAQCBSZWZQ
dHI8QVBJOjpEYXRhPiBlbmNvZGVMZWdhY3lTZXNzaW9uU3RhCiBib29sIGRlY29kZUxlZ2FjeVNl
c3Npb25TdGF0ZShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YVNpemUsIFNlc3Npb25T
dGF0ZSYgc2Vzc2lvblN0YXRlKQogewogICAgIElQQzo6RGVjb2RlciBkZWNvZGVyKGRhdGEsIGRh
dGFTaXplLCBudWxscHRyLCBWZWN0b3I8SVBDOjpBdHRhY2htZW50PigpKTsKKwogICAgIE9wdGlv
bmFsPEJhY2tGb3J3YXJkTGlzdFN0YXRlPiBiYWNrRm9yd2FyZExpc3RTdGF0ZTsKICAgICBkZWNv
ZGVyID4+IGJhY2tGb3J3YXJkTGlzdFN0YXRlOwogICAgIGlmICghYmFja0ZvcndhcmRMaXN0U3Rh
dGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBzZXNzaW9uU3RhdGUuYmFja0ZvcndhcmRM
aXN0U3RhdGUgPSBXVEZNb3ZlKCpiYWNrRm9yd2FyZExpc3RTdGF0ZSk7Ci0gICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShzZXNzaW9uU3RhdGUucmVuZGVyVHJlZVNpemUpKQorCisgICAgT3B0aW9uYWw8
dWludDY0X3Q+IHJlbmRlclRyZWVTaXplOworICAgIGRlY29kZXIgPj4gcmVuZGVyVHJlZVNpemU7
CisgICAgaWYgKCFyZW5kZXJUcmVlU2l6ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoc2Vzc2lvblN0YXRlLnByb3Zpc2lvbmFsVVJMKSkKKyAgICBzZXNz
aW9uU3RhdGUucmVuZGVyVHJlZVNpemUgPSAqcmVuZGVyVHJlZVNpemU7CisKKyAgICBPcHRpb25h
bDxVUkw+IHByb3Zpc2lvbmFsVVJMOworICAgIGRlY29kZXIgPj4gcHJvdmlzaW9uYWxVUkw7Cisg
ICAgaWYgKCFwcm92aXNpb25hbFVSTCkKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHNlc3Np
b25TdGF0ZS5wcm92aXNpb25hbFVSTCA9IFdURk1vdmUoKnByb3Zpc2lvbmFsVVJMKTsKKwogICAg
IHJldHVybiB0cnVlOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNp
b25hbFBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCShyZXZpc2lvbiAyNjEwMzgpCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTUxOSw3ICs1MTksNyBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRSZWNlaXZlTWVz
CiAgICAgfQogI2VuZGlmCiAKLSAgICBMT0coUHJvY2Vzc1N3YXBwaW5nLCAiVW5oYW5kbGVkIG1l
c3NhZ2UgJXM6OiVzIGZyb20gcHJvdmlzaW9uYWwgcHJvY2VzcyIsIGRlY29kZXIubWVzc2FnZVJl
Y2VpdmVyTmFtZSgpLnRvU3RyaW5nKCkuZGF0YSgpLCBkZWNvZGVyLm1lc3NhZ2VOYW1lKCkudG9T
dHJpbmcoKS5kYXRhKCkpOworICAgIExPRyhQcm9jZXNzU3dhcHBpbmcsICJVbmhhbmRsZWQgbWVz
c2FnZSAlcyBmcm9tIHByb3Zpc2lvbmFsIHByb2Nlc3MiLCBkZXNjcmlwdGlvbihkZWNvZGVyLm1l
c3NhZ2VOYW1lKCkpKTsKIH0KIAogdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkUmVjZWl2
ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBk
ZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYgcmVwbHlFbmNvZGVyKQpJbmRl
eDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwCShy
ZXZpc2lvbiAyNjEwMzgpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdl
UHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MSwzMyArNjEsMzIgQEAgUmVmUHRyPFdlYlBy
b2Nlc3NQcm94eT4gU3VzcGVuZGVkUGFnZVBybwogfQogCiAjaWYgIUxPR19ESVNBQkxFRAotc3Rh
dGljIGNvbnN0IEhhc2hTZXQ8SVBDOjpTdHJpbmdSZWZlcmVuY2U+JiBtZXNzYWdlTmFtZXNUb0ln
bm9yZVdoaWxlU3VzcGVuZGVkKCkKK3N0YXRpYyBjb25zdCBIYXNoU2V0PHVpbnQxNl90PiYgbWVz
c2FnZU5hbWVzVG9JZ25vcmVXaGlsZVN1c3BlbmRlZCgpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPEhhc2hTZXQ8SVBDOjpTdHJpbmdSZWZlcmVuY2U+PiBtZXNzYWdlTmFtZXM7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8SVBDOjpNZXNzYWdlTmFtZSwgV1RGOjpJbnRI
YXNoPElQQzo6TWVzc2FnZU5hbWU+LCBXVEY6OlN0cm9uZ0VudW1IYXNoVHJhaXRzPElQQzo6TWVz
c2FnZU5hbWU+Pj4gbWVzc2FnZU5hbWVzOwogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNl
RmxhZzsKICAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10gewotICAgICAgICBtZXNzYWdl
TmFtZXMuZ2V0KCkuYWRkKCJCYWNrRm9yd2FyZEFkZEl0ZW0iKTsKLSAgICAgICAgbWVzc2FnZU5h
bWVzLmdldCgpLmFkZCgiQ2xlYXJBbGxFZGl0Q29tbWFuZHMiKTsKLSAgICAgICAgbWVzc2FnZU5h
bWVzLmdldCgpLmFkZCgiRGlkQ2hhbmdlQ29udGVudFNpemUiKTsKLSAgICAgICAgbWVzc2FnZU5h
bWVzLmdldCgpLmFkZCgiRGlkQ2hhbmdlTWFpbkRvY3VtZW50Iik7Ci0gICAgICAgIG1lc3NhZ2VO
YW1lcy5nZXQoKS5hZGQoIkRpZENoYW5nZVByb2dyZXNzIik7Ci0gICAgICAgIG1lc3NhZ2VOYW1l
cy5nZXQoKS5hZGQoIkRpZENvbW1pdExvYWRGb3JGcmFtZSIpOwotICAgICAgICBtZXNzYWdlTmFt
ZXMuZ2V0KCkuYWRkKCJEaWREZXN0cm95TmF2aWdhdGlvbiIpOwotICAgICAgICBtZXNzYWdlTmFt
ZXMuZ2V0KCkuYWRkKCJEaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZSIpOwotICAgICAgICBt
ZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJEaWRGaW5pc2hQcm9ncmVzcyIpOwotICAgICAgICBtZXNz
YWdlTmFtZXMuZ2V0KCkuYWRkKCJEaWRDb21wbGV0ZVBhZ2VUcmFuc2l0aW9uIik7Ci0gICAgICAg
IG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoIkRpZEZpcnN0TGF5b3V0Rm9yRnJhbWUiKTsKLSAgICAg
ICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZCgiRGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0
Rm9yRnJhbWUiKTsKLSAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZCgiRGlkTmF2aWdhdGVX
aXRoTmF2aWdhdGlvbkRhdGEiKTsKLSAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZCgiRGlk
UmVhY2hMYXlvdXRNaWxlc3RvbmUiKTsKLSAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZCgi
RGlkUmVzdG9yZVNjcm9sbFBvc2l0aW9uIik7Ci0gICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5h
ZGQoIkRpZFN0YXJ0UHJvZ3Jlc3MiKTsKLSAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZCgi
RGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSIpOwotICAgICAgICBtZXNzYWdlTmFtZXMu
Z2V0KCkuYWRkKCJFZGl0b3JTdGF0ZUNoYW5nZWQiKTsKLSAgICAgICAgbWVzc2FnZU5hbWVzLmdl
dCgpLmFkZCgiUGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yRGlkQ2hhbmdlIik7Ci0gICAgICAg
IG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoIlNldFJlbmRlclRyZWVTaXplIik7Ci0gICAgICAgIG1l
c3NhZ2VOYW1lcy5nZXQoKS5hZGQoIlNldFN0YXR1c1RleHQiKTsKLSAgICAgICAgbWVzc2FnZU5h
bWVzLmdldCgpLmFkZCgiU2V0TmV0d29ya1JlcXVlc3RzSW5Qcm9ncmVzcyIpOworICAgICAgICBt
ZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VQcm94eV9CYWNr
Rm9yd2FyZEFkZEl0ZW0pOworICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKElQQzo6TWVz
c2FnZU5hbWU6OldlYlBhZ2VQcm94eV9DbGVhckFsbEVkaXRDb21tYW5kcyk7CisgICAgICAgIG1l
c3NhZ2VOYW1lcy5nZXQoKS5hZGQoSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZVByb3h5X0RpZENo
YW5nZUNvbnRlbnRTaXplKTsKKyAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZChJUEM6Ok1l
c3NhZ2VOYW1lOjpXZWJQYWdlUHJveHlfRGlkQ2hhbmdlTWFpbkRvY3VtZW50KTsKKyAgICAgICAg
bWVzc2FnZU5hbWVzLmdldCgpLmFkZChJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlUHJveHlfRGlk
Q2hhbmdlUHJvZ3Jlc3MpOworICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKElQQzo6TWVz
c2FnZU5hbWU6OldlYlBhZ2VQcm94eV9EaWRDb21taXRMb2FkRm9yRnJhbWUpOworICAgICAgICBt
ZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VQcm94eV9EaWRE
ZXN0cm95TmF2aWdhdGlvbik7CisgICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoSVBDOjpN
ZXNzYWdlTmFtZTo6V2ViUGFnZVByb3h5X0RpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lKTsK
KyAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZChJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdl
UHJveHlfRGlkRmluaXNoUHJvZ3Jlc3MpOworICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRk
KElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VQcm94eV9EaWRGaXJzdExheW91dEZvckZyYW1lKTsK
KyAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZChJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdl
UHJveHlfRGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9yRnJhbWUpOworICAgICAgICBt
ZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VQcm94eV9EaWRO
YXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YSk7CisgICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5h
ZGQoSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZVByb3h5X0RpZFJlYWNoTGF5b3V0TWlsZXN0b25l
KTsKKyAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZChJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQ
YWdlUHJveHlfRGlkUmVzdG9yZVNjcm9sbFBvc2l0aW9uKTsKKyAgICAgICAgbWVzc2FnZU5hbWVz
LmdldCgpLmFkZChJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlUHJveHlfRGlkU3RhcnRQcm9ncmVz
cyk7CisgICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoSVBDOjpNZXNzYWdlTmFtZTo6V2Vi
UGFnZVByb3h5X0RpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUpOworICAgICAgICBtZXNz
YWdlTmFtZXMuZ2V0KCkuYWRkKElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VQcm94eV9FZGl0b3JT
dGF0ZUNoYW5nZWQpOworICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKElQQzo6TWVzc2Fn
ZU5hbWU6OldlYlBhZ2VQcm94eV9QYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3JEaWRDaGFuZ2Up
OworICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKElQQzo6TWVzc2FnZU5hbWU6OldlYlBh
Z2VQcm94eV9TZXRSZW5kZXJUcmVlU2l6ZSk7CisgICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5h
ZGQoSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZVByb3h5X1NldFN0YXR1c1RleHQpOworICAgICAg
ICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VQcm94eV9T
ZXROZXR3b3JrUmVxdWVzdHNJblByb2dyZXNzKTsKICAgICB9KTsKIAogICAgIHJldHVybiBtZXNz
YWdlTmFtZXM7CkBAIC0yNTUsNyArMjU0LDcgQEAgdm9pZCBTdXNwZW5kZWRQYWdlUHJveHk6OmRp
ZFJlY2VpdmVNZXNzYQogCiAjaWYgIUxPR19ESVNBQkxFRAogICAgIGlmICghbWVzc2FnZU5hbWVz
VG9JZ25vcmVXaGlsZVN1c3BlbmRlZCgpLmNvbnRhaW5zKGRlY29kZXIubWVzc2FnZU5hbWUoKSkp
Ci0gICAgICAgIExPRyhQcm9jZXNzU3dhcHBpbmcsICJTdXNwZW5kZWRQYWdlUHJveHkgcmVjZWl2
ZWQgdW5leHBlY3RlZCBXZWJQYWdlUHJveHkgbWVzc2FnZSAnJXMnIiwgZGVjb2Rlci5tZXNzYWdl
TmFtZSgpLnRvU3RyaW5nKCkuZGF0YSgpKTsKKyAgICAgICAgTE9HKFByb2Nlc3NTd2FwcGluZywg
IlN1c3BlbmRlZFBhZ2VQcm94eSByZWNlaXZlZCB1bmV4cGVjdGVkIFdlYlBhZ2VQcm94eSBtZXNz
YWdlICclcyciLCBkZXNjcmlwdGlvbihkZWNvZGVyLm1lc3NhZ2VOYW1lKCkpKTsKICNlbmRpZgog
fQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24g
MjYxMDM4KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtp
bmcgY29weSkKQEAgLTIyODAsOCArMjI4MCw2IEBAIHByaXZhdGU6CiAgICAgY29uc3QgU3RyaW5n
JiBwYXltZW50Q29vcmRpbmF0b3JCb3VuZEludGVyZmFjZUlkZW50aWZpZXIoY29uc3QgV2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHkmKSBmaW5hbDsKICAgICBjb25zdCBTdHJpbmcmIHBheW1lbnRD
b29yZGluYXRvclNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcihjb25zdCBXZWJQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eSYpIGZpbmFsOwogICAgIGNvbnN0IFN0cmluZyYgcGF5bWVudENv
b3JkaW5hdG9yU291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyKGNvbnN0IFdlYlBh
eW1lbnRDb29yZGluYXRvclByb3h5JikgZmluYWw7Ci0gICAgdm9pZCBwYXltZW50Q29vcmRpbmF0
b3JBZGRNZXNzYWdlUmVjZWl2ZXIoV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmLCBjb25zdCBJ
UEM6OlN0cmluZ1JlZmVyZW5jZSYsIElQQzo6TWVzc2FnZVJlY2VpdmVyJikgZmluYWw7Ci0gICAg
dm9pZCBwYXltZW50Q29vcmRpbmF0b3JSZW1vdmVNZXNzYWdlUmVjZWl2ZXIoV2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHkmLCBjb25zdCBJUEM6OlN0cmluZ1JlZmVyZW5jZSYpIGZpbmFsOwogI2Vu
ZGlmCiAjaWYgRU5BQkxFKEFQUExFX1BBWSkgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBV
SVZpZXdDb250cm9sbGVyICpwYXltZW50Q29vcmRpbmF0b3JQcmVzZW50aW5nVmlld0NvbnRyb2xs
ZXIoY29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmKSBmaW5hbDsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAJKHJldmlzaW9uIDI2MTAzOCkK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtODUyLDE3ICs4NTIsMTIgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0SW52YWxp
ZE1lc3NhZ2VDYQogICAgIHNfaW52YWxpZE1lc3NhZ2VDYWxsYmFjayA9IGludmFsaWRNZXNzYWdl
Q2FsbGJhY2s7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmRpZFJlY2VpdmVJbnZhbGlkTWVz
c2FnZShjb25zdCBJUEM6OlN0cmluZ1JlZmVyZW5jZSYgbWVzc2FnZVJlY2VpdmVyTmFtZSwgY29u
c3QgSVBDOjpTdHJpbmdSZWZlcmVuY2UmIG1lc3NhZ2VOYW1lKQordm9pZCBXZWJQcm9jZXNzUG9v
bDo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6TWVzc2FnZU5hbWUgbWVzc2FnZU5hbWUp
CiB7CiAgICAgaWYgKCFzX2ludmFsaWRNZXNzYWdlQ2FsbGJhY2spCiAgICAgICAgIHJldHVybjsK
IAotICAgIFN0cmluZ0J1aWxkZXIgbWVzc2FnZU5hbWVTdHJpbmdCdWlsZGVyOwotICAgIG1lc3Nh
Z2VOYW1lU3RyaW5nQnVpbGRlci5hcHBlbmRDaGFyYWN0ZXJzKG1lc3NhZ2VSZWNlaXZlck5hbWUu
ZGF0YSgpLCBtZXNzYWdlUmVjZWl2ZXJOYW1lLnNpemUoKSk7Ci0gICAgbWVzc2FnZU5hbWVTdHJp
bmdCdWlsZGVyLmFwcGVuZCgnLicpOwotICAgIG1lc3NhZ2VOYW1lU3RyaW5nQnVpbGRlci5hcHBl
bmRDaGFyYWN0ZXJzKG1lc3NhZ2VOYW1lLmRhdGEoKSwgbWVzc2FnZU5hbWUuc2l6ZSgpKTsKLQot
ICAgIHNfaW52YWxpZE1lc3NhZ2VDYWxsYmFjayh0b0FQSShBUEk6OlN0cmluZzo6Y3JlYXRlKG1l
c3NhZ2VOYW1lU3RyaW5nQnVpbGRlci50b1N0cmluZygpKS5wdHIoKSkpOworICAgIHNfaW52YWxp
ZE1lc3NhZ2VDYWxsYmFjayh0b0FQSShBUEk6OlN0cmluZzo6Y3JlYXRlKGRlc2NyaXB0aW9uKG1l
c3NhZ2VOYW1lKSkucHRyKCkpKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVzb2x2ZVBh
dGhzRm9yU2FuZGJveEV4dGVuc2lvbnMoKQpAQCAtMTY4MSwyMiArMTY3NiwyMiBAQCB2b2lkIFdl
YlByb2Nlc3NQb29sOjpzeW50aGVzaXplQXBwSXNCYWNrCiAgICAgZW5zdXJlTmV0d29ya1Byb2Nl
c3MoKS5zeW50aGVzaXplQXBwSXNCYWNrZ3JvdW5kKGJhY2tncm91bmQpOwogfQogCi12b2lkIFdl
YlByb2Nlc3NQb29sOjphZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVz
c2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImIG1lc3NhZ2VSZWNlaXZlcikK
K3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlJlY2VpdmVyTmFt
ZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYgbWVzc2FnZVJlY2Vp
dmVyKQogewogICAgIG1fbWVzc2FnZVJlY2VpdmVyTWFwLmFkZE1lc3NhZ2VSZWNlaXZlcihtZXNz
YWdlUmVjZWl2ZXJOYW1lLCBtZXNzYWdlUmVjZWl2ZXIpOwogfQogCi12b2lkIFdlYlByb2Nlc3NQ
b29sOjphZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2Vp
dmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImIG1l
c3NhZ2VSZWNlaXZlcikKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmFkZE1lc3NhZ2VSZWNlaXZlcihJ
UEM6OlJlY2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlv
bklELCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYgbWVzc2FnZVJlY2VpdmVyKQogewogICAgIG1fbWVz
c2FnZVJlY2VpdmVyTWFwLmFkZE1lc3NhZ2VSZWNlaXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1lLCBk
ZXN0aW5hdGlvbklELCBtZXNzYWdlUmVjZWl2ZXIpOwogfQogCi12b2lkIFdlYlByb2Nlc3NQb29s
OjpyZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2Vp
dmVyTmFtZSkKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihJUEM6
OlJlY2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1lKQogewogICAgIG1fbWVzc2FnZVJlY2Vp
dmVyTWFwLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1lKTsKIH0KIAot
dm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVm
ZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpCit2b2lk
IFdlYlByb2Nlc3NQb29sOjpyZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpSZWNlaXZlck5hbWUg
bWVzc2FnZVJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCkKIHsKICAgICBtX21l
c3NhZ2VSZWNlaXZlck1hcC5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFt
ZSwgZGVzdGluYXRpb25JRCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmgJKHJldmlzaW9uIDI2MTAzOCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0OCwyMSArMTQ4LDIxIEBAIHB1
YmxpYzoKICAgICAgICAgbV9zdXBwbGVtZW50cy5hZGQoVDo6c3VwcGxlbWVudE5hbWUoKSwgVDo6
Y3JlYXRlKHRoaXMpKTsKICAgICB9CiAKLSAgICB2b2lkIGFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6
OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6Ok1lc3NhZ2VSZWNlaXZl
ciYpOwotICAgIHZvaWQgYWRkTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1l
c3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIElQQzo6TWVzc2FnZVJl
Y2VpdmVyJik7Ci0gICAgdm9pZCByZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZl
cmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSk7Ci0gICAgdm9pZCByZW1vdmVNZXNzYWdlUmVjZWl2
ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVz
dGluYXRpb25JRCk7CisgICAgdm9pZCBhZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpSZWNlaXZlck5h
bWUsIElQQzo6TWVzc2FnZVJlY2VpdmVyJik7CisgICAgdm9pZCBhZGRNZXNzYWdlUmVjZWl2ZXIo
SVBDOjpSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIElQQzo6TWVzc2FnZVJl
Y2VpdmVyJik7CisgICAgdm9pZCByZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpSZWNlaXZlck5h
bWUpOworICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6UmVjZWl2ZXJOYW1lLCB1
aW50NjRfdCBkZXN0aW5hdGlvbklEKTsKIAogICAgIFdlYkJhY2tGb3J3YXJkQ2FjaGUmIGJhY2tG
b3J3YXJkQ2FjaGUoKSB7IHJldHVybiBtX2JhY2tGb3J3YXJkQ2FjaGUuZ2V0KCk7IH0KICAgICAK
ICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgICB2b2lkIGFkZE1lc3NhZ2VSZWNlaXZlcihJ
UEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBPYmplY3RJZGVudGlmaWVy
PFQ+IGRlc3RpbmF0aW9uSUQsIElQQzo6TWVzc2FnZVJlY2VpdmVyJiByZWNlaXZlcikKKyAgICB2
b2lkIGFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlJlY2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJO
YW1lLCBPYmplY3RJZGVudGlmaWVyPFQ+IGRlc3RpbmF0aW9uSUQsIElQQzo6TWVzc2FnZVJlY2Vp
dmVyJiByZWNlaXZlcikKICAgICB7CiAgICAgICAgIGFkZE1lc3NhZ2VSZWNlaXZlcihtZXNzYWdl
UmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklELnRvVUludDY0KCksIHJlY2VpdmVyKTsKICAgICB9
CiAgICAgCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAgdm9pZCByZW1vdmVNZXNzYWdl
UmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgT2JqZWN0
SWRlbnRpZmllcjxUPiBkZXN0aW5hdGlvbklEKQorICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2Vp
dmVyKElQQzo6UmVjZWl2ZXJOYW1lIG1lc3NhZ2VSZWNlaXZlck5hbWUsIE9iamVjdElkZW50aWZp
ZXI8VD4gZGVzdGluYXRpb25JRCkKICAgICB7CiAgICAgICAgIHJlbW92ZU1lc3NhZ2VSZWNlaXZl
cihtZXNzYWdlUmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklELnRvVUludDY0KCkpOwogICAgIH0K
QEAgLTQxOCw3ICs0MTgsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIHN0YXRpYyB2b2lkIHNl
dEludmFsaWRNZXNzYWdlQ2FsbGJhY2sodm9pZCAoKikoV0tTdHJpbmdSZWYpKTsKLSAgICBzdGF0
aWMgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoY29uc3QgSVBDOjpTdHJpbmdSZWZlcmVu
Y2UmIG1lc3NhZ2VSZWNlaXZlck5hbWUsIGNvbnN0IElQQzo6U3RyaW5nUmVmZXJlbmNlJiBtZXNz
YWdlTmFtZSk7CisgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6
TWVzc2FnZU5hbWUpOwogCiAgICAgYm9vbCBpc1VSTEtub3duSFNUU0hvc3QoY29uc3QgU3RyaW5n
JiB1cmxTdHJpbmcpIGNvbnN0OwogICAgIHZvaWQgcmVzZXRIU1RTSG9zdHMoKTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAkocmV2aXNpb24gMjYx
MDM4KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTYxLDggKzE2MSw4IEBAIGNsYXNzIFVJUHJveHlGb3JDYXB0dXJlIGZp
bmFsIDogcHVibGljIFUKIHB1YmxpYzoKICAgICBleHBsaWNpdCBVSVByb3h5Rm9yQ2FwdHVyZShX
ZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MpIDogbV9wcm9jZXNzKHByb2Nlc3MpIHsgfQogcHJpdmF0
ZToKLSAgICB2b2lkIGFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNz
YWdlUmVjZWl2ZXJOYW1lLCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYgcmVjZWl2ZXIpIGZpbmFsIHsg
bV9wcm9jZXNzLmFkZE1lc3NhZ2VSZWNlaXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1lLCByZWNlaXZl
cik7IH0KLSAgICB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5j
ZSBtZXNzYWdlUmVjZWl2ZXJOYW1lKSBmaW5hbCB7IG1fcHJvY2Vzcy5yZW1vdmVNZXNzYWdlUmVj
ZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSk7IH0KKyAgICB2b2lkIGFkZE1lc3NhZ2VSZWNlaXZl
cihJUEM6OlJlY2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6Ok1lc3NhZ2VSZWNl
aXZlciYgcmVjZWl2ZXIpIGZpbmFsIHsgbV9wcm9jZXNzLmFkZE1lc3NhZ2VSZWNlaXZlcihtZXNz
YWdlUmVjZWl2ZXJOYW1lLCByZWNlaXZlcik7IH0KKyAgICB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNl
aXZlcihJUEM6OlJlY2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1lKSBmaW5hbCB7IG1fcHJv
Y2Vzcy5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSk7IH0KICAgICBJ
UEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24oKSBmaW5hbCB7IHJldHVybiAqbV9wcm9jZXNzLmNv
bm5lY3Rpb24oKTsgfQogICAgIExvZ2dlciYgbG9nZ2VyKCkgZmluYWwKICAgICB7CkBAIC0zNTIs
NyArMzUyLDcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnBsYXRmb3JtR2V0TGF1bmNoTwogYm9v
bCBXZWJQcm9jZXNzUHJveHk6OnNob3VsZFNlbmRQZW5kaW5nTWVzc2FnZShjb25zdCBQZW5kaW5n
TWVzc2FnZSYgbWVzc2FnZSkKIHsKICNpZiBIQVZFKFNBTkRCT1hfSVNTVUVfUkVBRF9FWFRFTlNJ
T05fVE9fUFJPQ0VTU19CWV9BVURJVF9UT0tFTikKLSAgICBpZiAobWVzc2FnZS5lbmNvZGVyLT5t
ZXNzYWdlTmFtZSgpID09ICJMb2FkUmVxdWVzdFdhaXRpbmdGb3JQcm9jZXNzTGF1bmNoIikgewor
ICAgIGlmIChtZXNzYWdlLmVuY29kZXItPm1lc3NhZ2VOYW1lKCkgPT0gSVBDOjpNZXNzYWdlTmFt
ZTo6V2ViUGFnZV9Mb2FkUmVxdWVzdFdhaXRpbmdGb3JQcm9jZXNzTGF1bmNoKSB7CiAgICAgICAg
IGF1dG8gYnVmZmVyID0gbWVzc2FnZS5lbmNvZGVyLT5idWZmZXIoKTsKICAgICAgICAgYXV0byBi
dWZmZXJTaXplID0gbWVzc2FnZS5lbmNvZGVyLT5idWZmZXJTaXplKCk7CiAgICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxJUEM6OkRlY29kZXI+IGRlY29kZXIgPSBtYWtlVW5pcXVlPElQQzo6RGVjb2Rl
cj4oYnVmZmVyLCBidWZmZXJTaXplLCBudWxscHRyLCBWZWN0b3I8SVBDOjpBdHRhY2htZW50PiB7
IH0pOwpAQCAtODM5LDExICs4MzksMTEgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnByb2Nlc3NE
aWRUZXJtaW5hdAogICAgIH0KIH0KIAotdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVJ
bnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6U3RyaW5nUmVm
ZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VO
YW1lKQordm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6TWVzc2FnZU5hbWUgbWVzc2FnZU5hbWUpCiB7
Ci0gICAgbG9nSW52YWxpZE1lc3NhZ2UoY29ubmVjdGlvbiwgbWVzc2FnZVJlY2VpdmVyTmFtZSwg
bWVzc2FnZU5hbWUpOworICAgIGxvZ0ludmFsaWRNZXNzYWdlKGNvbm5lY3Rpb24sIG1lc3NhZ2VO
YW1lKTsKIAotICAgIFdlYlByb2Nlc3NQb29sOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UobWVz
c2FnZVJlY2VpdmVyTmFtZSwgbWVzc2FnZU5hbWUpOworICAgIFdlYlByb2Nlc3NQb29sOjpkaWRS
ZWNlaXZlSW52YWxpZE1lc3NhZ2UobWVzc2FnZU5hbWUpOwogCiAgICAgLy8gVGVybWluYXRlIHRo
ZSBXZWJDb250ZW50IHByb2Nlc3MuCiAgICAgdGVybWluYXRlKCk7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAkocmV2aXNpb24gMjYxMDM4KQorKysgU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ1Myw3ICs0NTMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNl
aXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlx
dWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZENsb3NlKElQQzo6
Q29ubmVjdGlvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5h
bWUsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lKSBvdmVycmlkZTsKKyAgICB2b2lk
IGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VO
YW1lKSBvdmVycmlkZTsKIAogICAgIC8vIFJlc3BvbnNpdmVuZXNzVGltZXI6OkNsaWVudAogICAg
IHZvaWQgZGlkQmVjb21lVW5yZXNwb25zaXZlKCkgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1h
bmFnZXJQcm94eS5oCShyZXZpc2lvbiAyNjEwMzgpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAg
LTUxLDggKzUxLDggQEAgcHVibGljOgogICAgIGNsYXNzIENvbm5lY3Rpb25Qcm94eSB7CiAgICAg
cHVibGljOgogICAgICAgICB2aXJ0dWFsIH5Db25uZWN0aW9uUHJveHkoKSA9IGRlZmF1bHQ7Ci0g
ICAgICAgIHZpcnR1YWwgdm9pZCBhZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVu
Y2UsIElQQzo6TWVzc2FnZVJlY2VpdmVyJikgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgcmVt
b3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlKSA9IDA7CisgICAgICAgIHZp
cnR1YWwgdm9pZCBhZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpSZWNlaXZlck5hbWUsIElQQzo6TWVz
c2FnZVJlY2VpdmVyJikgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlTWVzc2FnZVJl
Y2VpdmVyKElQQzo6UmVjZWl2ZXJOYW1lKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgSVBDOjpDb25u
ZWN0aW9uJiBjb25uZWN0aW9uKCkgPSAwOwogICAgICAgICB2aXJ0dWFsIGJvb2wgd2lsbFN0YXJ0
Q2FwdHVyZShXZWJDb3JlOjpDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlKSBjb25zdCA9IDA7CiAg
ICAgICAgIHZpcnR1YWwgTG9nZ2VyJiBsb2dnZXIoKSA9IDA7CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQkocmV2aXNpb24g
MjYxMDM4KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29j
b2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTI5MCwxNiArMjkwLDYgQEAgY29uc3QgU3RyaW5nJiBX
ZWJQYWdlUHJveHk6OnBheW1lbnRDb29yZAogICAgIHJldHVybiB3ZWJzaXRlRGF0YVN0b3JlKCku
Y29uZmlndXJhdGlvbigpLnNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllcigpOwog
fQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cGF5bWVudENvb3JkaW5hdG9yQWRkTWVzc2FnZVJlY2Vp
dmVyKFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JiwgY29uc3QgSVBDOjpTdHJpbmdSZWZlcmVu
Y2UmIG1lc3NhZ2VSZWNlaXZlck5hbWUsIElQQzo6TWVzc2FnZVJlY2VpdmVyJiBtZXNzYWdlUmVj
ZWl2ZXIpCi17Ci0gICAgcHJvY2VzcygpLmFkZE1lc3NhZ2VSZWNlaXZlcihtZXNzYWdlUmVjZWl2
ZXJOYW1lLCBtX3dlYlBhZ2VJRCwgbWVzc2FnZVJlY2VpdmVyKTsKLX0KLQotdm9pZCBXZWJQYWdl
UHJveHk6OnBheW1lbnRDb29yZGluYXRvclJlbW92ZU1lc3NhZ2VSZWNlaXZlcihXZWJQYXltZW50
Q29vcmRpbmF0b3JQcm94eSYsIGNvbnN0IElQQzo6U3RyaW5nUmVmZXJlbmNlJiBtZXNzYWdlUmVj
ZWl2ZXJOYW1lKQotewotICAgIHByb2Nlc3MoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIobWVzc2Fn
ZVJlY2VpdmVyTmFtZSwgbV93ZWJQYWdlSUQpOwotfQotCiAjZW5kaWYKIAogI2lmIEVOQUJMRShT
UEVFQ0hfU1lOVEhFU0lTKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR1BVL0dQVVBy
b2Nlc3NQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR1BV
L0dQVVByb2Nlc3NQcm94eS5jcHAJKHJldmlzaW9uIDI2MTAzOCkKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTEs
MTEgKzIxMSwxMSBAQCB2b2lkIEdQVVByb2Nlc3NQcm94eTo6ZGlkQ2xvc2UoSVBDOjpDb25uCiAg
ICAgZ3B1UHJvY2Vzc0NyYXNoZWQoKTsKIH0KIAotdm9pZCBHUFVQcm9jZXNzUHJveHk6OmRpZFJl
Y2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6U3Ry
aW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1l
c3NhZ2VOYW1lKQordm9pZCBHUFVQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6TWVzc2FnZU5hbWUgbWVzc2FnZU5h
bWUpCiB7Ci0gICAgbG9nSW52YWxpZE1lc3NhZ2UoY29ubmVjdGlvbiwgbWVzc2FnZVJlY2VpdmVy
TmFtZSwgbWVzc2FnZU5hbWUpOworICAgIGxvZ0ludmFsaWRNZXNzYWdlKGNvbm5lY3Rpb24sIG1l
c3NhZ2VOYW1lKTsKIAotICAgIFdlYlByb2Nlc3NQb29sOjpkaWRSZWNlaXZlSW52YWxpZE1lc3Nh
Z2UobWVzc2FnZVJlY2VpdmVyTmFtZSwgbWVzc2FnZU5hbWUpOworICAgIFdlYlByb2Nlc3NQb29s
OjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UobWVzc2FnZU5hbWUpOwogCiAgICAgLy8gVGVybWlu
YXRlIHRoZSBHUFUgcHJvY2Vzcy4KICAgICB0ZXJtaW5hdGUoKTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmgJKHJldmlzaW9uIDI2MTAzOCkK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTAwLDcgKzEwMCw3IEBAIHByaXZhdGU6CiAgICAgLy8gSVBDOjpDb25uZWN0
aW9uOjpDbGllbnQKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYs
IElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkQ2xvc2UoSVBDOjpDb25uZWN0
aW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBD
OjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVj
ZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZU5hbWUpIG92
ZXJyaWRlOwogCiAjaWYgSEFWRShWSVNJQklMSVRZX1BST1BBR0FUSU9OX1ZJRVcpCiAgICAgdm9p
ZCBkaWRDcmVhdGVDb250ZXh0Rm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9uKExheWVySG9zdGluZ0Nv
bnRleHRJRCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAJKHJldmlzaW9uIDI2MTAzOCkKKysrIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI4MCw5ICsyODAsOSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRp
ZENsb3NlKElQQzo6CiAgICAgbmV0d29ya1Byb2Nlc3NDcmFzaGVkKCk7CiB9CiAKLXZvaWQgTmV0
d29ya1Byb2Nlc3NQcm94eTo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYgY29ubmVjdGlvbiwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwg
SVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUpCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJv
eHk6OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24s
IElQQzo6TWVzc2FnZU5hbWUgbWVzc2FnZU5hbWUpCiB7Ci0gICAgbG9nSW52YWxpZE1lc3NhZ2Uo
Y29ubmVjdGlvbiwgbWVzc2FnZVJlY2VpdmVyTmFtZSwgbWVzc2FnZU5hbWUpOworICAgIGxvZ0lu
dmFsaWRNZXNzYWdlKGNvbm5lY3Rpb24sIG1lc3NhZ2VOYW1lKTsKICAgICB0ZXJtaW5hdGUoKTsK
IH0KIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5LmgJKHJldmlzaW9uIDI2MTAzOCkKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yNDUsNyArMjQ1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVj
ZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5p
cXVlX3B0cjxJUEM6OkVuY29kZXI+Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRDbG9zZShJUEM6
OkNvbm5lY3Rpb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJO
YW1lLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZSkgb3ZlcnJpZGU7CisgICAgdm9p
ZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdl
TmFtZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlU3luY05ldHdvcmtQcm9jZXNzUHJv
eHlNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0
cjxJUEM6OkVuY29kZXI+Jik7CiAKICAgICAvLyBNZXNzYWdlIGhhbmRsZXJzCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJv
eHkuY3BwCShyZXZpc2lvbiAyNjEwMzgpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblByb2Nlc3NQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxNCw5ICsyMTQs
OSBAQCB2b2lkIFBsdWdpblByb2Nlc3NQcm94eTo6ZGlkQ2xvc2UoSVBDOjpDCiAgICAgcGx1Z2lu
UHJvY2Vzc0NyYXNoZWRPckZhaWxlZFRvTGF1bmNoKCk7CiB9CiAKLXZvaWQgUGx1Z2luUHJvY2Vz
c1Byb3h5OjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0
aW9uLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6OlN0cmlu
Z1JlZmVyZW5jZSBtZXNzYWdlTmFtZSkKK3ZvaWQgUGx1Z2luUHJvY2Vzc1Byb3h5OjpkaWRSZWNl
aXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6Ok1lc3Nh
Z2VOYW1lIG1lc3NhZ2VOYW1lKQogewotICAgIGxvZ0ludmFsaWRNZXNzYWdlKGNvbm5lY3Rpb24s
IG1lc3NhZ2VSZWNlaXZlck5hbWUsIG1lc3NhZ2VOYW1lKTsKKyAgICBsb2dJbnZhbGlkTWVzc2Fn
ZShjb25uZWN0aW9uLCBtZXNzYWdlTmFtZSk7CiAgICAgdGVybWluYXRlKCk7CiB9CiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNz
UHJveHkuaAkocmV2aXNpb24gMjYxMDM4KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMTA0LDcgKzEwNCw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBvdmVy
cmlkZTsKIAogICAgIHZvaWQgZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJikgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpT
dHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpTdHJpbmdSZWZlcmVuY2Ug
bWVzc2FnZU5hbWUpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZU5hbWUpIG92ZXJyaWRlOwogCiAgICAgLy8g
UHJvY2Vzc0xhdW5jaGVyOjpDbGllbnQKICAgICB2b2lkIGRpZEZpbmlzaExhdW5jaGluZyhQcm9j
ZXNzTGF1bmNoZXIqLCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIpIG92ZXJyaWRlOwpJbmRl
eDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAkocmV2aXNpb24gMjYxMDM4
KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC03ODUsNyArNzg1LDcgQEAgdm9pZCBXZWJQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2Fn
ZShJUEM6OgogICAgIH0KICNlbmRpZgogCi0gICAgTE9HX0VSUk9SKCJVbmhhbmRsZWQgd2ViIHBy
b2Nlc3MgbWVzc2FnZSAnJXM6OiVzJyAoZGVzdGluYXRpb246ICUiIFBSSXU2NCAiIHBpZDogJWQp
IiwgZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkudG9TdHJpbmcoKS5kYXRhKCksIGRlY29k
ZXIubWVzc2FnZU5hbWUoKS50b1N0cmluZygpLmRhdGEoKSwgZGVjb2Rlci5kZXN0aW5hdGlvbklE
KCksIHN0YXRpY19jYXN0PGludD4oZ2V0Q3VycmVudFByb2Nlc3NJRCgpKSk7CisgICAgTE9HX0VS
Uk9SKCJVbmhhbmRsZWQgd2ViIHByb2Nlc3MgbWVzc2FnZSAnJXMnIChkZXN0aW5hdGlvbjogJSIg
UFJJdTY0ICIgcGlkOiAlZCkiLCBkZXNjcmlwdGlvbihkZWNvZGVyLm1lc3NhZ2VOYW1lKCkpLCBk
ZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSwgc3RhdGljX2Nhc3Q8aW50PihnZXRDdXJyZW50UHJvY2Vz
c0lEKCkpKTsKIH0KIAogV2ViRnJhbWUqIFdlYlByb2Nlc3M6OndlYkZyYW1lKEZyYW1lSWRlbnRp
ZmllciBmcmFtZUlEKSBjb25zdApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9H
UFVQcm9jZXNzQ29ubmVjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5jcHAJKHJldmlzaW9uIDI2MTAzOCkKKysr
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC03Myw3ICs3Myw3IEBAIHZvaWQgR1BVUHJvY2Vzc0Nvbm5lY3Rpb246
OmRpZENsb3NlKElQQzoKIHsKIH0KIAotdm9pZCBHUFVQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVj
ZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6U3RyaW5nUmVmZXJlbmNl
LCBJUEM6OlN0cmluZ1JlZmVyZW5jZSkKK3ZvaWQgR1BVUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJl
Y2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VOYW1lKQog
ewogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25u
ZWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQ
cm9jZXNzQ29ubmVjdGlvbi5oCShyZXZpc2lvbiAyNjEwMzgpCisrKyBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTgw
LDcgKzgwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYp
IG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwg
SVBDOjpEZWNvZGVyJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rl
cj4mKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6OlN0
cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZl
SW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlTmFtZSkgb3ZlcnJp
ZGU7CiAKICAgICBib29sIGRpc3BhdGNoTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRl
Y29kZXImKTsKICAgICBib29sIGRpc3BhdGNoU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwg
SVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3IuaAko
cmV2aXNpb24gMjYxMDM4KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9X
ZWJJbnNwZWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAK
ICAgICAvLyBJUEM6OkNvbm5lY3Rpb246OkNsaWVudAogICAgIHZvaWQgZGlkQ2xvc2UoSVBDOjpD
b25uZWN0aW9uJikgb3ZlcnJpZGUgeyBjbG9zZSgpOyB9Ci0gICAgdm9pZCBkaWRSZWNlaXZlSW52
YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpTdHJpbmdSZWZlcmVuY2UsIElQQzo6
U3RyaW5nUmVmZXJlbmNlKSBvdmVycmlkZSB7IGNsb3NlKCk7IH0KKyAgICB2b2lkIGRpZFJlY2Vp
dmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VOYW1lKSBvdmVy
cmlkZSB7IGNsb3NlKCk7IH0KIAogICAgIHZvaWQgc2hvdygpOwogICAgIHZvaWQgY2xvc2UoKTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUku
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYklu
c3BlY3RvclVJLmgJKHJldmlzaW9uIDI2MTAzOCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUkuaAkod29ya2luZyBjb3B5KQpAQCAtNTIsNyArNTIs
NyBAQCBwdWJsaWM6CiAKICAgICAvLyBJUEM6OkNvbm5lY3Rpb246OkNsaWVudAogICAgIHZvaWQg
ZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJikgb3ZlcnJpZGUgeyAvKiBEbyBub3RoaW5nLCB0aGUg
aW5zcGVjdGVkIHBhZ2UgcHJvY2VzcyBtYXkgaGF2ZSBjcmFzaGVkIGFuZCBtYXkgYmUgZ2V0dGlu
ZyByZXBsYWNlZC4gKi8gfQotICAgIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6U3RyaW5nUmVmZXJlbmNlLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSkg
b3ZlcnJpZGUgeyBjbG9zZVdpbmRvdygpOyB9CisgICAgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlTmFtZSkgb3ZlcnJpZGUgeyBjbG9z
ZVdpbmRvdygpOyB9CiAKICAgICAvLyBDYWxsZWQgYnkgV2ViSW5zcGVjdG9yVUkgbWVzc2FnZXMK
ICAgICB2b2lkIGVzdGFibGlzaENvbm5lY3Rpb24oV2ViUGFnZVByb3h5SWRlbnRpZmllciBpbnNw
ZWN0ZWRQYWdlSWRlbnRpZmllciwgY29uc3QgRGVidWdnYWJsZUluZm9EYXRhJiwgYm9vbCB1bmRl
clRlc3QsIHVuc2lnbmVkIGluc3BlY3Rpb25MZXZlbCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbi5jcHAJKHJldmlzaW9uIDI2MTAzOCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIx
OSw3ICsyMTksNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkQ2xvc2UoCiAj
ZW5kaWYKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVJbnZh
bGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSwgSVBDOjpT
dHJpbmdSZWZlcmVuY2UpCit2b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2
ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZU5hbWUpCiB7CiB9
CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oCShyZXZpc2lvbiAyNjEwMzgpCisrKyBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaAko
d29ya2luZyBjb3B5KQpAQCAtOTgsNyArOTgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVj
ZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNv
ZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBvdmVycmlkZTsKICAgICB2b2lk
IGRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2
ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1l
c3NhZ2VSZWNlaXZlck5hbWUsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
LCBJUEM6Ok1lc3NhZ2VOYW1lKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZGlkRmluaXNoUGluZ0xv
YWQodWludDY0X3QgcGluZ0xvYWRJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiYs
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJik7CiAgICAgdm9pZCBkaWRGaW5pc2hQcmVjb25u
ZWN0aW9uKHVpbnQ2NF90IHByZWNvbm5lY3Rpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yJiYpOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
UHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uLmNwcAkocmV2aXNpb24gMjYxMDM4
KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5l
Y3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjgsNyArMTI4LDcgQEAgdm9pZCBQbHVnaW5Q
cm9jZXNzQ29ubmVjdGlvbjo6ZGlkQ2xvc2UoSQogICAgIH0KIH0KIAotdm9pZCBQbHVnaW5Qcm9j
ZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYs
IElQQzo6U3RyaW5nUmVmZXJlbmNlLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSkKK3ZvaWQgUGx1Z2lu
UHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mLCBJUEM6Ok1lc3NhZ2VOYW1lKQogewogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uLmgJ
KHJldmlzaW9uIDI2MTAzOCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblByb2Nlc3NDb25uZWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTY2LDcgKzY2LDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQ
Qzo6RGVjb2RlciYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29k
ZXI+Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mKSBvdmVy
cmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
LCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6OlN0cmluZ1Jl
ZmVyZW5jZSBtZXNzYWdlTmFtZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlSW52YWxp
ZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlTmFtZSkgb3ZlcnJpZGU7CiAK
ICAgICAvLyBNZXNzYWdlIGhhbmRsZXJzLgogICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNQbHVnaW5Q
cm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwg
c3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJl
YS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1v
dGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0JKHJldmlzaW9uIDI2MTAz
OCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9S
ZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMzg1LDcgKzM4
NSw3IEBAIHZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OnVwZGF0ZVIKICAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5OjpXaWxsQ29tbWl0TGF5
ZXJUcmVlKGxheWVyVHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JRCgpKSk7CiAKICAgICBNZXNzYWdl
czo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6Q29tbWl0TGF5ZXJUcmVlIG1lc3Nh
Z2UobGF5ZXJUcmFuc2FjdGlvbiwgc2Nyb2xsaW5nVHJhbnNhY3Rpb24pOwotICAgIGF1dG8gY29t
bWl0RW5jb2RlciA9IG1ha2VVbmlxdWU8SVBDOjpFbmNvZGVyPihNZXNzYWdlczo6UmVtb3RlTGF5
ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6Q29tbWl0TGF5ZXJUcmVlOjpyZWNlaXZlck5hbWUoKSwg
TWVzc2FnZXM6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OkNvbW1pdExheWVyVHJl
ZTo6bmFtZSgpLCBtX2lkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgYXV0byBjb21taXRFbmNv
ZGVyID0gbWFrZVVuaXF1ZTxJUEM6OkVuY29kZXI+KE1lc3NhZ2VzOjpSZW1vdGVMYXllclRyZWVE
cmF3aW5nQXJlYVByb3h5OjpDb21taXRMYXllclRyZWU6Om5hbWUoKSwgbV9pZGVudGlmaWVyLnRv
VUludDY0KCkpOwogICAgIGNvbW1pdEVuY29kZXItPmVuY29kZShtZXNzYWdlLmFyZ3VtZW50cygp
KTsKIAogICAgIC8vIEZJWE1FOiBNb3ZlIGFsbCBiYWNraW5nIHN0b3JlIGZsdXNoaW5nIG1hbmFn
ZW1lbnQgdG8gUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmVDb2xsZWN0aW9uLgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398641</attachid>
            <date>2020-05-06 11:52:34 -0700</date>
            <delta_ts>2020-05-06 12:14:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211112-20200506115233.patch</filename>
            <type>text/plain</type>
            <size>306130</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNjEyMzgpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDIwLTA1LTA2ICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVkdWNlIElQQyBvdmVyaGVhZCBm
b3IgbWVzc2FnZSByZWNlaXZlciBuYW1lIGFuZCBtZXNzYWdlIG5hbWUgdG8gMiBieXRlcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjExMTEyCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvRW51bVRy
YWl0cy5oOgorCiAyMDIwLTA1LTA2ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAog
ICAgICAgICBSZW1vdmUgbm93LXVubmVlZGVkIFVTRShHUkFNTUFSX0NIRUNLSU5HKQpJbmRleDog
U291cmNlL1dURi93dGYvRW51bVRyYWl0cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3Rm
L0VudW1UcmFpdHMuaAkocmV2aXNpb24gMjYxMjM4KQorKysgU291cmNlL1dURi93dGYvRW51bVRy
YWl0cy5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw5IEBAIHN0cnVjdCBFbnVtVmFsdWVD
aGVja2VyPFQsIEVudW1WYWx1ZXM8RT4KICAgICB9CiB9OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBF
LCB0eXBlbmFtZSBULCBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfZW51bTxFPjo6dmFsdWUgJiYg
IXN0ZDo6aXNfc2FtZTxzdGQ6OnVuZGVybHlpbmdfdHlwZV90PEU+LCBib29sPjo6dmFsdWU+KiA9
IG51bGxwdHI+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBjbGFzcyBIYXNDdXN0b21Jc1ZhbGlkRW51
bSA6IHB1YmxpYyBzdGQ6OmZhbHNlX3R5cGUgeyB9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBFLCB0
eXBlbmFtZSBULCBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfZW51bTxFPjo6dmFsdWUgJiYgIXN0
ZDo6aXNfc2FtZTxzdGQ6OnVuZGVybHlpbmdfdHlwZV90PEU+LCBib29sPjo6dmFsdWUgJiYgIUhh
c0N1c3RvbUlzVmFsaWRFbnVtPEU+Ojp2YWx1ZT4qID0gbnVsbHB0cj4KIGNvbnN0ZXhwciBib29s
IGlzVmFsaWRFbnVtKFQgdCkKIHsKICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihUKSA+PSBzdGQ6
OnVuZGVybHlpbmdfdHlwZV90PEU+KCksICJJbnRlZ3JhbCB0eXBlIG11c3QgYmUgYXQgbGVhc3Qg
dGhlIHNpemUgb2YgdGhlIHVuZGVybHlpbmcgZW51bSB0eXBlIik7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2
aXNpb24gMjYxMjM4KQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwyODYgQEAKKzIwMjAtMDUtMDYgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0
ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZWR1Y2UgSVBDIG92ZXJoZWFkIGZvciBtZXNz
YWdlIHJlY2VpdmVyIG5hbWUgYW5kIG1lc3NhZ2UgbmFtZSB0byAyIGJ5dGVzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTExMTIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIERlcml2ZWRTb3VyY2VzLW91
dHB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAg
ICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdl
KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNl
aXZlTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpkaWRSZWNlaXZlU3luY01lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Byb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Byb2Nlc3M6OmRpZFJlY2VpdmVTeW5jTWVzc2FnZSk6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvaW9zL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzSU9TLm1tOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cGF5bWVudENvb3JkaW5hdG9y
QWRkTWVzc2FnZVJlY2VpdmVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnBheW1lbnRDb29yZGluYXRvclJlbW92ZU1lc3NhZ2VSZWNl
aXZlcik6IERlbGV0ZWQuCisgICAgICAgICogUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwOgor
ICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpXYWl0Rm9yTWVzc2FnZVN0YXRlOjpXYWl0Rm9yTWVz
c2FnZVN0YXRlKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6YWRkV29ya1F1ZXVlTWVzc2Fn
ZVJlY2VpdmVyKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6cmVtb3ZlV29ya1F1ZXVlTWVz
c2FnZVJlY2VpdmVyKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6ZGlzcGF0Y2hXb3JrUXVl
dWVNZXNzYWdlUmVjZWl2ZXJNZXNzYWdlKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6YWRk
VGhyZWFkTWVzc2FnZVJlY2VpdmVyKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6cmVtb3Zl
VGhyZWFkTWVzc2FnZVJlY2VpdmVyKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6ZGlzcGF0
Y2hUaHJlYWRNZXNzYWdlUmVjZWl2ZXJNZXNzYWdlKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlv
bjo6Y3JlYXRlU3luY01lc3NhZ2VFbmNvZGVyKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6
c2VuZE1lc3NhZ2UpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjp3YWl0Rm9yTWVzc2FnZSk6
CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnNlbmRTeW5jTWVzc2FnZSk6CisgICAgICAgIChJ
UEM6OkNvbm5lY3Rpb246OndhaXRGb3JTeW5jUmVwbHkpOgorICAgICAgICAoSVBDOjpDb25uZWN0
aW9uOjpwcm9jZXNzSW5jb21pbmdNZXNzYWdlKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6
ZGlzcGF0Y2hTeW5jTWVzc2FnZSk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OmRpc3BhdGNo
RGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6ZGlz
cGF0Y2hNZXNzYWdlKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6ZGlzcGF0Y2hNZXNzYWdl
VG9Xb3JrUXVldWVSZWNlaXZlcik6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OmRpc3BhdGNo
TWVzc2FnZVRvVGhyZWFkUmVjZWl2ZXIpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpkaXNw
YXRjaEluY29taW5nTWVzc2FnZXMpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9Db25uZWN0aW9u
Lmg6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnNlbmQpOgorICAgICAgICAoSVBDOjpDb25u
ZWN0aW9uOjpzZW5kV2l0aEFzeW5jUmVwbHkpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpz
ZW5kU3luYyk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OndhaXRGb3JBbmREaXNwYXRjaElt
bWVkaWF0ZWx5KToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvRGVjb2Rlci5jcHA6CisgICAgICAg
ICogUGxhdGZvcm0vSVBDL0RlY29kZXIuaDoKKyAgICAgICAgKElQQzo6RGVjb2Rlcjo6bWVzc2Fn
ZVJlY2VpdmVyTmFtZSBjb25zdCk6CisgICAgICAgIChJUEM6OkRlY29kZXI6Om1lc3NhZ2VOYW1l
IGNvbnN0KToKKyAgICAgICAgKElQQzo6RGVjb2Rlcjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6
RGVjb2Rlcjo6b3BlcmF0b3I+Pik6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0VuY29kZXIuY3Bw
OgorICAgICAgICAoSVBDOjpFbmNvZGVyOjpFbmNvZGVyKToKKyAgICAgICAgKElQQzo6RW5jb2Rl
cjo6ZW5jb2RlSGVhZGVyKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvRW5jb2Rlci5oOgorICAg
ICAgICAqIFBsYXRmb3JtL0lQQy9IYW5kbGVNZXNzYWdlLmg6CisgICAgICAgIChJUEM6OmhhbmRs
ZU1lc3NhZ2VBc3luYyk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL01lc3NhZ2VSZWNlaXZlck1h
cC5jcHA6CisgICAgICAgIChJUEM6Ok1lc3NhZ2VSZWNlaXZlck1hcDo6YWRkTWVzc2FnZVJlY2Vp
dmVyKToKKyAgICAgICAgKElQQzo6TWVzc2FnZVJlY2VpdmVyTWFwOjpyZW1vdmVNZXNzYWdlUmVj
ZWl2ZXIpOgorICAgICAgICAoSVBDOjpNZXNzYWdlUmVjZWl2ZXJNYXA6OmRpc3BhdGNoTWVzc2Fn
ZSk6CisgICAgICAgIChJUEM6Ok1lc3NhZ2VSZWNlaXZlck1hcDo6ZGlzcGF0Y2hTeW5jTWVzc2Fn
ZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL01lc3NhZ2VSZWNlaXZlck1hcC5oOgorICAgICAg
ICAqIFBsYXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVyLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBD
L2NvY29hL0Nvbm5lY3Rpb25Db2NvYS5tbToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6b3Bl
bik6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnNlbmRNZXNzYWdlKToKKyAgICAgICAgKElQ
Qzo6Q29ubmVjdGlvbjo6c2VuZE91dGdvaW5nTWVzc2FnZSk6CisgICAgICAgIChJUEM6OkNvbm5l
Y3Rpb246OnJlY2VpdmVTb3VyY2VFdmVudEhhbmRsZXIpOgorICAgICAgICAqIFBsYXRmb3JtL0lQ
Qy9jb2NvYS9NYWNoTWVzc2FnZS5jcHA6CisgICAgICAgIChJUEM6Ok1hY2hNZXNzYWdlOjpjcmVh
dGUpOgorICAgICAgICAoSVBDOjpNYWNoTWVzc2FnZTo6TWFjaE1lc3NhZ2UpOgorICAgICAgICAq
IFBsYXRmb3JtL0lQQy9jb2NvYS9NYWNoTWVzc2FnZS5oOgorICAgICAgICAoSVBDOjpNYWNoTWVz
c2FnZTo6bWVzc2FnZVJlY2VpdmVyTmFtZSBjb25zdCk6CisgICAgICAgIChJUEM6Ok1hY2hNZXNz
YWdlOjptZXNzYWdlTmFtZSBjb25zdCk6CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9XZWJQcm9j
ZXNzQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDb25uZWN0aW9u
OjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UpOgorICAgICAgICAqIFBsdWdpblByb2Nlc3MvV2Vi
UHJvY2Vzc0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBTY3JpcHRzL01ha2VmaWxlOgorICAgICAg
ICAqIFNjcmlwdHMvZ2VuZXJhdGUtbWVzc2FnZS1yZWNlaXZlci5weToKKyAgICAgICAgKG1haW4p
OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L0xlZ2FjeU1lc3NhZ2VzLWV4cGVjdGVkLmg6IFJl
bW92ZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXQvTGVnYWN5TWVzc2FnZXNSZXBsaWVzLWV4
cGVjdGVkLmg6IFJlbW92ZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXQvTWVzc2FnZU5hbWVz
LmNwcDogQWRkZWQuCisgICAgICAgIChJUEM6OmRlc2NyaXB0aW9uKToKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdC9NZXNzYWdlTmFtZXMuaDogQWRkZWQuCisgICAgICAgIChJUEM6OnJlY2VpdmVy
TmFtZSk6CisgICAgICAgIChXVEY6OmlzVmFsaWRFbnVtKToKKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdC9NZXNzYWdlUmVjZWl2ZXItZXhwZWN0ZWQuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFNj
cmlwdHMvd2Via2l0L01lc3NhZ2VSZWNlaXZlclN1cGVyY2xhc3MtZXhwZWN0ZWQuY3BwOiBSZW1v
dmVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L01lc3NhZ2VzLWV4cGVjdGVkLmg6IFJlbW92
ZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXQvTWVzc2FnZXNSZXBsaWVzLWV4cGVjdGVkLmg6
IFJlbW92ZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXQvTWVzc2FnZXNSZXBsaWVzU3VwZXJj
bGFzc1JlcGxpZXMtZXhwZWN0ZWQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dC9NZXNzYWdlc1N1cGVyY2xhc3MtZXhwZWN0ZWQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0LWxl
Z2FjeS1tZXNzYWdlcy5pbjogUmVtb3ZlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0
LWxlZ2FjeS5tZXNzYWdlcy5pbjogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9TY3JpcHRzL3dl
YmtpdC90ZXN0LWxlZ2FjeS1tZXNzYWdlcy5pbi4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC90
ZXN0LWxlZ2FjeU1lc3NhZ2VSZWNlaXZlci5jcHA6IEFkZGVkLgorICAgICAgICAoTWVzc2FnZXM6
OldlYlBhZ2U6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpzZW5kKToKKyAgICAgICAgKE1l
c3NhZ2VzOjpXZWJQYWdlOjpUZXN0TXVsdGlwbGVBdHRyaWJ1dGVzOjpzZW5kKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZTo6ZGlkUmVjZWl2ZVdlYlBhZ2VNZXNzYWdlKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZTo6ZGlkUmVjZWl2ZVN5bmNXZWJQYWdlTWVzc2FnZSk6CisgICAgICAgICog
U2NyaXB0cy93ZWJraXQvdGVzdC1sZWdhY3lNZXNzYWdlcy5oOiBBZGRlZC4KKyAgICAgICAgKE1l
c3NhZ2VzOjpXZWJQYWdlOjptZXNzYWdlUmVjZWl2ZXJOYW1lKToKKyAgICAgICAgKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpMb2FkVVJMOjpuYW1lKToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpM
b2FkVVJMOjpMb2FkVVJMKToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkVVJMOjph
cmd1bWVudHMgY29uc3QpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRTb21ldGhp
bmc6Om5hbWUpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRTb21ldGhpbmc6Okxv
YWRTb21ldGhpbmcpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRTb21ldGhpbmc6
OmFyZ3VtZW50cyBjb25zdCk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6VG91Y2hFdmVu
dDo6bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6VG91Y2hFdmVudDo6VG91Y2hF
dmVudCk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6VG91Y2hFdmVudDo6YXJndW1lbnRz
IGNvbnN0KToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpBZGRFdmVudDo6bmFtZSk6Cisg
ICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6QWRkRXZlbnQ6OkFkZEV2ZW50KToKKyAgICAgICAg
KE1lc3NhZ2VzOjpXZWJQYWdlOjpBZGRFdmVudDo6YXJndW1lbnRzIGNvbnN0KToKKyAgICAgICAg
KE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkU29tZXRoaW5nRWxzZTo6bmFtZSk6CisgICAgICAgIChN
ZXNzYWdlczo6V2ViUGFnZTo6TG9hZFNvbWV0aGluZ0Vsc2U6OkxvYWRTb21ldGhpbmdFbHNlKToK
KyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkU29tZXRoaW5nRWxzZTo6YXJndW1lbnRz
IGNvbnN0KToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZWNlaXZlUG9saWN5RGVj
aXNpb246Om5hbWUpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJlY2VpdmVQb2xp
Y3lEZWNpc2lvbjo6RGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKToKKyAgICAgICAgKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpEaWRSZWNlaXZlUG9saWN5RGVjaXNpb246OmFyZ3VtZW50cyBjb25zdCk6Cisg
ICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6Q2xvc2U6Om5hbWUpOgorICAgICAgICAoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkNsb3NlOjphcmd1bWVudHMgY29uc3QpOgorICAgICAgICAoTWVzc2FnZXM6
OldlYlBhZ2U6OlByZWZlcmVuY2VzRGlkQ2hhbmdlOjpuYW1lKToKKyAgICAgICAgKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpQcmVmZXJlbmNlc0RpZENoYW5nZTo6UHJlZmVyZW5jZXNEaWRDaGFuZ2UpOgor
ICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlByZWZlcmVuY2VzRGlkQ2hhbmdlOjphcmd1bWVu
dHMgY29uc3QpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlNlbmREb3VibGVBbmRGbG9h
dDo6bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6U2VuZERvdWJsZUFuZEZsb2F0
OjpTZW5kRG91YmxlQW5kRmxvYXQpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlNlbmRE
b3VibGVBbmRGbG9hdDo6YXJndW1lbnRzIGNvbnN0KToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpTZW5kSW50czo6bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6U2VuZElu
dHM6OlNlbmRJbnRzKToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZW5kSW50czo6YXJn
dW1lbnRzIGNvbnN0KToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpDcmVhdGVQbHVnaW46
Om5hbWUpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OkNyZWF0ZVBsdWdpbjo6Q3JlYXRl
UGx1Z2luKToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpDcmVhdGVQbHVnaW46OmFyZ3Vt
ZW50cyBjb25zdCk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6UnVuSmF2YVNjcmlwdEFs
ZXJ0OjpuYW1lKToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpSdW5KYXZhU2NyaXB0QWxl
cnQ6OlJ1bkphdmFTY3JpcHRBbGVydCk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6UnVu
SmF2YVNjcmlwdEFsZXJ0Ojphcmd1bWVudHMgY29uc3QpOgorICAgICAgICAoTWVzc2FnZXM6Oldl
YlBhZ2U6OkdldFBsdWdpbnM6Om5hbWUpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6Okdl
dFBsdWdpbnM6OkdldFBsdWdpbnMpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFBs
dWdpbnM6OmFyZ3VtZW50cyBjb25zdCk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6R2V0
UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246Om5hbWUpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBh
Z2U6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlv
bik6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rp
b246OmFyZ3VtZW50cyBjb25zdCk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6VGVzdE11
bHRpcGxlQXR0cmlidXRlczo6bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6VGVz
dE11bHRpcGxlQXR0cmlidXRlczo6YXJndW1lbnRzIGNvbnN0KToKKyAgICAgICAgKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpUZXN0UGFyYW1ldGVyQXR0cmlidXRlczo6bmFtZSk6CisgICAgICAgIChNZXNz
YWdlczo6V2ViUGFnZTo6VGVzdFBhcmFtZXRlckF0dHJpYnV0ZXM6OlRlc3RQYXJhbWV0ZXJBdHRy
aWJ1dGVzKToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0UGFyYW1ldGVyQXR0cmli
dXRlczo6YXJndW1lbnRzIGNvbnN0KToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUZW1w
bGF0ZVRlc3Q6Om5hbWUpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlRlbXBsYXRlVGVz
dDo6VGVtcGxhdGVUZXN0KToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUZW1wbGF0ZVRl
c3Q6OmFyZ3VtZW50cyBjb25zdCk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6U2V0Vmlk
ZW9MYXllcklEOjpuYW1lKToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRWaWRlb0xh
eWVySUQ6OlNldFZpZGVvTGF5ZXJJRCk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6U2V0
VmlkZW9MYXllcklEOjphcmd1bWVudHMgY29uc3QpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBh
Z2U6OkRpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uOjpuYW1lKToKKyAgICAgICAgKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpEaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbjo6RGlkQ3JlYXRlV2Vi
UHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZENyZWF0
ZVdlYlByb2Nlc3NDb25uZWN0aW9uOjphcmd1bWVudHMgY29uc3QpOgorICAgICAgICAoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkludGVycHJldEtleUV2ZW50OjpuYW1lKToKKyAgICAgICAgKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpJbnRlcnByZXRLZXlFdmVudDo6SW50ZXJwcmV0S2V5RXZlbnQpOgorICAgICAg
ICAoTWVzc2FnZXM6OldlYlBhZ2U6OkludGVycHJldEtleUV2ZW50Ojphcmd1bWVudHMgY29uc3Qp
OgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OkRlcHJlY2F0ZWRPcGVyYXRpb246Om5hbWUp
OgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OkRlcHJlY2F0ZWRPcGVyYXRpb246OkRlcHJl
Y2F0ZWRPcGVyYXRpb24pOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OkRlcHJlY2F0ZWRP
cGVyYXRpb246OmFyZ3VtZW50cyBjb25zdCk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6
RXhwZXJpbWVudGFsT3BlcmF0aW9uOjpuYW1lKToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdl
OjpFeHBlcmltZW50YWxPcGVyYXRpb246OkV4cGVyaW1lbnRhbE9wZXJhdGlvbik6CisgICAgICAg
IChNZXNzYWdlczo6V2ViUGFnZTo6RXhwZXJpbWVudGFsT3BlcmF0aW9uOjphcmd1bWVudHMgY29u
c3QpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3QtbGVnYWN5TWVzc2FnZXNSZXBsaWVz
Lmg6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3QtbWVzc2FnZXMuaW46IFJl
bW92ZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXQvdGVzdC1zdXBlcmNsYXNzLW1lc3NhZ2Vz
LmluOiBSZW1vdmVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3Qtc3VwZXJjbGFzcy5t
ZXNzYWdlcy5pbjogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0
LXN1cGVyY2xhc3MtbWVzc2FnZXMuaW4uCisgICAgICAgICogU2NyaXB0cy93ZWJraXQvdGVzdC1z
dXBlcmNsYXNzTWVzc2FnZVJlY2VpdmVyLmNwcDogQWRkZWQuCisgICAgICAgIChNZXNzYWdlczo6
V2ViUGFnZTo6VGVzdEFzeW5jTWVzc2FnZTo6Y2FsbFJlcGx5KToKKyAgICAgICAgKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpUZXN0QXN5bmNNZXNzYWdlOjpjYW5jZWxSZXBseSk6CisgICAgICAgIChNZXNz
YWdlczo6V2ViUGFnZTo6VGVzdEFzeW5jTWVzc2FnZTo6c2VuZCk6CisgICAgICAgIChNZXNzYWdl
czo6V2ViUGFnZTo6VGVzdEFzeW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50czo6Y2FsbFJlcGx5KToK
KyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJndW1l
bnRzOjpjYW5jZWxSZXBseSk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6VGVzdEFzeW5j
TWVzc2FnZVdpdGhOb0FyZ3VtZW50czo6c2VuZCk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFn
ZTo6VGVzdEFzeW5jTWVzc2FnZVdpdGhNdWx0aXBsZUFyZ3VtZW50czo6Y2FsbFJlcGx5KToKKyAg
ICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJn
dW1lbnRzOjpjYW5jZWxSZXBseSk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6VGVzdEFz
eW5jTWVzc2FnZVdpdGhNdWx0aXBsZUFyZ3VtZW50czo6c2VuZCk6CisgICAgICAgIChNZXNzYWdl
czo6V2ViUGFnZTo6VGVzdFN5bmNNZXNzYWdlOjpzZW5kKToKKyAgICAgICAgKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpUZXN0U3luY2hyb25vdXNNZXNzYWdlOjpzZW5kKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpk
aWRSZWNlaXZlU3luY01lc3NhZ2UpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3Qtc3Vw
ZXJjbGFzc01lc3NhZ2VzLmg6IEFkZGVkLgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6Om1l
c3NhZ2VSZWNlaXZlck5hbWUpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRVUkw6
Om5hbWUpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRVUkw6OkxvYWRVUkwpOgor
ICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRVUkw6OmFyZ3VtZW50cyBjb25zdCk6Cisg
ICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6VGVzdEFzeW5jTWVzc2FnZTo6bmFtZSk6CisgICAg
ICAgIChNZXNzYWdlczo6V2ViUGFnZTo6VGVzdEFzeW5jTWVzc2FnZTo6YXN5bmNNZXNzYWdlUmVw
bHlOYW1lKToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0QXN5bmNNZXNzYWdlOjpU
ZXN0QXN5bmNNZXNzYWdlKToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0QXN5bmNN
ZXNzYWdlOjphcmd1bWVudHMgY29uc3QpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlRl
c3RBc3luY01lc3NhZ2VXaXRoTm9Bcmd1bWVudHM6Om5hbWUpOgorICAgICAgICAoTWVzc2FnZXM6
OldlYlBhZ2U6OlRlc3RBc3luY01lc3NhZ2VXaXRoTm9Bcmd1bWVudHM6OmFzeW5jTWVzc2FnZVJl
cGx5TmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6VGVzdEFzeW5jTWVzc2FnZVdp
dGhOb0FyZ3VtZW50czo6YXJndW1lbnRzIGNvbnN0KToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpUZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1lbnRzOjpuYW1lKToKKyAgICAg
ICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1l
bnRzOjphc3luY01lc3NhZ2VSZXBseU5hbWUpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6
OlRlc3RBc3luY01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHM6OmFyZ3VtZW50cyBjb25zdCk6
CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6VGVzdFN5bmNNZXNzYWdlOjpuYW1lKToKKyAg
ICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0U3luY01lc3NhZ2U6OlRlc3RTeW5jTWVzc2Fn
ZSk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6VGVzdFN5bmNNZXNzYWdlOjphcmd1bWVu
dHMgY29uc3QpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RTeW5jaHJvbm91c01l
c3NhZ2U6Om5hbWUpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RTeW5jaHJvbm91
c01lc3NhZ2U6OlRlc3RTeW5jaHJvbm91c01lc3NhZ2UpOgorICAgICAgICAoTWVzc2FnZXM6Oldl
YlBhZ2U6OlRlc3RTeW5jaHJvbm91c01lc3NhZ2U6OmFyZ3VtZW50cyBjb25zdCk6CisgICAgICAg
ICogU2NyaXB0cy93ZWJraXQvdGVzdC1zdXBlcmNsYXNzTWVzc2FnZXNSZXBsaWVzLmg6IEFkZGVk
LgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3QubWVzc2FnZXMuaW46IEFkZGVkLgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3RNZXNzYWdlUmVjZWl2ZXIuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0TWVzc2FnZXMuaDogQWRkZWQuCisgICAgICAgIChN
ZXNzYWdlczo6Tm9uZTo6bWVzc2FnZVJlY2VpdmVyTmFtZSk6CisgICAgICAgICogU2NyaXB0cy93
ZWJraXQvdGVzdE1lc3NhZ2VzUmVwbGllcy5oOiBBZGRlZC4KKyAgICAgICAgKiBTaGFyZWQvQXBw
bGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaDoKKyAgICAgICAgKiBTaGFyZWQvQXBw
bGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OldlYlBheW1lbnRDb29yZGluYXRv
clByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6On5X
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSk6CisgICAgICAgICogU2hhcmVkL0F1eGlsaWFyeVBy
b2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpBdXhpbGlhcnlQcm9jZXNzOjphZGRNZXNzYWdl
UmVjZWl2ZXIpOgorICAgICAgICAoV2ViS2l0OjpBdXhpbGlhcnlQcm9jZXNzOjpyZW1vdmVNZXNz
YWdlUmVjZWl2ZXIpOgorICAgICAgICAoV2ViS2l0OjpBdXhpbGlhcnlQcm9jZXNzOjpkaWRSZWNl
aXZlSW52YWxpZE1lc3NhZ2UpOgorICAgICAgICAqIFNoYXJlZC9BdXhpbGlhcnlQcm9jZXNzLmg6
CisgICAgICAgIChXZWJLaXQ6OkF1eGlsaWFyeVByb2Nlc3M6OmFkZE1lc3NhZ2VSZWNlaXZlcik6
CisgICAgICAgIChXZWJLaXQ6OkF1eGlsaWFyeVByb2Nlc3M6OnJlbW92ZU1lc3NhZ2VSZWNlaXZl
cik6CisgICAgICAgICogU2hhcmVkL0NvY29hL0F1eGlsaWFyeVByb2Nlc3NDb2NvYS5tbToKKyAg
ICAgICAgKFdlYktpdDo6QXV4aWxpYXJ5UHJvY2Vzczo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdl
KToKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9BdXhp
bGlhcnlQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpBdXhpbGlhcnlQcm9jZXNz
UHJveHk6OmFkZE1lc3NhZ2VSZWNlaXZlcik6CisgICAgICAgIChXZWJLaXQ6OkF1eGlsaWFyeVBy
b2Nlc3NQcm94eTo6cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKToKKyAgICAgICAgKFdlYktpdDo6QXV4
aWxpYXJ5UHJvY2Vzc1Byb3h5Ojpsb2dJbnZhbGlkTWVzc2FnZSk6CisgICAgICAgICogVUlQcm9j
ZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpBdXhpbGlhcnlQ
cm9jZXNzUHJveHk6OmFkZE1lc3NhZ2VSZWNlaXZlcik6CisgICAgICAgIChXZWJLaXQ6OkF1eGls
aWFyeVByb2Nlc3NQcm94eTo6cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKToKKyAgICAgICAgKFdlYktp
dDo6QXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjpzZW5kKToKKyAgICAgICAgKFdlYktpdDo6QXV4aWxp
YXJ5UHJvY2Vzc1Byb3h5OjpzZW5kV2l0aEFzeW5jUmVwbHkpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5Lmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OnBheW1lbnRDb29yZGluYXRvckFkZE1lc3NhZ2VSZWNlaXZlcik6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cGF5bWVudENvb3JkaW5hdG9yUmVtb3ZlTWVz
c2FnZVJlY2VpdmVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvR1BVL0dQVVByb2Nl
c3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkdQVVByb2Nlc3NQcm94eTo6ZGlkUmVjZWl2
ZUludmFsaWRNZXNzYWdlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94
eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRSZWNlaXZlSW52YWxp
ZE1lc3NhZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVJbnZhbGlk
TWVzc2FnZSk6CisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UHJvdmlzaW9uYWxQYWdlUHJveHk6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6bWVzc2FnZU5hbWVzVG9JZ25vcmVXaGlsZVN1c3BlbmRlZCk6CisgICAgICAgIChXZWJLaXQ6
OlN1c3BlbmRlZFBhZ2VQcm94eTo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6ZGlkUmVjZWl2ZUludmFsaWRN
ZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmFkZE1lc3NhZ2VSZWNl
aXZlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpyZW1vdmVNZXNzYWdlUmVj
ZWl2ZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzUHJveHk6OnNob3VsZFNlbmRQZW5kaW5nTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQcm94eTo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvR1BVUHJv
Y2Vzc0Nvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpHUFVQcm9jZXNzQ29ubmVjdGlv
bjo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9H
UFVQcm9jZXNzQ29ubmVjdGlvbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5zcGVjdG9yL1dl
Ykluc3BlY3Rvci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3Rv
clVJLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlk
UmVjZWl2ZUludmFsaWRNZXNzYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblByb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vz
c0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZSk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5t
bToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OnVwZGF0ZVJl
bmRlcmluZyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorCiAyMDIwLTA1LTA2ICBC
cmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFtNYWNDYXRhbHlz
dF0gUHJvY2Vzc2VzIHNob3VsZCBjaGVjayBmb3IgbmV0d29yayBlbnRpdGxlbWVudCBhcyB3ZSBk
byBmb3IgbWFjT1MgYXBwcwpJbmRleDogU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAyNjEyMzgp
CisrKyBTb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMTks
MTQ4ICsxMTksMTQ4IEBAIGxpc3QoQVBQRU5EIFdlYktpdF9VTklGSUVEX1NPVVJDRV9MSVNUX0YK
ICkKIAogc2V0KFdlYktpdF9NRVNTQUdFU19JTl9GSUxFUwotICAgIEdQVVByb2Nlc3MvR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgotICAgIEdQVVByb2Nlc3MvR1BVUHJvY2Vz
cy5tZXNzYWdlcy5pbgorICAgIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcwor
ICAgIEdQVVByb2Nlc3MvR1BVUHJvY2VzcwogCi0gICAgR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHkubWVzc2FnZXMuaW4KKyAgICBHUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eQogCi0gICAgR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5tZXNzYWdlcy5pbgotICAgIEdQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlQXVkaW9TZXNzaW9uUHJveHkubWVzc2FnZXMuaW4KLSAgICBHUFVQcm9jZXNz
L21lZGlhL1JlbW90ZUNETUZhY3RvcnlQcm94eS5tZXNzYWdlcy5pbgotICAgIEdQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5tZXNzYWdlcy5pbgotICAgIEdQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkubWVzc2FnZXMuaW4KLSAgICBHUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5Lm1lc3NhZ2VzLmluCi0gICAgR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkubWVzc2FnZXMuaW4KLSAgICBHUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5Lm1lc3NhZ2VzLmluCi0gICAgR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkubWVzc2FnZXMuaW4KLSAgICBHUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCi0g
ICAgR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5Lm1lc3NhZ2VzLmluCi0g
ICAgR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlci5tZXNzYWdlcy5p
bgorICAgIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIKKyAg
ICBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvblByb3h5CisgICAgR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5UHJveHkKKyAgICBHUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUNETUluc3RhbmNlUHJveHkKKyAgICBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNl
U2Vzc2lvblByb3h5CisgICAgR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eQorICAgIEdQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5CisgICAgR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eQorICAgIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
TGVnYWN5Q0RNU2Vzc2lvblByb3h5CisgICAgR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBs
YXllck1hbmFnZXJQcm94eQorICAgIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQ
cm94eQorICAgIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIKIAot
ICAgIEdQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1lc3NhZ2VzLmluCi0g
ICAgR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIu
bWVzc2FnZXMuaW4KLSAgICBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlck1hbmFnZXIubWVzc2FnZXMuaW4KLSAgICBHUFVQcm9jZXNzL3dlYnJ0Yy9S
ZW1vdGVNZWRpYVJlY29yZGVyLm1lc3NhZ2VzLmluCi0gICAgR1BVUHJvY2Vzcy93ZWJydGMvUmVt
b3RlTWVkaWFSZWNvcmRlck1hbmFnZXIubWVzc2FnZXMuaW4KLSAgICBHUFVQcm9jZXNzL3dlYnJ0
Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIubWVzc2FnZXMuaW4KLSAgICBHUFVQcm9j
ZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyLm1lc3NhZ2Vz
LmluCisgICAgR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkKKyAgICBHUFVQ
cm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcgorICAgIEdQ
VVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdl
cgorICAgIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIKKyAgICBHUFVQcm9j
ZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlcgorICAgIEdQVVByb2Nlc3Mvd2Vi
cnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcgorICAgIEdQVVByb2Nlc3Mvd2VicnRj
L1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIKIAotICAgIE5ldHdvcmtQcm9j
ZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5tZXNzYWdlcy5pbgorICAgIE5ldHdvcmtQcm9j
ZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlcgogCi0gICAgTmV0d29ya1Byb2Nlc3MvSW5kZXhl
ZERCL1dlYklEQlNlcnZlci5tZXNzYWdlcy5pbgorICAgIE5ldHdvcmtQcm9jZXNzL0luZGV4ZWRE
Qi9XZWJJREJTZXJ2ZXIKIAotICAgIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLm1lc3NhZ2VzLmluCi0gICAgTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NvbnRlbnRS
dWxlTGlzdE1hbmFnZXIubWVzc2FnZXMuaW4KLSAgICBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5tZXNzYWdlcy5pbgotICAgIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5tZXNzYWdlcy5pbgotICAgIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLm1l
c3NhZ2VzLmluCi0gICAgTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5tZXNzYWdl
cy5pbgorICAgIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzCisg
ICAgTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIKKyAgICBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2VzcworICAgIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNv
dXJjZUxvYWRlcgorICAgIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsCisgICAg
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbQogCi0gICAgTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLm1lc3NhZ2VzLmluCi0gICAgTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMu
aW4KLSAgICBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgorICAgIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
U2VydmljZVdvcmtlckZldGNoVGFzaworICAgIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
V2ViU1dTZXJ2ZXJDb25uZWN0aW9uCisgICAgTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9X
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24KIAotICAgIE5ldHdvcmtQcm9jZXNzL1dlYlN0
b3JhZ2UvU3RvcmFnZU1hbmFnZXJTZXQubWVzc2FnZXMuaW4KKyAgICBOZXR3b3JrUHJvY2Vzcy9X
ZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyU2V0CiAKLSAgICBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9D
YWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLm1lc3NhZ2VzLmluCisgICAgTmV0d29ya1Byb2Nl
c3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbgogCi0gICAgTmV0d29ya1Byb2Nl
c3Mvd2VicnRjL05ldHdvcmtNRE5TUmVnaXN0ZXIubWVzc2FnZXMuaW4KLSAgICBOZXR3b3JrUHJv
Y2Vzcy93ZWJydGMvTmV0d29ya1JUQ01vbml0b3IubWVzc2FnZXMuaW4KLSAgICBOZXR3b3JrUHJv
Y2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLm1lc3NhZ2VzLmluCi0gICAgTmV0d29ya1By
b2Nlc3Mvd2VicnRjL05ldHdvcmtSVENTb2NrZXQubWVzc2FnZXMuaW4KKyAgICBOZXR3b3JrUHJv
Y2Vzcy93ZWJydGMvTmV0d29ya01ETlNSZWdpc3RlcgorICAgIE5ldHdvcmtQcm9jZXNzL3dlYnJ0
Yy9OZXR3b3JrUlRDTW9uaXRvcgorICAgIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRD
UHJvdmlkZXIKKyAgICBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1NvY2tldAogCi0g
ICAgUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkubWVzc2FnZXMuaW4KLSAgICBQ
bHVnaW5Qcm9jZXNzL1BsdWdpblByb2Nlc3MubWVzc2FnZXMuaW4KLSAgICBQbHVnaW5Qcm9jZXNz
L1dlYlByb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluCisgICAgUGx1Z2luUHJvY2Vzcy9QbHVn
aW5Db250cm9sbGVyUHJveHkKKyAgICBQbHVnaW5Qcm9jZXNzL1BsdWdpblByb2Nlc3MKKyAgICBQ
bHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uCiAKLSAgICBTaGFyZWQvQXV4aWxpYXJ5
UHJvY2Vzcy5tZXNzYWdlcy5pbgotICAgIFNoYXJlZC9XZWJDb25uZWN0aW9uLm1lc3NhZ2VzLmlu
CisgICAgU2hhcmVkL0F1eGlsaWFyeVByb2Nlc3MKKyAgICBTaGFyZWQvV2ViQ29ubmVjdGlvbgog
Ci0gICAgU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5tZXNzYWdl
cy5pbgorICAgIFNoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIKIAot
ICAgIFNoYXJlZC9QbHVnaW5zL05QT2JqZWN0TWVzc2FnZVJlY2VpdmVyLm1lc3NhZ2VzLmluCisg
ICAgU2hhcmVkL1BsdWdpbnMvTlBPYmplY3RNZXNzYWdlUmVjZWl2ZXIKIAotICAgIFVJUHJvY2Vz
cy9EcmF3aW5nQXJlYVByb3h5Lm1lc3NhZ2VzLmluCi0gICAgVUlQcm9jZXNzL1Zpc2l0ZWRMaW5r
U3RvcmUubWVzc2FnZXMuaW4KLSAgICBVSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5Lm1l
c3NhZ2VzLmluCi0gICAgVUlQcm9jZXNzL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkubWVzc2Fn
ZXMuaW4KLSAgICBVSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkubWVzc2FnZXMu
aW4KLSAgICBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCi0gICAgVUlQcm9jZXNz
L1dlYlBhc3RlYm9hcmRQcm94eS5tZXNzYWdlcy5pbgotICAgIFVJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5tZXNzYWdlcy5pbgotICAgIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkubWVzc2FnZXMu
aW4KKyAgICBVSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eQorICAgIFVJUHJvY2Vzcy9WaXNpdGVk
TGlua1N0b3JlCisgICAgVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eQorICAgIFVJUHJv
Y2Vzcy9XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5CisgICAgVUlQcm9jZXNzL1dlYkdlb2xvY2F0
aW9uTWFuYWdlclByb3h5CisgICAgVUlQcm9jZXNzL1dlYlBhZ2VQcm94eQorICAgIFVJUHJvY2Vz
cy9XZWJQYXN0ZWJvYXJkUHJveHkKKyAgICBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wKKyAgICBV
SVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5CiAKLSAgICBVSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJB
dXRvbWF0aW9uU2Vzc2lvbi5tZXNzYWdlcy5pbgorICAgIFVJUHJvY2Vzcy9BdXRvbWF0aW9uL1dl
YkF1dG9tYXRpb25TZXNzaW9uCiAKLSAgICBVSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJv
eHkubWVzc2FnZXMuaW4KKyAgICBVSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkKIAot
ICAgIFVJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCisgICAgVUlQcm9j
ZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkKIAotICAgIFVJUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3Rl
V2ViSW5zcGVjdG9yUHJveHkubWVzc2FnZXMuaW4KLSAgICBVSVByb2Nlc3MvSW5zcGVjdG9yL1dl
Ykluc3BlY3RvclByb3h5Lm1lc3NhZ2VzLmluCisgICAgVUlQcm9jZXNzL0luc3BlY3Rvci9SZW1v
dGVXZWJJbnNwZWN0b3JQcm94eQorICAgIFVJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9y
UHJveHkKIAotICAgIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2Fn
ZXMuaW4KKyAgICBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5CiAKLSAgICBV
SVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KKyAgICBVSVBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkKIAotICAgIFVJUHJvY2Vzcy9Vc2VyQ29u
dGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5tZXNzYWdlcy5pbgorICAgIFVJUHJv
Y2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eQogCi0gICAgV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisgICAgV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
CiAKLSAgICBXZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5t
ZXNzYWdlcy5pbgorICAgIFdlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lv
blByb3h5CiAKLSAgICBXZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCQ29ubmVj
dGlvblRvU2VydmVyLm1lc3NhZ2VzLmluCisgICAgV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhl
ZERCL1dlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcgogCi0gICAgV2ViUHJvY2Vzcy9GdWxsU2NyZWVu
L1dlYkZ1bGxTY3JlZW5NYW5hZ2VyLm1lc3NhZ2VzLmluCisgICAgV2ViUHJvY2Vzcy9GdWxsU2Ny
ZWVuL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyCiAKLSAgICBXZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNz
Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgorICAgIFdlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25u
ZWN0aW9uCiAKLSAgICBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kLm1lc3NhZ2VzLmluCisgICAgV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVy
aW5nQmFja2VuZAogCi0gICAgV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlLm1lc3NhZ2VzLmluCi0gICAgV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9E
ZXN0aW5hdGlvblByb3h5Lm1lc3NhZ2VzLmluCi0gICAgV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlQXVkaW9TZXNzaW9uLm1lc3NhZ2VzLmluCi0gICAgV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uLm1lc3NhZ2VzLmluCi0gICAgV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5tZXNzYWdlcy5pbgotICAgIFdlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5tZXNzYWdlcy5pbgorICAgIFdlYlByb2Nl
c3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZQorICAgIFdlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eQorICAgIFdlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvbgorICAgIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvbgorICAgIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNE
TVNlc3Npb24KKyAgICBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFn
ZXIKIAotICAgIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MubWVzc2FnZXMu
aW4KLSAgICBXZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLm1l
c3NhZ2VzLmluCisgICAgV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcworICAg
IFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIKIAotICAgIFdl
YlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluCisg
ICAgV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIKIAotICAgIFdl
YlByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclVJLm1lc3NhZ2VzLmluCi0gICAg
V2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yLm1lc3NhZ2VzLmluCi0gICAgV2ViUHJv
Y2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9ySW50ZXJydXB0RGlzcGF0Y2hlci5tZXNzYWdlcy5p
bgotICAgIFdlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJLm1lc3NhZ2VzLmluCisg
ICAgV2ViUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yVUkKKyAgICBXZWJQcm9j
ZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3IKKyAgICBXZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJ
bnNwZWN0b3JJbnRlcnJ1cHREaXNwYXRjaGVyCisgICAgV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2Vi
SW5zcGVjdG9yVUkKIAotICAgIFdlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDTmV0
d29yay5tZXNzYWdlcy5pbgotICAgIFdlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvV2ViTUROU1Jl
Z2lzdGVyLm1lc3NhZ2VzLmluCi0gICAgV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJSVENN
b25pdG9yLm1lc3NhZ2VzLmluCi0gICAgV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJSVENS
ZXNvbHZlci5tZXNzYWdlcy5pbgorICAgIFdlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2Vi
UlRDTmV0d29yaworICAgIFdlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvV2ViTUROU1JlZ2lzdGVy
CisgICAgV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJSVENNb25pdG9yCisgICAgV2ViUHJv
Y2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJSVENSZXNvbHZlcgogCi0gICAgV2ViUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgotICAgIFdlYlByb2Nlc3Mv
TmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbgotICAgIFdlYlByb2Nlc3MvTmV0
d29yay9XZWJTb2NrZXRDaGFubmVsLm1lc3NhZ2VzLmluCi0gICAgV2ViUHJvY2Vzcy9OZXR3b3Jr
L1dlYlNvY2tldFN0cmVhbS5tZXNzYWdlcy5pbgorICAgIFdlYlByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24KKyAgICBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VM
b2FkZXIKKyAgICBXZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbAorICAgIFdlYlBy
b2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0KIAotICAgIFdlYlByb2Nlc3MvTm90aWZpY2F0
aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluCisgICAgV2ViUHJvY2Vzcy9O
b3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIKIAotICAgIFdlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgotICAgIFdlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4KLSAgICBX
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkubWVzc2FnZXMuaW4KKyAgICBXZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24KKyAgICBXZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyCisgICAgV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblByb3h5CiAKLSAgICBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9u
Lm1lc3NhZ2VzLmluCi0gICAgV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uLm1lc3NhZ2VzLmluCisgICAgV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50
Q29ubmVjdGlvbgorICAgIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbgogCi0gICAgV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRy
b2xsZXIubWVzc2FnZXMuaW4KKyAgICBXZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250
ZW50Q29udHJvbGxlcgogCi0gICAgV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLm1lc3Nh
Z2VzLmluCi0gICAgV2ViUHJvY2Vzcy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5tZXNzYWdlcy5p
bgotICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9WaXNpdGVkTGlua1RhYmxlQ29udHJvbGxlci5tZXNz
YWdlcy5pbgotICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisgICAg
V2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhCisgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL0V2
ZW50RGlzcGF0Y2hlcgorICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9WaXNpdGVkTGlua1RhYmxlQ29u
dHJvbGxlcgorICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlCiAKLSAgICBXZWJQcm9jZXNz
L1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAubWVzc2FnZXMuaW4KKyAgICBXZWJQcm9jZXNzL1dl
YlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAKICkKIAogIyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDM2NgpAQCAtNDA2LDIzICs0MDYsMzggQEAgZW5kaWYg
KCkKIAogIyBIZWxwZXIgbWFjcm8gd2hpY2ggd3JhcHMgdGhlIGdlbmVyYXRlLW1lc3NhZ2UtcmVj
ZWl2ZXIucHkgc2NyaXB0CiAjICAgX291dHB1dF9zb3VyY2UgaXMgYSBsaXN0IG5hbWUgd2hpY2gg
d2lsbCBjb250YWluIGdlbmVyYXRlZCBzb3VyY2VzLihlZy4gV2ViS2l0X1NPVVJDRVMpCi0jICAg
X2lucHV0X2ZpbGVzIGFyZSBtZXNzYWdlcy5pbiBmaWxlcyB0byBnZW5lcmF0ZS4KLW1hY3JvKEdF
TkVSQVRFX01FU1NBR0VfU09VUkNFUyBfb3V0cHV0X3NvdXJjZSBfaW5wdXRfZmlsZXMpCi0gICAg
Zm9yZWFjaCAoX2ZpbGUgJHtfaW5wdXRfZmlsZXN9KQorIyAgIF9pbnB1dHMgYXJlIG1lc3NhZ2Vz
LmluIGZpbGVzIHRvIGdlbmVyYXRlLgorbWFjcm8oR0VORVJBVEVfTUVTU0FHRV9TT1VSQ0VTIF9v
dXRwdXRfc291cmNlIF9pbnB1dHMpCisgICAgdW5zZXQoX2lucHV0X2ZpbGVzKQorICAgIHVuc2V0
KF9vdXRwdXRzKQorICAgIGZvcmVhY2ggKF9maWxlIElOIElURU1TICR7X2lucHV0c30pCiAgICAg
ICAgIGdldF9maWxlbmFtZV9jb21wb25lbnQoX25hbWUgJHtfZmlsZX0gTkFNRV9XRSkKLSAgICAg
ICAgYWRkX2N1c3RvbV9jb21tYW5kKAotICAgICAgICAgICAgT1VUUFVUICR7V2ViS2l0X0RFUklW
RURfU09VUkNFU19ESVJ9LyR7X25hbWV9TWVzc2FnZVJlY2VpdmVyLmNwcCAke1dlYktpdF9ERVJJ
VkVEX1NPVVJDRVNfRElSfS8ke19uYW1lfU1lc3NhZ2VzLmggJHtXZWJLaXRfREVSSVZFRF9TT1VS
Q0VTX0RJUn0vJHtfbmFtZX1NZXNzYWdlc1JlcGxpZXMuaAotICAgICAgICAgICAgTUFJTl9ERVBF
TkRFTkNZICR7X2ZpbGV9Ci0gICAgICAgICAgICBERVBFTkRTICR7V0VCS0lUX0RJUn0vU2NyaXB0
cy93ZWJraXQvX19pbml0X18ucHkKLSAgICAgICAgICAgICAgICAgICAgJHtXRUJLSVRfRElSfS9T
Y3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQotICAgICAgICAgICAgICAgICAgICAke1dFQktJVF9E
SVJ9L1NjcmlwdHMvd2Via2l0L21vZGVsLnB5Ci0gICAgICAgICAgICAgICAgICAgICR7V0VCS0lU
X0RJUn0vU2NyaXB0cy93ZWJraXQvcGFyc2VyLnB5Ci0gICAgICAgICAgICBDT01NQU5EICR7UFlU
SE9OX0VYRUNVVEFCTEV9ICR7V0VCS0lUX0RJUn0vU2NyaXB0cy9nZW5lcmF0ZS1tZXNzYWdlLXJl
Y2VpdmVyLnB5ICR7X2ZpbGV9IC0taW1wbGVtZW50YXRpb24gJHtXZWJLaXRfREVSSVZFRF9TT1VS
Q0VTX0RJUn0vJHtfbmFtZX1NZXNzYWdlUmVjZWl2ZXIuY3BwIC0taGVhZGVyICR7V2ViS2l0X0RF
UklWRURfU09VUkNFU19ESVJ9LyR7X25hbWV9TWVzc2FnZXMuaCAtLXJlcGx5LWhlYWRlciAke1dl
YktpdF9ERVJJVkVEX1NPVVJDRVNfRElSfS8ke19uYW1lfU1lc3NhZ2VzUmVwbGllcy5oCi0gICAg
ICAgICAgICBXT1JLSU5HX0RJUkVDVE9SWSAke1dFQktJVF9ESVJ9Ci0gICAgICAgICAgICBWRVJC
QVRJTSkKLQorICAgICAgICBsaXN0KEFQUEVORCBfaW5wdXRfZmlsZXMgJHtXRUJLSVRfRElSfS8k
e19maWxlfS5tZXNzYWdlcy5pbikKKyAgICAgICAgbGlzdChBUFBFTkQgX291dHB1dHMKKyAgICAg
ICAgICAgICR7V2ViS2l0X0RFUklWRURfU09VUkNFU19ESVJ9LyR7X25hbWV9TWVzc2FnZVJlY2Vp
dmVyLmNwcAorICAgICAgICAgICAgJHtXZWJLaXRfREVSSVZFRF9TT1VSQ0VTX0RJUn0vJHtfbmFt
ZX1NZXNzYWdlcy5oCisgICAgICAgICAgICAke1dlYktpdF9ERVJJVkVEX1NPVVJDRVNfRElSfS8k
e19uYW1lfU1lc3NhZ2VzUmVwbGllcy5oCisgICAgICAgICkKICAgICAgICAgbGlzdChBUFBFTkQg
JHtfb3V0cHV0X3NvdXJjZX0gJHtXZWJLaXRfREVSSVZFRF9TT1VSQ0VTX0RJUn0vJHtfbmFtZX1N
ZXNzYWdlUmVjZWl2ZXIuY3BwKQogICAgIGVuZGZvcmVhY2ggKCkKKyAgICBsaXN0KEFQUEVORCAk
e19vdXRwdXRfc291cmNlfSAke1dlYktpdF9ERVJJVkVEX1NPVVJDRVNfRElSfS9NZXNzYWdlTmFt
ZXMuY3BwKQorCisgICAgYWRkX2N1c3RvbV9jb21tYW5kKAorICAgICAgICBPVVRQVVQKKyAgICAg
ICAgICAgICR7V2ViS2l0X0RFUklWRURfU09VUkNFU19ESVJ9L01lc3NhZ2VOYW1lcy5jcHAKKyAg
ICAgICAgICAgICR7V2ViS2l0X0RFUklWRURfU09VUkNFU19ESVJ9L01lc3NhZ2VOYW1lcy5oCisg
ICAgICAgICAgICAke19vdXRwdXRzfQorICAgICAgICBNQUlOX0RFUEVOREVOQ1kgJHtXRUJLSVRf
RElSfS9TY3JpcHRzL2dlbmVyYXRlLW1lc3NhZ2UtcmVjZWl2ZXIucHkKKyAgICAgICAgREVQRU5E
UworICAgICAgICAgICAgJHtXRUJLSVRfRElSfS9TY3JpcHRzL3dlYmtpdC9fX2luaXRfXy5weQor
ICAgICAgICAgICAgJHtXRUJLSVRfRElSfS9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQorICAg
ICAgICAgICAgJHtXRUJLSVRfRElSfS9TY3JpcHRzL3dlYmtpdC9tb2RlbC5weQorICAgICAgICAg
ICAgJHtXRUJLSVRfRElSfS9TY3JpcHRzL3dlYmtpdC9wYXJzZXIucHkKKyAgICAgICAgICAgICR7
X2lucHV0X2ZpbGVzfQorICAgICAgICBDT01NQU5EICR7UFlUSE9OX0VYRUNVVEFCTEV9ICR7V0VC
S0lUX0RJUn0vU2NyaXB0cy9nZW5lcmF0ZS1tZXNzYWdlLXJlY2VpdmVyLnB5ICR7V0VCS0lUX0RJ
Un0gJHtfaW5wdXRzfQorICAgICAgICBXT1JLSU5HX0RJUkVDVE9SWSAke1dlYktpdF9ERVJJVkVE
X1NPVVJDRVNfRElSfQorICAgICAgICBWRVJCQVRJTQorICAgICkKIGVuZG1hY3JvKCkKIEdFTkVS
QVRFX01FU1NBR0VfU09VUkNFUyhXZWJLaXRfREVSSVZFRF9TT1VSQ0VTICIke1dlYktpdF9NRVNT
QUdFU19JTl9GSUxFU30iKQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91
dHB1dC54Y2ZpbGVsaXN0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJj
ZXMtb3V0cHV0LnhjZmlsZWxpc3QJKHJldmlzaW9uIDI2MTIzOCkKKysrIFNvdXJjZS9XZWJLaXQv
RGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QJKHdvcmtpbmcgY29weSkKQEAgLTY2LDYg
KzY2LDggQEAgJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYgogJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvTWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlTWVzc2FnZVJlY2VpdmVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYktpdDIvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlTWVzc2FnZXMuaAogJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvTWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlTWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJLaXQyL01lc3NhZ2VOYW1lcy5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJLaXQyL01lc3NhZ2VOYW1lcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9OUE9iamVjdE1lc3NhZ2VSZWNlaXZlck1lc3NhZ2VSZWNl
aXZlci5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL05Q
T2JqZWN0TWVzc2FnZVJlY2VpdmVyTWVzc2FnZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYktpdDIvTlBPYmplY3RNZXNzYWdlUmVjZWl2ZXJNZXNzYWdlc1JlcGxp
ZXMuaApJbmRleDogU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQkocmV2aXNpb24gMjYxMjM4KQor
KysgU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0x
MTIsMTM0ICsxMTIsMTM0IEBAIGVsc2UKIGVuZGlmCiAKIE1FU1NBR0VfUkVDRUlWRVJTID0gXAot
CUF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yUHJveHkgXAotICAgIEF1dGhlbnRpY2F0aW9u
TWFuYWdlciBcCi0gICAgQXV4aWxpYXJ5UHJvY2VzcyBcCi0gICAgQ2FjaGVTdG9yYWdlRW5naW5l
Q29ubmVjdGlvbiBcCi0gICAgRG93bmxvYWRQcm94eSBcCi0gICAgRHJhd2luZ0FyZWEgXAotICAg
IERyYXdpbmdBcmVhUHJveHkgXAotICAgIEVkaXRhYmxlSW1hZ2VDb250cm9sbGVyIFwKLSAgICBF
dmVudERpc3BhdGNoZXIgXAotICAgIEdQVVByb2Nlc3MgXAotICAgIEdQVVByb2Nlc3NQcm94eSBc
Ci0gICAgR1BVUHJvY2Vzc0Nvbm5lY3Rpb24gXAotICAgIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MgXAotICAgIExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlciBcCi0gICAgTGVnYWN5Q3VzdG9t
UHJvdG9jb2xNYW5hZ2VyUHJveHkgXAotICAgIExpYldlYlJUQ0NvZGVjcyBcCi0gICAgTGliV2Vi
UlRDQ29kZWNzUHJveHkgXAotICAgIExpYldlYlJUQ05ldHdvcmsgXAotICAgIE1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZSBcCi0gICAgTlBPYmplY3RNZXNzYWdlUmVjZWl2ZXIgXAotICAgIE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzIFwKLSAgICBOZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFu
YWdlciBcCi0gICAgTmV0d29ya01ETlNSZWdpc3RlclwKLSAgICBOZXR3b3JrUHJvY2VzcyBcCi0g
ICAgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uIFwKLSAgICBOZXR3b3JrUHJvY2Vzc1Byb3h5IFwK
LSAgICBOZXR3b3JrUlRDTW9uaXRvciBcCi0gICAgTmV0d29ya1JUQ1Byb3ZpZGVyIFwKLSAgICBO
ZXR3b3JrUlRDU29ja2V0IFwKLSAgICBOZXR3b3JrUmVzb3VyY2VMb2FkZXIgXAotICAgIE5ldHdv
cmtTb2NrZXRDaGFubmVsIFwKLSAgICBOZXR3b3JrU29ja2V0U3RyZWFtIFwKLSAgICBQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyIFwKLSAgICBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkgXAotICAg
IFBsdWdpbkNvbnRyb2xsZXJQcm94eSBcCi0gICAgUGx1Z2luUHJvY2VzcyBcCi0gICAgUGx1Z2lu
UHJvY2Vzc0Nvbm5lY3Rpb24gXAotICAgIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlciBc
Ci0gICAgUGx1Z2luUHJvY2Vzc1Byb3h5IFwKLSAgICBQbHVnaW5Qcm94eSBcCi0gICAgUmVtb3Rl
QXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIgXAotICAgIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94
eSBcCi0gICAgUmVtb3RlQXVkaW9TZXNzaW9uIFwKLSAgICBSZW1vdGVBdWRpb1Nlc3Npb25Qcm94
eSBcCi0gICAgUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyIFwKLSAg
ICBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlciBcCi0gICAgUmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWFQcm94eSBcCi0gICAgUmVtb3RlQ0RNUHJveHkgXAotICAgIFJlbW90ZUNE
TUZhY3RvcnlQcm94eSBcCi0gICAgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eSBcCi0gICAgUmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uIFwKLSAgICBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eSBc
Ci0gICAgUmVtb3RlTGVnYWN5Q0RNUHJveHkgXAotICAgIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQ
cm94eSBcCi0gICAgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbiBcCi0gICAgUmVtb3RlTGVnYWN5Q0RN
U2Vzc2lvblByb3h5IFwKLSAgICBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIgXAotICAgIFJlbW90
ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5IFwKLSAgICBSZW1vdGVNZWRpYVBsYXllclByb3h5IFwK
LSAgICBSZW1vdGVNZWRpYVJlY29yZGVyIFwKLSAgICBSZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdl
ciBcCi0gICAgUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIgXAotICAgIFJlbW90ZU1lZGlhU2Vz
c2lvbkhlbHBlciBcCi0gICAgUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHkgXAotICAgIFJl
bW90ZU9iamVjdFJlZ2lzdHJ5IFwKLSAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kIFwKLSAgICBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkgXAotICAgIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllciBcCi0gICAgUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlciBcCi0g
ICAgUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3IgXAotICAgIFJlbW90ZVdlYkluc3BlY3RvclBy
b3h5IFwKLSAgICBSZW1vdGVXZWJJbnNwZWN0b3JVSSBcCi0gICAgU2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyIFwKLSAgICBTZWNJdGVtU2hpbVByb3h5IFwKLSAgICBTZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrIFwKLSAgICBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyIFwKLSAgICBTdG9yYWdlQXJl
YU1hcCBcCi0gICAgU3RvcmFnZU1hbmFnZXJTZXQgXAotICAgIFRleHRDaGVja2luZ0NvbnRyb2xs
ZXJQcm94eSBcCi0gICAgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIgXAotICAgIFVzZXJNZWRpYUNh
cHR1cmVNYW5hZ2VyUHJveHkgXAotICAgIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXIgXAotICAgIFZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eSBcCi0gICAgVmlld0dlc3R1cmVDb250cm9sbGVyIFwK
LSAgICBWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yIFwKLSAgICBWaWV3VXBkYXRlRGlzcGF0
Y2hlciBcCi0gICAgVmlzaXRlZExpbmtTdG9yZSBcCi0gICAgVmlzaXRlZExpbmtUYWJsZUNvbnRy
b2xsZXIgXAotICAgIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5IFwKLSAgICBXZWJB
dXRvbWF0aW9uU2Vzc2lvbiBcCi0gICAgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eSBcCi0gICAg
V2ViQ29ubmVjdGlvbiBcCi0gICAgV2ViQ29va2llTWFuYWdlciBcCi0gICAgV2ViQ29va2llTWFu
YWdlclByb3h5IFwKLSAgICBXZWJGdWxsU2NyZWVuTWFuYWdlciBcCi0gICAgV2ViRnVsbFNjcmVl
bk1hbmFnZXJQcm94eSBcCi0gICAgV2ViR2VvbG9jYXRpb25NYW5hZ2VyIFwKLSAgICBXZWJHZW9s
b2NhdGlvbk1hbmFnZXJQcm94eSBcCi0gICAgV2ViSURCQ29ubmVjdGlvblRvU2VydmVyIFwKLSAg
ICBXZWJJREJTZXJ2ZXIgXAotICAgIFdlYkluc3BlY3RvciBcCi0gICAgV2ViSW5zcGVjdG9ySW50
ZXJydXB0RGlzcGF0Y2hlciBcCi0gICAgV2ViSW5zcGVjdG9yUHJveHkgXAotICAgIFdlYkluc3Bl
Y3RvclVJIFwKLSAgICBXZWJNRE5TUmVnaXN0ZXJcCi0gICAgV2ViTm90aWZpY2F0aW9uTWFuYWdl
ciBcCi0gICAgV2ViUGFnZSBcCi0gICAgV2ViUGFnZVByb3h5IFwKLSAgICBXZWJQYXN0ZWJvYXJk
UHJveHkgXAotICAgIFdlYlBheW1lbnRDb29yZGluYXRvciBcCi0gICAgV2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHkgXAotICAgIFdlYlByb2Nlc3MgXAotICAgIFdlYlByb2Nlc3NDb25uZWN0aW9u
IFwKLSAgICBXZWJQcm9jZXNzUG9vbCBcCi0gICAgV2ViUHJvY2Vzc1Byb3h5IFwKLSAgICBXZWJS
VENNb25pdG9yIFwKLSAgICBXZWJSVENSZXNvbHZlciBcCi0gICAgV2ViUmVzb3VyY2VMb2FkZXIg
XAotICAgIFdlYlNXQ2xpZW50Q29ubmVjdGlvbiBcCi0gICAgV2ViU1dDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb24gXAotICAgIFdlYlNXU2VydmVyQ29ubmVjdGlvbiBcCi0gICAgV2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uIFwKLSAgICBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3Zp
ZGVyIFwKLSAgICBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyUHJveHkgXAotICAg
IFdlYlNvY2tldENoYW5uZWwgXAotICAgIFdlYlNvY2tldFN0cmVhbSBcCi0gICAgV2ViVXNlckNv
bnRlbnRDb250cm9sbGVyIFwKLSAgICBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSBcCisJ
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgXAorCU5ldHdvcmtQ
cm9jZXNzL0luZGV4ZWREQi9XZWJJREJTZXJ2ZXIgXAorCU5ldHdvcmtQcm9jZXNzL05ldHdvcmtD
b250ZW50UnVsZUxpc3RNYW5hZ2VyIFwKKwlOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3Jh
Z2VNYW5hZ2VyU2V0IFwKKwlOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVD
b25uZWN0aW9uIFwKKwlOZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9t
UHJvdG9jb2xNYW5hZ2VyIFwKKwlOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5lbCBc
CisJTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24gXAor
CU5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzayBcCisJ
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24gXAorCU5ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0gXAorCU5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzIFwKKwlOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
ZXIgXAorCU5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrTUROU1JlZ2lzdGVyIFwKKwlOZXR3
b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1NvY2tldCBcCisJTmV0d29ya1Byb2Nlc3Mvd2Vi
cnRjL05ldHdvcmtSVENQcm92aWRlciBcCisJTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtS
VENNb25pdG9yIFwKKwlOZXR3b3JrUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIgXAor
CVNoYXJlZC9QbHVnaW5zL05QT2JqZWN0TWVzc2FnZVJlY2VpdmVyIFwKKwlTaGFyZWQvQXV4aWxp
YXJ5UHJvY2VzcyBcCisJU2hhcmVkL0FQSS9Db2NvYS9SZW1vdGVPYmplY3RSZWdpc3RyeSBcCisJ
U2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5IFwKKwlTaGFyZWQvQXV0
aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyIFwKKwlTaGFyZWQvV2ViQ29ubmVjdGlv
biBcCisJVUlQcm9jZXNzL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkgXAorCVVJUHJvY2Vzcy9S
ZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eSBcCisJVUlQcm9j
ZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkgXAorCVVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9X
ZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eSBcCisJVUlQcm9jZXNzL1dlYlBhc3RlYm9h
cmRQcm94eSBcCisJVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxl
clByb3h5IFwKKwlVSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclByb3h5IFwKKwlVSVBy
b2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclByb3h5IFwKKwlVSVByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkgXAorCVVJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5IFwK
KwlVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5IFwKKwlVSVByb2Nlc3MvTmV0
d29yay9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkgXAor
CVVJUHJvY2Vzcy9XZWJQYWdlUHJveHkgXAorCVVJUHJvY2Vzcy9WaXNpdGVkTGlua1N0b3JlIFwK
KwlVSVByb2Nlc3MvaW9zL1dlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94eSBc
CisJVUlQcm9jZXNzL2lvcy9FZGl0YWJsZUltYWdlQ29udHJvbGxlciBcCisJVUlQcm9jZXNzL2lv
cy9TbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyIFwKKwlVSVByb2Nlc3MvbWFjL1NlY0l0ZW1T
aGltUHJveHkgXAorCVVJUHJvY2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eSBcCisJVUlQ
cm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eSBcCisJVUlQcm9jZXNzL0Nv
Y29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eSBcCisJVUlQcm9jZXNzL0NvY29hL1VzZXJN
ZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkgXAorCVVJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJv
eHkgXAorCVVJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIgXAorCVVJUHJvY2Vzcy9XZWJQ
cm9jZXNzUHJveHkgXAorCVVJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9u
IFwKKwlVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wgXAorCVVJUHJvY2Vzcy9Eb3dubG9hZHMvRG93
bmxvYWRQcm94eSBcCisJVUlQcm9jZXNzL01lZGlhL0F1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJh
dG9yUHJveHkgXAorCVdlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJDb25uZWN0
aW9uVG9TZXJ2ZXIgXAorCVdlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uIFwKKwlX
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kIFwKKwlXZWJQcm9j
ZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzIFwKKwlXZWJQcm9jZXNzL0dQVS93ZWJydGMv
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIFwKKwlXZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBs
YXllclByaXZhdGVSZW1vdGUgXAorCVdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvbiBcCisJV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lv
biBcCisJV2ViUHJvY2Vzcy9HUFUvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlciBc
CisJV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyIFwKKwlXZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkgXAorCVdlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvbiBcCisJV2ViUHJvY2Vzcy9XZWJTdG9yYWdl
L1N0b3JhZ2VBcmVhTWFwIFwKKwlXZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50
Q29udHJvbGxlciBcCisJV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9ySW50ZXJydXB0
RGlzcGF0Y2hlciBcCisJV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUkgXAorCVdl
YlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvciBcCisJV2ViUHJvY2Vzcy9JbnNwZWN0b3Iv
UmVtb3RlV2ViSW5zcGVjdG9yVUkgXAorCVdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNz
Q29ubmVjdGlvbk1hbmFnZXIgXAorCVdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eSBcCisJ
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uIFwKKwlXZWJQcm9jZXNz
L05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbCBcCisJV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbiBcCisJV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0cmVhbSBc
CisJV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyIFwKKwlXZWJQcm9jZXNzL05l
dHdvcmsvd2VicnRjL1dlYlJUQ01vbml0b3IgXAorCVdlYlByb2Nlc3MvTmV0d29yay93ZWJydGMv
TGliV2ViUlRDTmV0d29yayBcCisJV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJNRE5TUmVn
aXN0ZXIgXAorCVdlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvV2ViUlRDUmVzb2x2ZXIgXAorCVdl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRl
ciBcCisJV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uIFwK
KwlXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uIFwKKwlXZWJQcm9jZXNz
L1dlYlByb2Nlc3MgXAorCVdlYlByb2Nlc3MvY29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlciBc
CisJV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlciBcCisJV2ViUHJvY2Vz
cy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyIFwKKwlXZWJQcm9jZXNzL0dlb2xvY2F0aW9u
L1dlYkdlb2xvY2F0aW9uTWFuYWdlciBcCisJV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9t
YXRpb25TZXNzaW9uUHJveHkgXAorCVdlYlByb2Nlc3MvRnVsbFNjcmVlbi9XZWJGdWxsU2NyZWVu
TWFuYWdlciBcCisJV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IgXAor
CVdlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyIFwKKwlXZWJQ
cm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVyIFwKKwlXZWJQcm9jZXNzL1dlYlBhZ2UvUmVt
b3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yIFwKKwlXZWJQcm9jZXNzL1dl
YlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3RvciBcCisJV2ViUHJvY2Vzcy9XZWJQYWdl
L0RyYXdpbmdBcmVhIFwKKwlXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZSBcCisJV2ViUHJvY2Vz
cy9XZWJQYWdlL1Zpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVyIFwKKwlXZWJQcm9jZXNzL1dlYlBh
Z2UvQ29jb2EvVGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5IFwKKwlXZWJQcm9jZXNzL1dlYlBh
Z2UvVmlld1VwZGF0ZURpc3BhdGNoZXIgXAorCVBsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5l
Y3Rpb24gXAorCVBsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5IFwKKwlQbHVnaW5Q
cm9jZXNzL1BsdWdpblByb2Nlc3MgXAorCUdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcyBcCisJR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkg
XAorCUdQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5IFwKKwlHUFVQcm9jZXNz
L3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyIFwKKwlHUFVQcm9j
ZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXIgXAor
CUdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyIFwKKwlHUFVQcm9j
ZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgXAorCUdQVVByb2Nlc3Mv
d2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIgXAorCUdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyIFwKKwlHUFVQcm9jZXNzL0dQVVByb2Nlc3MgXAor
CUdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5IFwKKwlHUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eSBcCisJR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVBdWRpb1Nlc3Npb25Qcm94eSBcCisJR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb25Qcm94eSBcCisJR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eSBc
CisJR1BVUHJvY2Vzcy9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHkgXAor
CUdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eSBcCisJR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVDRE1GYWN0b3J5UHJveHkgXAorCUdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVk
aWFSZXNvdXJjZU1hbmFnZXIgXAorCUdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQ
cm94eSBcCisJR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eSBcCisJR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSBcCisJR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlciBcCiAjCiAKIFNDUklQVFMgPSBcCkBA
IC0yNTUsMTUgKzI1NSwxNCBAQCBIRUFERVJfRkxBR1MgPSAkKHNoZWxsIGVjaG8gJChCVUlMVF9Q
Uk9ECiAKIC5QSE9OWSA6IGFsbAogCi1hbGwgOiBcCi0gICAgJChNRVNTQUdFX1JFQ0VJVkVSUzol
PSVNZXNzYWdlUmVjZWl2ZXIuY3BwKSBcCi0gICAgJChNRVNTQUdFX1JFQ0VJVkVSUzolPSVNZXNz
YWdlcy5oKSBcCi0gICAgJChNRVNTQUdFX1JFQ0VJVkVSUzolPSVNZXNzYWdlc1JlcGxpZXMuaCkg
XAorYWxsIDogTWVzc2FnZU5hbWVzLmggTWVzc2FnZU5hbWVzLmNwcCBcCisgICAgJChhZGRzdWZm
aXggTWVzc2FnZVJlY2VpdmVyLmNwcCwkKG5vdGRpciAkKE1FU1NBR0VfUkVDRUlWRVJTKSkpIFwK
KyAgICAkKGFkZHN1ZmZpeCBNZXNzYWdlcy5oLCQobm90ZGlyICQoTUVTU0FHRV9SRUNFSVZFUlMp
KSkgXAorICAgICQoYWRkc3VmZml4IE1lc3NhZ2VzUmVwbGllcy5oLCQobm90ZGlyICQoTUVTU0FH
RV9SRUNFSVZFUlMpKSkgXAogIwogCi0lTWVzc2FnZVJlY2VpdmVyLmNwcCAlTWVzc2FnZXMuaCAl
TWVzc2FnZXNSZXBsaWVzLmggOiAlLm1lc3NhZ2VzLmluICQoU0NSSVBUUykKLQlAZWNobyBHZW5l
cmF0aW5nIG1lc3NhZ2UgcmVjZWl2ZXIgZm9yICQqLi4uCi0JQHB5dGhvbiAkKFdlYktpdDIpL1Nj
cmlwdHMvZ2VuZXJhdGUtbWVzc2FnZS1yZWNlaXZlci5weSAkPCAtLWltcGxlbWVudGF0aW9uICQq
TWVzc2FnZVJlY2VpdmVyLmNwcCAtLWhlYWRlciAkKk1lc3NhZ2VzLmggLS1yZXBseS1oZWFkZXIg
JCpNZXNzYWdlc1JlcGxpZXMuaAorJChhZGRzdWZmaXggTWVzc2FnZVJlY2VpdmVyLmNwcCwkKG5v
dGRpciAkKE1FU1NBR0VfUkVDRUlWRVJTKSkpICQoYWRkc3VmaXggTWVzc2FnZXMuaCwkKG5vdGRp
ciAkKE1FU1NBR0VfUkVDRUlWRVJTKSkpICQoYWRkc3VmZml4IE1lc3NhZ2VzUmVwbGllcy5oLCQo
bm90ZGlyICQoTUVTU0FHRV9SRUNFSVZFUlMpKSkgTWVzc2FnZU5hbWVzLmggTWVzc2FnZU5hbWVz
LmNwcDogJChhZGRzdWZmaXggLm1lc3NhZ2VzLmluLCQoTUVTU0FHRV9SRUNFSVZFUlMpKSAkKFND
UklQVFMpCisJQHB5dGhvbiAkKFdlYktpdDIpL1NjcmlwdHMvZ2VuZXJhdGUtbWVzc2FnZS1yZWNl
aXZlci5weSAkKFdlYktpdDIpICQoTUVTU0FHRV9SRUNFSVZFUlMpCiAKIFRFWFRfUFJFUFJPQ0VT
U09SX0ZMQUdTPS1FIC1QIC13CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvUGxhdGZvcm1HVEsuY21h
a2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9QbGF0Zm9ybUdUSy5jbWFrZQkocmV2aXNp
b24gMjYxMjM4KQorKysgU291cmNlL1dlYktpdC9QbGF0Zm9ybUdUSy5jbWFrZQkod29ya2luZyBj
b3B5KQpAQCAtNDMsOSArNDMsOSBAQCBpZiAoTk9UIFVTRV9HVEs0KQogICAgICAgICBXZWJQcm9j
ZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5jcHAKICAgICApCiAgICAg
bGlzdChBUFBFTkQgV2ViS2l0X01FU1NBR0VTX0lOX0ZJTEVTCi0gICAgICAgIFVJUHJvY2Vzcy9W
aWV3R2VzdHVyZUNvbnRyb2xsZXIubWVzc2FnZXMuaW4KKyAgICAgICAgVUlQcm9jZXNzL1ZpZXdH
ZXN0dXJlQ29udHJvbGxlcgogCi0gICAgICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVy
ZUdlb21ldHJ5Q29sbGVjdG9yLm1lc3NhZ2VzLmluCisgICAgICAgIFdlYlByb2Nlc3MvV2ViUGFn
ZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yCiAgICAgKQogZW5kaWYgKCkKIApJbmRleDog
U291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvU291cmNlc0NvY29hLnR4dAkocmV2aXNpb24gMjYxMjM4KQorKysgU291cmNlL1dlYktpdC9T
b3VyY2VzQ29jb2EudHh0CSh3b3JraW5nIGNvcHkpCkBAIC02NTYsNiArNjU2LDcgQEAgR1BVUHJv
Y2Vzc1Byb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAogR1BVUHJvY2Vzc01lc3NhZ2VSZWNlaXZlci5j
cHAKIExpYldlYlJUQ0NvZGVjc1Byb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAogTGliV2ViUlRDQ29k
ZWNzTWVzc2FnZVJlY2VpdmVyLmNwcAorTWVzc2FnZU5hbWVzLmNwcAogUmVtb3RlQXVkaW9EZXN0
aW5hdGlvbk1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9u
UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiBSZW1vdGVBdWRpb1Nlc3Npb25NZXNzYWdlUmVjZWl2
ZXIuY3BwCkluZGV4OiBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCShyZXZpc2lvbiAyNjEyMzgpCisrKyBTb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTExNiw4ICsxMTYsOCBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgTG9nZ2VyJiBs
b2dnZXIoKSBmaW5hbCB7IHJldHVybiBtX3Byb2Nlc3MubG9nZ2VyKCk7IH0KLSAgICB2b2lkIGFk
ZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1l
LCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYgcmVjZWl2ZXIpIGZpbmFsIHsgfQotICAgIHZvaWQgcmVt
b3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5h
bWUpIGZpbmFsIHsgfQorICAgIHZvaWQgYWRkTWVzc2FnZVJlY2VpdmVyKElQQzo6UmVjZWl2ZXJO
YW1lLCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYpIGZpbmFsIHsgfQorICAgIHZvaWQgcmVtb3ZlTWVz
c2FnZVJlY2VpdmVyKElQQzo6UmVjZWl2ZXJOYW1lIG1lc3NhZ2VSZWNlaXZlck5hbWUpIGZpbmFs
IHsgfQogICAgIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbigpIGZpbmFsIHsgcmV0dXJuIG1f
cHJvY2Vzcy5jb25uZWN0aW9uKCk7IH0KICAgICBib29sIHdpbGxTdGFydENhcHR1cmUoQ2FwdHVy
ZURldmljZTo6RGV2aWNlVHlwZSB0eXBlKSBjb25zdCBmaW5hbAogICAgIHsKQEAgLTE4Nyw5ICsx
ODcsOSBAQCBMb2dnZXImIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmxvZ2dlCiAgICAgcmV0
dXJuICptX2xvZ2dlcjsKIH0KIAotdm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRS
ZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OlN0
cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBt
ZXNzYWdlTmFtZSkKK3ZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZUlu
dmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpNZXNzYWdlTmFt
ZSBtZXNzYWdlTmFtZSkKIHsKLSAgICBXVEZMb2dBbHdheXMoIlJlY2VpdmVkIGFuIGludmFsaWQg
bWVzc2FnZSBcIiVzLiVzXCIgZnJvbSB0aGUgd2ViIHByb2Nlc3MuXG4iLCBtZXNzYWdlUmVjZWl2
ZXJOYW1lLnRvU3RyaW5nKCkuZGF0YSgpLCBtZXNzYWdlTmFtZS50b1N0cmluZygpLmRhdGEoKSk7
CisgICAgV1RGTG9nQWx3YXlzKCJSZWNlaXZlZCBhbiBpbnZhbGlkIG1lc3NhZ2UgXCIlc1wiIGZy
b20gdGhlIHdlYiBwcm9jZXNzLlxuIiwgZGVzY3JpcHRpb24obWVzc2FnZU5hbWUpKTsKICAgICBD
UkFTSCgpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9H
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgJKHJldmlzaW9uIDI2MTIzOCkKKysrIFNvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTE0NCw3ICsxNDQsNyBAQCBwcml2YXRlOgogCiAgICAgLy8gSVBDOjpDb25uZWN0aW9u
OjpDbGllbnQKICAgICB2b2lkIGRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYpIGZpbmFsOwotICAg
IHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6U3Ry
aW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1l
c3NhZ2VOYW1lKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VOYW1lKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2Vp
dmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwogICAgIHZv
aWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYs
IHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JikgZmluYWw7CiAKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuY3BwCShyZXZpc2lvbiAyNjEyMzgpCisrKyBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjY0LDcgKzI2NCw3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OmRpZFIKICAgICAgICAgcmV0dXJuIHBheW1lbnRDb29yZGluYXRvcigpLmRpZFJlY2VpdmVN
ZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwogI2VuZGlmCiAKLSAgICBXVEZMb2dBbHdheXMo
IlVuaGFuZGxlZCBuZXR3b3JrIHByb2Nlc3MgbWVzc2FnZSAnJXM6JXMnIiwgZGVjb2Rlci5tZXNz
YWdlUmVjZWl2ZXJOYW1lKCkudG9TdHJpbmcoKS5kYXRhKCksIGRlY29kZXIubWVzc2FnZU5hbWUo
KS50b1N0cmluZygpLmRhdGEoKSk7CisgICAgV1RGTG9nQWx3YXlzKCJVbmhhbmRsZWQgbmV0d29y
ayBwcm9jZXNzIG1lc3NhZ2UgJyVzJyIsIGRlc2NyaXB0aW9uKGRlY29kZXIubWVzc2FnZU5hbWUo
KSkpOwogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCkBAIC0zMDcsNyArMzA3LDcgQEAg
dm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkUgogICAgICAgICByZXR1cm4g
cGF5bWVudENvb3JkaW5hdG9yKCkuZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRl
Y29kZXIsIHJlcGx5KTsKICNlbmRpZgogCi0gICAgV1RGTG9nQWx3YXlzKCJVbmhhbmRsZWQgbmV0
d29yayBwcm9jZXNzIG1lc3NhZ2UgJyVzOiVzJyIsIGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFt
ZSgpLnRvU3RyaW5nKCkuZGF0YSgpLCBkZWNvZGVyLm1lc3NhZ2VOYW1lKCkudG9TdHJpbmcoKS5k
YXRhKCkpOworICAgIFdURkxvZ0Fsd2F5cygiVW5oYW5kbGVkIG5ldHdvcmsgcHJvY2VzcyBtZXNz
YWdlICclcyciLCBkZXNjcmlwdGlvbihkZWNvZGVyLm1lc3NhZ2VOYW1lKCkpKTsKICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKIH0KIApAQCAtMzU2LDkgKzM1Niw5IEBAIHZvaWQgTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZEMKICNlbmRpZgogfQogCi12b2lkIE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpTdHJp
bmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNz
YWdlTmFtZSBtZXNzYWdlTmFtZSkKIHsKLSAgICBSRUxFQVNFX0xPR19GQVVMVChJUEMsICJSZWNl
aXZlZCBhbiBpbnZhbGlkIG1lc3NhZ2UgJyUiIFBVQkxJQ19MT0dfU1RSSU5HICI6OiUiIFBVQkxJ
Q19MT0dfU1RSSU5HICInIGZyb20gV2ViQ29udGVudCBwcm9jZXNzICUiIFBSSXU2NCAiLCByZXF1
ZXN0aW5nIGZvciBpdCB0byBiZSB0ZXJtaW5hdGVkLiIsIG1lc3NhZ2VSZWNlaXZlck5hbWUudG9T
dHJpbmcoKS5kYXRhKCksIG1lc3NhZ2VOYW1lLnRvU3RyaW5nKCkuZGF0YSgpLCBtX3dlYlByb2Nl
c3NJZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgIFJFTEVBU0VfTE9HX0ZBVUxUKElQQywgIlJl
Y2VpdmVkIGFuIGludmFsaWQgbWVzc2FnZSAnJSIgUFVCTElDX0xPR19TVFJJTkcgIicgZnJvbSBX
ZWJDb250ZW50IHByb2Nlc3MgJSIgUFJJdTY0ICIsIHJlcXVlc3RpbmcgZm9yIGl0IHRvIGJlIHRl
cm1pbmF0ZWQuIiwgZGVzY3JpcHRpb24obWVzc2FnZU5hbWUpLCBtX3dlYlByb2Nlc3NJZGVudGlm
aWVyLnRvVUludDY0KCkpOwogICAgIG1fbmV0d29ya1Byb2Nlc3MtPnBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OlRlcm1pbmF0ZVdl
YlByb2Nlc3MobV93ZWJQcm9jZXNzSWRlbnRpZmllciksIDApOwogfQogCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5oCShyZXZpc2lvbiAyNjEyMzgpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTE4Niw3ICsxODYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRS
ZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1
bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZENsb3NlKElQ
Qzo6Q29ubmVjdGlvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZl
ck5hbWUsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lKSBvdmVycmlkZTsKKyAgICB2
b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3Nh
Z2VOYW1lKSBvdmVycmlkZTsKIAogICAgIC8vIE1lc3NhZ2UgaGFuZGxlcnMuCiAgICAgdm9pZCBk
aWRSZWNlaXZlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYsIElQQzo6RGVjb2RlciYpOwpAQCAtMzI2LDggKzMyNiw2IEBAIHByaXZhdGU6CiAgICAg
Y29uc3QgU3RyaW5nJiBwYXltZW50Q29vcmRpbmF0b3JTb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlk
ZW50aWZpZXIoY29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmKSBmaW5hbDsKICAgICBj
b25zdCBTdHJpbmcmIHBheW1lbnRDb29yZGluYXRvclNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5
SWRlbnRpZmllcihjb25zdCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYpIGZpbmFsOwogICAg
IHN0ZDo6dW5pcXVlX3B0cjxQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlcj4gcGF5bWVudENv
b3JkaW5hdG9yQXV0aG9yaXphdGlvblByZXNlbnRlcihXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94
eSYsIFBLUGF5bWVudFJlcXVlc3QgKikgZmluYWw7Ci0gICAgdm9pZCBwYXltZW50Q29vcmRpbmF0
b3JBZGRNZXNzYWdlUmVjZWl2ZXIoV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmLCBjb25zdCBJ
UEM6OlN0cmluZ1JlZmVyZW5jZSYsIElQQzo6TWVzc2FnZVJlY2VpdmVyJikgZmluYWw7Ci0gICAg
dm9pZCBwYXltZW50Q29vcmRpbmF0b3JSZW1vdmVNZXNzYWdlUmVjZWl2ZXIoV2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHkmLCBjb25zdCBJUEM6OlN0cmluZ1JlZmVyZW5jZSYpIGZpbmFsOwogI2Vu
ZGlmCiAKICAgICBSZWY8SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAkocmV2aXNp
b24gMjYxMjM4KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxNCw3ICsyMTQsNyBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjpkaWRSZWNlaXZlTWVzc2FnZShJCiB7CiAgICAgQVNTRVJUKHBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKCkgPT0gJmNvbm5lY3Rpb24pOwogICAgIGlmIChwYXJlbnRQcm9jZXNzQ29ubmVjdGlv
bigpICE9ICZjb25uZWN0aW9uKSB7Ci0gICAgICAgIFdURkxvZ0Fsd2F5cygiSWdub3JlZCBtZXNz
YWdlICclczolcycgYmVjYXVzZSBpdCBkaWQgbm90IGNvbWUgZnJvbSB0aGUgVUlQcm9jZXNzIChk
ZXN0aW5hdGlvbjogJSIgUFJJdTY0ICIpIiwgZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCku
dG9TdHJpbmcoKS5kYXRhKCksIGRlY29kZXIubWVzc2FnZU5hbWUoKS50b1N0cmluZygpLmRhdGEo
KSwgZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpOworICAgICAgICBXVEZMb2dBbHdheXMoIklnbm9y
ZWQgbWVzc2FnZSAnJXMnIGJlY2F1c2UgaXQgZGlkIG5vdCBjb21lIGZyb20gdGhlIFVJUHJvY2Vz
cyAoZGVzdGluYXRpb246ICUiIFBSSXU2NCAiKSIsIGRlc2NyaXB0aW9uKGRlY29kZXIubWVzc2Fn
ZU5hbWUoKSksIGRlY29kZXIuZGVzdGluYXRpb25JRCgpKTsKICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yNDEsNyArMjQxLDcgQEAgdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6ZGlkUmVjZWl2ZVN5bmNNZXNzYQogewogICAgIEFTU0VSVChwYXJl
bnRQcm9jZXNzQ29ubmVjdGlvbigpID09ICZjb25uZWN0aW9uKTsKICAgICBpZiAocGFyZW50UHJv
Y2Vzc0Nvbm5lY3Rpb24oKSAhPSAmY29ubmVjdGlvbikgewotICAgICAgICBXVEZMb2dBbHdheXMo
Iklnbm9yZWQgbWVzc2FnZSAnJXM6JXMnIGJlY2F1c2UgaXQgZGlkIG5vdCBjb21lIGZyb20gdGhl
IFVJUHJvY2VzcyAoZGVzdGluYXRpb246ICUiIFBSSXU2NCAiKSIsIGRlY29kZXIubWVzc2FnZVJl
Y2VpdmVyTmFtZSgpLnRvU3RyaW5nKCkuZGF0YSgpLCBkZWNvZGVyLm1lc3NhZ2VOYW1lKCkudG9T
dHJpbmcoKS5kYXRhKCksIGRlY29kZXIuZGVzdGluYXRpb25JRCgpKTsKKyAgICAgICAgV1RGTG9n
QWx3YXlzKCJJZ25vcmVkIG1lc3NhZ2UgJyVzJyBiZWNhdXNlIGl0IGRpZCBub3QgY29tZSBmcm9t
IHRoZSBVSVByb2Nlc3MgKGRlc3RpbmF0aW9uOiAlIiBQUkl1NjQgIikiLCBkZXNjcmlwdGlvbihk
ZWNvZGVyLm1lc3NhZ2VOYW1lKCkpLCBkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSk7CiAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpJbmRleDogU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9pb3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3NJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9pb3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NJT1MubW0JKHJldmlzaW9uIDI2MTIzOCkKKysr
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzSU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC04NSwxNCArODUsNiBAQCBzdGQ6OnVuaXF1
ZV9wdHI8UGF5bWVudEF1dGhvcml6YXRpb25QcmVzCiAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGF5
bWVudEF1dGhvcml6YXRpb25Db250cm9sbGVyPihjb29yZGluYXRvciwgcmVxdWVzdCk7CiB9CiAK
LXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnBheW1lbnRDb29yZGluYXRvckFk
ZE1lc3NhZ2VSZWNlaXZlcihXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYsIGNvbnN0IElQQzo6
U3RyaW5nUmVmZXJlbmNlJiwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImKQotewotfQotCi12b2lkIE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpwYXltZW50Q29vcmRpbmF0b3JSZW1vdmVNZXNz
YWdlUmVjZWl2ZXIoV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmLCBjb25zdCBJUEM6OlN0cmlu
Z1JlZmVyZW5jZSYpCi17Ci19Ci0KICNlbmRpZiAvLyBFTkFCTEUoQVBQTEVfUEFZX1JFTU9URV9V
SSkKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9Db25uZWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9Db25uZWN0aW9uLmNwcAkocmV2aXNpb24gMjYxMjM4KQorKysgU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0LDIxICs1NCwx
NyBAQCBjb25zdCBzaXplX3QgbWF4UGVuZGluZ0luY29taW5nTWVzc2FnZXNLCiBzdGQ6OmF0b21p
Yzx1bnNpZ25lZD4gVW5ib3VuZGVkU3luY2hyb25vdXNJUENTY29wZTo6dW5ib3VuZGVkU3luY2hy
b25vdXNJUENDb3VudCA9IDA7CiAKIHN0cnVjdCBDb25uZWN0aW9uOjpXYWl0Rm9yTWVzc2FnZVN0
YXRlIHsKLSAgICBXYWl0Rm9yTWVzc2FnZVN0YXRlKFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVj
ZWl2ZXJOYW1lLCBTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0
aW9uSUQsIE9wdGlvblNldDxXYWl0Rm9yT3B0aW9uPiB3YWl0Rm9yT3B0aW9ucykKLSAgICAgICAg
OiBtZXNzYWdlUmVjZWl2ZXJOYW1lKG1lc3NhZ2VSZWNlaXZlck5hbWUpCi0gICAgICAgICwgbWVz
c2FnZU5hbWUobWVzc2FnZU5hbWUpCisgICAgV2FpdEZvck1lc3NhZ2VTdGF0ZShNZXNzYWdlTmFt
ZSBtZXNzYWdlTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgT3B0aW9uU2V0PFdhaXRGb3JP
cHRpb24+IHdhaXRGb3JPcHRpb25zKQorICAgICAgICA6IG1lc3NhZ2VOYW1lKG1lc3NhZ2VOYW1l
KQogICAgICAgICAsIGRlc3RpbmF0aW9uSUQoZGVzdGluYXRpb25JRCkKICAgICAgICAgLCB3YWl0
Rm9yT3B0aW9ucyh3YWl0Rm9yT3B0aW9ucykKICAgICB7CiAgICAgfQogCi0gICAgU3RyaW5nUmVm
ZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWU7Ci0gICAgU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VO
YW1lOworICAgIE1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lOwogICAgIHVpbnQ2NF90IGRlc3RpbmF0
aW9uSUQ7Ci0KICAgICBPcHRpb25TZXQ8V2FpdEZvck9wdGlvbj4gd2FpdEZvck9wdGlvbnM7CiAg
ICAgYm9vbCBtZXNzYWdlV2FpdGluZ0ludGVycnVwdGVkID0gZmFsc2U7Ci0KICAgICBzdGQ6OnVu
aXF1ZV9wdHI8RGVjb2Rlcj4gZGVjb2RlcjsKIH07CiAKQEAgLTMxNSw3ICszMTEsNyBAQCB2b2lk
IENvbm5lY3Rpb246OnNldFNob3VsZEV4aXRPblN5bmNNZXNzCiAgICAgbV9zaG91bGRFeGl0T25T
eW5jTWVzc2FnZVNlbmRGYWlsdXJlID0gc2hvdWxkRXhpdE9uU3luY01lc3NhZ2VTZW5kRmFpbHVy
ZTsKIH0KIAotdm9pZCBDb25uZWN0aW9uOjphZGRXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIoU3Ry
aW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIFdvcmtRdWV1ZSYgd29ya1F1ZXVlLCBX
b3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIqIHdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcikKK3ZvaWQg
Q29ubmVjdGlvbjo6YWRkV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKFJlY2VpdmVyTmFtZSBtZXNz
YWdlUmVjZWl2ZXJOYW1lLCBXb3JrUXVldWUmIHdvcmtRdWV1ZSwgV29ya1F1ZXVlTWVzc2FnZVJl
Y2VpdmVyKiB3b3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6
OmlzTWFpbigpKTsKIApAQCAtMzI1LDcgKzMyMSw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6YWRkV29y
a1F1ZXVlTWVzc2FnZVJlY2UKICAgICBtX3dvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcnMuYWRkKG1l
c3NhZ2VSZWNlaXZlck5hbWUsIHN0ZDo6bWFrZV9wYWlyKCZ3b3JrUXVldWUsIHdvcmtRdWV1ZU1l
c3NhZ2VSZWNlaXZlcikpOwogfQogCi12b2lkIENvbm5lY3Rpb246OnJlbW92ZVdvcmtRdWV1ZU1l
c3NhZ2VSZWNlaXZlcihTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSkKK3ZvaWQg
Q29ubmVjdGlvbjo6cmVtb3ZlV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKFJlY2VpdmVyTmFtZSBt
ZXNzYWdlUmVjZWl2ZXJOYW1lKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAK
QEAgLTM0OSw3ICszNDUsNyBAQCB2b2lkIENvbm5lY3Rpb246OmRpc3BhdGNoV29ya1F1ZXVlTWVz
c2FnCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIHJlcGx5RW5jb2RlciA9IG1h
a2VVbmlxdWU8RW5jb2Rlcj4oIklQQyIsICJTeW5jTWVzc2FnZVJlcGx5Iiwgc3luY1JlcXVlc3RJ
RCk7CisgICAgYXV0byByZXBseUVuY29kZXIgPSBtYWtlVW5pcXVlPEVuY29kZXI+KE1lc3NhZ2VO
YW1lOjpTeW5jTWVzc2FnZVJlcGx5LCBzeW5jUmVxdWVzdElEKTsKIAogICAgIC8vIEhhbmQgb2Zm
IGJvdGggdGhlIGRlY29kZXIgYW5kIGVuY29kZXIgdG8gdGhlIHdvcmsgcXVldWUgbWVzc2FnZSBy
ZWNlaXZlci4KICAgICB3b3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIuZGlkUmVjZWl2ZVN5bmNNZXNz
YWdlKCp0aGlzLCBkZWNvZGVyLCByZXBseUVuY29kZXIpOwpAQCAtMzYxLDcgKzM1Nyw3IEBAIHZv
aWQgQ29ubmVjdGlvbjo6ZGlzcGF0Y2hXb3JrUXVldWVNZXNzYWcKICAgICAgICAgc2VuZFN5bmNS
ZXBseShXVEZNb3ZlKHJlcGx5RW5jb2RlcikpOwogfQogCi12b2lkIENvbm5lY3Rpb246OmFkZFRo
cmVhZE1lc3NhZ2VSZWNlaXZlcihTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwg
VGhyZWFkTWVzc2FnZVJlY2VpdmVyKiB0aHJlYWRNZXNzYWdlUmVjZWl2ZXIpCit2b2lkIENvbm5l
Y3Rpb246OmFkZFRocmVhZE1lc3NhZ2VSZWNlaXZlcihSZWNlaXZlck5hbWUgbWVzc2FnZVJlY2Vp
dmVyTmFtZSwgVGhyZWFkTWVzc2FnZVJlY2VpdmVyKiB0aHJlYWRNZXNzYWdlUmVjZWl2ZXIpCiB7
CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIApAQCAtMzcxLDcgKzM2Nyw3IEBAIHZv
aWQgQ29ubmVjdGlvbjo6YWRkVGhyZWFkTWVzc2FnZVJlY2VpdmUKICAgICBtX3RocmVhZE1lc3Nh
Z2VSZWNlaXZlcnMuYWRkKG1lc3NhZ2VSZWNlaXZlck5hbWUsIHRocmVhZE1lc3NhZ2VSZWNlaXZl
cik7CiB9CiAKLXZvaWQgQ29ubmVjdGlvbjo6cmVtb3ZlVGhyZWFkTWVzc2FnZVJlY2VpdmVyKFN0
cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lKQordm9pZCBDb25uZWN0aW9uOjpyZW1v
dmVUaHJlYWRNZXNzYWdlUmVjZWl2ZXIoUmVjZWl2ZXJOYW1lIG1lc3NhZ2VSZWNlaXZlck5hbWUp
CiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIApAQCAtMzk1LDcgKzM5MSw3IEBA
IHZvaWQgQ29ubmVjdGlvbjo6ZGlzcGF0Y2hUaHJlYWRNZXNzYWdlUmUKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIGF1dG8gcmVwbHlFbmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNvZGVyPigi
SVBDIiwgIlN5bmNNZXNzYWdlUmVwbHkiLCBzeW5jUmVxdWVzdElEKTsKKyAgICBhdXRvIHJlcGx5
RW5jb2RlciA9IG1ha2VVbmlxdWU8RW5jb2Rlcj4oTWVzc2FnZU5hbWU6OlN5bmNNZXNzYWdlUmVw
bHksIHN5bmNSZXF1ZXN0SUQpOwogICAgIHRocmVhZE1lc3NhZ2VSZWNlaXZlci5kaWRSZWNlaXZl
U3luY01lc3NhZ2UoKnRoaXMsIGRlY29kZXIsIHJlcGx5RW5jb2Rlcik7CiAKICAgICAvLyBGSVhN
RTogSWYgdGhlIG1lc3NhZ2Ugd2FzIGludmFsaWQsIHdlIHNob3VsZCBzZW5kIGJhY2sgYSBTeW5j
TWVzc2FnZUVycm9yLgpAQCAtNDM2LDkgKzQzMiw5IEBAIHZvaWQgQ29ubmVjdGlvbjo6bWFya0N1
cnJlbnRseURpc3BhdGNoZWQKICAgICBtX2RpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZSA9IHRydWU7
CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVyPiBDb25uZWN0aW9uOjpjcmVhdGVTeW5jTWVz
c2FnZUVuY29kZXIoU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIFN0cmluZ1Jl
ZmVyZW5jZSBtZXNzYWdlTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgdWludDY0X3QmIHN5
bmNSZXF1ZXN0SUQpCitzdGQ6OnVuaXF1ZV9wdHI8RW5jb2Rlcj4gQ29ubmVjdGlvbjo6Y3JlYXRl
U3luY01lc3NhZ2VFbmNvZGVyKE1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lLCB1aW50NjRfdCBkZXN0
aW5hdGlvbklELCB1aW50NjRfdCYgc3luY1JlcXVlc3RJRCkKIHsKLSAgICBhdXRvIGVuY29kZXIg
PSBtYWtlVW5pcXVlPEVuY29kZXI+KG1lc3NhZ2VSZWNlaXZlck5hbWUsIG1lc3NhZ2VOYW1lLCBk
ZXN0aW5hdGlvbklEKTsKKyAgICBhdXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlPEVuY29kZXI+KG1l
c3NhZ2VOYW1lLCBkZXN0aW5hdGlvbklEKTsKICAgICBlbmNvZGVyLT5zZXRJc1N5bmNNZXNzYWdl
KHRydWUpOwogCiAgICAgLy8gRW5jb2RlIHRoZSBzeW5jIHJlcXVlc3QgSUQuCkBAIC00NTMsOSAr
NDQ5LDkgQEAgYm9vbCBDb25uZWN0aW9uOjpzZW5kTWVzc2FnZShzdGQ6OnVuaXF1ZQogICAgIGlm
ICghaXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAoaXNNYWluVGhy
ZWFkKCkgJiYgbV9pbkRpc3BhdGNoTWVzc2FnZU1hcmtlZFRvVXNlRnVsbHlTeW5jaHJvbm91c01v
ZGVGb3JUZXN0aW5nICYmICFlbmNvZGVyLT5pc1N5bmNNZXNzYWdlKCkgJiYgIShlbmNvZGVyLT5t
ZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gIklQQyIpICYmICFzZW5kT3B0aW9ucy5jb250YWlucyhT
ZW5kT3B0aW9uOjpJZ25vcmVGdWxseVN5bmNocm9ub3VzTW9kZSkpIHsKKyAgICBpZiAoaXNNYWlu
VGhyZWFkKCkgJiYgbV9pbkRpc3BhdGNoTWVzc2FnZU1hcmtlZFRvVXNlRnVsbHlTeW5jaHJvbm91
c01vZGVGb3JUZXN0aW5nICYmICFlbmNvZGVyLT5pc1N5bmNNZXNzYWdlKCkgJiYgIShlbmNvZGVy
LT5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gUmVjZWl2ZXJOYW1lOjpJUEMpICYmICFzZW5kT3B0
aW9ucy5jb250YWlucyhTZW5kT3B0aW9uOjpJZ25vcmVGdWxseVN5bmNocm9ub3VzTW9kZSkpIHsK
ICAgICAgICAgdWludDY0X3Qgc3luY1JlcXVlc3RJRDsKLSAgICAgICAgYXV0byB3cmFwcGVkTWVz
c2FnZSA9IGNyZWF0ZVN5bmNNZXNzYWdlRW5jb2RlcigiSVBDIiwgIldyYXBwZWRBc3luY01lc3Nh
Z2VGb3JUZXN0aW5nIiwgZW5jb2Rlci0+ZGVzdGluYXRpb25JRCgpLCBzeW5jUmVxdWVzdElEKTsK
KyAgICAgICAgYXV0byB3cmFwcGVkTWVzc2FnZSA9IGNyZWF0ZVN5bmNNZXNzYWdlRW5jb2RlcihN
ZXNzYWdlTmFtZTo6V3JhcHBlZEFzeW5jTWVzc2FnZUZvclRlc3RpbmcsIGVuY29kZXItPmRlc3Rp
bmF0aW9uSUQoKSwgc3luY1JlcXVlc3RJRCk7CiAgICAgICAgIHdyYXBwZWRNZXNzYWdlLT5zZXRG
dWxseVN5bmNocm9ub3VzTW9kZUZvclRlc3RpbmcoKTsKICAgICAgICAgd3JhcHBlZE1lc3NhZ2Ut
PndyYXBGb3JUZXN0aW5nKFdURk1vdmUoZW5jb2RlcikpOwogICAgICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8Ym9vbD4oc2VuZFN5bmNNZXNzYWdlKHN5bmNSZXF1ZXN0SUQsIFdURk1vdmUod3JhcHBl
ZE1lc3NhZ2UpLCBTZWNvbmRzOjppbmZpbml0eSgpLCB7IH0pKTsKQEAgLTQ5MCw3ICs0ODYsNyBA
QCBTZWNvbmRzIENvbm5lY3Rpb246OnRpbWVvdXRSZXNwZWN0aW5nSWduCiAgICAgcmV0dXJuIG1f
aWdub3JlVGltZW91dHNGb3JUZXN0aW5nID8gU2Vjb25kczo6aW5maW5pdHkoKSA6IHRpbWVvdXQ7
CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiBDb25uZWN0aW9uOjp3YWl0Rm9yTWVzc2Fn
ZShTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgU3RyaW5nUmVmZXJlbmNlIG1l
c3NhZ2VOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQsIE9wdGlv
blNldDxXYWl0Rm9yT3B0aW9uPiB3YWl0Rm9yT3B0aW9ucykKK3N0ZDo6dW5pcXVlX3B0cjxEZWNv
ZGVyPiBDb25uZWN0aW9uOjp3YWl0Rm9yTWVzc2FnZShNZXNzYWdlTmFtZSBtZXNzYWdlTmFtZSwg
dWludDY0X3QgZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0LCBPcHRpb25TZXQ8V2FpdEZv
ck9wdGlvbj4gd2FpdEZvck9wdGlvbnMpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigp
KTsKICAgICBhdXRvIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKTsKQEAgLTUwNiw3ICs1
MDIsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gQ29ubmVjdGlvbjo6d2FpCiAgICAgICAg
IGZvciAoYXV0byBpdCA9IG1faW5jb21pbmdNZXNzYWdlcy5iZWdpbigpLCBlbmQgPSBtX2luY29t
aW5nTWVzc2FnZXMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAgICAgICAgc3RkOjp1
bmlxdWVfcHRyPERlY29kZXI+JiBtZXNzYWdlID0gKml0OwogCi0gICAgICAgICAgICBpZiAobWVz
c2FnZS0+bWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IG1lc3NhZ2VSZWNlaXZlck5hbWUgJiYgbWVz
c2FnZS0+bWVzc2FnZU5hbWUoKSA9PSBtZXNzYWdlTmFtZSAmJiBtZXNzYWdlLT5kZXN0aW5hdGlv
bklEKCkgPT0gZGVzdGluYXRpb25JRCkgeworICAgICAgICAgICAgaWYgKG1lc3NhZ2UtPm1lc3Nh
Z2VOYW1lKCkgPT0gbWVzc2FnZU5hbWUgJiYgbWVzc2FnZS0+ZGVzdGluYXRpb25JRCgpID09IGRl
c3RpbmF0aW9uSUQpIHsKICAgICAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4g
cmV0dXJuZWRNZXNzYWdlID0gV1RGTW92ZShtZXNzYWdlKTsKIAogICAgICAgICAgICAgICAgIG1f
aW5jb21pbmdNZXNzYWdlcy5yZW1vdmUoaXQpOwpAQCAtNTI4LDcgKzUyNCw3IEBAIHN0ZDo6dW5p
cXVlX3B0cjxEZWNvZGVyPiBDb25uZWN0aW9uOjp3YWkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgfQogCi0gICAgV2FpdEZvck1lc3NhZ2VTdGF0ZSB3YWl0aW5nRm9yTWVzc2FnZShtZXNz
YWdlUmVjZWl2ZXJOYW1lLCBtZXNzYWdlTmFtZSwgZGVzdGluYXRpb25JRCwgd2FpdEZvck9wdGlv
bnMpOworICAgIFdhaXRGb3JNZXNzYWdlU3RhdGUgd2FpdGluZ0Zvck1lc3NhZ2UobWVzc2FnZU5h
bWUsIGRlc3RpbmF0aW9uSUQsIHdhaXRGb3JPcHRpb25zKTsKIAogICAgIHsKICAgICAgICAgYXV0
byBsb2NrZXIgPSBob2xkTG9jayhtX3dhaXRGb3JNZXNzYWdlTXV0ZXgpOwpAQCAtNjAwLDE0ICs1
OTYsMTMgQEAgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IENvbm5lY3Rpb246OnNlbgogICAgIGlm
IChzZW5kU3luY09wdGlvbnMuY29udGFpbnMoU2VuZFN5bmNPcHRpb246OkZvcmNlRGlzcGF0Y2hX
aGVuRGVzdGluYXRpb25Jc1dhaXRpbmdGb3JVbmJvdW5kZWRTeW5jUmVwbHkpKQogICAgICAgICBz
ZW5kT3B0aW9ucyA9IHNlbmRPcHRpb25zIHwgSVBDOjpTZW5kT3B0aW9uOjpEaXNwYXRjaE1lc3Nh
Z2VFdmVuV2hlbldhaXRpbmdGb3JVbmJvdW5kZWRTeW5jUmVwbHk7CiAKLSAgICBhdXRvIG1lc3Nh
Z2VSZWNlaXZlck5hbWUgPSBlbmNvZGVyLT5tZXNzYWdlUmVjZWl2ZXJOYW1lKCk7CiAgICAgYXV0
byBtZXNzYWdlTmFtZSA9IGVuY29kZXItPm1lc3NhZ2VOYW1lKCk7CiAgICAgc2VuZE1lc3NhZ2Uo
V1RGTW92ZShlbmNvZGVyKSwgc2VuZE9wdGlvbnMpOwogCiAgICAgLy8gVGhlbiB3YWl0IGZvciBh
IHJlcGx5LiBXYWl0aW5nIGZvciBhIHJlcGx5IGNvdWxkIGludm9sdmUgZGlzcGF0Y2hpbmcgaW5j
b21pbmcgc3luYyBtZXNzYWdlcywgc28KICAgICAvLyBrZWVwIGFuIGV4dHJhIHJlZmVyZW5jZSB0
byB0aGUgY29ubmVjdGlvbiBoZXJlIGluIGNhc2UgaXQncyBpbnZhbGlkYXRlZC4KICAgICBSZWY8
Q29ubmVjdGlvbj4gcHJvdGVjdCgqdGhpcyk7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+
IHJlcGx5ID0gd2FpdEZvclN5bmNSZXBseShzeW5jUmVxdWVzdElELCBtZXNzYWdlUmVjZWl2ZXJO
YW1lLCBtZXNzYWdlTmFtZSwgdGltZW91dCwgc2VuZFN5bmNPcHRpb25zKTsKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8RGVjb2Rlcj4gcmVwbHkgPSB3YWl0Rm9yU3luY1JlcGx5KHN5bmNSZXF1ZXN0SUQs
IG1lc3NhZ2VOYW1lLCB0aW1lb3V0LCBzZW5kU3luY09wdGlvbnMpOwogCiAgICAgLS1tX2luU2Vu
ZFN5bmNDb3VudDsKIApAQCAtNjI0LDcgKzYxOSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVy
PiBDb25uZWN0aW9uOjpzZW4KICAgICByZXR1cm4gcmVwbHk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0
cjxEZWNvZGVyPiBDb25uZWN0aW9uOjp3YWl0Rm9yU3luY1JlcGx5KHVpbnQ2NF90IHN5bmNSZXF1
ZXN0SUQsIFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBTdHJpbmdSZWZlcmVu
Y2UgbWVzc2FnZU5hbWUsIFNlY29uZHMgdGltZW91dCwgT3B0aW9uU2V0PFNlbmRTeW5jT3B0aW9u
PiBzZW5kU3luY09wdGlvbnMpCitzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gQ29ubmVjdGlvbjo6
d2FpdEZvclN5bmNSZXBseSh1aW50NjRfdCBzeW5jUmVxdWVzdElELCBNZXNzYWdlTmFtZSBtZXNz
YWdlTmFtZSwgU2Vjb25kcyB0aW1lb3V0LCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRpb24+IHNlbmRT
eW5jT3B0aW9ucykKIHsKICAgICB0aW1lb3V0ID0gdGltZW91dFJlc3BlY3RpbmdJZ25vcmVUaW1l
b3V0c0ZvclRlc3RpbmcodGltZW91dCk7CiAgICAgTW9ub3RvbmljVGltZSBhYnNvbHV0ZVRpbWUg
PSBNb25vdG9uaWNUaW1lOjpub3coKSArIHRpbWVvdXQ7CkBAIC02NjksOSArNjY0LDkgQEAgc3Rk
Ojp1bmlxdWVfcHRyPERlY29kZXI+IENvbm5lY3Rpb246OndhaQogICAgIH0KIAogI2lmIE9TKERB
UldJTikKLSAgICBSRUxFQVNFX0xPR19FUlJPUihJUEMsICJDb25uZWN0aW9uOjp3YWl0Rm9yU3lu
Y1JlcGx5OiBUaW1lZC1vdXQgd2hpbGUgd2FpdGluZyBmb3IgcmVwbHkgZm9yICV7cHVibGljfXM6
OiV7cHVibGljfXMgZnJvbSBwcm9jZXNzICVkLCBpZCA9ICUiIFBSSXU2NCwgbWVzc2FnZVJlY2Vp
dmVyTmFtZS50b1N0cmluZygpLmRhdGEoKSwgbWVzc2FnZU5hbWUudG9TdHJpbmcoKS5kYXRhKCks
IHJlbW90ZVByb2Nlc3NJRCgpLCBzeW5jUmVxdWVzdElEKTsKKyAgICBSRUxFQVNFX0xPR19FUlJP
UihJUEMsICJDb25uZWN0aW9uOjp3YWl0Rm9yU3luY1JlcGx5OiBUaW1lZC1vdXQgd2hpbGUgd2Fp
dGluZyBmb3IgcmVwbHkgZm9yICV7cHVibGljfXMgZnJvbSBwcm9jZXNzICVkLCBpZCA9ICUiIFBS
SXU2NCwgZGVzY3JpcHRpb24obWVzc2FnZU5hbWUpLCByZW1vdGVQcm9jZXNzSUQoKSwgc3luY1Jl
cXVlc3RJRCk7CiAjZWxzZQotICAgIFJFTEVBU0VfTE9HX0VSUk9SKElQQywgIkNvbm5lY3Rpb246
OndhaXRGb3JTeW5jUmVwbHk6IFRpbWVkLW91dCB3aGlsZSB3YWl0aW5nIGZvciByZXBseSBmb3Ig
JXM6OiVzLCBpZCA9ICUiIFBSSXU2NCwgbWVzc2FnZVJlY2VpdmVyTmFtZS50b1N0cmluZygpLmRh
dGEoKSwgbWVzc2FnZU5hbWUudG9TdHJpbmcoKS5kYXRhKCksIHN5bmNSZXF1ZXN0SUQpOworICAg
IFJFTEVBU0VfTE9HX0VSUk9SKElQQywgIkNvbm5lY3Rpb246OndhaXRGb3JTeW5jUmVwbHk6IFRp
bWVkLW91dCB3aGlsZSB3YWl0aW5nIGZvciByZXBseSBmb3IgJXMsIGlkID0gJSIgUFJJdTY0LCBk
ZXNjcmlwdGlvbihtZXNzYWdlTmFtZSksIHN5bmNSZXF1ZXN0SUQpOwogI2VuZGlmCiAKICAgICBk
aWRSZWNlaXZlU3luY1JlcGx5KHNlbmRTeW5jT3B0aW9ucyk7CkBAIC03MTEsMjMgKzcwNiwxNiBA
QCB2b2lkIENvbm5lY3Rpb246OnByb2Nlc3NJbmNvbWluZ1N5bmNSZXBsCiAKIHZvaWQgQ29ubmVj
dGlvbjo6cHJvY2Vzc0luY29taW5nTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gbWVz
c2FnZSkKIHsKLSAgICBBU1NFUlQoIW1lc3NhZ2UtPm1lc3NhZ2VSZWNlaXZlck5hbWUoKS5pc0Vt
cHR5KCkpOwotICAgIEFTU0VSVCghbWVzc2FnZS0+bWVzc2FnZU5hbWUoKS5pc0VtcHR5KCkpOwor
ICAgIEFTU0VSVChtZXNzYWdlLT5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgIT0gUmVjZWl2ZXJOYW1l
OjpJbnZhbGlkKTsKIAotICAgIGlmIChtZXNzYWdlLT5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0g
IklQQyIgJiYgbWVzc2FnZS0+bWVzc2FnZU5hbWUoKSA9PSAiU3luY01lc3NhZ2VSZXBseSIpIHsK
KyAgICBpZiAobWVzc2FnZS0+bWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlTmFtZTo6U3luY01lc3Nh
Z2VSZXBseSkgewogICAgICAgICBwcm9jZXNzSW5jb21pbmdTeW5jUmVwbHkoV1RGTW92ZShtZXNz
YWdlKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAoIVdvcmtRdWV1ZU1lc3Nh
Z2VSZWNlaXZlck1hcDo6aXNWYWxpZEtleShtZXNzYWdlLT5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkp
IHx8ICFUaHJlYWRNZXNzYWdlUmVjZWl2ZXJNYXA6OmlzVmFsaWRLZXkobWVzc2FnZS0+bWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpKSkgewotICAgICAgICBSZWZQdHI8Q29ubmVjdGlvbj4gcHJvdGVjdGVk
VGhpcyh0aGlzKTsKLSAgICAgICAgU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWVS
ZWZlcmVuY2UgPSBtZXNzYWdlLT5tZXNzYWdlUmVjZWl2ZXJOYW1lKCk7Ci0gICAgICAgIFN0cmlu
ZyBtZXNzYWdlUmVjZWl2ZXJOYW1lKG1lc3NhZ2VSZWNlaXZlck5hbWVSZWZlcmVuY2UuaXNFbXB0
eSgpID8gIjx1bmtub3duIG1lc3NhZ2UgcmVjZWl2ZXI+IiA6IFN0cmluZyhtZXNzYWdlUmVjZWl2
ZXJOYW1lUmVmZXJlbmNlLmRhdGEoKSwgbWVzc2FnZVJlY2VpdmVyTmFtZVJlZmVyZW5jZS5zaXpl
KCkpKTsKLSAgICAgICAgU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lUmVmZXJlbmNlID0gbWVz
c2FnZS0+bWVzc2FnZU5hbWUoKTsKLSAgICAgICAgU3RyaW5nIG1lc3NhZ2VOYW1lKG1lc3NhZ2VO
YW1lUmVmZXJlbmNlLmlzRW1wdHkoKSA/ICI8dW5rbm93biBtZXNzYWdlPiIgOiBTdHJpbmcobWVz
c2FnZU5hbWVSZWZlcmVuY2UuZGF0YSgpLCBtZXNzYWdlTmFtZVJlZmVyZW5jZS5zaXplKCkpKTsK
LQotICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKSwgbWVzc2FnZVJlY2VpdmVyTmFtZSA9IFdURk1vdmUobWVzc2FnZVJlY2VpdmVy
TmFtZSksIG1lc3NhZ2VOYW1lID0gV1RGTW92ZShtZXNzYWdlTmFtZSldKCkgbXV0YWJsZSB7Ci0g
ICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5kaXNwYXRjaERpZFJlY2VpdmVJbnZhbGlkTWVzc2Fn
ZShtZXNzYWdlUmVjZWl2ZXJOYW1lLnV0ZjgoKSwgbWVzc2FnZU5hbWUudXRmOCgpKTsKKyAgICAg
ICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyksIG1lc3NhZ2VOYW1lID0gbWVzc2FnZS0+bWVzc2FnZU5hbWUoKV0oKSBtdXRhYmxlIHsKKyAg
ICAgICAgICAgIHByb3RlY3RlZFRoaXMtPmRpc3BhdGNoRGlkUmVjZWl2ZUludmFsaWRNZXNzYWdl
KG1lc3NhZ2VOYW1lKTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC03
NTksNyArNzQ3LDcgQEAgdm9pZCBDb25uZWN0aW9uOjpwcm9jZXNzSW5jb21pbmdNZXNzYWdlKAog
ICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fd2FpdEZvck1lc3NhZ2VNdXRleCk7CiAK
ICAgICAgICAgaWYgKG1fd2FpdGluZ0Zvck1lc3NhZ2UgJiYgIW1fd2FpdGluZ0Zvck1lc3NhZ2Ut
PmRlY29kZXIpIHsKLSAgICAgICAgICAgIGlmIChtX3dhaXRpbmdGb3JNZXNzYWdlLT5tZXNzYWdl
UmVjZWl2ZXJOYW1lID09IG1lc3NhZ2UtPm1lc3NhZ2VSZWNlaXZlck5hbWUoKSAmJiBtX3dhaXRp
bmdGb3JNZXNzYWdlLT5tZXNzYWdlTmFtZSA9PSBtZXNzYWdlLT5tZXNzYWdlTmFtZSgpICYmIG1f
d2FpdGluZ0Zvck1lc3NhZ2UtPmRlc3RpbmF0aW9uSUQgPT0gbWVzc2FnZS0+ZGVzdGluYXRpb25J
RCgpKSB7CisgICAgICAgICAgICBpZiAobV93YWl0aW5nRm9yTWVzc2FnZS0+bWVzc2FnZU5hbWUg
PT0gbWVzc2FnZS0+bWVzc2FnZU5hbWUoKSAmJiBtX3dhaXRpbmdGb3JNZXNzYWdlLT5kZXN0aW5h
dGlvbklEID09IG1lc3NhZ2UtPmRlc3RpbmF0aW9uSUQoKSkgewogICAgICAgICAgICAgICAgIG1f
d2FpdGluZ0Zvck1lc3NhZ2UtPmRlY29kZXIgPSBXVEZNb3ZlKG1lc3NhZ2UpOwogICAgICAgICAg
ICAgICAgIEFTU0VSVChtX3dhaXRpbmdGb3JNZXNzYWdlLT5kZWNvZGVyKTsKICAgICAgICAgICAg
ICAgICBtX3dhaXRGb3JNZXNzYWdlQ29uZGl0aW9uLm5vdGlmeU9uZSgpOwpAQCAtOTEyLDkgKzkw
MCw5IEBAIHZvaWQgQ29ubmVjdGlvbjo6ZGlzcGF0Y2hTeW5jTWVzc2FnZShEZWMKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gcmVwbHlFbmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNv
ZGVyPigiSVBDIiwgIlN5bmNNZXNzYWdlUmVwbHkiLCBzeW5jUmVxdWVzdElEKTsKKyAgICBhdXRv
IHJlcGx5RW5jb2RlciA9IG1ha2VVbmlxdWU8RW5jb2Rlcj4oTWVzc2FnZU5hbWU6OlN5bmNNZXNz
YWdlUmVwbHksIHN5bmNSZXF1ZXN0SUQpOwogCi0gICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2Vp
dmVyTmFtZSgpID09ICJJUEMiICYmIGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSAiV3JhcHBlZEFz
eW5jTWVzc2FnZUZvclRlc3RpbmciKSB7CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9
PSBNZXNzYWdlTmFtZTo6V3JhcHBlZEFzeW5jTWVzc2FnZUZvclRlc3RpbmcpIHsKICAgICAgICAg
aWYgKCFtX2Z1bGx5U3luY2hyb25vdXNNb2RlSXNBbGxvd2VkRm9yVGVzdGluZykgewogICAgICAg
ICAgICAgZGVjb2Rlci5tYXJrSW52YWxpZCgpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtOTM2
LDE0ICs5MjQsMTQgQEAgdm9pZCBDb25uZWN0aW9uOjpkaXNwYXRjaFN5bmNNZXNzYWdlKERlYwog
ICAgICAgICBzZW5kU3luY1JlcGx5KFdURk1vdmUocmVwbHlFbmNvZGVyKSk7CiB9CiAKLXZvaWQg
Q29ubmVjdGlvbjo6ZGlzcGF0Y2hEaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoY29uc3QgQ1N0cmlu
ZyYgbWVzc2FnZVJlY2VpdmVyTmFtZVN0cmluZywgY29uc3QgQ1N0cmluZyYgbWVzc2FnZU5hbWVT
dHJpbmcpCit2b2lkIENvbm5lY3Rpb246OmRpc3BhdGNoRGlkUmVjZWl2ZUludmFsaWRNZXNzYWdl
KE1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4o
KSk7CiAKICAgICBpZiAoIWlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9jbGll
bnQuZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKCp0aGlzLCBTdHJpbmdSZWZlcmVuY2UobWVzc2Fn
ZVJlY2VpdmVyTmFtZVN0cmluZy5kYXRhKCksIG1lc3NhZ2VSZWNlaXZlck5hbWVTdHJpbmcubGVu
Z3RoKCkpLCBTdHJpbmdSZWZlcmVuY2UobWVzc2FnZU5hbWVTdHJpbmcuZGF0YSgpLCBtZXNzYWdl
TmFtZVN0cmluZy5sZW5ndGgoKSkpOworICAgIG1fY2xpZW50LmRpZFJlY2VpdmVJbnZhbGlkTWVz
c2FnZSgqdGhpcywgbWVzc2FnZU5hbWUpOwogfQogCiB2b2lkIENvbm5lY3Rpb246OmRpZEZhaWxU
b1NlbmRTeW5jTWVzc2FnZSgpCkBAIC05ODksNyArOTc3LDcgQEAgdm9pZCBDb25uZWN0aW9uOjpl
bnF1ZXVlSW5jb21pbmdNZXNzYWdlKAogdm9pZCBDb25uZWN0aW9uOjpkaXNwYXRjaE1lc3NhZ2Uo
RGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBSRUxFQVNFX0FTU0VSVChpc1ZhbGlkKCkpOwotICAg
IGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSAiQXN5bmNSZXBseSIpIHsKKyAg
ICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gUmVjZWl2ZXJOYW1lOjpBc3lu
Y1JlcGx5KSB7CiAgICAgICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBsaXN0ZW5lcklEOwogICAgICAg
ICBkZWNvZGVyID4+IGxpc3RlbmVySUQ7CiAgICAgICAgIGlmICghbGlzdGVuZXJJRCkgewpAQCAt
MTA1NCw3ICsxMDQyLDcgQEAgdm9pZCBDb25uZWN0aW9uOjpkaXNwYXRjaE1lc3NhZ2Uoc3RkOjp1
bgogCiAgICAgaWYgKG1lc3NhZ2UtPnNob3VsZFVzZUZ1bGx5U3luY2hyb25vdXNNb2RlRm9yVGVz
dGluZygpKSB7CiAgICAgICAgIGlmICghbV9mdWxseVN5bmNocm9ub3VzTW9kZUlzQWxsb3dlZEZv
clRlc3RpbmcpIHsKLSAgICAgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVJbnZhbGlkTWVzc2Fn
ZSgqdGhpcywgbWVzc2FnZS0+bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtZXNzYWdlLT5tZXNzYWdl
TmFtZSgpKTsKKyAgICAgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZSgq
dGhpcywgbWVzc2FnZS0+bWVzc2FnZU5hbWUoKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KICAgICAgICAgbV9pbkRpc3BhdGNoTWVzc2FnZU1hcmtlZFRvVXNlRnVsbHlTeW5jaHJv
bm91c01vZGVGb3JUZXN0aW5nKys7CkBAIC0xMDg4LDcgKzEwNzYsNyBAQCB2b2lkIENvbm5lY3Rp
b246OmRpc3BhdGNoTWVzc2FnZShzdGQ6OnVuCiAgICAgICAgIG1faW5EaXNwYXRjaE1lc3NhZ2VN
YXJrZWRUb1VzZUZ1bGx5U3luY2hyb25vdXNNb2RlRm9yVGVzdGluZy0tOwogCiAgICAgaWYgKG1f
ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlICYmIGlzVmFsaWQoKSkKLSAgICAgICAgbV9jbGllbnQu
ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKCp0aGlzLCBtZXNzYWdlLT5tZXNzYWdlUmVjZWl2ZXJO
YW1lKCksIG1lc3NhZ2UtPm1lc3NhZ2VOYW1lKCkpOworICAgICAgICBtX2NsaWVudC5kaWRSZWNl
aXZlSW52YWxpZE1lc3NhZ2UoKnRoaXMsIG1lc3NhZ2UtPm1lc3NhZ2VOYW1lKCkpOwogCiAgICAg
bV9kaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UgPSBvbGREaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2U7
CiB9CkBAIC0xMTY4LDcgKzExNTYsNyBAQCB2b2lkIENvbm5lY3Rpb246OmRpc3BhdGNoSW5jb21p
bmdNZXNzYWdlCiAgICAgICAgIGlmIChtZXNzYWdlc1RvUHJvY2VzcyA8IG1faW5jb21pbmdNZXNz
YWdlcy5zaXplKCkpIHsKICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKElQQywgIiVwIC0g
Q29ubmVjdGlvbjo6ZGlzcGF0Y2hJbmNvbWluZ01lc3NhZ2VzOiBJUEMgdGhyb3R0bGluZyB3YXMg
dHJpZ2dlcmVkIChoYXMgJXp1IHBlbmRpbmcgaW5jb21pbmcgbWVzc2FnZXMsIHdpbGwgb25seSBw
cm9jZXNzICV6dSBiZWZvcmUgeWllbGRpbmcpIiwgdGhpcywgbV9pbmNvbWluZ01lc3NhZ2VzLnNp
emUoKSwgbWVzc2FnZXNUb1Byb2Nlc3MpOwogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgICAgICAg
ICAgUkVMRUFTRV9MT0dfRVJST1IoSVBDLCAiJXAgLSBDb25uZWN0aW9uOjpkaXNwYXRjaEluY29t
aW5nTWVzc2FnZXM6IGZpcnN0IElQQyBtZXNzYWdlIGluIHF1ZXVlIGlzICV7cHVibGljfXM6OiV7
cHVibGljfXMiLCB0aGlzLCBtZXNzYWdlLT5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkudG9TdHJpbmco
KS5kYXRhKCksIG1lc3NhZ2UtPm1lc3NhZ2VOYW1lKCkudG9TdHJpbmcoKS5kYXRhKCkpOworICAg
ICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoSVBDLCAiJXAgLSBDb25uZWN0aW9uOjpkaXNwYXRj
aEluY29taW5nTWVzc2FnZXM6IGZpcnN0IElQQyBtZXNzYWdlIGluIHF1ZXVlIGlzICV7cHVibGlj
fXMiLCB0aGlzLCBkZXNjcmlwdGlvbihtZXNzYWdlLT5tZXNzYWdlTmFtZSgpKSk7CiAjZW5kaWYK
ICAgICAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9u
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5o
CShyZXZpc2lvbiAyNjEyMzgpCisrKyBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0
aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNyw3ICsxMDcsNyBAQCBwdWJsaWM6CiAgICAgY2xh
c3MgQ2xpZW50IDogcHVibGljIE1lc3NhZ2VSZWNlaXZlciB7CiAgICAgcHVibGljOgogICAgICAg
ICB2aXJ0dWFsIHZvaWQgZGlkQ2xvc2UoQ29ubmVjdGlvbiYpID0gMDsKLSAgICAgICAgdmlydHVh
bCB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShDb25uZWN0aW9uJiwgU3RyaW5nUmVmZXJl
bmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZSkgPSAw
OworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKENvbm5lY3Rp
b24mLCBNZXNzYWdlTmFtZSkgPSAwOwogCiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2aXJ0dWFs
IH5DbGllbnQoKSB7IH0KQEAgLTE4OSwxMSArMTg5LDExIEBAIHB1YmxpYzoKICAgICB0eXBlZGVm
IHZvaWQgKCpEaWRDbG9zZU9uQ29ubmVjdGlvbldvcmtRdWV1ZUNhbGxiYWNrKShDb25uZWN0aW9u
Kik7CiAgICAgdm9pZCBzZXREaWRDbG9zZU9uQ29ubmVjdGlvbldvcmtRdWV1ZUNhbGxiYWNrKERp
ZENsb3NlT25Db25uZWN0aW9uV29ya1F1ZXVlQ2FsbGJhY2spOwogCi0gICAgdm9pZCBhZGRXb3Jr
UXVldWVNZXNzYWdlUmVjZWl2ZXIoU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUs
IFdvcmtRdWV1ZSYsIFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlciopOwotICAgIHZvaWQgcmVtb3Zl
V29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJO
YW1lKTsKKyAgICB2b2lkIGFkZFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcihSZWNlaXZlck5hbWUs
IFdvcmtRdWV1ZSYsIFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlciopOworICAgIHZvaWQgcmVtb3Zl
V29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKFJlY2VpdmVyTmFtZSk7CiAKLSAgICB2b2lkIGFkZFRo
cmVhZE1lc3NhZ2VSZWNlaXZlcihTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwg
VGhyZWFkTWVzc2FnZVJlY2VpdmVyKik7Ci0gICAgdm9pZCByZW1vdmVUaHJlYWRNZXNzYWdlUmVj
ZWl2ZXIoU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUpOworICAgIHZvaWQgYWRk
VGhyZWFkTWVzc2FnZVJlY2VpdmVyKFJlY2VpdmVyTmFtZSwgVGhyZWFkTWVzc2FnZVJlY2VpdmVy
Kik7CisgICAgdm9pZCByZW1vdmVUaHJlYWRNZXNzYWdlUmVjZWl2ZXIoUmVjZWl2ZXJOYW1lKTsK
IAogICAgIGJvb2wgb3BlbigpOwogICAgIHZvaWQgaW52YWxpZGF0ZSgpOwpAQCAtMjM1LDcgKzIz
NSw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBib29sIHNlbmRNZXNzYWdlKHN0ZDo6dW5pcXVl
X3B0cjxFbmNvZGVyPiwgT3B0aW9uU2V0PFNlbmRPcHRpb24+IHNlbmRPcHRpb25zKTsKLSAgICBz
dGQ6OnVuaXF1ZV9wdHI8RW5jb2Rlcj4gY3JlYXRlU3luY01lc3NhZ2VFbmNvZGVyKFN0cmluZ1Jl
ZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUs
IHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIHVpbnQ2NF90JiBzeW5jUmVxdWVzdElEKTsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8RW5jb2Rlcj4gY3JlYXRlU3luY01lc3NhZ2VFbmNvZGVyKE1lc3NhZ2VO
YW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCB1aW50NjRfdCYgc3luY1JlcXVlc3RJRCk7CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IHNlbmRTeW5jTWVzc2FnZSh1aW50NjRfdCBzeW5j
UmVxdWVzdElELCBzdGQ6OnVuaXF1ZV9wdHI8RW5jb2Rlcj4sIFNlY29uZHMgdGltZW91dCwgT3B0
aW9uU2V0PFNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMpOwogICAgIGJvb2wgc2VuZFN5
bmNSZXBseShzdGQ6OnVuaXF1ZV9wdHI8RW5jb2Rlcj4pOwogCkBAIC0yNzQsOSArMjc0LDkgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZShJZGVudGlmaWVyKTsKICAgICB2
b2lkIHBsYXRmb3JtSW52YWxpZGF0ZSgpOwogICAgIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxEZWNv
ZGVyPiB3YWl0Rm9yTWVzc2FnZShTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwg
U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBTZWNv
bmRzIHRpbWVvdXQsIE9wdGlvblNldDxXYWl0Rm9yT3B0aW9uPik7CisgICAgc3RkOjp1bmlxdWVf
cHRyPERlY29kZXI+IHdhaXRGb3JNZXNzYWdlKE1lc3NhZ2VOYW1lLCB1aW50NjRfdCBkZXN0aW5h
dGlvbklELCBTZWNvbmRzIHRpbWVvdXQsIE9wdGlvblNldDxXYWl0Rm9yT3B0aW9uPik7CiAgICAg
Ci0gICAgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IHdhaXRGb3JTeW5jUmVwbHkodWludDY0X3Qg
c3luY1JlcXVlc3RJRCwgU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIFN0cmlu
Z1JlZmVyZW5jZSBtZXNzYWdlTmFtZSwgU2Vjb25kcyB0aW1lb3V0LCBPcHRpb25TZXQ8U2VuZFN5
bmNPcHRpb24+KTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gd2FpdEZvclN5bmNSZXBs
eSh1aW50NjRfdCBzeW5jUmVxdWVzdElELCBNZXNzYWdlTmFtZSwgU2Vjb25kcyB0aW1lb3V0LCBP
cHRpb25TZXQ8U2VuZFN5bmNPcHRpb24+KTsKIAogICAgIGJvb2wgZGlzcGF0Y2hNZXNzYWdlVG9X
b3JrUXVldWVSZWNlaXZlcihzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4mKTsKICAgICBib29sIGRp
c3BhdGNoTWVzc2FnZVRvVGhyZWFkUmVjZWl2ZXIoc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+Jik7
CkBAIC0zMDAsNyArMzAwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpc3BhdGNoTWVzc2FnZShz
dGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4pOwogICAgIHZvaWQgZGlzcGF0Y2hNZXNzYWdlKERlY29k
ZXImKTsKICAgICB2b2lkIGRpc3BhdGNoU3luY01lc3NhZ2UoRGVjb2RlciYpOwotICAgIHZvaWQg
ZGlzcGF0Y2hEaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoY29uc3QgQ1N0cmluZyYgbWVzc2FnZVJl
Y2VpdmVyTmFtZVN0cmluZywgY29uc3QgQ1N0cmluZyYgbWVzc2FnZU5hbWVTdHJpbmcpOworICAg
IHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoTWVzc2FnZU5hbWUpOwogICAg
IHZvaWQgZGlkRmFpbFRvU2VuZFN5bmNNZXNzYWdlKCk7CiAKICAgICAvLyBDYW4gYmUgY2FsbGVk
IG9uIGFueSB0aHJlYWQuCkBAIC0zNDYsMTEgKzM0NiwxMSBAQCBwcml2YXRlOgogICAgIFJlZjxX
b3JrUXVldWU+IG1fY29ubmVjdGlvblF1ZXVlOwogCiAgICAgTG9jayBtX3dvcmtRdWV1ZU1lc3Nh
Z2VSZWNlaXZlcnNNdXRleDsKLSAgICB1c2luZyBXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXJNYXAg
PSBIYXNoTWFwPFN0cmluZ1JlZmVyZW5jZSwgc3RkOjpwYWlyPFJlZlB0cjxXb3JrUXVldWU+LCBS
ZWZQdHI8V29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyPj4+OworICAgIHVzaW5nIFdvcmtRdWV1ZU1l
c3NhZ2VSZWNlaXZlck1hcCA9IEhhc2hNYXA8UmVjZWl2ZXJOYW1lLCBzdGQ6OnBhaXI8UmVmUHRy
PFdvcmtRdWV1ZT4sIFJlZlB0cjxXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXI+PiwgV1RGOjpJbnRI
YXNoPFJlY2VpdmVyTmFtZT4sIFdURjo6U3Ryb25nRW51bUhhc2hUcmFpdHM8UmVjZWl2ZXJOYW1l
Pj47CiAgICAgV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyTWFwIG1fd29ya1F1ZXVlTWVzc2FnZVJl
Y2VpdmVyczsKIAogICAgIExvY2sgbV90aHJlYWRNZXNzYWdlUmVjZWl2ZXJzTG9jazsKLSAgICB1
c2luZyBUaHJlYWRNZXNzYWdlUmVjZWl2ZXJNYXAgPSBIYXNoTWFwPFN0cmluZ1JlZmVyZW5jZSwg
UmVmUHRyPFRocmVhZE1lc3NhZ2VSZWNlaXZlcj4+OworICAgIHVzaW5nIFRocmVhZE1lc3NhZ2VS
ZWNlaXZlck1hcCA9IEhhc2hNYXA8UmVjZWl2ZXJOYW1lLCBSZWZQdHI8VGhyZWFkTWVzc2FnZVJl
Y2VpdmVyPiwgV1RGOjpJbnRIYXNoPFJlY2VpdmVyTmFtZT4sIFdURjo6U3Ryb25nRW51bUhhc2hU
cmFpdHM8UmVjZWl2ZXJOYW1lPj47CiAgICAgVGhyZWFkTWVzc2FnZVJlY2VpdmVyTWFwIG1fdGhy
ZWFkTWVzc2FnZVJlY2VpdmVyczsKIAogICAgIHVuc2lnbmVkIG1faW5TZW5kU3luY0NvdW50OwpA
QCAtNDYyLDcgKzQ2Miw3IEBAIGJvb2wgQ29ubmVjdGlvbjo6c2VuZChUJiYgbWVzc2FnZSwgdWlu
dDYKIHsKICAgICBDT01QSUxFX0FTU0VSVCghVDo6aXNTeW5jLCBBc3luY01lc3NhZ2VFeHBlY3Rl
ZCk7CiAKLSAgICBhdXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlPEVuY29kZXI+KFQ6OnJlY2VpdmVy
TmFtZSgpLCBUOjpuYW1lKCksIGRlc3RpbmF0aW9uSUQpOworICAgIGF1dG8gZW5jb2RlciA9IG1h
a2VVbmlxdWU8RW5jb2Rlcj4oVDo6bmFtZSgpLCBkZXN0aW5hdGlvbklEKTsKICAgICBlbmNvZGVy
LT5lbmNvZGUobWVzc2FnZS5hcmd1bWVudHMoKSk7CiAgICAgCiAgICAgcmV0dXJuIHNlbmRNZXNz
YWdlKFdURk1vdmUoZW5jb2RlciksIHNlbmRPcHRpb25zKTsKQEAgLTQ3Nyw3ICs0NzcsNyBAQCB2
b2lkIENvbm5lY3Rpb246OnNlbmRXaXRoQXN5bmNSZXBseShUJiYgCiB7CiAgICAgQ09NUElMRV9B
U1NFUlQoIVQ6OmlzU3luYywgQXN5bmNNZXNzYWdlRXhwZWN0ZWQpOwogCi0gICAgYXV0byBlbmNv
ZGVyID0gbWFrZVVuaXF1ZTxFbmNvZGVyPihUOjpyZWNlaXZlck5hbWUoKSwgVDo6bmFtZSgpLCBk
ZXN0aW5hdGlvbklEKTsKKyAgICBhdXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlPEVuY29kZXI+KFQ6
Om5hbWUoKSwgZGVzdGluYXRpb25JRCk7CiAgICAgdWludDY0X3QgbGlzdGVuZXJJRCA9IG5leHRB
c3luY1JlcGx5SGFuZGxlcklEKCk7CiAgICAgZW5jb2Rlci0+ZW5jb2RlKGxpc3RlbmVySUQpOwog
ICAgIGVuY29kZXItPmVuY29kZShtZXNzYWdlLmFyZ3VtZW50cygpKTsKQEAgLTUxNSw3ICs1MTUs
NyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29sIENvbm5lY3Rpb246OnNlCiAgICAgUkVMRUFT
RV9BU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAgdWludDY0X3Qgc3luY1JlcXVlc3RJ
RCA9IDA7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEVuY29kZXI+IGVuY29kZXIgPSBjcmVhdGVTeW5j
TWVzc2FnZUVuY29kZXIoVDo6cmVjZWl2ZXJOYW1lKCksIFQ6Om5hbWUoKSwgZGVzdGluYXRpb25J
RCwgc3luY1JlcXVlc3RJRCk7CisgICAgc3RkOjp1bmlxdWVfcHRyPEVuY29kZXI+IGVuY29kZXIg
PSBjcmVhdGVTeW5jTWVzc2FnZUVuY29kZXIoVDo6bmFtZSgpLCBkZXN0aW5hdGlvbklELCBzeW5j
UmVxdWVzdElEKTsKIAogICAgIGlmIChzZW5kU3luY09wdGlvbnMuY29udGFpbnMoU2VuZFN5bmNP
cHRpb246OlVzZUZ1bGx5U3luY2hyb25vdXNNb2RlRm9yVGVzdGluZykpIHsKICAgICAgICAgZW5j
b2Rlci0+c2V0RnVsbHlTeW5jaHJvbm91c01vZGVGb3JUZXN0aW5nKCk7CkBAIC01NDIsNyArNTQy
LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9vbCBDb25uZWN0aW9uOjpzZQogdGVtcGxhdGU8
dHlwZW5hbWUgVD4gYm9vbCBDb25uZWN0aW9uOjp3YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVs
eSh1aW50NjRfdCBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQsIE9wdGlvblNldDxXYWl0
Rm9yT3B0aW9uPiB3YWl0Rm9yT3B0aW9ucykKIHsKICAgICBSRUxFQVNFX0FTU0VSVChSdW5Mb29w
Ojppc01haW4oKSk7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IGRlY29kZXIgPSB3YWl0
Rm9yTWVzc2FnZShUOjpyZWNlaXZlck5hbWUoKSwgVDo6bmFtZSgpLCBkZXN0aW5hdGlvbklELCB0
aW1lb3V0LCB3YWl0Rm9yT3B0aW9ucyk7CisgICAgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IGRl
Y29kZXIgPSB3YWl0Rm9yTWVzc2FnZShUOjpuYW1lKCksIGRlc3RpbmF0aW9uSUQsIHRpbWVvdXQs
IHdhaXRGb3JPcHRpb25zKTsKICAgICBpZiAoIWRlY29kZXIpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIApJbmRleDogU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5jcHAJKHJldmlzaW9u
IDI2MTIzOCkKKysrIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC02Niw5ICs2Niw2IEBAIERlY29kZXI6OkRlY29kZXIoY29uc3QgdWludDhf
dCogYnVmZmVyLCAKICAgICBpZiAoIWRlY29kZShtX21lc3NhZ2VGbGFncykpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIGlmICghZGVjb2RlKG1fbWVzc2FnZVJlY2VpdmVyTmFtZSkpCi0gICAgICAg
IHJldHVybjsKLQogICAgIGlmICghZGVjb2RlKG1fbWVzc2FnZU5hbWUpKQogICAgICAgICByZXR1
cm47CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmgJKHJldmlzaW9uIDI2
MTIzOCkKKysrIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiQXJndW1lbnRDb2Rlci5oIgogI2lu
Y2x1ZGUgIkF0dGFjaG1lbnQuaCIKKyNpbmNsdWRlICJNZXNzYWdlTmFtZXMuaCIKICNpbmNsdWRl
ICJTdHJpbmdSZWZlcmVuY2UuaCIKICNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgogI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTUxLDggKzUyLDggQEAgcHVibGljOgogICAgIERlY29kZXIo
Y29uc3QgRGVjb2RlciYpID0gZGVsZXRlOwogICAgIERlY29kZXIoRGVjb2RlciYmKSA9IGRlbGV0
ZTsKIAotICAgIFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lKCkgY29uc3QgeyBy
ZXR1cm4gbV9tZXNzYWdlUmVjZWl2ZXJOYW1lOyB9Ci0gICAgU3RyaW5nUmVmZXJlbmNlIG1lc3Nh
Z2VOYW1lKCkgY29uc3QgeyByZXR1cm4gbV9tZXNzYWdlTmFtZTsgfQorICAgIFJlY2VpdmVyTmFt
ZSBtZXNzYWdlUmVjZWl2ZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gcmVjZWl2ZXJOYW1lKG1fbWVz
c2FnZU5hbWUpOyB9CisgICAgTWVzc2FnZU5hbWUgbWVzc2FnZU5hbWUoKSBjb25zdCB7IHJldHVy
biBtX21lc3NhZ2VOYW1lOyB9CiAgICAgdWludDY0X3QgZGVzdGluYXRpb25JRCgpIGNvbnN0IHsg
cmV0dXJuIG1fZGVzdGluYXRpb25JRDsgfQogCiAgICAgYm9vbCBpc1N5bmNNZXNzYWdlKCkgY29u
c3Q7CkBAIC0xMDYsNyArMTA3LDcgQEAgcHVibGljOgogICAgICAgICB0eXBlbmFtZSBzdGQ6OnVu
ZGVybHlpbmdfdHlwZTxFPjo6dHlwZSB2YWx1ZTsKICAgICAgICAgaWYgKCFkZWNvZGUodmFsdWUp
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBpZiAoIWlzVmFsaWRFbnVtPEU+
KHZhbHVlKSkKKyAgICAgICAgaWYgKCFXVEY6OmlzVmFsaWRFbnVtPEU+KHZhbHVlKSkKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICBlID0gc3RhdGljX2Nhc3Q8RT4odmFsdWUp
OwpAQCAtMTE4LDcgKzExOSw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIE9wdGlvbmFsPHR5
cGVuYW1lIHN0ZDo6dW5kZXJseWluZ190eXBlPEU+Ojp0eXBlPiB2YWx1ZTsKICAgICAgICAgKnRo
aXMgPj4gdmFsdWU7Ci0gICAgICAgIGlmICh2YWx1ZSAmJiBpc1ZhbGlkRW51bTxFPigqdmFsdWUp
KQorICAgICAgICBpZiAodmFsdWUgJiYgV1RGOjppc1ZhbGlkRW51bTxFPigqdmFsdWUpKQogICAg
ICAgICAgICAgb3B0aW9uYWwgPSBzdGF0aWNfY2FzdDxFPigqdmFsdWUpOwogICAgICAgICByZXR1
cm4gKnRoaXM7CiAgICAgfQpAQCAtMTk4LDggKzE5OSw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9y
PEF0dGFjaG1lbnQ+IG1fYXR0YWNobWVudHM7CiAKICAgICB1aW50OF90IG1fbWVzc2FnZUZsYWdz
OwotICAgIFN0cmluZ1JlZmVyZW5jZSBtX21lc3NhZ2VSZWNlaXZlck5hbWU7Ci0gICAgU3RyaW5n
UmVmZXJlbmNlIG1fbWVzc2FnZU5hbWU7CisgICAgTWVzc2FnZU5hbWUgbV9tZXNzYWdlTmFtZTsK
IAogICAgIHVpbnQ2NF90IG1fZGVzdGluYXRpb25JRDsKIApJbmRleDogU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvRW5jb2Rlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvRW5jb2Rlci5jcHAJKHJldmlzaW9uIDI2MTIzOCkKKysrIFNvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL0VuY29kZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MSw5ICs2MSw4IEBA
IHN0YXRpYyBpbmxpbmUgdm9pZCBmcmVlQnVmZmVyKHZvaWQqIGFkZHIKICNlbmRpZgogfQogCi1F
bmNvZGVyOjpFbmNvZGVyKFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBTdHJp
bmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpCi0gICAgOiBt
X21lc3NhZ2VSZWNlaXZlck5hbWUobWVzc2FnZVJlY2VpdmVyTmFtZSkKLSAgICAsIG1fbWVzc2Fn
ZU5hbWUobWVzc2FnZU5hbWUpCitFbmNvZGVyOjpFbmNvZGVyKE1lc3NhZ2VOYW1lIG1lc3NhZ2VO
YW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKQorICAgIDogbV9tZXNzYWdlTmFtZShtZXNzYWdl
TmFtZSkKICAgICAsIG1fZGVzdGluYXRpb25JRChkZXN0aW5hdGlvbklEKQogICAgICwgbV9idWZm
ZXIobV9pbmxpbmVCdWZmZXIpCiAgICAgLCBtX2J1ZmZlclBvaW50ZXIobV9pbmxpbmVCdWZmZXIp
CkBAIC0xNjgsMTAgKzE2Nyw3IEBAIHZvaWQgRW5jb2Rlcjo6cmVzZXJ2ZShzaXplX3Qgc2l6ZSkK
IAogdm9pZCBFbmNvZGVyOjplbmNvZGVIZWFkZXIoKQogewotICAgIEFTU0VSVCghbV9tZXNzYWdl
UmVjZWl2ZXJOYW1lLmlzRW1wdHkoKSk7Ci0KICAgICAqdGhpcyA8PCBkZWZhdWx0TWVzc2FnZUZs
YWdzOwotICAgICp0aGlzIDw8IG1fbWVzc2FnZVJlY2VpdmVyTmFtZTsKICAgICAqdGhpcyA8PCBt
X21lc3NhZ2VOYW1lOwogICAgICp0aGlzIDw8IG1fZGVzdGluYXRpb25JRDsKIH0KSW5kZXg6IFNv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0VuY29kZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9FbmNvZGVyLmgJKHJldmlzaW9uIDI2MTIzOCkKKysrIFNvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0VuY29kZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiAr
MjcsNyBAQAogCiAjaW5jbHVkZSAiQXJndW1lbnRDb2Rlci5oIgogI2luY2x1ZGUgIkF0dGFjaG1l
bnQuaCIKKyNpbmNsdWRlICJNZXNzYWdlTmFtZXMuaCIKICNpbmNsdWRlICJTdHJpbmdSZWZlcmVu
Y2UuaCIKICNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KQEAgLTM1LDE1ICszNiwxNiBAQCBuYW1lc3BhY2UgSVBDIHsKIAogY2xhc3MgRGF0YVJlZmVy
ZW5jZTsKIGVudW0gY2xhc3MgU2hvdWxkRGlzcGF0Y2hXaGVuV2FpdGluZ0ZvclN5bmNSZXBseTsK
K2VudW0gY2xhc3MgTWVzc2FnZU5hbWUgOiB1aW50MTZfdDsKIAogY2xhc3MgRW5jb2RlciBmaW5h
bCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgRW5jb2RlcihT
dHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgU3RyaW5nUmVmZXJlbmNlIG1lc3Nh
Z2VOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKTsKKyAgICBFbmNvZGVyKE1lc3NhZ2VOYW1l
LCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKTsKICAgICB+RW5jb2RlcigpOwogCi0gICAgU3RyaW5n
UmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUoKSBjb25zdCB7IHJldHVybiBtX21lc3NhZ2VS
ZWNlaXZlck5hbWU7IH0KLSAgICBTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUoKSBjb25zdCB7
IHJldHVybiBtX21lc3NhZ2VOYW1lOyB9CisgICAgUmVjZWl2ZXJOYW1lIG1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSBjb25zdCB7IHJldHVybiByZWNlaXZlck5hbWUobV9tZXNzYWdlTmFtZSk7IH0KKyAg
ICBNZXNzYWdlTmFtZSBtZXNzYWdlTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWVzc2FnZU5hbWU7
IH0KICAgICB1aW50NjRfdCBkZXN0aW5hdGlvbklEKCkgY29uc3QgeyByZXR1cm4gbV9kZXN0aW5h
dGlvbklEOyB9CiAKICAgICB2b2lkIHNldElzU3luY01lc3NhZ2UoYm9vbCk7CkBAIC0xMTIsMTQg
KzExNCwxMyBAQCBwcml2YXRlOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEU+CiAgICAgYXV0byBl
bmNvZGUoRSB2YWx1ZSkgLT4gc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2VudW08RT46OnZhbHVl
PgogICAgIHsKLSAgICAgICAgQVNTRVJUKGlzVmFsaWRFbnVtPEU+KHN0YXRpY19jYXN0PHR5cGVu
YW1lIHN0ZDo6dW5kZXJseWluZ190eXBlPEU+Ojp0eXBlPih2YWx1ZSkpKTsKKyAgICAgICAgQVNT
RVJUKFdURjo6aXNWYWxpZEVudW08RT4oc3RhdGljX2Nhc3Q8dHlwZW5hbWUgc3RkOjp1bmRlcmx5
aW5nX3R5cGU8RT46OnR5cGU+KHZhbHVlKSkpOwogICAgICAgICBlbmNvZGUoc3RhdGljX2Nhc3Q8
dHlwZW5hbWUgc3RkOjp1bmRlcmx5aW5nX3R5cGU8RT46OnR5cGU+KHZhbHVlKSk7CiAgICAgfQog
CiAgICAgdm9pZCBlbmNvZGVIZWFkZXIoKTsKIAotICAgIFN0cmluZ1JlZmVyZW5jZSBtX21lc3Nh
Z2VSZWNlaXZlck5hbWU7Ci0gICAgU3RyaW5nUmVmZXJlbmNlIG1fbWVzc2FnZU5hbWU7CisgICAg
TWVzc2FnZU5hbWUgbV9tZXNzYWdlTmFtZTsKICAgICB1aW50NjRfdCBtX2Rlc3RpbmF0aW9uSUQ7
CiAKICAgICB1aW50OF90IG1faW5saW5lQnVmZmVyWzUxMl07CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9IYW5kbGVNZXNzYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oCShyZXZpc2lvbiAyNjEyMzgpCisrKyBTb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9IYW5kbGVNZXNzYWdlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTE3Niw3ICsxNzYsNyBAQCB2b2lkIGhhbmRsZU1lc3NhZ2VBc3luYyhDb25uZWN0aW9uJiBjb25u
CiAgICAgfQogCiAgICAgdHlwZW5hbWUgVDo6QXN5bmNSZXBseSBjb21wbGV0aW9uSGFuZGxlciA9
IFtsaXN0ZW5lcklEID0gKmxpc3RlbmVySUQsIGNvbm5lY3Rpb24gPSBtYWtlUmVmKGNvbm5lY3Rp
b24pXSAoYXV0byYmLi4uIGFyZ3MpIG11dGFibGUgewotICAgICAgICBhdXRvIGVuY29kZXIgPSBt
YWtlVW5pcXVlPEVuY29kZXI+KCJBc3luY1JlcGx5IiwgVDo6YXN5bmNNZXNzYWdlUmVwbHlOYW1l
KCksIDApOworICAgICAgICBhdXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlPEVuY29kZXI+KFQ6OmFz
eW5jTWVzc2FnZVJlcGx5TmFtZSgpLCAwKTsKICAgICAgICAgKmVuY29kZXIgPDwgbGlzdGVuZXJJ
RDsKICAgICAgICAgVDo6c2VuZChXVEZNb3ZlKGVuY29kZXIpLCBXVEZNb3ZlKGNvbm5lY3Rpb24p
LCBhcmdzLi4uKTsKICAgICB9OwpJbmRleDogU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVz
c2FnZVJlY2VpdmVyTWFwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9NZXNzYWdlUmVjZWl2ZXJNYXAuY3BwCShyZXZpc2lvbiAyNjEyMzgpCisrKyBTb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlUmVjZWl2ZXJNYXAuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zOSw3ICszOSw3IEBAIE1lc3NhZ2VSZWNlaXZlck1hcDo6fk1lc3NhZ2VSZWNlaXZlck1h
cCgKIHsKIH0KIAotdm9pZCBNZXNzYWdlUmVjZWl2ZXJNYXA6OmFkZE1lc3NhZ2VSZWNlaXZlcihT
dHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgTWVzc2FnZVJlY2VpdmVyJiBtZXNz
YWdlUmVjZWl2ZXIpCit2b2lkIE1lc3NhZ2VSZWNlaXZlck1hcDo6YWRkTWVzc2FnZVJlY2VpdmVy
KFJlY2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBNZXNzYWdlUmVjZWl2ZXImIG1lc3Nh
Z2VSZWNlaXZlcikKIHsKICAgICBBU1NFUlQoIW1fZ2xvYmFsTWVzc2FnZVJlY2VpdmVycy5jb250
YWlucyhtZXNzYWdlUmVjZWl2ZXJOYW1lKSk7CiAKQEAgLTQ3LDcgKzQ3LDcgQEAgdm9pZCBNZXNz
YWdlUmVjZWl2ZXJNYXA6OmFkZE1lc3NhZ2VSZWNlaQogICAgIG1fZ2xvYmFsTWVzc2FnZVJlY2Vp
dmVycy5zZXQobWVzc2FnZVJlY2VpdmVyTmFtZSwgJm1lc3NhZ2VSZWNlaXZlcik7CiB9CiAKLXZv
aWQgTWVzc2FnZVJlY2VpdmVyTWFwOjphZGRNZXNzYWdlUmVjZWl2ZXIoU3RyaW5nUmVmZXJlbmNl
IG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIE1lc3NhZ2VSZWNl
aXZlciYgbWVzc2FnZVJlY2VpdmVyKQordm9pZCBNZXNzYWdlUmVjZWl2ZXJNYXA6OmFkZE1lc3Nh
Z2VSZWNlaXZlcihSZWNlaXZlck5hbWUgbWVzc2FnZVJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVz
dGluYXRpb25JRCwgTWVzc2FnZVJlY2VpdmVyJiBtZXNzYWdlUmVjZWl2ZXIpCiB7CiAgICAgQVNT
RVJUKGRlc3RpbmF0aW9uSUQpOwogICAgIEFTU0VSVCghbV9tZXNzYWdlUmVjZWl2ZXJzLmNvbnRh
aW5zKHN0ZDo6bWFrZV9wYWlyKG1lc3NhZ2VSZWNlaXZlck5hbWUsIGRlc3RpbmF0aW9uSUQpKSk7
CkBAIC01Nyw3ICs1Nyw3IEBAIHZvaWQgTWVzc2FnZVJlY2VpdmVyTWFwOjphZGRNZXNzYWdlUmVj
ZWkKICAgICBtX21lc3NhZ2VSZWNlaXZlcnMuc2V0KHN0ZDo6bWFrZV9wYWlyKG1lc3NhZ2VSZWNl
aXZlck5hbWUsIGRlc3RpbmF0aW9uSUQpLCAmbWVzc2FnZVJlY2VpdmVyKTsKIH0KIAotdm9pZCBN
ZXNzYWdlUmVjZWl2ZXJNYXA6OnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihTdHJpbmdSZWZlcmVuY2Ug
bWVzc2FnZVJlY2VpdmVyTmFtZSkKK3ZvaWQgTWVzc2FnZVJlY2VpdmVyTWFwOjpyZW1vdmVNZXNz
YWdlUmVjZWl2ZXIoUmVjZWl2ZXJOYW1lIG1lc3NhZ2VSZWNlaXZlck5hbWUpCiB7CiAgICAgQVNT
RVJUKG1fZ2xvYmFsTWVzc2FnZVJlY2VpdmVycy5jb250YWlucyhtZXNzYWdlUmVjZWl2ZXJOYW1l
KSk7CiAKQEAgLTY3LDcgKzY3LDcgQEAgdm9pZCBNZXNzYWdlUmVjZWl2ZXJNYXA6OnJlbW92ZU1l
c3NhZ2VSZQogICAgIG1fZ2xvYmFsTWVzc2FnZVJlY2VpdmVycy5yZW1vdmUoaXQpOwogfQogCi12
b2lkIE1lc3NhZ2VSZWNlaXZlck1hcDo6cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKFN0cmluZ1JlZmVy
ZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKQordm9pZCBN
ZXNzYWdlUmVjZWl2ZXJNYXA6OnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihSZWNlaXZlck5hbWUgbWVz
c2FnZVJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCkKIHsKICAgICBBU1NFUlQo
bV9tZXNzYWdlUmVjZWl2ZXJzLmNvbnRhaW5zKHN0ZDo6bWFrZV9wYWlyKG1lc3NhZ2VSZWNlaXZl
ck5hbWUsIGRlc3RpbmF0aW9uSUQpKSk7CiAKQEAgLTc5LDcgKzc5LDcgQEAgdm9pZCBNZXNzYWdl
UmVjZWl2ZXJNYXA6OnJlbW92ZU1lc3NhZ2VSZQogCiB2b2lkIE1lc3NhZ2VSZWNlaXZlck1hcDo6
cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VSZWNlaXZlciYgbWVzc2FnZVJlY2VpdmVyKQog
ewotICAgIFZlY3RvcjxTdHJpbmdSZWZlcmVuY2U+IGdsb2JhbFJlY2VpdmVyc1RvUmVtb3ZlOwor
ICAgIFZlY3RvcjxSZWNlaXZlck5hbWU+IGdsb2JhbFJlY2VpdmVyc1RvUmVtb3ZlOwogICAgIGZv
ciAoYXV0byYgW25hbWUsIHJlY2VpdmVyXSA6IG1fZ2xvYmFsTWVzc2FnZVJlY2VpdmVycykgewog
ICAgICAgICBpZiAocmVjZWl2ZXIgPT0gJm1lc3NhZ2VSZWNlaXZlcikKICAgICAgICAgICAgIGds
b2JhbFJlY2VpdmVyc1RvUmVtb3ZlLmFwcGVuZChuYW1lKTsKQEAgLTg4LDcgKzg4LDcgQEAgdm9p
ZCBNZXNzYWdlUmVjZWl2ZXJNYXA6OnJlbW92ZU1lc3NhZ2VSZQogICAgIGZvciAoYXV0byYgZ2xv
YmFsUmVjZWl2ZXJUb1JlbW92ZSA6IGdsb2JhbFJlY2VpdmVyc1RvUmVtb3ZlKQogICAgICAgICBy
ZW1vdmVNZXNzYWdlUmVjZWl2ZXIoZ2xvYmFsUmVjZWl2ZXJUb1JlbW92ZSk7CiAKLSAgICBWZWN0
b3I8c3RkOjpwYWlyPFN0cmluZ1JlZmVyZW5jZSwgdWludDY0X3Q+PiByZWNlaXZlcnNUb1JlbW92
ZTsKKyAgICBWZWN0b3I8c3RkOjpwYWlyPFJlY2VpdmVyTmFtZSwgdWludDY0X3Q+PiByZWNlaXZl
cnNUb1JlbW92ZTsKICAgICBmb3IgKGF1dG8mIFtuYW1lQW5kRGVzdGluYXRpb25JRCwgcmVjZWl2
ZXJdIDogbV9tZXNzYWdlUmVjZWl2ZXJzKSB7CiAgICAgICAgIGlmIChyZWNlaXZlciA9PSAmbWVz
c2FnZVJlY2VpdmVyKQogICAgICAgICAgICAgcmVjZWl2ZXJzVG9SZW1vdmUuYXBwZW5kKHN0ZDo6
bWFrZV9wYWlyKG5hbWVBbmREZXN0aW5hdGlvbklELmZpcnN0LCBuYW1lQW5kRGVzdGluYXRpb25J
RC5zZWNvbmQpKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VSZWNl
aXZlck1hcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3Nh
Z2VSZWNlaXZlck1hcC5oCShyZXZpc2lvbiAyNjEyMzgpCisrKyBTb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9NZXNzYWdlUmVjZWl2ZXJNYXAuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsOCArMjMs
NyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYg
TWVzc2FnZVJlY2VpdmVyTWFwX2gKLSNkZWZpbmUgTWVzc2FnZVJlY2VpdmVyTWFwX2gKKyNwcmFn
bWEgb25jZQogCiAjaW5jbHVkZSAiU3RyaW5nUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KQEAgLTM2LDE3ICszNSwxOCBAQCBjbGFzcyBDb25uZWN0aW9uOwogY2xhc3MgRW5j
b2RlcjsKIGNsYXNzIERlY29kZXI7CiBjbGFzcyBNZXNzYWdlUmVjZWl2ZXI7CitlbnVtIGNsYXNz
IFJlY2VpdmVyTmFtZSA6IHVpbnQ4X3Q7CiAKIGNsYXNzIE1lc3NhZ2VSZWNlaXZlck1hcCB7CiBw
dWJsaWM6CiAgICAgTWVzc2FnZVJlY2VpdmVyTWFwKCk7CiAgICAgfk1lc3NhZ2VSZWNlaXZlck1h
cCgpOwogCi0gICAgdm9pZCBhZGRNZXNzYWdlUmVjZWl2ZXIoU3RyaW5nUmVmZXJlbmNlIG1lc3Nh
Z2VSZWNlaXZlck5hbWUsIE1lc3NhZ2VSZWNlaXZlciYpOwotICAgIHZvaWQgYWRkTWVzc2FnZVJl
Y2VpdmVyKFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0
aW5hdGlvbklELCBNZXNzYWdlUmVjZWl2ZXImKTsKKyAgICB2b2lkIGFkZE1lc3NhZ2VSZWNlaXZl
cihSZWNlaXZlck5hbWUsIE1lc3NhZ2VSZWNlaXZlciYpOworICAgIHZvaWQgYWRkTWVzc2FnZVJl
Y2VpdmVyKFJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgTWVzc2FnZVJlY2Vp
dmVyJik7CiAKLSAgICB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihTdHJpbmdSZWZlcmVuY2Ug
bWVzc2FnZVJlY2VpdmVyTmFtZSk7Ci0gICAgdm9pZCByZW1vdmVNZXNzYWdlUmVjZWl2ZXIoU3Ry
aW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQp
OworICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKFJlY2VpdmVyTmFtZSk7CisgICAgdm9p
ZCByZW1vdmVNZXNzYWdlUmVjZWl2ZXIoUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlv
bklEKTsKICAgICB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlUmVjZWl2ZXImKTsK
IAogICAgIHZvaWQgaW52YWxpZGF0ZSgpOwpAQCAtNTYsMTEgKzU2LDE4IEBAIHB1YmxpYzoKIAog
cHJpdmF0ZToKICAgICAvLyBNZXNzYWdlIHJlY2VpdmVycyB0aGF0IGRvbid0IHJlcXVpcmUgYSBk
ZXN0aW5hdGlvbiBJRC4KLSAgICBIYXNoTWFwPFN0cmluZ1JlZmVyZW5jZSwgTWVzc2FnZVJlY2Vp
dmVyKj4gbV9nbG9iYWxNZXNzYWdlUmVjZWl2ZXJzOworICAgIEhhc2hNYXA8UmVjZWl2ZXJOYW1l
LCBNZXNzYWdlUmVjZWl2ZXIqLCBXVEY6OkludEhhc2g8UmVjZWl2ZXJOYW1lPiwgV1RGOjpTdHJv
bmdFbnVtSGFzaFRyYWl0czxSZWNlaXZlck5hbWU+PiBtX2dsb2JhbE1lc3NhZ2VSZWNlaXZlcnM7
CiAKLSAgICBIYXNoTWFwPHN0ZDo6cGFpcjxTdHJpbmdSZWZlcmVuY2UsIHVpbnQ2NF90PiwgTWVz
c2FnZVJlY2VpdmVyKj4gbV9tZXNzYWdlUmVjZWl2ZXJzOworICAgIEhhc2hNYXA8c3RkOjpwYWly
PFJlY2VpdmVyTmFtZSwgdWludDY0X3Q+LCBNZXNzYWdlUmVjZWl2ZXIqLCBEZWZhdWx0SGFzaDxz
dGQ6OnBhaXI8UmVjZWl2ZXJOYW1lLCB1aW50NjRfdD4+OjpIYXNoLCBQYWlySGFzaFRyYWl0czxX
VEY6OlN0cm9uZ0VudW1IYXNoVHJhaXRzPFJlY2VpdmVyTmFtZT4sIEhhc2hUcmFpdHM8dWludDY0
X3Q+Pj4gbV9tZXNzYWdlUmVjZWl2ZXJzOwogfTsKIAogfTsKIAotI2VuZGlmIC8vIE1lc3NhZ2VS
ZWNlaXZlck1hcF9oCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3Ry
dWN0IERlZmF1bHRIYXNoOwordGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8SVBDOjpSZWNl
aXZlck5hbWU+IHsKKyAgICB1c2luZyBIYXNoID0gSW50SGFzaDxJUEM6OlJlY2VpdmVyTmFtZT47
Cit9OworCit9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRl
ci5oCShyZXZpc2lvbiAyNjEyMzgpCisrKyBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNz
YWdlU2VuZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogICAg
IHsKICAgICAgICAgc3RhdGljX2Fzc2VydCghVTo6aXNTeW5jLCAiTWVzc2FnZSBpcyBzeW5jISIp
OwogCi0gICAgICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWU8RW5jb2Rlcj4oVTo6cmVjZWl2
ZXJOYW1lKCksIFU6Om5hbWUoKSwgZGVzdGluYXRpb25JRCk7CisgICAgICAgIGF1dG8gZW5jb2Rl
ciA9IG1ha2VVbmlxdWU8RW5jb2Rlcj4oVTo6bmFtZSgpLCBkZXN0aW5hdGlvbklEKTsKICAgICAg
ICAgZW5jb2Rlci0+ZW5jb2RlKG1lc3NhZ2UuYXJndW1lbnRzKCkpOwogICAgICAgICAKICAgICAg
ICAgcmV0dXJuIHNlbmRNZXNzYWdlKFdURk1vdmUoZW5jb2RlciksIHNlbmRPcHRpb25zKTsKQEAg
LTg4LDcgKzg4LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgQ09NUElMRV9BU1NFUlQoIVQ6
OmlzU3luYywgQXN5bmNNZXNzYWdlRXhwZWN0ZWQpOwogCi0gICAgICAgIGF1dG8gZW5jb2RlciA9
IG1ha2VVbmlxdWU8SVBDOjpFbmNvZGVyPihUOjpyZWNlaXZlck5hbWUoKSwgVDo6bmFtZSgpLCBk
ZXN0aW5hdGlvbklEKTsKKyAgICAgICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZTxJUEM6OkVu
Y29kZXI+KFQ6Om5hbWUoKSwgZGVzdGluYXRpb25JRCk7CiAgICAgICAgIHVpbnQ2NF90IGxpc3Rl
bmVySUQgPSBJUEM6Om5leHRBc3luY1JlcGx5SGFuZGxlcklEKCk7CiAgICAgICAgIGVuY29kZXIt
PmVuY29kZShsaXN0ZW5lcklEKTsKICAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKG1lc3NhZ2UuYXJn
dW1lbnRzKCkpOwpJbmRleDogU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvQ29ubmVj
dGlvbkNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2Nv
Y29hL0Nvbm5lY3Rpb25Db2NvYS5tbQkocmV2aXNpb24gMjYxMjM4KQorKysgU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvY29jb2EvQ29ubmVjdGlvbkNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0yMTQsNyArMjE0LDcgQEAgYm9vbCBDb25uZWN0aW9uOjpvcGVuKCkKICAgICAgICAgbV9pc0Nv
bm5lY3RlZCA9IHRydWU7CiAgICAgICAgIAogICAgICAgICAvLyBTZW5kIHRoZSBpbml0aWFsaXpl
IG1lc3NhZ2UsIHdoaWNoIGNvbnRhaW5zIGEgc2VuZCByaWdodCBmb3IgdGhlIHNlcnZlciB0byB1
c2UuCi0gICAgICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWU8RW5jb2Rlcj4oIklQQyIsICJJ
bml0aWFsaXplQ29ubmVjdGlvbiIsIDApOworICAgICAgICBhdXRvIGVuY29kZXIgPSBtYWtlVW5p
cXVlPEVuY29kZXI+KE1lc3NhZ2VOYW1lOjpJbml0aWFsaXplQ29ubmVjdGlvbiwgMCk7CiAgICAg
ICAgIGVuY29kZXItPmVuY29kZShNYWNoUG9ydChtX3JlY2VpdmVQb3J0LCBNQUNIX01TR19UWVBF
X01BS0VfU0VORCkpOwogCiAgICAgICAgIGluaXRpYWxpemVTZW5kU291cmNlKCk7CkBAIC0yNzMs
NyArMjczLDcgQEAgYm9vbCBDb25uZWN0aW9uOjpzZW5kTWVzc2FnZShzdGQ6OnVuaXF1ZQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBkZWZhdWx0OgotICAgICAgICBDU3RyaW5nIG1lc3Nh
Z2VOYW1lID0gbWFrZVN0cmluZyhtZXNzYWdlLT5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkuZGF0YSgp
LCAiOjoiLCBtZXNzYWdlLT5tZXNzYWdlTmFtZSgpLmRhdGEoKSkudXRmOCgpOworICAgICAgICBD
U3RyaW5nIG1lc3NhZ2VOYW1lKGRlc2NyaXB0aW9uKG1lc3NhZ2UtPm1lc3NhZ2VOYW1lKCkpKTsK
ICAgICAgICAgV2ViS2l0OjpzZXRDcmFzaFJlcG9ydEFwcGxpY2F0aW9uU3BlY2lmaWNJbmZvcm1h
dGlvbigoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJV
bmhhbmRsZWQgZXJyb3IgY29kZSAleCwgbWVzc2FnZSAnJXMnLCBoYXNoICVkIiwga3IsIG1lc3Nh
Z2VOYW1lLmRhdGEoKSwgbWVzc2FnZU5hbWUuaGFzaCgpXSk7CiAgICAgICAgIENSQVNIX1dJVEhf
SU5GTyhrciwgbWVzc2FnZU5hbWUuaGFzaCgpKTsKICAgICB9CkBAIC0zMDgsNyArMzA4LDcgQEAg
Ym9vbCBDb25uZWN0aW9uOjpzZW5kT3V0Z29pbmdNZXNzYWdlKHN0ZAogICAgIH0KIAogICAgIHNp
emVfdCBzYWZlTWVzc2FnZVNpemUgPSBtZXNzYWdlU2l6ZS51bnNhZmVHZXQoKTsKLSAgICBhdXRv
IG1lc3NhZ2UgPSBNYWNoTWVzc2FnZTo6Y3JlYXRlKGVuY29kZXItPm1lc3NhZ2VSZWNlaXZlck5h
bWUoKS50b1N0cmluZygpLCBlbmNvZGVyLT5tZXNzYWdlTmFtZSgpLnRvU3RyaW5nKCksIHNhZmVN
ZXNzYWdlU2l6ZSk7CisgICAgYXV0byBtZXNzYWdlID0gTWFjaE1lc3NhZ2U6OmNyZWF0ZShlbmNv
ZGVyLT5tZXNzYWdlTmFtZSgpLCBzYWZlTWVzc2FnZVNpemUpOwogICAgIGlmICghbWVzc2FnZSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC01MzMsNyArNTMzLDcgQEAgdm9pZCBDb25uZWN0
aW9uOjpyZWNlaXZlU291cmNlRXZlbnRIYW5kbAogICAgIGRlY29kZXItPnNldEltcG9ydGFuY2VB
c3NlcnRpb24obWFrZVVuaXF1ZTxJbXBvcnRhbmNlQXNzZXJ0aW9uPihoZWFkZXIpKTsKICNlbmRp
ZgogCi0gICAgaWYgKGRlY29kZXItPm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSAiSVBDIiAmJiBk
ZWNvZGVyLT5tZXNzYWdlTmFtZSgpID09ICJJbml0aWFsaXplQ29ubmVjdGlvbiIpIHsKKyAgICBp
ZiAoZGVjb2Rlci0+bWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlTmFtZTo6SW5pdGlhbGl6ZUNvbm5l
Y3Rpb24pIHsKICAgICAgICAgQVNTRVJUKG1faXNTZXJ2ZXIpOwogICAgICAgICBBU1NFUlQoIW1f
aXNDb25uZWN0ZWQpOwogICAgICAgICBBU1NFUlQoIW1fc2VuZFBvcnQpOwpJbmRleDogU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvTWFjaE1lc3NhZ2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL01hY2hNZXNzYWdlLmNwcAkocmV2aXNp
b24gMjYxMjM4KQorKysgU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvTWFjaE1lc3Nh
Z2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwxOCArMzksMTcgQEAgc3RhdGljIGlubGluZSBD
aGVja2VkU2l6ZSBzYWZlUm91bmRNc2coQwogICAgIHJldHVybiAoKHZhbHVlICsgKGFsaWdubWVu
dCAtIDEpKSAvIGFsaWdubWVudCkgKiBhbGlnbm1lbnQ7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxN
YWNoTWVzc2FnZT4gTWFjaE1lc3NhZ2U6OmNyZWF0ZShDU3RyaW5nJiYgbWVzc2FnZVJlY2VpdmVy
TmFtZSwgQ1N0cmluZyYmIG1lc3NhZ2VOYW1lLCBzaXplX3Qgc2l6ZSkKK3N0ZDo6dW5pcXVlX3B0
cjxNYWNoTWVzc2FnZT4gTWFjaE1lc3NhZ2U6OmNyZWF0ZShNZXNzYWdlTmFtZSBtZXNzYWdlTmFt
ZSwgc2l6ZV90IHNpemUpCiB7CiAgICAgYXV0byBidWZmZXJTaXplID0gQ2hlY2tlZFNpemUoc2l6
ZW9mKE1hY2hNZXNzYWdlKSkgKyBzaXplOwogICAgIGlmIChidWZmZXJTaXplLmhhc092ZXJmbG93
ZWQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgdm9pZCogbWVtb3J5ID0gV1RGOjpm
YXN0WmVyb2VkTWFsbG9jKGJ1ZmZlclNpemUudW5zYWZlR2V0KCkpOwotICAgIHJldHVybiBzdGQ6
OnVuaXF1ZV9wdHI8TWFjaE1lc3NhZ2U+IHsgbmV3IChOb3ROdWxsLCBtZW1vcnkpIE1hY2hNZXNz
YWdlIHsgV1RGTW92ZShtZXNzYWdlUmVjZWl2ZXJOYW1lKSwgV1RGTW92ZShtZXNzYWdlTmFtZSks
IHNpemUgfSB9OworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8TWFjaE1lc3NhZ2U+IHsgbmV3
IChOb3ROdWxsLCBtZW1vcnkpIE1hY2hNZXNzYWdlIHsgbWVzc2FnZU5hbWUsIHNpemUgfSB9Owog
fQogCi1NYWNoTWVzc2FnZTo6TWFjaE1lc3NhZ2UoQ1N0cmluZyYmIG1lc3NhZ2VSZWNlaXZlck5h
bWUsIENTdHJpbmcmJiBtZXNzYWdlTmFtZSwgc2l6ZV90IHNpemUpCi0gICAgOiBtX21lc3NhZ2VS
ZWNlaXZlck5hbWUoV1RGTW92ZShtZXNzYWdlUmVjZWl2ZXJOYW1lKSkKLSAgICAsIG1fbWVzc2Fn
ZU5hbWUoV1RGTW92ZShtZXNzYWdlTmFtZSkpCitNYWNoTWVzc2FnZTo6TWFjaE1lc3NhZ2UoTWVz
c2FnZU5hbWUgbWVzc2FnZU5hbWUsIHNpemVfdCBzaXplKQorICAgIDogbV9tZXNzYWdlTmFtZSB7
IG1lc3NhZ2VOYW1lIH0KICAgICAsIG1fc2l6ZSB7IHNpemUgfQogewogfQpJbmRleDogU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvTWFjaE1lc3NhZ2UuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9NYWNoTWVzc2FnZS5oCShyZXZpc2lvbiAy
NjEyMzgpCisrKyBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9NYWNoTWVzc2FnZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBQTEFURk9STShDT0NPQSkK
IAorI2luY2x1ZGUgIk1lc3NhZ2VOYW1lcy5oIgogI2luY2x1ZGUgPG1hY2gvbWVzc2FnZS5oPgog
I2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KQEAg
LTM3LDcgKzM4LDcgQEAgbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBNYWNoTWVzc2FnZSB7CiAgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVl
X3B0cjxNYWNoTWVzc2FnZT4gY3JlYXRlKENTdHJpbmcmJiBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBD
U3RyaW5nJiYgbWVzc2FnZU5hbWUsIHNpemVfdCk7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxNYWNoTWVzc2FnZT4gY3JlYXRlKE1lc3NhZ2VOYW1lLCBzaXplX3QpOwogICAgIH5NYWNoTWVz
c2FnZSgpOwogCiAgICAgc3RhdGljIENoZWNrZWRTaXplIG1lc3NhZ2VTaXplKHNpemVfdCBib2R5
U2l6ZSwgc2l6ZV90IHBvcnREZXNjcmlwdG9yQ291bnQsIHNpemVfdCBtZW1vcnlEZXNjcmlwdG9y
Q291bnQpOwpAQCAtNDcsMTQgKzQ4LDEzIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgbGVha0Rlc2Ny
aXB0b3JzKCk7CiAKLSAgICBjb25zdCBDU3RyaW5nJiBtZXNzYWdlUmVjZWl2ZXJOYW1lKCkgY29u
c3QgeyByZXR1cm4gbV9tZXNzYWdlUmVjZWl2ZXJOYW1lOyB9Ci0gICAgY29uc3QgQ1N0cmluZyYg
bWVzc2FnZU5hbWUoKSBjb25zdCB7IHJldHVybiBtX21lc3NhZ2VOYW1lOyB9CisgICAgUmVjZWl2
ZXJOYW1lIG1lc3NhZ2VSZWNlaXZlck5hbWUoKSBjb25zdCB7IHJldHVybiByZWNlaXZlck5hbWUo
bV9tZXNzYWdlTmFtZSk7IH0KKyAgICBNZXNzYWdlTmFtZSBtZXNzYWdlTmFtZSgpIGNvbnN0IHsg
cmV0dXJuIG1fbWVzc2FnZU5hbWU7IH0KIAogcHJpdmF0ZToKLSAgICBNYWNoTWVzc2FnZShDU3Ry
aW5nJiYgbWVzc2FnZVJlY2VpdmVyTmFtZSwgQ1N0cmluZyYmIG1lc3NhZ2VOYW1lLCBzaXplX3Qp
OworICAgIE1hY2hNZXNzYWdlKE1lc3NhZ2VOYW1lLCBzaXplX3QpOwogCi0gICAgQ1N0cmluZyBt
X21lc3NhZ2VSZWNlaXZlck5hbWU7Ci0gICAgQ1N0cmluZyBtX21lc3NhZ2VOYW1lOworICAgIE1l
c3NhZ2VOYW1lIG1fbWVzc2FnZU5hbWU7CiAgICAgc2l6ZV90IG1fc2l6ZTsKICAgICBib29sIG1f
c2hvdWxkRnJlZURlc2NyaXB0b3JzIHsgdHJ1ZSB9OwogICAgIG1hY2hfbXNnX2hlYWRlcl90IG1f
bWVzc2FnZUhlYWRlcltdOwpJbmRleDogU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1dlYlBy
b2Nlc3NDb25uZWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1BsdWdpblBy
b2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCShyZXZpc2lvbiAyNjEyMzgpCisrKyBTb3Vy
Y2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yMDUsNyArMjA1LDcgQEAgdm9pZCBXZWJQcm9jZXNzQ29ubmVjdGlvbjo6ZGVz
dHJveVBsdWdpbgogICAgIGRlc3Ryb3lQbHVnaW5Db250cm9sbGVyUHJveHkocGx1Z2luQ29udHJv
bGxlclByb3h5KTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZUlu
dmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6U3RyaW5nUmVmZXJlbmNlLCBJUEM6
OlN0cmluZ1JlZmVyZW5jZSkKK3ZvaWQgV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVJ
bnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VOYW1lKQogewogICAg
IC8vIEZJWE1FOiBJbXBsZW1lbnQuCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nl
c3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1Bs
dWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uaAkocmV2aXNpb24gMjYxMjM4KQorKysg
U291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmgJKHdvcmtp
bmcgY29weSkKQEAgLTY0LDcgKzY0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwogICAgIHZv
aWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYs
IHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRD
bG9zZShJUEM6OkNvbm5lY3Rpb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVJbnZh
bGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdl
UmVjZWl2ZXJOYW1lLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZSkgb3ZlcnJpZGU7
CisgICAgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBD
OjpNZXNzYWdlTmFtZSkgb3ZlcnJpZGU7CiAKICAgICAvLyBNZXNzYWdlIGhhbmRsZXJzLgogICAg
IHZvaWQgZGlkUmVjZWl2ZVdlYlByb2Nlc3NDb25uZWN0aW9uTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mLCBJUEM6OkRlY29kZXImKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy9NYWtlZmls
ZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvTWFrZWZpbGUJKHJldmlzaW9u
IDI2MTIzOCkKKysrIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy9NYWtlZmlsZQkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDIgQEAKIGFsbDoKLQlweXRob24gLi9nZW5lcmF0ZS1tZXNzYWdlLXJlY2Vp
dmVyLnB5IHdlYmtpdC90ZXN0LXN1cGVyY2xhc3MtbWVzc2FnZXMuaW4gLS1pbXBsZW1lbnRhdGlv
biB3ZWJraXQvTWVzc2FnZVJlY2VpdmVyU3VwZXJjbGFzcy1leHBlY3RlZC5jcHAgLS1oZWFkZXIg
d2Via2l0L01lc3NhZ2VzU3VwZXJjbGFzcy1leHBlY3RlZC5oIC0tcmVwbHktaGVhZGVyIHdlYmtp
dC9NZXNzYWdlc1JlcGxpZXNTdXBlcmNsYXNzUmVwbGllcy1leHBlY3RlZC5oCi0JcHl0aG9uIC4v
Z2VuZXJhdGUtbWVzc2FnZS1yZWNlaXZlci5weSB3ZWJraXQvdGVzdC1sZWdhY3ktbWVzc2FnZXMu
aW4gLS1pbXBsZW1lbnRhdGlvbiB3ZWJraXQvTGVnYWN5TWVzc2FnZVJlY2VpdmVyLWV4cGVjdGVk
LmNwcCAtLWhlYWRlciB3ZWJraXQvTGVnYWN5TWVzc2FnZXMtZXhwZWN0ZWQuaCAtLXJlcGx5LWhl
YWRlciB3ZWJraXQvTGVnYWN5TWVzc2FnZXNSZXBsaWVzLWV4cGVjdGVkLmgKLQlweXRob24gLi9n
ZW5lcmF0ZS1tZXNzYWdlLXJlY2VpdmVyLnB5IHdlYmtpdC90ZXN0LW1lc3NhZ2VzLmluIC0taW1w
bGVtZW50YXRpb24gd2Via2l0L01lc3NhZ2VSZWNlaXZlci1leHBlY3RlZC5jcHAgLS1oZWFkZXIg
d2Via2l0L01lc3NhZ2VzLWV4cGVjdGVkLmggLS1yZXBseS1oZWFkZXIgd2Via2l0L01lc3NhZ2Vz
UmVwbGllcy1leHBlY3RlZC5oCi0KKwlweXRob24gZ2VuZXJhdGUtbWVzc2FnZS1yZWNlaXZlci5w
eSB3ZWJraXQgdGVzdC1zdXBlcmNsYXNzIHRlc3QtbGVnYWN5IHRlc3QKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvU2NyaXB0cy9NZXNzYWdlTmFtZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvU2NyaXB0cy9NZXNzYWdlTmFtZXMuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJL
aXQvU2NyaXB0cy9NZXNzYWdlTmFtZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzAz
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UgorICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSCisgKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorICogT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk1l
c3NhZ2VOYW1lcy5oIgorCituYW1lc3BhY2UgSVBDIHsKKworY29uc3QgY2hhciogZGVzY3JpcHRp
b24oTWVzc2FnZU5hbWUgbmFtZSkKK3sKKyAgICBzd2l0Y2ggKG5hbWUpIHsKKyAgICBjYXNlIE1l
c3NhZ2VOYW1lOjpXZWJQYWdlX0xvYWRVUkw6CisgICAgICAgIHJldHVybiAiV2ViUGFnZTo6TG9h
ZFVSTCI7CisjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpX
ZWJQYWdlX1Rlc3RBc3luY01lc3NhZ2U6CisgICAgICAgIHJldHVybiAiV2ViUGFnZTo6VGVzdEFz
eW5jTWVzc2FnZSI7CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9UZXN0QXN5bmNNZXNz
YWdlUmVwbHk6CisgICAgICAgIHJldHVybiAiV2ViUGFnZTo6VGVzdEFzeW5jTWVzc2FnZVJlcGx5
IjsKKyNlbmRpZgorI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCisgICAgY2FzZSBNZXNzYWdlTmFt
ZTo6V2ViUGFnZV9UZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJndW1lbnRzOgorICAgICAgICByZXR1
cm4gIldlYlBhZ2U6OlRlc3RBc3luY01lc3NhZ2VXaXRoTm9Bcmd1bWVudHMiOworICAgIGNhc2Ug
TWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVzdEFzeW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50c1JlcGx5
OgorICAgICAgICByZXR1cm4gIldlYlBhZ2U6OlRlc3RBc3luY01lc3NhZ2VXaXRoTm9Bcmd1bWVu
dHNSZXBseSI7CisjZW5kaWYKKyNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQorICAgIGNhc2UgTWVz
c2FnZU5hbWU6OldlYlBhZ2VfVGVzdEFzeW5jTWVzc2FnZVdpdGhNdWx0aXBsZUFyZ3VtZW50czoK
KyAgICAgICAgcmV0dXJuICJXZWJQYWdlOjpUZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJn
dW1lbnRzIjsKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX1Rlc3RBc3luY01lc3NhZ2VX
aXRoTXVsdGlwbGVBcmd1bWVudHNSZXBseToKKyAgICAgICAgcmV0dXJuICJXZWJQYWdlOjpUZXN0
QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1lbnRzUmVwbHkiOworI2VuZGlmCisgICAgY2Fz
ZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9UZXN0U3luY01lc3NhZ2U6CisgICAgICAgIHJldHVybiAi
V2ViUGFnZTo6VGVzdFN5bmNNZXNzYWdlIjsKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdl
X1Rlc3RTeW5jaHJvbm91c01lc3NhZ2U6CisgICAgICAgIHJldHVybiAiV2ViUGFnZTo6VGVzdFN5
bmNocm9ub3VzTWVzc2FnZSI7CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9Mb2FkVVJM
OgorICAgICAgICByZXR1cm4gIldlYlBhZ2U6OkxvYWRVUkwiOworI2lmIEVOQUJMRShUT1VDSF9F
VkVOVFMpCisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9Mb2FkU29tZXRoaW5nOgorICAg
ICAgICByZXR1cm4gIldlYlBhZ2U6OkxvYWRTb21ldGhpbmciOworI2VuZGlmCisjaWYgKEVOQUJM
RShUT1VDSF9FVkVOVFMpICYmIChORVNURURfTUVTU0FHRV9DT05ESVRJT04gfHwgU09NRV9PVEhF
Ul9NRVNTQUdFX0NPTkRJVElPTikpCisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9Ub3Vj
aEV2ZW50OgorICAgICAgICByZXR1cm4gIldlYlBhZ2U6OlRvdWNoRXZlbnQiOworI2VuZGlmCisj
aWYgKEVOQUJMRShUT1VDSF9FVkVOVFMpICYmIChORVNURURfTUVTU0FHRV9DT05ESVRJT04gJiYg
U09NRV9PVEhFUl9NRVNTQUdFX0NPTkRJVElPTikpCisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2Vi
UGFnZV9BZGRFdmVudDoKKyAgICAgICAgcmV0dXJuICJXZWJQYWdlOjpBZGRFdmVudCI7CisjZW5k
aWYKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBh
Z2VfTG9hZFNvbWV0aGluZ0Vsc2U6CisgICAgICAgIHJldHVybiAiV2ViUGFnZTo6TG9hZFNvbWV0
aGluZ0Vsc2UiOworI2VuZGlmCisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9EaWRSZWNl
aXZlUG9saWN5RGVjaXNpb246CisgICAgICAgIHJldHVybiAiV2ViUGFnZTo6RGlkUmVjZWl2ZVBv
bGljeURlY2lzaW9uIjsKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX0Nsb3NlOgorICAg
ICAgICByZXR1cm4gIldlYlBhZ2U6OkNsb3NlIjsKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQ
YWdlX1ByZWZlcmVuY2VzRGlkQ2hhbmdlOgorICAgICAgICByZXR1cm4gIldlYlBhZ2U6OlByZWZl
cmVuY2VzRGlkQ2hhbmdlIjsKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX1NlbmREb3Vi
bGVBbmRGbG9hdDoKKyAgICAgICAgcmV0dXJuICJXZWJQYWdlOjpTZW5kRG91YmxlQW5kRmxvYXQi
OworICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfU2VuZEludHM6CisgICAgICAgIHJldHVy
biAiV2ViUGFnZTo6U2VuZEludHMiOworICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfQ3Jl
YXRlUGx1Z2luOgorICAgICAgICByZXR1cm4gIldlYlBhZ2U6OkNyZWF0ZVBsdWdpbiI7CisgICAg
Y2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9SdW5KYXZhU2NyaXB0QWxlcnQ6CisgICAgICAgIHJl
dHVybiAiV2ViUGFnZTo6UnVuSmF2YVNjcmlwdEFsZXJ0IjsKKyAgICBjYXNlIE1lc3NhZ2VOYW1l
OjpXZWJQYWdlX0dldFBsdWdpbnM6CisgICAgICAgIHJldHVybiAiV2ViUGFnZTo6R2V0UGx1Z2lu
cyI7CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9HZXRQbHVnaW5Qcm9jZXNzQ29ubmVj
dGlvbjoKKyAgICAgICAgcmV0dXJuICJXZWJQYWdlOjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlv
biI7CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9UZXN0TXVsdGlwbGVBdHRyaWJ1dGVz
OgorICAgICAgICByZXR1cm4gIldlYlBhZ2U6OlRlc3RNdWx0aXBsZUF0dHJpYnV0ZXMiOworICAg
IGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVzdFBhcmFtZXRlckF0dHJpYnV0ZXM6CisgICAg
ICAgIHJldHVybiAiV2ViUGFnZTo6VGVzdFBhcmFtZXRlckF0dHJpYnV0ZXMiOworICAgIGNhc2Ug
TWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVtcGxhdGVUZXN0OgorICAgICAgICByZXR1cm4gIldlYlBh
Z2U6OlRlbXBsYXRlVGVzdCI7CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9TZXRWaWRl
b0xheWVySUQ6CisgICAgICAgIHJldHVybiAiV2ViUGFnZTo6U2V0VmlkZW9MYXllcklEIjsKKyNp
ZiBQTEFURk9STShNQUMpCisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9EaWRDcmVhdGVX
ZWJQcm9jZXNzQ29ubmVjdGlvbjoKKyAgICAgICAgcmV0dXJuICJXZWJQYWdlOjpEaWRDcmVhdGVX
ZWJQcm9jZXNzQ29ubmVjdGlvbiI7CisjZW5kaWYKKyNpZiBQTEFURk9STShNQUMpCisgICAgY2Fz
ZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9JbnRlcnByZXRLZXlFdmVudDoKKyAgICAgICAgcmV0dXJu
ICJXZWJQYWdlOjpJbnRlcnByZXRLZXlFdmVudCI7CisjZW5kaWYKKyNpZiBFTkFCTEUoREVQUkVD
QVRFRF9GRUFUVVJFKQorICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfRGVwcmVjYXRlZE9w
ZXJhdGlvbjoKKyAgICAgICAgcmV0dXJuICJXZWJQYWdlOjpEZXByZWNhdGVkT3BlcmF0aW9uIjsK
KyNlbmRpZgorI2lmIEVOQUJMRShFWFBFUklNRU5UQUxfRkVBVFVSRSkKKyAgICBjYXNlIE1lc3Nh
Z2VOYW1lOjpXZWJQYWdlX0V4cGVyaW1lbnRhbE9wZXJhdGlvbjoKKyAgICAgICAgcmV0dXJuICJX
ZWJQYWdlOjpFeHBlcmltZW50YWxPcGVyYXRpb24iOworI2VuZGlmCisgICAgY2FzZSBNZXNzYWdl
TmFtZTo6V3JhcHBlZEFzeW5jTWVzc2FnZUZvclRlc3Rpbmc6CisgICAgICAgIHJldHVybiAiSVBD
OjpXcmFwcGVkQXN5bmNNZXNzYWdlRm9yVGVzdGluZyI7CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6
U3luY01lc3NhZ2VSZXBseToKKyAgICAgICAgcmV0dXJuICJJUEM6OlN5bmNNZXNzYWdlUmVwbHki
OworICAgIGNhc2UgTWVzc2FnZU5hbWU6OkluaXRpYWxpemVDb25uZWN0aW9uOgorICAgICAgICBy
ZXR1cm4gIklQQzo6SW5pdGlhbGl6ZUNvbm5lY3Rpb24iOworICAgIGNhc2UgTWVzc2FnZU5hbWU6
OkxlZ2FjeVNlc3Npb25TdGF0ZToKKyAgICAgICAgcmV0dXJuICJJUEM6OkxlZ2FjeVNlc3Npb25T
dGF0ZSI7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiAiPGlu
dmFsaWQgbWVzc2FnZSBuYW1lPiI7Cit9CisKK1JlY2VpdmVyTmFtZSByZWNlaXZlck5hbWUoTWVz
c2FnZU5hbWUgbWVzc2FnZU5hbWUpCit7CisgICAgc3dpdGNoIChtZXNzYWdlTmFtZSkgeworICAg
IGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfTG9hZFVSTDoKKyNpZiBFTkFCTEUoVEVTVF9GRUFU
VVJFKQorICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVzdEFzeW5jTWVzc2FnZToKKyNl
bmRpZgorI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2Vi
UGFnZV9UZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJndW1lbnRzOgorI2VuZGlmCisjaWYgRU5BQkxF
KFRFU1RfRkVBVFVSRSkKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX1Rlc3RBc3luY01l
c3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHM6CisjZW5kaWYKKyAgICBjYXNlIE1lc3NhZ2VOYW1l
OjpXZWJQYWdlX1Rlc3RTeW5jTWVzc2FnZToKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdl
X1Rlc3RTeW5jaHJvbm91c01lc3NhZ2U6CisgICAgICAgIHJldHVybiBSZWNlaXZlck5hbWU6Oldl
YlBhZ2U7CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9Mb2FkVVJMOgorI2lmIEVOQUJM
RShUT1VDSF9FVkVOVFMpCisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9Mb2FkU29tZXRo
aW5nOgorI2VuZGlmCisjaWYgKEVOQUJMRShUT1VDSF9FVkVOVFMpICYmIChORVNURURfTUVTU0FH
RV9DT05ESVRJT04gfHwgU09NRV9PVEhFUl9NRVNTQUdFX0NPTkRJVElPTikpCisgICAgY2FzZSBN
ZXNzYWdlTmFtZTo6V2ViUGFnZV9Ub3VjaEV2ZW50OgorI2VuZGlmCisjaWYgKEVOQUJMRShUT1VD
SF9FVkVOVFMpICYmIChORVNURURfTUVTU0FHRV9DT05ESVRJT04gJiYgU09NRV9PVEhFUl9NRVNT
QUdFX0NPTkRJVElPTikpCisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9BZGRFdmVudDoK
KyNlbmRpZgorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAgY2FzZSBNZXNzYWdlTmFtZTo6
V2ViUGFnZV9Mb2FkU29tZXRoaW5nRWxzZToKKyNlbmRpZgorICAgIGNhc2UgTWVzc2FnZU5hbWU6
OldlYlBhZ2VfRGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uOgorICAgIGNhc2UgTWVzc2FnZU5hbWU6
OldlYlBhZ2VfQ2xvc2U6CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9QcmVmZXJlbmNl
c0RpZENoYW5nZToKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX1NlbmREb3VibGVBbmRG
bG9hdDoKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX1NlbmRJbnRzOgorICAgIGNhc2Ug
TWVzc2FnZU5hbWU6OldlYlBhZ2VfQ3JlYXRlUGx1Z2luOgorICAgIGNhc2UgTWVzc2FnZU5hbWU6
OldlYlBhZ2VfUnVuSmF2YVNjcmlwdEFsZXJ0OgorICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBh
Z2VfR2V0UGx1Z2luczoKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX0dldFBsdWdpblBy
b2Nlc3NDb25uZWN0aW9uOgorICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVzdE11bHRp
cGxlQXR0cmlidXRlczoKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX1Rlc3RQYXJhbWV0
ZXJBdHRyaWJ1dGVzOgorICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVtcGxhdGVUZXN0
OgorICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfU2V0VmlkZW9MYXllcklEOgorI2lmIFBM
QVRGT1JNKE1BQykKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX0RpZENyZWF0ZVdlYlBy
b2Nlc3NDb25uZWN0aW9uOgorI2VuZGlmCisjaWYgUExBVEZPUk0oTUFDKQorICAgIGNhc2UgTWVz
c2FnZU5hbWU6OldlYlBhZ2VfSW50ZXJwcmV0S2V5RXZlbnQ6CisjZW5kaWYKKyNpZiBFTkFCTEUo
REVQUkVDQVRFRF9GRUFUVVJFKQorICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfRGVwcmVj
YXRlZE9wZXJhdGlvbjoKKyNlbmRpZgorI2lmIEVOQUJMRShFWFBFUklNRU5UQUxfRkVBVFVSRSkK
KyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX0V4cGVyaW1lbnRhbE9wZXJhdGlvbjoKKyNl
bmRpZgorICAgICAgICByZXR1cm4gUmVjZWl2ZXJOYW1lOjpXZWJQYWdlOworICAgICAgICByZXR1
cm4gUmVjZWl2ZXJOYW1lOjpOb25lOworI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCisgICAgY2Fz
ZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9UZXN0QXN5bmNNZXNzYWdlUmVwbHk6CisjZW5kaWYKKyNp
ZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQorICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVz
dEFzeW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50c1JlcGx5OgorI2VuZGlmCisjaWYgRU5BQkxFKFRF
U1RfRkVBVFVSRSkKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX1Rlc3RBc3luY01lc3Nh
Z2VXaXRoTXVsdGlwbGVBcmd1bWVudHNSZXBseToKKyNlbmRpZgorICAgICAgICByZXR1cm4gUmVj
ZWl2ZXJOYW1lOjpBc3luY1JlcGx5OworICAgIGNhc2UgTWVzc2FnZU5hbWU6OldyYXBwZWRBc3lu
Y01lc3NhZ2VGb3JUZXN0aW5nOgorICAgIGNhc2UgTWVzc2FnZU5hbWU6OlN5bmNNZXNzYWdlUmVw
bHk6CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6SW5pdGlhbGl6ZUNvbm5lY3Rpb246CisgICAgY2Fz
ZSBNZXNzYWdlTmFtZTo6TGVnYWN5U2Vzc2lvblN0YXRlOgorICAgICAgICByZXR1cm4gUmVjZWl2
ZXJOYW1lOjpJUEM7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVy
biBSZWNlaXZlck5hbWU6OkludmFsaWQ7Cit9CisKK2Jvb2wgaXNWYWxpZE1lc3NhZ2VOYW1lKE1l
c3NhZ2VOYW1lIG1lc3NhZ2VOYW1lKQoreworICAgIGlmIChtZXNzYWdlTmFtZSA9PSBJUEM6Ok1l
c3NhZ2VOYW1lOjpXZWJQYWdlX0xvYWRVUkwpCisgICAgICAgIHJldHVybiB0cnVlOworI2lmIEVO
QUJMRShURVNUX0ZFQVRVUkUpCisgICAgaWYgKG1lc3NhZ2VOYW1lID09IElQQzo6TWVzc2FnZU5h
bWU6OldlYlBhZ2VfVGVzdEFzeW5jTWVzc2FnZSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
aWYgKG1lc3NhZ2VOYW1lID09IElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVzdEFzeW5jTWVz
c2FnZVJlcGx5KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyNlbmRpZgorI2lmIEVOQUJMRShURVNU
X0ZFQVRVUkUpCisgICAgaWYgKG1lc3NhZ2VOYW1lID09IElQQzo6TWVzc2FnZU5hbWU6OldlYlBh
Z2VfVGVzdEFzeW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50cykKKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgaWYgKG1lc3NhZ2VOYW1lID09IElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVzdEFz
eW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50c1JlcGx5KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyNl
bmRpZgorI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCisgICAgaWYgKG1lc3NhZ2VOYW1lID09IElQ
Qzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVzdEFzeW5jTWVzc2FnZVdpdGhNdWx0aXBsZUFyZ3Vt
ZW50cykKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKG1lc3NhZ2VOYW1lID09IElQQzo6
TWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVzdEFzeW5jTWVzc2FnZVdpdGhNdWx0aXBsZUFyZ3VtZW50
c1JlcGx5KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyNlbmRpZgorICAgIGlmIChtZXNzYWdlTmFt
ZSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX1Rlc3RTeW5jTWVzc2FnZSkKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgaWYgKG1lc3NhZ2VOYW1lID09IElQQzo6TWVzc2FnZU5hbWU6Oldl
YlBhZ2VfVGVzdFN5bmNocm9ub3VzTWVzc2FnZSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
aWYgKG1lc3NhZ2VOYW1lID09IElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfTG9hZFVSTCkKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAgICBpZiAobWVz
c2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9Mb2FkU29tZXRoaW5nKQorICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyNlbmRpZgorI2lmIChFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiAo
TkVTVEVEX01FU1NBR0VfQ09ORElUSU9OIHx8IFNPTUVfT1RIRVJfTUVTU0FHRV9DT05ESVRJT04p
KQorICAgIGlmIChtZXNzYWdlTmFtZSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX1RvdWNo
RXZlbnQpCisgICAgICAgIHJldHVybiB0cnVlOworI2VuZGlmCisjaWYgKEVOQUJMRShUT1VDSF9F
VkVOVFMpICYmIChORVNURURfTUVTU0FHRV9DT05ESVRJT04gJiYgU09NRV9PVEhFUl9NRVNTQUdF
X0NPTkRJVElPTikpCisgICAgaWYgKG1lc3NhZ2VOYW1lID09IElQQzo6TWVzc2FnZU5hbWU6Oldl
YlBhZ2VfQWRkRXZlbnQpCisgICAgICAgIHJldHVybiB0cnVlOworI2VuZGlmCisjaWYgRU5BQkxF
KFRPVUNIX0VWRU5UUykKKyAgICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6
V2ViUGFnZV9Mb2FkU29tZXRoaW5nRWxzZSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisjZW5kaWYK
KyAgICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9EaWRSZWNl
aXZlUG9saWN5RGVjaXNpb24pCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmIChtZXNzYWdl
TmFtZSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX0Nsb3NlKQorICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9Q
cmVmZXJlbmNlc0RpZENoYW5nZSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKG1lc3Nh
Z2VOYW1lID09IElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfU2VuZERvdWJsZUFuZEZsb2F0KQor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdl
TmFtZTo6V2ViUGFnZV9TZW5kSW50cykKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKG1l
c3NhZ2VOYW1lID09IElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfQ3JlYXRlUGx1Z2luKQorICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFt
ZTo6V2ViUGFnZV9SdW5KYXZhU2NyaXB0QWxlcnQpCisgICAgICAgIHJldHVybiB0cnVlOworICAg
IGlmIChtZXNzYWdlTmFtZSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX0dldFBsdWdpbnMp
CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmIChtZXNzYWdlTmFtZSA9PSBJUEM6Ok1lc3Nh
Z2VOYW1lOjpXZWJQYWdlX0dldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKQorICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFn
ZV9UZXN0TXVsdGlwbGVBdHRyaWJ1dGVzKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAo
bWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9UZXN0UGFyYW1ldGVyQXR0
cmlidXRlcykKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKG1lc3NhZ2VOYW1lID09IElQ
Qzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVtcGxhdGVUZXN0KQorICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9TZXRW
aWRlb0xheWVySUQpCisgICAgICAgIHJldHVybiB0cnVlOworI2lmIFBMQVRGT1JNKE1BQykKKyAg
ICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9EaWRDcmVhdGVX
ZWJQcm9jZXNzQ29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuIHRydWU7CisjZW5kaWYKKyNpZiBQ
TEFURk9STShNQUMpCisgICAgaWYgKG1lc3NhZ2VOYW1lID09IElQQzo6TWVzc2FnZU5hbWU6Oldl
YlBhZ2VfSW50ZXJwcmV0S2V5RXZlbnQpCisgICAgICAgIHJldHVybiB0cnVlOworI2VuZGlmCisj
aWYgRU5BQkxFKERFUFJFQ0FURURfRkVBVFVSRSkKKyAgICBpZiAobWVzc2FnZU5hbWUgPT0gSVBD
OjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9EZXByZWNhdGVkT3BlcmF0aW9uKQorICAgICAgICByZXR1
cm4gdHJ1ZTsKKyNlbmRpZgorI2lmIEVOQUJMRShFWFBFUklNRU5UQUxfRkVBVFVSRSkKKyAgICBp
ZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9FeHBlcmltZW50YWxP
cGVyYXRpb24pCisgICAgICAgIHJldHVybiB0cnVlOworI2VuZGlmCisgICAgaWYgKG1lc3NhZ2VO
YW1lID09IElQQzo6TWVzc2FnZU5hbWU6OldyYXBwZWRBc3luY01lc3NhZ2VGb3JUZXN0aW5nKQor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdl
TmFtZTo6U3luY01lc3NhZ2VSZXBseSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKG1l
c3NhZ2VOYW1lID09IElQQzo6TWVzc2FnZU5hbWU6OkluaXRpYWxpemVDb25uZWN0aW9uKQorICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFt
ZTo6TGVnYWN5U2Vzc2lvblN0YXRlKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4g
ZmFsc2U7Cit9OworCit9IC8vIG5hbWVzcGFjZSBJUEMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2Ny
aXB0cy9NZXNzYWdlTmFtZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMv
TWVzc2FnZU5hbWVzLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9TY3JpcHRzL01l
c3NhZ2VOYW1lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTE3IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEwLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorICogQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisgKiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLAorICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgorCitu
YW1lc3BhY2UgSVBDIHsKKworZW51bSBjbGFzcyBSZWNlaXZlck5hbWUgOiB1aW50OF90IHsKKyAg
ICBXZWJQYWdlID0gMQorICAgICwgV2ViUGFnZSA9IDIKKyAgICAsIE5vbmUgPSAzCisgICAgLCBJ
UEMgPSA0CisgICAgLCBBc3luY1JlcGx5ID0gNQorICAgICwgSW52YWxpZCA9IDYKK307CisKK2Vu
dW0gY2xhc3MgTWVzc2FnZU5hbWUgOiB1aW50MTZfdCB7CisgICAgV2ViUGFnZV9Mb2FkVVJMID0g
MQorI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCisgICAgLCBXZWJQYWdlX1Rlc3RBc3luY01lc3Nh
Z2UgPSAyCisgICAgLCBXZWJQYWdlX1Rlc3RBc3luY01lc3NhZ2VSZXBseSA9IDMKKyNlbmRpZgor
I2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCisgICAgLCBXZWJQYWdlX1Rlc3RBc3luY01lc3NhZ2VX
aXRoTm9Bcmd1bWVudHMgPSA0CisgICAgLCBXZWJQYWdlX1Rlc3RBc3luY01lc3NhZ2VXaXRoTm9B
cmd1bWVudHNSZXBseSA9IDUKKyNlbmRpZgorI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCisgICAg
LCBXZWJQYWdlX1Rlc3RBc3luY01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHMgPSA2CisgICAg
LCBXZWJQYWdlX1Rlc3RBc3luY01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHNSZXBseSA9IDcK
KyNlbmRpZgorICAgICwgV2ViUGFnZV9UZXN0U3luY01lc3NhZ2UgPSA4CisgICAgLCBXZWJQYWdl
X1Rlc3RTeW5jaHJvbm91c01lc3NhZ2UgPSA5CisgICAgLCBXZWJQYWdlX0xvYWRVUkwgPSAxMAor
I2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAgLCBXZWJQYWdlX0xvYWRTb21ldGhpbmcgPSAx
MQorI2VuZGlmCisjaWYgKEVOQUJMRShUT1VDSF9FVkVOVFMpICYmIChORVNURURfTUVTU0FHRV9D
T05ESVRJT04gfHwgU09NRV9PVEhFUl9NRVNTQUdFX0NPTkRJVElPTikpCisgICAgLCBXZWJQYWdl
X1RvdWNoRXZlbnQgPSAxMgorI2VuZGlmCisjaWYgKEVOQUJMRShUT1VDSF9FVkVOVFMpICYmIChO
RVNURURfTUVTU0FHRV9DT05ESVRJT04gJiYgU09NRV9PVEhFUl9NRVNTQUdFX0NPTkRJVElPTikp
CisgICAgLCBXZWJQYWdlX0FkZEV2ZW50ID0gMTMKKyNlbmRpZgorI2lmIEVOQUJMRShUT1VDSF9F
VkVOVFMpCisgICAgLCBXZWJQYWdlX0xvYWRTb21ldGhpbmdFbHNlID0gMTQKKyNlbmRpZgorICAg
ICwgV2ViUGFnZV9EaWRSZWNlaXZlUG9saWN5RGVjaXNpb24gPSAxNQorICAgICwgV2ViUGFnZV9D
bG9zZSA9IDE2CisgICAgLCBXZWJQYWdlX1ByZWZlcmVuY2VzRGlkQ2hhbmdlID0gMTcKKyAgICAs
IFdlYlBhZ2VfU2VuZERvdWJsZUFuZEZsb2F0ID0gMTgKKyAgICAsIFdlYlBhZ2VfU2VuZEludHMg
PSAxOQorICAgICwgV2ViUGFnZV9DcmVhdGVQbHVnaW4gPSAyMAorICAgICwgV2ViUGFnZV9SdW5K
YXZhU2NyaXB0QWxlcnQgPSAyMQorICAgICwgV2ViUGFnZV9HZXRQbHVnaW5zID0gMjIKKyAgICAs
IFdlYlBhZ2VfR2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24gPSAyMworICAgICwgV2ViUGFnZV9U
ZXN0TXVsdGlwbGVBdHRyaWJ1dGVzID0gMjQKKyAgICAsIFdlYlBhZ2VfVGVzdFBhcmFtZXRlckF0
dHJpYnV0ZXMgPSAyNQorICAgICwgV2ViUGFnZV9UZW1wbGF0ZVRlc3QgPSAyNgorICAgICwgV2Vi
UGFnZV9TZXRWaWRlb0xheWVySUQgPSAyNworI2lmIFBMQVRGT1JNKE1BQykKKyAgICAsIFdlYlBh
Z2VfRGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24gPSAyOAorI2VuZGlmCisjaWYgUExBVEZP
Uk0oTUFDKQorICAgICwgV2ViUGFnZV9JbnRlcnByZXRLZXlFdmVudCA9IDI5CisjZW5kaWYKKyNp
ZiBFTkFCTEUoREVQUkVDQVRFRF9GRUFUVVJFKQorICAgICwgV2ViUGFnZV9EZXByZWNhdGVkT3Bl
cmF0aW9uID0gMzAKKyNlbmRpZgorI2lmIEVOQUJMRShFWFBFUklNRU5UQUxfRkVBVFVSRSkKKyAg
ICAsIFdlYlBhZ2VfRXhwZXJpbWVudGFsT3BlcmF0aW9uID0gMzEKKyNlbmRpZgorICAgICwgV3Jh
cHBlZEFzeW5jTWVzc2FnZUZvclRlc3RpbmcgPSAzMgorICAgICwgU3luY01lc3NhZ2VSZXBseSA9
IDMzCisgICAgLCBJbml0aWFsaXplQ29ubmVjdGlvbiA9IDM0CisgICAgLCBMZWdhY3lTZXNzaW9u
U3RhdGUgPSAzNQorfTsKKworUmVjZWl2ZXJOYW1lIHJlY2VpdmVyTmFtZShNZXNzYWdlTmFtZSk7
Citjb25zdCBjaGFyKiBkZXNjcmlwdGlvbihNZXNzYWdlTmFtZSk7Citib29sIGlzVmFsaWRNZXNz
YWdlTmFtZShNZXNzYWdlTmFtZSk7CisKK30gLy8gbmFtZXNwYWNlIElQQworCituYW1lc3BhY2Ug
V1RGIHsKKwordGVtcGxhdGU8PgorY2xhc3MgSGFzQ3VzdG9tSXNWYWxpZEVudW08SVBDOjpNZXNz
YWdlTmFtZT4gOiBwdWJsaWMgc3RkOjp0cnVlX3R5cGUgeyB9OwordGVtcGxhdGU8dHlwZW5hbWUg
RSwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgPSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfc2FtZTxF
LCBJUEM6Ok1lc3NhZ2VOYW1lPjo6dmFsdWU+PgorYm9vbCBpc1ZhbGlkRW51bShUIG1lc3NhZ2VO
YW1lKQoreworICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFQpID09IHNpemVvZihJUEM6Ok1lc3Nh
Z2VOYW1lKSwgImlzVmFsaWRFbnVtPE1lc3NhZ2VOYW1lPiBzaG91bGQgb25seSBiZSBjYWxsZWQg
d2l0aCAxNi1iaXQgdHlwZXMiKTsKKyAgICByZXR1cm4gSVBDOjppc1ZhbGlkTWVzc2FnZU5hbWUo
c3RhdGljX2Nhc3Q8SVBDOjpNZXNzYWdlTmFtZT4obWVzc2FnZU5hbWUpKTsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdURgpJbmRleDogU291cmNlL1dlYktpdC9TY3JpcHRzL2dlbmVyYXRlLW1lc3Nh
Z2UtcmVjZWl2ZXIucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TY3JpcHRzL2dlbmVy
YXRlLW1lc3NhZ2UtcmVjZWl2ZXIucHkJKHJldmlzaW9uIDI2MTIzOCkKKysrIFNvdXJjZS9XZWJL
aXQvU2NyaXB0cy9nZW5lcmF0ZS1tZXNzYWdlLXJlY2VpdmVyLnB5CSh3b3JraW5nIGNvcHkpCkBA
IC0yMywzMyArMjMsNDggQEAKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogZnJvbSBfX2Z1dHVyZV9fIGltcG9y
dCB3aXRoX3N0YXRlbWVudAotaW1wb3J0IGFyZ3BhcnNlCiBpbXBvcnQgc3lzCiAKIGltcG9ydCB3
ZWJraXQubWVzc2FnZXMKIGltcG9ydCB3ZWJraXQucGFyc2VyCiAKIAotZGVmIG1haW4oYXJndj1O
b25lKToKLSAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcigpCi0gICAgcGFyc2Vy
LmFkZF9hcmd1bWVudCgnc291cmNlJykKLSAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLWltcGxl
bWVudGF0aW9uJywgcmVxdWlyZWQ9VHJ1ZSkKLSAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLWhl
YWRlcicsIHJlcXVpcmVkPVRydWUpCi0gICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1yZXBseS1o
ZWFkZXInLCByZXF1aXJlZD1UcnVlKQotCi0gICAgYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKCkK
LQotICAgIHdpdGggb3BlbihhcmdzLnNvdXJjZSkgYXMgc291cmNlX2ZpbGU6Ci0gICAgICAgIHJl
Y2VpdmVyID0gd2Via2l0LnBhcnNlci5wYXJzZShzb3VyY2VfZmlsZSkKK2RlZiBtYWluKGFyZ3Yp
OgorICAgIHJlY2VpdmVycyA9IFtdCiAKLSAgICB3aXRoIG9wZW4oYXJncy5pbXBsZW1lbnRhdGlv
biwgIncrIikgYXMgaW1wbGVtZW50YXRpb25fb3V0cHV0OgotICAgICAgICBpbXBsZW1lbnRhdGlv
bl9vdXRwdXQud3JpdGUod2Via2l0Lm1lc3NhZ2VzLmdlbmVyYXRlX21lc3NhZ2VfaGFuZGxlcihy
ZWNlaXZlcikpCisgICAgZmlyc3RfYXJnID0gVHJ1ZQorICAgIHNlY29uZF9hcmcgPSBGYWxzZQor
ICAgIGZvciBwYXJhbWV0ZXIgaW4gYXJndjoKKyAgICAgICAgaWYgZmlyc3RfYXJnOgorICAgICAg
ICAgICAgZmlyc3RfYXJnID0gRmFsc2UKKyAgICAgICAgICAgIHNlY29uZF9hcmcgPSBUcnVlCisg
ICAgICAgICAgICBjb250aW51ZQorICAgICAgICBpZiBzZWNvbmRfYXJnOgorICAgICAgICAgICAg
YmFzZV9kaXIgPSBwYXJhbWV0ZXIKKyAgICAgICAgICAgIHNlY29uZF9hcmcgPSBGYWxzZQorICAg
ICAgICAgICAgY29udGludWUKKworICAgICAgICByZWNlaXZlcl9uYW1lID0gcGFyYW1ldGVyLnJz
cGxpdCgnLycsIDEpLnBvcCgpCisgICAgICAgIHByaW50ICdHZW5lcmF0aW5nIG1lc3NhZ2UgcmVj
ZWl2ZXIgZm9yICVzJyAlIHJlY2VpdmVyX25hbWUKKworICAgICAgICB3aXRoIG9wZW4oJyVzLyVz
Lm1lc3NhZ2VzLmluJyAlIChiYXNlX2RpciwgcGFyYW1ldGVyKSkgYXMgc291cmNlX2ZpbGU6Cisg
ICAgICAgICAgICByZWNlaXZlciA9IHdlYmtpdC5wYXJzZXIucGFyc2Uoc291cmNlX2ZpbGUpCisg
ICAgICAgIHJlY2VpdmVycy5hcHBlbmQocmVjZWl2ZXIpCisKKyAgICAgICAgd2l0aCBvcGVuKCcl
c01lc3NhZ2VSZWNlaXZlci5jcHAnICUgcmVjZWl2ZXJfbmFtZSwgIncrIikgYXMgaW1wbGVtZW50
YXRpb25fb3V0cHV0OgorICAgICAgICAgICAgaW1wbGVtZW50YXRpb25fb3V0cHV0LndyaXRlKHdl
YmtpdC5tZXNzYWdlcy5nZW5lcmF0ZV9tZXNzYWdlX2hhbmRsZXIocmVjZWl2ZXIpKQorCisgICAg
ICAgIHdpdGggb3BlbignJXNNZXNzYWdlcy5oJyAlIHJlY2VpdmVyX25hbWUsICJ3KyIpIGFzIGhl
YWRlcl9vdXRwdXQ6CisgICAgICAgICAgICBoZWFkZXJfb3V0cHV0LndyaXRlKHdlYmtpdC5tZXNz
YWdlcy5nZW5lcmF0ZV9tZXNzYWdlc19oZWFkZXIocmVjZWl2ZXIpKQogCi0gICAgd2l0aCBvcGVu
KGFyZ3MuaGVhZGVyLCAidysiKSBhcyBoZWFkZXJfb3V0cHV0OgotICAgICAgICBoZWFkZXJfb3V0
cHV0LndyaXRlKHdlYmtpdC5tZXNzYWdlcy5nZW5lcmF0ZV9tZXNzYWdlc19oZWFkZXIocmVjZWl2
ZXIpKQorICAgICAgICB3aXRoIG9wZW4oJyVzTWVzc2FnZXNSZXBsaWVzLmgnICUgcmVjZWl2ZXJf
bmFtZSwgIncrIikgYXMgcmVwbHlfaGVhZGVyX291dHB1dDoKKyAgICAgICAgICAgIHJlcGx5X2hl
YWRlcl9vdXRwdXQud3JpdGUod2Via2l0Lm1lc3NhZ2VzLmdlbmVyYXRlX21lc3NhZ2VzX3JlcGx5
X2hlYWRlcihyZWNlaXZlcikpCiAKLSAgICB3aXRoIG9wZW4oYXJncy5yZXBseV9oZWFkZXIsICJ3
KyIpIGFzIHJlcGx5X2hlYWRlcl9vdXRwdXQ6Ci0gICAgICAgIHJlcGx5X2hlYWRlcl9vdXRwdXQu
d3JpdGUod2Via2l0Lm1lc3NhZ2VzLmdlbmVyYXRlX21lc3NhZ2VzX3JlcGx5X2hlYWRlcihyZWNl
aXZlcikpCisgICAgd2l0aCBvcGVuKCdNZXNzYWdlTmFtZXMuaCcsICJ3KyIpIGFzIG1lc3NhZ2Vf
bmFtZXNfaGVhZGVyX291dHB1dDoKKyAgICAgICAgbWVzc2FnZV9uYW1lc19oZWFkZXJfb3V0cHV0
LndyaXRlKHdlYmtpdC5tZXNzYWdlcy5nZW5lcmF0ZV9tZXNzYWdlX25hbWVzX2hlYWRlcihyZWNl
aXZlcnMpKQorCisgICAgd2l0aCBvcGVuKCdNZXNzYWdlTmFtZXMuY3BwJywgIncrIikgYXMgbWVz
c2FnZV9uYW1lc19pbXBsZW1lbnRhdGlvbl9vdXRwdXQ6CisgICAgICAgIG1lc3NhZ2VfbmFtZXNf
aW1wbGVtZW50YXRpb25fb3V0cHV0LndyaXRlKHdlYmtpdC5tZXNzYWdlcy5nZW5lcmF0ZV9tZXNz
YWdlX25hbWVzX2ltcGxlbWVudGF0aW9uKHJlY2VpdmVycykpCiAKICAgICByZXR1cm4gMAogCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvdGVzdC1sZWdhY3lNZXNzYWdlUmVjZWl2ZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy90ZXN0LWxlZ2FjeU1lc3NhZ2VS
ZWNlaXZlci5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9TY3JpcHRzL3Rlc3Qt
bGVnYWN5TWVzc2FnZVJlY2VpdmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDIwMyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IK
KyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIChFTkFCTEUo
V0VCS0lUMikgJiYgKE5FU1RFRF9NQVNURVJfQ09ORElUSU9OIHx8IE1BU1RFUl9PUiAmJiBNQVNU
RVJfQU5EKSkKKworI2luY2x1ZGUgIldlYlBhZ2UuaCIKKworI2luY2x1ZGUgIkFyZ3VtZW50Q29k
ZXJzLmgiCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIkRlY29kZXIuaCIKKyNp
ZiBFTkFCTEUoREVQUkVDQVRFRF9GRUFUVVJFKSB8fCBFTkFCTEUoRVhQRVJJTUVOVEFMX0ZFQVRV
UkUpCisjaW5jbHVkZSAiRHVtbXlUeXBlLmgiCisjZW5kaWYKKyNpbmNsdWRlICJIYW5kbGVNZXNz
YWdlLmgiCisjaWYgUExBVEZPUk0oTUFDKQorI2luY2x1ZGUgIk1hY2hQb3J0LmgiCisjZW5kaWYK
KyNpbmNsdWRlICJQbHVnaW4uaCIKKyNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIK
KyNpZiAoRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgKE5FU1RFRF9NRVNTQUdFX0NPTkRJVElPTiAm
JiBTT01FX09USEVSX01FU1NBR0VfQ09ORElUSU9OKSkgfHwgKEVOQUJMRShUT1VDSF9FVkVOVFMp
ICYmIChORVNURURfTUVTU0FHRV9DT05ESVRJT04gfHwgU09NRV9PVEhFUl9NRVNTQUdFX0NPTkRJ
VElPTikpCisjaW5jbHVkZSAiV2ViRXZlbnQuaCIKKyNlbmRpZgorI2luY2x1ZGUgIldlYlBhZ2VN
ZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlByZWZlcmVuY2VzU3RvcmUuaCIKKyNpbmNsdWRlIDxX
ZWJDb3JlL0dyYXBoaWNzTGF5ZXIuaD4KKyNpZiBQTEFURk9STShNQUMpCisjaW5jbHVkZSA8V2Vi
Q29yZS9LZXlib2FyZEV2ZW50Lmg+CisjZW5kaWYKKyNpbmNsdWRlIDxXZWJDb3JlL1BsdWdpbkRh
dGEuaD4KKyNpbmNsdWRlIDx1dGlsaXR5PgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCitu
YW1lc3BhY2UgTWVzc2FnZXMgeworCituYW1lc3BhY2UgV2ViUGFnZSB7CisKK3ZvaWQgR2V0UGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OnNlbmQoc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4m
JiBlbmNvZGVyLCBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IElQQzo6Q29ubmVj
dGlvbjo6SGFuZGxlJiBjb25uZWN0aW9uSGFuZGxlKQoreworICAgICplbmNvZGVyIDw8IGNvbm5l
Y3Rpb25IYW5kbGU7CisgICAgY29ubmVjdGlvbi5zZW5kU3luY1JlcGx5KFdURk1vdmUoZW5jb2Rl
cikpOworfQorCit2b2lkIFRlc3RNdWx0aXBsZUF0dHJpYnV0ZXM6OnNlbmQoc3RkOjp1bmlxdWVf
cHRyPElQQzo6RW5jb2Rlcj4mJiBlbmNvZGVyLCBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24p
Cit7CisgICAgY29ubmVjdGlvbi5zZW5kU3luY1JlcGx5KFdURk1vdmUoZW5jb2RlcikpOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJQYWdlCisKK30gLy8gbmFtZXNwYWNlIE1lc3NhZ2VzCisKK25h
bWVzcGFjZSBXZWJLaXQgeworCit2b2lkIFdlYlBhZ2U6OmRpZFJlY2VpdmVXZWJQYWdlTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikKK3sK
KyAgICBhdXRvIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKTsKKyAgICBpZiAoZGVjb2Rl
ci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkVVJMOjpuYW1lKCkpIHsK
KyAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkVVJMPihk
ZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6bG9hZFVSTCk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgp
ID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkU29tZXRoaW5nOjpuYW1lKCkpIHsKKyAgICAgICAg
SVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkU29tZXRoaW5nPihkZWNv
ZGVyLCB0aGlzLCAmV2ViUGFnZTo6bG9hZFNvbWV0aGluZyk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisjZW5kaWYKKyNpZiAoRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgKE5FU1RFRF9NRVNTQUdF
X0NPTkRJVElPTiB8fCBTT01FX09USEVSX01FU1NBR0VfQ09ORElUSU9OKSkKKyAgICBpZiAoZGVj
b2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpUb3VjaEV2ZW50OjpuYW1l
KCkpIHsKKyAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpUb3Vj
aEV2ZW50PihkZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6dG91Y2hFdmVudCk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisjZW5kaWYKKyNpZiAoRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgKE5FU1RF
RF9NRVNTQUdFX0NPTkRJVElPTiAmJiBTT01FX09USEVSX01FU1NBR0VfQ09ORElUSU9OKSkKKyAg
ICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpBZGRFdmVu
dDo6bmFtZSgpKSB7CisgICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFn
ZTo6QWRkRXZlbnQ+KGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjphZGRFdmVudCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisjZW5kaWYKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgIGlm
IChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRTb21ldGhp
bmdFbHNlOjpuYW1lKCkpIHsKKyAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpX
ZWJQYWdlOjpMb2FkU29tZXRoaW5nRWxzZT4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OmxvYWRT
b21ldGhpbmdFbHNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorICAgIGlmIChk
ZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJlY2VpdmVQb2xp
Y3lEZWNpc2lvbjo6bmFtZSgpKSB7CisgICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdl
czo6V2ViUGFnZTo6RGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uPihkZWNvZGVyLCB0aGlzLCAmV2Vi
UGFnZTo6ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpDbG9z
ZTo6bmFtZSgpKSB7CisgICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFn
ZTo6Q2xvc2U+KGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjpjbG9zZSk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2Vi
UGFnZTo6UHJlZmVyZW5jZXNEaWRDaGFuZ2U6Om5hbWUoKSkgeworICAgICAgICBJUEM6OmhhbmRs
ZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OlByZWZlcmVuY2VzRGlkQ2hhbmdlPihkZWNvZGVy
LCB0aGlzLCAmV2ViUGFnZTo6cHJlZmVyZW5jZXNEaWRDaGFuZ2UpOworICAgICAgICByZXR1cm47
CisgICAgfQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBh
Z2U6OlNlbmREb3VibGVBbmRGbG9hdDo6bmFtZSgpKSB7CisgICAgICAgIElQQzo6aGFuZGxlTWVz
c2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6U2VuZERvdWJsZUFuZEZsb2F0PihkZWNvZGVyLCB0aGlz
LCAmV2ViUGFnZTo6c2VuZERvdWJsZUFuZEZsb2F0KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpTZW5k
SW50czo6bmFtZSgpKSB7CisgICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2Vi
UGFnZTo6U2VuZEludHM+KGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjpzZW5kSW50cyk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNz
YWdlczo6V2ViUGFnZTo6VGVzdFBhcmFtZXRlckF0dHJpYnV0ZXM6Om5hbWUoKSkgeworICAgICAg
ICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RQYXJhbWV0ZXJBdHRy
aWJ1dGVzPihkZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6dGVzdFBhcmFtZXRlckF0dHJpYnV0ZXMp
OworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkg
PT0gTWVzc2FnZXM6OldlYlBhZ2U6OlRlbXBsYXRlVGVzdDo6bmFtZSgpKSB7CisgICAgICAgIElQ
Qzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6VGVtcGxhdGVUZXN0PihkZWNvZGVy
LCB0aGlzLCAmV2ViUGFnZTo6dGVtcGxhdGVUZXN0KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRW
aWRlb0xheWVySUQ6Om5hbWUoKSkgeworICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2Fn
ZXM6OldlYlBhZ2U6OlNldFZpZGVvTGF5ZXJJRD4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OnNl
dFZpZGVvTGF5ZXJJRCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjaWYgUExBVEZPUk0oTUFD
KQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OkRp
ZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uOjpuYW1lKCkpIHsKKyAgICAgICAgSVBDOjpoYW5k
bGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlv
bj4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OmRpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9u
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorI2lmIEVOQUJMRShERVBSRUNBVEVE
X0ZFQVRVUkUpCisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2Vi
UGFnZTo6RGVwcmVjYXRlZE9wZXJhdGlvbjo6bmFtZSgpKSB7CisgICAgICAgIElQQzo6aGFuZGxl
TWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6RGVwcmVjYXRlZE9wZXJhdGlvbj4oZGVjb2Rlciwg
dGhpcywgJldlYlBhZ2U6OmRlcHJlY2F0ZWRPcGVyYXRpb24pOworICAgICAgICByZXR1cm47Cisg
ICAgfQorI2VuZGlmCisjaWYgRU5BQkxFKEVYUEVSSU1FTlRBTF9GRUFUVVJFKQorICAgIGlmIChk
ZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OkV4cGVyaW1lbnRhbE9w
ZXJhdGlvbjo6bmFtZSgpKSB7CisgICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6
V2ViUGFnZTo6RXhwZXJpbWVudGFsT3BlcmF0aW9uPihkZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6
ZXhwZXJpbWVudGFsT3BlcmF0aW9uKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgor
ICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsKKyAgICBVTlVTRURfUEFSQU0oZGVjb2Rlcik7
CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3ZvaWQgV2ViUGFnZTo6ZGlkUmVjZWl2
ZVN5bmNXZWJQYWdlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVj
b2RlciYgZGVjb2Rlciwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mIHJlcGx5RW5jb2Rl
cikKK3sKKyAgICBhdXRvIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKTsKKyAgICBpZiAo
ZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpDcmVhdGVQbHVnaW46
Om5hbWUoKSkgeworICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6
OkNyZWF0ZVBsdWdpbj4oZGVjb2RlciwgKnJlcGx5RW5jb2RlciwgdGhpcywgJldlYlBhZ2U6OmNy
ZWF0ZVBsdWdpbik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKGRlY29kZXIubWVz
c2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6UnVuSmF2YVNjcmlwdEFsZXJ0OjpuYW1l
KCkpIHsKKyAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpSdW5K
YXZhU2NyaXB0QWxlcnQ+KGRlY29kZXIsICpyZXBseUVuY29kZXIsIHRoaXMsICZXZWJQYWdlOjpy
dW5KYXZhU2NyaXB0QWxlcnQpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChkZWNv
ZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OkdldFBsdWdpbnM6Om5hbWUo
KSkgeworICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OkdldFBs
dWdpbnM+KGRlY29kZXIsICpyZXBseUVuY29kZXIsIHRoaXMsICZXZWJQYWdlOjpnZXRQbHVnaW5z
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgp
ID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6bmFtZSgp
KSB7CisgICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZVN5bmNocm9ub3VzPE1lc3NhZ2VzOjpXZWJQ
YWdlOjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbj4oY29ubmVjdGlvbiwgZGVjb2RlciwgcmVw
bHlFbmNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6Z2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24pOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0g
TWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RNdWx0aXBsZUF0dHJpYnV0ZXM6Om5hbWUoKSkgeworICAg
ICAgICBJUEM6OmhhbmRsZU1lc3NhZ2VTeW5jaHJvbm91c1dhbnRzQ29ubmVjdGlvbjxNZXNzYWdl
czo6V2ViUGFnZTo6VGVzdE11bHRpcGxlQXR0cmlidXRlcz4oY29ubmVjdGlvbiwgZGVjb2Rlciwg
cmVwbHlFbmNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6dGVzdE11bHRpcGxlQXR0cmlidXRlcyk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisjaWYgUExBVEZPUk0oTUFDKQorICAgIGlmIChkZWNvZGVy
Lm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OkludGVycHJldEtleUV2ZW50Ojpu
YW1lKCkpIHsKKyAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpJ
bnRlcnByZXRLZXlFdmVudD4oZGVjb2RlciwgKnJlcGx5RW5jb2RlciwgdGhpcywgJldlYlBhZ2U6
OmludGVycHJldEtleUV2ZW50KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorICAg
IFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsKKyAgICBVTlVTRURfUEFSQU0oZGVjb2Rlcik7Cisg
ICAgVU5VU0VEX1BBUkFNKHJlcGx5RW5jb2Rlcik7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisKKyNlbmRpZiAvLyAoRU5BQkxFKFdFQktJ
VDIpICYmIChORVNURURfTUFTVEVSX0NPTkRJVElPTiB8fCBNQVNURVJfT1IgJiYgTUFTVEVSX0FO
RCkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvdGVzdC1sZWdhY3lNZXNzYWdlcy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy90ZXN0LWxlZ2FjeU1lc3NhZ2VzLmgJ
KG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9TY3JpcHRzL3Rlc3QtbGVnYWN5TWVzc2Fn
ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU0OSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAq
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaWYgKEVOQUJMRShXRUJLSVQyKSAmJiAoTkVTVEVEX01BU1RFUl9D
T05ESVRJT04gfHwgTUFTVEVSX09SICYmIE1BU1RFUl9BTkQpKQorCisjaW5jbHVkZSAiQXJndW1l
bnRDb2RlcnMuaCIKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiTWVzc2FnZU5h
bWVzLmgiCisjaW5jbHVkZSAiUGx1Z2luLmgiCisjaW5jbHVkZSAiV2ViUGFnZU1lc3NhZ2VzUmVw
bGllcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NMYXllci5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvS2V5Ym9hcmRFdmVudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGx1Z2luRGF0YS5oPgor
I2luY2x1ZGUgPHV0aWxpdHk+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKwor
bmFtZXNwYWNlIElQQyB7CitjbGFzcyBEdW1teVR5cGU7CitjbGFzcyBNYWNoUG9ydDsKK30KKwor
bmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBXZWJQcmVmZXJlbmNlc1N0b3JlOworY2xhc3MgV2Vi
VG91Y2hFdmVudDsKK30KKworbmFtZXNwYWNlIE1lc3NhZ2VzIHsKK25hbWVzcGFjZSBXZWJQYWdl
IHsKKworc3RhdGljIGlubGluZSBJUEM6OlJlY2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1l
KCkKK3sKKyAgICByZXR1cm4gSVBDOjpSZWNlaXZlck5hbWU6OldlYlBhZ2U7Cit9CisKK2NsYXNz
IExvYWRVUkwgeworcHVibGljOgorICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBTdHJpbmcm
PiBBcmd1bWVudHM7CisKKyAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1
cm4gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9Mb2FkVVJMOyB9CisgICAgc3RhdGljIGNvbnN0
IGJvb2wgaXNTeW5jID0gZmFsc2U7CisKKyAgICBleHBsaWNpdCBMb2FkVVJMKGNvbnN0IFN0cmlu
ZyYgdXJsKQorICAgICAgICA6IG1fYXJndW1lbnRzKHVybCkKKyAgICB7CisgICAgfQorCisgICAg
Y29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJu
IG1fYXJndW1lbnRzOworICAgIH0KKworcHJpdmF0ZToKKyAgICBBcmd1bWVudHMgbV9hcmd1bWVu
dHM7Cit9OworCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKK2NsYXNzIExvYWRTb21ldGhpbmcg
eworcHVibGljOgorICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBTdHJpbmcmPiBBcmd1bWVu
dHM7CisKKyAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpN
ZXNzYWdlTmFtZTo6V2ViUGFnZV9Mb2FkU29tZXRoaW5nOyB9CisgICAgc3RhdGljIGNvbnN0IGJv
b2wgaXNTeW5jID0gZmFsc2U7CisKKyAgICBleHBsaWNpdCBMb2FkU29tZXRoaW5nKGNvbnN0IFN0
cmluZyYgdXJsKQorICAgICAgICA6IG1fYXJndW1lbnRzKHVybCkKKyAgICB7CisgICAgfQorCisg
ICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0
dXJuIG1fYXJndW1lbnRzOworICAgIH0KKworcHJpdmF0ZToKKyAgICBBcmd1bWVudHMgbV9hcmd1
bWVudHM7Cit9OworI2VuZGlmCisKKyNpZiAoRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgKE5FU1RF
RF9NRVNTQUdFX0NPTkRJVElPTiB8fCBTT01FX09USEVSX01FU1NBR0VfQ09ORElUSU9OKSkKK2Ns
YXNzIFRvdWNoRXZlbnQgeworcHVibGljOgorICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBX
ZWJLaXQ6OldlYlRvdWNoRXZlbnQmPiBBcmd1bWVudHM7CisKKyAgICBzdGF0aWMgSVBDOjpNZXNz
YWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9Ub3VjaEV2
ZW50OyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7CisKKyAgICBleHBs
aWNpdCBUb3VjaEV2ZW50KGNvbnN0IFdlYktpdDo6V2ViVG91Y2hFdmVudCYgZXZlbnQpCisgICAg
ICAgIDogbV9hcmd1bWVudHMoZXZlbnQpCisgICAgeworICAgIH0KKworICAgIGNvbnN0IEFyZ3Vt
ZW50cyYgYXJndW1lbnRzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2FyZ3VtZW50
czsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOworfTsKKyNl
bmRpZgorCisjaWYgKEVOQUJMRShUT1VDSF9FVkVOVFMpICYmIChORVNURURfTUVTU0FHRV9DT05E
SVRJT04gJiYgU09NRV9PVEhFUl9NRVNTQUdFX0NPTkRJVElPTikpCitjbGFzcyBBZGRFdmVudCB7
CitwdWJsaWM6CisgICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGNvbnN0IFdlYktpdDo6V2ViVG91Y2hF
dmVudCY+IEFyZ3VtZW50czsKKworICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7
IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX0FkZEV2ZW50OyB9CisgICAgc3RhdGlj
IGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7CisKKyAgICBleHBsaWNpdCBBZGRFdmVudChjb25z
dCBXZWJLaXQ6OldlYlRvdWNoRXZlbnQmIGV2ZW50KQorICAgICAgICA6IG1fYXJndW1lbnRzKGV2
ZW50KQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNv
bnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7CisgICAgfQorCitwcml2YXRl
OgorICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKK307CisjZW5kaWYKKworI2lmIEVOQUJMRShU
T1VDSF9FVkVOVFMpCitjbGFzcyBMb2FkU29tZXRoaW5nRWxzZSB7CitwdWJsaWM6CisgICAgdHlw
ZWRlZiBzdGQ6OnR1cGxlPGNvbnN0IFN0cmluZyY+IEFyZ3VtZW50czsKKworICAgIHN0YXRpYyBJ
UEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdl
X0xvYWRTb21ldGhpbmdFbHNlOyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFs
c2U7CisKKyAgICBleHBsaWNpdCBMb2FkU29tZXRoaW5nRWxzZShjb25zdCBTdHJpbmcmIHVybCkK
KyAgICAgICAgOiBtX2FyZ3VtZW50cyh1cmwpCisgICAgeworICAgIH0KKworICAgIGNvbnN0IEFy
Z3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2FyZ3Vt
ZW50czsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOworfTsK
KyNlbmRpZgorCitjbGFzcyBEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24geworcHVibGljOgorICAg
IHR5cGVkZWYgc3RkOjp0dXBsZTx1aW50NjRfdCwgdWludDY0X3QsIHVpbnQzMl90PiBBcmd1bWVu
dHM7CisKKyAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpN
ZXNzYWdlTmFtZTo6V2ViUGFnZV9EaWRSZWNlaXZlUG9saWN5RGVjaXNpb247IH0KKyAgICBzdGF0
aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKKworICAgIERpZFJlY2VpdmVQb2xpY3lEZWNp
c2lvbih1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBsaXN0ZW5lcklELCB1aW50MzJfdCBwb2xp
Y3lBY3Rpb24pCisgICAgICAgIDogbV9hcmd1bWVudHMoZnJhbWVJRCwgbGlzdGVuZXJJRCwgcG9s
aWN5QWN0aW9uKQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50
cygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7CisgICAgfQorCitw
cml2YXRlOgorICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKK307CisKK2NsYXNzIENsb3NlIHsK
K3B1YmxpYzoKKyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8PiBBcmd1bWVudHM7CisKKyAgICBzdGF0
aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6V2Vi
UGFnZV9DbG9zZTsgfQorICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOworCisg
ICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0
dXJuIG1fYXJndW1lbnRzOworICAgIH0KKworcHJpdmF0ZToKKyAgICBBcmd1bWVudHMgbV9hcmd1
bWVudHM7Cit9OworCitjbGFzcyBQcmVmZXJlbmNlc0RpZENoYW5nZSB7CitwdWJsaWM6CisgICAg
dHlwZWRlZiBzdGQ6OnR1cGxlPGNvbnN0IFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZSY+IEFy
Z3VtZW50czsKKworICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJ
UEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX1ByZWZlcmVuY2VzRGlkQ2hhbmdlOyB9CisgICAgc3Rh
dGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7CisKKyAgICBleHBsaWNpdCBQcmVmZXJlbmNl
c0RpZENoYW5nZShjb25zdCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlKQorICAg
ICAgICA6IG1fYXJndW1lbnRzKHN0b3JlKQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdCBBcmd1
bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9hcmd1bWVu
dHM7CisgICAgfQorCitwcml2YXRlOgorICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKK307CisK
K2NsYXNzIFNlbmREb3VibGVBbmRGbG9hdCB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBzdGQ6OnR1
cGxlPGRvdWJsZSwgZmxvYXQ+IEFyZ3VtZW50czsKKworICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VO
YW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX1NlbmREb3VibGVB
bmRGbG9hdDsgfQorICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOworCisgICAg
U2VuZERvdWJsZUFuZEZsb2F0KGRvdWJsZSBkLCBmbG9hdCBmKQorICAgICAgICA6IG1fYXJndW1l
bnRzKGQsIGYpCisgICAgeworICAgIH0KKworICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRz
KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKKyAgICB9CisKK3By
aXZhdGU6CisgICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOworfTsKKworY2xhc3MgU2VuZEludHMg
eworcHVibGljOgorICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBWZWN0b3I8dWludDY0X3Q+
JiwgY29uc3QgVmVjdG9yPFZlY3Rvcjx1aW50NjRfdD4+Jj4gQXJndW1lbnRzOworCisgICAgc3Rh
dGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6Oldl
YlBhZ2VfU2VuZEludHM7IH0KKyAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsK
KworICAgIFNlbmRJbnRzKGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIGludHMsIGNvbnN0IFZlY3Rv
cjxWZWN0b3I8dWludDY0X3Q+PiYgaW50VmVjdG9ycykKKyAgICAgICAgOiBtX2FyZ3VtZW50cyhp
bnRzLCBpbnRWZWN0b3JzKQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdCBBcmd1bWVudHMmIGFy
Z3VtZW50cygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7CisgICAg
fQorCitwcml2YXRlOgorICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKK307CisKK2NsYXNzIENy
ZWF0ZVBsdWdpbiB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBzdGQ6OnR1cGxlPHVpbnQ2NF90LCBj
b25zdCBXZWJLaXQ6OlBsdWdpbjo6UGFyYW1ldGVycyY+IEFyZ3VtZW50czsKKworICAgIHN0YXRp
YyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQ
YWdlX0NyZWF0ZVBsdWdpbjsgfQorICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IHRydWU7
CisKKyAgICB1c2luZyBSZXBseSA9IHN0ZDo6dHVwbGU8Ym9vbCY+OworICAgIHVzaW5nIFJlcGx5
QXJndW1lbnRzID0gc3RkOjp0dXBsZTxib29sPjsKKyAgICBDcmVhdGVQbHVnaW4odWludDY0X3Qg
cGx1Z2luSW5zdGFuY2VJRCwgY29uc3QgV2ViS2l0OjpQbHVnaW46OlBhcmFtZXRlcnMmIHBhcmFt
ZXRlcnMpCisgICAgICAgIDogbV9hcmd1bWVudHMocGx1Z2luSW5zdGFuY2VJRCwgcGFyYW1ldGVy
cykKKyAgICB7CisgICAgfQorCisgICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25z
dAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOworICAgIH0KKworcHJpdmF0ZToK
KyAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Cit9OworCitjbGFzcyBSdW5KYXZhU2NyaXB0QWxl
cnQgeworcHVibGljOgorICAgIHR5cGVkZWYgc3RkOjp0dXBsZTx1aW50NjRfdCwgY29uc3QgU3Ry
aW5nJj4gQXJndW1lbnRzOworCisgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsg
cmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfUnVuSmF2YVNjcmlwdEFsZXJ0OyB9Cisg
ICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gdHJ1ZTsKKworICAgIHVzaW5nIFJlcGx5ID0g
c3RkOjp0dXBsZTw+OworICAgIHVzaW5nIFJlcGx5QXJndW1lbnRzID0gc3RkOjp0dXBsZTw+Owor
ICAgIFJ1bkphdmFTY3JpcHRBbGVydCh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIG1l
c3NhZ2UpCisgICAgICAgIDogbV9hcmd1bWVudHMoZnJhbWVJRCwgbWVzc2FnZSkKKyAgICB7Cisg
ICAgfQorCisgICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAorICAgIHsKKyAg
ICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOworICAgIH0KKworcHJpdmF0ZToKKyAgICBBcmd1bWVu
dHMgbV9hcmd1bWVudHM7Cit9OworCitjbGFzcyBHZXRQbHVnaW5zIHsKK3B1YmxpYzoKKyAgICB0
eXBlZGVmIHN0ZDo6dHVwbGU8Ym9vbD4gQXJndW1lbnRzOworCisgICAgc3RhdGljIElQQzo6TWVz
c2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfR2V0UGx1
Z2luczsgfQorICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IHRydWU7CisKKyAgICB1c2lu
ZyBSZXBseSA9IHN0ZDo6dHVwbGU8VmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+Jj47CisgICAg
dXNpbmcgUmVwbHlBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5J
bmZvPj47CisgICAgZXhwbGljaXQgR2V0UGx1Z2lucyhib29sIHJlZnJlc2gpCisgICAgICAgIDog
bV9hcmd1bWVudHMocmVmcmVzaCkKKyAgICB7CisgICAgfQorCisgICAgY29uc3QgQXJndW1lbnRz
JiBhcmd1bWVudHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwor
ICAgIH0KKworcHJpdmF0ZToKKyAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Cit9OworCitjbGFz
cyBHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbiB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBzdGQ6
OnR1cGxlPGNvbnN0IFN0cmluZyY+IEFyZ3VtZW50czsKKworICAgIHN0YXRpYyBJUEM6Ok1lc3Nh
Z2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX0dldFBsdWdp
blByb2Nlc3NDb25uZWN0aW9uOyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gdHJ1
ZTsKKworICAgIHVzaW5nIERlbGF5ZWRSZXBseSA9IEdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9u
RGVsYXllZFJlcGx5OworICAgIHN0YXRpYyB2b2lkIHNlbmQoc3RkOjp1bmlxdWVfcHRyPElQQzo6
RW5jb2Rlcj4mJiwgSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgSVBDOjpDb25uZWN0aW9uOjpIYW5k
bGUmIGNvbm5lY3Rpb25IYW5kbGUpOworICAgIHVzaW5nIFJlcGx5ID0gc3RkOjp0dXBsZTxJUEM6
OkNvbm5lY3Rpb246OkhhbmRsZSY+OworICAgIHVzaW5nIFJlcGx5QXJndW1lbnRzID0gc3RkOjp0
dXBsZTxJUEM6OkNvbm5lY3Rpb246OkhhbmRsZT47CisgICAgZXhwbGljaXQgR2V0UGx1Z2luUHJv
Y2Vzc0Nvbm5lY3Rpb24oY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoKQorICAgICAgICA6IG1fYXJn
dW1lbnRzKHBsdWdpblBhdGgpCisgICAgeworICAgIH0KKworICAgIGNvbnN0IEFyZ3VtZW50cyYg
YXJndW1lbnRzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKKyAg
ICB9CisKK3ByaXZhdGU6CisgICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOworfTsKKworY2xhc3Mg
VGVzdE11bHRpcGxlQXR0cmlidXRlcyB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBzdGQ6OnR1cGxl
PD4gQXJndW1lbnRzOworCisgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0
dXJuIElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVzdE11bHRpcGxlQXR0cmlidXRlczsgfQor
ICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IHRydWU7CisKKyAgICB1c2luZyBEZWxheWVk
UmVwbHkgPSBUZXN0TXVsdGlwbGVBdHRyaWJ1dGVzRGVsYXllZFJlcGx5OworICAgIHN0YXRpYyB2
b2lkIHNlbmQoc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mJiwgSVBDOjpDb25uZWN0aW9u
Jik7CisgICAgdXNpbmcgUmVwbHkgPSBzdGQ6OnR1cGxlPD47CisgICAgdXNpbmcgUmVwbHlBcmd1
bWVudHMgPSBzdGQ6OnR1cGxlPD47CisgICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBj
b25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOworICAgIH0KKworcHJpdmF0
ZToKKyAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Cit9OworCitjbGFzcyBUZXN0UGFyYW1ldGVy
QXR0cmlidXRlcyB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBzdGQ6OnR1cGxlPHVpbnQ2NF90LCBk
b3VibGUsIGRvdWJsZT4gQXJndW1lbnRzOworCisgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUg
bmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVzdFBhcmFtZXRlckF0
dHJpYnV0ZXM7IH0KKyAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKKworICAg
IFRlc3RQYXJhbWV0ZXJBdHRyaWJ1dGVzKHVpbnQ2NF90IGZvbywgZG91YmxlIGJhciwgZG91Ymxl
IGJheikKKyAgICAgICAgOiBtX2FyZ3VtZW50cyhmb28sIGJhciwgYmF6KQorICAgIHsKKyAgICB9
CisKKyAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0CisgICAgeworICAgICAg
ICByZXR1cm4gbV9hcmd1bWVudHM7CisgICAgfQorCitwcml2YXRlOgorICAgIEFyZ3VtZW50cyBt
X2FyZ3VtZW50czsKK307CisKK2NsYXNzIFRlbXBsYXRlVGVzdCB7CitwdWJsaWM6CisgICAgdHlw
ZWRlZiBzdGQ6OnR1cGxlPGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBzdGQ6OnBhaXI8U3RyaW5nLCB1
aW50NjRfdD4+Jj4gQXJndW1lbnRzOworCisgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFt
ZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVtcGxhdGVUZXN0OyB9Cisg
ICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7CisKKyAgICBleHBsaWNpdCBUZW1w
bGF0ZVRlc3QoY29uc3QgSGFzaE1hcDxTdHJpbmcsIHN0ZDo6cGFpcjxTdHJpbmcsIHVpbnQ2NF90
Pj4mIGEpCisgICAgICAgIDogbV9hcmd1bWVudHMoYSkKKyAgICB7CisgICAgfQorCisgICAgY29u
c3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1f
YXJndW1lbnRzOworICAgIH0KKworcHJpdmF0ZToKKyAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7
Cit9OworCitjbGFzcyBTZXRWaWRlb0xheWVySUQgeworcHVibGljOgorICAgIHR5cGVkZWYgc3Rk
Ojp0dXBsZTxjb25zdCBXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQmPiBB
cmd1bWVudHM7CisKKyAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4g
SVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9TZXRWaWRlb0xheWVySUQ7IH0KKyAgICBzdGF0aWMg
Y29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKKworICAgIGV4cGxpY2l0IFNldFZpZGVvTGF5ZXJJ
RChjb25zdCBXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQmIHZpZGVvTGF5
ZXJJRCkKKyAgICAgICAgOiBtX2FyZ3VtZW50cyh2aWRlb0xheWVySUQpCisgICAgeworICAgIH0K
KworICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKKyAgICB7CisgICAgICAg
IHJldHVybiBtX2FyZ3VtZW50czsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQXJndW1lbnRzIG1f
YXJndW1lbnRzOworfTsKKworI2lmIFBMQVRGT1JNKE1BQykKK2NsYXNzIERpZENyZWF0ZVdlYlBy
b2Nlc3NDb25uZWN0aW9uIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8Y29uc3Qg
SVBDOjpNYWNoUG9ydCY+IEFyZ3VtZW50czsKKworICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1l
IG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX0RpZENyZWF0ZVdlYlBy
b2Nlc3NDb25uZWN0aW9uOyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7
CisKKyAgICBleHBsaWNpdCBEaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbihjb25zdCBJUEM6
Ok1hY2hQb3J0JiBjb25uZWN0aW9uSWRlbnRpZmllcikKKyAgICAgICAgOiBtX2FyZ3VtZW50cyhj
b25uZWN0aW9uSWRlbnRpZmllcikKKyAgICB7CisgICAgfQorCisgICAgY29uc3QgQXJndW1lbnRz
JiBhcmd1bWVudHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwor
ICAgIH0KKworcHJpdmF0ZToKKyAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Cit9OworI2VuZGlm
CisKKyNpZiBQTEFURk9STShNQUMpCitjbGFzcyBJbnRlcnByZXRLZXlFdmVudCB7CitwdWJsaWM6
CisgICAgdHlwZWRlZiBzdGQ6OnR1cGxlPHVpbnQzMl90PiBBcmd1bWVudHM7CisKKyAgICBzdGF0
aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6V2Vi
UGFnZV9JbnRlcnByZXRLZXlFdmVudDsgfQorICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9
IHRydWU7CisKKyAgICB1c2luZyBSZXBseSA9IHN0ZDo6dHVwbGU8VmVjdG9yPFdlYkNvcmU6Oktl
eXByZXNzQ29tbWFuZD4mPjsKKyAgICB1c2luZyBSZXBseUFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8
VmVjdG9yPFdlYkNvcmU6OktleXByZXNzQ29tbWFuZD4+OworICAgIGV4cGxpY2l0IEludGVycHJl
dEtleUV2ZW50KHVpbnQzMl90IHR5cGUpCisgICAgICAgIDogbV9hcmd1bWVudHModHlwZSkKKyAg
ICB7CisgICAgfQorCisgICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAorICAg
IHsKKyAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOworICAgIH0KKworcHJpdmF0ZToKKyAgICBB
cmd1bWVudHMgbV9hcmd1bWVudHM7Cit9OworI2VuZGlmCisKKyNpZiBFTkFCTEUoREVQUkVDQVRF
RF9GRUFUVVJFKQorY2xhc3MgRGVwcmVjYXRlZE9wZXJhdGlvbiB7CitwdWJsaWM6CisgICAgdHlw
ZWRlZiBzdGQ6OnR1cGxlPGNvbnN0IElQQzo6RHVtbXlUeXBlJj4gQXJndW1lbnRzOworCisgICAg
c3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6
OldlYlBhZ2VfRGVwcmVjYXRlZE9wZXJhdGlvbjsgfQorICAgIHN0YXRpYyBjb25zdCBib29sIGlz
U3luYyA9IGZhbHNlOworCisgICAgZXhwbGljaXQgRGVwcmVjYXRlZE9wZXJhdGlvbihjb25zdCBJ
UEM6OkR1bW15VHlwZSYgZHVtbXkpCisgICAgICAgIDogbV9hcmd1bWVudHMoZHVtbXkpCisgICAg
eworICAgIH0KKworICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKKyAgICB7
CisgICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQXJn
dW1lbnRzIG1fYXJndW1lbnRzOworfTsKKyNlbmRpZgorCisjaWYgRU5BQkxFKEVYUEVSSU1FTlRB
TF9GRUFUVVJFKQorY2xhc3MgRXhwZXJpbWVudGFsT3BlcmF0aW9uIHsKK3B1YmxpYzoKKyAgICB0
eXBlZGVmIHN0ZDo6dHVwbGU8Y29uc3QgSVBDOjpEdW1teVR5cGUmPiBBcmd1bWVudHM7CisKKyAg
ICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFt
ZTo6V2ViUGFnZV9FeHBlcmltZW50YWxPcGVyYXRpb247IH0KKyAgICBzdGF0aWMgY29uc3QgYm9v
bCBpc1N5bmMgPSBmYWxzZTsKKworICAgIGV4cGxpY2l0IEV4cGVyaW1lbnRhbE9wZXJhdGlvbihj
b25zdCBJUEM6OkR1bW15VHlwZSYgZHVtbXkpCisgICAgICAgIDogbV9hcmd1bWVudHMoZHVtbXkp
CisgICAgeworICAgIH0KKworICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QK
KyAgICB7CisgICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKKyAgICB9CisKK3ByaXZhdGU6Cisg
ICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOworfTsKKyNlbmRpZgorCit9IC8vIG5hbWVzcGFjZSBX
ZWJQYWdlCit9IC8vIG5hbWVzcGFjZSBNZXNzYWdlcworCisjZW5kaWYgLy8gKEVOQUJMRShXRUJL
SVQyKSAmJiAoTkVTVEVEX01BU1RFUl9DT05ESVRJT04gfHwgTUFTVEVSX09SICYmIE1BU1RFUl9B
TkQpKQpJbmRleDogU291cmNlL1dlYktpdC9TY3JpcHRzL3Rlc3QtbGVnYWN5TWVzc2FnZXNSZXBs
aWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TY3JpcHRzL3Rlc3QtbGVnYWN5TWVz
c2FnZXNSZXBsaWVzLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9TY3JpcHRzL3Rl
c3QtbGVnYWN5TWVzc2FnZXNSZXBsaWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IK
KyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgKEVOQUJMRShXRUJLSVQy
KSAmJiAoTkVTVEVEX01BU1RFUl9DT05ESVRJT04gfHwgTUFTVEVSX09SICYmIE1BU1RFUl9BTkQp
KQorCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIk1lc3NhZ2VOYW1lcy5oIgor
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKKworbmFtZXNwYWNlIE1lc3NhZ2VzIHsKK25hbWVz
cGFjZSBXZWJQYWdlIHsKKwordXNpbmcgR2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25EZWxheWVk
UmVwbHkgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6Q29ubmVjdGlvbjo6SGFu
ZGxlJiBjb25uZWN0aW9uSGFuZGxlKT47CisKK3VzaW5nIFRlc3RNdWx0aXBsZUF0dHJpYnV0ZXNE
ZWxheWVkUmVwbHkgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJQYWdlCit9IC8vIG5hbWVzcGFjZSBNZXNzYWdlcworCisjZW5kaWYgLy8gKEVOQUJMRShX
RUJLSVQyKSAmJiAoTkVTVEVEX01BU1RFUl9DT05ESVRJT04gfHwgTUFTVEVSX09SICYmIE1BU1RF
Ul9BTkQpKQpJbmRleDogU291cmNlL1dlYktpdC9TY3JpcHRzL3Rlc3Qtc3VwZXJjbGFzc01lc3Nh
Z2VSZWNlaXZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TY3JpcHRzL3Rlc3Qt
c3VwZXJjbGFzc01lc3NhZ2VSZWNlaXZlci5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dl
YktpdC9TY3JpcHRzL3Rlc3Qtc3VwZXJjbGFzc01lc3NhZ2VSZWNlaXZlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSwxODkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
KyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisKKyNpbmNsdWRlICJXZWJQYWdlLmgiCisKKyNpbmNsdWRlICJBcmd1bWVudENvZGVy
cy5oIgorI2luY2x1ZGUgIkRlY29kZXIuaCIKKyNpbmNsdWRlICJIYW5kbGVNZXNzYWdlLmgiCisj
aW5jbHVkZSAiVGVzdENsYXNzTmFtZS5oIgorI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCisjaW5j
bHVkZSAiVGVzdFR3b1N0YXRlRW51bS5oIgorI2VuZGlmCisjaW5jbHVkZSAiV2ViUGFnZU1lc3Nh
Z2VzLmgiCisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CisKK25hbWVzcGFjZSBNZXNzYWdlcyB7CisKK25hbWVzcGFjZSBXZWJQYWdlIHsK
KworI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCisKK3ZvaWQgVGVzdEFzeW5jTWVzc2FnZTo6Y2Fs
bFJlcGx5KElQQzo6RGVjb2RlciYgZGVjb2RlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50
NjRfdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBPcHRpb25hbDx1aW50NjRfdD4g
cmVzdWx0OworICAgIGRlY29kZXIgPj4gcmVzdWx0OworICAgIGlmICghcmVzdWx0KSB7CisgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBjYW5jZWxSZXBseShXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgY29tcGxldGlv
bkhhbmRsZXIoV1RGTW92ZSgqcmVzdWx0KSk7Cit9CisKK3ZvaWQgVGVzdEFzeW5jTWVzc2FnZTo6
Y2FuY2VsUmVwbHkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCYmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3sKKyAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkFzeW5jUmVwbHlFcnJv
cjx1aW50NjRfdD46OmNyZWF0ZSgpKTsKK30KKwordm9pZCBUZXN0QXN5bmNNZXNzYWdlOjpzZW5k
KHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiYgZW5jb2RlciwgSVBDOjpDb25uZWN0aW9u
JiBjb25uZWN0aW9uLCB1aW50NjRfdCByZXN1bHQpCit7CisgICAgKmVuY29kZXIgPDwgcmVzdWx0
OworICAgIGNvbm5lY3Rpb24uc2VuZFN5bmNSZXBseShXVEZNb3ZlKGVuY29kZXIpKTsKK30KKwor
I2VuZGlmCisKKyNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQorCit2b2lkIFRlc3RBc3luY01lc3Nh
Z2VXaXRoTm9Bcmd1bWVudHM6OmNhbGxSZXBseShJUEM6OkRlY29kZXImIGRlY29kZXIsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBjb21wbGV0
aW9uSGFuZGxlcigpOworfQorCit2b2lkIFRlc3RBc3luY01lc3NhZ2VXaXRoTm9Bcmd1bWVudHM6
OmNhbmNlbFJlcGx5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKK3sKKyAgICBjb21wbGV0aW9uSGFuZGxlcigpOworfQorCit2b2lkIFRlc3RBc3luY01lc3Nh
Z2VXaXRoTm9Bcmd1bWVudHM6OnNlbmQoc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mJiBl
bmNvZGVyLCBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCit7CisgICAgY29ubmVjdGlvbi5z
ZW5kU3luY1JlcGx5KFdURk1vdmUoZW5jb2RlcikpOworfQorCisjZW5kaWYKKworI2lmIEVOQUJM
RShURVNUX0ZFQVRVUkUpCisKK3ZvaWQgVGVzdEFzeW5jTWVzc2FnZVdpdGhNdWx0aXBsZUFyZ3Vt
ZW50czo6Y2FsbFJlcGx5KElQQzo6RGVjb2RlciYgZGVjb2RlciwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sJiYsIHVpbnQ2NF90JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIE9w
dGlvbmFsPGJvb2w+IGZsYWc7CisgICAgZGVjb2RlciA+PiBmbGFnOworICAgIGlmICghZmxhZykg
eworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgY2FuY2VsUmVwbHkoV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIE9w
dGlvbmFsPHVpbnQ2NF90PiB2YWx1ZTsKKyAgICBkZWNvZGVyID4+IHZhbHVlOworICAgIGlmICgh
dmFsdWUpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGNhbmNlbFJl
cGx5KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKCpmbGFnKSwgV1RGTW92ZSgqdmFsdWUpKTsK
K30KKwordm9pZCBUZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1lbnRzOjpjYW5jZWxS
ZXBseShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wmJiwgdWludDY0X3QmJik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit7CisgICAgY29tcGxldGlvbkhhbmRsZXIoSVBDOjpBc3luY1JlcGx5RXJy
b3I8Ym9vbD46OmNyZWF0ZSgpLCBJUEM6OkFzeW5jUmVwbHlFcnJvcjx1aW50NjRfdD46OmNyZWF0
ZSgpKTsKK30KKwordm9pZCBUZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1lbnRzOjpz
ZW5kKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiYgZW5jb2RlciwgSVBDOjpDb25uZWN0
aW9uJiBjb25uZWN0aW9uLCBib29sIGZsYWcsIHVpbnQ2NF90IHZhbHVlKQoreworICAgICplbmNv
ZGVyIDw8IGZsYWc7CisgICAgKmVuY29kZXIgPDwgdmFsdWU7CisgICAgY29ubmVjdGlvbi5zZW5k
U3luY1JlcGx5KFdURk1vdmUoZW5jb2RlcikpOworfQorCisjZW5kaWYKKwordm9pZCBUZXN0U3lu
Y01lc3NhZ2U6OnNlbmQoc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mJiBlbmNvZGVyLCBJ
UEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIHVpbnQ4X3QgcmVwbHkpCit7CisgICAgKmVuY29k
ZXIgPDwgcmVwbHk7CisgICAgY29ubmVjdGlvbi5zZW5kU3luY1JlcGx5KFdURk1vdmUoZW5jb2Rl
cikpOworfQorCit2b2lkIFRlc3RTeW5jaHJvbm91c01lc3NhZ2U6OnNlbmQoc3RkOjp1bmlxdWVf
cHRyPElQQzo6RW5jb2Rlcj4mJiBlbmNvZGVyLCBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24s
IGNvbnN0IE9wdGlvbmFsPFdlYktpdDo6VGVzdENsYXNzTmFtZT4mIG9wdGlvbmFsUmVwbHkpCit7
CisgICAgKmVuY29kZXIgPDwgb3B0aW9uYWxSZXBseTsKKyAgICBjb25uZWN0aW9uLnNlbmRTeW5j
UmVwbHkoV1RGTW92ZShlbmNvZGVyKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYlBhZ2UKKwor
fSAvLyBuYW1lc3BhY2UgTWVzc2FnZXMKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgV2Vi
UGFnZTo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6
OkRlY29kZXImIGRlY29kZXIpCit7CisgICAgYXV0byBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyk7CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFn
ZTo6TG9hZFVSTDo6bmFtZSgpKSB7CisgICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdl
czo6V2ViUGFnZTo6TG9hZFVSTD4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OmxvYWRVUkwpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCisgICAgaWYg
KGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6VGVzdEFzeW5jTWVz
c2FnZTo6bmFtZSgpKSB7CisgICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZUFzeW5jPE1lc3NhZ2Vz
OjpXZWJQYWdlOjpUZXN0QXN5bmNNZXNzYWdlPihjb25uZWN0aW9uLCBkZWNvZGVyLCB0aGlzLCAm
V2ViUGFnZTo6dGVzdEFzeW5jTWVzc2FnZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5k
aWYKKyNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1l
KCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RBc3luY01lc3NhZ2VXaXRoTm9Bcmd1bWVudHM6
Om5hbWUoKSkgeworICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2VBc3luYzxNZXNzYWdlczo6V2Vi
UGFnZTo6VGVzdEFzeW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50cz4oY29ubmVjdGlvbiwgZGVjb2Rl
ciwgdGhpcywgJldlYlBhZ2U6OnRlc3RBc3luY01lc3NhZ2VXaXRoTm9Bcmd1bWVudHMpOworICAg
ICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKKyAg
ICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0QXN5
bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1lbnRzOjpuYW1lKCkpIHsKKyAgICAgICAgSVBDOjpo
YW5kbGVNZXNzYWdlQXN5bmM8TWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RBc3luY01lc3NhZ2VXaXRo
TXVsdGlwbGVBcmd1bWVudHM+KGNvbm5lY3Rpb24sIGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjp0
ZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1lbnRzKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKyNlbmRpZgorICAgIFdlYlBhZ2VCYXNlOjpkaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0
aW9uLCBkZWNvZGVyKTsKK30KKwordm9pZCBXZWJQYWdlOjpkaWRSZWNlaXZlU3luY01lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIHN0ZDo6
dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiByZXBseUVuY29kZXIpCit7CisgICAgYXV0byBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyk7CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUo
KSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6VGVzdFN5bmNNZXNzYWdlOjpuYW1lKCkpIHsKKyAgICAg
ICAgSVBDOjpoYW5kbGVNZXNzYWdlU3luY2hyb25vdXM8TWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RT
eW5jTWVzc2FnZT4oY29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyLCB0aGlzLCAmV2Vi
UGFnZTo6dGVzdFN5bmNNZXNzYWdlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAo
ZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0U3luY2hyb25v
dXNNZXNzYWdlOjpuYW1lKCkpIHsKKyAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlU3luY2hyb25v
dXM8TWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RTeW5jaHJvbm91c01lc3NhZ2U+KGNvbm5lY3Rpb24s
IGRlY29kZXIsIHJlcGx5RW5jb2RlciwgdGhpcywgJldlYlBhZ2U6OnRlc3RTeW5jaHJvbm91c01l
c3NhZ2UpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIFVOVVNFRF9QQVJBTShjb25uZWN0
aW9uKTsKKyAgICBVTlVTRURfUEFSQU0oZGVjb2Rlcik7CisgICAgVU5VU0VEX1BBUkFNKHJlcGx5
RW5jb2Rlcik7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdAorCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvdGVzdC1zdXBlcmNsYXNzTWVz
c2FnZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvdGVzdC1zdXBlcmNs
YXNzTWVzc2FnZXMuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvdGVz
dC1zdXBlcmNsYXNzTWVzc2FnZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDIwMSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyAq
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQXJndW1lbnRDb2Rl
cnMuaCIKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiTWVzc2FnZU5hbWVzLmgi
CisjaW5jbHVkZSAiVGVzdENsYXNzTmFtZS5oIgorI2luY2x1ZGUgIldlYlBhZ2VNZXNzYWdlc1Jl
cGxpZXMuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9PcHRpb25h
bC5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKK2VudW0gY2xhc3MgVGVz
dFR3b1N0YXRlRW51bSA6IGJvb2w7Cit9CisKK25hbWVzcGFjZSBNZXNzYWdlcyB7CituYW1lc3Bh
Y2UgV2ViUGFnZSB7CisKK3N0YXRpYyBpbmxpbmUgSVBDOjpSZWNlaXZlck5hbWUgbWVzc2FnZVJl
Y2VpdmVyTmFtZSgpCit7CisgICAgcmV0dXJuIElQQzo6UmVjZWl2ZXJOYW1lOjpXZWJQYWdlOwor
fQorCitjbGFzcyBMb2FkVVJMIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8Y29u
c3QgU3RyaW5nJj4gQXJndW1lbnRzOworCisgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFt
ZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfTG9hZFVSTDsgfQorICAgIHN0
YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOworCisgICAgZXhwbGljaXQgTG9hZFVSTChj
b25zdCBTdHJpbmcmIHVybCkKKyAgICAgICAgOiBtX2FyZ3VtZW50cyh1cmwpCisgICAgeworICAg
IH0KKworICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKKyAgICB7CisgICAg
ICAgIHJldHVybiBtX2FyZ3VtZW50czsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQXJndW1lbnRz
IG1fYXJndW1lbnRzOworfTsKKworI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCitjbGFzcyBUZXN0
QXN5bmNNZXNzYWdlIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8V2ViS2l0OjpU
ZXN0VHdvU3RhdGVFbnVtPiBBcmd1bWVudHM7CisKKyAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFt
ZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9UZXN0QXN5bmNNZXNz
YWdlOyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7CisKKyAgICBzdGF0
aWMgdm9pZCBjYWxsUmVwbHkoSVBDOjpEZWNvZGVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1
aW50NjRfdCYmKT4mJik7CisgICAgc3RhdGljIHZvaWQgY2FuY2VsUmVwbHkoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCh1aW50NjRfdCYmKT4mJik7CisgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUg
YXN5bmNNZXNzYWdlUmVwbHlOYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFn
ZV9UZXN0QXN5bmNNZXNzYWdlUmVwbHk7IH0KKyAgICB1c2luZyBBc3luY1JlcGx5ID0gVGVzdEFz
eW5jTWVzc2FnZUFzeW5jUmVwbHk7CisgICAgc3RhdGljIHZvaWQgc2VuZChzdGQ6OnVuaXF1ZV9w
dHI8SVBDOjpFbmNvZGVyPiYmLCBJUEM6OkNvbm5lY3Rpb24mLCB1aW50NjRfdCByZXN1bHQpOwor
ICAgIHVzaW5nIFJlcGx5ID0gc3RkOjp0dXBsZTx1aW50NjRfdCY+OworICAgIHVzaW5nIFJlcGx5
QXJndW1lbnRzID0gc3RkOjp0dXBsZTx1aW50NjRfdD47CisgICAgZXhwbGljaXQgVGVzdEFzeW5j
TWVzc2FnZShXZWJLaXQ6OlRlc3RUd29TdGF0ZUVudW0gdHdvU3RhdGVFbnVtKQorICAgICAgICA6
IG1fYXJndW1lbnRzKHR3b1N0YXRlRW51bSkKKyAgICB7CisgICAgfQorCisgICAgY29uc3QgQXJn
dW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYXJndW1l
bnRzOworICAgIH0KKworcHJpdmF0ZToKKyAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Cit9Owor
I2VuZGlmCisKKyNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQorY2xhc3MgVGVzdEFzeW5jTWVzc2Fn
ZVdpdGhOb0FyZ3VtZW50cyB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBzdGQ6OnR1cGxlPD4gQXJn
dW1lbnRzOworCisgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQ
Qzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVzdEFzeW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50czsg
fQorICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOworCisgICAgc3RhdGljIHZv
aWQgY2FsbFJlcGx5KElQQzo6RGVjb2RlciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7
CisgICAgc3RhdGljIHZvaWQgY2FuY2VsUmVwbHkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKKyAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBhc3luY01lc3NhZ2VSZXBseU5hbWUoKSB7
IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX1Rlc3RBc3luY01lc3NhZ2VXaXRoTm9B
cmd1bWVudHNSZXBseTsgfQorICAgIHVzaW5nIEFzeW5jUmVwbHkgPSBUZXN0QXN5bmNNZXNzYWdl
V2l0aE5vQXJndW1lbnRzQXN5bmNSZXBseTsKKyAgICBzdGF0aWMgdm9pZCBzZW5kKHN0ZDo6dW5p
cXVlX3B0cjxJUEM6OkVuY29kZXI+JiYsIElQQzo6Q29ubmVjdGlvbiYpOworICAgIHVzaW5nIFJl
cGx5ID0gc3RkOjp0dXBsZTw+OworICAgIHVzaW5nIFJlcGx5QXJndW1lbnRzID0gc3RkOjp0dXBs
ZTw+OworICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKKyAgICB7CisgICAg
ICAgIHJldHVybiBtX2FyZ3VtZW50czsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQXJndW1lbnRz
IG1fYXJndW1lbnRzOworfTsKKyNlbmRpZgorCisjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKK2Ns
YXNzIFRlc3RBc3luY01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHMgeworcHVibGljOgorICAg
IHR5cGVkZWYgc3RkOjp0dXBsZTw+IEFyZ3VtZW50czsKKworICAgIHN0YXRpYyBJUEM6Ok1lc3Nh
Z2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX1Rlc3RBc3lu
Y01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHM7IH0KKyAgICBzdGF0aWMgY29uc3QgYm9vbCBp
c1N5bmMgPSBmYWxzZTsKKworICAgIHN0YXRpYyB2b2lkIGNhbGxSZXBseShJUEM6OkRlY29kZXIm
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wmJiwgdWludDY0X3QmJik+JiYpOworICAgIHN0
YXRpYyB2b2lkIGNhbmNlbFJlcGx5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCYmLCB1aW50
NjRfdCYmKT4mJik7CisgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgYXN5bmNNZXNzYWdlUmVw
bHlOYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9UZXN0QXN5bmNNZXNz
YWdlV2l0aE11bHRpcGxlQXJndW1lbnRzUmVwbHk7IH0KKyAgICB1c2luZyBBc3luY1JlcGx5ID0g
VGVzdEFzeW5jTWVzc2FnZVdpdGhNdWx0aXBsZUFyZ3VtZW50c0FzeW5jUmVwbHk7CisgICAgc3Rh
dGljIHZvaWQgc2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYmLCBJUEM6OkNvbm5l
Y3Rpb24mLCBib29sIGZsYWcsIHVpbnQ2NF90IHZhbHVlKTsKKyAgICB1c2luZyBSZXBseSA9IHN0
ZDo6dHVwbGU8Ym9vbCYsIHVpbnQ2NF90Jj47CisgICAgdXNpbmcgUmVwbHlBcmd1bWVudHMgPSBz
dGQ6OnR1cGxlPGJvb2wsIHVpbnQ2NF90PjsKKyAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50
cygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7CisgICAgfQorCitw
cml2YXRlOgorICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKK307CisjZW5kaWYKKworY2xhc3Mg
VGVzdFN5bmNNZXNzYWdlIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8dWludDMy
X3Q+IEFyZ3VtZW50czsKKworICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJl
dHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX1Rlc3RTeW5jTWVzc2FnZTsgfQorICAgIHN0
YXRpYyBjb25zdCBib29sIGlzU3luYyA9IHRydWU7CisKKyAgICB1c2luZyBEZWxheWVkUmVwbHkg
PSBUZXN0U3luY01lc3NhZ2VEZWxheWVkUmVwbHk7CisgICAgc3RhdGljIHZvaWQgc2VuZChzdGQ6
OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYmLCBJUEM6OkNvbm5lY3Rpb24mLCB1aW50OF90IHJl
cGx5KTsKKyAgICB1c2luZyBSZXBseSA9IHN0ZDo6dHVwbGU8dWludDhfdCY+OworICAgIHVzaW5n
IFJlcGx5QXJndW1lbnRzID0gc3RkOjp0dXBsZTx1aW50OF90PjsKKyAgICBleHBsaWNpdCBUZXN0
U3luY01lc3NhZ2UodWludDMyX3QgcGFyYW0pCisgICAgICAgIDogbV9hcmd1bWVudHMocGFyYW0p
CisgICAgeworICAgIH0KKworICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QK
KyAgICB7CisgICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKKyAgICB9CisKK3ByaXZhdGU6Cisg
ICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOworfTsKKworY2xhc3MgVGVzdFN5bmNocm9ub3VzTWVz
c2FnZSB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGJvb2w+IEFyZ3VtZW50czsK
KworICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3Nh
Z2VOYW1lOjpXZWJQYWdlX1Rlc3RTeW5jaHJvbm91c01lc3NhZ2U7IH0KKyAgICBzdGF0aWMgY29u
c3QgYm9vbCBpc1N5bmMgPSB0cnVlOworCisgICAgdXNpbmcgRGVsYXllZFJlcGx5ID0gVGVzdFN5
bmNocm9ub3VzTWVzc2FnZURlbGF5ZWRSZXBseTsKKyAgICBzdGF0aWMgdm9pZCBzZW5kKHN0ZDo6
dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiYsIElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IE9wdGlv
bmFsPFdlYktpdDo6VGVzdENsYXNzTmFtZT4mIG9wdGlvbmFsUmVwbHkpOworICAgIHVzaW5nIFJl
cGx5ID0gc3RkOjp0dXBsZTxPcHRpb25hbDxXZWJLaXQ6OlRlc3RDbGFzc05hbWU+Jj47CisgICAg
dXNpbmcgUmVwbHlBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPE9wdGlvbmFsPFdlYktpdDo6VGVzdENs
YXNzTmFtZT4+OworICAgIGV4cGxpY2l0IFRlc3RTeW5jaHJvbm91c01lc3NhZ2UoYm9vbCB2YWx1
ZSkKKyAgICAgICAgOiBtX2FyZ3VtZW50cyh2YWx1ZSkKKyAgICB7CisgICAgfQorCisgICAgY29u
c3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1f
YXJndW1lbnRzOworICAgIH0KKworcHJpdmF0ZToKKyAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJQYWdlCit9IC8vIG5hbWVzcGFjZSBNZXNzYWdlcwpJ
bmRleDogU291cmNlL1dlYktpdC9TY3JpcHRzL3Rlc3Qtc3VwZXJjbGFzc01lc3NhZ2VzUmVwbGll
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy90ZXN0LXN1cGVyY2xhc3NN
ZXNzYWdlc1JlcGxpZXMuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1NjcmlwdHMv
dGVzdC1zdXBlcmNsYXNzTWVzc2FnZXNSZXBsaWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisg
KiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IKKyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTWVz
c2FnZU5hbWVzLmgiCisjaW5jbHVkZSAiVGVzdENsYXNzTmFtZS5oIgorI2luY2x1ZGUgPHd0Zi9G
b3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisKKworbmFtZXNwYWNlIE1lc3Nh
Z2VzIHsKK25hbWVzcGFjZSBXZWJQYWdlIHsKKworI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCit1
c2luZyBUZXN0QXN5bmNNZXNzYWdlQXN5bmNSZXBseSA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
dWludDY0X3QgcmVzdWx0KT47CisjZW5kaWYKKworI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCit1
c2luZyBUZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJndW1lbnRzQXN5bmNSZXBseSA9IENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT47CisjZW5kaWYKKworI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCit1
c2luZyBUZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1lbnRzQXN5bmNSZXBseSA9IENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBmbGFnLCB1aW50NjRfdCB2YWx1ZSk+OworI2VuZGlm
CisKK3VzaW5nIFRlc3RTeW5jTWVzc2FnZURlbGF5ZWRSZXBseSA9IENvbXBsZXRpb25IYW5kbGVy
PHZvaWQodWludDhfdCByZXBseSk+OworCit1c2luZyBUZXN0U3luY2hyb25vdXNNZXNzYWdlRGVs
YXllZFJlcGx5ID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBPcHRpb25hbDxXZWJLaXQ6
OlRlc3RDbGFzc05hbWU+JiBvcHRpb25hbFJlcGx5KT47CisKK30gLy8gbmFtZXNwYWNlIFdlYlBh
Z2UKK30gLy8gbmFtZXNwYWNlIE1lc3NhZ2VzCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMv
dGVzdE1lc3NhZ2VSZWNlaXZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TY3Jp
cHRzL3Rlc3RNZXNzYWdlUmVjZWl2ZXIuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJL
aXQvU2NyaXB0cy90ZXN0TWVzc2FnZVJlY2VpdmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDM3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQK
KyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUgorICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSCisgKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorICogT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5j
bHVkZSAiTm9uZS5oIgorCisjaW5jbHVkZSAiRGVjb2Rlci5oIgorI2luY2x1ZGUgIkhhbmRsZU1l
c3NhZ2UuaCIKKyNpbmNsdWRlICJOb25lTWVzc2FnZXMuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7
CisKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2NyaXB0
cy90ZXN0TWVzc2FnZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvdGVz
dE1lc3NhZ2VzLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9TY3JpcHRzL3Rlc3RN
ZXNzYWdlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTAtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
CisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVk
ZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIk1lc3NhZ2VOYW1lcy5oIgorI2luY2x1ZGUgIk5v
bmVNZXNzYWdlc1JlcGxpZXMuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUg
PHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorCisKK25hbWVzcGFjZSBNZXNzYWdlcyB7Citu
YW1lc3BhY2UgTm9uZSB7CisKK3N0YXRpYyBpbmxpbmUgSVBDOjpSZWNlaXZlck5hbWUgbWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpCit7CisgICAgcmV0dXJuIElQQzo6UmVjZWl2ZXJOYW1lOjpOb25lOwor
fQorCisKK30gLy8gbmFtZXNwYWNlIE5vbmUKK30gLy8gbmFtZXNwYWNlIE1lc3NhZ2VzCkluZGV4
OiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvdGVzdE1lc3NhZ2VzUmVwbGllcy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy90ZXN0TWVzc2FnZXNSZXBsaWVzLmgJKG5vbmV4aXN0
ZW50KQorKysgU291cmNlL1dlYktpdC9TY3JpcHRzL3Rlc3RNZXNzYWdlc1JlcGxpZXMuaAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisgKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAor
ICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpbmNsdWRlICJNZXNzYWdlTmFtZXMuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgorCisKK25hbWVzcGFjZSBNZXNzYWdlcyB7CituYW1lc3BhY2UgTm9uZSB7CisKKworfSAvLyBu
YW1lc3BhY2UgTm9uZQorfSAvLyBuYW1lc3BhY2UgTWVzc2FnZXMKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvU2NyaXB0cy93ZWJraXQvTGVnYWN5TWVzc2FnZVJlY2VpdmVyLWV4cGVjdGVkLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L0xlZ2FjeU1lc3NhZ2VSZWNl
aXZlci1leHBlY3RlZC5jcHAJKHJldmlzaW9uIDI2MTIzOCkKKysrIFNvdXJjZS9XZWJLaXQvU2Ny
aXB0cy93ZWJraXQvTGVnYWN5TWVzc2FnZVJlY2VpdmVyLWV4cGVjdGVkLmNwcAkobm9uZXhpc3Rl
bnQpCkBAIC0xLDIwMyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJyBBTkQKLSAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0g
KiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUgotICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotICogREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IKLSAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0gKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotICogT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZp
Zy5oIgotCi0jaWYgKEVOQUJMRShXRUJLSVQyKSAmJiAoTkVTVEVEX01BU1RFUl9DT05ESVRJT04g
fHwgTUFTVEVSX09SICYmIE1BU1RFUl9BTkQpKQotCi0jaW5jbHVkZSAiV2ViUGFnZS5oIgotCi0j
aW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKLSNpbmNsdWRlICJDb25uZWN0aW9uLmgiCi0jaW5j
bHVkZSAiRGVjb2Rlci5oIgotI2lmIEVOQUJMRShERVBSRUNBVEVEX0ZFQVRVUkUpIHx8IEVOQUJM
RShFWFBFUklNRU5UQUxfRkVBVFVSRSkKLSNpbmNsdWRlICJEdW1teVR5cGUuaCIKLSNlbmRpZgot
I2luY2x1ZGUgIkhhbmRsZU1lc3NhZ2UuaCIKLSNpZiBQTEFURk9STShNQUMpCi0jaW5jbHVkZSAi
TWFjaFBvcnQuaCIKLSNlbmRpZgotI2luY2x1ZGUgIlBsdWdpbi5oIgotI2luY2x1ZGUgIldlYkNv
cmVBcmd1bWVudENvZGVycy5oIgotI2lmIChFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiAoTkVTVEVE
X01FU1NBR0VfQ09ORElUSU9OICYmIFNPTUVfT1RIRVJfTUVTU0FHRV9DT05ESVRJT04pKSB8fCAo
RU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgKE5FU1RFRF9NRVNTQUdFX0NPTkRJVElPTiB8fCBTT01F
X09USEVSX01FU1NBR0VfQ09ORElUSU9OKSkKLSNpbmNsdWRlICJXZWJFdmVudC5oIgotI2VuZGlm
Ci0jaW5jbHVkZSAiV2ViUGFnZU1lc3NhZ2VzLmgiCi0jaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXNT
dG9yZS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NMYXllci5oPgotI2lmIFBMQVRGT1JN
KE1BQykKLSNpbmNsdWRlIDxXZWJDb3JlL0tleWJvYXJkRXZlbnQuaD4KLSNlbmRpZgotI2luY2x1
ZGUgPFdlYkNvcmUvUGx1Z2luRGF0YS5oPgotI2luY2x1ZGUgPHV0aWxpdHk+Ci0jaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBNZXNzYWdlcyB7Ci0KLW5hbWVzcGFjZSBXZWJQ
YWdlIHsKLQotdm9pZCBHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6c2VuZChzdGQ6OnVuaXF1
ZV9wdHI8SVBDOjpFbmNvZGVyPiYmIGVuY29kZXIsIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlv
biwgY29uc3QgSVBDOjpDb25uZWN0aW9uOjpIYW5kbGUmIGNvbm5lY3Rpb25IYW5kbGUpCi17Ci0g
ICAgKmVuY29kZXIgPDwgY29ubmVjdGlvbkhhbmRsZTsKLSAgICBjb25uZWN0aW9uLnNlbmRTeW5j
UmVwbHkoV1RGTW92ZShlbmNvZGVyKSk7Ci19Ci0KLXZvaWQgVGVzdE11bHRpcGxlQXR0cmlidXRl
czo6c2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYmIGVuY29kZXIsIElQQzo6Q29u
bmVjdGlvbiYgY29ubmVjdGlvbikKLXsKLSAgICBjb25uZWN0aW9uLnNlbmRTeW5jUmVwbHkoV1RG
TW92ZShlbmNvZGVyKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYlBhZ2UKLQotfSAvLyBuYW1l
c3BhY2UgTWVzc2FnZXMKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLXZvaWQgV2ViUGFnZTo6ZGlk
UmVjZWl2ZVdlYlBhZ2VNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpE
ZWNvZGVyJiBkZWNvZGVyKQotewotICAgIGF1dG8gcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpOwotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6
OkxvYWRVUkw6Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6
OldlYlBhZ2U6OkxvYWRVUkw+KGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjpsb2FkVVJMKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLSNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQotICAgIGlmIChk
ZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRTb21ldGhpbmc6
Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6
OkxvYWRTb21ldGhpbmc+KGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjpsb2FkU29tZXRoaW5nKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNlbmRpZgotI2lmIChFTkFCTEUoVE9VQ0hfRVZFTlRT
KSAmJiAoTkVTVEVEX01FU1NBR0VfQ09ORElUSU9OIHx8IFNPTUVfT1RIRVJfTUVTU0FHRV9DT05E
SVRJT04pKQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBh
Z2U6OlRvdWNoRXZlbnQ6Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVz
c2FnZXM6OldlYlBhZ2U6OlRvdWNoRXZlbnQ+KGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjp0b3Vj
aEV2ZW50KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNlbmRpZgotI2lmIChFTkFCTEUoVE9V
Q0hfRVZFTlRTKSAmJiAoTkVTVEVEX01FU1NBR0VfQ09ORElUSU9OICYmIFNPTUVfT1RIRVJfTUVT
U0FHRV9DT05ESVRJT04pKQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2Fn
ZXM6OldlYlBhZ2U6OkFkZEV2ZW50OjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNz
YWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpBZGRFdmVudD4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6
OmFkZEV2ZW50KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNlbmRpZgotI2lmIEVOQUJMRShU
T1VDSF9FVkVOVFMpCi0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6
V2ViUGFnZTo6TG9hZFNvbWV0aGluZ0Vsc2U6Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRs
ZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRTb21ldGhpbmdFbHNlPihkZWNvZGVyLCB0
aGlzLCAmV2ViUGFnZTo6bG9hZFNvbWV0aGluZ0Vsc2UpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotI2VuZGlmCi0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2Vi
UGFnZTo6RGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpo
YW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24+
KGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjpkaWRSZWNlaXZlUG9saWN5RGVjaXNpb24pOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVz
c2FnZXM6OldlYlBhZ2U6OkNsb3NlOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNz
YWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpDbG9zZT4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OmNs
b3NlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFt
ZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpQcmVmZXJlbmNlc0RpZENoYW5nZTo6bmFtZSgpKSB7
Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6UHJlZmVyZW5j
ZXNEaWRDaGFuZ2U+KGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjpwcmVmZXJlbmNlc0RpZENoYW5n
ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUo
KSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6U2VuZERvdWJsZUFuZEZsb2F0OjpuYW1lKCkpIHsKLSAg
ICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpTZW5kRG91YmxlQW5k
RmxvYXQ+KGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjpzZW5kRG91YmxlQW5kRmxvYXQpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVz
c2FnZXM6OldlYlBhZ2U6OlNlbmRJbnRzOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVN
ZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpTZW5kSW50cz4oZGVjb2RlciwgdGhpcywgJldlYlBh
Z2U6OnNlbmRJbnRzKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoZGVjb2Rlci5t
ZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0UGFyYW1ldGVyQXR0cmlidXRl
czo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFn
ZTo6VGVzdFBhcmFtZXRlckF0dHJpYnV0ZXM+KGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjp0ZXN0
UGFyYW1ldGVyQXR0cmlidXRlcyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKGRl
Y29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6VGVtcGxhdGVUZXN0Ojpu
YW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpU
ZW1wbGF0ZVRlc3Q+KGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjp0ZW1wbGF0ZVRlc3QpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVz
c2FnZXM6OldlYlBhZ2U6OlNldFZpZGVvTGF5ZXJJRDo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6
aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6U2V0VmlkZW9MYXllcklEPihkZWNvZGVy
LCB0aGlzLCAmV2ViUGFnZTo6c2V0VmlkZW9MYXllcklEKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLSNpZiBQTEFURk9STShNQUMpCi0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBN
ZXNzYWdlczo6V2ViUGFnZTo6RGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb246Om5hbWUoKSkg
ewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OkRpZENyZWF0
ZVdlYlByb2Nlc3NDb25uZWN0aW9uPihkZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6ZGlkQ3JlYXRl
V2ViUHJvY2Vzc0Nvbm5lY3Rpb24pOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlmCi0j
aWYgRU5BQkxFKERFUFJFQ0FURURfRkVBVFVSRSkKLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFt
ZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpEZXByZWNhdGVkT3BlcmF0aW9uOjpuYW1lKCkpIHsK
LSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpEZXByZWNhdGVk
T3BlcmF0aW9uPihkZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6ZGVwcmVjYXRlZE9wZXJhdGlvbik7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYKLSNpZiBFTkFCTEUoRVhQRVJJTUVOVEFM
X0ZFQVRVUkUpCi0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2Vi
UGFnZTo6RXhwZXJpbWVudGFsT3BlcmF0aW9uOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5k
bGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpFeHBlcmltZW50YWxPcGVyYXRpb24+KGRlY29k
ZXIsIHRoaXMsICZXZWJQYWdlOjpleHBlcmltZW50YWxPcGVyYXRpb24pOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotI2VuZGlmCi0gICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pOwotICAgIFVO
VVNFRF9QQVJBTShkZWNvZGVyKTsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotdm9p
ZCBXZWJQYWdlOjpkaWRSZWNlaXZlU3luY1dlYlBhZ2VNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYg
Y29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpF
bmNvZGVyPiYgcmVwbHlFbmNvZGVyKQotewotICAgIGF1dG8gcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpOwotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6Oldl
YlBhZ2U6OkNyZWF0ZVBsdWdpbjo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2Fn
ZTxNZXNzYWdlczo6V2ViUGFnZTo6Q3JlYXRlUGx1Z2luPihkZWNvZGVyLCAqcmVwbHlFbmNvZGVy
LCB0aGlzLCAmV2ViUGFnZTo6Y3JlYXRlUGx1Z2luKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpSdW5K
YXZhU2NyaXB0QWxlcnQ6Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVz
c2FnZXM6OldlYlBhZ2U6OlJ1bkphdmFTY3JpcHRBbGVydD4oZGVjb2RlciwgKnJlcGx5RW5jb2Rl
ciwgdGhpcywgJldlYlBhZ2U6OnJ1bkphdmFTY3JpcHRBbGVydCk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFn
ZTo6R2V0UGx1Z2luczo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNz
YWdlczo6V2ViUGFnZTo6R2V0UGx1Z2lucz4oZGVjb2RlciwgKnJlcGx5RW5jb2RlciwgdGhpcywg
JldlYlBhZ2U6OmdldFBsdWdpbnMpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChk
ZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OkdldFBsdWdpblByb2Nl
c3NDb25uZWN0aW9uOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlU3luY2hy
b25vdXM8TWVzc2FnZXM6OldlYlBhZ2U6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uPihjb25u
ZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIsIHRoaXMsICZXZWJQYWdlOjpnZXRQbHVnaW5Q
cm9jZXNzQ29ubmVjdGlvbik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKGRlY29k
ZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6VGVzdE11bHRpcGxlQXR0cmli
dXRlczo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZVN5bmNocm9ub3VzV2Fu
dHNDb25uZWN0aW9uPE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0TXVsdGlwbGVBdHRyaWJ1dGVzPihj
b25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIsIHRoaXMsICZXZWJQYWdlOjp0ZXN0TXVs
dGlwbGVBdHRyaWJ1dGVzKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNpZiBQTEFURk9STShN
QUMpCi0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6
SW50ZXJwcmV0S2V5RXZlbnQ6Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8
TWVzc2FnZXM6OldlYlBhZ2U6OkludGVycHJldEtleUV2ZW50PihkZWNvZGVyLCAqcmVwbHlFbmNv
ZGVyLCB0aGlzLCAmV2ViUGFnZTo6aW50ZXJwcmV0S2V5RXZlbnQpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotI2VuZGlmCi0gICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pOwotICAgIFVOVVNF
RF9QQVJBTShkZWNvZGVyKTsKLSAgICBVTlVTRURfUEFSQU0ocmVwbHlFbmNvZGVyKTsKLSAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLQotI2Vu
ZGlmIC8vIChFTkFCTEUoV0VCS0lUMikgJiYgKE5FU1RFRF9NQVNURVJfQ09ORElUSU9OIHx8IE1B
U1RFUl9PUiAmJiBNQVNURVJfQU5EKSkKClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9XZWJL
aXQvU2NyaXB0cy93ZWJraXQvTGVnYWN5TWVzc2FnZVJlY2VpdmVyLWV4cGVjdGVkLmNwcApfX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fCkRlbGV0ZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTEgKzAsMCAjIwotbmF0aXZlClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93
ZWJraXQvTGVnYWN5TWVzc2FnZXMtZXhwZWN0ZWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1NjcmlwdHMvd2Via2l0L0xlZ2FjeU1lc3NhZ2VzLWV4cGVjdGVkLmgJKHJldmlzaW9uIDI2
MTIzOCkKKysrIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvTGVnYWN5TWVzc2FnZXMtZXhw
ZWN0ZWQuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDU3MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDEwLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKLSAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0g
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgotICogQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAot
ICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IKLSAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0gKiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLAotICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI3ByYWdtYSBvbmNlCi0KLSNpZiAoRU5BQkxFKFdFQktJVDIpICYmIChORVNURURfTUFTVEVS
X0NPTkRJVElPTiB8fCBNQVNURVJfT1IgJiYgTUFTVEVSX0FORCkpCi0KLSNpbmNsdWRlICJBcmd1
bWVudENvZGVycy5oIgotI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKLSNpbmNsdWRlICJQbHVnaW4u
aCIKLSNpbmNsdWRlICJXZWJQYWdlTWVzc2FnZXNSZXBsaWVzLmgiCi0jaW5jbHVkZSA8V2ViQ29y
ZS9HcmFwaGljc0xheWVyLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9LZXlib2FyZEV2ZW50Lmg+Ci0j
aW5jbHVkZSA8V2ViQ29yZS9QbHVnaW5EYXRhLmg+Ci0jaW5jbHVkZSA8dXRpbGl0eT4KLSNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8
d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgSVBDIHsKLWNsYXNzIER1
bW15VHlwZTsKLWNsYXNzIE1hY2hQb3J0OwotfQotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLWNsYXNz
IFdlYlByZWZlcmVuY2VzU3RvcmU7Ci1jbGFzcyBXZWJUb3VjaEV2ZW50OwotfQotCi1uYW1lc3Bh
Y2UgTWVzc2FnZXMgewotbmFtZXNwYWNlIFdlYlBhZ2UgewotCi1zdGF0aWMgaW5saW5lIElQQzo6
U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUoKQotewotICAgIHJldHVybiBJUEM6
OlN0cmluZ1JlZmVyZW5jZSgiV2ViUGFnZSIpOwotfQotCi1jbGFzcyBMb2FkVVJMIHsKLXB1Ymxp
YzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8Y29uc3QgU3RyaW5nJj4gQXJndW1lbnRzOwotCi0g
ICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1l
c3NhZ2VSZWNlaXZlck5hbWUoKTsgfQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBu
YW1lKCkgeyByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIkxvYWRVUkwiKTsgfQotICAgIHN0
YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOwotCi0gICAgZXhwbGljaXQgTG9hZFVSTChj
b25zdCBTdHJpbmcmIHVybCkKLSAgICAgICAgOiBtX2FyZ3VtZW50cyh1cmwpCi0gICAgewotICAg
IH0KLQotICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1lbnRz
IG1fYXJndW1lbnRzOwotfTsKLQotI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCi1jbGFzcyBMb2Fk
U29tZXRoaW5nIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8Y29uc3QgU3RyaW5n
Jj4gQXJndW1lbnRzOwotCi0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVy
TmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsgfQotICAgIHN0YXRpYyBJUEM6
OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIkxv
YWRTb21ldGhpbmciKTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOwot
Ci0gICAgZXhwbGljaXQgTG9hZFNvbWV0aGluZyhjb25zdCBTdHJpbmcmIHVybCkKLSAgICAgICAg
OiBtX2FyZ3VtZW50cyh1cmwpCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0IEFyZ3VtZW50cyYg
YXJndW1lbnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAg
ICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLSNlbmRpZgot
Ci0jaWYgKEVOQUJMRShUT1VDSF9FVkVOVFMpICYmIChORVNURURfTUVTU0FHRV9DT05ESVRJT04g
fHwgU09NRV9PVEhFUl9NRVNTQUdFX0NPTkRJVElPTikpCi1jbGFzcyBUb3VjaEV2ZW50IHsKLXB1
YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8Y29uc3QgV2ViS2l0OjpXZWJUb3VjaEV2ZW50
Jj4gQXJndW1lbnRzOwotCi0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVy
TmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsgfQotICAgIHN0YXRpYyBJUEM6
OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIlRv
dWNoRXZlbnQiKTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOwotCi0g
ICAgZXhwbGljaXQgVG91Y2hFdmVudChjb25zdCBXZWJLaXQ6OldlYlRvdWNoRXZlbnQmIGV2ZW50
KQotICAgICAgICA6IG1fYXJndW1lbnRzKGV2ZW50KQotICAgIHsKLSAgICB9Ci0KLSAgICBjb25z
dCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9h
cmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsK
LX07Ci0jZW5kaWYKLQotI2lmIChFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiAoTkVTVEVEX01FU1NB
R0VfQ09ORElUSU9OICYmIFNPTUVfT1RIRVJfTUVTU0FHRV9DT05ESVRJT04pKQotY2xhc3MgQWRk
RXZlbnQgewotcHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBXZWJLaXQ6Oldl
YlRvdWNoRXZlbnQmPiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVu
Y2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAg
c3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1Jl
ZmVyZW5jZSgiQWRkRXZlbnQiKTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZh
bHNlOwotCi0gICAgZXhwbGljaXQgQWRkRXZlbnQoY29uc3QgV2ViS2l0OjpXZWJUb3VjaEV2ZW50
JiBldmVudCkKLSAgICAgICAgOiBtX2FyZ3VtZW50cyhldmVudCkKLSAgICB7Ci0gICAgfQotCi0g
ICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0
dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1bWVudHMgbV9hcmd1
bWVudHM7Ci19OwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQotY2xhc3MgTG9h
ZFNvbWV0aGluZ0Vsc2UgewotcHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBT
dHJpbmcmPiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVj
ZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGlj
IElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5j
ZSgiTG9hZFNvbWV0aGluZ0Vsc2UiKTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9
IGZhbHNlOwotCi0gICAgZXhwbGljaXQgTG9hZFNvbWV0aGluZ0Vsc2UoY29uc3QgU3RyaW5nJiB1
cmwpCi0gICAgICAgIDogbV9hcmd1bWVudHModXJsKQotICAgIHsKLSAgICB9Ci0KLSAgICBjb25z
dCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9h
cmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsK
LX07Ci0jZW5kaWYKLQotY2xhc3MgRGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uIHsKLXB1YmxpYzoK
LSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8dWludDY0X3QsIHVpbnQ2NF90LCB1aW50MzJfdD4gQXJn
dW1lbnRzOwotCi0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgp
IHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsgfQotICAgIHN0YXRpYyBJUEM6OlN0cmlu
Z1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIkRpZFJlY2Vp
dmVQb2xpY3lEZWNpc2lvbiIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFs
c2U7Ci0KLSAgICBEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24odWludDY0X3QgZnJhbWVJRCwgdWlu
dDY0X3QgbGlzdGVuZXJJRCwgdWludDMyX3QgcG9saWN5QWN0aW9uKQotICAgICAgICA6IG1fYXJn
dW1lbnRzKGZyYW1lSUQsIGxpc3RlbmVySUQsIHBvbGljeUFjdGlvbikKLSAgICB7Ci0gICAgfQot
Ci0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsKLSAgICAgICAg
cmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1bWVudHMgbV9h
cmd1bWVudHM7Ci19OwotCi1jbGFzcyBDbG9zZSB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6
OnR1cGxlPD4gQXJndW1lbnRzOwotCi0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJl
Y2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsgfQotICAgIHN0YXRp
YyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVu
Y2UoIkNsb3NlIik7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKLQot
ICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJn
dW1lbnRzOwotfTsKLQotY2xhc3MgUHJlZmVyZW5jZXNEaWRDaGFuZ2UgewotcHVibGljOgotICAg
IHR5cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmUmPiBB
cmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1l
KCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6U3Ry
aW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiUHJlZmVy
ZW5jZXNEaWRDaGFuZ2UiKTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNl
OwotCi0gICAgZXhwbGljaXQgUHJlZmVyZW5jZXNEaWRDaGFuZ2UoY29uc3QgV2ViS2l0OjpXZWJQ
cmVmZXJlbmNlc1N0b3JlJiBzdG9yZSkKLSAgICAgICAgOiBtX2FyZ3VtZW50cyhzdG9yZSkKLSAg
ICB7Ci0gICAgfQotCi0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAotICAg
IHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBB
cmd1bWVudHMgbV9hcmd1bWVudHM7Ci19OwotCi1jbGFzcyBTZW5kRG91YmxlQW5kRmxvYXQgewot
cHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxkb3VibGUsIGZsb2F0PiBBcmd1bWVudHM7
Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1
cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJl
bmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiU2VuZERvdWJsZUFuZEZs
b2F0Iik7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKLQotICAgIFNl
bmREb3VibGVBbmRGbG9hdChkb3VibGUgZCwgZmxvYXQgZikKLSAgICAgICAgOiBtX2FyZ3VtZW50
cyhkLCBmKQotICAgIHsKLSAgICB9Ci0KLSAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygp
IGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7Ci0gICAgfQotCi1wcml2
YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKLX07Ci0KLWNsYXNzIFNlbmRJbnRzIHsK
LXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8Y29uc3QgVmVjdG9yPHVpbnQ2NF90PiYs
IGNvbnN0IFZlY3RvcjxWZWN0b3I8dWludDY0X3Q+PiY+IEFyZ3VtZW50czsKLQotICAgIHN0YXRp
YyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVj
ZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsg
cmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJTZW5kSW50cyIpOyB9Ci0gICAgc3RhdGljIGNv
bnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7Ci0KLSAgICBTZW5kSW50cyhjb25zdCBWZWN0b3I8dWlu
dDY0X3Q+JiBpbnRzLCBjb25zdCBWZWN0b3I8VmVjdG9yPHVpbnQ2NF90Pj4mIGludFZlY3RvcnMp
Ci0gICAgICAgIDogbV9hcmd1bWVudHMoaW50cywgaW50VmVjdG9ycykKLSAgICB7Ci0gICAgfQot
Ci0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsKLSAgICAgICAg
cmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1bWVudHMgbV9h
cmd1bWVudHM7Ci19OwotCi1jbGFzcyBDcmVhdGVQbHVnaW4gewotcHVibGljOgotICAgIHR5cGVk
ZWYgc3RkOjp0dXBsZTx1aW50NjRfdCwgY29uc3QgV2ViS2l0OjpQbHVnaW46OlBhcmFtZXRlcnMm
PiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJO
YW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6
U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiQ3Jl
YXRlUGx1Z2luIik7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSB0cnVlOwotCi0g
ICAgdXNpbmcgUmVwbHkgPSBzdGQ6OnR1cGxlPGJvb2wmPjsKLSAgICB1c2luZyBSZXBseUFyZ3Vt
ZW50cyA9IHN0ZDo6dHVwbGU8Ym9vbD47Ci0gICAgQ3JlYXRlUGx1Z2luKHVpbnQ2NF90IHBsdWdp
bkluc3RhbmNlSUQsIGNvbnN0IFdlYktpdDo6UGx1Z2luOjpQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJz
KQotICAgICAgICA6IG1fYXJndW1lbnRzKHBsdWdpbkluc3RhbmNlSUQsIHBhcmFtZXRlcnMpCi0g
ICAgewotICAgIH0KLQotICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAg
QXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLQotY2xhc3MgUnVuSmF2YVNjcmlwdEFsZXJ0IHsK
LXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8dWludDY0X3QsIGNvbnN0IFN0cmluZyY+
IEFyZ3VtZW50czsKLQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5h
bWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpT
dHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJSdW5K
YXZhU2NyaXB0QWxlcnQiKTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IHRydWU7
Ci0KLSAgICB1c2luZyBSZXBseSA9IHN0ZDo6dHVwbGU8PjsKLSAgICB1c2luZyBSZXBseUFyZ3Vt
ZW50cyA9IHN0ZDo6dHVwbGU8PjsKLSAgICBSdW5KYXZhU2NyaXB0QWxlcnQodWludDY0X3QgZnJh
bWVJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQotICAgICAgICA6IG1fYXJndW1lbnRzKGZyYW1l
SUQsIG1lc3NhZ2UpCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1l
bnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0K
LXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLQotY2xhc3MgR2V0UGx1
Z2lucyB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGJvb2w+IEFyZ3VtZW50czsK
LQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVy
biBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVu
Y2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJHZXRQbHVnaW5zIik7IH0K
LSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSB0cnVlOwotCi0gICAgdXNpbmcgUmVwbHkg
PSBzdGQ6OnR1cGxlPFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiY+OwotICAgIHVzaW5nIFJl
cGx5QXJndW1lbnRzID0gc3RkOjp0dXBsZTxWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4+Owot
ICAgIGV4cGxpY2l0IEdldFBsdWdpbnMoYm9vbCByZWZyZXNoKQotICAgICAgICA6IG1fYXJndW1l
bnRzKHJlZnJlc2gpCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1l
bnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0K
LXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLQotY2xhc3MgR2V0UGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb24gewotcHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxj
b25zdCBTdHJpbmcmPiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVu
Y2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAg
c3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1Jl
ZmVyZW5jZSgiR2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24iKTsgfQotICAgIHN0YXRpYyBjb25z
dCBib29sIGlzU3luYyA9IHRydWU7Ci0KLSAgICB1c2luZyBEZWxheWVkUmVwbHkgPSBHZXRQbHVn
aW5Qcm9jZXNzQ29ubmVjdGlvbkRlbGF5ZWRSZXBseTsKLSAgICBzdGF0aWMgdm9pZCBzZW5kKHN0
ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiYsIElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IElQ
Qzo6Q29ubmVjdGlvbjo6SGFuZGxlJiBjb25uZWN0aW9uSGFuZGxlKTsKLSAgICB1c2luZyBSZXBs
eSA9IHN0ZDo6dHVwbGU8SVBDOjpDb25uZWN0aW9uOjpIYW5kbGUmPjsKLSAgICB1c2luZyBSZXBs
eUFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8SVBDOjpDb25uZWN0aW9uOjpIYW5kbGU+OwotICAgIGV4
cGxpY2l0IEdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0
aCkKLSAgICAgICAgOiBtX2FyZ3VtZW50cyhwbHVnaW5QYXRoKQotICAgIHsKLSAgICB9Ci0KLSAg
ICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1
cm4gbV9hcmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3Vt
ZW50czsKLX07Ci0KLWNsYXNzIFRlc3RNdWx0aXBsZUF0dHJpYnV0ZXMgewotcHVibGljOgotICAg
IHR5cGVkZWYgc3RkOjp0dXBsZTw+IEFyZ3VtZW50czsKLQotICAgIHN0YXRpYyBJUEM6OlN0cmlu
Z1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7
IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6
U3RyaW5nUmVmZXJlbmNlKCJUZXN0TXVsdGlwbGVBdHRyaWJ1dGVzIik7IH0KLSAgICBzdGF0aWMg
Y29uc3QgYm9vbCBpc1N5bmMgPSB0cnVlOwotCi0gICAgdXNpbmcgRGVsYXllZFJlcGx5ID0gVGVz
dE11bHRpcGxlQXR0cmlidXRlc0RlbGF5ZWRSZXBseTsKLSAgICBzdGF0aWMgdm9pZCBzZW5kKHN0
ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiYsIElQQzo6Q29ubmVjdGlvbiYpOwotICAgIHVz
aW5nIFJlcGx5ID0gc3RkOjp0dXBsZTw+OwotICAgIHVzaW5nIFJlcGx5QXJndW1lbnRzID0gc3Rk
Ojp0dXBsZTw+OwotICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKLSAgICB7
Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJn
dW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLQotY2xhc3MgVGVzdFBhcmFtZXRlckF0dHJpYnV0ZXMg
ewotcHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTx1aW50NjRfdCwgZG91YmxlLCBkb3Vi
bGU+IEFyZ3VtZW50czsKLQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZl
ck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMgSVBD
OjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJU
ZXN0UGFyYW1ldGVyQXR0cmlidXRlcyIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5j
ID0gZmFsc2U7Ci0KLSAgICBUZXN0UGFyYW1ldGVyQXR0cmlidXRlcyh1aW50NjRfdCBmb28sIGRv
dWJsZSBiYXIsIGRvdWJsZSBiYXopCi0gICAgICAgIDogbV9hcmd1bWVudHMoZm9vLCBiYXIsIGJh
eikKLSAgICB7Ci0gICAgfQotCi0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25z
dAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToK
LSAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19OwotCi1jbGFzcyBUZW1wbGF0ZVRlc3Qgewot
cHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBIYXNoTWFwPFN0cmluZywgc3Rk
OjpwYWlyPFN0cmluZywgdWludDY0X3Q+PiY+IEFyZ3VtZW50czsKLQotICAgIHN0YXRpYyBJUEM6
OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJO
YW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJu
IElQQzo6U3RyaW5nUmVmZXJlbmNlKCJUZW1wbGF0ZVRlc3QiKTsgfQotICAgIHN0YXRpYyBjb25z
dCBib29sIGlzU3luYyA9IGZhbHNlOwotCi0gICAgZXhwbGljaXQgVGVtcGxhdGVUZXN0KGNvbnN0
IEhhc2hNYXA8U3RyaW5nLCBzdGQ6OnBhaXI8U3RyaW5nLCB1aW50NjRfdD4+JiBhKQotICAgICAg
ICA6IG1fYXJndW1lbnRzKGEpCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0IEFyZ3VtZW50cyYg
YXJndW1lbnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAg
ICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLQotY2xhc3Mg
U2V0VmlkZW9MYXllcklEIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8Y29uc3Qg
V2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklEJj4gQXJndW1lbnRzOwotCi0g
ICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1l
c3NhZ2VSZWNlaXZlck5hbWUoKTsgfQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBu
YW1lKCkgeyByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIlNldFZpZGVvTGF5ZXJJRCIpOyB9
Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7Ci0KLSAgICBleHBsaWNpdCBT
ZXRWaWRlb0xheWVySUQoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXll
cklEJiB2aWRlb0xheWVySUQpCi0gICAgICAgIDogbV9hcmd1bWVudHModmlkZW9MYXllcklEKQot
ICAgIHsKLSAgICB9Ci0KLSAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0g
ICAgewotICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRlOgotICAg
IEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKLX07Ci0KLSNpZiBQTEFURk9STShNQUMpCi1jbGFzcyBE
aWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbiB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6
OnR1cGxlPGNvbnN0IElQQzo6TWFjaFBvcnQmPiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBD
OjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVy
TmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVy
biBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiRGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24iKTsg
fQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOwotCi0gICAgZXhwbGljaXQg
RGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oY29uc3QgSVBDOjpNYWNoUG9ydCYgY29ubmVj
dGlvbklkZW50aWZpZXIpCi0gICAgICAgIDogbV9hcmd1bWVudHMoY29ubmVjdGlvbklkZW50aWZp
ZXIpCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29u
c3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0KLXByaXZhdGU6
Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLSNlbmRpZgotCi0jaWYgUExBVEZPUk0o
TUFDKQotY2xhc3MgSW50ZXJwcmV0S2V5RXZlbnQgewotcHVibGljOgotICAgIHR5cGVkZWYgc3Rk
Ojp0dXBsZTx1aW50MzJfdD4gQXJndW1lbnRzOwotCi0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVm
ZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsgfQot
ICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpTdHJp
bmdSZWZlcmVuY2UoIkludGVycHJldEtleUV2ZW50Iik7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9v
bCBpc1N5bmMgPSB0cnVlOwotCi0gICAgdXNpbmcgUmVwbHkgPSBzdGQ6OnR1cGxlPFZlY3RvcjxX
ZWJDb3JlOjpLZXlwcmVzc0NvbW1hbmQ+Jj47Ci0gICAgdXNpbmcgUmVwbHlBcmd1bWVudHMgPSBz
dGQ6OnR1cGxlPFZlY3RvcjxXZWJDb3JlOjpLZXlwcmVzc0NvbW1hbmQ+PjsKLSAgICBleHBsaWNp
dCBJbnRlcnByZXRLZXlFdmVudCh1aW50MzJfdCB0eXBlKQotICAgICAgICA6IG1fYXJndW1lbnRz
KHR5cGUpCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkg
Y29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0KLXByaXZh
dGU6Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLSNlbmRpZgotCi0jaWYgRU5BQkxF
KERFUFJFQ0FURURfRkVBVFVSRSkKLWNsYXNzIERlcHJlY2F0ZWRPcGVyYXRpb24gewotcHVibGlj
OgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBJUEM6OkR1bW15VHlwZSY+IEFyZ3VtZW50
czsKLQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJl
dHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZl
cmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJEZXByZWNhdGVkT3Bl
cmF0aW9uIik7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKLQotICAg
IGV4cGxpY2l0IERlcHJlY2F0ZWRPcGVyYXRpb24oY29uc3QgSVBDOjpEdW1teVR5cGUmIGR1bW15
KQotICAgICAgICA6IG1fYXJndW1lbnRzKGR1bW15KQotICAgIHsKLSAgICB9Ci0KLSAgICBjb25z
dCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9h
cmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsK
LX07Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShFWFBFUklNRU5UQUxfRkVBVFVSRSkKLWNsYXNzIEV4
cGVyaW1lbnRhbE9wZXJhdGlvbiB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGNv
bnN0IElQQzo6RHVtbXlUeXBlJj4gQXJndW1lbnRzOwotCi0gICAgc3RhdGljIElQQzo6U3RyaW5n
UmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsg
fQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpT
dHJpbmdSZWZlcmVuY2UoIkV4cGVyaW1lbnRhbE9wZXJhdGlvbiIpOyB9Ci0gICAgc3RhdGljIGNv
bnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7Ci0KLSAgICBleHBsaWNpdCBFeHBlcmltZW50YWxPcGVy
YXRpb24oY29uc3QgSVBDOjpEdW1teVR5cGUmIGR1bW15KQotICAgICAgICA6IG1fYXJndW1lbnRz
KGR1bW15KQotICAgIHsKLSAgICB9Ci0KLSAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygp
IGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7Ci0gICAgfQotCi1wcml2
YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKLX07Ci0jZW5kaWYKLQotfSAvLyBuYW1l
c3BhY2UgV2ViUGFnZQotfSAvLyBuYW1lc3BhY2UgTWVzc2FnZXMKLQotI2VuZGlmIC8vIChFTkFC
TEUoV0VCS0lUMikgJiYgKE5FU1RFRF9NQVNURVJfQ09ORElUSU9OIHx8IE1BU1RFUl9PUiAmJiBN
QVNURVJfQU5EKSkKClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93
ZWJraXQvTGVnYWN5TWVzc2FnZXMtZXhwZWN0ZWQuaApfX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjpl
b2wtc3R5bGUKIyMgLTEgKzAsMCAjIwotbmF0aXZlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJv
cGVydHkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvTGVnYWN5TWVzc2FnZXNS
ZXBsaWVzLWV4cGVjdGVkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TY3JpcHRzL3dl
YmtpdC9MZWdhY3lNZXNzYWdlc1JlcGxpZXMtZXhwZWN0ZWQuaAkocmV2aXNpb24gMjYxMjM4KQor
KysgU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9MZWdhY3lNZXNzYWdlc1JlcGxpZXMtZXhw
ZWN0ZWQuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDQzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTAtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAotICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAq
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0gKiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0g
KiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUgotICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSAqIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksCi0gKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jcHJhZ21hIG9uY2UKLQotI2lmIChFTkFCTEUoV0VCS0lUMikgJiYgKE5FU1RFRF9NQVNURVJf
Q09ORElUSU9OIHx8IE1BU1RFUl9PUiAmJiBNQVNURVJfQU5EKSkKLQotI2luY2x1ZGUgIkNvbm5l
Y3Rpb24uaCIKLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotCi0KLW5hbWVzcGFjZSBNZXNzYWdl
cyB7Ci1uYW1lc3BhY2UgV2ViUGFnZSB7Ci0KLXVzaW5nIEdldFBsdWdpblByb2Nlc3NDb25uZWN0
aW9uRGVsYXllZFJlcGx5ID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkNvbm5l
Y3Rpb246OkhhbmRsZSYgY29ubmVjdGlvbkhhbmRsZSk+OwotCi11c2luZyBUZXN0TXVsdGlwbGVB
dHRyaWJ1dGVzRGVsYXllZFJlcGx5ID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPjsKLQotfSAv
LyBuYW1lc3BhY2UgV2ViUGFnZQotfSAvLyBuYW1lc3BhY2UgTWVzc2FnZXMKLQotI2VuZGlmIC8v
IChFTkFCTEUoV0VCS0lUMikgJiYgKE5FU1RFRF9NQVNURVJfQ09ORElUSU9OIHx8IE1BU1RFUl9P
UiAmJiBNQVNURVJfQU5EKSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvTWVz
c2FnZVJlY2VpdmVyLWV4cGVjdGVkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1Nj
cmlwdHMvd2Via2l0L01lc3NhZ2VSZWNlaXZlci1leHBlY3RlZC5jcHAJKHJldmlzaW9uIDI2MTIz
OCkKKysrIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvTWVzc2FnZVJlY2VpdmVyLWV4cGVj
dGVkLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDIwMyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDEwLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKLSAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0g
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgotICogQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAot
ICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IKLSAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0gKiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLAotICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgKEVOQUJMRShXRUJLSVQyKSAmJiAoTkVTVEVE
X01BU1RFUl9DT05ESVRJT04gfHwgTUFTVEVSX09SICYmIE1BU1RFUl9BTkQpKQotCi0jaW5jbHVk
ZSAiV2ViUGFnZS5oIgotCi0jaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKLSNpbmNsdWRlICJD
b25uZWN0aW9uLmgiCi0jaW5jbHVkZSAiRGVjb2Rlci5oIgotI2lmIEVOQUJMRShERVBSRUNBVEVE
X0ZFQVRVUkUpIHx8IEVOQUJMRShFWFBFUklNRU5UQUxfRkVBVFVSRSkKLSNpbmNsdWRlICJEdW1t
eVR5cGUuaCIKLSNlbmRpZgotI2luY2x1ZGUgIkhhbmRsZU1lc3NhZ2UuaCIKLSNpZiBQTEFURk9S
TShNQUMpCi0jaW5jbHVkZSAiTWFjaFBvcnQuaCIKLSNlbmRpZgotI2luY2x1ZGUgIlBsdWdpbi5o
IgotI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgotI2lmIChFTkFCTEUoVE9VQ0hf
RVZFTlRTKSAmJiAoTkVTVEVEX01FU1NBR0VfQ09ORElUSU9OICYmIFNPTUVfT1RIRVJfTUVTU0FH
RV9DT05ESVRJT04pKSB8fCAoRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgKE5FU1RFRF9NRVNTQUdF
X0NPTkRJVElPTiB8fCBTT01FX09USEVSX01FU1NBR0VfQ09ORElUSU9OKSkKLSNpbmNsdWRlICJX
ZWJFdmVudC5oIgotI2VuZGlmCi0jaW5jbHVkZSAiV2ViUGFnZU1lc3NhZ2VzLmgiCi0jaW5jbHVk
ZSAiV2ViUHJlZmVyZW5jZXNTdG9yZS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NMYXll
ci5oPgotI2lmIFBMQVRGT1JNKE1BQykKLSNpbmNsdWRlIDxXZWJDb3JlL0tleWJvYXJkRXZlbnQu
aD4KLSNlbmRpZgotI2luY2x1ZGUgPFdlYkNvcmUvUGx1Z2luRGF0YS5oPgotI2luY2x1ZGUgPHV0
aWxpdHk+Ci0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBNZXNzYWdlcyB7
Ci0KLW5hbWVzcGFjZSBXZWJQYWdlIHsKLQotdm9pZCBHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlv
bjo6c2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYmIGVuY29kZXIsIElQQzo6Q29u
bmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgSVBDOjpDb25uZWN0aW9uOjpIYW5kbGUmIGNvbm5l
Y3Rpb25IYW5kbGUpCi17Ci0gICAgKmVuY29kZXIgPDwgY29ubmVjdGlvbkhhbmRsZTsKLSAgICBj
b25uZWN0aW9uLnNlbmRTeW5jUmVwbHkoV1RGTW92ZShlbmNvZGVyKSk7Ci19Ci0KLXZvaWQgVGVz
dE11bHRpcGxlQXR0cmlidXRlczo6c2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYm
IGVuY29kZXIsIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKLXsKLSAgICBjb25uZWN0aW9u
LnNlbmRTeW5jUmVwbHkoV1RGTW92ZShlbmNvZGVyKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YlBhZ2UKLQotfSAvLyBuYW1lc3BhY2UgTWVzc2FnZXMKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0K
LXZvaWQgV2ViUGFnZTo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0
aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpCi17Ci0gICAgYXV0byBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyk7Ci0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdl
czo6V2ViUGFnZTo6TG9hZFVSTDo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2Fn
ZTxNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFVSTD4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6Omxv
YWRVUkwpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMp
Ci0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6TG9h
ZFNvbWV0aGluZzo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdl
czo6V2ViUGFnZTo6TG9hZFNvbWV0aGluZz4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OmxvYWRT
b21ldGhpbmcpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlmCi0jaWYgKEVOQUJMRShU
T1VDSF9FVkVOVFMpICYmIChORVNURURfTUVTU0FHRV9DT05ESVRJT04gfHwgU09NRV9PVEhFUl9N
RVNTQUdFX0NPTkRJVElPTikpCi0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNz
YWdlczo6V2ViUGFnZTo6VG91Y2hFdmVudDo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxl
TWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6VG91Y2hFdmVudD4oZGVjb2RlciwgdGhpcywgJldl
YlBhZ2U6OnRvdWNoRXZlbnQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlmCi0jaWYg
KEVOQUJMRShUT1VDSF9FVkVOVFMpICYmIChORVNURURfTUVTU0FHRV9DT05ESVRJT04gJiYgU09N
RV9PVEhFUl9NRVNTQUdFX0NPTkRJVElPTikpCi0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUo
KSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6QWRkRXZlbnQ6Om5hbWUoKSkgewotICAgICAgICBJUEM6
OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OkFkZEV2ZW50PihkZWNvZGVyLCB0aGlz
LCAmV2ViUGFnZTo6YWRkRXZlbnQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlmCi0j
aWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09
IE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkU29tZXRoaW5nRWxzZTo6bmFtZSgpKSB7Ci0gICAgICAg
IElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFNvbWV0aGluZ0Vsc2U+
KGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjpsb2FkU29tZXRoaW5nRWxzZSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0jZW5kaWYKLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1l
c3NhZ2VzOjpXZWJQYWdlOjpEaWRSZWNlaXZlUG9saWN5RGVjaXNpb246Om5hbWUoKSkgewotICAg
ICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJlY2VpdmVQb2xp
Y3lEZWNpc2lvbj4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OmRpZFJlY2VpdmVQb2xpY3lEZWNp
c2lvbik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5h
bWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6Q2xvc2U6Om5hbWUoKSkgewotICAgICAgICBJUEM6
OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OkNsb3NlPihkZWNvZGVyLCB0aGlzLCAm
V2ViUGFnZTo6Y2xvc2UpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChkZWNvZGVy
Lm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OlByZWZlcmVuY2VzRGlkQ2hhbmdl
OjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdl
OjpQcmVmZXJlbmNlc0RpZENoYW5nZT4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OnByZWZlcmVu
Y2VzRGlkQ2hhbmdlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoZGVjb2Rlci5t
ZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpTZW5kRG91YmxlQW5kRmxvYXQ6Om5h
bWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OlNl
bmREb3VibGVBbmRGbG9hdD4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OnNlbmREb3VibGVBbmRG
bG9hdCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5h
bWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6U2VuZEludHM6Om5hbWUoKSkgewotICAgICAgICBJ
UEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OlNlbmRJbnRzPihkZWNvZGVyLCB0
aGlzLCAmV2ViUGFnZTo6c2VuZEludHMpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlm
IChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RQYXJhbWV0
ZXJBdHRyaWJ1dGVzOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3Nh
Z2VzOjpXZWJQYWdlOjpUZXN0UGFyYW1ldGVyQXR0cmlidXRlcz4oZGVjb2RlciwgdGhpcywgJldl
YlBhZ2U6OnRlc3RQYXJhbWV0ZXJBdHRyaWJ1dGVzKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpUZW1w
bGF0ZVRlc3Q6Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6
OldlYlBhZ2U6OlRlbXBsYXRlVGVzdD4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OnRlbXBsYXRl
VGVzdCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5h
bWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6U2V0VmlkZW9MYXllcklEOjpuYW1lKCkpIHsKLSAg
ICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRWaWRlb0xheWVy
SUQ+KGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjpzZXRWaWRlb0xheWVySUQpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotI2lmIFBMQVRGT1JNKE1BQykKLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdl
TmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlv
bjo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFn
ZTo6RGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24+KGRlY29kZXIsIHRoaXMsICZXZWJQYWdl
OjpkaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0jZW5kaWYKLSNpZiBFTkFCTEUoREVQUkVDQVRFRF9GRUFUVVJFKQotICAgIGlmIChkZWNvZGVy
Lm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OkRlcHJlY2F0ZWRPcGVyYXRpb246
Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6
OkRlcHJlY2F0ZWRPcGVyYXRpb24+KGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjpkZXByZWNhdGVk
T3BlcmF0aW9uKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNlbmRpZgotI2lmIEVOQUJMRShF
WFBFUklNRU5UQUxfRkVBVFVSRSkKLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1l
c3NhZ2VzOjpXZWJQYWdlOjpFeHBlcmltZW50YWxPcGVyYXRpb246Om5hbWUoKSkgewotICAgICAg
ICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OkV4cGVyaW1lbnRhbE9wZXJh
dGlvbj4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OmV4cGVyaW1lbnRhbE9wZXJhdGlvbik7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYKLSAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlv
bik7Ci0gICAgVU5VU0VEX1BBUkFNKGRlY29kZXIpOwotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotfQotCi12b2lkIFdlYlBhZ2U6OmRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2Rlciwgc3RkOjp1bmlxdWVfcHRyPElQ
Qzo6RW5jb2Rlcj4mIHJlcGx5RW5jb2RlcikKLXsKLSAgICBhdXRvIHByb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKTsKLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2Vz
OjpXZWJQYWdlOjpDcmVhdGVQbHVnaW46Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1l
c3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OkNyZWF0ZVBsdWdpbj4oZGVjb2RlciwgKnJlcGx5RW5j
b2RlciwgdGhpcywgJldlYlBhZ2U6OmNyZWF0ZVBsdWdpbik7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6
UnVuSmF2YVNjcmlwdEFsZXJ0OjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdl
PE1lc3NhZ2VzOjpXZWJQYWdlOjpSdW5KYXZhU2NyaXB0QWxlcnQ+KGRlY29kZXIsICpyZXBseUVu
Y29kZXIsIHRoaXMsICZXZWJQYWdlOjpydW5KYXZhU2NyaXB0QWxlcnQpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6Oldl
YlBhZ2U6OkdldFBsdWdpbnM6Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8
TWVzc2FnZXM6OldlYlBhZ2U6OkdldFBsdWdpbnM+KGRlY29kZXIsICpyZXBseUVuY29kZXIsIHRo
aXMsICZXZWJQYWdlOjpnZXRQbHVnaW5zKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBp
ZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRQbHVnaW5Q
cm9jZXNzQ29ubmVjdGlvbjo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZVN5
bmNocm9ub3VzPE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbj4o
Y29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6Z2V0UGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb24pOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChk
ZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RNdWx0aXBsZUF0
dHJpYnV0ZXM6Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2VTeW5jaHJvbm91
c1dhbnRzQ29ubmVjdGlvbjxNZXNzYWdlczo6V2ViUGFnZTo6VGVzdE11bHRpcGxlQXR0cmlidXRl
cz4oY29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6dGVz
dE11bHRpcGxlQXR0cmlidXRlcyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jaWYgUExBVEZP
Uk0oTUFDKQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBh
Z2U6OkludGVycHJldEtleUV2ZW50OjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNz
YWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpJbnRlcnByZXRLZXlFdmVudD4oZGVjb2RlciwgKnJlcGx5
RW5jb2RlciwgdGhpcywgJldlYlBhZ2U6OmludGVycHJldEtleUV2ZW50KTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLSNlbmRpZgotICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsKLSAgICBV
TlVTRURfUEFSQU0oZGVjb2Rlcik7Ci0gICAgVU5VU0VEX1BBUkFNKHJlcGx5RW5jb2Rlcik7Ci0g
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0K
LSNlbmRpZiAvLyAoRU5BQkxFKFdFQktJVDIpICYmIChORVNURURfTUFTVEVSX0NPTkRJVElPTiB8
fCBNQVNURVJfT1IgJiYgTUFTVEVSX0FORCkpCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvd2Via2l0L01lc3NhZ2VSZWNlaXZlci1leHBlY3RlZC5jcHAKX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fXwpEZWxldGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0xICswLDAgIyMKLW5hdGl2ZQpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Vi
a2l0L01lc3NhZ2VSZWNlaXZlclN1cGVyY2xhc3MtZXhwZWN0ZWQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvTWVzc2FnZVJlY2VpdmVyU3VwZXJjbGFzcy1l
eHBlY3RlZC5jcHAJKHJldmlzaW9uIDI2MTIzOCkKKysrIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93
ZWJraXQvTWVzc2FnZVJlY2VpdmVyU3VwZXJjbGFzcy1leHBlY3RlZC5jcHAJKG5vbmV4aXN0ZW50
KQpAQCAtMSwxODkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMC0yMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycgQU5ECi0gKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IKLSAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSAqIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
Ci0gKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUgotICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSAqIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcu
aCIKLQotI2luY2x1ZGUgIldlYlBhZ2UuaCIKLQotI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgi
Ci0jaW5jbHVkZSAiRGVjb2Rlci5oIgotI2luY2x1ZGUgIkhhbmRsZU1lc3NhZ2UuaCIKLSNpbmNs
dWRlICJUZXN0Q2xhc3NOYW1lLmgiCi0jaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKLSNpbmNsdWRl
ICJUZXN0VHdvU3RhdGVFbnVtLmgiCi0jZW5kaWYKLSNpbmNsdWRlICJXZWJQYWdlTWVzc2FnZXMu
aCIKLSNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KLQotbmFtZXNwYWNlIE1lc3NhZ2VzIHsKLQotbmFtZXNwYWNlIFdlYlBhZ2UgewotCi0j
aWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKLQotdm9pZCBUZXN0QXN5bmNNZXNzYWdlOjpjYWxsUmVw
bHkoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90
JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiByZXN1
bHQ7Ci0gICAgZGVjb2RlciA+PiByZXN1bHQ7Ci0gICAgaWYgKCFyZXN1bHQpIHsKLSAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIGNhbmNlbFJlcGx5KFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjb21wbGV0aW9uSGFu
ZGxlcihXVEZNb3ZlKCpyZXN1bHQpKTsKLX0KLQotdm9pZCBUZXN0QXN5bmNNZXNzYWdlOjpjYW5j
ZWxSZXBseShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90JiYpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQotewotICAgIGNvbXBsZXRpb25IYW5kbGVyKElQQzo6QXN5bmNSZXBseUVycm9yPHVp
bnQ2NF90Pjo6Y3JlYXRlKCkpOwotfQotCi12b2lkIFRlc3RBc3luY01lc3NhZ2U6OnNlbmQoc3Rk
Ojp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mJiBlbmNvZGVyLCBJUEM6OkNvbm5lY3Rpb24mIGNv
bm5lY3Rpb24sIHVpbnQ2NF90IHJlc3VsdCkKLXsKLSAgICAqZW5jb2RlciA8PCByZXN1bHQ7Ci0g
ICAgY29ubmVjdGlvbi5zZW5kU3luY1JlcGx5KFdURk1vdmUoZW5jb2RlcikpOwotfQotCi0jZW5k
aWYKLQotI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCi0KLXZvaWQgVGVzdEFzeW5jTWVzc2FnZVdp
dGhOb0FyZ3VtZW50czo6Y2FsbFJlcGx5KElQQzo6RGVjb2RlciYgZGVjb2RlciwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIGNvbXBsZXRpb25I
YW5kbGVyKCk7Ci19Ci0KLXZvaWQgVGVzdEFzeW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50czo6Y2Fu
Y2VsUmVwbHkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQot
ewotICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Ci19Ci0KLXZvaWQgVGVzdEFzeW5jTWVzc2FnZVdp
dGhOb0FyZ3VtZW50czo6c2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYmIGVuY29k
ZXIsIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKLXsKLSAgICBjb25uZWN0aW9uLnNlbmRT
eW5jUmVwbHkoV1RGTW92ZShlbmNvZGVyKSk7Ci19Ci0KLSNlbmRpZgotCi0jaWYgRU5BQkxFKFRF
U1RfRkVBVFVSRSkKLQotdm9pZCBUZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1lbnRz
OjpjYWxsUmVwbHkoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wmJiwgdWludDY0X3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCi17Ci0gICAgT3B0aW9u
YWw8Ym9vbD4gZmxhZzsKLSAgICBkZWNvZGVyID4+IGZsYWc7Ci0gICAgaWYgKCFmbGFnKSB7Ci0g
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICBjYW5jZWxSZXBseShXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgT3B0aW9u
YWw8dWludDY0X3Q+IHZhbHVlOwotICAgIGRlY29kZXIgPj4gdmFsdWU7Ci0gICAgaWYgKCF2YWx1
ZSkgewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgY2FuY2VsUmVwbHko
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAg
IGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoKmZsYWcpLCBXVEZNb3ZlKCp2YWx1ZSkpOwotfQot
Ci12b2lkIFRlc3RBc3luY01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHM6OmNhbmNlbFJlcGx5
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCYmLCB1aW50NjRfdCYmKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKLXsKLSAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkFzeW5jUmVwbHlFcnJvcjxi
b29sPjo6Y3JlYXRlKCksIElQQzo6QXN5bmNSZXBseUVycm9yPHVpbnQ2NF90Pjo6Y3JlYXRlKCkp
OwotfQotCi12b2lkIFRlc3RBc3luY01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHM6OnNlbmQo
c3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mJiBlbmNvZGVyLCBJUEM6OkNvbm5lY3Rpb24m
IGNvbm5lY3Rpb24sIGJvb2wgZmxhZywgdWludDY0X3QgdmFsdWUpCi17Ci0gICAgKmVuY29kZXIg
PDwgZmxhZzsKLSAgICAqZW5jb2RlciA8PCB2YWx1ZTsKLSAgICBjb25uZWN0aW9uLnNlbmRTeW5j
UmVwbHkoV1RGTW92ZShlbmNvZGVyKSk7Ci19Ci0KLSNlbmRpZgotCi12b2lkIFRlc3RTeW5jTWVz
c2FnZTo6c2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYmIGVuY29kZXIsIElQQzo6
Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgdWludDhfdCByZXBseSkKLXsKLSAgICAqZW5jb2RlciA8
PCByZXBseTsKLSAgICBjb25uZWN0aW9uLnNlbmRTeW5jUmVwbHkoV1RGTW92ZShlbmNvZGVyKSk7
Ci19Ci0KLXZvaWQgVGVzdFN5bmNocm9ub3VzTWVzc2FnZTo6c2VuZChzdGQ6OnVuaXF1ZV9wdHI8
SVBDOjpFbmNvZGVyPiYmIGVuY29kZXIsIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29u
c3QgT3B0aW9uYWw8V2ViS2l0OjpUZXN0Q2xhc3NOYW1lPiYgb3B0aW9uYWxSZXBseSkKLXsKLSAg
ICAqZW5jb2RlciA8PCBvcHRpb25hbFJlcGx5OwotICAgIGNvbm5lY3Rpb24uc2VuZFN5bmNSZXBs
eShXVEZNb3ZlKGVuY29kZXIpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViUGFnZQotCi19IC8v
IG5hbWVzcGFjZSBNZXNzYWdlcwotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotdm9pZCBXZWJQYWdl
OjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVj
b2RlciYgZGVjb2RlcikKLXsKLSAgICBhdXRvIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KTsKLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpM
b2FkVVJMOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpX
ZWJQYWdlOjpMb2FkVVJMPihkZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6bG9hZFVSTCk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0jaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKLSAgICBpZiAoZGVj
b2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0QXN5bmNNZXNzYWdl
OjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlQXN5bmM8TWVzc2FnZXM6Oldl
YlBhZ2U6OlRlc3RBc3luY01lc3NhZ2U+KGNvbm5lY3Rpb24sIGRlY29kZXIsIHRoaXMsICZXZWJQ
YWdlOjp0ZXN0QXN5bmNNZXNzYWdlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNlbmRpZgot
I2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCi0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9
PSBNZXNzYWdlczo6V2ViUGFnZTo6VGVzdEFzeW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50czo6bmFt
ZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZUFzeW5jPE1lc3NhZ2VzOjpXZWJQYWdl
OjpUZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJndW1lbnRzPihjb25uZWN0aW9uLCBkZWNvZGVyLCB0
aGlzLCAmV2ViUGFnZTo6dGVzdEFzeW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50cyk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0jZW5kaWYKLSNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQotICAgIGlm
IChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RBc3luY01l
c3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHM6Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRs
ZU1lc3NhZ2VBc3luYzxNZXNzYWdlczo6V2ViUGFnZTo6VGVzdEFzeW5jTWVzc2FnZVdpdGhNdWx0
aXBsZUFyZ3VtZW50cz4oY29ubmVjdGlvbiwgZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OnRlc3RB
c3luY01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHMpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotI2VuZGlmCi0gICAgV2ViUGFnZUJhc2U6OmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24s
IGRlY29kZXIpOwotfQotCi12b2lkIFdlYlBhZ2U6OmRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2Rlciwgc3RkOjp1bmlx
dWVfcHRyPElQQzo6RW5jb2Rlcj4mIHJlcGx5RW5jb2RlcikKLXsKLSAgICBhdXRvIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKTsKLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09
IE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0U3luY01lc3NhZ2U6Om5hbWUoKSkgewotICAgICAgICBJ
UEM6OmhhbmRsZU1lc3NhZ2VTeW5jaHJvbm91czxNZXNzYWdlczo6V2ViUGFnZTo6VGVzdFN5bmNN
ZXNzYWdlPihjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIsIHRoaXMsICZXZWJQYWdl
Ojp0ZXN0U3luY01lc3NhZ2UpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChkZWNv
ZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RTeW5jaHJvbm91c01l
c3NhZ2U6Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2VTeW5jaHJvbm91czxN
ZXNzYWdlczo6V2ViUGFnZTo6VGVzdFN5bmNocm9ub3VzTWVzc2FnZT4oY29ubmVjdGlvbiwgZGVj
b2RlciwgcmVwbHlFbmNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6dGVzdFN5bmNocm9ub3VzTWVzc2Fn
ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24p
OwotICAgIFVOVVNFRF9QQVJBTShkZWNvZGVyKTsKLSAgICBVTlVTRURfUEFSQU0ocmVwbHlFbmNv
ZGVyKTsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0Ci0KClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQv
TWVzc2FnZVJlY2VpdmVyU3VwZXJjbGFzcy1leHBlY3RlZC5jcHAKX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVk
OiBzdm46ZW9sLXN0eWxlCiMjIC0xICswLDAgIyMKLW5hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIHByb3BlcnR5CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L01lc3NhZ2Vz
LWV4cGVjdGVkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9N
ZXNzYWdlcy1leHBlY3RlZC5oCShyZXZpc2lvbiAyNjEyMzgpCisrKyBTb3VyY2UvV2ViS2l0L1Nj
cmlwdHMvd2Via2l0L01lc3NhZ2VzLWV4cGVjdGVkLmgJKG5vbmV4aXN0ZW50KQpAQCAtMSw1NzAg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMC0yMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECi0g
KiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IKLSAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0gKiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUgotICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSAqIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgKEVOQUJMRShX
RUJLSVQyKSAmJiAoTkVTVEVEX01BU1RFUl9DT05ESVRJT04gfHwgTUFTVEVSX09SICYmIE1BU1RF
Ul9BTkQpKQotCi0jaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKLSNpbmNsdWRlICJDb25uZWN0
aW9uLmgiCi0jaW5jbHVkZSAiUGx1Z2luLmgiCi0jaW5jbHVkZSAiV2ViUGFnZU1lc3NhZ2VzUmVw
bGllcy5oIgotI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NMYXllci5oPgotI2luY2x1ZGUgPFdl
YkNvcmUvS2V5Ym9hcmRFdmVudC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvUGx1Z2luRGF0YS5oPgot
I2luY2x1ZGUgPHV0aWxpdHk+Ci0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgotI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQot
bmFtZXNwYWNlIElQQyB7Ci1jbGFzcyBEdW1teVR5cGU7Ci1jbGFzcyBNYWNoUG9ydDsKLX0KLQot
bmFtZXNwYWNlIFdlYktpdCB7Ci1jbGFzcyBXZWJQcmVmZXJlbmNlc1N0b3JlOwotY2xhc3MgV2Vi
VG91Y2hFdmVudDsKLX0KLQotbmFtZXNwYWNlIE1lc3NhZ2VzIHsKLW5hbWVzcGFjZSBXZWJQYWdl
IHsKLQotc3RhdGljIGlubGluZSBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJO
YW1lKCkKLXsKLSAgICByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIldlYlBhZ2UiKTsKLX0K
LQotY2xhc3MgTG9hZFVSTCB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGNvbnN0
IFN0cmluZyY+IEFyZ3VtZW50czsKLQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBy
ZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0
aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJl
bmNlKCJMb2FkVVJMIik7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsK
LQotICAgIGV4cGxpY2l0IExvYWRVUkwoY29uc3QgU3RyaW5nJiB1cmwpCi0gICAgICAgIDogbV9h
cmd1bWVudHModXJsKQotICAgIHsKLSAgICB9Ci0KLSAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3Vt
ZW50cygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7Ci0gICAgfQot
Ci1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKLX07Ci0KLSNpZiBFTkFCTEUo
VE9VQ0hfRVZFTlRTKQotY2xhc3MgTG9hZFNvbWV0aGluZyB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRl
ZiBzdGQ6OnR1cGxlPGNvbnN0IFN0cmluZyY+IEFyZ3VtZW50czsKLQotICAgIHN0YXRpYyBJUEM6
OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJO
YW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJu
IElQQzo6U3RyaW5nUmVmZXJlbmNlKCJMb2FkU29tZXRoaW5nIik7IH0KLSAgICBzdGF0aWMgY29u
c3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKLQotICAgIGV4cGxpY2l0IExvYWRTb21ldGhpbmcoY29u
c3QgU3RyaW5nJiB1cmwpCi0gICAgICAgIDogbV9hcmd1bWVudHModXJsKQotICAgIHsKLSAgICB9
Ci0KLSAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewotICAgICAg
ICByZXR1cm4gbV9hcmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBt
X2FyZ3VtZW50czsKLX07Ci0jZW5kaWYKLQotI2lmIChFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiAo
TkVTVEVEX01FU1NBR0VfQ09ORElUSU9OIHx8IFNPTUVfT1RIRVJfTUVTU0FHRV9DT05ESVRJT04p
KQotY2xhc3MgVG91Y2hFdmVudCB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGNv
bnN0IFdlYktpdDo6V2ViVG91Y2hFdmVudCY+IEFyZ3VtZW50czsKLQotICAgIHN0YXRpYyBJUEM6
OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJO
YW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJu
IElQQzo6U3RyaW5nUmVmZXJlbmNlKCJUb3VjaEV2ZW50Iik7IH0KLSAgICBzdGF0aWMgY29uc3Qg
Ym9vbCBpc1N5bmMgPSBmYWxzZTsKLQotICAgIGV4cGxpY2l0IFRvdWNoRXZlbnQoY29uc3QgV2Vi
S2l0OjpXZWJUb3VjaEV2ZW50JiBldmVudCkKLSAgICAgICAgOiBtX2FyZ3VtZW50cyhldmVudCkK
LSAgICB7Ci0gICAgfQotCi0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAot
ICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAg
ICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19OwotI2VuZGlmCi0KLSNpZiAoRU5BQkxFKFRPVUNI
X0VWRU5UUykgJiYgKE5FU1RFRF9NRVNTQUdFX0NPTkRJVElPTiAmJiBTT01FX09USEVSX01FU1NB
R0VfQ09ORElUSU9OKSkKLWNsYXNzIEFkZEV2ZW50IHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0
ZDo6dHVwbGU8Y29uc3QgV2ViS2l0OjpXZWJUb3VjaEV2ZW50Jj4gQXJndW1lbnRzOwotCi0gICAg
c3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3Nh
Z2VSZWNlaXZlck5hbWUoKTsgfQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1l
KCkgeyByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIkFkZEV2ZW50Iik7IH0KLSAgICBzdGF0
aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKLQotICAgIGV4cGxpY2l0IEFkZEV2ZW50KGNv
bnN0IFdlYktpdDo6V2ViVG91Y2hFdmVudCYgZXZlbnQpCi0gICAgICAgIDogbV9hcmd1bWVudHMo
ZXZlbnQpCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkg
Y29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0KLXByaXZh
dGU6Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLSNlbmRpZgotCi0jaWYgRU5BQkxF
KFRPVUNIX0VWRU5UUykKLWNsYXNzIExvYWRTb21ldGhpbmdFbHNlIHsKLXB1YmxpYzoKLSAgICB0
eXBlZGVmIHN0ZDo6dHVwbGU8Y29uc3QgU3RyaW5nJj4gQXJndW1lbnRzOwotCi0gICAgc3RhdGlj
IElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNl
aXZlck5hbWUoKTsgfQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyBy
ZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIkxvYWRTb21ldGhpbmdFbHNlIik7IH0KLSAgICBz
dGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKLQotICAgIGV4cGxpY2l0IExvYWRTb21l
dGhpbmdFbHNlKGNvbnN0IFN0cmluZyYgdXJsKQotICAgICAgICA6IG1fYXJndW1lbnRzKHVybCkK
LSAgICB7Ci0gICAgfQotCi0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAot
ICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAg
ICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19OwotI2VuZGlmCi0KLWNsYXNzIERpZFJlY2VpdmVQ
b2xpY3lEZWNpc2lvbiB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPHVpbnQ2NF90
LCB1aW50NjRfdCwgdWludDMyX3Q+IEFyZ3VtZW50czsKLQotICAgIHN0YXRpYyBJUEM6OlN0cmlu
Z1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7
IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6
U3RyaW5nUmVmZXJlbmNlKCJEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24iKTsgfQotICAgIHN0YXRp
YyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOwotCi0gICAgRGlkUmVjZWl2ZVBvbGljeURlY2lz
aW9uKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IGxpc3RlbmVySUQsIHVpbnQzMl90IHBvbGlj
eUFjdGlvbikKLSAgICAgICAgOiBtX2FyZ3VtZW50cyhmcmFtZUlELCBsaXN0ZW5lcklELCBwb2xp
Y3lBY3Rpb24pCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRz
KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0KLXBy
aXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLQotY2xhc3MgQ2xvc2Ugewot
cHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTw+IEFyZ3VtZW50czsKLQotICAgIHN0YXRp
YyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVj
ZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsg
cmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJDbG9zZSIpOyB9Ci0gICAgc3RhdGljIGNvbnN0
IGJvb2wgaXNTeW5jID0gZmFsc2U7Ci0KLSAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygp
IGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7Ci0gICAgfQotCi1wcml2
YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKLX07Ci0KLWNsYXNzIFByZWZlcmVuY2Vz
RGlkQ2hhbmdlIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8Y29uc3QgV2ViS2l0
OjpXZWJQcmVmZXJlbmNlc1N0b3JlJj4gQXJndW1lbnRzOwotCi0gICAgc3RhdGljIElQQzo6U3Ry
aW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUo
KTsgfQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBD
OjpTdHJpbmdSZWZlcmVuY2UoIlByZWZlcmVuY2VzRGlkQ2hhbmdlIik7IH0KLSAgICBzdGF0aWMg
Y29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKLQotICAgIGV4cGxpY2l0IFByZWZlcmVuY2VzRGlk
Q2hhbmdlKGNvbnN0IFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUpCi0gICAgICAg
IDogbV9hcmd1bWVudHMoc3RvcmUpCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0IEFyZ3VtZW50
cyYgYXJndW1lbnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsK
LSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLQotY2xh
c3MgU2VuZERvdWJsZUFuZEZsb2F0IHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8
ZG91YmxlLCBmbG9hdD4gQXJndW1lbnRzOwotCi0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJl
bmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsgfQotICAg
IHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpTdHJpbmdS
ZWZlcmVuY2UoIlNlbmREb3VibGVBbmRGbG9hdCIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wg
aXNTeW5jID0gZmFsc2U7Ci0KLSAgICBTZW5kRG91YmxlQW5kRmxvYXQoZG91YmxlIGQsIGZsb2F0
IGYpCi0gICAgICAgIDogbV9hcmd1bWVudHMoZCwgZikKLSAgICB7Ci0gICAgfQotCi0gICAgY29u
c3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1f
YXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7
Ci19OwotCi1jbGFzcyBTZW5kSW50cyB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxl
PGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mLCBjb25zdCBWZWN0b3I8VmVjdG9yPHVpbnQ2NF90Pj4m
PiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJO
YW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6
U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiU2Vu
ZEludHMiKTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOwotCi0gICAg
U2VuZEludHMoY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgaW50cywgY29uc3QgVmVjdG9yPFZlY3Rv
cjx1aW50NjRfdD4+JiBpbnRWZWN0b3JzKQotICAgICAgICA6IG1fYXJndW1lbnRzKGludHMsIGlu
dFZlY3RvcnMpCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRz
KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0KLXBy
aXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLQotY2xhc3MgQ3JlYXRlUGx1
Z2luIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8dWludDY0X3QsIGNvbnN0IFdl
YktpdDo6UGx1Z2luOjpQYXJhbWV0ZXJzJj4gQXJndW1lbnRzOwotCi0gICAgc3RhdGljIElQQzo6
U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5h
bWUoKTsgfQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4g
SVBDOjpTdHJpbmdSZWZlcmVuY2UoIkNyZWF0ZVBsdWdpbiIpOyB9Ci0gICAgc3RhdGljIGNvbnN0
IGJvb2wgaXNTeW5jID0gdHJ1ZTsKLQotICAgIHVzaW5nIFJlcGx5ID0gc3RkOjp0dXBsZTxib29s
Jj47Ci0gICAgdXNpbmcgUmVwbHlBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPGJvb2w+OwotICAgIENy
ZWF0ZVBsdWdpbih1aW50NjRfdCBwbHVnaW5JbnN0YW5jZUlELCBjb25zdCBXZWJLaXQ6OlBsdWdp
bjo6UGFyYW1ldGVycyYgcGFyYW1ldGVycykKLSAgICAgICAgOiBtX2FyZ3VtZW50cyhwbHVnaW5J
bnN0YW5jZUlELCBwYXJhbWV0ZXJzKQotICAgIHsKLSAgICB9Ci0KLSAgICBjb25zdCBBcmd1bWVu
dHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7
Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKLX07Ci0KLWNs
YXNzIFJ1bkphdmFTY3JpcHRBbGVydCB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxl
PHVpbnQ2NF90LCBjb25zdCBTdHJpbmcmPiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpT
dHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFt
ZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJ
UEM6OlN0cmluZ1JlZmVyZW5jZSgiUnVuSmF2YVNjcmlwdEFsZXJ0Iik7IH0KLSAgICBzdGF0aWMg
Y29uc3QgYm9vbCBpc1N5bmMgPSB0cnVlOwotCi0gICAgdXNpbmcgUmVwbHkgPSBzdGQ6OnR1cGxl
PD47Ci0gICAgdXNpbmcgUmVwbHlBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPD47Ci0gICAgUnVuSmF2
YVNjcmlwdEFsZXJ0KHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKLSAg
ICAgICAgOiBtX2FyZ3VtZW50cyhmcmFtZUlELCBtZXNzYWdlKQotICAgIHsKLSAgICB9Ci0KLSAg
ICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1
cm4gbV9hcmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3Vt
ZW50czsKLX07Ci0KLWNsYXNzIEdldFBsdWdpbnMgewotcHVibGljOgotICAgIHR5cGVkZWYgc3Rk
Ojp0dXBsZTxib29sPiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVu
Y2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAg
c3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1Jl
ZmVyZW5jZSgiR2V0UGx1Z2lucyIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0g
dHJ1ZTsKLQotICAgIHVzaW5nIFJlcGx5ID0gc3RkOjp0dXBsZTxWZWN0b3I8V2ViQ29yZTo6UGx1
Z2luSW5mbz4mPjsKLSAgICB1c2luZyBSZXBseUFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8VmVjdG9y
PFdlYkNvcmU6OlBsdWdpbkluZm8+PjsKLSAgICBleHBsaWNpdCBHZXRQbHVnaW5zKGJvb2wgcmVm
cmVzaCkKLSAgICAgICAgOiBtX2FyZ3VtZW50cyhyZWZyZXNoKQotICAgIHsKLSAgICB9Ci0KLSAg
ICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1
cm4gbV9hcmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3Vt
ZW50czsKLX07Ci0KLWNsYXNzIEdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uIHsKLXB1YmxpYzoK
LSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8Y29uc3QgU3RyaW5nJj4gQXJndW1lbnRzOwotCi0gICAg
c3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3Nh
Z2VSZWNlaXZlck5hbWUoKTsgfQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1l
KCkgeyByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIkdldFBsdWdpblByb2Nlc3NDb25uZWN0
aW9uIik7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSB0cnVlOwotCi0gICAgdXNp
bmcgRGVsYXllZFJlcGx5ID0gR2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25EZWxheWVkUmVwbHk7
Ci0gICAgc3RhdGljIHZvaWQgc2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYmLCBJ
UEM6OkNvbm5lY3Rpb24mLCBjb25zdCBJUEM6OkNvbm5lY3Rpb246OkhhbmRsZSYgY29ubmVjdGlv
bkhhbmRsZSk7Ci0gICAgdXNpbmcgUmVwbHkgPSBzdGQ6OnR1cGxlPElQQzo6Q29ubmVjdGlvbjo6
SGFuZGxlJj47Ci0gICAgdXNpbmcgUmVwbHlBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPElQQzo6Q29u
bmVjdGlvbjo6SGFuZGxlPjsKLSAgICBleHBsaWNpdCBHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlv
bihjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgpCi0gICAgICAgIDogbV9hcmd1bWVudHMocGx1Z2lu
UGF0aCkKLSAgICB7Ci0gICAgfQotCi0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBj
b25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0
ZToKLSAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19OwotCi1jbGFzcyBUZXN0TXVsdGlwbGVB
dHRyaWJ1dGVzIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8PiBBcmd1bWVudHM7
Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1
cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJl
bmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiVGVzdE11bHRpcGxlQXR0
cmlidXRlcyIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gdHJ1ZTsKLQotICAg
IHVzaW5nIERlbGF5ZWRSZXBseSA9IFRlc3RNdWx0aXBsZUF0dHJpYnV0ZXNEZWxheWVkUmVwbHk7
Ci0gICAgc3RhdGljIHZvaWQgc2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYmLCBJ
UEM6OkNvbm5lY3Rpb24mKTsKLSAgICB1c2luZyBSZXBseSA9IHN0ZDo6dHVwbGU8PjsKLSAgICB1
c2luZyBSZXBseUFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8PjsKLSAgICBjb25zdCBBcmd1bWVudHMm
IGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7Ci0g
ICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKLX07Ci0KLWNsYXNz
IFRlc3RQYXJhbWV0ZXJBdHRyaWJ1dGVzIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVw
bGU8dWludDY0X3QsIGRvdWJsZSwgZG91YmxlPiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBD
OjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVy
TmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVy
biBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiVGVzdFBhcmFtZXRlckF0dHJpYnV0ZXMiKTsgfQotICAg
IHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOwotCi0gICAgVGVzdFBhcmFtZXRlckF0
dHJpYnV0ZXModWludDY0X3QgZm9vLCBkb3VibGUgYmFyLCBkb3VibGUgYmF6KQotICAgICAgICA6
IG1fYXJndW1lbnRzKGZvbywgYmFyLCBiYXopCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0IEFy
Z3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3Vt
ZW50czsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsK
LQotY2xhc3MgVGVtcGxhdGVUZXN0IHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8
Y29uc3QgSGFzaE1hcDxTdHJpbmcsIHN0ZDo6cGFpcjxTdHJpbmcsIHVpbnQ2NF90Pj4mPiBBcmd1
bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkg
eyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6U3RyaW5n
UmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiVGVtcGxhdGVU
ZXN0Iik7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKLQotICAgIGV4
cGxpY2l0IFRlbXBsYXRlVGVzdChjb25zdCBIYXNoTWFwPFN0cmluZywgc3RkOjpwYWlyPFN0cmlu
ZywgdWludDY0X3Q+PiYgYSkKLSAgICAgICAgOiBtX2FyZ3VtZW50cyhhKQotICAgIHsKLSAgICB9
Ci0KLSAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewotICAgICAg
ICByZXR1cm4gbV9hcmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBt
X2FyZ3VtZW50czsKLX07Ci0KLWNsYXNzIFNldFZpZGVvTGF5ZXJJRCB7Ci1wdWJsaWM6Ci0gICAg
dHlwZWRlZiBzdGQ6OnR1cGxlPGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OlBsYXRmb3Jt
TGF5ZXJJRCY+IEFyZ3VtZW50czsKLQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBy
ZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0
aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJl
bmNlKCJTZXRWaWRlb0xheWVySUQiKTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9
IGZhbHNlOwotCi0gICAgZXhwbGljaXQgU2V0VmlkZW9MYXllcklEKGNvbnN0IFdlYkNvcmU6Okdy
YXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRCYgdmlkZW9MYXllcklEKQotICAgICAgICA6IG1f
YXJndW1lbnRzKHZpZGVvTGF5ZXJJRCkKLSAgICB7Ci0gICAgfQotCi0gICAgY29uc3QgQXJndW1l
bnRzJiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRz
OwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19OwotCi0j
aWYgUExBVEZPUk0oTUFDKQotY2xhc3MgRGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24gewot
cHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBJUEM6Ok1hY2hQb3J0Jj4gQXJn
dW1lbnRzOwotCi0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgp
IHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsgfQotICAgIHN0YXRpYyBJUEM6OlN0cmlu
Z1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIkRpZENyZWF0
ZVdlYlByb2Nlc3NDb25uZWN0aW9uIik7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMg
PSBmYWxzZTsKLQotICAgIGV4cGxpY2l0IERpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKGNv
bnN0IElQQzo6TWFjaFBvcnQmIGNvbm5lY3Rpb25JZGVudGlmaWVyKQotICAgICAgICA6IG1fYXJn
dW1lbnRzKGNvbm5lY3Rpb25JZGVudGlmaWVyKQotICAgIHsKLSAgICB9Ci0KLSAgICBjb25zdCBB
cmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9hcmd1
bWVudHM7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKLX07
Ci0jZW5kaWYKLQotI2lmIFBMQVRGT1JNKE1BQykKLWNsYXNzIEludGVycHJldEtleUV2ZW50IHsK
LXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8dWludDMyX3Q+IEFyZ3VtZW50czsKLQot
ICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVybiBt
ZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2Ug
bmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJJbnRlcnByZXRLZXlFdmVudCIp
OyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gdHJ1ZTsKLQotICAgIHVzaW5nIFJl
cGx5ID0gc3RkOjp0dXBsZTxWZWN0b3I8V2ViQ29yZTo6S2V5cHJlc3NDb21tYW5kPiY+OwotICAg
IHVzaW5nIFJlcGx5QXJndW1lbnRzID0gc3RkOjp0dXBsZTxWZWN0b3I8V2ViQ29yZTo6S2V5cHJl
c3NDb21tYW5kPj47Ci0gICAgZXhwbGljaXQgSW50ZXJwcmV0S2V5RXZlbnQodWludDMyX3QgdHlw
ZSkKLSAgICAgICAgOiBtX2FyZ3VtZW50cyh0eXBlKQotICAgIHsKLSAgICB9Ci0KLSAgICBjb25z
dCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9h
cmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsK
LX07Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShERVBSRUNBVEVEX0ZFQVRVUkUpCi1jbGFzcyBEZXBy
ZWNhdGVkT3BlcmF0aW9uIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8Y29uc3Qg
SVBDOjpEdW1teVR5cGUmPiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZl
cmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0g
ICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmlu
Z1JlZmVyZW5jZSgiRGVwcmVjYXRlZE9wZXJhdGlvbiIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJv
b2wgaXNTeW5jID0gZmFsc2U7Ci0KLSAgICBleHBsaWNpdCBEZXByZWNhdGVkT3BlcmF0aW9uKGNv
bnN0IElQQzo6RHVtbXlUeXBlJiBkdW1teSkKLSAgICAgICAgOiBtX2FyZ3VtZW50cyhkdW1teSkK
LSAgICB7Ci0gICAgfQotCi0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAot
ICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAg
ICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19OwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoRVhQRVJJ
TUVOVEFMX0ZFQVRVUkUpCi1jbGFzcyBFeHBlcmltZW50YWxPcGVyYXRpb24gewotcHVibGljOgot
ICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBJUEM6OkR1bW15VHlwZSY+IEFyZ3VtZW50czsK
LQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVy
biBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVu
Y2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJFeHBlcmltZW50YWxPcGVy
YXRpb24iKTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOwotCi0gICAg
ZXhwbGljaXQgRXhwZXJpbWVudGFsT3BlcmF0aW9uKGNvbnN0IElQQzo6RHVtbXlUeXBlJiBkdW1t
eSkKLSAgICAgICAgOiBtX2FyZ3VtZW50cyhkdW1teSkKLSAgICB7Ci0gICAgfQotCi0gICAgY29u
c3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1f
YXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7
Ci19OwotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIFdlYlBhZ2UKLX0gLy8gbmFtZXNwYWNlIE1l
c3NhZ2VzCi0KLSNlbmRpZiAvLyAoRU5BQkxFKFdFQktJVDIpICYmIChORVNURURfTUFTVEVSX0NP
TkRJVElPTiB8fCBNQVNURVJfT1IgJiYgTUFTVEVSX0FORCkpCgpQcm9wZXJ0eSBjaGFuZ2VzIG9u
OiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L01lc3NhZ2VzLWV4cGVjdGVkLmgKX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fXwpEZWxldGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0xICswLDAgIyMKLW5hdGl2ZQpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Vi
a2l0L01lc3NhZ2VzUmVwbGllcy1leHBlY3RlZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvU2NyaXB0cy93ZWJraXQvTWVzc2FnZXNSZXBsaWVzLWV4cGVjdGVkLmgJKHJldmlzaW9uIDI2
MTIzOCkKKysrIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvTWVzc2FnZXNSZXBsaWVzLWV4
cGVjdGVkLmgJKG5vbmV4aXN0ZW50KQpAQCAtMSw0MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDEwLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKLSAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0g
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgotICogQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAot
ICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IKLSAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0gKiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLAotICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI3ByYWdtYSBvbmNlCi0KLSNpZiAoRU5BQkxFKFdFQktJVDIpICYmIChORVNURURfTUFTVEVS
X0NPTkRJVElPTiB8fCBNQVNURVJfT1IgJiYgTUFTVEVSX0FORCkpCi0KLSNpbmNsdWRlICJDb25u
ZWN0aW9uLmgiCi0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLQotCi1uYW1lc3BhY2UgTWVzc2Fn
ZXMgewotbmFtZXNwYWNlIFdlYlBhZ2UgewotCi11c2luZyBHZXRQbHVnaW5Qcm9jZXNzQ29ubmVj
dGlvbkRlbGF5ZWRSZXBseSA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpDb25u
ZWN0aW9uOjpIYW5kbGUmIGNvbm5lY3Rpb25IYW5kbGUpPjsKLQotdXNpbmcgVGVzdE11bHRpcGxl
QXR0cmlidXRlc0RlbGF5ZWRSZXBseSA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT47Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdlYlBhZ2UKLX0gLy8gbmFtZXNwYWNlIE1lc3NhZ2VzCi0KLSNlbmRpZiAv
LyAoRU5BQkxFKFdFQktJVDIpICYmIChORVNURURfTUFTVEVSX0NPTkRJVElPTiB8fCBNQVNURVJf
T1IgJiYgTUFTVEVSX0FORCkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L01l
c3NhZ2VzUmVwbGllc1N1cGVyY2xhc3NSZXBsaWVzLWV4cGVjdGVkLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9NZXNzYWdlc1JlcGxpZXNTdXBlcmNsYXNzUmVw
bGllcy1leHBlY3RlZC5oCShyZXZpc2lvbiAyNjEyMzgpCisrKyBTb3VyY2UvV2ViS2l0L1Njcmlw
dHMvd2Via2l0L01lc3NhZ2VzUmVwbGllc1N1cGVyY2xhc3NSZXBsaWVzLWV4cGVjdGVkLmgJKG5v
bmV4aXN0ZW50KQpAQCAtMSw1MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwLTIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJyBBTkQKLSAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgotICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotICogREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IKLSAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0gKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAot
ICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBv
bmNlCi0KLSNpbmNsdWRlICJUZXN0Q2xhc3NOYW1lLmgiCi0jaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KLSNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KLQotCi1uYW1lc3BhY2UgTWVzc2FnZXMgewot
bmFtZXNwYWNlIFdlYlBhZ2UgewotCi0jaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKLXVzaW5nIFRl
c3RBc3luY01lc3NhZ2VBc3luY1JlcGx5ID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRf
dCByZXN1bHQpPjsKLSNlbmRpZgotCi0jaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKLXVzaW5nIFRl
c3RBc3luY01lc3NhZ2VXaXRoTm9Bcmd1bWVudHNBc3luY1JlcGx5ID0gQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPjsKLSNlbmRpZgotCi0jaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKLXVzaW5nIFRl
c3RBc3luY01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHNBc3luY1JlcGx5ID0gQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sIGZsYWcsIHVpbnQ2NF90IHZhbHVlKT47Ci0jZW5kaWYKLQotdXNp
bmcgVGVzdFN5bmNNZXNzYWdlRGVsYXllZFJlcGx5ID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1
aW50OF90IHJlcGx5KT47Ci0KLXVzaW5nIFRlc3RTeW5jaHJvbm91c01lc3NhZ2VEZWxheWVkUmVw
bHkgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IE9wdGlvbmFsPFdlYktpdDo6VGVzdENs
YXNzTmFtZT4mIG9wdGlvbmFsUmVwbHkpPjsKLQotfSAvLyBuYW1lc3BhY2UgV2ViUGFnZQotfSAv
LyBuYW1lc3BhY2UgTWVzc2FnZXMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQv
TWVzc2FnZXNTdXBlcmNsYXNzLWV4cGVjdGVkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9TY3JpcHRzL3dlYmtpdC9NZXNzYWdlc1N1cGVyY2xhc3MtZXhwZWN0ZWQuaAkocmV2aXNpb24g
MjYxMjM4KQorKysgU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9NZXNzYWdlc1N1cGVyY2xh
c3MtZXhwZWN0ZWQuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDIwNiArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDEwLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKLSAqIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgotICogQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTAotICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0gKiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLAotICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgotI2lu
Y2x1ZGUgIkNvbm5lY3Rpb24uaCIKLSNpbmNsdWRlICJUZXN0Q2xhc3NOYW1lLmgiCi0jaW5jbHVk
ZSAiV2ViUGFnZU1lc3NhZ2VzUmVwbGllcy5oIgotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0j
aW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+Ci0jaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3Vu
dGVkLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJL
aXQgewotZW51bSBjbGFzcyBUZXN0VHdvU3RhdGVFbnVtIDogYm9vbDsKLX0KLQotbmFtZXNwYWNl
IE1lc3NhZ2VzIHsKLW5hbWVzcGFjZSBXZWJQYWdlIHsKLQotc3RhdGljIGlubGluZSBJUEM6OlN0
cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lKCkKLXsKLSAgICByZXR1cm4gSVBDOjpT
dHJpbmdSZWZlcmVuY2UoIldlYlBhZ2UiKTsKLX0KLQotY2xhc3MgTG9hZFVSTCB7Ci1wdWJsaWM6
Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGNvbnN0IFN0cmluZyY+IEFyZ3VtZW50czsKLQotICAg
IHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNz
YWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFt
ZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJMb2FkVVJMIik7IH0KLSAgICBzdGF0
aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKLQotICAgIGV4cGxpY2l0IExvYWRVUkwoY29u
c3QgU3RyaW5nJiB1cmwpCi0gICAgICAgIDogbV9hcmd1bWVudHModXJsKQotICAgIHsKLSAgICB9
Ci0KLSAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewotICAgICAg
ICByZXR1cm4gbV9hcmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBt
X2FyZ3VtZW50czsKLX07Ci0KLSNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQotY2xhc3MgVGVzdEFz
eW5jTWVzc2FnZSB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPFdlYktpdDo6VGVz
dFR3b1N0YXRlRW51bT4gQXJndW1lbnRzOwotCi0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJl
bmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsgfQotICAg
IHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpTdHJpbmdS
ZWZlcmVuY2UoIlRlc3RBc3luY01lc3NhZ2UiKTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlz
U3luYyA9IGZhbHNlOwotCi0gICAgc3RhdGljIHZvaWQgY2FsbFJlcGx5KElQQzo6RGVjb2RlciYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0X3QmJik+JiYpOwotICAgIHN0YXRpYyB2b2lk
IGNhbmNlbFJlcGx5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0X3QmJik+JiYpOwotICAg
IHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBhc3luY01lc3NhZ2VSZXBseU5hbWUoKSB7IHJl
dHVybiB7ICJUZXN0QXN5bmNNZXNzYWdlUmVwbHkiIH07IH0KLSAgICB1c2luZyBBc3luY1JlcGx5
ID0gVGVzdEFzeW5jTWVzc2FnZUFzeW5jUmVwbHk7Ci0gICAgc3RhdGljIHZvaWQgc2VuZChzdGQ6
OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYmLCBJUEM6OkNvbm5lY3Rpb24mLCB1aW50NjRfdCBy
ZXN1bHQpOwotICAgIHVzaW5nIFJlcGx5ID0gc3RkOjp0dXBsZTx1aW50NjRfdCY+OwotICAgIHVz
aW5nIFJlcGx5QXJndW1lbnRzID0gc3RkOjp0dXBsZTx1aW50NjRfdD47Ci0gICAgZXhwbGljaXQg
VGVzdEFzeW5jTWVzc2FnZShXZWJLaXQ6OlRlc3RUd29TdGF0ZUVudW0gdHdvU3RhdGVFbnVtKQot
ICAgICAgICA6IG1fYXJndW1lbnRzKHR3b1N0YXRlRW51bSkKLSAgICB7Ci0gICAgfQotCi0gICAg
Y29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJu
IG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1bWVudHMgbV9hcmd1bWVu
dHM7Ci19OwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQotY2xhc3MgVGVzdEFz
eW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50cyB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1
cGxlPD4gQXJndW1lbnRzOwotCi0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2Vp
dmVyTmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsgfQotICAgIHN0YXRpYyBJ
UEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2Uo
IlRlc3RBc3luY01lc3NhZ2VXaXRoTm9Bcmd1bWVudHMiKTsgfQotICAgIHN0YXRpYyBjb25zdCBi
b29sIGlzU3luYyA9IGZhbHNlOwotCi0gICAgc3RhdGljIHZvaWQgY2FsbFJlcGx5KElQQzo6RGVj
b2RlciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgc3RhdGljIHZvaWQgY2Fu
Y2VsUmVwbHkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICBzdGF0aWMgSVBDOjpT
dHJpbmdSZWZlcmVuY2UgYXN5bmNNZXNzYWdlUmVwbHlOYW1lKCkgeyByZXR1cm4geyAiVGVzdEFz
eW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50c1JlcGx5IiB9OyB9Ci0gICAgdXNpbmcgQXN5bmNSZXBs
eSA9IFRlc3RBc3luY01lc3NhZ2VXaXRoTm9Bcmd1bWVudHNBc3luY1JlcGx5OwotICAgIHN0YXRp
YyB2b2lkIHNlbmQoc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mJiwgSVBDOjpDb25uZWN0
aW9uJik7Ci0gICAgdXNpbmcgUmVwbHkgPSBzdGQ6OnR1cGxlPD47Ci0gICAgdXNpbmcgUmVwbHlB
cmd1bWVudHMgPSBzdGQ6OnR1cGxlPD47Ci0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMo
KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJp
dmF0ZToKLSAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19OwotI2VuZGlmCi0KLSNpZiBFTkFC
TEUoVEVTVF9GRUFUVVJFKQotY2xhc3MgVGVzdEFzeW5jTWVzc2FnZVdpdGhNdWx0aXBsZUFyZ3Vt
ZW50cyB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPD4gQXJndW1lbnRzOwotCi0g
ICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1l
c3NhZ2VSZWNlaXZlck5hbWUoKTsgfQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBu
YW1lKCkgeyByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIlRlc3RBc3luY01lc3NhZ2VXaXRo
TXVsdGlwbGVBcmd1bWVudHMiKTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZh
bHNlOwotCi0gICAgc3RhdGljIHZvaWQgY2FsbFJlcGx5KElQQzo6RGVjb2RlciYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoYm9vbCYmLCB1aW50NjRfdCYmKT4mJik7Ci0gICAgc3RhdGljIHZvaWQg
Y2FuY2VsUmVwbHkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sJiYsIHVpbnQ2NF90JiYpPiYm
KTsKLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgYXN5bmNNZXNzYWdlUmVwbHlOYW1l
KCkgeyByZXR1cm4geyAiVGVzdEFzeW5jTWVzc2FnZVdpdGhNdWx0aXBsZUFyZ3VtZW50c1JlcGx5
IiB9OyB9Ci0gICAgdXNpbmcgQXN5bmNSZXBseSA9IFRlc3RBc3luY01lc3NhZ2VXaXRoTXVsdGlw
bGVBcmd1bWVudHNBc3luY1JlcGx5OwotICAgIHN0YXRpYyB2b2lkIHNlbmQoc3RkOjp1bmlxdWVf
cHRyPElQQzo6RW5jb2Rlcj4mJiwgSVBDOjpDb25uZWN0aW9uJiwgYm9vbCBmbGFnLCB1aW50NjRf
dCB2YWx1ZSk7Ci0gICAgdXNpbmcgUmVwbHkgPSBzdGQ6OnR1cGxlPGJvb2wmLCB1aW50NjRfdCY+
OwotICAgIHVzaW5nIFJlcGx5QXJndW1lbnRzID0gc3RkOjp0dXBsZTxib29sLCB1aW50NjRfdD47
Ci0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsKLSAgICAgICAg
cmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1bWVudHMgbV9h
cmd1bWVudHM7Ci19OwotI2VuZGlmCi0KLWNsYXNzIFRlc3RTeW5jTWVzc2FnZSB7Ci1wdWJsaWM6
Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPHVpbnQzMl90PiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0
aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJl
Y2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7
IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiVGVzdFN5bmNNZXNzYWdlIik7IH0KLSAgICBz
dGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSB0cnVlOwotCi0gICAgdXNpbmcgRGVsYXllZFJlcGx5
ID0gVGVzdFN5bmNNZXNzYWdlRGVsYXllZFJlcGx5OwotICAgIHN0YXRpYyB2b2lkIHNlbmQoc3Rk
Ojp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mJiwgSVBDOjpDb25uZWN0aW9uJiwgdWludDhfdCBy
ZXBseSk7Ci0gICAgdXNpbmcgUmVwbHkgPSBzdGQ6OnR1cGxlPHVpbnQ4X3QmPjsKLSAgICB1c2lu
ZyBSZXBseUFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8dWludDhfdD47Ci0gICAgZXhwbGljaXQgVGVz
dFN5bmNNZXNzYWdlKHVpbnQzMl90IHBhcmFtKQotICAgICAgICA6IG1fYXJndW1lbnRzKHBhcmFt
KQotICAgIHsKLSAgICB9Ci0KLSAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0
Ci0gICAgewotICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRlOgot
ICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKLX07Ci0KLWNsYXNzIFRlc3RTeW5jaHJvbm91c01l
c3NhZ2UgewotcHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxib29sPiBBcmd1bWVudHM7
Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1
cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJl
bmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiVGVzdFN5bmNocm9ub3Vz
TWVzc2FnZSIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gdHJ1ZTsKLQotICAg
IHVzaW5nIERlbGF5ZWRSZXBseSA9IFRlc3RTeW5jaHJvbm91c01lc3NhZ2VEZWxheWVkUmVwbHk7
Ci0gICAgc3RhdGljIHZvaWQgc2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYmLCBJ
UEM6OkNvbm5lY3Rpb24mLCBjb25zdCBPcHRpb25hbDxXZWJLaXQ6OlRlc3RDbGFzc05hbWU+JiBv
cHRpb25hbFJlcGx5KTsKLSAgICB1c2luZyBSZXBseSA9IHN0ZDo6dHVwbGU8T3B0aW9uYWw8V2Vi
S2l0OjpUZXN0Q2xhc3NOYW1lPiY+OwotICAgIHVzaW5nIFJlcGx5QXJndW1lbnRzID0gc3RkOjp0
dXBsZTxPcHRpb25hbDxXZWJLaXQ6OlRlc3RDbGFzc05hbWU+PjsKLSAgICBleHBsaWNpdCBUZXN0
U3luY2hyb25vdXNNZXNzYWdlKGJvb2wgdmFsdWUpCi0gICAgICAgIDogbV9hcmd1bWVudHModmFs
dWUpCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29u
c3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0KLXByaXZhdGU6
Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViUGFn
ZQotfSAvLyBuYW1lc3BhY2UgTWVzc2FnZXMKClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9X
ZWJLaXQvU2NyaXB0cy93ZWJraXQvTWVzc2FnZXNTdXBlcmNsYXNzLWV4cGVjdGVkLmgKX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fXwpEZWxldGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0xICswLDAgIyMKLW5hdGl2ZQpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Vi
a2l0L21lc3NhZ2VzLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJr
aXQvbWVzc2FnZXMucHkJKHJldmlzaW9uIDI2MTIzOCkKKysrIFNvdXJjZS9XZWJLaXQvU2NyaXB0
cy93ZWJraXQvbWVzc2FnZXMucHkJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAgU1lO
Q0hST05PVVNfQVRUUklCVVRFID0gJ1N5bmNocm9ub3VzJwogQVNZTkNfQVRUUklCVVRFID0gJ0Fz
eW5jJwogCiBfbGljZW5zZV9oZWFkZXIgPSAiIiIvKgotICogQ29weXJpZ2h0IChDKSAyMDEwLTIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEw
LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0xMzQsNyArMTM0LDcgQEAgZGVmIG1lc3NhZ2VfdG9fcmVwbHlfZm9y
d2FyZF9kZWNsYXJhdGlvbgogICAgIHJldHVybiBzdXJyb3VuZF9pbl9jb25kaXRpb24oJycuam9p
bihyZXN1bHQpLCBtZXNzYWdlLmNvbmRpdGlvbikKIAogCi1kZWYgbWVzc2FnZV90b19zdHJ1Y3Rf
ZGVjbGFyYXRpb24obWVzc2FnZSk6CitkZWYgbWVzc2FnZV90b19zdHJ1Y3RfZGVjbGFyYXRpb24o
cmVjZWl2ZXIsIG1lc3NhZ2UpOgogICAgIHJlc3VsdCA9IFtdCiAgICAgZnVuY3Rpb25fcGFyYW1l
dGVycyA9IFsoZnVuY3Rpb25fcGFyYW1ldGVyX3R5cGUoeC50eXBlLCB4LmtpbmQpLCB4Lm5hbWUp
IGZvciB4IGluIG1lc3NhZ2UucGFyYW1ldGVyc10KIApAQCAtMTQyLDggKzE0Miw3IEBAIGRlZiBt
ZXNzYWdlX3RvX3N0cnVjdF9kZWNsYXJhdGlvbihtZXNzYWcKICAgICByZXN1bHQuYXBwZW5kKCdw
dWJsaWM6XG4nKQogICAgIHJlc3VsdC5hcHBlbmQoJyAgICB0eXBlZGVmICVzIEFyZ3VtZW50cztc
bicgJSBhcmd1bWVudHNfdHlwZShtZXNzYWdlKSkKICAgICByZXN1bHQuYXBwZW5kKCdcbicpCi0g
ICAgcmVzdWx0LmFwcGVuZCgnICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZl
ck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH1cbicpCi0gICAgcmVzdWx0
LmFwcGVuZCgnICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4g
SVBDOjpTdHJpbmdSZWZlcmVuY2UoIiVzIik7IH1cbicgJSBtZXNzYWdlLm5hbWUpCisgICAgcmVz
dWx0LmFwcGVuZCgnICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJ
UEM6Ok1lc3NhZ2VOYW1lOjolc18lczsgfVxuJyAlIChyZWNlaXZlci5uYW1lLCBtZXNzYWdlLm5h
bWUpKQogICAgIHJlc3VsdC5hcHBlbmQoJyAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSAl
cztcbicgJSAoJ2ZhbHNlJywgJ3RydWUnKVttZXNzYWdlLnJlcGx5X3BhcmFtZXRlcnMgIT0gTm9u
ZSBhbmQgbm90IG1lc3NhZ2UuaGFzX2F0dHJpYnV0ZShBU1lOQ19BVFRSSUJVVEUpXSkKICAgICBy
ZXN1bHQuYXBwZW5kKCdcbicpCiAgICAgaWYgbWVzc2FnZS5yZXBseV9wYXJhbWV0ZXJzICE9IE5v
bmU6CkBAIC0xNTMsNyArMTUyLDcgQEAgZGVmIG1lc3NhZ2VfdG9fc3RydWN0X2RlY2xhcmF0aW9u
KG1lc3NhZwogICAgICAgICAgICAgbW92ZV9wYXJhbWV0ZXJzID0gJywgJy5qb2luKFttb3ZlX3R5
cGUoeC50eXBlKSBmb3IgeCBpbiBtZXNzYWdlLnJlcGx5X3BhcmFtZXRlcnNdKQogICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZCgnICAgIHN0YXRpYyB2b2lkIGNhbGxSZXBseShJUEM6OkRlY29kZXIm
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCVzKT4mJik7XG4nICUgbW92ZV9wYXJhbWV0ZXJzKQog
ICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIHN0YXRpYyB2b2lkIGNhbmNlbFJlcGx5KENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoJXMpPiYmKTtcbicgJSBtb3ZlX3BhcmFtZXRlcnMpCi0gICAg
ICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIGFz
eW5jTWVzc2FnZVJlcGx5TmFtZSgpIHsgcmV0dXJuIHsgIiVzUmVwbHkiIH07IH1cbicgJSBtZXNz
YWdlLm5hbWUpCisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgc3RhdGljIElQQzo6TWVz
c2FnZU5hbWUgYXN5bmNNZXNzYWdlUmVwbHlOYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFt
ZTo6JXNfJXNSZXBseTsgfVxuJyAlIChyZWNlaXZlci5uYW1lLCBtZXNzYWdlLm5hbWUpKQogICAg
ICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIHVzaW5nIEFzeW5jUmVwbHkgPSAlc0FzeW5jUmVw
bHk7XG4nICUgbWVzc2FnZS5uYW1lKQogICAgICAgICBlbGlmIG1lc3NhZ2UuaGFzX2F0dHJpYnV0
ZShTWU5DSFJPTk9VU19BVFRSSUJVVEUpOgogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAg
IHVzaW5nIERlbGF5ZWRSZXBseSA9ICVzRGVsYXllZFJlcGx5O1xuJyAlIG1lc3NhZ2UubmFtZSkK
QEAgLTI3Nyw4ICsyNzYsOSBAQCBkZWYgZm9yd2FyZF9kZWNsYXJhdGlvbnNfYW5kX2hlYWRlcnMo
cmVjCiAKICAgICBoZWFkZXJzID0gc2V0KFsKICAgICAgICAgJyJBcmd1bWVudENvZGVycy5oIics
Ci0gICAgICAgICc8d3RmL0ZvcndhcmQuaD4nLAogICAgICAgICAnIkNvbm5lY3Rpb24uaCInLAor
ICAgICAgICAnIk1lc3NhZ2VOYW1lcy5oIicsCisgICAgICAgICc8d3RmL0ZvcndhcmQuaD4nLAog
ICAgICAgICAnPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPicsCiAgICAgICAgICciJXNNZXNz
YWdlc1JlcGxpZXMuaCInICUgcmVjZWl2ZXIubmFtZSwKICAgICBdKQpAQCAtMzM1LDYgKzMzNSw3
IEBAIGRlZiBmb3J3YXJkX2RlY2xhcmF0aW9uc19hbmRfaGVhZGVyc19mb3IKIAogICAgIGhlYWRl
cnMgPSBzZXQoWwogICAgICAgICAnPHd0Zi9Gb3J3YXJkLmg+JywKKyAgICAgICAgJyJNZXNzYWdl
TmFtZXMuaCInLAogICAgIF0pCiAKICAgICBub25fdGVtcGxhdGVfd3RmX3R5cGVzID0gZnJvemVu
c2V0KFsKQEAgLTQ0MCwxMiArNDQxLDEyIEBAIGRlZiBnZW5lcmF0ZV9tZXNzYWdlc19oZWFkZXIo
cmVjZWl2ZXIpOgogCiAgICAgcmVzdWx0LmFwcGVuZCgnbmFtZXNwYWNlIE1lc3NhZ2VzIHtcbm5h
bWVzcGFjZSAlcyB7XG4nICUgcmVjZWl2ZXIubmFtZSkKICAgICByZXN1bHQuYXBwZW5kKCdcbicp
Ci0gICAgcmVzdWx0LmFwcGVuZCgnc3RhdGljIGlubGluZSBJUEM6OlN0cmluZ1JlZmVyZW5jZSBt
ZXNzYWdlUmVjZWl2ZXJOYW1lKClcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnc3RhdGljIGlubGlu
ZSBJUEM6OlJlY2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1lKClcbicpCiAgICAgcmVzdWx0
LmFwcGVuZCgne1xuJykKLSAgICByZXN1bHQuYXBwZW5kKCcgICAgcmV0dXJuIElQQzo6U3RyaW5n
UmVmZXJlbmNlKCIlcyIpO1xuJyAlIHJlY2VpdmVyLm5hbWUpCisgICAgcmVzdWx0LmFwcGVuZCgn
ICAgIHJldHVybiBJUEM6OlJlY2VpdmVyTmFtZTo6JXM7XG4nICUgcmVjZWl2ZXIubmFtZSkKICAg
ICByZXN1bHQuYXBwZW5kKCd9XG4nKQogICAgIHJlc3VsdC5hcHBlbmQoJ1xuJykKLSAgICByZXN1
bHQuYXBwZW5kKCdcbicuam9pbihbbWVzc2FnZV90b19zdHJ1Y3RfZGVjbGFyYXRpb24oeCkgZm9y
IHggaW4gcmVjZWl2ZXIubWVzc2FnZXNdKSkKKyAgICByZXN1bHQuYXBwZW5kKCdcbicuam9pbihb
bWVzc2FnZV90b19zdHJ1Y3RfZGVjbGFyYXRpb24ocmVjZWl2ZXIsIHgpIGZvciB4IGluIHJlY2Vp
dmVyLm1lc3NhZ2VzXSkpCiAgICAgcmVzdWx0LmFwcGVuZCgnXG4nKQogICAgIHJlc3VsdC5hcHBl
bmQoJ30gLy8gbmFtZXNwYWNlICVzXG59IC8vIG5hbWVzcGFjZSBNZXNzYWdlc1xuJyAlIHJlY2Vp
dmVyLm5hbWUpCiAKQEAgLTg0OCwzICs4NDksMTc0IEBAIGRlZiBnZW5lcmF0ZV9tZXNzYWdlX2hh
bmRsZXIocmVjZWl2ZXIpOgogICAgICAgICByZXN1bHQuYXBwZW5kKCdcbiNlbmRpZiAvLyAlc1xu
JyAlIHJlY2VpdmVyLmNvbmRpdGlvbikKIAogICAgIHJldHVybiAnJy5qb2luKHJlc3VsdCkKKwor
CitkZWYgZ2VuZXJhdGVfbWVzc2FnZV9uYW1lc19oZWFkZXIocmVjZWl2ZXJzKToKKyAgICByZXN1
bHQgPSBbXQorICAgIHJlc3VsdC5hcHBlbmQoX2xpY2Vuc2VfaGVhZGVyKQorICAgIHJlc3VsdC5h
cHBlbmQoJyNwcmFnbWEgb25jZVxuJykKKyAgICByZXN1bHQuYXBwZW5kKCdcbicpCisgICAgcmVz
dWx0LmFwcGVuZCgnI2luY2x1ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+XG4nKQorICAgIHJlc3VsdC5h
cHBlbmQoJ1xuJykKKyAgICByZXN1bHQuYXBwZW5kKCduYW1lc3BhY2UgSVBDIHtcbicpCisgICAg
cmVzdWx0LmFwcGVuZCgnXG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJ2VudW0gY2xhc3MgUmVjZWl2
ZXJOYW1lIDogdWludDhfdCB7JykKKworICAgIGVudW1fdmFsdWUgPSAxCisgICAgZmlyc3RfcmVj
ZWl2ZXIgPSBUcnVlCisgICAgZm9yIHJlY2VpdmVyIGluIHJlY2VpdmVyczoKKyAgICAgICAgcmVz
dWx0LmFwcGVuZCgnXG4nKQorICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgJykKKyAgICAgICAg
aWYgbm90IGZpcnN0X3JlY2VpdmVyOgorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnLCAnKQor
ICAgICAgICBmaXJzdF9yZWNlaXZlciA9IEZhbHNlCisgICAgICAgIHJlc3VsdC5hcHBlbmQoJyVz
ID0gJWQnICUgKHJlY2VpdmVyLm5hbWUsIGVudW1fdmFsdWUpKQorICAgICAgICBlbnVtX3ZhbHVl
ID0gZW51bV92YWx1ZSArIDEKKyAgICByZXN1bHQuYXBwZW5kKCdcbiAgICAsIElQQyA9ICVkJyAl
IGVudW1fdmFsdWUpCisgICAgZW51bV92YWx1ZSA9IGVudW1fdmFsdWUgKyAxCisgICAgcmVzdWx0
LmFwcGVuZCgnXG4gICAgLCBBc3luY1JlcGx5ID0gJWQnICUgZW51bV92YWx1ZSkKKyAgICBlbnVt
X3ZhbHVlID0gZW51bV92YWx1ZSArIDEKKyAgICByZXN1bHQuYXBwZW5kKCdcbiAgICAsIEludmFs
aWQgPSAlZCcgJSBlbnVtX3ZhbHVlKQorICAgIHJlc3VsdC5hcHBlbmQoJ1xufTtcbicpCisgICAg
cmVzdWx0LmFwcGVuZCgnXG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJ2VudW0gY2xhc3MgTWVzc2Fn
ZU5hbWUgOiB1aW50MTZfdCB7JykKKworICAgIGVudW1fdmFsdWUgPSAxCisgICAgZmlyc3RfbWVz
c2FnZSA9IFRydWUKKyAgICBmb3IgcmVjZWl2ZXIgaW4gcmVjZWl2ZXJzOgorICAgICAgICBmb3Ig
bWVzc2FnZSBpbiByZWNlaXZlci5tZXNzYWdlczoKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQo
J1xuJykKKyAgICAgICAgICAgIGlmIG1lc3NhZ2UuY29uZGl0aW9uOgorICAgICAgICAgICAgICAg
IHJlc3VsdC5hcHBlbmQoJyNpZiAlc1xuJyAlIG1lc3NhZ2UuY29uZGl0aW9uKQorICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZCgnICAgICcpCisgICAgICAgICAgICBpZiBub3QgZmlyc3RfbWVzc2Fn
ZToKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcsICcpCisgICAgICAgICAgICBmaXJz
dF9tZXNzYWdlID0gRmFsc2UKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyVzXyVzID0gJWQn
ICUgKHJlY2VpdmVyLm5hbWUsIG1lc3NhZ2UubmFtZSwgZW51bV92YWx1ZSkpCisgICAgICAgICAg
ICBlbnVtX3ZhbHVlID0gZW51bV92YWx1ZSArIDEKKyAgICAgICAgICAgIGlmIG1lc3NhZ2UuaGFz
X2F0dHJpYnV0ZShBU1lOQ19BVFRSSUJVVEUpOgorICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBl
bmQoJ1xuICAgICwgJXNfJXNSZXBseSA9ICVkJyAlIChyZWNlaXZlci5uYW1lLCBtZXNzYWdlLm5h
bWUsIGVudW1fdmFsdWUpKQorICAgICAgICAgICAgICAgIGVudW1fdmFsdWUgPSBlbnVtX3ZhbHVl
ICsgMQorICAgICAgICAgICAgaWYgbWVzc2FnZS5jb25kaXRpb246CisgICAgICAgICAgICAgICAg
cmVzdWx0LmFwcGVuZCgnXG4jZW5kaWYnKQorICAgIHJlc3VsdC5hcHBlbmQoJ1xuICAgICwgV3Jh
cHBlZEFzeW5jTWVzc2FnZUZvclRlc3RpbmcgPSAlZCcgJSBlbnVtX3ZhbHVlKQorICAgIGVudW1f
dmFsdWUgPSBlbnVtX3ZhbHVlICsgMQorICAgIHJlc3VsdC5hcHBlbmQoJ1xuICAgICwgU3luY01l
c3NhZ2VSZXBseSA9ICVkJyAlIGVudW1fdmFsdWUpCisgICAgZW51bV92YWx1ZSA9IGVudW1fdmFs
dWUgKyAxCisgICAgcmVzdWx0LmFwcGVuZCgnXG4gICAgLCBJbml0aWFsaXplQ29ubmVjdGlvbiA9
ICVkJyAlIGVudW1fdmFsdWUpCisgICAgZW51bV92YWx1ZSA9IGVudW1fdmFsdWUgKyAxCisgICAg
cmVzdWx0LmFwcGVuZCgnXG4gICAgLCBMZWdhY3lTZXNzaW9uU3RhdGUgPSAlZCcgJSBlbnVtX3Zh
bHVlKQorICAgIHJlc3VsdC5hcHBlbmQoJ1xufTtcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnXG4n
KQorICAgIHJlc3VsdC5hcHBlbmQoJ1JlY2VpdmVyTmFtZSByZWNlaXZlck5hbWUoTWVzc2FnZU5h
bWUpO1xuJykKKyAgICByZXN1bHQuYXBwZW5kKCdjb25zdCBjaGFyKiBkZXNjcmlwdGlvbihNZXNz
YWdlTmFtZSk7XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJ2Jvb2wgaXNWYWxpZE1lc3NhZ2VOYW1l
KE1lc3NhZ2VOYW1lKTtcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnXG4nKQorICAgIHJlc3VsdC5h
cHBlbmQoJ30gLy8gbmFtZXNwYWNlIElQQ1xuJykKKyAgICByZXN1bHQuYXBwZW5kKCdcbicpCisg
ICAgcmVzdWx0LmFwcGVuZCgnbmFtZXNwYWNlIFdURiB7XG4nKQorICAgIHJlc3VsdC5hcHBlbmQo
J1xuJykKKyAgICByZXN1bHQuYXBwZW5kKCd0ZW1wbGF0ZTw+XG4nKQorICAgIHJlc3VsdC5hcHBl
bmQoJ2NsYXNzIEhhc0N1c3RvbUlzVmFsaWRFbnVtPElQQzo6TWVzc2FnZU5hbWU+IDogcHVibGlj
IHN0ZDo6dHJ1ZV90eXBlIHsgfTtcbicpCisgICAgcmVzdWx0LmFwcGVuZCgndGVtcGxhdGU8dHlw
ZW5hbWUgRSwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgPSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNf
c2FtZTxFLCBJUEM6Ok1lc3NhZ2VOYW1lPjo6dmFsdWU+PlxuJykKKyAgICByZXN1bHQuYXBwZW5k
KCdib29sIGlzVmFsaWRFbnVtKFQgbWVzc2FnZU5hbWUpXG4nKQorICAgIHJlc3VsdC5hcHBlbmQo
J3tcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFQpID09
IHNpemVvZihJUEM6Ok1lc3NhZ2VOYW1lKSwgImlzVmFsaWRFbnVtPE1lc3NhZ2VOYW1lPiBzaG91
bGQgb25seSBiZSBjYWxsZWQgd2l0aCAxNi1iaXQgdHlwZXMiKTtcbicpCisgICAgcmVzdWx0LmFw
cGVuZCgnICAgIHJldHVybiBJUEM6OmlzVmFsaWRNZXNzYWdlTmFtZShzdGF0aWNfY2FzdDxJUEM6
Ok1lc3NhZ2VOYW1lPihtZXNzYWdlTmFtZSkpO1xuJykKKyAgICByZXN1bHQuYXBwZW5kKCd9O1xu
JykKKyAgICByZXN1bHQuYXBwZW5kKCdcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnfSAvLyBuYW1l
c3BhY2UgV1RGXG4nKQorICAgIHJldHVybiAnJy5qb2luKHJlc3VsdCkKKworCitkZWYgZ2VuZXJh
dGVfbWVzc2FnZV9uYW1lc19pbXBsZW1lbnRhdGlvbihyZWNlaXZlcnMpOgorICAgIHJlc3VsdCA9
IFtdCisgICAgcmVzdWx0LmFwcGVuZChfbGljZW5zZV9oZWFkZXIpCisgICAgcmVzdWx0LmFwcGVu
ZCgnI2luY2x1ZGUgImNvbmZpZy5oIlxuJykKKyAgICByZXN1bHQuYXBwZW5kKCcjaW5jbHVkZSAi
TWVzc2FnZU5hbWVzLmgiXG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJ1xuJykKKyAgICByZXN1bHQu
YXBwZW5kKCduYW1lc3BhY2UgSVBDIHtcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnXG4nKQorICAg
IHJlc3VsdC5hcHBlbmQoJ2NvbnN0IGNoYXIqIGRlc2NyaXB0aW9uKE1lc3NhZ2VOYW1lIG5hbWUp
XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJ3tcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnICAgIHN3
aXRjaCAobmFtZSkge1xuJykKKyAgICBmb3IgcmVjZWl2ZXIgaW4gcmVjZWl2ZXJzOgorICAgICAg
ICBmb3IgbWVzc2FnZSBpbiByZWNlaXZlci5tZXNzYWdlczoKKyAgICAgICAgICAgIGlmIG1lc3Nh
Z2UuY29uZGl0aW9uOgorICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyNpZiAlc1xuJyAl
IG1lc3NhZ2UuY29uZGl0aW9uKQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIGNhc2Ug
TWVzc2FnZU5hbWU6OiVzXyVzOlxuJyAlIChyZWNlaXZlci5uYW1lLCBtZXNzYWdlLm5hbWUpKQor
ICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgICAgICByZXR1cm4gIiVzOjolcyI7XG4nICUg
KHJlY2VpdmVyLm5hbWUsIG1lc3NhZ2UubmFtZSkpCisgICAgICAgICAgICBpZiBtZXNzYWdlLmhh
c19hdHRyaWJ1dGUoQVNZTkNfQVRUUklCVVRFKToKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBw
ZW5kKCcgICAgY2FzZSBNZXNzYWdlTmFtZTo6JXNfJXNSZXBseTpcbicgJSAocmVjZWl2ZXIubmFt
ZSwgbWVzc2FnZS5uYW1lKSkKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgICAg
IHJldHVybiAiJXM6OiVzUmVwbHkiO1xuJyAlIChyZWNlaXZlci5uYW1lLCBtZXNzYWdlLm5hbWUp
KQorICAgICAgICAgICAgaWYgbWVzc2FnZS5jb25kaXRpb246CisgICAgICAgICAgICAgICAgcmVz
dWx0LmFwcGVuZCgnI2VuZGlmXG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJyAgICBjYXNlIE1lc3Nh
Z2VOYW1lOjpXcmFwcGVkQXN5bmNNZXNzYWdlRm9yVGVzdGluZzpcbicpCisgICAgcmVzdWx0LmFw
cGVuZCgnICAgICAgICByZXR1cm4gIklQQzo6V3JhcHBlZEFzeW5jTWVzc2FnZUZvclRlc3Rpbmci
O1xuJykKKyAgICByZXN1bHQuYXBwZW5kKCcgICAgY2FzZSBNZXNzYWdlTmFtZTo6U3luY01lc3Nh
Z2VSZXBseTpcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnICAgICAgICByZXR1cm4gIklQQzo6U3lu
Y01lc3NhZ2VSZXBseSI7XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJyAgICBjYXNlIE1lc3NhZ2VO
YW1lOjpJbml0aWFsaXplQ29ubmVjdGlvbjpcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnICAgICAg
ICByZXR1cm4gIklQQzo6SW5pdGlhbGl6ZUNvbm5lY3Rpb24iO1xuJykKKyAgICByZXN1bHQuYXBw
ZW5kKCcgICAgY2FzZSBNZXNzYWdlTmFtZTo6TGVnYWN5U2Vzc2lvblN0YXRlOlxuJykKKyAgICBy
ZXN1bHQuYXBwZW5kKCcgICAgICAgIHJldHVybiAiSVBDOjpMZWdhY3lTZXNzaW9uU3RhdGUiO1xu
JykKKyAgICByZXN1bHQuYXBwZW5kKCcgICAgfVxuJykKKyAgICByZXN1bHQuYXBwZW5kKCcgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJyAgICByZXR1cm4g
IjxpbnZhbGlkIG1lc3NhZ2UgbmFtZT4iO1xuJykKKyAgICByZXN1bHQuYXBwZW5kKCd9XG4nKQor
ICAgIHJlc3VsdC5hcHBlbmQoJ1xuJykKKyAgICByZXN1bHQuYXBwZW5kKCdSZWNlaXZlck5hbWUg
cmVjZWl2ZXJOYW1lKE1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lKVxuJykKKyAgICByZXN1bHQuYXBw
ZW5kKCd7XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJyAgICBzd2l0Y2ggKG1lc3NhZ2VOYW1lKSB7
XG4nKQorICAgIGZvciByZWNlaXZlciBpbiByZWNlaXZlcnM6CisgICAgICAgIGZvciBtZXNzYWdl
IGluIHJlY2VpdmVyLm1lc3NhZ2VzOgorICAgICAgICAgICAgaWYgbWVzc2FnZS5jb25kaXRpb246
CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnI2lmICVzXG4nICUgbWVzc2FnZS5jb25k
aXRpb24pCisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgY2FzZSBNZXNzYWdlTmFtZTo6
JXNfJXM6XG4nICUgKHJlY2VpdmVyLm5hbWUsIG1lc3NhZ2UubmFtZSkpCisgICAgICAgICAgICBp
ZiBtZXNzYWdlLmNvbmRpdGlvbjoKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcjZW5k
aWZcbicpCisgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICAgICAgcmV0dXJuIFJlY2VpdmVyTmFt
ZTo6JXM7XG4nICUgcmVjZWl2ZXIubmFtZSkKKyAgICBmb3IgcmVjZWl2ZXIgaW4gcmVjZWl2ZXJz
OgorICAgICAgICBmb3IgbWVzc2FnZSBpbiByZWNlaXZlci5tZXNzYWdlczoKKyAgICAgICAgICAg
IGlmIG1lc3NhZ2UuaGFzX2F0dHJpYnV0ZShBU1lOQ19BVFRSSUJVVEUpOgorICAgICAgICAgICAg
ICAgIGlmIG1lc3NhZ2UuY29uZGl0aW9uOgorICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBw
ZW5kKCcjaWYgJXNcbicgJSBtZXNzYWdlLmNvbmRpdGlvbikKKyAgICAgICAgICAgICAgICByZXN1
bHQuYXBwZW5kKCcgICAgY2FzZSBNZXNzYWdlTmFtZTo6JXNfJXNSZXBseTpcbicgJSAocmVjZWl2
ZXIubmFtZSwgbWVzc2FnZS5uYW1lKSkKKyAgICAgICAgICAgICAgICBpZiBtZXNzYWdlLmNvbmRp
dGlvbjoKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnI2VuZGlmXG4nKQorICAg
IHJlc3VsdC5hcHBlbmQoJyAgICAgICAgcmV0dXJuIFJlY2VpdmVyTmFtZTo6QXN5bmNSZXBseTtc
bicpCisgICAgcmVzdWx0LmFwcGVuZCgnICAgIGNhc2UgTWVzc2FnZU5hbWU6OldyYXBwZWRBc3lu
Y01lc3NhZ2VGb3JUZXN0aW5nOlxuJykKKyAgICByZXN1bHQuYXBwZW5kKCcgICAgY2FzZSBNZXNz
YWdlTmFtZTo6U3luY01lc3NhZ2VSZXBseTpcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnICAgIGNh
c2UgTWVzc2FnZU5hbWU6OkluaXRpYWxpemVDb25uZWN0aW9uOlxuJykKKyAgICByZXN1bHQuYXBw
ZW5kKCcgICAgY2FzZSBNZXNzYWdlTmFtZTo6TGVnYWN5U2Vzc2lvblN0YXRlOlxuJykKKyAgICBy
ZXN1bHQuYXBwZW5kKCcgICAgICAgIHJldHVybiBSZWNlaXZlck5hbWU6OklQQztcbicpCisgICAg
cmVzdWx0LmFwcGVuZCgnICAgIH1cbicpCisgICAgcmVzdWx0LmFwcGVuZCgnICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpO1xuJykKKyAgICByZXN1bHQuYXBwZW5kKCcgICAgcmV0dXJuIFJlY2VpdmVy
TmFtZTo6SW52YWxpZDtcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnfVxuJykKKyAgICByZXN1bHQu
YXBwZW5kKCdcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnYm9vbCBpc1ZhbGlkTWVzc2FnZU5hbWUo
TWVzc2FnZU5hbWUgbWVzc2FnZU5hbWUpXG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJ3tcbicpCisg
ICAgZm9yIHJlY2VpdmVyIGluIHJlY2VpdmVyczoKKyAgICAgICAgZm9yIG1lc3NhZ2UgaW4gcmVj
ZWl2ZXIubWVzc2FnZXM6CisgICAgICAgICAgICBpZiBtZXNzYWdlLmNvbmRpdGlvbjoKKyAgICAg
ICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcjaWYgJXNcbicgJSBtZXNzYWdlLmNvbmRpdGlvbikK
KyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpN
ZXNzYWdlTmFtZTo6JXNfJXMpXG4nICUgKHJlY2VpdmVyLm5hbWUsIG1lc3NhZ2UubmFtZSkpCisg
ICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgICAgIHJldHVybiB0cnVlO1xuJykKKyAgICAg
ICAgICAgIGlmIG1lc3NhZ2UuaGFzX2F0dHJpYnV0ZShBU1lOQ19BVFRSSUJVVEUpOgorICAgICAg
ICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNz
YWdlTmFtZTo6JXNfJXNSZXBseSlcbicgJSAocmVjZWl2ZXIubmFtZSwgbWVzc2FnZS5uYW1lKSkK
KyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgICAgIHJldHVybiB0cnVlO1xuJykK
KyAgICAgICAgICAgIGlmIG1lc3NhZ2UuY29uZGl0aW9uOgorICAgICAgICAgICAgICAgIHJlc3Vs
dC5hcHBlbmQoJyNlbmRpZlxuJykKKyAgICByZXN1bHQuYXBwZW5kKCcgICAgaWYgKG1lc3NhZ2VO
YW1lID09IElQQzo6TWVzc2FnZU5hbWU6OldyYXBwZWRBc3luY01lc3NhZ2VGb3JUZXN0aW5nKVxu
JykKKyAgICByZXN1bHQuYXBwZW5kKCcgICAgICAgIHJldHVybiB0cnVlO1xuJykKKyAgICByZXN1
bHQuYXBwZW5kKCcgICAgaWYgKG1lc3NhZ2VOYW1lID09IElQQzo6TWVzc2FnZU5hbWU6OlN5bmNN
ZXNzYWdlUmVwbHkpXG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJyAgICAgICAgcmV0dXJuIHRydWU7
XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJyAgICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNz
YWdlTmFtZTo6SW5pdGlhbGl6ZUNvbm5lY3Rpb24pXG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJyAg
ICAgICAgcmV0dXJuIHRydWU7XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJyAgICBpZiAobWVzc2Fn
ZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6TGVnYWN5U2Vzc2lvblN0YXRlKVxuJykKKyAgICBy
ZXN1bHQuYXBwZW5kKCcgICAgICAgIHJldHVybiB0cnVlO1xuJykKKyAgICByZXN1bHQuYXBwZW5k
KCcgICAgcmV0dXJuIGZhbHNlO1xuJykKKyAgICByZXN1bHQuYXBwZW5kKCd9O1xuJykKKyAgICBy
ZXN1bHQuYXBwZW5kKCdcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnfSAvLyBuYW1lc3BhY2UgSVBD
XG4nKQorICAgIHJldHVybiAnJy5qb2luKHJlc3VsdCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2Ny
aXB0cy93ZWJraXQvdGVzdC1sZWdhY3ktbWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0LWxlZ2FjeS1tZXNzYWdlcy5pbgkocmV2aXNpb24g
MjYxMjM4KQorKysgU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0LWxlZ2FjeS1tZXNz
YWdlcy5pbgkobm9uZXhpc3RlbnQpCkBAIC0xLDc3ICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAy
MDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnIEFORAotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0jIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SCi0jIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSMgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIKLSMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSMgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLQotI2lmIEVOQUJMRShXRUJLSVQyKQotI2lmIE5FU1RFRF9N
QVNURVJfQ09ORElUSU9OIHx8IE1BU1RFUl9PUiAmJiBNQVNURVJfQU5ECi0KLW1lc3NhZ2VzIC0+
IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewotICAgIExvYWRVUkwoU3RyaW5nIHVybCkKLSNpZiBF
TkFCTEUoVE9VQ0hfRVZFTlRTKQotICAgIExvYWRTb21ldGhpbmcoU3RyaW5nIHVybCkKLSNpZiBO
RVNURURfTUVTU0FHRV9DT05ESVRJT04gfHwgU09NRV9PVEhFUl9NRVNTQUdFX0NPTkRJVElPTgot
ICAgIFRvdWNoRXZlbnQoV2ViS2l0OjpXZWJUb3VjaEV2ZW50IGV2ZW50KQotI2VuZGlmCi0jaWYg
TkVTVEVEX01FU1NBR0VfQ09ORElUSU9OICYmIFNPTUVfT1RIRVJfTUVTU0FHRV9DT05ESVRJT04K
LSAgICBBZGRFdmVudChXZWJLaXQ6OldlYlRvdWNoRXZlbnQgZXZlbnQpCi0jZW5kaWYKLSAgICBM
b2FkU29tZXRoaW5nRWxzZShTdHJpbmcgdXJsKQotI2VuZGlmCi0gICAgRGlkUmVjZWl2ZVBvbGlj
eURlY2lzaW9uKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IGxpc3RlbmVySUQsIHVpbnQzMl90
IHBvbGljeUFjdGlvbikKLSAgICBDbG9zZSgpCi0KLSAgICBQcmVmZXJlbmNlc0RpZENoYW5nZShX
ZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmUgc3RvcmUpCi0gICAgU2VuZERvdWJsZUFuZEZsb2F0
KGRvdWJsZSBkLCBmbG9hdCBmKQotICAgIFNlbmRJbnRzKFZlY3Rvcjx1aW50NjRfdD4gaW50cywg
VmVjdG9yPFZlY3Rvcjx1aW50NjRfdD4+IGludFZlY3RvcnMpCi0KLSAgICBDcmVhdGVQbHVnaW4o
dWludDY0X3QgcGx1Z2luSW5zdGFuY2VJRCwgV2ViS2l0OjpQbHVnaW46OlBhcmFtZXRlcnMgcGFy
YW1ldGVycykgLT4gKGJvb2wgcmVzdWx0KQotICAgIFJ1bkphdmFTY3JpcHRBbGVydCh1aW50NjRf
dCBmcmFtZUlELCBTdHJpbmcgbWVzc2FnZSkgLT4gKCkKLSAgICBHZXRQbHVnaW5zKGJvb2wgcmVm
cmVzaCkgLT4gKFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiBwbHVnaW5zKQotICAgIEdldFBs
dWdpblByb2Nlc3NDb25uZWN0aW9uKFN0cmluZyBwbHVnaW5QYXRoKSAtPiAoSVBDOjpDb25uZWN0
aW9uOjpIYW5kbGUgY29ubmVjdGlvbkhhbmRsZSkgU3luY2hyb25vdXMKLQotICAgIFRlc3RNdWx0
aXBsZUF0dHJpYnV0ZXMoKSAtPiAoKSBXYW50c0Nvbm5lY3Rpb24gU3luY2hyb25vdXMKLQotICAg
IFRlc3RQYXJhbWV0ZXJBdHRyaWJ1dGVzKFtBdHRyaWJ1dGVPbmUgQXR0cmlidXRlVHdvXSB1aW50
NjRfdCBmb28sIGRvdWJsZSBiYXIsIFtBdHRyaWJ1dGVUaHJlZV0gZG91YmxlIGJheikKLQotICAg
IFRlbXBsYXRlVGVzdChIYXNoTWFwPFN0cmluZywgc3RkOjpwYWlyPFN0cmluZywgdWludDY0X3Q+
PiBhKQotCi0gICAgU2V0VmlkZW9MYXllcklEKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OlBsYXRm
b3JtTGF5ZXJJRCB2aWRlb0xheWVySUQpCi0KLSNpZiBQTEFURk9STShNQUMpCi0gICAgRGlkQ3Jl
YXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oSVBDOjpNYWNoUG9ydCBjb25uZWN0aW9uSWRlbnRpZmll
cikKLSNlbmRpZgotCi0jaWYgUExBVEZPUk0oTUFDKQotICAgICMgS2V5Ym9hcmQgc3VwcG9ydAot
ICAgIEludGVycHJldEtleUV2ZW50KHVpbnQzMl90IHR5cGUpIC0+IChWZWN0b3I8V2ViQ29yZTo6
S2V5cHJlc3NDb21tYW5kPiBjb21tYW5kTmFtZSkKLSNlbmRpZgotCi0jaWYgRU5BQkxFKERFUFJF
Q0FURURfRkVBVFVSRSkKLSAgICBEZXByZWNhdGVkT3BlcmF0aW9uKElQQzo6RHVtbXlUeXBlIGR1
bW15KQotI2VuZGlmCi0KLSNpZiBFTkFCTEUoRVhQRVJJTUVOVEFMX0ZFQVRVUkUpCi0gICAgRXhw
ZXJpbWVudGFsT3BlcmF0aW9uKElQQzo6RHVtbXlUeXBlIGR1bW15KQotI2VuZGlmCi19Ci0KLSNl
bmRpZgotI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3QtbGVn
YWN5Lm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJr
aXQvdGVzdC1sZWdhY3kubWVzc2FnZXMuaW4JKHJldmlzaW9uIDI2MTIzOCkJKGZyb20gU291cmNl
L1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0LWxlZ2FjeS1tZXNzYWdlcy5pbjoyNjEyMzgpCisr
KyBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3QtbGVnYWN5Lm1lc3NhZ2VzLmluCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzcgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
IyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAor
IyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMg
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKworI2lmIEVOQUJMRShXRUJLSVQyKQorI2lmIE5FU1RFRF9NQVNURVJfQ09O
RElUSU9OIHx8IE1BU1RFUl9PUiAmJiBNQVNURVJfQU5ECisKK21lc3NhZ2VzIC0+IFdlYlBhZ2Ug
TGVnYWN5UmVjZWl2ZXIgeworICAgIExvYWRVUkwoU3RyaW5nIHVybCkKKyNpZiBFTkFCTEUoVE9V
Q0hfRVZFTlRTKQorICAgIExvYWRTb21ldGhpbmcoU3RyaW5nIHVybCkKKyNpZiBORVNURURfTUVT
U0FHRV9DT05ESVRJT04gfHwgU09NRV9PVEhFUl9NRVNTQUdFX0NPTkRJVElPTgorICAgIFRvdWNo
RXZlbnQoV2ViS2l0OjpXZWJUb3VjaEV2ZW50IGV2ZW50KQorI2VuZGlmCisjaWYgTkVTVEVEX01F
U1NBR0VfQ09ORElUSU9OICYmIFNPTUVfT1RIRVJfTUVTU0FHRV9DT05ESVRJT04KKyAgICBBZGRF
dmVudChXZWJLaXQ6OldlYlRvdWNoRXZlbnQgZXZlbnQpCisjZW5kaWYKKyAgICBMb2FkU29tZXRo
aW5nRWxzZShTdHJpbmcgdXJsKQorI2VuZGlmCisgICAgRGlkUmVjZWl2ZVBvbGljeURlY2lzaW9u
KHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IGxpc3RlbmVySUQsIHVpbnQzMl90IHBvbGljeUFj
dGlvbikKKyAgICBDbG9zZSgpCisKKyAgICBQcmVmZXJlbmNlc0RpZENoYW5nZShXZWJLaXQ6Oldl
YlByZWZlcmVuY2VzU3RvcmUgc3RvcmUpCisgICAgU2VuZERvdWJsZUFuZEZsb2F0KGRvdWJsZSBk
LCBmbG9hdCBmKQorICAgIFNlbmRJbnRzKFZlY3Rvcjx1aW50NjRfdD4gaW50cywgVmVjdG9yPFZl
Y3Rvcjx1aW50NjRfdD4+IGludFZlY3RvcnMpCisKKyAgICBDcmVhdGVQbHVnaW4odWludDY0X3Qg
cGx1Z2luSW5zdGFuY2VJRCwgV2ViS2l0OjpQbHVnaW46OlBhcmFtZXRlcnMgcGFyYW1ldGVycykg
LT4gKGJvb2wgcmVzdWx0KQorICAgIFJ1bkphdmFTY3JpcHRBbGVydCh1aW50NjRfdCBmcmFtZUlE
LCBTdHJpbmcgbWVzc2FnZSkgLT4gKCkKKyAgICBHZXRQbHVnaW5zKGJvb2wgcmVmcmVzaCkgLT4g
KFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiBwbHVnaW5zKQorICAgIEdldFBsdWdpblByb2Nl
c3NDb25uZWN0aW9uKFN0cmluZyBwbHVnaW5QYXRoKSAtPiAoSVBDOjpDb25uZWN0aW9uOjpIYW5k
bGUgY29ubmVjdGlvbkhhbmRsZSkgU3luY2hyb25vdXMKKworICAgIFRlc3RNdWx0aXBsZUF0dHJp
YnV0ZXMoKSAtPiAoKSBXYW50c0Nvbm5lY3Rpb24gU3luY2hyb25vdXMKKworICAgIFRlc3RQYXJh
bWV0ZXJBdHRyaWJ1dGVzKFtBdHRyaWJ1dGVPbmUgQXR0cmlidXRlVHdvXSB1aW50NjRfdCBmb28s
IGRvdWJsZSBiYXIsIFtBdHRyaWJ1dGVUaHJlZV0gZG91YmxlIGJheikKKworICAgIFRlbXBsYXRl
VGVzdChIYXNoTWFwPFN0cmluZywgc3RkOjpwYWlyPFN0cmluZywgdWludDY0X3Q+PiBhKQorCisg
ICAgU2V0VmlkZW9MYXllcklEKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJ
RCB2aWRlb0xheWVySUQpCisKKyNpZiBQTEFURk9STShNQUMpCisgICAgRGlkQ3JlYXRlV2ViUHJv
Y2Vzc0Nvbm5lY3Rpb24oSVBDOjpNYWNoUG9ydCBjb25uZWN0aW9uSWRlbnRpZmllcikKKyNlbmRp
ZgorCisjaWYgUExBVEZPUk0oTUFDKQorICAgICMgS2V5Ym9hcmQgc3VwcG9ydAorICAgIEludGVy
cHJldEtleUV2ZW50KHVpbnQzMl90IHR5cGUpIC0+IChWZWN0b3I8V2ViQ29yZTo6S2V5cHJlc3ND
b21tYW5kPiBjb21tYW5kTmFtZSkKKyNlbmRpZgorCisjaWYgRU5BQkxFKERFUFJFQ0FURURfRkVB
VFVSRSkKKyAgICBEZXByZWNhdGVkT3BlcmF0aW9uKElQQzo6RHVtbXlUeXBlIGR1bW15KQorI2Vu
ZGlmCisKKyNpZiBFTkFCTEUoRVhQRVJJTUVOVEFMX0ZFQVRVUkUpCisgICAgRXhwZXJpbWVudGFs
T3BlcmF0aW9uKElQQzo6RHVtbXlUeXBlIGR1bW15KQorI2VuZGlmCit9CisKKyNlbmRpZgorI2Vu
ZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3QtbWVzc2FnZXMuaW4K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0LW1lc3NhZ2Vz
LmluCShyZXZpc2lvbiAyNjEyMzgpCisrKyBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rl
c3QtbWVzc2FnZXMuaW4JKG5vbmV4aXN0ZW50KQpAQCAtMSw4NCArMCwwIEBACi0jIENvcHlyaWdo
dCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJyBBTkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSMgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQot
IyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUgotIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
Ci0jIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSCi0jIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0jIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLSNpZiBFTkFCTEUoV0VCS0lUMikKLSNpZiBO
RVNURURfTUFTVEVSX0NPTkRJVElPTiB8fCBNQVNURVJfT1IgJiYgTUFTVEVSX0FORAotCi0KLSMg
VGhlIHBhcnNlciBzaG91bGQgdHJlYXQgYWxsIG9mIHRoZXNlIGFzIGNvbW1lbnRzCi0jRmFrZUxv
YWRVUkxBKFN0cmluZyB1cmwpCi0jIEZha2VMb2FkVVJMQihTdHJpbmcgdXJsKQotICAgICNGYWtl
TG9hZFVSTEMoU3RyaW5nIHVybCkKLSAgICAjIEZha2VMb2FkVVJMRChTdHJpbmcgdXJsKQotCi1t
ZXNzYWdlcyAtPiBXZWJQYWdlIHsKLSAgICBMb2FkVVJMKFN0cmluZyB1cmwpCi0jaWYgRU5BQkxF
KFRPVUNIX0VWRU5UUykKLSAgICBMb2FkU29tZXRoaW5nKFN0cmluZyB1cmwpCi0jaWYgTkVTVEVE
X01FU1NBR0VfQ09ORElUSU9OIHx8IFNPTUVfT1RIRVJfTUVTU0FHRV9DT05ESVRJT04KLSAgICBU
b3VjaEV2ZW50KFdlYktpdDo6V2ViVG91Y2hFdmVudCBldmVudCkKLSNlbmRpZgotI2lmIE5FU1RF
RF9NRVNTQUdFX0NPTkRJVElPTiAmJiBTT01FX09USEVSX01FU1NBR0VfQ09ORElUSU9OCi0gICAg
QWRkRXZlbnQoV2ViS2l0OjpXZWJUb3VjaEV2ZW50IGV2ZW50KQotI2VuZGlmCi0gICAgTG9hZFNv
bWV0aGluZ0Vsc2UoU3RyaW5nIHVybCkKLSNlbmRpZgotICAgIERpZFJlY2VpdmVQb2xpY3lEZWNp
c2lvbih1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBsaXN0ZW5lcklELCB1aW50MzJfdCBwb2xp
Y3lBY3Rpb24pCi0gICAgQ2xvc2UoKQotCi0gICAgUHJlZmVyZW5jZXNEaWRDaGFuZ2UoV2ViS2l0
OjpXZWJQcmVmZXJlbmNlc1N0b3JlIHN0b3JlKQotICAgIFNlbmREb3VibGVBbmRGbG9hdChkb3Vi
bGUgZCwgZmxvYXQgZikKLSAgICBTZW5kSW50cyhWZWN0b3I8dWludDY0X3Q+IGludHMsIFZlY3Rv
cjxWZWN0b3I8dWludDY0X3Q+PiBpbnRWZWN0b3JzKQotCi0gICAgQ3JlYXRlUGx1Z2luKHVpbnQ2
NF90IHBsdWdpbkluc3RhbmNlSUQsIFdlYktpdDo6UGx1Z2luOjpQYXJhbWV0ZXJzIHBhcmFtZXRl
cnMpIC0+IChib29sIHJlc3VsdCkKLSAgICBSdW5KYXZhU2NyaXB0QWxlcnQodWludDY0X3QgZnJh
bWVJRCwgU3RyaW5nIG1lc3NhZ2UpIC0+ICgpCi0gICAgR2V0UGx1Z2lucyhib29sIHJlZnJlc2gp
IC0+IChWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4gcGx1Z2lucykKLSAgICBHZXRQbHVnaW5Q
cm9jZXNzQ29ubmVjdGlvbihTdHJpbmcgcGx1Z2luUGF0aCkgLT4gKElQQzo6Q29ubmVjdGlvbjo6
SGFuZGxlIGNvbm5lY3Rpb25IYW5kbGUpIFN5bmNocm9ub3VzCi0KLSAgICBUZXN0TXVsdGlwbGVB
dHRyaWJ1dGVzKCkgLT4gKCkgV2FudHNDb25uZWN0aW9uIFN5bmNocm9ub3VzCi0KLSAgICBUZXN0
UGFyYW1ldGVyQXR0cmlidXRlcyhbQXR0cmlidXRlT25lIEF0dHJpYnV0ZVR3b10gdWludDY0X3Qg
Zm9vLCBkb3VibGUgYmFyLCBbQXR0cmlidXRlVGhyZWVdIGRvdWJsZSBiYXopCi0KLSAgICBUZW1w
bGF0ZVRlc3QoSGFzaE1hcDxTdHJpbmcsIHN0ZDo6cGFpcjxTdHJpbmcsIHVpbnQ2NF90Pj4gYSkK
LQotICAgIFNldFZpZGVvTGF5ZXJJRChXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxh
eWVySUQgdmlkZW9MYXllcklEKQotCi0jaWYgUExBVEZPUk0oTUFDKQotICAgIERpZENyZWF0ZVdl
YlByb2Nlc3NDb25uZWN0aW9uKElQQzo6TWFjaFBvcnQgY29ubmVjdGlvbklkZW50aWZpZXIpCi0j
ZW5kaWYKLQotI2lmIFBMQVRGT1JNKE1BQykKLSAgICAjIEtleWJvYXJkIHN1cHBvcnQKLSAgICBJ
bnRlcnByZXRLZXlFdmVudCh1aW50MzJfdCB0eXBlKSAtPiAoVmVjdG9yPFdlYkNvcmU6OktleXBy
ZXNzQ29tbWFuZD4gY29tbWFuZE5hbWUpCi0jZW5kaWYKLQotI2lmIEVOQUJMRShERVBSRUNBVEVE
X0ZFQVRVUkUpCi0gICAgRGVwcmVjYXRlZE9wZXJhdGlvbihJUEM6OkR1bW15VHlwZSBkdW1teSkK
LSNlbmRpZgotCi0jaWYgRU5BQkxFKEVYUEVSSU1FTlRBTF9GRUFUVVJFKQotICAgIEV4cGVyaW1l
bnRhbE9wZXJhdGlvbihJUEM6OkR1bW15VHlwZSBkdW1teSkKLSNlbmRpZgotfQotCi0jZW5kaWYK
LSNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0LXN1cGVyY2xh
c3MtbWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtp
dC90ZXN0LXN1cGVyY2xhc3MtbWVzc2FnZXMuaW4JKHJldmlzaW9uIDI2MTIzOCkKKysrIFNvdXJj
ZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdC1zdXBlcmNsYXNzLW1lc3NhZ2VzLmluCShub25l
eGlzdGVudCkKQEAgLTEsMzIgKzAsMCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFy
ZSBtZXQ6Ci0jIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECi0jIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECi0jIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IK
LSMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTAotIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgotIyBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UgotIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotCi1tZXNzYWdlcyAtPiBXZWJQYWdlIDogV2ViUGFnZUJhc2UgewotICAgIExvYWRV
UkwoU3RyaW5nIHVybCkKLSNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQotICAgIFRlc3RBc3luY01l
c3NhZ2UoZW51bTpib29sIFdlYktpdDo6VGVzdFR3b1N0YXRlRW51bSB0d29TdGF0ZUVudW0pIC0+
ICh1aW50NjRfdCByZXN1bHQpIEFzeW5jCi0gICAgVGVzdEFzeW5jTWVzc2FnZVdpdGhOb0FyZ3Vt
ZW50cygpIC0+ICgpIEFzeW5jCi0gICAgVGVzdEFzeW5jTWVzc2FnZVdpdGhNdWx0aXBsZUFyZ3Vt
ZW50cygpIC0+IChib29sIGZsYWcsIHVpbnQ2NF90IHZhbHVlKSBBc3luYwotI2VuZGlmCi0gICAg
VGVzdFN5bmNNZXNzYWdlKHVpbnQzMl90IHBhcmFtKSAtPiAodWludDhfdCByZXBseSkgU3luY2hy
b25vdXMKLSAgICBUZXN0U3luY2hyb25vdXNNZXNzYWdlKGJvb2wgdmFsdWUpIC0+IChPcHRpb25h
bDxXZWJLaXQ6OlRlc3RDbGFzc05hbWU+IG9wdGlvbmFsUmVwbHkpIFN5bmNocm9ub3VzCi19Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3Qtc3VwZXJjbGFzcy5tZXNzYWdl
cy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3Qtc3Vw
ZXJjbGFzcy5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjYxMjM4KQkoZnJvbSBTb3VyY2UvV2ViS2l0
L1NjcmlwdHMvd2Via2l0L3Rlc3Qtc3VwZXJjbGFzcy1tZXNzYWdlcy5pbjoyNjEyMzgpCisrKyBT
b3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3Qtc3VwZXJjbGFzcy5tZXNzYWdlcy5pbgko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMyIEBACisjIENvcHlyaWdodCAoQykgMjAxMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQK
KyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisj
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisKK21lc3NhZ2VzIC0+IFdlYlBhZ2UgOiBXZWJQYWdlQmFzZSB7CisgICAg
TG9hZFVSTChTdHJpbmcgdXJsKQorI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCisgICAgVGVzdEFz
eW5jTWVzc2FnZShlbnVtOmJvb2wgV2ViS2l0OjpUZXN0VHdvU3RhdGVFbnVtIHR3b1N0YXRlRW51
bSkgLT4gKHVpbnQ2NF90IHJlc3VsdCkgQXN5bmMKKyAgICBUZXN0QXN5bmNNZXNzYWdlV2l0aE5v
QXJndW1lbnRzKCkgLT4gKCkgQXN5bmMKKyAgICBUZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxl
QXJndW1lbnRzKCkgLT4gKGJvb2wgZmxhZywgdWludDY0X3QgdmFsdWUpIEFzeW5jCisjZW5kaWYK
KyAgICBUZXN0U3luY01lc3NhZ2UodWludDMyX3QgcGFyYW0pIC0+ICh1aW50OF90IHJlcGx5KSBT
eW5jaHJvbm91cworICAgIFRlc3RTeW5jaHJvbm91c01lc3NhZ2UoYm9vbCB2YWx1ZSkgLT4gKE9w
dGlvbmFsPFdlYktpdDo6VGVzdENsYXNzTmFtZT4gb3B0aW9uYWxSZXBseSkgU3luY2hyb25vdXMK
K30KSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0F1eGlsaWFyeVByb2Nlc3MuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0F1eGlsaWFyeVByb2Nlc3MuY3BwCShyZXZp
c2lvbiAyNjEyMzgpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXhpbGlhcnlQcm9jZXNzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTA3LDIyICsxMDcsMjIgQEAgdm9pZCBBdXhpbGlhcnlQcm9j
ZXNzOjppbml0aWFsaXplQ29ubmVjdAogewogfQogCi12b2lkIEF1eGlsaWFyeVByb2Nlc3M6OmFk
ZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1l
LCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYgbWVzc2FnZVJlY2VpdmVyKQordm9pZCBBdXhpbGlhcnlQ
cm9jZXNzOjphZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpSZWNlaXZlck5hbWUgbWVzc2FnZVJlY2Vp
dmVyTmFtZSwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImIG1lc3NhZ2VSZWNlaXZlcikKIHsKICAgICBt
X21lc3NhZ2VSZWNlaXZlck1hcC5hZGRNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFt
ZSwgbWVzc2FnZVJlY2VpdmVyKTsKIH0KIAotdm9pZCBBdXhpbGlhcnlQcm9jZXNzOjphZGRNZXNz
YWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgdWlu
dDY0X3QgZGVzdGluYXRpb25JRCwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImIG1lc3NhZ2VSZWNlaXZl
cikKK3ZvaWQgQXV4aWxpYXJ5UHJvY2Vzczo6YWRkTWVzc2FnZVJlY2VpdmVyKElQQzo6UmVjZWl2
ZXJOYW1lIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIElQQzo6
TWVzc2FnZVJlY2VpdmVyJiBtZXNzYWdlUmVjZWl2ZXIpCiB7CiAgICAgbV9tZXNzYWdlUmVjZWl2
ZXJNYXAuYWRkTWVzc2FnZVJlY2VpdmVyKG1lc3NhZ2VSZWNlaXZlck5hbWUsIGRlc3RpbmF0aW9u
SUQsIG1lc3NhZ2VSZWNlaXZlcik7CiB9CiAKLXZvaWQgQXV4aWxpYXJ5UHJvY2Vzczo6cmVtb3Zl
TWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUs
IHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpCit2b2lkIEF1eGlsaWFyeVByb2Nlc3M6OnJlbW92ZU1l
c3NhZ2VSZWNlaXZlcihJUEM6OlJlY2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCB1aW50
NjRfdCBkZXN0aW5hdGlvbklEKQogewogICAgIG1fbWVzc2FnZVJlY2VpdmVyTWFwLnJlbW92ZU1l
c3NhZ2VSZWNlaXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklEKTsKIH0KIAot
dm9pZCBBdXhpbGlhcnlQcm9jZXNzOjpyZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdS
ZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSkKK3ZvaWQgQXV4aWxpYXJ5UHJvY2Vzczo6cmVt
b3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6UmVjZWl2ZXJOYW1lIG1lc3NhZ2VSZWNlaXZlck5hbWUp
CiB7CiAgICAgbV9tZXNzYWdlUmVjZWl2ZXJNYXAucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKG1lc3Nh
Z2VSZWNlaXZlck5hbWUpOwogfQpAQCAtMjM2LDkgKzIzNiw5IEBAIHZvaWQgQXV4aWxpYXJ5UHJv
Y2Vzczo6aW5pdGlhbGl6ZVNhbmRib3gKIHsKIH0KIAotdm9pZCBBdXhpbGlhcnlQcm9jZXNzOjpk
aWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpTdHJpbmdSZWZl
cmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5h
bWUpCit2b2lkIEF1eGlsaWFyeVByb2Nlc3M6OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lKQogewotICAgIFdURkxv
Z0Fsd2F5cygiUmVjZWl2ZWQgaW52YWxpZCBtZXNzYWdlOiAnJXM6OiVzJyIsIG1lc3NhZ2VSZWNl
aXZlck5hbWUudG9TdHJpbmcoKS5kYXRhKCksIG1lc3NhZ2VOYW1lLnRvU3RyaW5nKCkuZGF0YSgp
KTsKKyAgICBXVEZMb2dBbHdheXMoIlJlY2VpdmVkIGludmFsaWQgbWVzc2FnZTogJyVzJyIsIGRl
c2NyaXB0aW9uKG1lc3NhZ2VOYW1lKSk7CiAgICAgQ1JBU0goKTsKIH0KIApJbmRleDogU291cmNl
L1dlYktpdC9TaGFyZWQvQXV4aWxpYXJ5UHJvY2Vzcy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvU2hhcmVkL0F1eGlsaWFyeVByb2Nlc3MuaAkocmV2aXNpb24gMjYxMjM4KQorKysgU291
cmNlL1dlYktpdC9TaGFyZWQvQXV4aWxpYXJ5UHJvY2Vzcy5oCSh3b3JraW5nIGNvcHkpCkBAIC02
MCwyMCArNjAsMjAgQEAgcHVibGljOgogICAgIHZvaWQgZGlzYWJsZVRlcm1pbmF0aW9uKCk7CiAg
ICAgdm9pZCBlbmFibGVUZXJtaW5hdGlvbigpOwogCi0gICAgdm9pZCBhZGRNZXNzYWdlUmVjZWl2
ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpNZXNzYWdl
UmVjZWl2ZXImKTsKLSAgICB2b2lkIGFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVy
ZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBJUEM6Ok1l
c3NhZ2VSZWNlaXZlciYpOwotICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6U3Ry
aW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQp
OwotICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1l
c3NhZ2VSZWNlaXZlck5hbWUpOworICAgIHZvaWQgYWRkTWVzc2FnZVJlY2VpdmVyKElQQzo6UmVj
ZWl2ZXJOYW1lLCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYpOworICAgIHZvaWQgYWRkTWVzc2FnZVJl
Y2VpdmVyKElQQzo6UmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBJUEM6Ok1l
c3NhZ2VSZWNlaXZlciYpOworICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6UmVj
ZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKTsKKyAgICB2b2lkIHJlbW92ZU1lc3Nh
Z2VSZWNlaXZlcihJUEM6OlJlY2VpdmVyTmFtZSk7CiAgICAgdm9pZCByZW1vdmVNZXNzYWdlUmVj
ZWl2ZXIoSVBDOjpNZXNzYWdlUmVjZWl2ZXImKTsKICAgICAKICAgICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4KLSAgICB2b2lkIGFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBt
ZXNzYWdlUmVjZWl2ZXJOYW1lLCBPYmplY3RJZGVudGlmaWVyPFQ+IGRlc3RpbmF0aW9uSUQsIElQ
Qzo6TWVzc2FnZVJlY2VpdmVyJiByZWNlaXZlcikKKyAgICB2b2lkIGFkZE1lc3NhZ2VSZWNlaXZl
cihJUEM6OlJlY2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBPYmplY3RJZGVudGlmaWVy
PFQ+IGRlc3RpbmF0aW9uSUQsIElQQzo6TWVzc2FnZVJlY2VpdmVyJiByZWNlaXZlcikKICAgICB7
CiAgICAgICAgIGFkZE1lc3NhZ2VSZWNlaXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1lLCBkZXN0aW5h
dGlvbklELnRvVUludDY0KCksIHJlY2VpdmVyKTsKICAgICB9CiAgICAgCiAgICAgdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+Ci0gICAgdm9pZCByZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdS
ZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgT2JqZWN0SWRlbnRpZmllcjxUPiBkZXN0aW5h
dGlvbklEKQorICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6UmVjZWl2ZXJOYW1l
IG1lc3NhZ2VSZWNlaXZlck5hbWUsIE9iamVjdElkZW50aWZpZXI8VD4gZGVzdGluYXRpb25JRCkK
ICAgICB7CiAgICAgICAgIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1l
LCBkZXN0aW5hdGlvbklELnRvVUludDY0KCkpOwogICAgIH0KQEAgLTEzOCw3ICsxMzgsNyBAQCBw
cml2YXRlOgogICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3Qg
b3ZlcnJpZGU7CiAKICAgICAvLyBJUEM6OkNvbm5lY3Rpb246OkNsaWVudC4KLSAgICB2b2lkIGRp
ZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OlN0cmluZ1JlZmVy
ZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFt
ZSkgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiwgSVBDOjpNZXNzYWdlTmFtZSkgZmluYWw7CiAgICAgdm9pZCBkaWRDbG9zZShJUEM6OkNv
bm5lY3Rpb24mKSBvdmVycmlkZTsKIAogICAgIHZvaWQgc2h1dERvd24oKTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHkuaAkocmV2aXNpb24gMjYxMjM4KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQv
QXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAt
ODYsOCArODYsNiBAQCBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nJiBwYXlt
ZW50Q29vcmRpbmF0b3JCb3VuZEludGVyZmFjZUlkZW50aWZpZXIoY29uc3QgV2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHkmKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nJiBwYXlt
ZW50Q29vcmRpbmF0b3JTb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoY29uc3QgV2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHkmKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgY29uc3QgU3Ry
aW5nJiBwYXltZW50Q29vcmRpbmF0b3JTb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZp
ZXIoY29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmKSA9IDA7Ci0gICAgICAgIHZpcnR1
YWwgdm9pZCBwYXltZW50Q29vcmRpbmF0b3JBZGRNZXNzYWdlUmVjZWl2ZXIoV2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHkmLCBjb25zdCBJUEM6OlN0cmluZ1JlZmVyZW5jZSYsIElQQzo6TWVzc2Fn
ZVJlY2VpdmVyJikgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgcGF5bWVudENvb3JkaW5hdG9y
UmVtb3ZlTWVzc2FnZVJlY2VpdmVyKFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JiwgY29uc3Qg
SVBDOjpTdHJpbmdSZWZlcmVuY2UmKSA9IDA7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICAgICAgdmlydHVhbCBVSVZpZXdDb250cm9sbGVyICpwYXltZW50Q29vcmRpbmF0b3JQcmVzZW50
aW5nVmlld0NvbnRyb2xsZXIoY29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmKSA9IDA7
CiAgICAgICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nJiBwYXltZW50Q29vcmRpbmF0b3JDVERhdGFD
b25uZWN0aW9uU2VydmljZVR5cGUoY29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmKSA9
IDA7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50
Q29vcmRpbmF0b3JQcm94eUNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hh
cmVkL0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EubW0JKHJl
dmlzaW9uIDI2MTIzOCkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L2NvY29hL1dl
YlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTc5LDE1
ICs3OSwxMiBAQCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6V2ViUGF5bWVudENvCiAgICAg
OiBtX2NsaWVudChjbGllbnQpCiAgICAgLCBtX2Nhbk1ha2VQYXltZW50c1F1ZXVlKFdvcmtRdWV1
ZTo6Y3JlYXRlKCJjb20uYXBwbGUuV2ViS2l0LkNhbk1ha2VQYXltZW50cyIpKQogewotICAgIG1f
Y2xpZW50LnBheW1lbnRDb29yZGluYXRvckFkZE1lc3NhZ2VSZWNlaXZlcigqdGhpcywgTWVzc2Fn
ZXM6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksICp0
aGlzKTsKIH0KIAogV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6On5XZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eSgpCiB7CiAgICAgaWYgKG1fc3RhdGUgIT0gU3RhdGU6OklkbGUpCiAgICAgICAg
IGhpZGVQYXltZW50VUkoKTsKLQotICAgIG1fY2xpZW50LnBheW1lbnRDb29yZGluYXRvclJlbW92
ZU1lc3NhZ2VSZWNlaXZlcigqdGhpcywgTWVzc2FnZXM6OldlYlBheW1lbnRDb29yZGluYXRvclBy
b3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpOwogfQogCiB2b2lkIFdlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5OjpwbGF0Zm9ybUNhbk1ha2VQYXltZW50c1dpdGhBY3RpdmVDYXJkKGNvbnN0IFN0
cmluZyYgbWVyY2hhbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGRvbWFpbk5hbWUsIFdURjo6
RnVuY3Rpb248dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvU2hhcmVkL0NvY29hL0F1eGlsaWFyeVByb2Nlc3NDb2NvYS5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9BdXhpbGlhcnlQcm9jZXNzQ29jb2EubW0JKHJl
dmlzaW9uIDI2MTIzOCkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0F1eGlsaWFyeVBy
b2Nlc3NDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMzIsOSArMzIsOSBAQAogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAotdm9pZCBBdXhpbGlhcnlQcm9jZXNzOjpkaWRSZWNlaXZlSW52YWxpZE1l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2Vp
dmVyTmFtZSwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUpCit2b2lkIEF1eGlsaWFy
eVByb2Nlc3M6OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6
Ok1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lKQogewotICAgIHNldENyYXNoUmVwb3J0QXBwbGljYXRp
b25TcGVjaWZpY0luZm9ybWF0aW9uKChfX2JyaWRnZSBDRlN0cmluZ1JlZilbTlNTdHJpbmcgc3Ry
aW5nV2l0aEZvcm1hdDpAIlJlY2VpdmVkIGludmFsaWQgbWVzc2FnZTogJyVzOjolcyciLCBtZXNz
YWdlUmVjZWl2ZXJOYW1lLnRvU3RyaW5nKCkuZGF0YSgpLCBtZXNzYWdlTmFtZS50b1N0cmluZygp
LmRhdGEoKV0pOworICAgIHNldENyYXNoUmVwb3J0QXBwbGljYXRpb25TcGVjaWZpY0luZm9ybWF0
aW9uKChfX2JyaWRnZSBDRlN0cmluZ1JlZilbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIlJl
Y2VpdmVkIGludmFsaWQgbWVzc2FnZTogJyVzJyIsIGRlc2NyaXB0aW9uKG1lc3NhZ2VOYW1lKV0p
OwogICAgIENSQVNIKCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGls
aWFyeVByb2Nlc3NQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmNwcAkocmV2aXNpb24gMjYxMjM4KQorKysgU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTc4LDIyICsxNzgsMjIgQEAgYm9vbCBBdXhpbGlhcnlQcm9jZXNzUHJveHk6OnNlbmRN
ZXNzYWdlKAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBBdXhpbGlhcnlQcm9jZXNzUHJv
eHk6OmFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2
ZXJOYW1lLCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYgbWVzc2FnZVJlY2VpdmVyKQordm9pZCBBdXhp
bGlhcnlQcm9jZXNzUHJveHk6OmFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlJlY2VpdmVyTmFtZSBt
ZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYgbWVzc2FnZVJlY2VpdmVy
KQogewogICAgIG1fbWVzc2FnZVJlY2VpdmVyTWFwLmFkZE1lc3NhZ2VSZWNlaXZlcihtZXNzYWdl
UmVjZWl2ZXJOYW1lLCBtZXNzYWdlUmVjZWl2ZXIpOwogfQogCi12b2lkIEF1eGlsaWFyeVByb2Nl
c3NQcm94eTo6YWRkTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VS
ZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIElQQzo6TWVzc2FnZVJlY2VpdmVy
JiBtZXNzYWdlUmVjZWl2ZXIpCit2b2lkIEF1eGlsaWFyeVByb2Nlc3NQcm94eTo6YWRkTWVzc2Fn
ZVJlY2VpdmVyKElQQzo6UmVjZWl2ZXJOYW1lIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90
IGRlc3RpbmF0aW9uSUQsIElQQzo6TWVzc2FnZVJlY2VpdmVyJiBtZXNzYWdlUmVjZWl2ZXIpCiB7
CiAgICAgbV9tZXNzYWdlUmVjZWl2ZXJNYXAuYWRkTWVzc2FnZVJlY2VpdmVyKG1lc3NhZ2VSZWNl
aXZlck5hbWUsIGRlc3RpbmF0aW9uSUQsIG1lc3NhZ2VSZWNlaXZlcik7CiB9CiAKLXZvaWQgQXV4
aWxpYXJ5UHJvY2Vzc1Byb3h5OjpyZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZl
cmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCkKK3ZvaWQg
QXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjpyZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpSZWNlaXZl
ck5hbWUgbWVzc2FnZVJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCkKIHsKICAg
ICBtX21lc3NhZ2VSZWNlaXZlck1hcC5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2Vp
dmVyTmFtZSwgZGVzdGluYXRpb25JRCk7CiB9CiAKLXZvaWQgQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5
OjpyZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2Vp
dmVyTmFtZSkKK3ZvaWQgQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjpyZW1vdmVNZXNzYWdlUmVjZWl2
ZXIoSVBDOjpSZWNlaXZlck5hbWUgbWVzc2FnZVJlY2VpdmVyTmFtZSkKIHsKICAgICBtX21lc3Nh
Z2VSZWNlaXZlck1hcC5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSk7
CiB9CkBAIC0yNzgsOSArMjc4LDkgQEAgdm9pZCBBdXhpbGlhcnlQcm9jZXNzUHJveHk6OmNvbm5l
Y3Rpb25XaQogewogfQogCi12b2lkIEF1eGlsaWFyeVByb2Nlc3NQcm94eTo6bG9nSW52YWxpZE1l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBt
ZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZSkKK3Zv
aWQgQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5Ojpsb2dJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mIGNvbm5lY3Rpb24sIElQQzo6TWVzc2FnZU5hbWUgbWVzc2FnZU5hbWUpCiB7Ci0gICAgUkVM
RUFTRV9MT0dfRkFVTFQoSVBDLCAiUmVjZWl2ZWQgYW4gaW52YWxpZCBtZXNzYWdlICclIiBQVUJM
SUNfTE9HX1NUUklORyAiOjolIiBQVUJMSUNfTE9HX1NUUklORyAiJyBmcm9tIHRoZSAlIiBQVUJM
SUNfTE9HX1NUUklORyAiIHByb2Nlc3MuIiwgbWVzc2FnZVJlY2VpdmVyTmFtZS50b1N0cmluZygp
LmRhdGEoKSwgbWVzc2FnZU5hbWUudG9TdHJpbmcoKS5kYXRhKCksIHByb2Nlc3NOYW1lKCkuY2hh
cmFjdGVycygpKTsKKyAgICBSRUxFQVNFX0xPR19GQVVMVChJUEMsICJSZWNlaXZlZCBhbiBpbnZh
bGlkIG1lc3NhZ2UgJyUiIFBVQkxJQ19MT0dfU1RSSU5HICInIGZyb20gdGhlICUiIFBVQkxJQ19M
T0dfU1RSSU5HICIgcHJvY2Vzcy4iLCBkZXNjcmlwdGlvbihtZXNzYWdlTmFtZSksIHByb2Nlc3NO
YW1lKCkuY2hhcmFjdGVycygpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaAkocmV2
aXNpb24gMjYxMjM4KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vz
c1Byb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTc1LDE5ICs3NSwxOSBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiBtX2Nvbm5lY3Rpb24gPT0gJmNvbm5lY3Rpb247CiAgICAgfQogCi0gICAgdm9p
ZCBhZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVy
TmFtZSwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImKTsKLSAgICB2b2lkIGFkZE1lc3NhZ2VSZWNlaXZl
cihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0
aW5hdGlvbklELCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYpOwotICAgIHZvaWQgcmVtb3ZlTWVzc2Fn
ZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2
NF90IGRlc3RpbmF0aW9uSUQpOwotICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6
U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUpOworICAgIHZvaWQgYWRkTWVzc2Fn
ZVJlY2VpdmVyKElQQzo6UmVjZWl2ZXJOYW1lLCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYpOworICAg
IHZvaWQgYWRkTWVzc2FnZVJlY2VpdmVyKElQQzo6UmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0
aW5hdGlvbklELCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYpOworICAgIHZvaWQgcmVtb3ZlTWVzc2Fn
ZVJlY2VpdmVyKElQQzo6UmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKTsKKyAg
ICB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlJlY2VpdmVyTmFtZSk7CiAgICAgCiAg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAgdm9pZCBhZGRNZXNzYWdlUmVjZWl2ZXIoSVBD
OjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgT2JqZWN0SWRlbnRpZmllcjxU
PiBkZXN0aW5hdGlvbklELCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYgcmVjZWl2ZXIpCisgICAgdm9p
ZCBhZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpSZWNlaXZlck5hbWUgbWVzc2FnZVJlY2VpdmVyTmFt
ZSwgT2JqZWN0SWRlbnRpZmllcjxUPiBkZXN0aW5hdGlvbklELCBJUEM6Ok1lc3NhZ2VSZWNlaXZl
ciYgcmVjZWl2ZXIpCiAgICAgewogICAgICAgICBhZGRNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJl
Y2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRC50b1VJbnQ2NCgpLCByZWNlaXZlcik7CiAgICAgfQog
ICAgIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJl
Y2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIE9iamVjdElk
ZW50aWZpZXI8VD4gZGVzdGluYXRpb25JRCkKKyAgICB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZl
cihJUEM6OlJlY2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBPYmplY3RJZGVudGlmaWVy
PFQ+IGRlc3RpbmF0aW9uSUQpCiAgICAgewogICAgICAgICByZW1vdmVNZXNzYWdlUmVjZWl2ZXIo
bWVzc2FnZVJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRC50b1VJbnQ2NCgpKTsKICAgICB9CkBA
IC0xMTksNyArMTE5LDcgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgZGlzcGF0Y2hNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwogICAgIGJvb2wgZGlzcGF0Y2hTeW5jTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBD
OjpFbmNvZGVyPiYpOwogCi0gICAgdm9pZCBsb2dJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6OlN0cmlu
Z1JlZmVyZW5jZSBtZXNzYWdlTmFtZSk7CisgICAgdm9pZCBsb2dJbnZhbGlkTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VOYW1lKTsKICAgICB2aXJ0dWFsIEFTQ0lJTGl0ZXJh
bCBwcm9jZXNzTmFtZSgpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBnZXRMYXVuY2hP
cHRpb25zKFByb2Nlc3NMYXVuY2hlcjo6TGF1bmNoT3B0aW9ucyYpOwpAQCAtMTUwLDcgKzE1MCw3
IEBAIGJvb2wgQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjpzZW5kKFQmJiBtZXMKIHsKICAgICBDT01Q
SUxFX0FTU0VSVCghVDo6aXNTeW5jLCBBc3luY01lc3NhZ2VFeHBlY3RlZCk7CiAKLSAgICBhdXRv
IGVuY29kZXIgPSBtYWtlVW5pcXVlPElQQzo6RW5jb2Rlcj4oVDo6cmVjZWl2ZXJOYW1lKCksIFQ6
Om5hbWUoKSwgZGVzdGluYXRpb25JRCk7CisgICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZTxJ
UEM6OkVuY29kZXI+KFQ6Om5hbWUoKSwgZGVzdGluYXRpb25JRCk7CiAgICAgZW5jb2Rlci0+ZW5j
b2RlKG1lc3NhZ2UuYXJndW1lbnRzKCkpOwogCiAgICAgcmV0dXJuIHNlbmRNZXNzYWdlKFdURk1v
dmUoZW5jb2RlciksIHNlbmRPcHRpb25zKTsKQEAgLTE3NCw3ICsxNzQsNyBAQCB2b2lkIEF1eGls
aWFyeVByb2Nlc3NQcm94eTo6c2VuZFdpdGhBc3luCiB7CiAgICAgQ09NUElMRV9BU1NFUlQoIVQ6
OmlzU3luYywgQXN5bmNNZXNzYWdlRXhwZWN0ZWQpOwogCi0gICAgYXV0byBlbmNvZGVyID0gbWFr
ZVVuaXF1ZTxJUEM6OkVuY29kZXI+KFQ6OnJlY2VpdmVyTmFtZSgpLCBUOjpuYW1lKCksIGRlc3Rp
bmF0aW9uSUQpOworICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWU8SVBDOjpFbmNvZGVyPihU
OjpuYW1lKCksIGRlc3RpbmF0aW9uSUQpOwogICAgIHVpbnQ2NF90IGxpc3RlbmVySUQgPSBJUEM6
Om5leHRBc3luY1JlcGx5SGFuZGxlcklEKCk7CiAgICAgZW5jb2Rlci0+ZW5jb2RlKGxpc3RlbmVy
SUQpOwogICAgIGVuY29kZXItPmVuY29kZShtZXNzYWdlLmFyZ3VtZW50cygpKTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xlZ2FjeVNlc3Npb25TdGF0ZUNvZGluZ05vbmUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xlZ2FjeVNlc3Npb25TdGF0ZUNv
ZGluZ05vbmUuY3BwCShyZXZpc2lvbiAyNjEyMzgpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9MZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmdOb25lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAs
NiArMzAsNyBAQAogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJEZWNvZGVy
LmgiCiAjaW5jbHVkZSAiRW5jb2Rlci5oIgorI2luY2x1ZGUgIk1lc3NhZ2VOYW1lcy5oIgogI2lu
Y2x1ZGUgIlNlc3Npb25TdGF0ZS5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5o
IgogCkBAIC0zNyw4ICszOCw4IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBSZWZQdHI8QVBJOjpE
YXRhPiBlbmNvZGVMZWdhY3lTZXNzaW9uU3RhdGUoY29uc3QgU2Vzc2lvblN0YXRlJiBzZXNzaW9u
U3RhdGUpCiB7Ci0gICAgLy8gRklYTUU6IEknbSBub3Qgc3VyZSB3aGV0aGVyIHRoZXNlIGFyZSB0
aGUgcHJvcGVyIGFyZ3VtZW50cyBmb3IgdGhlIGVuY29kZXIuCi0gICAgSVBDOjpFbmNvZGVyIGVu
Y29kZXIoIklQQyIsICJMZWdhY3lTZXNzaW9uU3RhdGUiLCAwKTsKKyAgICAvLyBGSVhNRTogVGhp
cyBzaG91bGQgdXNlIFdURjo6UGVyc2lzdGVuY2U6OkVuY29kZXIgaW5zdGVhZC4KKyAgICBJUEM6
OkVuY29kZXIgZW5jb2RlcihJUEM6Ok1lc3NhZ2VOYW1lOjpMZWdhY3lTZXNzaW9uU3RhdGUsIDAp
OwogICAgIGVuY29kZXIgPDwgc2Vzc2lvblN0YXRlLmJhY2tGb3J3YXJkTGlzdFN0YXRlOwogICAg
IGVuY29kZXIgPDwgc2Vzc2lvblN0YXRlLnJlbmRlclRyZWVTaXplOwogICAgIGVuY29kZXIgPDwg
c2Vzc2lvblN0YXRlLnByb3Zpc2lvbmFsVVJMOwpAQCAtNDgsMTUgKzQ5LDI1IEBAIFJlZlB0cjxB
UEk6OkRhdGE+IGVuY29kZUxlZ2FjeVNlc3Npb25TdGEKIGJvb2wgZGVjb2RlTGVnYWN5U2Vzc2lv
blN0YXRlKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhU2l6ZSwgU2Vzc2lvblN0YXRl
JiBzZXNzaW9uU3RhdGUpCiB7CiAgICAgSVBDOjpEZWNvZGVyIGRlY29kZXIoZGF0YSwgZGF0YVNp
emUsIG51bGxwdHIsIFZlY3RvcjxJUEM6OkF0dGFjaG1lbnQ+KCkpOworCiAgICAgT3B0aW9uYWw8
QmFja0ZvcndhcmRMaXN0U3RhdGU+IGJhY2tGb3J3YXJkTGlzdFN0YXRlOwogICAgIGRlY29kZXIg
Pj4gYmFja0ZvcndhcmRMaXN0U3RhdGU7CiAgICAgaWYgKCFiYWNrRm9yd2FyZExpc3RTdGF0ZSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHNlc3Npb25TdGF0ZS5iYWNrRm9yd2FyZExpc3RT
dGF0ZSA9IFdURk1vdmUoKmJhY2tGb3J3YXJkTGlzdFN0YXRlKTsKLSAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHNlc3Npb25TdGF0ZS5yZW5kZXJUcmVlU2l6ZSkpCisKKyAgICBPcHRpb25hbDx1aW50
NjRfdD4gcmVuZGVyVHJlZVNpemU7CisgICAgZGVjb2RlciA+PiByZW5kZXJUcmVlU2l6ZTsKKyAg
ICBpZiAoIXJlbmRlclRyZWVTaXplKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShzZXNzaW9uU3RhdGUucHJvdmlzaW9uYWxVUkwpKQorICAgIHNlc3Npb25T
dGF0ZS5yZW5kZXJUcmVlU2l6ZSA9ICpyZW5kZXJUcmVlU2l6ZTsKKworICAgIE9wdGlvbmFsPFVS
TD4gcHJvdmlzaW9uYWxVUkw7CisgICAgZGVjb2RlciA+PiBwcm92aXNpb25hbFVSTDsKKyAgICBp
ZiAoIXByb3Zpc2lvbmFsVVJMKQogICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgc2Vzc2lvblN0
YXRlLnByb3Zpc2lvbmFsVVJMID0gV1RGTW92ZSgqcHJvdmlzaW9uYWxVUkwpOworCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFs
UGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92
aXNpb25hbFBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDI2MTIzOCkKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTE5
LDcgKzUxOSw3IEBAIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRpZFJlY2VpdmVNZXMKICAg
ICB9CiAjZW5kaWYKIAotICAgIExPRyhQcm9jZXNzU3dhcHBpbmcsICJVbmhhbmRsZWQgbWVzc2Fn
ZSAlczo6JXMgZnJvbSBwcm92aXNpb25hbCBwcm9jZXNzIiwgZGVjb2Rlci5tZXNzYWdlUmVjZWl2
ZXJOYW1lKCkudG9TdHJpbmcoKS5kYXRhKCksIGRlY29kZXIubWVzc2FnZU5hbWUoKS50b1N0cmlu
ZygpLmRhdGEoKSk7CisgICAgTE9HKFByb2Nlc3NTd2FwcGluZywgIlVuaGFuZGxlZCBtZXNzYWdl
ICVzIGZyb20gcHJvdmlzaW9uYWwgcHJvY2VzcyIsIGRlc2NyaXB0aW9uKGRlY29kZXIubWVzc2Fn
ZU5hbWUoKSkpOwogfQogCiB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRSZWNlaXZlU3lu
Y01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29k
ZXIsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiByZXBseUVuY29kZXIpCkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHAJKHJldmlz
aW9uIDI2MTIzOCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94
eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYxLDMzICs2MSwzMiBAQCBSZWZQdHI8V2ViUHJvY2Vz
c1Byb3h5PiBTdXNwZW5kZWRQYWdlUHJvCiB9CiAKICNpZiAhTE9HX0RJU0FCTEVECi1zdGF0aWMg
Y29uc3QgSGFzaFNldDxJUEM6OlN0cmluZ1JlZmVyZW5jZT4mIG1lc3NhZ2VOYW1lc1RvSWdub3Jl
V2hpbGVTdXNwZW5kZWQoKQorc3RhdGljIGNvbnN0IEhhc2hTZXQ8dWludDE2X3Q+JiBtZXNzYWdl
TmFtZXNUb0lnbm9yZVdoaWxlU3VzcGVuZGVkKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8SGFzaFNldDxJUEM6OlN0cmluZ1JlZmVyZW5jZT4+IG1lc3NhZ2VOYW1lczsKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxJUEM6Ok1lc3NhZ2VOYW1lLCBXVEY6OkludEhhc2g8
SVBDOjpNZXNzYWdlTmFtZT4sIFdURjo6U3Ryb25nRW51bUhhc2hUcmFpdHM8SVBDOjpNZXNzYWdl
TmFtZT4+PiBtZXNzYWdlTmFtZXM7CiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFn
OwogICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7Ci0gICAgICAgIG1lc3NhZ2VOYW1l
cy5nZXQoKS5hZGQoIkJhY2tGb3J3YXJkQWRkSXRlbSIpOwotICAgICAgICBtZXNzYWdlTmFtZXMu
Z2V0KCkuYWRkKCJDbGVhckFsbEVkaXRDb21tYW5kcyIpOwotICAgICAgICBtZXNzYWdlTmFtZXMu
Z2V0KCkuYWRkKCJEaWRDaGFuZ2VDb250ZW50U2l6ZSIpOwotICAgICAgICBtZXNzYWdlTmFtZXMu
Z2V0KCkuYWRkKCJEaWRDaGFuZ2VNYWluRG9jdW1lbnQiKTsKLSAgICAgICAgbWVzc2FnZU5hbWVz
LmdldCgpLmFkZCgiRGlkQ2hhbmdlUHJvZ3Jlc3MiKTsKLSAgICAgICAgbWVzc2FnZU5hbWVzLmdl
dCgpLmFkZCgiRGlkQ29tbWl0TG9hZEZvckZyYW1lIik7Ci0gICAgICAgIG1lc3NhZ2VOYW1lcy5n
ZXQoKS5hZGQoIkRpZERlc3Ryb3lOYXZpZ2F0aW9uIik7Ci0gICAgICAgIG1lc3NhZ2VOYW1lcy5n
ZXQoKS5hZGQoIkRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lIik7Ci0gICAgICAgIG1lc3Nh
Z2VOYW1lcy5nZXQoKS5hZGQoIkRpZEZpbmlzaFByb2dyZXNzIik7Ci0gICAgICAgIG1lc3NhZ2VO
YW1lcy5nZXQoKS5hZGQoIkRpZENvbXBsZXRlUGFnZVRyYW5zaXRpb24iKTsKLSAgICAgICAgbWVz
c2FnZU5hbWVzLmdldCgpLmFkZCgiRGlkRmlyc3RMYXlvdXRGb3JGcmFtZSIpOwotICAgICAgICBt
ZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JG
cmFtZSIpOwotICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJEaWROYXZpZ2F0ZVdpdGhO
YXZpZ2F0aW9uRGF0YSIpOwotICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJEaWRSZWFj
aExheW91dE1pbGVzdG9uZSIpOwotICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJEaWRS
ZXN0b3JlU2Nyb2xsUG9zaXRpb24iKTsKLSAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZCgi
RGlkU3RhcnRQcm9ncmVzcyIpOwotICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJEaWRT
dGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lIik7Ci0gICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQo
KS5hZGQoIkVkaXRvclN0YXRlQ2hhbmdlZCIpOwotICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCku
YWRkKCJQYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3JEaWRDaGFuZ2UiKTsKLSAgICAgICAgbWVz
c2FnZU5hbWVzLmdldCgpLmFkZCgiU2V0UmVuZGVyVHJlZVNpemUiKTsKLSAgICAgICAgbWVzc2Fn
ZU5hbWVzLmdldCgpLmFkZCgiU2V0U3RhdHVzVGV4dCIpOwotICAgICAgICBtZXNzYWdlTmFtZXMu
Z2V0KCkuYWRkKCJTZXROZXR3b3JrUmVxdWVzdHNJblByb2dyZXNzIik7CisgICAgICAgIG1lc3Nh
Z2VOYW1lcy5nZXQoKS5hZGQoSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZVByb3h5X0JhY2tGb3J3
YXJkQWRkSXRlbSk7CisgICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoSVBDOjpNZXNzYWdl
TmFtZTo6V2ViUGFnZVByb3h5X0NsZWFyQWxsRWRpdENvbW1hbmRzKTsKKyAgICAgICAgbWVzc2Fn
ZU5hbWVzLmdldCgpLmFkZChJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlUHJveHlfRGlkQ2hhbmdl
Q29udGVudFNpemUpOworICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKElQQzo6TWVzc2Fn
ZU5hbWU6OldlYlBhZ2VQcm94eV9EaWRDaGFuZ2VNYWluRG9jdW1lbnQpOworICAgICAgICBtZXNz
YWdlTmFtZXMuZ2V0KCkuYWRkKElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VQcm94eV9EaWRDaGFu
Z2VQcm9ncmVzcyk7CisgICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoSVBDOjpNZXNzYWdl
TmFtZTo6V2ViUGFnZVByb3h5X0RpZENvbW1pdExvYWRGb3JGcmFtZSk7CisgICAgICAgIG1lc3Nh
Z2VOYW1lcy5nZXQoKS5hZGQoSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZVByb3h5X0RpZERlc3Ry
b3lOYXZpZ2F0aW9uKTsKKyAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZChJUEM6Ok1lc3Nh
Z2VOYW1lOjpXZWJQYWdlUHJveHlfRGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUpOworICAg
ICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VQcm94
eV9EaWRGaW5pc2hQcm9ncmVzcyk7CisgICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoSVBD
OjpNZXNzYWdlTmFtZTo6V2ViUGFnZVByb3h5X0RpZEZpcnN0TGF5b3V0Rm9yRnJhbWUpOworICAg
ICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VQcm94
eV9EaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZSk7CisgICAgICAgIG1lc3Nh
Z2VOYW1lcy5nZXQoKS5hZGQoSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZVByb3h5X0RpZE5hdmln
YXRlV2l0aE5hdmlnYXRpb25EYXRhKTsKKyAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZChJ
UEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlUHJveHlfRGlkUmVhY2hMYXlvdXRNaWxlc3RvbmUpOwor
ICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VQ
cm94eV9EaWRSZXN0b3JlU2Nyb2xsUG9zaXRpb24pOworICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0
KCkuYWRkKElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VQcm94eV9EaWRTdGFydFByb2dyZXNzKTsK
KyAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZChJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdl
UHJveHlfRGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSk7CisgICAgICAgIG1lc3NhZ2VO
YW1lcy5nZXQoKS5hZGQoSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZVByb3h5X0VkaXRvclN0YXRl
Q2hhbmdlZCk7CisgICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoSVBDOjpNZXNzYWdlTmFt
ZTo6V2ViUGFnZVByb3h5X1BhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvckRpZENoYW5nZSk7Cisg
ICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZVBy
b3h5X1NldFJlbmRlclRyZWVTaXplKTsKKyAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZChJ
UEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlUHJveHlfU2V0U3RhdHVzVGV4dCk7CisgICAgICAgIG1l
c3NhZ2VOYW1lcy5nZXQoKS5hZGQoSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZVByb3h5X1NldE5l
dHdvcmtSZXF1ZXN0c0luUHJvZ3Jlc3MpOwogICAgIH0pOwogCiAgICAgcmV0dXJuIG1lc3NhZ2VO
YW1lczsKQEAgLTI1NSw3ICsyNTQsNyBAQCB2b2lkIFN1c3BlbmRlZFBhZ2VQcm94eTo6ZGlkUmVj
ZWl2ZU1lc3NhCiAKICNpZiAhTE9HX0RJU0FCTEVECiAgICAgaWYgKCFtZXNzYWdlTmFtZXNUb0ln
bm9yZVdoaWxlU3VzcGVuZGVkKCkuY29udGFpbnMoZGVjb2Rlci5tZXNzYWdlTmFtZSgpKSkKLSAg
ICAgICAgTE9HKFByb2Nlc3NTd2FwcGluZywgIlN1c3BlbmRlZFBhZ2VQcm94eSByZWNlaXZlZCB1
bmV4cGVjdGVkIFdlYlBhZ2VQcm94eSBtZXNzYWdlICclcyciLCBkZWNvZGVyLm1lc3NhZ2VOYW1l
KCkudG9TdHJpbmcoKS5kYXRhKCkpOworICAgICAgICBMT0coUHJvY2Vzc1N3YXBwaW5nLCAiU3Vz
cGVuZGVkUGFnZVByb3h5IHJlY2VpdmVkIHVuZXhwZWN0ZWQgV2ViUGFnZVByb3h5IG1lc3NhZ2Ug
JyVzJyIsIGRlc2NyaXB0aW9uKGRlY29kZXIubWVzc2FnZU5hbWUoKSkpOwogI2VuZGlmCiB9CiAK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZpc2lvbiAyNjEy
MzgpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkod29ya2luZyBj
b3B5KQpAQCAtMjI4NCw4ICsyMjg0LDYgQEAgcHJpdmF0ZToKICAgICBjb25zdCBTdHJpbmcmIHBh
eW1lbnRDb29yZGluYXRvckJvdW5kSW50ZXJmYWNlSWRlbnRpZmllcihjb25zdCBXZWJQYXltZW50
Q29vcmRpbmF0b3JQcm94eSYpIGZpbmFsOwogICAgIGNvbnN0IFN0cmluZyYgcGF5bWVudENvb3Jk
aW5hdG9yU291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKGNvbnN0IFdlYlBheW1lbnRD
b29yZGluYXRvclByb3h5JikgZmluYWw7CiAgICAgY29uc3QgU3RyaW5nJiBwYXltZW50Q29vcmRp
bmF0b3JTb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIoY29uc3QgV2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHkmKSBmaW5hbDsKLSAgICB2b2lkIHBheW1lbnRDb29yZGluYXRvckFk
ZE1lc3NhZ2VSZWNlaXZlcihXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYsIGNvbnN0IElQQzo6
U3RyaW5nUmVmZXJlbmNlJiwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImKSBmaW5hbDsKLSAgICB2b2lk
IHBheW1lbnRDb29yZGluYXRvclJlbW92ZU1lc3NhZ2VSZWNlaXZlcihXZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eSYsIGNvbnN0IElQQzo6U3RyaW5nUmVmZXJlbmNlJikgZmluYWw7CiAjZW5kaWYK
ICNpZiBFTkFCTEUoQVBQTEVfUEFZKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFVJVmll
d0NvbnRyb2xsZXIgKnBheW1lbnRDb29yZGluYXRvclByZXNlbnRpbmdWaWV3Q29udHJvbGxlcihj
b25zdCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYpIGZpbmFsOwpJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAkocmV2aXNpb24gMjYxMjM4KQorKysg
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC04NTIsMTcgKzg1MiwxMiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRJbnZhbGlkTWVz
c2FnZUNhCiAgICAgc19pbnZhbGlkTWVzc2FnZUNhbGxiYWNrID0gaW52YWxpZE1lc3NhZ2VDYWxs
YmFjazsKIH0KIAotdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdl
KGNvbnN0IElQQzo6U3RyaW5nUmVmZXJlbmNlJiBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBjb25zdCBJ
UEM6OlN0cmluZ1JlZmVyZW5jZSYgbWVzc2FnZU5hbWUpCit2b2lkIFdlYlByb2Nlc3NQb29sOjpk
aWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpNZXNzYWdlTmFtZSBtZXNzYWdlTmFtZSkKIHsK
ICAgICBpZiAoIXNfaW52YWxpZE1lc3NhZ2VDYWxsYmFjaykKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgU3RyaW5nQnVpbGRlciBtZXNzYWdlTmFtZVN0cmluZ0J1aWxkZXI7Ci0gICAgbWVzc2FnZU5h
bWVTdHJpbmdCdWlsZGVyLmFwcGVuZENoYXJhY3RlcnMobWVzc2FnZVJlY2VpdmVyTmFtZS5kYXRh
KCksIG1lc3NhZ2VSZWNlaXZlck5hbWUuc2l6ZSgpKTsKLSAgICBtZXNzYWdlTmFtZVN0cmluZ0J1
aWxkZXIuYXBwZW5kKCcuJyk7Ci0gICAgbWVzc2FnZU5hbWVTdHJpbmdCdWlsZGVyLmFwcGVuZENo
YXJhY3RlcnMobWVzc2FnZU5hbWUuZGF0YSgpLCBtZXNzYWdlTmFtZS5zaXplKCkpOwotCi0gICAg
c19pbnZhbGlkTWVzc2FnZUNhbGxiYWNrKHRvQVBJKEFQSTo6U3RyaW5nOjpjcmVhdGUobWVzc2Fn
ZU5hbWVTdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkpLnB0cigpKSk7CisgICAgc19pbnZhbGlkTWVz
c2FnZUNhbGxiYWNrKHRvQVBJKEFQSTo6U3RyaW5nOjpjcmVhdGUoZGVzY3JpcHRpb24obWVzc2Fn
ZU5hbWUpKS5wdHIoKSkpOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpyZXNvbHZlUGF0aHNG
b3JTYW5kYm94RXh0ZW5zaW9ucygpCkBAIC0xNjgxLDIyICsxNjc2LDIyIEBAIHZvaWQgV2ViUHJv
Y2Vzc1Bvb2w6OnN5bnRoZXNpemVBcHBJc0JhY2sKICAgICBlbnN1cmVOZXR3b3JrUHJvY2Vzcygp
LnN5bnRoZXNpemVBcHBJc0JhY2tncm91bmQoYmFja2dyb3VuZCk7CiB9CiAKLXZvaWQgV2ViUHJv
Y2Vzc1Bvb2w6OmFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdl
UmVjZWl2ZXJOYW1lLCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYgbWVzc2FnZVJlY2VpdmVyKQordm9p
ZCBXZWJQcm9jZXNzUG9vbDo6YWRkTWVzc2FnZVJlY2VpdmVyKElQQzo6UmVjZWl2ZXJOYW1lIG1l
c3NhZ2VSZWNlaXZlck5hbWUsIElQQzo6TWVzc2FnZVJlY2VpdmVyJiBtZXNzYWdlUmVjZWl2ZXIp
CiB7CiAgICAgbV9tZXNzYWdlUmVjZWl2ZXJNYXAuYWRkTWVzc2FnZVJlY2VpdmVyKG1lc3NhZ2VS
ZWNlaXZlck5hbWUsIG1lc3NhZ2VSZWNlaXZlcik7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1Bvb2w6
OmFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJO
YW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYgbWVzc2Fn
ZVJlY2VpdmVyKQordm9pZCBXZWJQcm9jZXNzUG9vbDo6YWRkTWVzc2FnZVJlY2VpdmVyKElQQzo6
UmVjZWl2ZXJOYW1lIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQs
IElQQzo6TWVzc2FnZVJlY2VpdmVyJiBtZXNzYWdlUmVjZWl2ZXIpCiB7CiAgICAgbV9tZXNzYWdl
UmVjZWl2ZXJNYXAuYWRkTWVzc2FnZVJlY2VpdmVyKG1lc3NhZ2VSZWNlaXZlck5hbWUsIGRlc3Rp
bmF0aW9uSUQsIG1lc3NhZ2VSZWNlaXZlcik7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJl
bW92ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJO
YW1lKQordm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6UmVj
ZWl2ZXJOYW1lIG1lc3NhZ2VSZWNlaXZlck5hbWUpCiB7CiAgICAgbV9tZXNzYWdlUmVjZWl2ZXJN
YXAucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKG1lc3NhZ2VSZWNlaXZlck5hbWUpOwogfQogCi12b2lk
IFdlYlByb2Nlc3NQb29sOjpyZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVu
Y2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCkKK3ZvaWQgV2Vi
UHJvY2Vzc1Bvb2w6OnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlJlY2VpdmVyTmFtZSBtZXNz
YWdlUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKQogewogICAgIG1fbWVzc2Fn
ZVJlY2VpdmVyTWFwLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1lLCBk
ZXN0aW5hdGlvbklEKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuaAkocmV2aXNpb24gMjYxMjM4KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuaAkod29ya2luZyBjb3B5KQpAQCAtMTQ4LDIxICsxNDgsMjEgQEAgcHVibGlj
OgogICAgICAgICBtX3N1cHBsZW1lbnRzLmFkZChUOjpzdXBwbGVtZW50TmFtZSgpLCBUOjpjcmVh
dGUodGhpcykpOwogICAgIH0KIAotICAgIHZvaWQgYWRkTWVzc2FnZVJlY2VpdmVyKElQQzo6U3Ry
aW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIElQQzo6TWVzc2FnZVJlY2VpdmVyJik7
Ci0gICAgdm9pZCBhZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2Fn
ZVJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgSVBDOjpNZXNzYWdlUmVjZWl2
ZXImKTsKLSAgICB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5j
ZSBtZXNzYWdlUmVjZWl2ZXJOYW1lKTsKLSAgICB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihJ
UEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5h
dGlvbklEKTsKKyAgICB2b2lkIGFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlJlY2VpdmVyTmFtZSwg
SVBDOjpNZXNzYWdlUmVjZWl2ZXImKTsKKyAgICB2b2lkIGFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6
OlJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgSVBDOjpNZXNzYWdlUmVjZWl2
ZXImKTsKKyAgICB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlJlY2VpdmVyTmFtZSk7
CisgICAgdm9pZCByZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpSZWNlaXZlck5hbWUsIHVpbnQ2
NF90IGRlc3RpbmF0aW9uSUQpOwogCiAgICAgV2ViQmFja0ZvcndhcmRDYWNoZSYgYmFja0Zvcndh
cmRDYWNoZSgpIHsgcmV0dXJuIG1fYmFja0ZvcndhcmRDYWNoZS5nZXQoKTsgfQogICAgIAogICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgIHZvaWQgYWRkTWVzc2FnZVJlY2VpdmVyKElQQzo6
U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIE9iamVjdElkZW50aWZpZXI8VD4g
ZGVzdGluYXRpb25JRCwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImIHJlY2VpdmVyKQorICAgIHZvaWQg
YWRkTWVzc2FnZVJlY2VpdmVyKElQQzo6UmVjZWl2ZXJOYW1lIG1lc3NhZ2VSZWNlaXZlck5hbWUs
IE9iamVjdElkZW50aWZpZXI8VD4gZGVzdGluYXRpb25JRCwgSVBDOjpNZXNzYWdlUmVjZWl2ZXIm
IHJlY2VpdmVyKQogICAgIHsKICAgICAgICAgYWRkTWVzc2FnZVJlY2VpdmVyKG1lc3NhZ2VSZWNl
aXZlck5hbWUsIGRlc3RpbmF0aW9uSUQudG9VSW50NjQoKSwgcmVjZWl2ZXIpOwogICAgIH0KICAg
ICAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgICB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNl
aXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBPYmplY3RJZGVu
dGlmaWVyPFQ+IGRlc3RpbmF0aW9uSUQpCisgICAgdm9pZCByZW1vdmVNZXNzYWdlUmVjZWl2ZXIo
SVBDOjpSZWNlaXZlck5hbWUgbWVzc2FnZVJlY2VpdmVyTmFtZSwgT2JqZWN0SWRlbnRpZmllcjxU
PiBkZXN0aW5hdGlvbklEKQogICAgIHsKICAgICAgICAgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKG1l
c3NhZ2VSZWNlaXZlck5hbWUsIGRlc3RpbmF0aW9uSUQudG9VSW50NjQoKSk7CiAgICAgfQpAQCAt
NDE4LDcgKzQxOCw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgc3RhdGljIHZvaWQgc2V0SW52
YWxpZE1lc3NhZ2VDYWxsYmFjayh2b2lkICgqKShXS1N0cmluZ1JlZikpOwotICAgIHN0YXRpYyB2
b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShjb25zdCBJUEM6OlN0cmluZ1JlZmVyZW5jZSYg
bWVzc2FnZVJlY2VpdmVyTmFtZSwgY29uc3QgSVBDOjpTdHJpbmdSZWZlcmVuY2UmIG1lc3NhZ2VO
YW1lKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpNZXNz
YWdlTmFtZSk7CiAKICAgICBib29sIGlzVVJMS25vd25IU1RTSG9zdChjb25zdCBTdHJpbmcmIHVy
bFN0cmluZykgY29uc3Q7CiAgICAgdm9pZCByZXNldEhTVFNIb3N0cygpOwpJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCShyZXZpc2lvbiAyNjEyMzgp
CisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNjEsOCArMTYxLDggQEAgY2xhc3MgVUlQcm94eUZvckNhcHR1cmUgZmluYWwg
OiBwdWJsaWMgVQogcHVibGljOgogICAgIGV4cGxpY2l0IFVJUHJveHlGb3JDYXB0dXJlKFdlYlBy
b2Nlc3NQcm94eSYgcHJvY2VzcykgOiBtX3Byb2Nlc3MocHJvY2VzcykgeyB9CiBwcml2YXRlOgot
ICAgIHZvaWQgYWRkTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VS
ZWNlaXZlck5hbWUsIElQQzo6TWVzc2FnZVJlY2VpdmVyJiByZWNlaXZlcikgZmluYWwgeyBtX3By
b2Nlc3MuYWRkTWVzc2FnZVJlY2VpdmVyKG1lc3NhZ2VSZWNlaXZlck5hbWUsIHJlY2VpdmVyKTsg
fQotICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1l
c3NhZ2VSZWNlaXZlck5hbWUpIGZpbmFsIHsgbV9wcm9jZXNzLnJlbW92ZU1lc3NhZ2VSZWNlaXZl
cihtZXNzYWdlUmVjZWl2ZXJOYW1lKTsgfQorICAgIHZvaWQgYWRkTWVzc2FnZVJlY2VpdmVyKElQ
Qzo6UmVjZWl2ZXJOYW1lIG1lc3NhZ2VSZWNlaXZlck5hbWUsIElQQzo6TWVzc2FnZVJlY2VpdmVy
JiByZWNlaXZlcikgZmluYWwgeyBtX3Byb2Nlc3MuYWRkTWVzc2FnZVJlY2VpdmVyKG1lc3NhZ2VS
ZWNlaXZlck5hbWUsIHJlY2VpdmVyKTsgfQorICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVy
KElQQzo6UmVjZWl2ZXJOYW1lIG1lc3NhZ2VSZWNlaXZlck5hbWUpIGZpbmFsIHsgbV9wcm9jZXNz
LnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1lKTsgfQogICAgIElQQzo6
Q29ubmVjdGlvbiYgY29ubmVjdGlvbigpIGZpbmFsIHsgcmV0dXJuICptX3Byb2Nlc3MuY29ubmVj
dGlvbigpOyB9CiAgICAgTG9nZ2VyJiBsb2dnZXIoKSBmaW5hbAogICAgIHsKQEAgLTM1Miw3ICsz
NTIsNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6cGxhdGZvcm1HZXRMYXVuY2hPCiBib29sIFdl
YlByb2Nlc3NQcm94eTo6c2hvdWxkU2VuZFBlbmRpbmdNZXNzYWdlKGNvbnN0IFBlbmRpbmdNZXNz
YWdlJiBtZXNzYWdlKQogewogI2lmIEhBVkUoU0FOREJPWF9JU1NVRV9SRUFEX0VYVEVOU0lPTl9U
T19QUk9DRVNTX0JZX0FVRElUX1RPS0VOKQotICAgIGlmIChtZXNzYWdlLmVuY29kZXItPm1lc3Nh
Z2VOYW1lKCkgPT0gIkxvYWRSZXF1ZXN0V2FpdGluZ0ZvclByb2Nlc3NMYXVuY2giKSB7CisgICAg
aWYgKG1lc3NhZ2UuZW5jb2Rlci0+bWVzc2FnZU5hbWUoKSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpX
ZWJQYWdlX0xvYWRSZXF1ZXN0V2FpdGluZ0ZvclByb2Nlc3NMYXVuY2gpIHsKICAgICAgICAgYXV0
byBidWZmZXIgPSBtZXNzYWdlLmVuY29kZXItPmJ1ZmZlcigpOwogICAgICAgICBhdXRvIGJ1ZmZl
clNpemUgPSBtZXNzYWdlLmVuY29kZXItPmJ1ZmZlclNpemUoKTsKICAgICAgICAgc3RkOjp1bmlx
dWVfcHRyPElQQzo6RGVjb2Rlcj4gZGVjb2RlciA9IG1ha2VVbmlxdWU8SVBDOjpEZWNvZGVyPihi
dWZmZXIsIGJ1ZmZlclNpemUsIG51bGxwdHIsIFZlY3RvcjxJUEM6OkF0dGFjaG1lbnQ+IHsgfSk7
CkBAIC04NDEsMTEgKzg0MSwxMSBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc0RpZFRl
cm1pbmF0CiAgICAgfQogfQogCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkUmVjZWl2ZUludmFs
aWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpTdHJpbmdSZWZlcmVu
Y2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUp
Cit2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpNZXNzYWdlTmFtZSBtZXNzYWdlTmFtZSkKIHsKLSAg
ICBsb2dJbnZhbGlkTWVzc2FnZShjb25uZWN0aW9uLCBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBtZXNz
YWdlTmFtZSk7CisgICAgbG9nSW52YWxpZE1lc3NhZ2UoY29ubmVjdGlvbiwgbWVzc2FnZU5hbWUp
OwogCi0gICAgV2ViUHJvY2Vzc1Bvb2w6OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShtZXNzYWdl
UmVjZWl2ZXJOYW1lLCBtZXNzYWdlTmFtZSk7CisgICAgV2ViUHJvY2Vzc1Bvb2w6OmRpZFJlY2Vp
dmVJbnZhbGlkTWVzc2FnZShtZXNzYWdlTmFtZSk7CiAKICAgICAvLyBUZXJtaW5hdGUgdGhlIFdl
YkNvbnRlbnQgcHJvY2Vzcy4KICAgICB0ZXJtaW5hdGUoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCShyZXZpc2lvbiAyNjEyMzgpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtNDUz
LDcgKzQ1Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVT
eW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9w
dHI8SVBDOjpFbmNvZGVyPiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkQ2xvc2UoSVBDOjpDb25u
ZWN0aW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwg
SVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUpIG92ZXJyaWRlOworICAgIHZvaWQgZGlk
UmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZU5hbWUp
IG92ZXJyaWRlOwogCiAgICAgLy8gUmVzcG9uc2l2ZW5lc3NUaW1lcjo6Q2xpZW50CiAgICAgdm9p
ZCBkaWRCZWNvbWVVbnJlc3BvbnNpdmUoKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdl
clByb3h5LmgJKHJldmlzaW9uIDI2MTIzOCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtNTEs
OCArNTEsOCBAQCBwdWJsaWM6CiAgICAgY2xhc3MgQ29ubmVjdGlvblByb3h5IHsKICAgICBwdWJs
aWM6CiAgICAgICAgIHZpcnR1YWwgfkNvbm5lY3Rpb25Qcm94eSgpID0gZGVmYXVsdDsKLSAgICAg
ICAgdmlydHVhbCB2b2lkIGFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSwg
SVBDOjpNZXNzYWdlUmVjZWl2ZXImKSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCByZW1vdmVN
ZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UpID0gMDsKKyAgICAgICAgdmlydHVh
bCB2b2lkIGFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlJlY2VpdmVyTmFtZSwgSVBDOjpNZXNzYWdl
UmVjZWl2ZXImKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCByZW1vdmVNZXNzYWdlUmVjZWl2
ZXIoSVBDOjpSZWNlaXZlck5hbWUpID0gMDsKICAgICAgICAgdmlydHVhbCBJUEM6OkNvbm5lY3Rp
b24mIGNvbm5lY3Rpb24oKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgYm9vbCB3aWxsU3RhcnRDYXB0
dXJlKFdlYkNvcmU6OkNhcHR1cmVEZXZpY2U6OkRldmljZVR5cGUpIGNvbnN0ID0gMDsKICAgICAg
ICAgdmlydHVhbCBMb2dnZXImIGxvZ2dlcigpID0gMDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCShyZXZpc2lvbiAyNjEy
MzgpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5t
bQkod29ya2luZyBjb3B5KQpAQCAtMjg0LDE2ICsyODQsNiBAQCBjb25zdCBTdHJpbmcmIFdlYlBh
Z2VQcm94eTo6cGF5bWVudENvb3JkCiAgICAgcmV0dXJuIHdlYnNpdGVEYXRhU3RvcmUoKS5jb25m
aWd1cmF0aW9uKCkuc291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyKCk7CiB9CiAK
LXZvaWQgV2ViUGFnZVByb3h5OjpwYXltZW50Q29vcmRpbmF0b3JBZGRNZXNzYWdlUmVjZWl2ZXIo
V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmLCBjb25zdCBJUEM6OlN0cmluZ1JlZmVyZW5jZSYg
bWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImIG1lc3NhZ2VSZWNlaXZl
cikKLXsKLSAgICBwcm9jZXNzKCkuYWRkTWVzc2FnZVJlY2VpdmVyKG1lc3NhZ2VSZWNlaXZlck5h
bWUsIG1fd2ViUGFnZUlELCBtZXNzYWdlUmVjZWl2ZXIpOwotfQotCi12b2lkIFdlYlBhZ2VQcm94
eTo6cGF5bWVudENvb3JkaW5hdG9yUmVtb3ZlTWVzc2FnZVJlY2VpdmVyKFdlYlBheW1lbnRDb29y
ZGluYXRvclByb3h5JiwgY29uc3QgSVBDOjpTdHJpbmdSZWZlcmVuY2UmIG1lc3NhZ2VSZWNlaXZl
ck5hbWUpCi17Ci0gICAgcHJvY2VzcygpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihtZXNzYWdlUmVj
ZWl2ZXJOYW1lLCBtX3dlYlBhZ2VJRCk7Ci19Ci0KICNlbmRpZgogCiAjaWYgRU5BQkxFKFNQRUVD
SF9TWU5USEVTSVMpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vz
c1Byb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HUFUvR1BV
UHJvY2Vzc1Byb3h5LmNwcAkocmV2aXNpb24gMjYxMjM4KQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxMSwxMSAr
MjExLDExIEBAIHZvaWQgR1BVUHJvY2Vzc1Byb3h5OjpkaWRDbG9zZShJUEM6OkNvbm4KICAgICBn
cHVQcm9jZXNzQ3Jhc2hlZCgpOwogfQogCi12b2lkIEdQVVByb2Nlc3NQcm94eTo6ZGlkUmVjZWl2
ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpTdHJpbmdS
ZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2Fn
ZU5hbWUpCit2b2lkIEdQVVByb2Nlc3NQcm94eTo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpNZXNzYWdlTmFtZSBtZXNzYWdlTmFtZSkK
IHsKLSAgICBsb2dJbnZhbGlkTWVzc2FnZShjb25uZWN0aW9uLCBtZXNzYWdlUmVjZWl2ZXJOYW1l
LCBtZXNzYWdlTmFtZSk7CisgICAgbG9nSW52YWxpZE1lc3NhZ2UoY29ubmVjdGlvbiwgbWVzc2Fn
ZU5hbWUpOwogCi0gICAgV2ViUHJvY2Vzc1Bvb2w6OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZSht
ZXNzYWdlUmVjZWl2ZXJOYW1lLCBtZXNzYWdlTmFtZSk7CisgICAgV2ViUHJvY2Vzc1Bvb2w6OmRp
ZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShtZXNzYWdlTmFtZSk7CiAKICAgICAvLyBUZXJtaW5hdGUg
dGhlIEdQVSBwcm9jZXNzLgogICAgIHRlcm1pbmF0ZSgpOwpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkuaAkocmV2aXNpb24gMjYxMjM4KQorKysg
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xMDAsNyArMTAwLDcgQEAgcHJpdmF0ZToKICAgICAvLyBJUEM6OkNvbm5lY3Rpb246
OkNsaWVudAogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBD
OjpEZWNvZGVyJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24m
KSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6OlN0
cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZl
SW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlTmFtZSkgb3ZlcnJp
ZGU7CiAKICNpZiBIQVZFKFZJU0lCSUxJVFlfUFJPUEFHQVRJT05fVklFVykKICAgICB2b2lkIGRp
ZENyZWF0ZUNvbnRleHRGb3JWaXNpYmlsaXR5UHJvcGFnYXRpb24oTGF5ZXJIb3N0aW5nQ29udGV4
dElEKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAkocmV2aXNpb24gMjYxMjM4KQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjgwLDkgKzI4MCw5IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkQ2xv
c2UoSVBDOjoKICAgICBuZXR3b3JrUHJvY2Vzc0NyYXNoZWQoKTsKIH0KIAotdm9pZCBOZXR3b3Jr
UHJvY2Vzc1Byb3h5OjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBj
b25uZWN0aW9uLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6
OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZSkKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6
ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBD
OjpNZXNzYWdlTmFtZSBtZXNzYWdlTmFtZSkKIHsKLSAgICBsb2dJbnZhbGlkTWVzc2FnZShjb25u
ZWN0aW9uLCBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBtZXNzYWdlTmFtZSk7CisgICAgbG9nSW52YWxp
ZE1lc3NhZ2UoY29ubmVjdGlvbiwgbWVzc2FnZU5hbWUpOwogICAgIHRlcm1pbmF0ZSgpOwogfQog
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuaAkocmV2aXNpb24gMjYxMjM4KQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTI0
Nyw3ICsyNDcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZl
U3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVf
cHRyPElQQzo6RW5jb2Rlcj4mKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZENsb3NlKElQQzo6Q29u
bmVjdGlvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUs
IElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lKSBvdmVycmlkZTsKKyAgICB2b2lkIGRp
ZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VOYW1l
KSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTmV0d29ya1Byb2Nlc3NQcm94eU1l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQ
Qzo6RW5jb2Rlcj4mKTsKIAogICAgIC8vIE1lc3NhZ2UgaGFuZGxlcnMKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5j
cHAJKHJldmlzaW9uIDI2MTIzOCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luUHJvY2Vzc1Byb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjE0LDkgKzIxNCw5IEBA
IHZvaWQgUGx1Z2luUHJvY2Vzc1Byb3h5OjpkaWRDbG9zZShJUEM6OkMKICAgICBwbHVnaW5Qcm9j
ZXNzQ3Jhc2hlZE9yRmFpbGVkVG9MYXVuY2goKTsKIH0KIAotdm9pZCBQbHVnaW5Qcm9jZXNzUHJv
eHk6OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24s
IElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIElQQzo6U3RyaW5nUmVm
ZXJlbmNlIG1lc3NhZ2VOYW1lKQordm9pZCBQbHVnaW5Qcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVJ
bnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6TWVzc2FnZU5h
bWUgbWVzc2FnZU5hbWUpCiB7Ci0gICAgbG9nSW52YWxpZE1lc3NhZ2UoY29ubmVjdGlvbiwgbWVz
c2FnZVJlY2VpdmVyTmFtZSwgbWVzc2FnZU5hbWUpOworICAgIGxvZ0ludmFsaWRNZXNzYWdlKGNv
bm5lY3Rpb24sIG1lc3NhZ2VOYW1lKTsKICAgICB0ZXJtaW5hdGUoKTsKIH0KIApJbmRleDogU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94
eS5oCShyZXZpc2lvbiAyNjEyMzgpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblByb2Nlc3NQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsNyArMTA0LDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
LCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIG92ZXJyaWRl
OwogCiAgICAgdm9pZCBkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mKSBvdmVycmlkZTsKLSAgICB2
b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OlN0cmlu
Z1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNz
YWdlTmFtZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlTmFtZSkgb3ZlcnJpZGU7CiAKICAgICAvLyBQcm9j
ZXNzTGF1bmNoZXI6OkNsaWVudAogICAgIHZvaWQgZGlkRmluaXNoTGF1bmNoaW5nKFByb2Nlc3NM
YXVuY2hlciosIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcikgb3ZlcnJpZGU7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCShyZXZpc2lvbiAyNjEyMzgpCisr
KyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTc4Miw3ICs3ODIsNyBAQCB2b2lkIFdlYlByb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKElQ
Qzo6CiAgICAgfQogI2VuZGlmCiAKLSAgICBMT0dfRVJST1IoIlVuaGFuZGxlZCB3ZWIgcHJvY2Vz
cyBtZXNzYWdlICclczo6JXMnIChkZXN0aW5hdGlvbjogJSIgUFJJdTY0ICIgcGlkOiAlZCkiLCBk
ZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKS50b1N0cmluZygpLmRhdGEoKSwgZGVjb2Rlci5t
ZXNzYWdlTmFtZSgpLnRvU3RyaW5nKCkuZGF0YSgpLCBkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSwg
c3RhdGljX2Nhc3Q8aW50PihnZXRDdXJyZW50UHJvY2Vzc0lEKCkpKTsKKyAgICBMT0dfRVJST1Io
IlVuaGFuZGxlZCB3ZWIgcHJvY2VzcyBtZXNzYWdlICclcycgKGRlc3RpbmF0aW9uOiAlIiBQUkl1
NjQgIiBwaWQ6ICVkKSIsIGRlc2NyaXB0aW9uKGRlY29kZXIubWVzc2FnZU5hbWUoKSksIGRlY29k
ZXIuZGVzdGluYXRpb25JRCgpLCBzdGF0aWNfY2FzdDxpbnQ+KGdldEN1cnJlbnRQcm9jZXNzSUQo
KSkpOwogfQogCiBXZWJGcmFtZSogV2ViUHJvY2Vzczo6d2ViRnJhbWUoRnJhbWVJZGVudGlmaWVy
IGZyYW1lSUQpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVBy
b2Nlc3NDb25uZWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcAkocmV2aXNpb24gMjYxMjM4KQorKysgU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTczLDcgKzczLDcgQEAgdm9pZCBHUFVQcm9jZXNzQ29ubmVjdGlvbjo6ZGlk
Q2xvc2UoSVBDOgogewogfQogCi12b2lkIEdQVVByb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZl
SW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpTdHJpbmdSZWZlcmVuY2UsIElQ
Qzo6U3RyaW5nUmVmZXJlbmNlKQordm9pZCBHUFVQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2
ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZU5hbWUpCiB7CiB9
CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rp
b24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nl
c3NDb25uZWN0aW9uLmgJKHJldmlzaW9uIDI2MTIzOCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtODAsNyAr
ODAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6
OkRlY29kZXImKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYp
IGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIElQQzo6U3RyaW5n
UmVmZXJlbmNlIG1lc3NhZ2VOYW1lKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVJbnZh
bGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VOYW1lKSBvdmVycmlkZTsK
IAogICAgIGJvb2wgZGlzcGF0Y2hNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2Rl
ciYpOwogICAgIGJvb2wgZGlzcGF0Y2hTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6
OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpOwpJbmRleDogU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3IuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3Rvci5oCShyZXZp
c2lvbiAyNjEyMzgpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYklu
c3BlY3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKIAogICAg
IC8vIElQQzo6Q29ubmVjdGlvbjo6Q2xpZW50CiAgICAgdm9pZCBkaWRDbG9zZShJUEM6OkNvbm5l
Y3Rpb24mKSBvdmVycmlkZSB7IGNsb3NlKCk7IH0KLSAgICB2b2lkIGRpZFJlY2VpdmVJbnZhbGlk
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSwgSVBDOjpTdHJp
bmdSZWZlcmVuY2UpIG92ZXJyaWRlIHsgY2xvc2UoKTsgfQorICAgIHZvaWQgZGlkUmVjZWl2ZUlu
dmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZU5hbWUpIG92ZXJyaWRl
IHsgY2xvc2UoKTsgfQogCiAgICAgdm9pZCBzaG93KCk7CiAgICAgdm9pZCBjbG9zZSgpOwpJbmRl
eDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVj
dG9yVUkuaAkocmV2aXNpb24gMjYxMjM4KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
c3BlY3Rvci9XZWJJbnNwZWN0b3JVSS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Miw3ICs1Miw3IEBA
IHB1YmxpYzoKIAogICAgIC8vIElQQzo6Q29ubmVjdGlvbjo6Q2xpZW50CiAgICAgdm9pZCBkaWRD
bG9zZShJUEM6OkNvbm5lY3Rpb24mKSBvdmVycmlkZSB7IC8qIERvIG5vdGhpbmcsIHRoZSBpbnNw
ZWN0ZWQgcGFnZSBwcm9jZXNzIG1heSBoYXZlIGNyYXNoZWQgYW5kIG1heSBiZSBnZXR0aW5nIHJl
cGxhY2VkLiAqLyB9Ci0gICAgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiwgSVBDOjpTdHJpbmdSZWZlcmVuY2UsIElQQzo6U3RyaW5nUmVmZXJlbmNlKSBvdmVy
cmlkZSB7IGNsb3NlV2luZG93KCk7IH0KKyAgICB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VOYW1lKSBvdmVycmlkZSB7IGNsb3NlV2lu
ZG93KCk7IH0KIAogICAgIC8vIENhbGxlZCBieSBXZWJJbnNwZWN0b3JVSSBtZXNzYWdlcwogICAg
IHZvaWQgZXN0YWJsaXNoQ29ubmVjdGlvbihXZWJQYWdlUHJveHlJZGVudGlmaWVyIGluc3BlY3Rl
ZFBhZ2VJZGVudGlmaWVyLCBjb25zdCBEZWJ1Z2dhYmxlSW5mb0RhdGEmLCBib29sIHVuZGVyVGVz
dCwgdW5zaWduZWQgaW5zcGVjdGlvbkxldmVsKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
LmNwcAkocmV2aXNpb24gMjYxMjM4KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjExLDcg
KzIxMSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRDbG9zZSgKICNlbmRp
ZgogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZUludmFsaWRN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6U3RyaW5nUmVmZXJlbmNlLCBJUEM6OlN0cmlu
Z1JlZmVyZW5jZSkKK3ZvaWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlSW52
YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlTmFtZSkKIHsKIH0KIApJ
bmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgJKHJldmlzaW9uIDI2MTIzOCkKKysrIFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC05OCw3ICs5OCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZl
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKICAgICB2
b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXIm
LCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlk
Q2xvc2UoSVBDOjpDb25uZWN0aW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlSW52
YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2Fn
ZVJlY2VpdmVyTmFtZSwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUpIG92ZXJyaWRl
OworICAgIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQ
Qzo6TWVzc2FnZU5hbWUpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBkaWRGaW5pc2hQaW5nTG9hZCh1
aW50NjRfdCBwaW5nTG9hZElkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlRXJyb3ImJiwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYmKTsKICAgICB2b2lkIGRpZEZpbmlzaFByZWNvbm5lY3Rp
b24odWludDY0X3QgcHJlY29ubmVjdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlRXJy
b3ImJik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9j
ZXNzQ29ubmVjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCShyZXZpc2lvbiAyNjEyMzgpCisr
KyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlv
bi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyOCw3ICsxMjgsNyBAQCB2b2lkIFBsdWdpblByb2Nl
c3NDb25uZWN0aW9uOjpkaWRDbG9zZShJCiAgICAgfQogfQogCi12b2lkIFBsdWdpblByb2Nlc3ND
b25uZWN0aW9uOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBD
OjpTdHJpbmdSZWZlcmVuY2UsIElQQzo6U3RyaW5nUmVmZXJlbmNlKQordm9pZCBQbHVnaW5Qcm9j
ZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYs
IElQQzo6TWVzc2FnZU5hbWUpCiB7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24uaAkocmV2
aXNpb24gMjYxMjM4KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
UHJvY2Vzc0Nvbm5lY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNjYsNyArNjYsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpE
ZWNvZGVyJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4m
KSBvdmVycmlkZTsKICAgICB2b2lkIGRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYpIG92ZXJyaWRl
OwotICAgIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQ
Qzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIElQQzo6U3RyaW5nUmVmZXJl
bmNlIG1lc3NhZ2VOYW1lKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VOYW1lKSBvdmVycmlkZTsKIAogICAg
IC8vIE1lc3NhZ2UgaGFuZGxlcnMuCiAgICAgdm9pZCBkaWRSZWNlaXZlU3luY1BsdWdpblByb2Nl
c3NDb25uZWN0aW9uTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6
OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxh
eWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQkocmV2aXNpb24gMjYxMjM4KQor
KysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90
ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNzksNyArMzc5LDcg
QEAgdm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6dXBkYXRlUgogICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OldpbGxDb21taXRMYXllclRy
ZWUobGF5ZXJUcmFuc2FjdGlvbi50cmFuc2FjdGlvbklEKCkpKTsKIAogICAgIE1lc3NhZ2VzOjpS
ZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5OjpDb21taXRMYXllclRyZWUgbWVzc2FnZShs
YXllclRyYW5zYWN0aW9uLCBzY3JvbGxpbmdUcmFuc2FjdGlvbik7Ci0gICAgYXV0byBjb21taXRF
bmNvZGVyID0gbWFrZVVuaXF1ZTxJUEM6OkVuY29kZXI+KE1lc3NhZ2VzOjpSZW1vdGVMYXllclRy
ZWVEcmF3aW5nQXJlYVByb3h5OjpDb21taXRMYXllclRyZWU6OnJlY2VpdmVyTmFtZSgpLCBNZXNz
YWdlczo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6Q29tbWl0TGF5ZXJUcmVlOjpu
YW1lKCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBhdXRvIGNvbW1pdEVuY29kZXIg
PSBtYWtlVW5pcXVlPElQQzo6RW5jb2Rlcj4oTWVzc2FnZXM6OlJlbW90ZUxheWVyVHJlZURyYXdp
bmdBcmVhUHJveHk6OkNvbW1pdExheWVyVHJlZTo6bmFtZSgpLCBtX2lkZW50aWZpZXIudG9VSW50
NjQoKSk7CiAgICAgY29tbWl0RW5jb2Rlci0+ZW5jb2RlKG1lc3NhZ2UuYXJndW1lbnRzKCkpOwog
CiAgICAgLy8gRklYTUU6IE1vdmUgYWxsIGJhY2tpbmcgc3RvcmUgZmx1c2hpbmcgbWFuYWdlbWVu
dCB0byBSZW1vdGVMYXllckJhY2tpbmdTdG9yZUNvbGxlY3Rpb24uCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398644</attachid>
            <date>2020-05-06 12:14:04 -0700</date>
            <delta_ts>2020-05-06 15:54:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211112-20200506121403.patch</filename>
            <type>text/plain</type>
            <size>306167</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNjEyMzgpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDIwLTA1LTA2ICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVkdWNlIElQQyBvdmVyaGVhZCBm
b3IgbWVzc2FnZSByZWNlaXZlciBuYW1lIGFuZCBtZXNzYWdlIG5hbWUgdG8gMiBieXRlcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjExMTEyCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvRW51bVRy
YWl0cy5oOgorCiAyMDIwLTA1LTA2ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAog
ICAgICAgICBSZW1vdmUgbm93LXVubmVlZGVkIFVTRShHUkFNTUFSX0NIRUNLSU5HKQpJbmRleDog
U291cmNlL1dURi93dGYvRW51bVRyYWl0cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3Rm
L0VudW1UcmFpdHMuaAkocmV2aXNpb24gMjYxMjM4KQorKysgU291cmNlL1dURi93dGYvRW51bVRy
YWl0cy5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw5IEBAIHN0cnVjdCBFbnVtVmFsdWVD
aGVja2VyPFQsIEVudW1WYWx1ZXM8RT4KICAgICB9CiB9OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBF
LCB0eXBlbmFtZSBULCBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfZW51bTxFPjo6dmFsdWUgJiYg
IXN0ZDo6aXNfc2FtZTxzdGQ6OnVuZGVybHlpbmdfdHlwZV90PEU+LCBib29sPjo6dmFsdWU+KiA9
IG51bGxwdHI+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBjbGFzcyBIYXNDdXN0b21Jc1ZhbGlkRW51
bSA6IHB1YmxpYyBzdGQ6OmZhbHNlX3R5cGUgeyB9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBFLCB0
eXBlbmFtZSBULCBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfZW51bTxFPjo6dmFsdWUgJiYgIXN0
ZDo6aXNfc2FtZTxzdGQ6OnVuZGVybHlpbmdfdHlwZV90PEU+LCBib29sPjo6dmFsdWUgJiYgIUhh
c0N1c3RvbUlzVmFsaWRFbnVtPEU+Ojp2YWx1ZT4qID0gbnVsbHB0cj4KIGNvbnN0ZXhwciBib29s
IGlzVmFsaWRFbnVtKFQgdCkKIHsKICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihUKSA+PSBzdGQ6
OnVuZGVybHlpbmdfdHlwZV90PEU+KCksICJJbnRlZ3JhbCB0eXBlIG11c3QgYmUgYXQgbGVhc3Qg
dGhlIHNpemUgb2YgdGhlIHVuZGVybHlpbmcgZW51bSB0eXBlIik7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2
aXNpb24gMjYxMjM4KQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwyODYgQEAKKzIwMjAtMDUtMDYgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0
ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZWR1Y2UgSVBDIG92ZXJoZWFkIGZvciBtZXNz
YWdlIHJlY2VpdmVyIG5hbWUgYW5kIG1lc3NhZ2UgbmFtZSB0byAyIGJ5dGVzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTExMTIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIERlcml2ZWRTb3VyY2VzLW91
dHB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAg
ICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdl
KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNl
aXZlTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpkaWRSZWNlaXZlU3luY01lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Byb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Byb2Nlc3M6OmRpZFJlY2VpdmVTeW5jTWVzc2FnZSk6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvaW9zL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzSU9TLm1tOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cGF5bWVudENvb3JkaW5hdG9y
QWRkTWVzc2FnZVJlY2VpdmVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnBheW1lbnRDb29yZGluYXRvclJlbW92ZU1lc3NhZ2VSZWNl
aXZlcik6IERlbGV0ZWQuCisgICAgICAgICogUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwOgor
ICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpXYWl0Rm9yTWVzc2FnZVN0YXRlOjpXYWl0Rm9yTWVz
c2FnZVN0YXRlKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6YWRkV29ya1F1ZXVlTWVzc2Fn
ZVJlY2VpdmVyKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6cmVtb3ZlV29ya1F1ZXVlTWVz
c2FnZVJlY2VpdmVyKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6ZGlzcGF0Y2hXb3JrUXVl
dWVNZXNzYWdlUmVjZWl2ZXJNZXNzYWdlKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6YWRk
VGhyZWFkTWVzc2FnZVJlY2VpdmVyKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6cmVtb3Zl
VGhyZWFkTWVzc2FnZVJlY2VpdmVyKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6ZGlzcGF0
Y2hUaHJlYWRNZXNzYWdlUmVjZWl2ZXJNZXNzYWdlKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlv
bjo6Y3JlYXRlU3luY01lc3NhZ2VFbmNvZGVyKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6
c2VuZE1lc3NhZ2UpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjp3YWl0Rm9yTWVzc2FnZSk6
CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnNlbmRTeW5jTWVzc2FnZSk6CisgICAgICAgIChJ
UEM6OkNvbm5lY3Rpb246OndhaXRGb3JTeW5jUmVwbHkpOgorICAgICAgICAoSVBDOjpDb25uZWN0
aW9uOjpwcm9jZXNzSW5jb21pbmdNZXNzYWdlKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6
ZGlzcGF0Y2hTeW5jTWVzc2FnZSk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OmRpc3BhdGNo
RGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6ZGlz
cGF0Y2hNZXNzYWdlKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6ZGlzcGF0Y2hNZXNzYWdl
VG9Xb3JrUXVldWVSZWNlaXZlcik6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OmRpc3BhdGNo
TWVzc2FnZVRvVGhyZWFkUmVjZWl2ZXIpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpkaXNw
YXRjaEluY29taW5nTWVzc2FnZXMpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9Db25uZWN0aW9u
Lmg6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnNlbmQpOgorICAgICAgICAoSVBDOjpDb25u
ZWN0aW9uOjpzZW5kV2l0aEFzeW5jUmVwbHkpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpz
ZW5kU3luYyk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OndhaXRGb3JBbmREaXNwYXRjaElt
bWVkaWF0ZWx5KToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvRGVjb2Rlci5jcHA6CisgICAgICAg
ICogUGxhdGZvcm0vSVBDL0RlY29kZXIuaDoKKyAgICAgICAgKElQQzo6RGVjb2Rlcjo6bWVzc2Fn
ZVJlY2VpdmVyTmFtZSBjb25zdCk6CisgICAgICAgIChJUEM6OkRlY29kZXI6Om1lc3NhZ2VOYW1l
IGNvbnN0KToKKyAgICAgICAgKElQQzo6RGVjb2Rlcjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6
RGVjb2Rlcjo6b3BlcmF0b3I+Pik6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0VuY29kZXIuY3Bw
OgorICAgICAgICAoSVBDOjpFbmNvZGVyOjpFbmNvZGVyKToKKyAgICAgICAgKElQQzo6RW5jb2Rl
cjo6ZW5jb2RlSGVhZGVyKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvRW5jb2Rlci5oOgorICAg
ICAgICAqIFBsYXRmb3JtL0lQQy9IYW5kbGVNZXNzYWdlLmg6CisgICAgICAgIChJUEM6OmhhbmRs
ZU1lc3NhZ2VBc3luYyk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL01lc3NhZ2VSZWNlaXZlck1h
cC5jcHA6CisgICAgICAgIChJUEM6Ok1lc3NhZ2VSZWNlaXZlck1hcDo6YWRkTWVzc2FnZVJlY2Vp
dmVyKToKKyAgICAgICAgKElQQzo6TWVzc2FnZVJlY2VpdmVyTWFwOjpyZW1vdmVNZXNzYWdlUmVj
ZWl2ZXIpOgorICAgICAgICAoSVBDOjpNZXNzYWdlUmVjZWl2ZXJNYXA6OmRpc3BhdGNoTWVzc2Fn
ZSk6CisgICAgICAgIChJUEM6Ok1lc3NhZ2VSZWNlaXZlck1hcDo6ZGlzcGF0Y2hTeW5jTWVzc2Fn
ZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL01lc3NhZ2VSZWNlaXZlck1hcC5oOgorICAgICAg
ICAqIFBsYXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVyLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBD
L2NvY29hL0Nvbm5lY3Rpb25Db2NvYS5tbToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6b3Bl
bik6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnNlbmRNZXNzYWdlKToKKyAgICAgICAgKElQ
Qzo6Q29ubmVjdGlvbjo6c2VuZE91dGdvaW5nTWVzc2FnZSk6CisgICAgICAgIChJUEM6OkNvbm5l
Y3Rpb246OnJlY2VpdmVTb3VyY2VFdmVudEhhbmRsZXIpOgorICAgICAgICAqIFBsYXRmb3JtL0lQ
Qy9jb2NvYS9NYWNoTWVzc2FnZS5jcHA6CisgICAgICAgIChJUEM6Ok1hY2hNZXNzYWdlOjpjcmVh
dGUpOgorICAgICAgICAoSVBDOjpNYWNoTWVzc2FnZTo6TWFjaE1lc3NhZ2UpOgorICAgICAgICAq
IFBsYXRmb3JtL0lQQy9jb2NvYS9NYWNoTWVzc2FnZS5oOgorICAgICAgICAoSVBDOjpNYWNoTWVz
c2FnZTo6bWVzc2FnZVJlY2VpdmVyTmFtZSBjb25zdCk6CisgICAgICAgIChJUEM6Ok1hY2hNZXNz
YWdlOjptZXNzYWdlTmFtZSBjb25zdCk6CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9XZWJQcm9j
ZXNzQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDb25uZWN0aW9u
OjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UpOgorICAgICAgICAqIFBsdWdpblByb2Nlc3MvV2Vi
UHJvY2Vzc0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBTY3JpcHRzL01ha2VmaWxlOgorICAgICAg
ICAqIFNjcmlwdHMvZ2VuZXJhdGUtbWVzc2FnZS1yZWNlaXZlci5weToKKyAgICAgICAgKG1haW4p
OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L0xlZ2FjeU1lc3NhZ2VzLWV4cGVjdGVkLmg6IFJl
bW92ZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXQvTGVnYWN5TWVzc2FnZXNSZXBsaWVzLWV4
cGVjdGVkLmg6IFJlbW92ZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXQvTWVzc2FnZU5hbWVz
LmNwcDogQWRkZWQuCisgICAgICAgIChJUEM6OmRlc2NyaXB0aW9uKToKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdC9NZXNzYWdlTmFtZXMuaDogQWRkZWQuCisgICAgICAgIChJUEM6OnJlY2VpdmVy
TmFtZSk6CisgICAgICAgIChXVEY6OmlzVmFsaWRFbnVtKToKKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdC9NZXNzYWdlUmVjZWl2ZXItZXhwZWN0ZWQuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFNj
cmlwdHMvd2Via2l0L01lc3NhZ2VSZWNlaXZlclN1cGVyY2xhc3MtZXhwZWN0ZWQuY3BwOiBSZW1v
dmVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L01lc3NhZ2VzLWV4cGVjdGVkLmg6IFJlbW92
ZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXQvTWVzc2FnZXNSZXBsaWVzLWV4cGVjdGVkLmg6
IFJlbW92ZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXQvTWVzc2FnZXNSZXBsaWVzU3VwZXJj
bGFzc1JlcGxpZXMtZXhwZWN0ZWQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dC9NZXNzYWdlc1N1cGVyY2xhc3MtZXhwZWN0ZWQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0LWxl
Z2FjeS1tZXNzYWdlcy5pbjogUmVtb3ZlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0
LWxlZ2FjeS5tZXNzYWdlcy5pbjogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9TY3JpcHRzL3dl
YmtpdC90ZXN0LWxlZ2FjeS1tZXNzYWdlcy5pbi4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC90
ZXN0LWxlZ2FjeU1lc3NhZ2VSZWNlaXZlci5jcHA6IEFkZGVkLgorICAgICAgICAoTWVzc2FnZXM6
OldlYlBhZ2U6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpzZW5kKToKKyAgICAgICAgKE1l
c3NhZ2VzOjpXZWJQYWdlOjpUZXN0TXVsdGlwbGVBdHRyaWJ1dGVzOjpzZW5kKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZTo6ZGlkUmVjZWl2ZVdlYlBhZ2VNZXNzYWdlKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZTo6ZGlkUmVjZWl2ZVN5bmNXZWJQYWdlTWVzc2FnZSk6CisgICAgICAgICog
U2NyaXB0cy93ZWJraXQvdGVzdC1sZWdhY3lNZXNzYWdlcy5oOiBBZGRlZC4KKyAgICAgICAgKE1l
c3NhZ2VzOjpXZWJQYWdlOjptZXNzYWdlUmVjZWl2ZXJOYW1lKToKKyAgICAgICAgKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpMb2FkVVJMOjpuYW1lKToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpM
b2FkVVJMOjpMb2FkVVJMKToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkVVJMOjph
cmd1bWVudHMgY29uc3QpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRTb21ldGhp
bmc6Om5hbWUpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRTb21ldGhpbmc6Okxv
YWRTb21ldGhpbmcpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRTb21ldGhpbmc6
OmFyZ3VtZW50cyBjb25zdCk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6VG91Y2hFdmVu
dDo6bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6VG91Y2hFdmVudDo6VG91Y2hF
dmVudCk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6VG91Y2hFdmVudDo6YXJndW1lbnRz
IGNvbnN0KToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpBZGRFdmVudDo6bmFtZSk6Cisg
ICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6QWRkRXZlbnQ6OkFkZEV2ZW50KToKKyAgICAgICAg
KE1lc3NhZ2VzOjpXZWJQYWdlOjpBZGRFdmVudDo6YXJndW1lbnRzIGNvbnN0KToKKyAgICAgICAg
KE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkU29tZXRoaW5nRWxzZTo6bmFtZSk6CisgICAgICAgIChN
ZXNzYWdlczo6V2ViUGFnZTo6TG9hZFNvbWV0aGluZ0Vsc2U6OkxvYWRTb21ldGhpbmdFbHNlKToK
KyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkU29tZXRoaW5nRWxzZTo6YXJndW1lbnRz
IGNvbnN0KToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZWNlaXZlUG9saWN5RGVj
aXNpb246Om5hbWUpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJlY2VpdmVQb2xp
Y3lEZWNpc2lvbjo6RGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKToKKyAgICAgICAgKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpEaWRSZWNlaXZlUG9saWN5RGVjaXNpb246OmFyZ3VtZW50cyBjb25zdCk6Cisg
ICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6Q2xvc2U6Om5hbWUpOgorICAgICAgICAoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkNsb3NlOjphcmd1bWVudHMgY29uc3QpOgorICAgICAgICAoTWVzc2FnZXM6
OldlYlBhZ2U6OlByZWZlcmVuY2VzRGlkQ2hhbmdlOjpuYW1lKToKKyAgICAgICAgKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpQcmVmZXJlbmNlc0RpZENoYW5nZTo6UHJlZmVyZW5jZXNEaWRDaGFuZ2UpOgor
ICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlByZWZlcmVuY2VzRGlkQ2hhbmdlOjphcmd1bWVu
dHMgY29uc3QpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlNlbmREb3VibGVBbmRGbG9h
dDo6bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6U2VuZERvdWJsZUFuZEZsb2F0
OjpTZW5kRG91YmxlQW5kRmxvYXQpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlNlbmRE
b3VibGVBbmRGbG9hdDo6YXJndW1lbnRzIGNvbnN0KToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpTZW5kSW50czo6bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6U2VuZElu
dHM6OlNlbmRJbnRzKToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZW5kSW50czo6YXJn
dW1lbnRzIGNvbnN0KToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpDcmVhdGVQbHVnaW46
Om5hbWUpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OkNyZWF0ZVBsdWdpbjo6Q3JlYXRl
UGx1Z2luKToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpDcmVhdGVQbHVnaW46OmFyZ3Vt
ZW50cyBjb25zdCk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6UnVuSmF2YVNjcmlwdEFs
ZXJ0OjpuYW1lKToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpSdW5KYXZhU2NyaXB0QWxl
cnQ6OlJ1bkphdmFTY3JpcHRBbGVydCk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6UnVu
SmF2YVNjcmlwdEFsZXJ0Ojphcmd1bWVudHMgY29uc3QpOgorICAgICAgICAoTWVzc2FnZXM6Oldl
YlBhZ2U6OkdldFBsdWdpbnM6Om5hbWUpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6Okdl
dFBsdWdpbnM6OkdldFBsdWdpbnMpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFBs
dWdpbnM6OmFyZ3VtZW50cyBjb25zdCk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6R2V0
UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246Om5hbWUpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBh
Z2U6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlv
bik6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rp
b246OmFyZ3VtZW50cyBjb25zdCk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6VGVzdE11
bHRpcGxlQXR0cmlidXRlczo6bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6VGVz
dE11bHRpcGxlQXR0cmlidXRlczo6YXJndW1lbnRzIGNvbnN0KToKKyAgICAgICAgKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpUZXN0UGFyYW1ldGVyQXR0cmlidXRlczo6bmFtZSk6CisgICAgICAgIChNZXNz
YWdlczo6V2ViUGFnZTo6VGVzdFBhcmFtZXRlckF0dHJpYnV0ZXM6OlRlc3RQYXJhbWV0ZXJBdHRy
aWJ1dGVzKToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0UGFyYW1ldGVyQXR0cmli
dXRlczo6YXJndW1lbnRzIGNvbnN0KToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUZW1w
bGF0ZVRlc3Q6Om5hbWUpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlRlbXBsYXRlVGVz
dDo6VGVtcGxhdGVUZXN0KToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUZW1wbGF0ZVRl
c3Q6OmFyZ3VtZW50cyBjb25zdCk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6U2V0Vmlk
ZW9MYXllcklEOjpuYW1lKToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRWaWRlb0xh
eWVySUQ6OlNldFZpZGVvTGF5ZXJJRCk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6U2V0
VmlkZW9MYXllcklEOjphcmd1bWVudHMgY29uc3QpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBh
Z2U6OkRpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uOjpuYW1lKToKKyAgICAgICAgKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpEaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbjo6RGlkQ3JlYXRlV2Vi
UHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZENyZWF0
ZVdlYlByb2Nlc3NDb25uZWN0aW9uOjphcmd1bWVudHMgY29uc3QpOgorICAgICAgICAoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkludGVycHJldEtleUV2ZW50OjpuYW1lKToKKyAgICAgICAgKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpJbnRlcnByZXRLZXlFdmVudDo6SW50ZXJwcmV0S2V5RXZlbnQpOgorICAgICAg
ICAoTWVzc2FnZXM6OldlYlBhZ2U6OkludGVycHJldEtleUV2ZW50Ojphcmd1bWVudHMgY29uc3Qp
OgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OkRlcHJlY2F0ZWRPcGVyYXRpb246Om5hbWUp
OgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OkRlcHJlY2F0ZWRPcGVyYXRpb246OkRlcHJl
Y2F0ZWRPcGVyYXRpb24pOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OkRlcHJlY2F0ZWRP
cGVyYXRpb246OmFyZ3VtZW50cyBjb25zdCk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6
RXhwZXJpbWVudGFsT3BlcmF0aW9uOjpuYW1lKToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdl
OjpFeHBlcmltZW50YWxPcGVyYXRpb246OkV4cGVyaW1lbnRhbE9wZXJhdGlvbik6CisgICAgICAg
IChNZXNzYWdlczo6V2ViUGFnZTo6RXhwZXJpbWVudGFsT3BlcmF0aW9uOjphcmd1bWVudHMgY29u
c3QpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3QtbGVnYWN5TWVzc2FnZXNSZXBsaWVz
Lmg6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3QtbWVzc2FnZXMuaW46IFJl
bW92ZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXQvdGVzdC1zdXBlcmNsYXNzLW1lc3NhZ2Vz
LmluOiBSZW1vdmVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3Qtc3VwZXJjbGFzcy5t
ZXNzYWdlcy5pbjogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0
LXN1cGVyY2xhc3MtbWVzc2FnZXMuaW4uCisgICAgICAgICogU2NyaXB0cy93ZWJraXQvdGVzdC1z
dXBlcmNsYXNzTWVzc2FnZVJlY2VpdmVyLmNwcDogQWRkZWQuCisgICAgICAgIChNZXNzYWdlczo6
V2ViUGFnZTo6VGVzdEFzeW5jTWVzc2FnZTo6Y2FsbFJlcGx5KToKKyAgICAgICAgKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpUZXN0QXN5bmNNZXNzYWdlOjpjYW5jZWxSZXBseSk6CisgICAgICAgIChNZXNz
YWdlczo6V2ViUGFnZTo6VGVzdEFzeW5jTWVzc2FnZTo6c2VuZCk6CisgICAgICAgIChNZXNzYWdl
czo6V2ViUGFnZTo6VGVzdEFzeW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50czo6Y2FsbFJlcGx5KToK
KyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJndW1l
bnRzOjpjYW5jZWxSZXBseSk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6VGVzdEFzeW5j
TWVzc2FnZVdpdGhOb0FyZ3VtZW50czo6c2VuZCk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFn
ZTo6VGVzdEFzeW5jTWVzc2FnZVdpdGhNdWx0aXBsZUFyZ3VtZW50czo6Y2FsbFJlcGx5KToKKyAg
ICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJn
dW1lbnRzOjpjYW5jZWxSZXBseSk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6VGVzdEFz
eW5jTWVzc2FnZVdpdGhNdWx0aXBsZUFyZ3VtZW50czo6c2VuZCk6CisgICAgICAgIChNZXNzYWdl
czo6V2ViUGFnZTo6VGVzdFN5bmNNZXNzYWdlOjpzZW5kKToKKyAgICAgICAgKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpUZXN0U3luY2hyb25vdXNNZXNzYWdlOjpzZW5kKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpk
aWRSZWNlaXZlU3luY01lc3NhZ2UpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3Qtc3Vw
ZXJjbGFzc01lc3NhZ2VzLmg6IEFkZGVkLgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6Om1l
c3NhZ2VSZWNlaXZlck5hbWUpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRVUkw6
Om5hbWUpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRVUkw6OkxvYWRVUkwpOgor
ICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRVUkw6OmFyZ3VtZW50cyBjb25zdCk6Cisg
ICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6VGVzdEFzeW5jTWVzc2FnZTo6bmFtZSk6CisgICAg
ICAgIChNZXNzYWdlczo6V2ViUGFnZTo6VGVzdEFzeW5jTWVzc2FnZTo6YXN5bmNNZXNzYWdlUmVw
bHlOYW1lKToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0QXN5bmNNZXNzYWdlOjpU
ZXN0QXN5bmNNZXNzYWdlKToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0QXN5bmNN
ZXNzYWdlOjphcmd1bWVudHMgY29uc3QpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlRl
c3RBc3luY01lc3NhZ2VXaXRoTm9Bcmd1bWVudHM6Om5hbWUpOgorICAgICAgICAoTWVzc2FnZXM6
OldlYlBhZ2U6OlRlc3RBc3luY01lc3NhZ2VXaXRoTm9Bcmd1bWVudHM6OmFzeW5jTWVzc2FnZVJl
cGx5TmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6VGVzdEFzeW5jTWVzc2FnZVdp
dGhOb0FyZ3VtZW50czo6YXJndW1lbnRzIGNvbnN0KToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpUZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1lbnRzOjpuYW1lKToKKyAgICAg
ICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1l
bnRzOjphc3luY01lc3NhZ2VSZXBseU5hbWUpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6
OlRlc3RBc3luY01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHM6OmFyZ3VtZW50cyBjb25zdCk6
CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6VGVzdFN5bmNNZXNzYWdlOjpuYW1lKToKKyAg
ICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0U3luY01lc3NhZ2U6OlRlc3RTeW5jTWVzc2Fn
ZSk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6VGVzdFN5bmNNZXNzYWdlOjphcmd1bWVu
dHMgY29uc3QpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RTeW5jaHJvbm91c01l
c3NhZ2U6Om5hbWUpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RTeW5jaHJvbm91
c01lc3NhZ2U6OlRlc3RTeW5jaHJvbm91c01lc3NhZ2UpOgorICAgICAgICAoTWVzc2FnZXM6Oldl
YlBhZ2U6OlRlc3RTeW5jaHJvbm91c01lc3NhZ2U6OmFyZ3VtZW50cyBjb25zdCk6CisgICAgICAg
ICogU2NyaXB0cy93ZWJraXQvdGVzdC1zdXBlcmNsYXNzTWVzc2FnZXNSZXBsaWVzLmg6IEFkZGVk
LgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3QubWVzc2FnZXMuaW46IEFkZGVkLgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3RNZXNzYWdlUmVjZWl2ZXIuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0TWVzc2FnZXMuaDogQWRkZWQuCisgICAgICAgIChN
ZXNzYWdlczo6Tm9uZTo6bWVzc2FnZVJlY2VpdmVyTmFtZSk6CisgICAgICAgICogU2NyaXB0cy93
ZWJraXQvdGVzdE1lc3NhZ2VzUmVwbGllcy5oOiBBZGRlZC4KKyAgICAgICAgKiBTaGFyZWQvQXBw
bGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaDoKKyAgICAgICAgKiBTaGFyZWQvQXBw
bGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OldlYlBheW1lbnRDb29yZGluYXRv
clByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6On5X
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSk6CisgICAgICAgICogU2hhcmVkL0F1eGlsaWFyeVBy
b2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpBdXhpbGlhcnlQcm9jZXNzOjphZGRNZXNzYWdl
UmVjZWl2ZXIpOgorICAgICAgICAoV2ViS2l0OjpBdXhpbGlhcnlQcm9jZXNzOjpyZW1vdmVNZXNz
YWdlUmVjZWl2ZXIpOgorICAgICAgICAoV2ViS2l0OjpBdXhpbGlhcnlQcm9jZXNzOjpkaWRSZWNl
aXZlSW52YWxpZE1lc3NhZ2UpOgorICAgICAgICAqIFNoYXJlZC9BdXhpbGlhcnlQcm9jZXNzLmg6
CisgICAgICAgIChXZWJLaXQ6OkF1eGlsaWFyeVByb2Nlc3M6OmFkZE1lc3NhZ2VSZWNlaXZlcik6
CisgICAgICAgIChXZWJLaXQ6OkF1eGlsaWFyeVByb2Nlc3M6OnJlbW92ZU1lc3NhZ2VSZWNlaXZl
cik6CisgICAgICAgICogU2hhcmVkL0NvY29hL0F1eGlsaWFyeVByb2Nlc3NDb2NvYS5tbToKKyAg
ICAgICAgKFdlYktpdDo6QXV4aWxpYXJ5UHJvY2Vzczo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdl
KToKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9BdXhp
bGlhcnlQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpBdXhpbGlhcnlQcm9jZXNz
UHJveHk6OmFkZE1lc3NhZ2VSZWNlaXZlcik6CisgICAgICAgIChXZWJLaXQ6OkF1eGlsaWFyeVBy
b2Nlc3NQcm94eTo6cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKToKKyAgICAgICAgKFdlYktpdDo6QXV4
aWxpYXJ5UHJvY2Vzc1Byb3h5Ojpsb2dJbnZhbGlkTWVzc2FnZSk6CisgICAgICAgICogVUlQcm9j
ZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpBdXhpbGlhcnlQ
cm9jZXNzUHJveHk6OmFkZE1lc3NhZ2VSZWNlaXZlcik6CisgICAgICAgIChXZWJLaXQ6OkF1eGls
aWFyeVByb2Nlc3NQcm94eTo6cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKToKKyAgICAgICAgKFdlYktp
dDo6QXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjpzZW5kKToKKyAgICAgICAgKFdlYktpdDo6QXV4aWxp
YXJ5UHJvY2Vzc1Byb3h5OjpzZW5kV2l0aEFzeW5jUmVwbHkpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5Lmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OnBheW1lbnRDb29yZGluYXRvckFkZE1lc3NhZ2VSZWNlaXZlcik6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cGF5bWVudENvb3JkaW5hdG9yUmVtb3ZlTWVz
c2FnZVJlY2VpdmVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvR1BVL0dQVVByb2Nl
c3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkdQVVByb2Nlc3NQcm94eTo6ZGlkUmVjZWl2
ZUludmFsaWRNZXNzYWdlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94
eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRSZWNlaXZlSW52YWxp
ZE1lc3NhZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVJbnZhbGlk
TWVzc2FnZSk6CisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UHJvdmlzaW9uYWxQYWdlUHJveHk6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6bWVzc2FnZU5hbWVzVG9JZ25vcmVXaGlsZVN1c3BlbmRlZCk6CisgICAgICAgIChXZWJLaXQ6
OlN1c3BlbmRlZFBhZ2VQcm94eTo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6ZGlkUmVjZWl2ZUludmFsaWRN
ZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmFkZE1lc3NhZ2VSZWNl
aXZlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpyZW1vdmVNZXNzYWdlUmVj
ZWl2ZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzUHJveHk6OnNob3VsZFNlbmRQZW5kaW5nTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQcm94eTo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvR1BVUHJv
Y2Vzc0Nvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpHUFVQcm9jZXNzQ29ubmVjdGlv
bjo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9H
UFVQcm9jZXNzQ29ubmVjdGlvbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5zcGVjdG9yL1dl
Ykluc3BlY3Rvci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3Rv
clVJLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlk
UmVjZWl2ZUludmFsaWRNZXNzYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblByb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vz
c0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZSk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5t
bToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OnVwZGF0ZVJl
bmRlcmluZyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorCiAyMDIwLTA1LTA2ICBC
cmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFtNYWNDYXRhbHlz
dF0gUHJvY2Vzc2VzIHNob3VsZCBjaGVjayBmb3IgbmV0d29yayBlbnRpdGxlbWVudCBhcyB3ZSBk
byBmb3IgbWFjT1MgYXBwcwpJbmRleDogU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAyNjEyMzgp
CisrKyBTb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMTks
MTQ4ICsxMTksMTQ4IEBAIGxpc3QoQVBQRU5EIFdlYktpdF9VTklGSUVEX1NPVVJDRV9MSVNUX0YK
ICkKIAogc2V0KFdlYktpdF9NRVNTQUdFU19JTl9GSUxFUwotICAgIEdQVVByb2Nlc3MvR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgotICAgIEdQVVByb2Nlc3MvR1BVUHJvY2Vz
cy5tZXNzYWdlcy5pbgorICAgIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcwor
ICAgIEdQVVByb2Nlc3MvR1BVUHJvY2VzcwogCi0gICAgR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHkubWVzc2FnZXMuaW4KKyAgICBHUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eQogCi0gICAgR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5tZXNzYWdlcy5pbgotICAgIEdQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlQXVkaW9TZXNzaW9uUHJveHkubWVzc2FnZXMuaW4KLSAgICBHUFVQcm9jZXNz
L21lZGlhL1JlbW90ZUNETUZhY3RvcnlQcm94eS5tZXNzYWdlcy5pbgotICAgIEdQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5tZXNzYWdlcy5pbgotICAgIEdQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkubWVzc2FnZXMuaW4KLSAgICBHUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5Lm1lc3NhZ2VzLmluCi0gICAgR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkubWVzc2FnZXMuaW4KLSAgICBHUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5Lm1lc3NhZ2VzLmluCi0gICAgR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkubWVzc2FnZXMuaW4KLSAgICBHUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCi0g
ICAgR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5Lm1lc3NhZ2VzLmluCi0g
ICAgR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlci5tZXNzYWdlcy5p
bgorICAgIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIKKyAg
ICBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvblByb3h5CisgICAgR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5UHJveHkKKyAgICBHUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUNETUluc3RhbmNlUHJveHkKKyAgICBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNl
U2Vzc2lvblByb3h5CisgICAgR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eQorICAgIEdQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5CisgICAgR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eQorICAgIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
TGVnYWN5Q0RNU2Vzc2lvblByb3h5CisgICAgR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBs
YXllck1hbmFnZXJQcm94eQorICAgIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQ
cm94eQorICAgIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIKIAot
ICAgIEdQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1lc3NhZ2VzLmluCi0g
ICAgR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIu
bWVzc2FnZXMuaW4KLSAgICBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlck1hbmFnZXIubWVzc2FnZXMuaW4KLSAgICBHUFVQcm9jZXNzL3dlYnJ0Yy9S
ZW1vdGVNZWRpYVJlY29yZGVyLm1lc3NhZ2VzLmluCi0gICAgR1BVUHJvY2Vzcy93ZWJydGMvUmVt
b3RlTWVkaWFSZWNvcmRlck1hbmFnZXIubWVzc2FnZXMuaW4KLSAgICBHUFVQcm9jZXNzL3dlYnJ0
Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIubWVzc2FnZXMuaW4KLSAgICBHUFVQcm9j
ZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyLm1lc3NhZ2Vz
LmluCisgICAgR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkKKyAgICBHUFVQ
cm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcgorICAgIEdQ
VVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdl
cgorICAgIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIKKyAgICBHUFVQcm9j
ZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlcgorICAgIEdQVVByb2Nlc3Mvd2Vi
cnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcgorICAgIEdQVVByb2Nlc3Mvd2VicnRj
L1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIKIAotICAgIE5ldHdvcmtQcm9j
ZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5tZXNzYWdlcy5pbgorICAgIE5ldHdvcmtQcm9j
ZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlcgogCi0gICAgTmV0d29ya1Byb2Nlc3MvSW5kZXhl
ZERCL1dlYklEQlNlcnZlci5tZXNzYWdlcy5pbgorICAgIE5ldHdvcmtQcm9jZXNzL0luZGV4ZWRE
Qi9XZWJJREJTZXJ2ZXIKIAotICAgIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLm1lc3NhZ2VzLmluCi0gICAgTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NvbnRlbnRS
dWxlTGlzdE1hbmFnZXIubWVzc2FnZXMuaW4KLSAgICBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5tZXNzYWdlcy5pbgotICAgIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5tZXNzYWdlcy5pbgotICAgIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLm1l
c3NhZ2VzLmluCi0gICAgTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5tZXNzYWdl
cy5pbgorICAgIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzCisg
ICAgTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIKKyAgICBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2VzcworICAgIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNv
dXJjZUxvYWRlcgorICAgIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsCisgICAg
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbQogCi0gICAgTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLm1lc3NhZ2VzLmluCi0gICAgTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMu
aW4KLSAgICBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgorICAgIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
U2VydmljZVdvcmtlckZldGNoVGFzaworICAgIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
V2ViU1dTZXJ2ZXJDb25uZWN0aW9uCisgICAgTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9X
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24KIAotICAgIE5ldHdvcmtQcm9jZXNzL1dlYlN0
b3JhZ2UvU3RvcmFnZU1hbmFnZXJTZXQubWVzc2FnZXMuaW4KKyAgICBOZXR3b3JrUHJvY2Vzcy9X
ZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyU2V0CiAKLSAgICBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9D
YWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLm1lc3NhZ2VzLmluCisgICAgTmV0d29ya1Byb2Nl
c3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbgogCi0gICAgTmV0d29ya1Byb2Nl
c3Mvd2VicnRjL05ldHdvcmtNRE5TUmVnaXN0ZXIubWVzc2FnZXMuaW4KLSAgICBOZXR3b3JrUHJv
Y2Vzcy93ZWJydGMvTmV0d29ya1JUQ01vbml0b3IubWVzc2FnZXMuaW4KLSAgICBOZXR3b3JrUHJv
Y2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLm1lc3NhZ2VzLmluCi0gICAgTmV0d29ya1By
b2Nlc3Mvd2VicnRjL05ldHdvcmtSVENTb2NrZXQubWVzc2FnZXMuaW4KKyAgICBOZXR3b3JrUHJv
Y2Vzcy93ZWJydGMvTmV0d29ya01ETlNSZWdpc3RlcgorICAgIE5ldHdvcmtQcm9jZXNzL3dlYnJ0
Yy9OZXR3b3JrUlRDTW9uaXRvcgorICAgIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRD
UHJvdmlkZXIKKyAgICBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1NvY2tldAogCi0g
ICAgUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkubWVzc2FnZXMuaW4KLSAgICBQ
bHVnaW5Qcm9jZXNzL1BsdWdpblByb2Nlc3MubWVzc2FnZXMuaW4KLSAgICBQbHVnaW5Qcm9jZXNz
L1dlYlByb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluCisgICAgUGx1Z2luUHJvY2Vzcy9QbHVn
aW5Db250cm9sbGVyUHJveHkKKyAgICBQbHVnaW5Qcm9jZXNzL1BsdWdpblByb2Nlc3MKKyAgICBQ
bHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uCiAKLSAgICBTaGFyZWQvQXV4aWxpYXJ5
UHJvY2Vzcy5tZXNzYWdlcy5pbgotICAgIFNoYXJlZC9XZWJDb25uZWN0aW9uLm1lc3NhZ2VzLmlu
CisgICAgU2hhcmVkL0F1eGlsaWFyeVByb2Nlc3MKKyAgICBTaGFyZWQvV2ViQ29ubmVjdGlvbgog
Ci0gICAgU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5tZXNzYWdl
cy5pbgorICAgIFNoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIKIAot
ICAgIFNoYXJlZC9QbHVnaW5zL05QT2JqZWN0TWVzc2FnZVJlY2VpdmVyLm1lc3NhZ2VzLmluCisg
ICAgU2hhcmVkL1BsdWdpbnMvTlBPYmplY3RNZXNzYWdlUmVjZWl2ZXIKIAotICAgIFVJUHJvY2Vz
cy9EcmF3aW5nQXJlYVByb3h5Lm1lc3NhZ2VzLmluCi0gICAgVUlQcm9jZXNzL1Zpc2l0ZWRMaW5r
U3RvcmUubWVzc2FnZXMuaW4KLSAgICBVSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5Lm1l
c3NhZ2VzLmluCi0gICAgVUlQcm9jZXNzL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkubWVzc2Fn
ZXMuaW4KLSAgICBVSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkubWVzc2FnZXMu
aW4KLSAgICBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCi0gICAgVUlQcm9jZXNz
L1dlYlBhc3RlYm9hcmRQcm94eS5tZXNzYWdlcy5pbgotICAgIFVJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5tZXNzYWdlcy5pbgotICAgIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkubWVzc2FnZXMu
aW4KKyAgICBVSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eQorICAgIFVJUHJvY2Vzcy9WaXNpdGVk
TGlua1N0b3JlCisgICAgVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eQorICAgIFVJUHJv
Y2Vzcy9XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5CisgICAgVUlQcm9jZXNzL1dlYkdlb2xvY2F0
aW9uTWFuYWdlclByb3h5CisgICAgVUlQcm9jZXNzL1dlYlBhZ2VQcm94eQorICAgIFVJUHJvY2Vz
cy9XZWJQYXN0ZWJvYXJkUHJveHkKKyAgICBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wKKyAgICBV
SVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5CiAKLSAgICBVSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJB
dXRvbWF0aW9uU2Vzc2lvbi5tZXNzYWdlcy5pbgorICAgIFVJUHJvY2Vzcy9BdXRvbWF0aW9uL1dl
YkF1dG9tYXRpb25TZXNzaW9uCiAKLSAgICBVSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJv
eHkubWVzc2FnZXMuaW4KKyAgICBVSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkKIAot
ICAgIFVJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCisgICAgVUlQcm9j
ZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkKIAotICAgIFVJUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3Rl
V2ViSW5zcGVjdG9yUHJveHkubWVzc2FnZXMuaW4KLSAgICBVSVByb2Nlc3MvSW5zcGVjdG9yL1dl
Ykluc3BlY3RvclByb3h5Lm1lc3NhZ2VzLmluCisgICAgVUlQcm9jZXNzL0luc3BlY3Rvci9SZW1v
dGVXZWJJbnNwZWN0b3JQcm94eQorICAgIFVJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9y
UHJveHkKIAotICAgIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2Fn
ZXMuaW4KKyAgICBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5CiAKLSAgICBV
SVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KKyAgICBVSVBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkKIAotICAgIFVJUHJvY2Vzcy9Vc2VyQ29u
dGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5tZXNzYWdlcy5pbgorICAgIFVJUHJv
Y2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eQogCi0gICAgV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisgICAgV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
CiAKLSAgICBXZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5t
ZXNzYWdlcy5pbgorICAgIFdlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lv
blByb3h5CiAKLSAgICBXZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCQ29ubmVj
dGlvblRvU2VydmVyLm1lc3NhZ2VzLmluCisgICAgV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhl
ZERCL1dlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcgogCi0gICAgV2ViUHJvY2Vzcy9GdWxsU2NyZWVu
L1dlYkZ1bGxTY3JlZW5NYW5hZ2VyLm1lc3NhZ2VzLmluCisgICAgV2ViUHJvY2Vzcy9GdWxsU2Ny
ZWVuL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyCiAKLSAgICBXZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNz
Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgorICAgIFdlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25u
ZWN0aW9uCiAKLSAgICBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kLm1lc3NhZ2VzLmluCisgICAgV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVy
aW5nQmFja2VuZAogCi0gICAgV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlLm1lc3NhZ2VzLmluCi0gICAgV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9E
ZXN0aW5hdGlvblByb3h5Lm1lc3NhZ2VzLmluCi0gICAgV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlQXVkaW9TZXNzaW9uLm1lc3NhZ2VzLmluCi0gICAgV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uLm1lc3NhZ2VzLmluCi0gICAgV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5tZXNzYWdlcy5pbgotICAgIFdlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5tZXNzYWdlcy5pbgorICAgIFdlYlByb2Nl
c3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZQorICAgIFdlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eQorICAgIFdlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvbgorICAgIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvbgorICAgIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNE
TVNlc3Npb24KKyAgICBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFn
ZXIKIAotICAgIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MubWVzc2FnZXMu
aW4KLSAgICBXZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLm1l
c3NhZ2VzLmluCisgICAgV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcworICAg
IFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIKIAotICAgIFdl
YlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluCisg
ICAgV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIKIAotICAgIFdl
YlByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclVJLm1lc3NhZ2VzLmluCi0gICAg
V2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yLm1lc3NhZ2VzLmluCi0gICAgV2ViUHJv
Y2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9ySW50ZXJydXB0RGlzcGF0Y2hlci5tZXNzYWdlcy5p
bgotICAgIFdlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJLm1lc3NhZ2VzLmluCisg
ICAgV2ViUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yVUkKKyAgICBXZWJQcm9j
ZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3IKKyAgICBXZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJ
bnNwZWN0b3JJbnRlcnJ1cHREaXNwYXRjaGVyCisgICAgV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2Vi
SW5zcGVjdG9yVUkKIAotICAgIFdlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDTmV0
d29yay5tZXNzYWdlcy5pbgotICAgIFdlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvV2ViTUROU1Jl
Z2lzdGVyLm1lc3NhZ2VzLmluCi0gICAgV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJSVENN
b25pdG9yLm1lc3NhZ2VzLmluCi0gICAgV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJSVENS
ZXNvbHZlci5tZXNzYWdlcy5pbgorICAgIFdlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2Vi
UlRDTmV0d29yaworICAgIFdlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvV2ViTUROU1JlZ2lzdGVy
CisgICAgV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJSVENNb25pdG9yCisgICAgV2ViUHJv
Y2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJSVENSZXNvbHZlcgogCi0gICAgV2ViUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgotICAgIFdlYlByb2Nlc3Mv
TmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbgotICAgIFdlYlByb2Nlc3MvTmV0
d29yay9XZWJTb2NrZXRDaGFubmVsLm1lc3NhZ2VzLmluCi0gICAgV2ViUHJvY2Vzcy9OZXR3b3Jr
L1dlYlNvY2tldFN0cmVhbS5tZXNzYWdlcy5pbgorICAgIFdlYlByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24KKyAgICBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VM
b2FkZXIKKyAgICBXZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbAorICAgIFdlYlBy
b2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0KIAotICAgIFdlYlByb2Nlc3MvTm90aWZpY2F0
aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluCisgICAgV2ViUHJvY2Vzcy9O
b3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIKIAotICAgIFdlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgotICAgIFdlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4KLSAgICBX
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkubWVzc2FnZXMuaW4KKyAgICBXZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24KKyAgICBXZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyCisgICAgV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblByb3h5CiAKLSAgICBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9u
Lm1lc3NhZ2VzLmluCi0gICAgV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uLm1lc3NhZ2VzLmluCisgICAgV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50
Q29ubmVjdGlvbgorICAgIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbgogCi0gICAgV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRy
b2xsZXIubWVzc2FnZXMuaW4KKyAgICBXZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250
ZW50Q29udHJvbGxlcgogCi0gICAgV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLm1lc3Nh
Z2VzLmluCi0gICAgV2ViUHJvY2Vzcy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5tZXNzYWdlcy5p
bgotICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9WaXNpdGVkTGlua1RhYmxlQ29udHJvbGxlci5tZXNz
YWdlcy5pbgotICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisgICAg
V2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhCisgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL0V2
ZW50RGlzcGF0Y2hlcgorICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9WaXNpdGVkTGlua1RhYmxlQ29u
dHJvbGxlcgorICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlCiAKLSAgICBXZWJQcm9jZXNz
L1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAubWVzc2FnZXMuaW4KKyAgICBXZWJQcm9jZXNzL1dl
YlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAKICkKIAogIyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDM2NgpAQCAtNDA2LDIzICs0MDYsMzggQEAgZW5kaWYg
KCkKIAogIyBIZWxwZXIgbWFjcm8gd2hpY2ggd3JhcHMgdGhlIGdlbmVyYXRlLW1lc3NhZ2UtcmVj
ZWl2ZXIucHkgc2NyaXB0CiAjICAgX291dHB1dF9zb3VyY2UgaXMgYSBsaXN0IG5hbWUgd2hpY2gg
d2lsbCBjb250YWluIGdlbmVyYXRlZCBzb3VyY2VzLihlZy4gV2ViS2l0X1NPVVJDRVMpCi0jICAg
X2lucHV0X2ZpbGVzIGFyZSBtZXNzYWdlcy5pbiBmaWxlcyB0byBnZW5lcmF0ZS4KLW1hY3JvKEdF
TkVSQVRFX01FU1NBR0VfU09VUkNFUyBfb3V0cHV0X3NvdXJjZSBfaW5wdXRfZmlsZXMpCi0gICAg
Zm9yZWFjaCAoX2ZpbGUgJHtfaW5wdXRfZmlsZXN9KQorIyAgIF9pbnB1dHMgYXJlIG1lc3NhZ2Vz
LmluIGZpbGVzIHRvIGdlbmVyYXRlLgorbWFjcm8oR0VORVJBVEVfTUVTU0FHRV9TT1VSQ0VTIF9v
dXRwdXRfc291cmNlIF9pbnB1dHMpCisgICAgdW5zZXQoX2lucHV0X2ZpbGVzKQorICAgIHVuc2V0
KF9vdXRwdXRzKQorICAgIGZvcmVhY2ggKF9maWxlIElOIElURU1TICR7X2lucHV0c30pCiAgICAg
ICAgIGdldF9maWxlbmFtZV9jb21wb25lbnQoX25hbWUgJHtfZmlsZX0gTkFNRV9XRSkKLSAgICAg
ICAgYWRkX2N1c3RvbV9jb21tYW5kKAotICAgICAgICAgICAgT1VUUFVUICR7V2ViS2l0X0RFUklW
RURfU09VUkNFU19ESVJ9LyR7X25hbWV9TWVzc2FnZVJlY2VpdmVyLmNwcCAke1dlYktpdF9ERVJJ
VkVEX1NPVVJDRVNfRElSfS8ke19uYW1lfU1lc3NhZ2VzLmggJHtXZWJLaXRfREVSSVZFRF9TT1VS
Q0VTX0RJUn0vJHtfbmFtZX1NZXNzYWdlc1JlcGxpZXMuaAotICAgICAgICAgICAgTUFJTl9ERVBF
TkRFTkNZICR7X2ZpbGV9Ci0gICAgICAgICAgICBERVBFTkRTICR7V0VCS0lUX0RJUn0vU2NyaXB0
cy93ZWJraXQvX19pbml0X18ucHkKLSAgICAgICAgICAgICAgICAgICAgJHtXRUJLSVRfRElSfS9T
Y3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQotICAgICAgICAgICAgICAgICAgICAke1dFQktJVF9E
SVJ9L1NjcmlwdHMvd2Via2l0L21vZGVsLnB5Ci0gICAgICAgICAgICAgICAgICAgICR7V0VCS0lU
X0RJUn0vU2NyaXB0cy93ZWJraXQvcGFyc2VyLnB5Ci0gICAgICAgICAgICBDT01NQU5EICR7UFlU
SE9OX0VYRUNVVEFCTEV9ICR7V0VCS0lUX0RJUn0vU2NyaXB0cy9nZW5lcmF0ZS1tZXNzYWdlLXJl
Y2VpdmVyLnB5ICR7X2ZpbGV9IC0taW1wbGVtZW50YXRpb24gJHtXZWJLaXRfREVSSVZFRF9TT1VS
Q0VTX0RJUn0vJHtfbmFtZX1NZXNzYWdlUmVjZWl2ZXIuY3BwIC0taGVhZGVyICR7V2ViS2l0X0RF
UklWRURfU09VUkNFU19ESVJ9LyR7X25hbWV9TWVzc2FnZXMuaCAtLXJlcGx5LWhlYWRlciAke1dl
YktpdF9ERVJJVkVEX1NPVVJDRVNfRElSfS8ke19uYW1lfU1lc3NhZ2VzUmVwbGllcy5oCi0gICAg
ICAgICAgICBXT1JLSU5HX0RJUkVDVE9SWSAke1dFQktJVF9ESVJ9Ci0gICAgICAgICAgICBWRVJC
QVRJTSkKLQorICAgICAgICBsaXN0KEFQUEVORCBfaW5wdXRfZmlsZXMgJHtXRUJLSVRfRElSfS8k
e19maWxlfS5tZXNzYWdlcy5pbikKKyAgICAgICAgbGlzdChBUFBFTkQgX291dHB1dHMKKyAgICAg
ICAgICAgICR7V2ViS2l0X0RFUklWRURfU09VUkNFU19ESVJ9LyR7X25hbWV9TWVzc2FnZVJlY2Vp
dmVyLmNwcAorICAgICAgICAgICAgJHtXZWJLaXRfREVSSVZFRF9TT1VSQ0VTX0RJUn0vJHtfbmFt
ZX1NZXNzYWdlcy5oCisgICAgICAgICAgICAke1dlYktpdF9ERVJJVkVEX1NPVVJDRVNfRElSfS8k
e19uYW1lfU1lc3NhZ2VzUmVwbGllcy5oCisgICAgICAgICkKICAgICAgICAgbGlzdChBUFBFTkQg
JHtfb3V0cHV0X3NvdXJjZX0gJHtXZWJLaXRfREVSSVZFRF9TT1VSQ0VTX0RJUn0vJHtfbmFtZX1N
ZXNzYWdlUmVjZWl2ZXIuY3BwKQogICAgIGVuZGZvcmVhY2ggKCkKKyAgICBsaXN0KEFQUEVORCAk
e19vdXRwdXRfc291cmNlfSAke1dlYktpdF9ERVJJVkVEX1NPVVJDRVNfRElSfS9NZXNzYWdlTmFt
ZXMuY3BwKQorCisgICAgYWRkX2N1c3RvbV9jb21tYW5kKAorICAgICAgICBPVVRQVVQKKyAgICAg
ICAgICAgICR7V2ViS2l0X0RFUklWRURfU09VUkNFU19ESVJ9L01lc3NhZ2VOYW1lcy5jcHAKKyAg
ICAgICAgICAgICR7V2ViS2l0X0RFUklWRURfU09VUkNFU19ESVJ9L01lc3NhZ2VOYW1lcy5oCisg
ICAgICAgICAgICAke19vdXRwdXRzfQorICAgICAgICBNQUlOX0RFUEVOREVOQ1kgJHtXRUJLSVRf
RElSfS9TY3JpcHRzL2dlbmVyYXRlLW1lc3NhZ2UtcmVjZWl2ZXIucHkKKyAgICAgICAgREVQRU5E
UworICAgICAgICAgICAgJHtXRUJLSVRfRElSfS9TY3JpcHRzL3dlYmtpdC9fX2luaXRfXy5weQor
ICAgICAgICAgICAgJHtXRUJLSVRfRElSfS9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQorICAg
ICAgICAgICAgJHtXRUJLSVRfRElSfS9TY3JpcHRzL3dlYmtpdC9tb2RlbC5weQorICAgICAgICAg
ICAgJHtXRUJLSVRfRElSfS9TY3JpcHRzL3dlYmtpdC9wYXJzZXIucHkKKyAgICAgICAgICAgICR7
X2lucHV0X2ZpbGVzfQorICAgICAgICBDT01NQU5EICR7UFlUSE9OX0VYRUNVVEFCTEV9ICR7V0VC
S0lUX0RJUn0vU2NyaXB0cy9nZW5lcmF0ZS1tZXNzYWdlLXJlY2VpdmVyLnB5ICR7V0VCS0lUX0RJ
Un0gJHtfaW5wdXRzfQorICAgICAgICBXT1JLSU5HX0RJUkVDVE9SWSAke1dlYktpdF9ERVJJVkVE
X1NPVVJDRVNfRElSfQorICAgICAgICBWRVJCQVRJTQorICAgICkKIGVuZG1hY3JvKCkKIEdFTkVS
QVRFX01FU1NBR0VfU09VUkNFUyhXZWJLaXRfREVSSVZFRF9TT1VSQ0VTICIke1dlYktpdF9NRVNT
QUdFU19JTl9GSUxFU30iKQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91
dHB1dC54Y2ZpbGVsaXN0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJj
ZXMtb3V0cHV0LnhjZmlsZWxpc3QJKHJldmlzaW9uIDI2MTIzOCkKKysrIFNvdXJjZS9XZWJLaXQv
RGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QJKHdvcmtpbmcgY29weSkKQEAgLTY2LDYg
KzY2LDggQEAgJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYgogJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvTWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlTWVzc2FnZVJlY2VpdmVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYktpdDIvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlTWVzc2FnZXMuaAogJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvTWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlTWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJLaXQyL01lc3NhZ2VOYW1lcy5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJLaXQyL01lc3NhZ2VOYW1lcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9OUE9iamVjdE1lc3NhZ2VSZWNlaXZlck1lc3NhZ2VSZWNl
aXZlci5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL05Q
T2JqZWN0TWVzc2FnZVJlY2VpdmVyTWVzc2FnZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYktpdDIvTlBPYmplY3RNZXNzYWdlUmVjZWl2ZXJNZXNzYWdlc1JlcGxp
ZXMuaApJbmRleDogU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQkocmV2aXNpb24gMjYxMjM4KQor
KysgU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0x
MTIsMTM0ICsxMTIsMTM0IEBAIGVsc2UKIGVuZGlmCiAKIE1FU1NBR0VfUkVDRUlWRVJTID0gXAot
CUF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yUHJveHkgXAotICAgIEF1dGhlbnRpY2F0aW9u
TWFuYWdlciBcCi0gICAgQXV4aWxpYXJ5UHJvY2VzcyBcCi0gICAgQ2FjaGVTdG9yYWdlRW5naW5l
Q29ubmVjdGlvbiBcCi0gICAgRG93bmxvYWRQcm94eSBcCi0gICAgRHJhd2luZ0FyZWEgXAotICAg
IERyYXdpbmdBcmVhUHJveHkgXAotICAgIEVkaXRhYmxlSW1hZ2VDb250cm9sbGVyIFwKLSAgICBF
dmVudERpc3BhdGNoZXIgXAotICAgIEdQVVByb2Nlc3MgXAotICAgIEdQVVByb2Nlc3NQcm94eSBc
Ci0gICAgR1BVUHJvY2Vzc0Nvbm5lY3Rpb24gXAotICAgIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MgXAotICAgIExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlciBcCi0gICAgTGVnYWN5Q3VzdG9t
UHJvdG9jb2xNYW5hZ2VyUHJveHkgXAotICAgIExpYldlYlJUQ0NvZGVjcyBcCi0gICAgTGliV2Vi
UlRDQ29kZWNzUHJveHkgXAotICAgIExpYldlYlJUQ05ldHdvcmsgXAotICAgIE1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZSBcCi0gICAgTlBPYmplY3RNZXNzYWdlUmVjZWl2ZXIgXAotICAgIE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzIFwKLSAgICBOZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFu
YWdlciBcCi0gICAgTmV0d29ya01ETlNSZWdpc3RlclwKLSAgICBOZXR3b3JrUHJvY2VzcyBcCi0g
ICAgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uIFwKLSAgICBOZXR3b3JrUHJvY2Vzc1Byb3h5IFwK
LSAgICBOZXR3b3JrUlRDTW9uaXRvciBcCi0gICAgTmV0d29ya1JUQ1Byb3ZpZGVyIFwKLSAgICBO
ZXR3b3JrUlRDU29ja2V0IFwKLSAgICBOZXR3b3JrUmVzb3VyY2VMb2FkZXIgXAotICAgIE5ldHdv
cmtTb2NrZXRDaGFubmVsIFwKLSAgICBOZXR3b3JrU29ja2V0U3RyZWFtIFwKLSAgICBQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyIFwKLSAgICBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkgXAotICAg
IFBsdWdpbkNvbnRyb2xsZXJQcm94eSBcCi0gICAgUGx1Z2luUHJvY2VzcyBcCi0gICAgUGx1Z2lu
UHJvY2Vzc0Nvbm5lY3Rpb24gXAotICAgIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlciBc
Ci0gICAgUGx1Z2luUHJvY2Vzc1Byb3h5IFwKLSAgICBQbHVnaW5Qcm94eSBcCi0gICAgUmVtb3Rl
QXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIgXAotICAgIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94
eSBcCi0gICAgUmVtb3RlQXVkaW9TZXNzaW9uIFwKLSAgICBSZW1vdGVBdWRpb1Nlc3Npb25Qcm94
eSBcCi0gICAgUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyIFwKLSAg
ICBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlciBcCi0gICAgUmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWFQcm94eSBcCi0gICAgUmVtb3RlQ0RNUHJveHkgXAotICAgIFJlbW90ZUNE
TUZhY3RvcnlQcm94eSBcCi0gICAgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eSBcCi0gICAgUmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uIFwKLSAgICBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eSBc
Ci0gICAgUmVtb3RlTGVnYWN5Q0RNUHJveHkgXAotICAgIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQ
cm94eSBcCi0gICAgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbiBcCi0gICAgUmVtb3RlTGVnYWN5Q0RN
U2Vzc2lvblByb3h5IFwKLSAgICBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIgXAotICAgIFJlbW90
ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5IFwKLSAgICBSZW1vdGVNZWRpYVBsYXllclByb3h5IFwK
LSAgICBSZW1vdGVNZWRpYVJlY29yZGVyIFwKLSAgICBSZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdl
ciBcCi0gICAgUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIgXAotICAgIFJlbW90ZU1lZGlhU2Vz
c2lvbkhlbHBlciBcCi0gICAgUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHkgXAotICAgIFJl
bW90ZU9iamVjdFJlZ2lzdHJ5IFwKLSAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kIFwKLSAgICBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkgXAotICAgIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllciBcCi0gICAgUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlciBcCi0g
ICAgUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3IgXAotICAgIFJlbW90ZVdlYkluc3BlY3RvclBy
b3h5IFwKLSAgICBSZW1vdGVXZWJJbnNwZWN0b3JVSSBcCi0gICAgU2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyIFwKLSAgICBTZWNJdGVtU2hpbVByb3h5IFwKLSAgICBTZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrIFwKLSAgICBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyIFwKLSAgICBTdG9yYWdlQXJl
YU1hcCBcCi0gICAgU3RvcmFnZU1hbmFnZXJTZXQgXAotICAgIFRleHRDaGVja2luZ0NvbnRyb2xs
ZXJQcm94eSBcCi0gICAgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIgXAotICAgIFVzZXJNZWRpYUNh
cHR1cmVNYW5hZ2VyUHJveHkgXAotICAgIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXIgXAotICAgIFZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eSBcCi0gICAgVmlld0dlc3R1cmVDb250cm9sbGVyIFwK
LSAgICBWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yIFwKLSAgICBWaWV3VXBkYXRlRGlzcGF0
Y2hlciBcCi0gICAgVmlzaXRlZExpbmtTdG9yZSBcCi0gICAgVmlzaXRlZExpbmtUYWJsZUNvbnRy
b2xsZXIgXAotICAgIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5IFwKLSAgICBXZWJB
dXRvbWF0aW9uU2Vzc2lvbiBcCi0gICAgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eSBcCi0gICAg
V2ViQ29ubmVjdGlvbiBcCi0gICAgV2ViQ29va2llTWFuYWdlciBcCi0gICAgV2ViQ29va2llTWFu
YWdlclByb3h5IFwKLSAgICBXZWJGdWxsU2NyZWVuTWFuYWdlciBcCi0gICAgV2ViRnVsbFNjcmVl
bk1hbmFnZXJQcm94eSBcCi0gICAgV2ViR2VvbG9jYXRpb25NYW5hZ2VyIFwKLSAgICBXZWJHZW9s
b2NhdGlvbk1hbmFnZXJQcm94eSBcCi0gICAgV2ViSURCQ29ubmVjdGlvblRvU2VydmVyIFwKLSAg
ICBXZWJJREJTZXJ2ZXIgXAotICAgIFdlYkluc3BlY3RvciBcCi0gICAgV2ViSW5zcGVjdG9ySW50
ZXJydXB0RGlzcGF0Y2hlciBcCi0gICAgV2ViSW5zcGVjdG9yUHJveHkgXAotICAgIFdlYkluc3Bl
Y3RvclVJIFwKLSAgICBXZWJNRE5TUmVnaXN0ZXJcCi0gICAgV2ViTm90aWZpY2F0aW9uTWFuYWdl
ciBcCi0gICAgV2ViUGFnZSBcCi0gICAgV2ViUGFnZVByb3h5IFwKLSAgICBXZWJQYXN0ZWJvYXJk
UHJveHkgXAotICAgIFdlYlBheW1lbnRDb29yZGluYXRvciBcCi0gICAgV2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHkgXAotICAgIFdlYlByb2Nlc3MgXAotICAgIFdlYlByb2Nlc3NDb25uZWN0aW9u
IFwKLSAgICBXZWJQcm9jZXNzUG9vbCBcCi0gICAgV2ViUHJvY2Vzc1Byb3h5IFwKLSAgICBXZWJS
VENNb25pdG9yIFwKLSAgICBXZWJSVENSZXNvbHZlciBcCi0gICAgV2ViUmVzb3VyY2VMb2FkZXIg
XAotICAgIFdlYlNXQ2xpZW50Q29ubmVjdGlvbiBcCi0gICAgV2ViU1dDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb24gXAotICAgIFdlYlNXU2VydmVyQ29ubmVjdGlvbiBcCi0gICAgV2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uIFwKLSAgICBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3Zp
ZGVyIFwKLSAgICBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyUHJveHkgXAotICAg
IFdlYlNvY2tldENoYW5uZWwgXAotICAgIFdlYlNvY2tldFN0cmVhbSBcCi0gICAgV2ViVXNlckNv
bnRlbnRDb250cm9sbGVyIFwKLSAgICBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSBcCisJ
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgXAorCU5ldHdvcmtQ
cm9jZXNzL0luZGV4ZWREQi9XZWJJREJTZXJ2ZXIgXAorCU5ldHdvcmtQcm9jZXNzL05ldHdvcmtD
b250ZW50UnVsZUxpc3RNYW5hZ2VyIFwKKwlOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3Jh
Z2VNYW5hZ2VyU2V0IFwKKwlOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVD
b25uZWN0aW9uIFwKKwlOZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9t
UHJvdG9jb2xNYW5hZ2VyIFwKKwlOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5lbCBc
CisJTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24gXAor
CU5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzayBcCisJ
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24gXAorCU5ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0gXAorCU5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzIFwKKwlOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
ZXIgXAorCU5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrTUROU1JlZ2lzdGVyIFwKKwlOZXR3
b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1NvY2tldCBcCisJTmV0d29ya1Byb2Nlc3Mvd2Vi
cnRjL05ldHdvcmtSVENQcm92aWRlciBcCisJTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtS
VENNb25pdG9yIFwKKwlOZXR3b3JrUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIgXAor
CVNoYXJlZC9QbHVnaW5zL05QT2JqZWN0TWVzc2FnZVJlY2VpdmVyIFwKKwlTaGFyZWQvQXV4aWxp
YXJ5UHJvY2VzcyBcCisJU2hhcmVkL0FQSS9Db2NvYS9SZW1vdGVPYmplY3RSZWdpc3RyeSBcCisJ
U2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5IFwKKwlTaGFyZWQvQXV0
aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyIFwKKwlTaGFyZWQvV2ViQ29ubmVjdGlv
biBcCisJVUlQcm9jZXNzL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkgXAorCVVJUHJvY2Vzcy9S
ZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eSBcCisJVUlQcm9j
ZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkgXAorCVVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9X
ZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eSBcCisJVUlQcm9jZXNzL1dlYlBhc3RlYm9h
cmRQcm94eSBcCisJVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxl
clByb3h5IFwKKwlVSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclByb3h5IFwKKwlVSVBy
b2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclByb3h5IFwKKwlVSVByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkgXAorCVVJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5IFwK
KwlVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5IFwKKwlVSVByb2Nlc3MvTmV0
d29yay9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkgXAor
CVVJUHJvY2Vzcy9XZWJQYWdlUHJveHkgXAorCVVJUHJvY2Vzcy9WaXNpdGVkTGlua1N0b3JlIFwK
KwlVSVByb2Nlc3MvaW9zL1dlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94eSBc
CisJVUlQcm9jZXNzL2lvcy9FZGl0YWJsZUltYWdlQ29udHJvbGxlciBcCisJVUlQcm9jZXNzL2lv
cy9TbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyIFwKKwlVSVByb2Nlc3MvbWFjL1NlY0l0ZW1T
aGltUHJveHkgXAorCVVJUHJvY2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eSBcCisJVUlQ
cm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eSBcCisJVUlQcm9jZXNzL0Nv
Y29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eSBcCisJVUlQcm9jZXNzL0NvY29hL1VzZXJN
ZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkgXAorCVVJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJv
eHkgXAorCVVJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIgXAorCVVJUHJvY2Vzcy9XZWJQ
cm9jZXNzUHJveHkgXAorCVVJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9u
IFwKKwlVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wgXAorCVVJUHJvY2Vzcy9Eb3dubG9hZHMvRG93
bmxvYWRQcm94eSBcCisJVUlQcm9jZXNzL01lZGlhL0F1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJh
dG9yUHJveHkgXAorCVdlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJDb25uZWN0
aW9uVG9TZXJ2ZXIgXAorCVdlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uIFwKKwlX
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kIFwKKwlXZWJQcm9j
ZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzIFwKKwlXZWJQcm9jZXNzL0dQVS93ZWJydGMv
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIFwKKwlXZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBs
YXllclByaXZhdGVSZW1vdGUgXAorCVdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvbiBcCisJV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lv
biBcCisJV2ViUHJvY2Vzcy9HUFUvbWVkaWEvaW9zL1JlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlciBc
CisJV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyIFwKKwlXZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkgXAorCVdlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvbiBcCisJV2ViUHJvY2Vzcy9XZWJTdG9yYWdl
L1N0b3JhZ2VBcmVhTWFwIFwKKwlXZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50
Q29udHJvbGxlciBcCisJV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9ySW50ZXJydXB0
RGlzcGF0Y2hlciBcCisJV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUkgXAorCVdl
YlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvciBcCisJV2ViUHJvY2Vzcy9JbnNwZWN0b3Iv
UmVtb3RlV2ViSW5zcGVjdG9yVUkgXAorCVdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNz
Q29ubmVjdGlvbk1hbmFnZXIgXAorCVdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eSBcCisJ
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uIFwKKwlXZWJQcm9jZXNz
L05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbCBcCisJV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbiBcCisJV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0cmVhbSBc
CisJV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyIFwKKwlXZWJQcm9jZXNzL05l
dHdvcmsvd2VicnRjL1dlYlJUQ01vbml0b3IgXAorCVdlYlByb2Nlc3MvTmV0d29yay93ZWJydGMv
TGliV2ViUlRDTmV0d29yayBcCisJV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJNRE5TUmVn
aXN0ZXIgXAorCVdlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvV2ViUlRDUmVzb2x2ZXIgXAorCVdl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRl
ciBcCisJV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uIFwK
KwlXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uIFwKKwlXZWJQcm9jZXNz
L1dlYlByb2Nlc3MgXAorCVdlYlByb2Nlc3MvY29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlciBc
CisJV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlciBcCisJV2ViUHJvY2Vz
cy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyIFwKKwlXZWJQcm9jZXNzL0dlb2xvY2F0aW9u
L1dlYkdlb2xvY2F0aW9uTWFuYWdlciBcCisJV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9t
YXRpb25TZXNzaW9uUHJveHkgXAorCVdlYlByb2Nlc3MvRnVsbFNjcmVlbi9XZWJGdWxsU2NyZWVu
TWFuYWdlciBcCisJV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IgXAor
CVdlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyIFwKKwlXZWJQ
cm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVyIFwKKwlXZWJQcm9jZXNzL1dlYlBhZ2UvUmVt
b3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yIFwKKwlXZWJQcm9jZXNzL1dl
YlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3RvciBcCisJV2ViUHJvY2Vzcy9XZWJQYWdl
L0RyYXdpbmdBcmVhIFwKKwlXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZSBcCisJV2ViUHJvY2Vz
cy9XZWJQYWdlL1Zpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVyIFwKKwlXZWJQcm9jZXNzL1dlYlBh
Z2UvQ29jb2EvVGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5IFwKKwlXZWJQcm9jZXNzL1dlYlBh
Z2UvVmlld1VwZGF0ZURpc3BhdGNoZXIgXAorCVBsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5l
Y3Rpb24gXAorCVBsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5IFwKKwlQbHVnaW5Q
cm9jZXNzL1BsdWdpblByb2Nlc3MgXAorCUdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcyBcCisJR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkg
XAorCUdQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5IFwKKwlHUFVQcm9jZXNz
L3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyIFwKKwlHUFVQcm9j
ZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXIgXAor
CUdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyIFwKKwlHUFVQcm9j
ZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgXAorCUdQVVByb2Nlc3Mv
d2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIgXAorCUdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyIFwKKwlHUFVQcm9jZXNzL0dQVVByb2Nlc3MgXAor
CUdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5IFwKKwlHUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eSBcCisJR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVBdWRpb1Nlc3Npb25Qcm94eSBcCisJR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb25Qcm94eSBcCisJR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eSBc
CisJR1BVUHJvY2Vzcy9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHkgXAor
CUdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eSBcCisJR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVDRE1GYWN0b3J5UHJveHkgXAorCUdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVk
aWFSZXNvdXJjZU1hbmFnZXIgXAorCUdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQ
cm94eSBcCisJR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eSBcCisJR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSBcCisJR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlciBcCiAjCiAKIFNDUklQVFMgPSBcCkBA
IC0yNTUsMTUgKzI1NSwxNCBAQCBIRUFERVJfRkxBR1MgPSAkKHNoZWxsIGVjaG8gJChCVUlMVF9Q
Uk9ECiAKIC5QSE9OWSA6IGFsbAogCi1hbGwgOiBcCi0gICAgJChNRVNTQUdFX1JFQ0VJVkVSUzol
PSVNZXNzYWdlUmVjZWl2ZXIuY3BwKSBcCi0gICAgJChNRVNTQUdFX1JFQ0VJVkVSUzolPSVNZXNz
YWdlcy5oKSBcCi0gICAgJChNRVNTQUdFX1JFQ0VJVkVSUzolPSVNZXNzYWdlc1JlcGxpZXMuaCkg
XAorYWxsIDogTWVzc2FnZU5hbWVzLmggTWVzc2FnZU5hbWVzLmNwcCBcCisgICAgJChhZGRzdWZm
aXggTWVzc2FnZVJlY2VpdmVyLmNwcCwkKG5vdGRpciAkKE1FU1NBR0VfUkVDRUlWRVJTKSkpIFwK
KyAgICAkKGFkZHN1ZmZpeCBNZXNzYWdlcy5oLCQobm90ZGlyICQoTUVTU0FHRV9SRUNFSVZFUlMp
KSkgXAorICAgICQoYWRkc3VmZml4IE1lc3NhZ2VzUmVwbGllcy5oLCQobm90ZGlyICQoTUVTU0FH
RV9SRUNFSVZFUlMpKSkgXAogIwogCi0lTWVzc2FnZVJlY2VpdmVyLmNwcCAlTWVzc2FnZXMuaCAl
TWVzc2FnZXNSZXBsaWVzLmggOiAlLm1lc3NhZ2VzLmluICQoU0NSSVBUUykKLQlAZWNobyBHZW5l
cmF0aW5nIG1lc3NhZ2UgcmVjZWl2ZXIgZm9yICQqLi4uCi0JQHB5dGhvbiAkKFdlYktpdDIpL1Nj
cmlwdHMvZ2VuZXJhdGUtbWVzc2FnZS1yZWNlaXZlci5weSAkPCAtLWltcGxlbWVudGF0aW9uICQq
TWVzc2FnZVJlY2VpdmVyLmNwcCAtLWhlYWRlciAkKk1lc3NhZ2VzLmggLS1yZXBseS1oZWFkZXIg
JCpNZXNzYWdlc1JlcGxpZXMuaAorJChhZGRzdWZmaXggTWVzc2FnZVJlY2VpdmVyLmNwcCwkKG5v
dGRpciAkKE1FU1NBR0VfUkVDRUlWRVJTKSkpICQoYWRkc3VmaXggTWVzc2FnZXMuaCwkKG5vdGRp
ciAkKE1FU1NBR0VfUkVDRUlWRVJTKSkpICQoYWRkc3VmZml4IE1lc3NhZ2VzUmVwbGllcy5oLCQo
bm90ZGlyICQoTUVTU0FHRV9SRUNFSVZFUlMpKSkgTWVzc2FnZU5hbWVzLmggTWVzc2FnZU5hbWVz
LmNwcDogJChhZGRzdWZmaXggLm1lc3NhZ2VzLmluLCQoTUVTU0FHRV9SRUNFSVZFUlMpKSAkKFND
UklQVFMpCisJQHB5dGhvbiAkKFdlYktpdDIpL1NjcmlwdHMvZ2VuZXJhdGUtbWVzc2FnZS1yZWNl
aXZlci5weSAkKFdlYktpdDIpICQoTUVTU0FHRV9SRUNFSVZFUlMpCiAKIFRFWFRfUFJFUFJPQ0VT
U09SX0ZMQUdTPS1FIC1QIC13CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvUGxhdGZvcm1HVEsuY21h
a2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9QbGF0Zm9ybUdUSy5jbWFrZQkocmV2aXNp
b24gMjYxMjM4KQorKysgU291cmNlL1dlYktpdC9QbGF0Zm9ybUdUSy5jbWFrZQkod29ya2luZyBj
b3B5KQpAQCAtNDMsOSArNDMsOSBAQCBpZiAoTk9UIFVTRV9HVEs0KQogICAgICAgICBXZWJQcm9j
ZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5jcHAKICAgICApCiAgICAg
bGlzdChBUFBFTkQgV2ViS2l0X01FU1NBR0VTX0lOX0ZJTEVTCi0gICAgICAgIFVJUHJvY2Vzcy9W
aWV3R2VzdHVyZUNvbnRyb2xsZXIubWVzc2FnZXMuaW4KKyAgICAgICAgVUlQcm9jZXNzL1ZpZXdH
ZXN0dXJlQ29udHJvbGxlcgogCi0gICAgICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVy
ZUdlb21ldHJ5Q29sbGVjdG9yLm1lc3NhZ2VzLmluCisgICAgICAgIFdlYlByb2Nlc3MvV2ViUGFn
ZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yCiAgICAgKQogZW5kaWYgKCkKIApJbmRleDog
U291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvU291cmNlc0NvY29hLnR4dAkocmV2aXNpb24gMjYxMjM4KQorKysgU291cmNlL1dlYktpdC9T
b3VyY2VzQ29jb2EudHh0CSh3b3JraW5nIGNvcHkpCkBAIC02NTYsNiArNjU2LDcgQEAgR1BVUHJv
Y2Vzc1Byb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAogR1BVUHJvY2Vzc01lc3NhZ2VSZWNlaXZlci5j
cHAKIExpYldlYlJUQ0NvZGVjc1Byb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAogTGliV2ViUlRDQ29k
ZWNzTWVzc2FnZVJlY2VpdmVyLmNwcAorTWVzc2FnZU5hbWVzLmNwcAogUmVtb3RlQXVkaW9EZXN0
aW5hdGlvbk1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9u
UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiBSZW1vdGVBdWRpb1Nlc3Npb25NZXNzYWdlUmVjZWl2
ZXIuY3BwCkluZGV4OiBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCShyZXZpc2lvbiAyNjEyMzgpCisrKyBTb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTExNiw4ICsxMTYsOCBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgTG9nZ2VyJiBs
b2dnZXIoKSBmaW5hbCB7IHJldHVybiBtX3Byb2Nlc3MubG9nZ2VyKCk7IH0KLSAgICB2b2lkIGFk
ZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1l
LCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYgcmVjZWl2ZXIpIGZpbmFsIHsgfQotICAgIHZvaWQgcmVt
b3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5h
bWUpIGZpbmFsIHsgfQorICAgIHZvaWQgYWRkTWVzc2FnZVJlY2VpdmVyKElQQzo6UmVjZWl2ZXJO
YW1lLCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYpIGZpbmFsIHsgfQorICAgIHZvaWQgcmVtb3ZlTWVz
c2FnZVJlY2VpdmVyKElQQzo6UmVjZWl2ZXJOYW1lIG1lc3NhZ2VSZWNlaXZlck5hbWUpIGZpbmFs
IHsgfQogICAgIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbigpIGZpbmFsIHsgcmV0dXJuIG1f
cHJvY2Vzcy5jb25uZWN0aW9uKCk7IH0KICAgICBib29sIHdpbGxTdGFydENhcHR1cmUoQ2FwdHVy
ZURldmljZTo6RGV2aWNlVHlwZSB0eXBlKSBjb25zdCBmaW5hbAogICAgIHsKQEAgLTE4Nyw5ICsx
ODcsOSBAQCBMb2dnZXImIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmxvZ2dlCiAgICAgcmV0
dXJuICptX2xvZ2dlcjsKIH0KIAotdm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRS
ZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OlN0
cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBt
ZXNzYWdlTmFtZSkKK3ZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZUlu
dmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpNZXNzYWdlTmFt
ZSBtZXNzYWdlTmFtZSkKIHsKLSAgICBXVEZMb2dBbHdheXMoIlJlY2VpdmVkIGFuIGludmFsaWQg
bWVzc2FnZSBcIiVzLiVzXCIgZnJvbSB0aGUgd2ViIHByb2Nlc3MuXG4iLCBtZXNzYWdlUmVjZWl2
ZXJOYW1lLnRvU3RyaW5nKCkuZGF0YSgpLCBtZXNzYWdlTmFtZS50b1N0cmluZygpLmRhdGEoKSk7
CisgICAgV1RGTG9nQWx3YXlzKCJSZWNlaXZlZCBhbiBpbnZhbGlkIG1lc3NhZ2UgXCIlc1wiIGZy
b20gdGhlIHdlYiBwcm9jZXNzLlxuIiwgZGVzY3JpcHRpb24obWVzc2FnZU5hbWUpKTsKICAgICBD
UkFTSCgpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9H
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgJKHJldmlzaW9uIDI2MTIzOCkKKysrIFNvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTE0NCw3ICsxNDQsNyBAQCBwcml2YXRlOgogCiAgICAgLy8gSVBDOjpDb25uZWN0aW9u
OjpDbGllbnQKICAgICB2b2lkIGRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYpIGZpbmFsOwotICAg
IHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6U3Ry
aW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1l
c3NhZ2VOYW1lKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VOYW1lKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2Vp
dmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwogICAgIHZv
aWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYs
IHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JikgZmluYWw7CiAKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuY3BwCShyZXZpc2lvbiAyNjEyMzgpCisrKyBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjY0LDcgKzI2NCw3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OmRpZFIKICAgICAgICAgcmV0dXJuIHBheW1lbnRDb29yZGluYXRvcigpLmRpZFJlY2VpdmVN
ZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwogI2VuZGlmCiAKLSAgICBXVEZMb2dBbHdheXMo
IlVuaGFuZGxlZCBuZXR3b3JrIHByb2Nlc3MgbWVzc2FnZSAnJXM6JXMnIiwgZGVjb2Rlci5tZXNz
YWdlUmVjZWl2ZXJOYW1lKCkudG9TdHJpbmcoKS5kYXRhKCksIGRlY29kZXIubWVzc2FnZU5hbWUo
KS50b1N0cmluZygpLmRhdGEoKSk7CisgICAgV1RGTG9nQWx3YXlzKCJVbmhhbmRsZWQgbmV0d29y
ayBwcm9jZXNzIG1lc3NhZ2UgJyVzJyIsIGRlc2NyaXB0aW9uKGRlY29kZXIubWVzc2FnZU5hbWUo
KSkpOwogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCkBAIC0zMDcsNyArMzA3LDcgQEAg
dm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkUgogICAgICAgICByZXR1cm4g
cGF5bWVudENvb3JkaW5hdG9yKCkuZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRl
Y29kZXIsIHJlcGx5KTsKICNlbmRpZgogCi0gICAgV1RGTG9nQWx3YXlzKCJVbmhhbmRsZWQgbmV0
d29yayBwcm9jZXNzIG1lc3NhZ2UgJyVzOiVzJyIsIGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFt
ZSgpLnRvU3RyaW5nKCkuZGF0YSgpLCBkZWNvZGVyLm1lc3NhZ2VOYW1lKCkudG9TdHJpbmcoKS5k
YXRhKCkpOworICAgIFdURkxvZ0Fsd2F5cygiVW5oYW5kbGVkIG5ldHdvcmsgcHJvY2VzcyBtZXNz
YWdlICclcyciLCBkZXNjcmlwdGlvbihkZWNvZGVyLm1lc3NhZ2VOYW1lKCkpKTsKICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKIH0KIApAQCAtMzU2LDkgKzM1Niw5IEBAIHZvaWQgTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZEMKICNlbmRpZgogfQogCi12b2lkIE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpTdHJp
bmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNz
YWdlTmFtZSBtZXNzYWdlTmFtZSkKIHsKLSAgICBSRUxFQVNFX0xPR19GQVVMVChJUEMsICJSZWNl
aXZlZCBhbiBpbnZhbGlkIG1lc3NhZ2UgJyUiIFBVQkxJQ19MT0dfU1RSSU5HICI6OiUiIFBVQkxJ
Q19MT0dfU1RSSU5HICInIGZyb20gV2ViQ29udGVudCBwcm9jZXNzICUiIFBSSXU2NCAiLCByZXF1
ZXN0aW5nIGZvciBpdCB0byBiZSB0ZXJtaW5hdGVkLiIsIG1lc3NhZ2VSZWNlaXZlck5hbWUudG9T
dHJpbmcoKS5kYXRhKCksIG1lc3NhZ2VOYW1lLnRvU3RyaW5nKCkuZGF0YSgpLCBtX3dlYlByb2Nl
c3NJZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgIFJFTEVBU0VfTE9HX0ZBVUxUKElQQywgIlJl
Y2VpdmVkIGFuIGludmFsaWQgbWVzc2FnZSAnJSIgUFVCTElDX0xPR19TVFJJTkcgIicgZnJvbSBX
ZWJDb250ZW50IHByb2Nlc3MgJSIgUFJJdTY0ICIsIHJlcXVlc3RpbmcgZm9yIGl0IHRvIGJlIHRl
cm1pbmF0ZWQuIiwgZGVzY3JpcHRpb24obWVzc2FnZU5hbWUpLCBtX3dlYlByb2Nlc3NJZGVudGlm
aWVyLnRvVUludDY0KCkpOwogICAgIG1fbmV0d29ya1Byb2Nlc3MtPnBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OlRlcm1pbmF0ZVdl
YlByb2Nlc3MobV93ZWJQcm9jZXNzSWRlbnRpZmllciksIDApOwogfQogCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5oCShyZXZpc2lvbiAyNjEyMzgpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTE4Niw3ICsxODYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRS
ZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1
bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZENsb3NlKElQ
Qzo6Q29ubmVjdGlvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZl
ck5hbWUsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lKSBvdmVycmlkZTsKKyAgICB2
b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3Nh
Z2VOYW1lKSBvdmVycmlkZTsKIAogICAgIC8vIE1lc3NhZ2UgaGFuZGxlcnMuCiAgICAgdm9pZCBk
aWRSZWNlaXZlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYsIElQQzo6RGVjb2RlciYpOwpAQCAtMzI2LDggKzMyNiw2IEBAIHByaXZhdGU6CiAgICAg
Y29uc3QgU3RyaW5nJiBwYXltZW50Q29vcmRpbmF0b3JTb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlk
ZW50aWZpZXIoY29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmKSBmaW5hbDsKICAgICBj
b25zdCBTdHJpbmcmIHBheW1lbnRDb29yZGluYXRvclNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5
SWRlbnRpZmllcihjb25zdCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYpIGZpbmFsOwogICAg
IHN0ZDo6dW5pcXVlX3B0cjxQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlcj4gcGF5bWVudENv
b3JkaW5hdG9yQXV0aG9yaXphdGlvblByZXNlbnRlcihXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94
eSYsIFBLUGF5bWVudFJlcXVlc3QgKikgZmluYWw7Ci0gICAgdm9pZCBwYXltZW50Q29vcmRpbmF0
b3JBZGRNZXNzYWdlUmVjZWl2ZXIoV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmLCBjb25zdCBJ
UEM6OlN0cmluZ1JlZmVyZW5jZSYsIElQQzo6TWVzc2FnZVJlY2VpdmVyJikgZmluYWw7Ci0gICAg
dm9pZCBwYXltZW50Q29vcmRpbmF0b3JSZW1vdmVNZXNzYWdlUmVjZWl2ZXIoV2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHkmLCBjb25zdCBJUEM6OlN0cmluZ1JlZmVyZW5jZSYpIGZpbmFsOwogI2Vu
ZGlmCiAKICAgICBSZWY8SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAkocmV2aXNp
b24gMjYxMjM4KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxNCw3ICsyMTQsNyBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjpkaWRSZWNlaXZlTWVzc2FnZShJCiB7CiAgICAgQVNTRVJUKHBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKCkgPT0gJmNvbm5lY3Rpb24pOwogICAgIGlmIChwYXJlbnRQcm9jZXNzQ29ubmVjdGlv
bigpICE9ICZjb25uZWN0aW9uKSB7Ci0gICAgICAgIFdURkxvZ0Fsd2F5cygiSWdub3JlZCBtZXNz
YWdlICclczolcycgYmVjYXVzZSBpdCBkaWQgbm90IGNvbWUgZnJvbSB0aGUgVUlQcm9jZXNzIChk
ZXN0aW5hdGlvbjogJSIgUFJJdTY0ICIpIiwgZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCku
dG9TdHJpbmcoKS5kYXRhKCksIGRlY29kZXIubWVzc2FnZU5hbWUoKS50b1N0cmluZygpLmRhdGEo
KSwgZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpOworICAgICAgICBXVEZMb2dBbHdheXMoIklnbm9y
ZWQgbWVzc2FnZSAnJXMnIGJlY2F1c2UgaXQgZGlkIG5vdCBjb21lIGZyb20gdGhlIFVJUHJvY2Vz
cyAoZGVzdGluYXRpb246ICUiIFBSSXU2NCAiKSIsIGRlc2NyaXB0aW9uKGRlY29kZXIubWVzc2Fn
ZU5hbWUoKSksIGRlY29kZXIuZGVzdGluYXRpb25JRCgpKTsKICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yNDEsNyArMjQxLDcgQEAgdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6ZGlkUmVjZWl2ZVN5bmNNZXNzYQogewogICAgIEFTU0VSVChwYXJl
bnRQcm9jZXNzQ29ubmVjdGlvbigpID09ICZjb25uZWN0aW9uKTsKICAgICBpZiAocGFyZW50UHJv
Y2Vzc0Nvbm5lY3Rpb24oKSAhPSAmY29ubmVjdGlvbikgewotICAgICAgICBXVEZMb2dBbHdheXMo
Iklnbm9yZWQgbWVzc2FnZSAnJXM6JXMnIGJlY2F1c2UgaXQgZGlkIG5vdCBjb21lIGZyb20gdGhl
IFVJUHJvY2VzcyAoZGVzdGluYXRpb246ICUiIFBSSXU2NCAiKSIsIGRlY29kZXIubWVzc2FnZVJl
Y2VpdmVyTmFtZSgpLnRvU3RyaW5nKCkuZGF0YSgpLCBkZWNvZGVyLm1lc3NhZ2VOYW1lKCkudG9T
dHJpbmcoKS5kYXRhKCksIGRlY29kZXIuZGVzdGluYXRpb25JRCgpKTsKKyAgICAgICAgV1RGTG9n
QWx3YXlzKCJJZ25vcmVkIG1lc3NhZ2UgJyVzJyBiZWNhdXNlIGl0IGRpZCBub3QgY29tZSBmcm9t
IHRoZSBVSVByb2Nlc3MgKGRlc3RpbmF0aW9uOiAlIiBQUkl1NjQgIikiLCBkZXNjcmlwdGlvbihk
ZWNvZGVyLm1lc3NhZ2VOYW1lKCkpLCBkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSk7CiAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpJbmRleDogU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9pb3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3NJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9pb3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NJT1MubW0JKHJldmlzaW9uIDI2MTIzOCkKKysr
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzSU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC04NSwxNCArODUsNiBAQCBzdGQ6OnVuaXF1
ZV9wdHI8UGF5bWVudEF1dGhvcml6YXRpb25QcmVzCiAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGF5
bWVudEF1dGhvcml6YXRpb25Db250cm9sbGVyPihjb29yZGluYXRvciwgcmVxdWVzdCk7CiB9CiAK
LXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnBheW1lbnRDb29yZGluYXRvckFk
ZE1lc3NhZ2VSZWNlaXZlcihXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYsIGNvbnN0IElQQzo6
U3RyaW5nUmVmZXJlbmNlJiwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImKQotewotfQotCi12b2lkIE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpwYXltZW50Q29vcmRpbmF0b3JSZW1vdmVNZXNz
YWdlUmVjZWl2ZXIoV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmLCBjb25zdCBJUEM6OlN0cmlu
Z1JlZmVyZW5jZSYpCi17Ci19Ci0KICNlbmRpZiAvLyBFTkFCTEUoQVBQTEVfUEFZX1JFTU9URV9V
SSkKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9Db25uZWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9Db25uZWN0aW9uLmNwcAkocmV2aXNpb24gMjYxMjM4KQorKysgU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0LDIxICs1NCwx
NyBAQCBjb25zdCBzaXplX3QgbWF4UGVuZGluZ0luY29taW5nTWVzc2FnZXNLCiBzdGQ6OmF0b21p
Yzx1bnNpZ25lZD4gVW5ib3VuZGVkU3luY2hyb25vdXNJUENTY29wZTo6dW5ib3VuZGVkU3luY2hy
b25vdXNJUENDb3VudCA9IDA7CiAKIHN0cnVjdCBDb25uZWN0aW9uOjpXYWl0Rm9yTWVzc2FnZVN0
YXRlIHsKLSAgICBXYWl0Rm9yTWVzc2FnZVN0YXRlKFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVj
ZWl2ZXJOYW1lLCBTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0
aW9uSUQsIE9wdGlvblNldDxXYWl0Rm9yT3B0aW9uPiB3YWl0Rm9yT3B0aW9ucykKLSAgICAgICAg
OiBtZXNzYWdlUmVjZWl2ZXJOYW1lKG1lc3NhZ2VSZWNlaXZlck5hbWUpCi0gICAgICAgICwgbWVz
c2FnZU5hbWUobWVzc2FnZU5hbWUpCisgICAgV2FpdEZvck1lc3NhZ2VTdGF0ZShNZXNzYWdlTmFt
ZSBtZXNzYWdlTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgT3B0aW9uU2V0PFdhaXRGb3JP
cHRpb24+IHdhaXRGb3JPcHRpb25zKQorICAgICAgICA6IG1lc3NhZ2VOYW1lKG1lc3NhZ2VOYW1l
KQogICAgICAgICAsIGRlc3RpbmF0aW9uSUQoZGVzdGluYXRpb25JRCkKICAgICAgICAgLCB3YWl0
Rm9yT3B0aW9ucyh3YWl0Rm9yT3B0aW9ucykKICAgICB7CiAgICAgfQogCi0gICAgU3RyaW5nUmVm
ZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWU7Ci0gICAgU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VO
YW1lOworICAgIE1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lOwogICAgIHVpbnQ2NF90IGRlc3RpbmF0
aW9uSUQ7Ci0KICAgICBPcHRpb25TZXQ8V2FpdEZvck9wdGlvbj4gd2FpdEZvck9wdGlvbnM7CiAg
ICAgYm9vbCBtZXNzYWdlV2FpdGluZ0ludGVycnVwdGVkID0gZmFsc2U7Ci0KICAgICBzdGQ6OnVu
aXF1ZV9wdHI8RGVjb2Rlcj4gZGVjb2RlcjsKIH07CiAKQEAgLTMxNSw3ICszMTEsNyBAQCB2b2lk
IENvbm5lY3Rpb246OnNldFNob3VsZEV4aXRPblN5bmNNZXNzCiAgICAgbV9zaG91bGRFeGl0T25T
eW5jTWVzc2FnZVNlbmRGYWlsdXJlID0gc2hvdWxkRXhpdE9uU3luY01lc3NhZ2VTZW5kRmFpbHVy
ZTsKIH0KIAotdm9pZCBDb25uZWN0aW9uOjphZGRXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIoU3Ry
aW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIFdvcmtRdWV1ZSYgd29ya1F1ZXVlLCBX
b3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIqIHdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcikKK3ZvaWQg
Q29ubmVjdGlvbjo6YWRkV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKFJlY2VpdmVyTmFtZSBtZXNz
YWdlUmVjZWl2ZXJOYW1lLCBXb3JrUXVldWUmIHdvcmtRdWV1ZSwgV29ya1F1ZXVlTWVzc2FnZVJl
Y2VpdmVyKiB3b3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6
OmlzTWFpbigpKTsKIApAQCAtMzI1LDcgKzMyMSw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6YWRkV29y
a1F1ZXVlTWVzc2FnZVJlY2UKICAgICBtX3dvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcnMuYWRkKG1l
c3NhZ2VSZWNlaXZlck5hbWUsIHN0ZDo6bWFrZV9wYWlyKCZ3b3JrUXVldWUsIHdvcmtRdWV1ZU1l
c3NhZ2VSZWNlaXZlcikpOwogfQogCi12b2lkIENvbm5lY3Rpb246OnJlbW92ZVdvcmtRdWV1ZU1l
c3NhZ2VSZWNlaXZlcihTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSkKK3ZvaWQg
Q29ubmVjdGlvbjo6cmVtb3ZlV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKFJlY2VpdmVyTmFtZSBt
ZXNzYWdlUmVjZWl2ZXJOYW1lKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAK
QEAgLTM0OSw3ICszNDUsNyBAQCB2b2lkIENvbm5lY3Rpb246OmRpc3BhdGNoV29ya1F1ZXVlTWVz
c2FnCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIHJlcGx5RW5jb2RlciA9IG1h
a2VVbmlxdWU8RW5jb2Rlcj4oIklQQyIsICJTeW5jTWVzc2FnZVJlcGx5Iiwgc3luY1JlcXVlc3RJ
RCk7CisgICAgYXV0byByZXBseUVuY29kZXIgPSBtYWtlVW5pcXVlPEVuY29kZXI+KE1lc3NhZ2VO
YW1lOjpTeW5jTWVzc2FnZVJlcGx5LCBzeW5jUmVxdWVzdElEKTsKIAogICAgIC8vIEhhbmQgb2Zm
IGJvdGggdGhlIGRlY29kZXIgYW5kIGVuY29kZXIgdG8gdGhlIHdvcmsgcXVldWUgbWVzc2FnZSBy
ZWNlaXZlci4KICAgICB3b3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIuZGlkUmVjZWl2ZVN5bmNNZXNz
YWdlKCp0aGlzLCBkZWNvZGVyLCByZXBseUVuY29kZXIpOwpAQCAtMzYxLDcgKzM1Nyw3IEBAIHZv
aWQgQ29ubmVjdGlvbjo6ZGlzcGF0Y2hXb3JrUXVldWVNZXNzYWcKICAgICAgICAgc2VuZFN5bmNS
ZXBseShXVEZNb3ZlKHJlcGx5RW5jb2RlcikpOwogfQogCi12b2lkIENvbm5lY3Rpb246OmFkZFRo
cmVhZE1lc3NhZ2VSZWNlaXZlcihTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwg
VGhyZWFkTWVzc2FnZVJlY2VpdmVyKiB0aHJlYWRNZXNzYWdlUmVjZWl2ZXIpCit2b2lkIENvbm5l
Y3Rpb246OmFkZFRocmVhZE1lc3NhZ2VSZWNlaXZlcihSZWNlaXZlck5hbWUgbWVzc2FnZVJlY2Vp
dmVyTmFtZSwgVGhyZWFkTWVzc2FnZVJlY2VpdmVyKiB0aHJlYWRNZXNzYWdlUmVjZWl2ZXIpCiB7
CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIApAQCAtMzcxLDcgKzM2Nyw3IEBAIHZv
aWQgQ29ubmVjdGlvbjo6YWRkVGhyZWFkTWVzc2FnZVJlY2VpdmUKICAgICBtX3RocmVhZE1lc3Nh
Z2VSZWNlaXZlcnMuYWRkKG1lc3NhZ2VSZWNlaXZlck5hbWUsIHRocmVhZE1lc3NhZ2VSZWNlaXZl
cik7CiB9CiAKLXZvaWQgQ29ubmVjdGlvbjo6cmVtb3ZlVGhyZWFkTWVzc2FnZVJlY2VpdmVyKFN0
cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lKQordm9pZCBDb25uZWN0aW9uOjpyZW1v
dmVUaHJlYWRNZXNzYWdlUmVjZWl2ZXIoUmVjZWl2ZXJOYW1lIG1lc3NhZ2VSZWNlaXZlck5hbWUp
CiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIApAQCAtMzk1LDcgKzM5MSw3IEBA
IHZvaWQgQ29ubmVjdGlvbjo6ZGlzcGF0Y2hUaHJlYWRNZXNzYWdlUmUKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIGF1dG8gcmVwbHlFbmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNvZGVyPigi
SVBDIiwgIlN5bmNNZXNzYWdlUmVwbHkiLCBzeW5jUmVxdWVzdElEKTsKKyAgICBhdXRvIHJlcGx5
RW5jb2RlciA9IG1ha2VVbmlxdWU8RW5jb2Rlcj4oTWVzc2FnZU5hbWU6OlN5bmNNZXNzYWdlUmVw
bHksIHN5bmNSZXF1ZXN0SUQpOwogICAgIHRocmVhZE1lc3NhZ2VSZWNlaXZlci5kaWRSZWNlaXZl
U3luY01lc3NhZ2UoKnRoaXMsIGRlY29kZXIsIHJlcGx5RW5jb2Rlcik7CiAKICAgICAvLyBGSVhN
RTogSWYgdGhlIG1lc3NhZ2Ugd2FzIGludmFsaWQsIHdlIHNob3VsZCBzZW5kIGJhY2sgYSBTeW5j
TWVzc2FnZUVycm9yLgpAQCAtNDM2LDkgKzQzMiw5IEBAIHZvaWQgQ29ubmVjdGlvbjo6bWFya0N1
cnJlbnRseURpc3BhdGNoZWQKICAgICBtX2RpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZSA9IHRydWU7
CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVyPiBDb25uZWN0aW9uOjpjcmVhdGVTeW5jTWVz
c2FnZUVuY29kZXIoU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIFN0cmluZ1Jl
ZmVyZW5jZSBtZXNzYWdlTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgdWludDY0X3QmIHN5
bmNSZXF1ZXN0SUQpCitzdGQ6OnVuaXF1ZV9wdHI8RW5jb2Rlcj4gQ29ubmVjdGlvbjo6Y3JlYXRl
U3luY01lc3NhZ2VFbmNvZGVyKE1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lLCB1aW50NjRfdCBkZXN0
aW5hdGlvbklELCB1aW50NjRfdCYgc3luY1JlcXVlc3RJRCkKIHsKLSAgICBhdXRvIGVuY29kZXIg
PSBtYWtlVW5pcXVlPEVuY29kZXI+KG1lc3NhZ2VSZWNlaXZlck5hbWUsIG1lc3NhZ2VOYW1lLCBk
ZXN0aW5hdGlvbklEKTsKKyAgICBhdXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlPEVuY29kZXI+KG1l
c3NhZ2VOYW1lLCBkZXN0aW5hdGlvbklEKTsKICAgICBlbmNvZGVyLT5zZXRJc1N5bmNNZXNzYWdl
KHRydWUpOwogCiAgICAgLy8gRW5jb2RlIHRoZSBzeW5jIHJlcXVlc3QgSUQuCkBAIC00NTMsOSAr
NDQ5LDkgQEAgYm9vbCBDb25uZWN0aW9uOjpzZW5kTWVzc2FnZShzdGQ6OnVuaXF1ZQogICAgIGlm
ICghaXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAoaXNNYWluVGhy
ZWFkKCkgJiYgbV9pbkRpc3BhdGNoTWVzc2FnZU1hcmtlZFRvVXNlRnVsbHlTeW5jaHJvbm91c01v
ZGVGb3JUZXN0aW5nICYmICFlbmNvZGVyLT5pc1N5bmNNZXNzYWdlKCkgJiYgIShlbmNvZGVyLT5t
ZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gIklQQyIpICYmICFzZW5kT3B0aW9ucy5jb250YWlucyhT
ZW5kT3B0aW9uOjpJZ25vcmVGdWxseVN5bmNocm9ub3VzTW9kZSkpIHsKKyAgICBpZiAoaXNNYWlu
VGhyZWFkKCkgJiYgbV9pbkRpc3BhdGNoTWVzc2FnZU1hcmtlZFRvVXNlRnVsbHlTeW5jaHJvbm91
c01vZGVGb3JUZXN0aW5nICYmICFlbmNvZGVyLT5pc1N5bmNNZXNzYWdlKCkgJiYgIShlbmNvZGVy
LT5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gUmVjZWl2ZXJOYW1lOjpJUEMpICYmICFzZW5kT3B0
aW9ucy5jb250YWlucyhTZW5kT3B0aW9uOjpJZ25vcmVGdWxseVN5bmNocm9ub3VzTW9kZSkpIHsK
ICAgICAgICAgdWludDY0X3Qgc3luY1JlcXVlc3RJRDsKLSAgICAgICAgYXV0byB3cmFwcGVkTWVz
c2FnZSA9IGNyZWF0ZVN5bmNNZXNzYWdlRW5jb2RlcigiSVBDIiwgIldyYXBwZWRBc3luY01lc3Nh
Z2VGb3JUZXN0aW5nIiwgZW5jb2Rlci0+ZGVzdGluYXRpb25JRCgpLCBzeW5jUmVxdWVzdElEKTsK
KyAgICAgICAgYXV0byB3cmFwcGVkTWVzc2FnZSA9IGNyZWF0ZVN5bmNNZXNzYWdlRW5jb2RlcihN
ZXNzYWdlTmFtZTo6V3JhcHBlZEFzeW5jTWVzc2FnZUZvclRlc3RpbmcsIGVuY29kZXItPmRlc3Rp
bmF0aW9uSUQoKSwgc3luY1JlcXVlc3RJRCk7CiAgICAgICAgIHdyYXBwZWRNZXNzYWdlLT5zZXRG
dWxseVN5bmNocm9ub3VzTW9kZUZvclRlc3RpbmcoKTsKICAgICAgICAgd3JhcHBlZE1lc3NhZ2Ut
PndyYXBGb3JUZXN0aW5nKFdURk1vdmUoZW5jb2RlcikpOwogICAgICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8Ym9vbD4oc2VuZFN5bmNNZXNzYWdlKHN5bmNSZXF1ZXN0SUQsIFdURk1vdmUod3JhcHBl
ZE1lc3NhZ2UpLCBTZWNvbmRzOjppbmZpbml0eSgpLCB7IH0pKTsKQEAgLTQ5MCw3ICs0ODYsNyBA
QCBTZWNvbmRzIENvbm5lY3Rpb246OnRpbWVvdXRSZXNwZWN0aW5nSWduCiAgICAgcmV0dXJuIG1f
aWdub3JlVGltZW91dHNGb3JUZXN0aW5nID8gU2Vjb25kczo6aW5maW5pdHkoKSA6IHRpbWVvdXQ7
CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiBDb25uZWN0aW9uOjp3YWl0Rm9yTWVzc2Fn
ZShTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgU3RyaW5nUmVmZXJlbmNlIG1l
c3NhZ2VOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQsIE9wdGlv
blNldDxXYWl0Rm9yT3B0aW9uPiB3YWl0Rm9yT3B0aW9ucykKK3N0ZDo6dW5pcXVlX3B0cjxEZWNv
ZGVyPiBDb25uZWN0aW9uOjp3YWl0Rm9yTWVzc2FnZShNZXNzYWdlTmFtZSBtZXNzYWdlTmFtZSwg
dWludDY0X3QgZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0LCBPcHRpb25TZXQ8V2FpdEZv
ck9wdGlvbj4gd2FpdEZvck9wdGlvbnMpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigp
KTsKICAgICBhdXRvIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKTsKQEAgLTUwNiw3ICs1
MDIsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gQ29ubmVjdGlvbjo6d2FpCiAgICAgICAg
IGZvciAoYXV0byBpdCA9IG1faW5jb21pbmdNZXNzYWdlcy5iZWdpbigpLCBlbmQgPSBtX2luY29t
aW5nTWVzc2FnZXMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAgICAgICAgc3RkOjp1
bmlxdWVfcHRyPERlY29kZXI+JiBtZXNzYWdlID0gKml0OwogCi0gICAgICAgICAgICBpZiAobWVz
c2FnZS0+bWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IG1lc3NhZ2VSZWNlaXZlck5hbWUgJiYgbWVz
c2FnZS0+bWVzc2FnZU5hbWUoKSA9PSBtZXNzYWdlTmFtZSAmJiBtZXNzYWdlLT5kZXN0aW5hdGlv
bklEKCkgPT0gZGVzdGluYXRpb25JRCkgeworICAgICAgICAgICAgaWYgKG1lc3NhZ2UtPm1lc3Nh
Z2VOYW1lKCkgPT0gbWVzc2FnZU5hbWUgJiYgbWVzc2FnZS0+ZGVzdGluYXRpb25JRCgpID09IGRl
c3RpbmF0aW9uSUQpIHsKICAgICAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4g
cmV0dXJuZWRNZXNzYWdlID0gV1RGTW92ZShtZXNzYWdlKTsKIAogICAgICAgICAgICAgICAgIG1f
aW5jb21pbmdNZXNzYWdlcy5yZW1vdmUoaXQpOwpAQCAtNTI4LDcgKzUyNCw3IEBAIHN0ZDo6dW5p
cXVlX3B0cjxEZWNvZGVyPiBDb25uZWN0aW9uOjp3YWkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgfQogCi0gICAgV2FpdEZvck1lc3NhZ2VTdGF0ZSB3YWl0aW5nRm9yTWVzc2FnZShtZXNz
YWdlUmVjZWl2ZXJOYW1lLCBtZXNzYWdlTmFtZSwgZGVzdGluYXRpb25JRCwgd2FpdEZvck9wdGlv
bnMpOworICAgIFdhaXRGb3JNZXNzYWdlU3RhdGUgd2FpdGluZ0Zvck1lc3NhZ2UobWVzc2FnZU5h
bWUsIGRlc3RpbmF0aW9uSUQsIHdhaXRGb3JPcHRpb25zKTsKIAogICAgIHsKICAgICAgICAgYXV0
byBsb2NrZXIgPSBob2xkTG9jayhtX3dhaXRGb3JNZXNzYWdlTXV0ZXgpOwpAQCAtNjAwLDE0ICs1
OTYsMTMgQEAgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IENvbm5lY3Rpb246OnNlbgogICAgIGlm
IChzZW5kU3luY09wdGlvbnMuY29udGFpbnMoU2VuZFN5bmNPcHRpb246OkZvcmNlRGlzcGF0Y2hX
aGVuRGVzdGluYXRpb25Jc1dhaXRpbmdGb3JVbmJvdW5kZWRTeW5jUmVwbHkpKQogICAgICAgICBz
ZW5kT3B0aW9ucyA9IHNlbmRPcHRpb25zIHwgSVBDOjpTZW5kT3B0aW9uOjpEaXNwYXRjaE1lc3Nh
Z2VFdmVuV2hlbldhaXRpbmdGb3JVbmJvdW5kZWRTeW5jUmVwbHk7CiAKLSAgICBhdXRvIG1lc3Nh
Z2VSZWNlaXZlck5hbWUgPSBlbmNvZGVyLT5tZXNzYWdlUmVjZWl2ZXJOYW1lKCk7CiAgICAgYXV0
byBtZXNzYWdlTmFtZSA9IGVuY29kZXItPm1lc3NhZ2VOYW1lKCk7CiAgICAgc2VuZE1lc3NhZ2Uo
V1RGTW92ZShlbmNvZGVyKSwgc2VuZE9wdGlvbnMpOwogCiAgICAgLy8gVGhlbiB3YWl0IGZvciBh
IHJlcGx5LiBXYWl0aW5nIGZvciBhIHJlcGx5IGNvdWxkIGludm9sdmUgZGlzcGF0Y2hpbmcgaW5j
b21pbmcgc3luYyBtZXNzYWdlcywgc28KICAgICAvLyBrZWVwIGFuIGV4dHJhIHJlZmVyZW5jZSB0
byB0aGUgY29ubmVjdGlvbiBoZXJlIGluIGNhc2UgaXQncyBpbnZhbGlkYXRlZC4KICAgICBSZWY8
Q29ubmVjdGlvbj4gcHJvdGVjdCgqdGhpcyk7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+
IHJlcGx5ID0gd2FpdEZvclN5bmNSZXBseShzeW5jUmVxdWVzdElELCBtZXNzYWdlUmVjZWl2ZXJO
YW1lLCBtZXNzYWdlTmFtZSwgdGltZW91dCwgc2VuZFN5bmNPcHRpb25zKTsKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8RGVjb2Rlcj4gcmVwbHkgPSB3YWl0Rm9yU3luY1JlcGx5KHN5bmNSZXF1ZXN0SUQs
IG1lc3NhZ2VOYW1lLCB0aW1lb3V0LCBzZW5kU3luY09wdGlvbnMpOwogCiAgICAgLS1tX2luU2Vu
ZFN5bmNDb3VudDsKIApAQCAtNjI0LDcgKzYxOSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVy
PiBDb25uZWN0aW9uOjpzZW4KICAgICByZXR1cm4gcmVwbHk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0
cjxEZWNvZGVyPiBDb25uZWN0aW9uOjp3YWl0Rm9yU3luY1JlcGx5KHVpbnQ2NF90IHN5bmNSZXF1
ZXN0SUQsIFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBTdHJpbmdSZWZlcmVu
Y2UgbWVzc2FnZU5hbWUsIFNlY29uZHMgdGltZW91dCwgT3B0aW9uU2V0PFNlbmRTeW5jT3B0aW9u
PiBzZW5kU3luY09wdGlvbnMpCitzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gQ29ubmVjdGlvbjo6
d2FpdEZvclN5bmNSZXBseSh1aW50NjRfdCBzeW5jUmVxdWVzdElELCBNZXNzYWdlTmFtZSBtZXNz
YWdlTmFtZSwgU2Vjb25kcyB0aW1lb3V0LCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRpb24+IHNlbmRT
eW5jT3B0aW9ucykKIHsKICAgICB0aW1lb3V0ID0gdGltZW91dFJlc3BlY3RpbmdJZ25vcmVUaW1l
b3V0c0ZvclRlc3RpbmcodGltZW91dCk7CiAgICAgTW9ub3RvbmljVGltZSBhYnNvbHV0ZVRpbWUg
PSBNb25vdG9uaWNUaW1lOjpub3coKSArIHRpbWVvdXQ7CkBAIC02NjksOSArNjY0LDkgQEAgc3Rk
Ojp1bmlxdWVfcHRyPERlY29kZXI+IENvbm5lY3Rpb246OndhaQogICAgIH0KIAogI2lmIE9TKERB
UldJTikKLSAgICBSRUxFQVNFX0xPR19FUlJPUihJUEMsICJDb25uZWN0aW9uOjp3YWl0Rm9yU3lu
Y1JlcGx5OiBUaW1lZC1vdXQgd2hpbGUgd2FpdGluZyBmb3IgcmVwbHkgZm9yICV7cHVibGljfXM6
OiV7cHVibGljfXMgZnJvbSBwcm9jZXNzICVkLCBpZCA9ICUiIFBSSXU2NCwgbWVzc2FnZVJlY2Vp
dmVyTmFtZS50b1N0cmluZygpLmRhdGEoKSwgbWVzc2FnZU5hbWUudG9TdHJpbmcoKS5kYXRhKCks
IHJlbW90ZVByb2Nlc3NJRCgpLCBzeW5jUmVxdWVzdElEKTsKKyAgICBSRUxFQVNFX0xPR19FUlJP
UihJUEMsICJDb25uZWN0aW9uOjp3YWl0Rm9yU3luY1JlcGx5OiBUaW1lZC1vdXQgd2hpbGUgd2Fp
dGluZyBmb3IgcmVwbHkgZm9yICV7cHVibGljfXMgZnJvbSBwcm9jZXNzICVkLCBpZCA9ICUiIFBS
SXU2NCwgZGVzY3JpcHRpb24obWVzc2FnZU5hbWUpLCByZW1vdGVQcm9jZXNzSUQoKSwgc3luY1Jl
cXVlc3RJRCk7CiAjZWxzZQotICAgIFJFTEVBU0VfTE9HX0VSUk9SKElQQywgIkNvbm5lY3Rpb246
OndhaXRGb3JTeW5jUmVwbHk6IFRpbWVkLW91dCB3aGlsZSB3YWl0aW5nIGZvciByZXBseSBmb3Ig
JXM6OiVzLCBpZCA9ICUiIFBSSXU2NCwgbWVzc2FnZVJlY2VpdmVyTmFtZS50b1N0cmluZygpLmRh
dGEoKSwgbWVzc2FnZU5hbWUudG9TdHJpbmcoKS5kYXRhKCksIHN5bmNSZXF1ZXN0SUQpOworICAg
IFJFTEVBU0VfTE9HX0VSUk9SKElQQywgIkNvbm5lY3Rpb246OndhaXRGb3JTeW5jUmVwbHk6IFRp
bWVkLW91dCB3aGlsZSB3YWl0aW5nIGZvciByZXBseSBmb3IgJXMsIGlkID0gJSIgUFJJdTY0LCBk
ZXNjcmlwdGlvbihtZXNzYWdlTmFtZSksIHN5bmNSZXF1ZXN0SUQpOwogI2VuZGlmCiAKICAgICBk
aWRSZWNlaXZlU3luY1JlcGx5KHNlbmRTeW5jT3B0aW9ucyk7CkBAIC03MTEsMjMgKzcwNiwxNiBA
QCB2b2lkIENvbm5lY3Rpb246OnByb2Nlc3NJbmNvbWluZ1N5bmNSZXBsCiAKIHZvaWQgQ29ubmVj
dGlvbjo6cHJvY2Vzc0luY29taW5nTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gbWVz
c2FnZSkKIHsKLSAgICBBU1NFUlQoIW1lc3NhZ2UtPm1lc3NhZ2VSZWNlaXZlck5hbWUoKS5pc0Vt
cHR5KCkpOwotICAgIEFTU0VSVCghbWVzc2FnZS0+bWVzc2FnZU5hbWUoKS5pc0VtcHR5KCkpOwor
ICAgIEFTU0VSVChtZXNzYWdlLT5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgIT0gUmVjZWl2ZXJOYW1l
OjpJbnZhbGlkKTsKIAotICAgIGlmIChtZXNzYWdlLT5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0g
IklQQyIgJiYgbWVzc2FnZS0+bWVzc2FnZU5hbWUoKSA9PSAiU3luY01lc3NhZ2VSZXBseSIpIHsK
KyAgICBpZiAobWVzc2FnZS0+bWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlTmFtZTo6U3luY01lc3Nh
Z2VSZXBseSkgewogICAgICAgICBwcm9jZXNzSW5jb21pbmdTeW5jUmVwbHkoV1RGTW92ZShtZXNz
YWdlKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAoIVdvcmtRdWV1ZU1lc3Nh
Z2VSZWNlaXZlck1hcDo6aXNWYWxpZEtleShtZXNzYWdlLT5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkp
IHx8ICFUaHJlYWRNZXNzYWdlUmVjZWl2ZXJNYXA6OmlzVmFsaWRLZXkobWVzc2FnZS0+bWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpKSkgewotICAgICAgICBSZWZQdHI8Q29ubmVjdGlvbj4gcHJvdGVjdGVk
VGhpcyh0aGlzKTsKLSAgICAgICAgU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWVS
ZWZlcmVuY2UgPSBtZXNzYWdlLT5tZXNzYWdlUmVjZWl2ZXJOYW1lKCk7Ci0gICAgICAgIFN0cmlu
ZyBtZXNzYWdlUmVjZWl2ZXJOYW1lKG1lc3NhZ2VSZWNlaXZlck5hbWVSZWZlcmVuY2UuaXNFbXB0
eSgpID8gIjx1bmtub3duIG1lc3NhZ2UgcmVjZWl2ZXI+IiA6IFN0cmluZyhtZXNzYWdlUmVjZWl2
ZXJOYW1lUmVmZXJlbmNlLmRhdGEoKSwgbWVzc2FnZVJlY2VpdmVyTmFtZVJlZmVyZW5jZS5zaXpl
KCkpKTsKLSAgICAgICAgU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lUmVmZXJlbmNlID0gbWVz
c2FnZS0+bWVzc2FnZU5hbWUoKTsKLSAgICAgICAgU3RyaW5nIG1lc3NhZ2VOYW1lKG1lc3NhZ2VO
YW1lUmVmZXJlbmNlLmlzRW1wdHkoKSA/ICI8dW5rbm93biBtZXNzYWdlPiIgOiBTdHJpbmcobWVz
c2FnZU5hbWVSZWZlcmVuY2UuZGF0YSgpLCBtZXNzYWdlTmFtZVJlZmVyZW5jZS5zaXplKCkpKTsK
LQotICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKSwgbWVzc2FnZVJlY2VpdmVyTmFtZSA9IFdURk1vdmUobWVzc2FnZVJlY2VpdmVy
TmFtZSksIG1lc3NhZ2VOYW1lID0gV1RGTW92ZShtZXNzYWdlTmFtZSldKCkgbXV0YWJsZSB7Ci0g
ICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5kaXNwYXRjaERpZFJlY2VpdmVJbnZhbGlkTWVzc2Fn
ZShtZXNzYWdlUmVjZWl2ZXJOYW1lLnV0ZjgoKSwgbWVzc2FnZU5hbWUudXRmOCgpKTsKKyAgICAg
ICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyksIG1lc3NhZ2VOYW1lID0gbWVzc2FnZS0+bWVzc2FnZU5hbWUoKV0oKSBtdXRhYmxlIHsKKyAg
ICAgICAgICAgIHByb3RlY3RlZFRoaXMtPmRpc3BhdGNoRGlkUmVjZWl2ZUludmFsaWRNZXNzYWdl
KG1lc3NhZ2VOYW1lKTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC03
NTksNyArNzQ3LDcgQEAgdm9pZCBDb25uZWN0aW9uOjpwcm9jZXNzSW5jb21pbmdNZXNzYWdlKAog
ICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fd2FpdEZvck1lc3NhZ2VNdXRleCk7CiAK
ICAgICAgICAgaWYgKG1fd2FpdGluZ0Zvck1lc3NhZ2UgJiYgIW1fd2FpdGluZ0Zvck1lc3NhZ2Ut
PmRlY29kZXIpIHsKLSAgICAgICAgICAgIGlmIChtX3dhaXRpbmdGb3JNZXNzYWdlLT5tZXNzYWdl
UmVjZWl2ZXJOYW1lID09IG1lc3NhZ2UtPm1lc3NhZ2VSZWNlaXZlck5hbWUoKSAmJiBtX3dhaXRp
bmdGb3JNZXNzYWdlLT5tZXNzYWdlTmFtZSA9PSBtZXNzYWdlLT5tZXNzYWdlTmFtZSgpICYmIG1f
d2FpdGluZ0Zvck1lc3NhZ2UtPmRlc3RpbmF0aW9uSUQgPT0gbWVzc2FnZS0+ZGVzdGluYXRpb25J
RCgpKSB7CisgICAgICAgICAgICBpZiAobV93YWl0aW5nRm9yTWVzc2FnZS0+bWVzc2FnZU5hbWUg
PT0gbWVzc2FnZS0+bWVzc2FnZU5hbWUoKSAmJiBtX3dhaXRpbmdGb3JNZXNzYWdlLT5kZXN0aW5h
dGlvbklEID09IG1lc3NhZ2UtPmRlc3RpbmF0aW9uSUQoKSkgewogICAgICAgICAgICAgICAgIG1f
d2FpdGluZ0Zvck1lc3NhZ2UtPmRlY29kZXIgPSBXVEZNb3ZlKG1lc3NhZ2UpOwogICAgICAgICAg
ICAgICAgIEFTU0VSVChtX3dhaXRpbmdGb3JNZXNzYWdlLT5kZWNvZGVyKTsKICAgICAgICAgICAg
ICAgICBtX3dhaXRGb3JNZXNzYWdlQ29uZGl0aW9uLm5vdGlmeU9uZSgpOwpAQCAtOTEyLDkgKzkw
MCw5IEBAIHZvaWQgQ29ubmVjdGlvbjo6ZGlzcGF0Y2hTeW5jTWVzc2FnZShEZWMKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gcmVwbHlFbmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNv
ZGVyPigiSVBDIiwgIlN5bmNNZXNzYWdlUmVwbHkiLCBzeW5jUmVxdWVzdElEKTsKKyAgICBhdXRv
IHJlcGx5RW5jb2RlciA9IG1ha2VVbmlxdWU8RW5jb2Rlcj4oTWVzc2FnZU5hbWU6OlN5bmNNZXNz
YWdlUmVwbHksIHN5bmNSZXF1ZXN0SUQpOwogCi0gICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2Vp
dmVyTmFtZSgpID09ICJJUEMiICYmIGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSAiV3JhcHBlZEFz
eW5jTWVzc2FnZUZvclRlc3RpbmciKSB7CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9
PSBNZXNzYWdlTmFtZTo6V3JhcHBlZEFzeW5jTWVzc2FnZUZvclRlc3RpbmcpIHsKICAgICAgICAg
aWYgKCFtX2Z1bGx5U3luY2hyb25vdXNNb2RlSXNBbGxvd2VkRm9yVGVzdGluZykgewogICAgICAg
ICAgICAgZGVjb2Rlci5tYXJrSW52YWxpZCgpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtOTM2
LDE0ICs5MjQsMTQgQEAgdm9pZCBDb25uZWN0aW9uOjpkaXNwYXRjaFN5bmNNZXNzYWdlKERlYwog
ICAgICAgICBzZW5kU3luY1JlcGx5KFdURk1vdmUocmVwbHlFbmNvZGVyKSk7CiB9CiAKLXZvaWQg
Q29ubmVjdGlvbjo6ZGlzcGF0Y2hEaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoY29uc3QgQ1N0cmlu
ZyYgbWVzc2FnZVJlY2VpdmVyTmFtZVN0cmluZywgY29uc3QgQ1N0cmluZyYgbWVzc2FnZU5hbWVT
dHJpbmcpCit2b2lkIENvbm5lY3Rpb246OmRpc3BhdGNoRGlkUmVjZWl2ZUludmFsaWRNZXNzYWdl
KE1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4o
KSk7CiAKICAgICBpZiAoIWlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9jbGll
bnQuZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKCp0aGlzLCBTdHJpbmdSZWZlcmVuY2UobWVzc2Fn
ZVJlY2VpdmVyTmFtZVN0cmluZy5kYXRhKCksIG1lc3NhZ2VSZWNlaXZlck5hbWVTdHJpbmcubGVu
Z3RoKCkpLCBTdHJpbmdSZWZlcmVuY2UobWVzc2FnZU5hbWVTdHJpbmcuZGF0YSgpLCBtZXNzYWdl
TmFtZVN0cmluZy5sZW5ndGgoKSkpOworICAgIG1fY2xpZW50LmRpZFJlY2VpdmVJbnZhbGlkTWVz
c2FnZSgqdGhpcywgbWVzc2FnZU5hbWUpOwogfQogCiB2b2lkIENvbm5lY3Rpb246OmRpZEZhaWxU
b1NlbmRTeW5jTWVzc2FnZSgpCkBAIC05ODksNyArOTc3LDcgQEAgdm9pZCBDb25uZWN0aW9uOjpl
bnF1ZXVlSW5jb21pbmdNZXNzYWdlKAogdm9pZCBDb25uZWN0aW9uOjpkaXNwYXRjaE1lc3NhZ2Uo
RGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBSRUxFQVNFX0FTU0VSVChpc1ZhbGlkKCkpOwotICAg
IGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSAiQXN5bmNSZXBseSIpIHsKKyAg
ICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gUmVjZWl2ZXJOYW1lOjpBc3lu
Y1JlcGx5KSB7CiAgICAgICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBsaXN0ZW5lcklEOwogICAgICAg
ICBkZWNvZGVyID4+IGxpc3RlbmVySUQ7CiAgICAgICAgIGlmICghbGlzdGVuZXJJRCkgewpAQCAt
MTA1NCw3ICsxMDQyLDcgQEAgdm9pZCBDb25uZWN0aW9uOjpkaXNwYXRjaE1lc3NhZ2Uoc3RkOjp1
bgogCiAgICAgaWYgKG1lc3NhZ2UtPnNob3VsZFVzZUZ1bGx5U3luY2hyb25vdXNNb2RlRm9yVGVz
dGluZygpKSB7CiAgICAgICAgIGlmICghbV9mdWxseVN5bmNocm9ub3VzTW9kZUlzQWxsb3dlZEZv
clRlc3RpbmcpIHsKLSAgICAgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVJbnZhbGlkTWVzc2Fn
ZSgqdGhpcywgbWVzc2FnZS0+bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtZXNzYWdlLT5tZXNzYWdl
TmFtZSgpKTsKKyAgICAgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZSgq
dGhpcywgbWVzc2FnZS0+bWVzc2FnZU5hbWUoKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KICAgICAgICAgbV9pbkRpc3BhdGNoTWVzc2FnZU1hcmtlZFRvVXNlRnVsbHlTeW5jaHJv
bm91c01vZGVGb3JUZXN0aW5nKys7CkBAIC0xMDg4LDcgKzEwNzYsNyBAQCB2b2lkIENvbm5lY3Rp
b246OmRpc3BhdGNoTWVzc2FnZShzdGQ6OnVuCiAgICAgICAgIG1faW5EaXNwYXRjaE1lc3NhZ2VN
YXJrZWRUb1VzZUZ1bGx5U3luY2hyb25vdXNNb2RlRm9yVGVzdGluZy0tOwogCiAgICAgaWYgKG1f
ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlICYmIGlzVmFsaWQoKSkKLSAgICAgICAgbV9jbGllbnQu
ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKCp0aGlzLCBtZXNzYWdlLT5tZXNzYWdlUmVjZWl2ZXJO
YW1lKCksIG1lc3NhZ2UtPm1lc3NhZ2VOYW1lKCkpOworICAgICAgICBtX2NsaWVudC5kaWRSZWNl
aXZlSW52YWxpZE1lc3NhZ2UoKnRoaXMsIG1lc3NhZ2UtPm1lc3NhZ2VOYW1lKCkpOwogCiAgICAg
bV9kaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UgPSBvbGREaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2U7
CiB9CkBAIC0xMTY4LDcgKzExNTYsNyBAQCB2b2lkIENvbm5lY3Rpb246OmRpc3BhdGNoSW5jb21p
bmdNZXNzYWdlCiAgICAgICAgIGlmIChtZXNzYWdlc1RvUHJvY2VzcyA8IG1faW5jb21pbmdNZXNz
YWdlcy5zaXplKCkpIHsKICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKElQQywgIiVwIC0g
Q29ubmVjdGlvbjo6ZGlzcGF0Y2hJbmNvbWluZ01lc3NhZ2VzOiBJUEMgdGhyb3R0bGluZyB3YXMg
dHJpZ2dlcmVkIChoYXMgJXp1IHBlbmRpbmcgaW5jb21pbmcgbWVzc2FnZXMsIHdpbGwgb25seSBw
cm9jZXNzICV6dSBiZWZvcmUgeWllbGRpbmcpIiwgdGhpcywgbV9pbmNvbWluZ01lc3NhZ2VzLnNp
emUoKSwgbWVzc2FnZXNUb1Byb2Nlc3MpOwogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgICAgICAg
ICAgUkVMRUFTRV9MT0dfRVJST1IoSVBDLCAiJXAgLSBDb25uZWN0aW9uOjpkaXNwYXRjaEluY29t
aW5nTWVzc2FnZXM6IGZpcnN0IElQQyBtZXNzYWdlIGluIHF1ZXVlIGlzICV7cHVibGljfXM6OiV7
cHVibGljfXMiLCB0aGlzLCBtZXNzYWdlLT5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkudG9TdHJpbmco
KS5kYXRhKCksIG1lc3NhZ2UtPm1lc3NhZ2VOYW1lKCkudG9TdHJpbmcoKS5kYXRhKCkpOworICAg
ICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoSVBDLCAiJXAgLSBDb25uZWN0aW9uOjpkaXNwYXRj
aEluY29taW5nTWVzc2FnZXM6IGZpcnN0IElQQyBtZXNzYWdlIGluIHF1ZXVlIGlzICV7cHVibGlj
fXMiLCB0aGlzLCBkZXNjcmlwdGlvbihtZXNzYWdlLT5tZXNzYWdlTmFtZSgpKSk7CiAjZW5kaWYK
ICAgICAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9u
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5o
CShyZXZpc2lvbiAyNjEyMzgpCisrKyBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0
aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNyw3ICsxMDcsNyBAQCBwdWJsaWM6CiAgICAgY2xh
c3MgQ2xpZW50IDogcHVibGljIE1lc3NhZ2VSZWNlaXZlciB7CiAgICAgcHVibGljOgogICAgICAg
ICB2aXJ0dWFsIHZvaWQgZGlkQ2xvc2UoQ29ubmVjdGlvbiYpID0gMDsKLSAgICAgICAgdmlydHVh
bCB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShDb25uZWN0aW9uJiwgU3RyaW5nUmVmZXJl
bmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZSkgPSAw
OworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKENvbm5lY3Rp
b24mLCBNZXNzYWdlTmFtZSkgPSAwOwogCiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2aXJ0dWFs
IH5DbGllbnQoKSB7IH0KQEAgLTE4OSwxMSArMTg5LDExIEBAIHB1YmxpYzoKICAgICB0eXBlZGVm
IHZvaWQgKCpEaWRDbG9zZU9uQ29ubmVjdGlvbldvcmtRdWV1ZUNhbGxiYWNrKShDb25uZWN0aW9u
Kik7CiAgICAgdm9pZCBzZXREaWRDbG9zZU9uQ29ubmVjdGlvbldvcmtRdWV1ZUNhbGxiYWNrKERp
ZENsb3NlT25Db25uZWN0aW9uV29ya1F1ZXVlQ2FsbGJhY2spOwogCi0gICAgdm9pZCBhZGRXb3Jr
UXVldWVNZXNzYWdlUmVjZWl2ZXIoU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUs
IFdvcmtRdWV1ZSYsIFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlciopOwotICAgIHZvaWQgcmVtb3Zl
V29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJO
YW1lKTsKKyAgICB2b2lkIGFkZFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcihSZWNlaXZlck5hbWUs
IFdvcmtRdWV1ZSYsIFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlciopOworICAgIHZvaWQgcmVtb3Zl
V29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKFJlY2VpdmVyTmFtZSk7CiAKLSAgICB2b2lkIGFkZFRo
cmVhZE1lc3NhZ2VSZWNlaXZlcihTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwg
VGhyZWFkTWVzc2FnZVJlY2VpdmVyKik7Ci0gICAgdm9pZCByZW1vdmVUaHJlYWRNZXNzYWdlUmVj
ZWl2ZXIoU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUpOworICAgIHZvaWQgYWRk
VGhyZWFkTWVzc2FnZVJlY2VpdmVyKFJlY2VpdmVyTmFtZSwgVGhyZWFkTWVzc2FnZVJlY2VpdmVy
Kik7CisgICAgdm9pZCByZW1vdmVUaHJlYWRNZXNzYWdlUmVjZWl2ZXIoUmVjZWl2ZXJOYW1lKTsK
IAogICAgIGJvb2wgb3BlbigpOwogICAgIHZvaWQgaW52YWxpZGF0ZSgpOwpAQCAtMjM1LDcgKzIz
NSw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBib29sIHNlbmRNZXNzYWdlKHN0ZDo6dW5pcXVl
X3B0cjxFbmNvZGVyPiwgT3B0aW9uU2V0PFNlbmRPcHRpb24+IHNlbmRPcHRpb25zKTsKLSAgICBz
dGQ6OnVuaXF1ZV9wdHI8RW5jb2Rlcj4gY3JlYXRlU3luY01lc3NhZ2VFbmNvZGVyKFN0cmluZ1Jl
ZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUs
IHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIHVpbnQ2NF90JiBzeW5jUmVxdWVzdElEKTsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8RW5jb2Rlcj4gY3JlYXRlU3luY01lc3NhZ2VFbmNvZGVyKE1lc3NhZ2VO
YW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCB1aW50NjRfdCYgc3luY1JlcXVlc3RJRCk7CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IHNlbmRTeW5jTWVzc2FnZSh1aW50NjRfdCBzeW5j
UmVxdWVzdElELCBzdGQ6OnVuaXF1ZV9wdHI8RW5jb2Rlcj4sIFNlY29uZHMgdGltZW91dCwgT3B0
aW9uU2V0PFNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMpOwogICAgIGJvb2wgc2VuZFN5
bmNSZXBseShzdGQ6OnVuaXF1ZV9wdHI8RW5jb2Rlcj4pOwogCkBAIC0yNzQsOSArMjc0LDkgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZShJZGVudGlmaWVyKTsKICAgICB2
b2lkIHBsYXRmb3JtSW52YWxpZGF0ZSgpOwogICAgIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxEZWNv
ZGVyPiB3YWl0Rm9yTWVzc2FnZShTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwg
U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBTZWNv
bmRzIHRpbWVvdXQsIE9wdGlvblNldDxXYWl0Rm9yT3B0aW9uPik7CisgICAgc3RkOjp1bmlxdWVf
cHRyPERlY29kZXI+IHdhaXRGb3JNZXNzYWdlKE1lc3NhZ2VOYW1lLCB1aW50NjRfdCBkZXN0aW5h
dGlvbklELCBTZWNvbmRzIHRpbWVvdXQsIE9wdGlvblNldDxXYWl0Rm9yT3B0aW9uPik7CiAgICAg
Ci0gICAgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IHdhaXRGb3JTeW5jUmVwbHkodWludDY0X3Qg
c3luY1JlcXVlc3RJRCwgU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIFN0cmlu
Z1JlZmVyZW5jZSBtZXNzYWdlTmFtZSwgU2Vjb25kcyB0aW1lb3V0LCBPcHRpb25TZXQ8U2VuZFN5
bmNPcHRpb24+KTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gd2FpdEZvclN5bmNSZXBs
eSh1aW50NjRfdCBzeW5jUmVxdWVzdElELCBNZXNzYWdlTmFtZSwgU2Vjb25kcyB0aW1lb3V0LCBP
cHRpb25TZXQ8U2VuZFN5bmNPcHRpb24+KTsKIAogICAgIGJvb2wgZGlzcGF0Y2hNZXNzYWdlVG9X
b3JrUXVldWVSZWNlaXZlcihzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4mKTsKICAgICBib29sIGRp
c3BhdGNoTWVzc2FnZVRvVGhyZWFkUmVjZWl2ZXIoc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+Jik7
CkBAIC0zMDAsNyArMzAwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpc3BhdGNoTWVzc2FnZShz
dGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4pOwogICAgIHZvaWQgZGlzcGF0Y2hNZXNzYWdlKERlY29k
ZXImKTsKICAgICB2b2lkIGRpc3BhdGNoU3luY01lc3NhZ2UoRGVjb2RlciYpOwotICAgIHZvaWQg
ZGlzcGF0Y2hEaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoY29uc3QgQ1N0cmluZyYgbWVzc2FnZVJl
Y2VpdmVyTmFtZVN0cmluZywgY29uc3QgQ1N0cmluZyYgbWVzc2FnZU5hbWVTdHJpbmcpOworICAg
IHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoTWVzc2FnZU5hbWUpOwogICAg
IHZvaWQgZGlkRmFpbFRvU2VuZFN5bmNNZXNzYWdlKCk7CiAKICAgICAvLyBDYW4gYmUgY2FsbGVk
IG9uIGFueSB0aHJlYWQuCkBAIC0zNDYsMTEgKzM0NiwxMSBAQCBwcml2YXRlOgogICAgIFJlZjxX
b3JrUXVldWU+IG1fY29ubmVjdGlvblF1ZXVlOwogCiAgICAgTG9jayBtX3dvcmtRdWV1ZU1lc3Nh
Z2VSZWNlaXZlcnNNdXRleDsKLSAgICB1c2luZyBXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXJNYXAg
PSBIYXNoTWFwPFN0cmluZ1JlZmVyZW5jZSwgc3RkOjpwYWlyPFJlZlB0cjxXb3JrUXVldWU+LCBS
ZWZQdHI8V29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyPj4+OworICAgIHVzaW5nIFdvcmtRdWV1ZU1l
c3NhZ2VSZWNlaXZlck1hcCA9IEhhc2hNYXA8UmVjZWl2ZXJOYW1lLCBzdGQ6OnBhaXI8UmVmUHRy
PFdvcmtRdWV1ZT4sIFJlZlB0cjxXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXI+PiwgV1RGOjpJbnRI
YXNoPFJlY2VpdmVyTmFtZT4sIFdURjo6U3Ryb25nRW51bUhhc2hUcmFpdHM8UmVjZWl2ZXJOYW1l
Pj47CiAgICAgV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyTWFwIG1fd29ya1F1ZXVlTWVzc2FnZVJl
Y2VpdmVyczsKIAogICAgIExvY2sgbV90aHJlYWRNZXNzYWdlUmVjZWl2ZXJzTG9jazsKLSAgICB1
c2luZyBUaHJlYWRNZXNzYWdlUmVjZWl2ZXJNYXAgPSBIYXNoTWFwPFN0cmluZ1JlZmVyZW5jZSwg
UmVmUHRyPFRocmVhZE1lc3NhZ2VSZWNlaXZlcj4+OworICAgIHVzaW5nIFRocmVhZE1lc3NhZ2VS
ZWNlaXZlck1hcCA9IEhhc2hNYXA8UmVjZWl2ZXJOYW1lLCBSZWZQdHI8VGhyZWFkTWVzc2FnZVJl
Y2VpdmVyPiwgV1RGOjpJbnRIYXNoPFJlY2VpdmVyTmFtZT4sIFdURjo6U3Ryb25nRW51bUhhc2hU
cmFpdHM8UmVjZWl2ZXJOYW1lPj47CiAgICAgVGhyZWFkTWVzc2FnZVJlY2VpdmVyTWFwIG1fdGhy
ZWFkTWVzc2FnZVJlY2VpdmVyczsKIAogICAgIHVuc2lnbmVkIG1faW5TZW5kU3luY0NvdW50OwpA
QCAtNDYyLDcgKzQ2Miw3IEBAIGJvb2wgQ29ubmVjdGlvbjo6c2VuZChUJiYgbWVzc2FnZSwgdWlu
dDYKIHsKICAgICBDT01QSUxFX0FTU0VSVCghVDo6aXNTeW5jLCBBc3luY01lc3NhZ2VFeHBlY3Rl
ZCk7CiAKLSAgICBhdXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlPEVuY29kZXI+KFQ6OnJlY2VpdmVy
TmFtZSgpLCBUOjpuYW1lKCksIGRlc3RpbmF0aW9uSUQpOworICAgIGF1dG8gZW5jb2RlciA9IG1h
a2VVbmlxdWU8RW5jb2Rlcj4oVDo6bmFtZSgpLCBkZXN0aW5hdGlvbklEKTsKICAgICBlbmNvZGVy
LT5lbmNvZGUobWVzc2FnZS5hcmd1bWVudHMoKSk7CiAgICAgCiAgICAgcmV0dXJuIHNlbmRNZXNz
YWdlKFdURk1vdmUoZW5jb2RlciksIHNlbmRPcHRpb25zKTsKQEAgLTQ3Nyw3ICs0NzcsNyBAQCB2
b2lkIENvbm5lY3Rpb246OnNlbmRXaXRoQXN5bmNSZXBseShUJiYgCiB7CiAgICAgQ09NUElMRV9B
U1NFUlQoIVQ6OmlzU3luYywgQXN5bmNNZXNzYWdlRXhwZWN0ZWQpOwogCi0gICAgYXV0byBlbmNv
ZGVyID0gbWFrZVVuaXF1ZTxFbmNvZGVyPihUOjpyZWNlaXZlck5hbWUoKSwgVDo6bmFtZSgpLCBk
ZXN0aW5hdGlvbklEKTsKKyAgICBhdXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlPEVuY29kZXI+KFQ6
Om5hbWUoKSwgZGVzdGluYXRpb25JRCk7CiAgICAgdWludDY0X3QgbGlzdGVuZXJJRCA9IG5leHRB
c3luY1JlcGx5SGFuZGxlcklEKCk7CiAgICAgZW5jb2Rlci0+ZW5jb2RlKGxpc3RlbmVySUQpOwog
ICAgIGVuY29kZXItPmVuY29kZShtZXNzYWdlLmFyZ3VtZW50cygpKTsKQEAgLTUxNSw3ICs1MTUs
NyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29sIENvbm5lY3Rpb246OnNlCiAgICAgUkVMRUFT
RV9BU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAgdWludDY0X3Qgc3luY1JlcXVlc3RJ
RCA9IDA7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEVuY29kZXI+IGVuY29kZXIgPSBjcmVhdGVTeW5j
TWVzc2FnZUVuY29kZXIoVDo6cmVjZWl2ZXJOYW1lKCksIFQ6Om5hbWUoKSwgZGVzdGluYXRpb25J
RCwgc3luY1JlcXVlc3RJRCk7CisgICAgc3RkOjp1bmlxdWVfcHRyPEVuY29kZXI+IGVuY29kZXIg
PSBjcmVhdGVTeW5jTWVzc2FnZUVuY29kZXIoVDo6bmFtZSgpLCBkZXN0aW5hdGlvbklELCBzeW5j
UmVxdWVzdElEKTsKIAogICAgIGlmIChzZW5kU3luY09wdGlvbnMuY29udGFpbnMoU2VuZFN5bmNP
cHRpb246OlVzZUZ1bGx5U3luY2hyb25vdXNNb2RlRm9yVGVzdGluZykpIHsKICAgICAgICAgZW5j
b2Rlci0+c2V0RnVsbHlTeW5jaHJvbm91c01vZGVGb3JUZXN0aW5nKCk7CkBAIC01NDIsNyArNTQy
LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9vbCBDb25uZWN0aW9uOjpzZQogdGVtcGxhdGU8
dHlwZW5hbWUgVD4gYm9vbCBDb25uZWN0aW9uOjp3YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVs
eSh1aW50NjRfdCBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQsIE9wdGlvblNldDxXYWl0
Rm9yT3B0aW9uPiB3YWl0Rm9yT3B0aW9ucykKIHsKICAgICBSRUxFQVNFX0FTU0VSVChSdW5Mb29w
Ojppc01haW4oKSk7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IGRlY29kZXIgPSB3YWl0
Rm9yTWVzc2FnZShUOjpyZWNlaXZlck5hbWUoKSwgVDo6bmFtZSgpLCBkZXN0aW5hdGlvbklELCB0
aW1lb3V0LCB3YWl0Rm9yT3B0aW9ucyk7CisgICAgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IGRl
Y29kZXIgPSB3YWl0Rm9yTWVzc2FnZShUOjpuYW1lKCksIGRlc3RpbmF0aW9uSUQsIHRpbWVvdXQs
IHdhaXRGb3JPcHRpb25zKTsKICAgICBpZiAoIWRlY29kZXIpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIApJbmRleDogU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5jcHAJKHJldmlzaW9u
IDI2MTIzOCkKKysrIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC02Niw5ICs2Niw2IEBAIERlY29kZXI6OkRlY29kZXIoY29uc3QgdWludDhf
dCogYnVmZmVyLCAKICAgICBpZiAoIWRlY29kZShtX21lc3NhZ2VGbGFncykpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIGlmICghZGVjb2RlKG1fbWVzc2FnZVJlY2VpdmVyTmFtZSkpCi0gICAgICAg
IHJldHVybjsKLQogICAgIGlmICghZGVjb2RlKG1fbWVzc2FnZU5hbWUpKQogICAgICAgICByZXR1
cm47CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmgJKHJldmlzaW9uIDI2
MTIzOCkKKysrIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiQXJndW1lbnRDb2Rlci5oIgogI2lu
Y2x1ZGUgIkF0dGFjaG1lbnQuaCIKKyNpbmNsdWRlICJNZXNzYWdlTmFtZXMuaCIKICNpbmNsdWRl
ICJTdHJpbmdSZWZlcmVuY2UuaCIKICNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgogI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTUxLDggKzUyLDggQEAgcHVibGljOgogICAgIERlY29kZXIo
Y29uc3QgRGVjb2RlciYpID0gZGVsZXRlOwogICAgIERlY29kZXIoRGVjb2RlciYmKSA9IGRlbGV0
ZTsKIAotICAgIFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lKCkgY29uc3QgeyBy
ZXR1cm4gbV9tZXNzYWdlUmVjZWl2ZXJOYW1lOyB9Ci0gICAgU3RyaW5nUmVmZXJlbmNlIG1lc3Nh
Z2VOYW1lKCkgY29uc3QgeyByZXR1cm4gbV9tZXNzYWdlTmFtZTsgfQorICAgIFJlY2VpdmVyTmFt
ZSBtZXNzYWdlUmVjZWl2ZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gcmVjZWl2ZXJOYW1lKG1fbWVz
c2FnZU5hbWUpOyB9CisgICAgTWVzc2FnZU5hbWUgbWVzc2FnZU5hbWUoKSBjb25zdCB7IHJldHVy
biBtX21lc3NhZ2VOYW1lOyB9CiAgICAgdWludDY0X3QgZGVzdGluYXRpb25JRCgpIGNvbnN0IHsg
cmV0dXJuIG1fZGVzdGluYXRpb25JRDsgfQogCiAgICAgYm9vbCBpc1N5bmNNZXNzYWdlKCkgY29u
c3Q7CkBAIC0xMDYsNyArMTA3LDcgQEAgcHVibGljOgogICAgICAgICB0eXBlbmFtZSBzdGQ6OnVu
ZGVybHlpbmdfdHlwZTxFPjo6dHlwZSB2YWx1ZTsKICAgICAgICAgaWYgKCFkZWNvZGUodmFsdWUp
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBpZiAoIWlzVmFsaWRFbnVtPEU+
KHZhbHVlKSkKKyAgICAgICAgaWYgKCFXVEY6OmlzVmFsaWRFbnVtPEU+KHZhbHVlKSkKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICBlID0gc3RhdGljX2Nhc3Q8RT4odmFsdWUp
OwpAQCAtMTE4LDcgKzExOSw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIE9wdGlvbmFsPHR5
cGVuYW1lIHN0ZDo6dW5kZXJseWluZ190eXBlPEU+Ojp0eXBlPiB2YWx1ZTsKICAgICAgICAgKnRo
aXMgPj4gdmFsdWU7Ci0gICAgICAgIGlmICh2YWx1ZSAmJiBpc1ZhbGlkRW51bTxFPigqdmFsdWUp
KQorICAgICAgICBpZiAodmFsdWUgJiYgV1RGOjppc1ZhbGlkRW51bTxFPigqdmFsdWUpKQogICAg
ICAgICAgICAgb3B0aW9uYWwgPSBzdGF0aWNfY2FzdDxFPigqdmFsdWUpOwogICAgICAgICByZXR1
cm4gKnRoaXM7CiAgICAgfQpAQCAtMTk4LDggKzE5OSw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9y
PEF0dGFjaG1lbnQ+IG1fYXR0YWNobWVudHM7CiAKICAgICB1aW50OF90IG1fbWVzc2FnZUZsYWdz
OwotICAgIFN0cmluZ1JlZmVyZW5jZSBtX21lc3NhZ2VSZWNlaXZlck5hbWU7Ci0gICAgU3RyaW5n
UmVmZXJlbmNlIG1fbWVzc2FnZU5hbWU7CisgICAgTWVzc2FnZU5hbWUgbV9tZXNzYWdlTmFtZTsK
IAogICAgIHVpbnQ2NF90IG1fZGVzdGluYXRpb25JRDsKIApJbmRleDogU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvRW5jb2Rlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvRW5jb2Rlci5jcHAJKHJldmlzaW9uIDI2MTIzOCkKKysrIFNvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL0VuY29kZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MSw5ICs2MSw4IEBA
IHN0YXRpYyBpbmxpbmUgdm9pZCBmcmVlQnVmZmVyKHZvaWQqIGFkZHIKICNlbmRpZgogfQogCi1F
bmNvZGVyOjpFbmNvZGVyKFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBTdHJp
bmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpCi0gICAgOiBt
X21lc3NhZ2VSZWNlaXZlck5hbWUobWVzc2FnZVJlY2VpdmVyTmFtZSkKLSAgICAsIG1fbWVzc2Fn
ZU5hbWUobWVzc2FnZU5hbWUpCitFbmNvZGVyOjpFbmNvZGVyKE1lc3NhZ2VOYW1lIG1lc3NhZ2VO
YW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKQorICAgIDogbV9tZXNzYWdlTmFtZShtZXNzYWdl
TmFtZSkKICAgICAsIG1fZGVzdGluYXRpb25JRChkZXN0aW5hdGlvbklEKQogICAgICwgbV9idWZm
ZXIobV9pbmxpbmVCdWZmZXIpCiAgICAgLCBtX2J1ZmZlclBvaW50ZXIobV9pbmxpbmVCdWZmZXIp
CkBAIC0xNjgsMTAgKzE2Nyw3IEBAIHZvaWQgRW5jb2Rlcjo6cmVzZXJ2ZShzaXplX3Qgc2l6ZSkK
IAogdm9pZCBFbmNvZGVyOjplbmNvZGVIZWFkZXIoKQogewotICAgIEFTU0VSVCghbV9tZXNzYWdl
UmVjZWl2ZXJOYW1lLmlzRW1wdHkoKSk7Ci0KICAgICAqdGhpcyA8PCBkZWZhdWx0TWVzc2FnZUZs
YWdzOwotICAgICp0aGlzIDw8IG1fbWVzc2FnZVJlY2VpdmVyTmFtZTsKICAgICAqdGhpcyA8PCBt
X21lc3NhZ2VOYW1lOwogICAgICp0aGlzIDw8IG1fZGVzdGluYXRpb25JRDsKIH0KSW5kZXg6IFNv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0VuY29kZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9FbmNvZGVyLmgJKHJldmlzaW9uIDI2MTIzOCkKKysrIFNvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0VuY29kZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiAr
MjcsNyBAQAogCiAjaW5jbHVkZSAiQXJndW1lbnRDb2Rlci5oIgogI2luY2x1ZGUgIkF0dGFjaG1l
bnQuaCIKKyNpbmNsdWRlICJNZXNzYWdlTmFtZXMuaCIKICNpbmNsdWRlICJTdHJpbmdSZWZlcmVu
Y2UuaCIKICNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KQEAgLTM1LDE1ICszNiwxNiBAQCBuYW1lc3BhY2UgSVBDIHsKIAogY2xhc3MgRGF0YVJlZmVy
ZW5jZTsKIGVudW0gY2xhc3MgU2hvdWxkRGlzcGF0Y2hXaGVuV2FpdGluZ0ZvclN5bmNSZXBseTsK
K2VudW0gY2xhc3MgTWVzc2FnZU5hbWUgOiB1aW50MTZfdDsKIAogY2xhc3MgRW5jb2RlciBmaW5h
bCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgRW5jb2RlcihT
dHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgU3RyaW5nUmVmZXJlbmNlIG1lc3Nh
Z2VOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKTsKKyAgICBFbmNvZGVyKE1lc3NhZ2VOYW1l
LCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKTsKICAgICB+RW5jb2RlcigpOwogCi0gICAgU3RyaW5n
UmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUoKSBjb25zdCB7IHJldHVybiBtX21lc3NhZ2VS
ZWNlaXZlck5hbWU7IH0KLSAgICBTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUoKSBjb25zdCB7
IHJldHVybiBtX21lc3NhZ2VOYW1lOyB9CisgICAgUmVjZWl2ZXJOYW1lIG1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSBjb25zdCB7IHJldHVybiByZWNlaXZlck5hbWUobV9tZXNzYWdlTmFtZSk7IH0KKyAg
ICBNZXNzYWdlTmFtZSBtZXNzYWdlTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWVzc2FnZU5hbWU7
IH0KICAgICB1aW50NjRfdCBkZXN0aW5hdGlvbklEKCkgY29uc3QgeyByZXR1cm4gbV9kZXN0aW5h
dGlvbklEOyB9CiAKICAgICB2b2lkIHNldElzU3luY01lc3NhZ2UoYm9vbCk7CkBAIC0xMTIsMTQg
KzExNCwxMyBAQCBwcml2YXRlOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEU+CiAgICAgYXV0byBl
bmNvZGUoRSB2YWx1ZSkgLT4gc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2VudW08RT46OnZhbHVl
PgogICAgIHsKLSAgICAgICAgQVNTRVJUKGlzVmFsaWRFbnVtPEU+KHN0YXRpY19jYXN0PHR5cGVu
YW1lIHN0ZDo6dW5kZXJseWluZ190eXBlPEU+Ojp0eXBlPih2YWx1ZSkpKTsKKyAgICAgICAgQVNT
RVJUKFdURjo6aXNWYWxpZEVudW08RT4oc3RhdGljX2Nhc3Q8dHlwZW5hbWUgc3RkOjp1bmRlcmx5
aW5nX3R5cGU8RT46OnR5cGU+KHZhbHVlKSkpOwogICAgICAgICBlbmNvZGUoc3RhdGljX2Nhc3Q8
dHlwZW5hbWUgc3RkOjp1bmRlcmx5aW5nX3R5cGU8RT46OnR5cGU+KHZhbHVlKSk7CiAgICAgfQog
CiAgICAgdm9pZCBlbmNvZGVIZWFkZXIoKTsKIAotICAgIFN0cmluZ1JlZmVyZW5jZSBtX21lc3Nh
Z2VSZWNlaXZlck5hbWU7Ci0gICAgU3RyaW5nUmVmZXJlbmNlIG1fbWVzc2FnZU5hbWU7CisgICAg
TWVzc2FnZU5hbWUgbV9tZXNzYWdlTmFtZTsKICAgICB1aW50NjRfdCBtX2Rlc3RpbmF0aW9uSUQ7
CiAKICAgICB1aW50OF90IG1faW5saW5lQnVmZmVyWzUxMl07CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9IYW5kbGVNZXNzYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oCShyZXZpc2lvbiAyNjEyMzgpCisrKyBTb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9IYW5kbGVNZXNzYWdlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTE3Niw3ICsxNzYsNyBAQCB2b2lkIGhhbmRsZU1lc3NhZ2VBc3luYyhDb25uZWN0aW9uJiBjb25u
CiAgICAgfQogCiAgICAgdHlwZW5hbWUgVDo6QXN5bmNSZXBseSBjb21wbGV0aW9uSGFuZGxlciA9
IFtsaXN0ZW5lcklEID0gKmxpc3RlbmVySUQsIGNvbm5lY3Rpb24gPSBtYWtlUmVmKGNvbm5lY3Rp
b24pXSAoYXV0byYmLi4uIGFyZ3MpIG11dGFibGUgewotICAgICAgICBhdXRvIGVuY29kZXIgPSBt
YWtlVW5pcXVlPEVuY29kZXI+KCJBc3luY1JlcGx5IiwgVDo6YXN5bmNNZXNzYWdlUmVwbHlOYW1l
KCksIDApOworICAgICAgICBhdXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlPEVuY29kZXI+KFQ6OmFz
eW5jTWVzc2FnZVJlcGx5TmFtZSgpLCAwKTsKICAgICAgICAgKmVuY29kZXIgPDwgbGlzdGVuZXJJ
RDsKICAgICAgICAgVDo6c2VuZChXVEZNb3ZlKGVuY29kZXIpLCBXVEZNb3ZlKGNvbm5lY3Rpb24p
LCBhcmdzLi4uKTsKICAgICB9OwpJbmRleDogU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVz
c2FnZVJlY2VpdmVyTWFwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9NZXNzYWdlUmVjZWl2ZXJNYXAuY3BwCShyZXZpc2lvbiAyNjEyMzgpCisrKyBTb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlUmVjZWl2ZXJNYXAuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zOSw3ICszOSw3IEBAIE1lc3NhZ2VSZWNlaXZlck1hcDo6fk1lc3NhZ2VSZWNlaXZlck1h
cCgKIHsKIH0KIAotdm9pZCBNZXNzYWdlUmVjZWl2ZXJNYXA6OmFkZE1lc3NhZ2VSZWNlaXZlcihT
dHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgTWVzc2FnZVJlY2VpdmVyJiBtZXNz
YWdlUmVjZWl2ZXIpCit2b2lkIE1lc3NhZ2VSZWNlaXZlck1hcDo6YWRkTWVzc2FnZVJlY2VpdmVy
KFJlY2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBNZXNzYWdlUmVjZWl2ZXImIG1lc3Nh
Z2VSZWNlaXZlcikKIHsKICAgICBBU1NFUlQoIW1fZ2xvYmFsTWVzc2FnZVJlY2VpdmVycy5jb250
YWlucyhtZXNzYWdlUmVjZWl2ZXJOYW1lKSk7CiAKQEAgLTQ3LDcgKzQ3LDcgQEAgdm9pZCBNZXNz
YWdlUmVjZWl2ZXJNYXA6OmFkZE1lc3NhZ2VSZWNlaQogICAgIG1fZ2xvYmFsTWVzc2FnZVJlY2Vp
dmVycy5zZXQobWVzc2FnZVJlY2VpdmVyTmFtZSwgJm1lc3NhZ2VSZWNlaXZlcik7CiB9CiAKLXZv
aWQgTWVzc2FnZVJlY2VpdmVyTWFwOjphZGRNZXNzYWdlUmVjZWl2ZXIoU3RyaW5nUmVmZXJlbmNl
IG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIE1lc3NhZ2VSZWNl
aXZlciYgbWVzc2FnZVJlY2VpdmVyKQordm9pZCBNZXNzYWdlUmVjZWl2ZXJNYXA6OmFkZE1lc3Nh
Z2VSZWNlaXZlcihSZWNlaXZlck5hbWUgbWVzc2FnZVJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVz
dGluYXRpb25JRCwgTWVzc2FnZVJlY2VpdmVyJiBtZXNzYWdlUmVjZWl2ZXIpCiB7CiAgICAgQVNT
RVJUKGRlc3RpbmF0aW9uSUQpOwogICAgIEFTU0VSVCghbV9tZXNzYWdlUmVjZWl2ZXJzLmNvbnRh
aW5zKHN0ZDo6bWFrZV9wYWlyKG1lc3NhZ2VSZWNlaXZlck5hbWUsIGRlc3RpbmF0aW9uSUQpKSk7
CkBAIC01Nyw3ICs1Nyw3IEBAIHZvaWQgTWVzc2FnZVJlY2VpdmVyTWFwOjphZGRNZXNzYWdlUmVj
ZWkKICAgICBtX21lc3NhZ2VSZWNlaXZlcnMuc2V0KHN0ZDo6bWFrZV9wYWlyKG1lc3NhZ2VSZWNl
aXZlck5hbWUsIGRlc3RpbmF0aW9uSUQpLCAmbWVzc2FnZVJlY2VpdmVyKTsKIH0KIAotdm9pZCBN
ZXNzYWdlUmVjZWl2ZXJNYXA6OnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihTdHJpbmdSZWZlcmVuY2Ug
bWVzc2FnZVJlY2VpdmVyTmFtZSkKK3ZvaWQgTWVzc2FnZVJlY2VpdmVyTWFwOjpyZW1vdmVNZXNz
YWdlUmVjZWl2ZXIoUmVjZWl2ZXJOYW1lIG1lc3NhZ2VSZWNlaXZlck5hbWUpCiB7CiAgICAgQVNT
RVJUKG1fZ2xvYmFsTWVzc2FnZVJlY2VpdmVycy5jb250YWlucyhtZXNzYWdlUmVjZWl2ZXJOYW1l
KSk7CiAKQEAgLTY3LDcgKzY3LDcgQEAgdm9pZCBNZXNzYWdlUmVjZWl2ZXJNYXA6OnJlbW92ZU1l
c3NhZ2VSZQogICAgIG1fZ2xvYmFsTWVzc2FnZVJlY2VpdmVycy5yZW1vdmUoaXQpOwogfQogCi12
b2lkIE1lc3NhZ2VSZWNlaXZlck1hcDo6cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKFN0cmluZ1JlZmVy
ZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKQordm9pZCBN
ZXNzYWdlUmVjZWl2ZXJNYXA6OnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihSZWNlaXZlck5hbWUgbWVz
c2FnZVJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCkKIHsKICAgICBBU1NFUlQo
bV9tZXNzYWdlUmVjZWl2ZXJzLmNvbnRhaW5zKHN0ZDo6bWFrZV9wYWlyKG1lc3NhZ2VSZWNlaXZl
ck5hbWUsIGRlc3RpbmF0aW9uSUQpKSk7CiAKQEAgLTc5LDcgKzc5LDcgQEAgdm9pZCBNZXNzYWdl
UmVjZWl2ZXJNYXA6OnJlbW92ZU1lc3NhZ2VSZQogCiB2b2lkIE1lc3NhZ2VSZWNlaXZlck1hcDo6
cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VSZWNlaXZlciYgbWVzc2FnZVJlY2VpdmVyKQog
ewotICAgIFZlY3RvcjxTdHJpbmdSZWZlcmVuY2U+IGdsb2JhbFJlY2VpdmVyc1RvUmVtb3ZlOwor
ICAgIFZlY3RvcjxSZWNlaXZlck5hbWU+IGdsb2JhbFJlY2VpdmVyc1RvUmVtb3ZlOwogICAgIGZv
ciAoYXV0byYgW25hbWUsIHJlY2VpdmVyXSA6IG1fZ2xvYmFsTWVzc2FnZVJlY2VpdmVycykgewog
ICAgICAgICBpZiAocmVjZWl2ZXIgPT0gJm1lc3NhZ2VSZWNlaXZlcikKICAgICAgICAgICAgIGds
b2JhbFJlY2VpdmVyc1RvUmVtb3ZlLmFwcGVuZChuYW1lKTsKQEAgLTg4LDcgKzg4LDcgQEAgdm9p
ZCBNZXNzYWdlUmVjZWl2ZXJNYXA6OnJlbW92ZU1lc3NhZ2VSZQogICAgIGZvciAoYXV0byYgZ2xv
YmFsUmVjZWl2ZXJUb1JlbW92ZSA6IGdsb2JhbFJlY2VpdmVyc1RvUmVtb3ZlKQogICAgICAgICBy
ZW1vdmVNZXNzYWdlUmVjZWl2ZXIoZ2xvYmFsUmVjZWl2ZXJUb1JlbW92ZSk7CiAKLSAgICBWZWN0
b3I8c3RkOjpwYWlyPFN0cmluZ1JlZmVyZW5jZSwgdWludDY0X3Q+PiByZWNlaXZlcnNUb1JlbW92
ZTsKKyAgICBWZWN0b3I8c3RkOjpwYWlyPFJlY2VpdmVyTmFtZSwgdWludDY0X3Q+PiByZWNlaXZl
cnNUb1JlbW92ZTsKICAgICBmb3IgKGF1dG8mIFtuYW1lQW5kRGVzdGluYXRpb25JRCwgcmVjZWl2
ZXJdIDogbV9tZXNzYWdlUmVjZWl2ZXJzKSB7CiAgICAgICAgIGlmIChyZWNlaXZlciA9PSAmbWVz
c2FnZVJlY2VpdmVyKQogICAgICAgICAgICAgcmVjZWl2ZXJzVG9SZW1vdmUuYXBwZW5kKHN0ZDo6
bWFrZV9wYWlyKG5hbWVBbmREZXN0aW5hdGlvbklELmZpcnN0LCBuYW1lQW5kRGVzdGluYXRpb25J
RC5zZWNvbmQpKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VSZWNl
aXZlck1hcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3Nh
Z2VSZWNlaXZlck1hcC5oCShyZXZpc2lvbiAyNjEyMzgpCisrKyBTb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9NZXNzYWdlUmVjZWl2ZXJNYXAuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsOCArMjMs
NyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYg
TWVzc2FnZVJlY2VpdmVyTWFwX2gKLSNkZWZpbmUgTWVzc2FnZVJlY2VpdmVyTWFwX2gKKyNwcmFn
bWEgb25jZQogCiAjaW5jbHVkZSAiU3RyaW5nUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KQEAgLTM2LDE3ICszNSwxOCBAQCBjbGFzcyBDb25uZWN0aW9uOwogY2xhc3MgRW5j
b2RlcjsKIGNsYXNzIERlY29kZXI7CiBjbGFzcyBNZXNzYWdlUmVjZWl2ZXI7CitlbnVtIGNsYXNz
IFJlY2VpdmVyTmFtZSA6IHVpbnQ4X3Q7CiAKIGNsYXNzIE1lc3NhZ2VSZWNlaXZlck1hcCB7CiBw
dWJsaWM6CiAgICAgTWVzc2FnZVJlY2VpdmVyTWFwKCk7CiAgICAgfk1lc3NhZ2VSZWNlaXZlck1h
cCgpOwogCi0gICAgdm9pZCBhZGRNZXNzYWdlUmVjZWl2ZXIoU3RyaW5nUmVmZXJlbmNlIG1lc3Nh
Z2VSZWNlaXZlck5hbWUsIE1lc3NhZ2VSZWNlaXZlciYpOwotICAgIHZvaWQgYWRkTWVzc2FnZVJl
Y2VpdmVyKFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0
aW5hdGlvbklELCBNZXNzYWdlUmVjZWl2ZXImKTsKKyAgICB2b2lkIGFkZE1lc3NhZ2VSZWNlaXZl
cihSZWNlaXZlck5hbWUsIE1lc3NhZ2VSZWNlaXZlciYpOworICAgIHZvaWQgYWRkTWVzc2FnZVJl
Y2VpdmVyKFJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgTWVzc2FnZVJlY2Vp
dmVyJik7CiAKLSAgICB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihTdHJpbmdSZWZlcmVuY2Ug
bWVzc2FnZVJlY2VpdmVyTmFtZSk7Ci0gICAgdm9pZCByZW1vdmVNZXNzYWdlUmVjZWl2ZXIoU3Ry
aW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQp
OworICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKFJlY2VpdmVyTmFtZSk7CisgICAgdm9p
ZCByZW1vdmVNZXNzYWdlUmVjZWl2ZXIoUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlv
bklEKTsKICAgICB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlUmVjZWl2ZXImKTsK
IAogICAgIHZvaWQgaW52YWxpZGF0ZSgpOwpAQCAtNTYsMTEgKzU2LDE4IEBAIHB1YmxpYzoKIAog
cHJpdmF0ZToKICAgICAvLyBNZXNzYWdlIHJlY2VpdmVycyB0aGF0IGRvbid0IHJlcXVpcmUgYSBk
ZXN0aW5hdGlvbiBJRC4KLSAgICBIYXNoTWFwPFN0cmluZ1JlZmVyZW5jZSwgTWVzc2FnZVJlY2Vp
dmVyKj4gbV9nbG9iYWxNZXNzYWdlUmVjZWl2ZXJzOworICAgIEhhc2hNYXA8UmVjZWl2ZXJOYW1l
LCBNZXNzYWdlUmVjZWl2ZXIqLCBXVEY6OkludEhhc2g8UmVjZWl2ZXJOYW1lPiwgV1RGOjpTdHJv
bmdFbnVtSGFzaFRyYWl0czxSZWNlaXZlck5hbWU+PiBtX2dsb2JhbE1lc3NhZ2VSZWNlaXZlcnM7
CiAKLSAgICBIYXNoTWFwPHN0ZDo6cGFpcjxTdHJpbmdSZWZlcmVuY2UsIHVpbnQ2NF90PiwgTWVz
c2FnZVJlY2VpdmVyKj4gbV9tZXNzYWdlUmVjZWl2ZXJzOworICAgIEhhc2hNYXA8c3RkOjpwYWly
PFJlY2VpdmVyTmFtZSwgdWludDY0X3Q+LCBNZXNzYWdlUmVjZWl2ZXIqLCBEZWZhdWx0SGFzaDxz
dGQ6OnBhaXI8UmVjZWl2ZXJOYW1lLCB1aW50NjRfdD4+OjpIYXNoLCBQYWlySGFzaFRyYWl0czxX
VEY6OlN0cm9uZ0VudW1IYXNoVHJhaXRzPFJlY2VpdmVyTmFtZT4sIEhhc2hUcmFpdHM8dWludDY0
X3Q+Pj4gbV9tZXNzYWdlUmVjZWl2ZXJzOwogfTsKIAogfTsKIAotI2VuZGlmIC8vIE1lc3NhZ2VS
ZWNlaXZlck1hcF9oCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3Ry
dWN0IERlZmF1bHRIYXNoOwordGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8SVBDOjpSZWNl
aXZlck5hbWU+IHsKKyAgICB1c2luZyBIYXNoID0gSW50SGFzaDxJUEM6OlJlY2VpdmVyTmFtZT47
Cit9OworCit9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRl
ci5oCShyZXZpc2lvbiAyNjEyMzgpCisrKyBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNz
YWdlU2VuZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogICAg
IHsKICAgICAgICAgc3RhdGljX2Fzc2VydCghVTo6aXNTeW5jLCAiTWVzc2FnZSBpcyBzeW5jISIp
OwogCi0gICAgICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWU8RW5jb2Rlcj4oVTo6cmVjZWl2
ZXJOYW1lKCksIFU6Om5hbWUoKSwgZGVzdGluYXRpb25JRCk7CisgICAgICAgIGF1dG8gZW5jb2Rl
ciA9IG1ha2VVbmlxdWU8RW5jb2Rlcj4oVTo6bmFtZSgpLCBkZXN0aW5hdGlvbklEKTsKICAgICAg
ICAgZW5jb2Rlci0+ZW5jb2RlKG1lc3NhZ2UuYXJndW1lbnRzKCkpOwogICAgICAgICAKICAgICAg
ICAgcmV0dXJuIHNlbmRNZXNzYWdlKFdURk1vdmUoZW5jb2RlciksIHNlbmRPcHRpb25zKTsKQEAg
LTg4LDcgKzg4LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgQ09NUElMRV9BU1NFUlQoIVQ6
OmlzU3luYywgQXN5bmNNZXNzYWdlRXhwZWN0ZWQpOwogCi0gICAgICAgIGF1dG8gZW5jb2RlciA9
IG1ha2VVbmlxdWU8SVBDOjpFbmNvZGVyPihUOjpyZWNlaXZlck5hbWUoKSwgVDo6bmFtZSgpLCBk
ZXN0aW5hdGlvbklEKTsKKyAgICAgICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZTxJUEM6OkVu
Y29kZXI+KFQ6Om5hbWUoKSwgZGVzdGluYXRpb25JRCk7CiAgICAgICAgIHVpbnQ2NF90IGxpc3Rl
bmVySUQgPSBJUEM6Om5leHRBc3luY1JlcGx5SGFuZGxlcklEKCk7CiAgICAgICAgIGVuY29kZXIt
PmVuY29kZShsaXN0ZW5lcklEKTsKICAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKG1lc3NhZ2UuYXJn
dW1lbnRzKCkpOwpJbmRleDogU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvQ29ubmVj
dGlvbkNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2Nv
Y29hL0Nvbm5lY3Rpb25Db2NvYS5tbQkocmV2aXNpb24gMjYxMjM4KQorKysgU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvY29jb2EvQ29ubmVjdGlvbkNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0yMTQsNyArMjE0LDcgQEAgYm9vbCBDb25uZWN0aW9uOjpvcGVuKCkKICAgICAgICAgbV9pc0Nv
bm5lY3RlZCA9IHRydWU7CiAgICAgICAgIAogICAgICAgICAvLyBTZW5kIHRoZSBpbml0aWFsaXpl
IG1lc3NhZ2UsIHdoaWNoIGNvbnRhaW5zIGEgc2VuZCByaWdodCBmb3IgdGhlIHNlcnZlciB0byB1
c2UuCi0gICAgICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWU8RW5jb2Rlcj4oIklQQyIsICJJ
bml0aWFsaXplQ29ubmVjdGlvbiIsIDApOworICAgICAgICBhdXRvIGVuY29kZXIgPSBtYWtlVW5p
cXVlPEVuY29kZXI+KE1lc3NhZ2VOYW1lOjpJbml0aWFsaXplQ29ubmVjdGlvbiwgMCk7CiAgICAg
ICAgIGVuY29kZXItPmVuY29kZShNYWNoUG9ydChtX3JlY2VpdmVQb3J0LCBNQUNIX01TR19UWVBF
X01BS0VfU0VORCkpOwogCiAgICAgICAgIGluaXRpYWxpemVTZW5kU291cmNlKCk7CkBAIC0yNzMs
NyArMjczLDcgQEAgYm9vbCBDb25uZWN0aW9uOjpzZW5kTWVzc2FnZShzdGQ6OnVuaXF1ZQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBkZWZhdWx0OgotICAgICAgICBDU3RyaW5nIG1lc3Nh
Z2VOYW1lID0gbWFrZVN0cmluZyhtZXNzYWdlLT5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkuZGF0YSgp
LCAiOjoiLCBtZXNzYWdlLT5tZXNzYWdlTmFtZSgpLmRhdGEoKSkudXRmOCgpOworICAgICAgICBD
U3RyaW5nIG1lc3NhZ2VOYW1lKGRlc2NyaXB0aW9uKG1lc3NhZ2UtPm1lc3NhZ2VOYW1lKCkpKTsK
ICAgICAgICAgV2ViS2l0OjpzZXRDcmFzaFJlcG9ydEFwcGxpY2F0aW9uU3BlY2lmaWNJbmZvcm1h
dGlvbigoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJV
bmhhbmRsZWQgZXJyb3IgY29kZSAleCwgbWVzc2FnZSAnJXMnLCBoYXNoICVkIiwga3IsIG1lc3Nh
Z2VOYW1lLmRhdGEoKSwgbWVzc2FnZU5hbWUuaGFzaCgpXSk7CiAgICAgICAgIENSQVNIX1dJVEhf
SU5GTyhrciwgbWVzc2FnZU5hbWUuaGFzaCgpKTsKICAgICB9CkBAIC0zMDgsNyArMzA4LDcgQEAg
Ym9vbCBDb25uZWN0aW9uOjpzZW5kT3V0Z29pbmdNZXNzYWdlKHN0ZAogICAgIH0KIAogICAgIHNp
emVfdCBzYWZlTWVzc2FnZVNpemUgPSBtZXNzYWdlU2l6ZS51bnNhZmVHZXQoKTsKLSAgICBhdXRv
IG1lc3NhZ2UgPSBNYWNoTWVzc2FnZTo6Y3JlYXRlKGVuY29kZXItPm1lc3NhZ2VSZWNlaXZlck5h
bWUoKS50b1N0cmluZygpLCBlbmNvZGVyLT5tZXNzYWdlTmFtZSgpLnRvU3RyaW5nKCksIHNhZmVN
ZXNzYWdlU2l6ZSk7CisgICAgYXV0byBtZXNzYWdlID0gTWFjaE1lc3NhZ2U6OmNyZWF0ZShlbmNv
ZGVyLT5tZXNzYWdlTmFtZSgpLCBzYWZlTWVzc2FnZVNpemUpOwogICAgIGlmICghbWVzc2FnZSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC01MzMsNyArNTMzLDcgQEAgdm9pZCBDb25uZWN0
aW9uOjpyZWNlaXZlU291cmNlRXZlbnRIYW5kbAogICAgIGRlY29kZXItPnNldEltcG9ydGFuY2VB
c3NlcnRpb24obWFrZVVuaXF1ZTxJbXBvcnRhbmNlQXNzZXJ0aW9uPihoZWFkZXIpKTsKICNlbmRp
ZgogCi0gICAgaWYgKGRlY29kZXItPm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSAiSVBDIiAmJiBk
ZWNvZGVyLT5tZXNzYWdlTmFtZSgpID09ICJJbml0aWFsaXplQ29ubmVjdGlvbiIpIHsKKyAgICBp
ZiAoZGVjb2Rlci0+bWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlTmFtZTo6SW5pdGlhbGl6ZUNvbm5l
Y3Rpb24pIHsKICAgICAgICAgQVNTRVJUKG1faXNTZXJ2ZXIpOwogICAgICAgICBBU1NFUlQoIW1f
aXNDb25uZWN0ZWQpOwogICAgICAgICBBU1NFUlQoIW1fc2VuZFBvcnQpOwpJbmRleDogU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvTWFjaE1lc3NhZ2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL01hY2hNZXNzYWdlLmNwcAkocmV2aXNp
b24gMjYxMjM4KQorKysgU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvTWFjaE1lc3Nh
Z2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwxOCArMzksMTcgQEAgc3RhdGljIGlubGluZSBD
aGVja2VkU2l6ZSBzYWZlUm91bmRNc2coQwogICAgIHJldHVybiAoKHZhbHVlICsgKGFsaWdubWVu
dCAtIDEpKSAvIGFsaWdubWVudCkgKiBhbGlnbm1lbnQ7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxN
YWNoTWVzc2FnZT4gTWFjaE1lc3NhZ2U6OmNyZWF0ZShDU3RyaW5nJiYgbWVzc2FnZVJlY2VpdmVy
TmFtZSwgQ1N0cmluZyYmIG1lc3NhZ2VOYW1lLCBzaXplX3Qgc2l6ZSkKK3N0ZDo6dW5pcXVlX3B0
cjxNYWNoTWVzc2FnZT4gTWFjaE1lc3NhZ2U6OmNyZWF0ZShNZXNzYWdlTmFtZSBtZXNzYWdlTmFt
ZSwgc2l6ZV90IHNpemUpCiB7CiAgICAgYXV0byBidWZmZXJTaXplID0gQ2hlY2tlZFNpemUoc2l6
ZW9mKE1hY2hNZXNzYWdlKSkgKyBzaXplOwogICAgIGlmIChidWZmZXJTaXplLmhhc092ZXJmbG93
ZWQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgdm9pZCogbWVtb3J5ID0gV1RGOjpm
YXN0WmVyb2VkTWFsbG9jKGJ1ZmZlclNpemUudW5zYWZlR2V0KCkpOwotICAgIHJldHVybiBzdGQ6
OnVuaXF1ZV9wdHI8TWFjaE1lc3NhZ2U+IHsgbmV3IChOb3ROdWxsLCBtZW1vcnkpIE1hY2hNZXNz
YWdlIHsgV1RGTW92ZShtZXNzYWdlUmVjZWl2ZXJOYW1lKSwgV1RGTW92ZShtZXNzYWdlTmFtZSks
IHNpemUgfSB9OworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8TWFjaE1lc3NhZ2U+IHsgbmV3
IChOb3ROdWxsLCBtZW1vcnkpIE1hY2hNZXNzYWdlIHsgbWVzc2FnZU5hbWUsIHNpemUgfSB9Owog
fQogCi1NYWNoTWVzc2FnZTo6TWFjaE1lc3NhZ2UoQ1N0cmluZyYmIG1lc3NhZ2VSZWNlaXZlck5h
bWUsIENTdHJpbmcmJiBtZXNzYWdlTmFtZSwgc2l6ZV90IHNpemUpCi0gICAgOiBtX21lc3NhZ2VS
ZWNlaXZlck5hbWUoV1RGTW92ZShtZXNzYWdlUmVjZWl2ZXJOYW1lKSkKLSAgICAsIG1fbWVzc2Fn
ZU5hbWUoV1RGTW92ZShtZXNzYWdlTmFtZSkpCitNYWNoTWVzc2FnZTo6TWFjaE1lc3NhZ2UoTWVz
c2FnZU5hbWUgbWVzc2FnZU5hbWUsIHNpemVfdCBzaXplKQorICAgIDogbV9tZXNzYWdlTmFtZSB7
IG1lc3NhZ2VOYW1lIH0KICAgICAsIG1fc2l6ZSB7IHNpemUgfQogewogfQpJbmRleDogU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvTWFjaE1lc3NhZ2UuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9NYWNoTWVzc2FnZS5oCShyZXZpc2lvbiAy
NjEyMzgpCisrKyBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9NYWNoTWVzc2FnZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBQTEFURk9STShDT0NPQSkK
IAorI2luY2x1ZGUgIk1lc3NhZ2VOYW1lcy5oIgogI2luY2x1ZGUgPG1hY2gvbWVzc2FnZS5oPgog
I2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KQEAg
LTM3LDcgKzM4LDcgQEAgbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBNYWNoTWVzc2FnZSB7CiAgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVl
X3B0cjxNYWNoTWVzc2FnZT4gY3JlYXRlKENTdHJpbmcmJiBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBD
U3RyaW5nJiYgbWVzc2FnZU5hbWUsIHNpemVfdCk7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxNYWNoTWVzc2FnZT4gY3JlYXRlKE1lc3NhZ2VOYW1lLCBzaXplX3QpOwogICAgIH5NYWNoTWVz
c2FnZSgpOwogCiAgICAgc3RhdGljIENoZWNrZWRTaXplIG1lc3NhZ2VTaXplKHNpemVfdCBib2R5
U2l6ZSwgc2l6ZV90IHBvcnREZXNjcmlwdG9yQ291bnQsIHNpemVfdCBtZW1vcnlEZXNjcmlwdG9y
Q291bnQpOwpAQCAtNDcsMTQgKzQ4LDEzIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgbGVha0Rlc2Ny
aXB0b3JzKCk7CiAKLSAgICBjb25zdCBDU3RyaW5nJiBtZXNzYWdlUmVjZWl2ZXJOYW1lKCkgY29u
c3QgeyByZXR1cm4gbV9tZXNzYWdlUmVjZWl2ZXJOYW1lOyB9Ci0gICAgY29uc3QgQ1N0cmluZyYg
bWVzc2FnZU5hbWUoKSBjb25zdCB7IHJldHVybiBtX21lc3NhZ2VOYW1lOyB9CisgICAgUmVjZWl2
ZXJOYW1lIG1lc3NhZ2VSZWNlaXZlck5hbWUoKSBjb25zdCB7IHJldHVybiByZWNlaXZlck5hbWUo
bV9tZXNzYWdlTmFtZSk7IH0KKyAgICBNZXNzYWdlTmFtZSBtZXNzYWdlTmFtZSgpIGNvbnN0IHsg
cmV0dXJuIG1fbWVzc2FnZU5hbWU7IH0KIAogcHJpdmF0ZToKLSAgICBNYWNoTWVzc2FnZShDU3Ry
aW5nJiYgbWVzc2FnZVJlY2VpdmVyTmFtZSwgQ1N0cmluZyYmIG1lc3NhZ2VOYW1lLCBzaXplX3Qp
OworICAgIE1hY2hNZXNzYWdlKE1lc3NhZ2VOYW1lLCBzaXplX3QpOwogCi0gICAgQ1N0cmluZyBt
X21lc3NhZ2VSZWNlaXZlck5hbWU7Ci0gICAgQ1N0cmluZyBtX21lc3NhZ2VOYW1lOworICAgIE1l
c3NhZ2VOYW1lIG1fbWVzc2FnZU5hbWU7CiAgICAgc2l6ZV90IG1fc2l6ZTsKICAgICBib29sIG1f
c2hvdWxkRnJlZURlc2NyaXB0b3JzIHsgdHJ1ZSB9OwogICAgIG1hY2hfbXNnX2hlYWRlcl90IG1f
bWVzc2FnZUhlYWRlcltdOwpJbmRleDogU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1dlYlBy
b2Nlc3NDb25uZWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1BsdWdpblBy
b2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCShyZXZpc2lvbiAyNjEyMzgpCisrKyBTb3Vy
Y2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yMDUsNyArMjA1LDcgQEAgdm9pZCBXZWJQcm9jZXNzQ29ubmVjdGlvbjo6ZGVz
dHJveVBsdWdpbgogICAgIGRlc3Ryb3lQbHVnaW5Db250cm9sbGVyUHJveHkocGx1Z2luQ29udHJv
bGxlclByb3h5KTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZUlu
dmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6U3RyaW5nUmVmZXJlbmNlLCBJUEM6
OlN0cmluZ1JlZmVyZW5jZSkKK3ZvaWQgV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVJ
bnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VOYW1lKQogewogICAg
IC8vIEZJWE1FOiBJbXBsZW1lbnQuCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nl
c3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1Bs
dWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uaAkocmV2aXNpb24gMjYxMjM4KQorKysg
U291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmgJKHdvcmtp
bmcgY29weSkKQEAgLTY0LDcgKzY0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwogICAgIHZv
aWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYs
IHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRD
bG9zZShJUEM6OkNvbm5lY3Rpb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVJbnZh
bGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdl
UmVjZWl2ZXJOYW1lLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZSkgb3ZlcnJpZGU7
CisgICAgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBD
OjpNZXNzYWdlTmFtZSkgb3ZlcnJpZGU7CiAKICAgICAvLyBNZXNzYWdlIGhhbmRsZXJzLgogICAg
IHZvaWQgZGlkUmVjZWl2ZVdlYlByb2Nlc3NDb25uZWN0aW9uTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mLCBJUEM6OkRlY29kZXImKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy9NYWtlZmls
ZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvTWFrZWZpbGUJKHJldmlzaW9u
IDI2MTIzOCkKKysrIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy9NYWtlZmlsZQkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDIgQEAKIGFsbDoKLQlweXRob24gLi9nZW5lcmF0ZS1tZXNzYWdlLXJlY2Vp
dmVyLnB5IHdlYmtpdC90ZXN0LXN1cGVyY2xhc3MtbWVzc2FnZXMuaW4gLS1pbXBsZW1lbnRhdGlv
biB3ZWJraXQvTWVzc2FnZVJlY2VpdmVyU3VwZXJjbGFzcy1leHBlY3RlZC5jcHAgLS1oZWFkZXIg
d2Via2l0L01lc3NhZ2VzU3VwZXJjbGFzcy1leHBlY3RlZC5oIC0tcmVwbHktaGVhZGVyIHdlYmtp
dC9NZXNzYWdlc1JlcGxpZXNTdXBlcmNsYXNzUmVwbGllcy1leHBlY3RlZC5oCi0JcHl0aG9uIC4v
Z2VuZXJhdGUtbWVzc2FnZS1yZWNlaXZlci5weSB3ZWJraXQvdGVzdC1sZWdhY3ktbWVzc2FnZXMu
aW4gLS1pbXBsZW1lbnRhdGlvbiB3ZWJraXQvTGVnYWN5TWVzc2FnZVJlY2VpdmVyLWV4cGVjdGVk
LmNwcCAtLWhlYWRlciB3ZWJraXQvTGVnYWN5TWVzc2FnZXMtZXhwZWN0ZWQuaCAtLXJlcGx5LWhl
YWRlciB3ZWJraXQvTGVnYWN5TWVzc2FnZXNSZXBsaWVzLWV4cGVjdGVkLmgKLQlweXRob24gLi9n
ZW5lcmF0ZS1tZXNzYWdlLXJlY2VpdmVyLnB5IHdlYmtpdC90ZXN0LW1lc3NhZ2VzLmluIC0taW1w
bGVtZW50YXRpb24gd2Via2l0L01lc3NhZ2VSZWNlaXZlci1leHBlY3RlZC5jcHAgLS1oZWFkZXIg
d2Via2l0L01lc3NhZ2VzLWV4cGVjdGVkLmggLS1yZXBseS1oZWFkZXIgd2Via2l0L01lc3NhZ2Vz
UmVwbGllcy1leHBlY3RlZC5oCi0KKwlweXRob24gZ2VuZXJhdGUtbWVzc2FnZS1yZWNlaXZlci5w
eSB3ZWJraXQgdGVzdC1zdXBlcmNsYXNzIHRlc3QtbGVnYWN5IHRlc3QKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvU2NyaXB0cy9NZXNzYWdlTmFtZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvU2NyaXB0cy9NZXNzYWdlTmFtZXMuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJL
aXQvU2NyaXB0cy9NZXNzYWdlTmFtZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzAz
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UgorICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSCisgKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorICogT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk1l
c3NhZ2VOYW1lcy5oIgorCituYW1lc3BhY2UgSVBDIHsKKworY29uc3QgY2hhciogZGVzY3JpcHRp
b24oTWVzc2FnZU5hbWUgbmFtZSkKK3sKKyAgICBzd2l0Y2ggKG5hbWUpIHsKKyAgICBjYXNlIE1l
c3NhZ2VOYW1lOjpXZWJQYWdlX0xvYWRVUkw6CisgICAgICAgIHJldHVybiAiV2ViUGFnZTo6TG9h
ZFVSTCI7CisjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpX
ZWJQYWdlX1Rlc3RBc3luY01lc3NhZ2U6CisgICAgICAgIHJldHVybiAiV2ViUGFnZTo6VGVzdEFz
eW5jTWVzc2FnZSI7CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9UZXN0QXN5bmNNZXNz
YWdlUmVwbHk6CisgICAgICAgIHJldHVybiAiV2ViUGFnZTo6VGVzdEFzeW5jTWVzc2FnZVJlcGx5
IjsKKyNlbmRpZgorI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCisgICAgY2FzZSBNZXNzYWdlTmFt
ZTo6V2ViUGFnZV9UZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJndW1lbnRzOgorICAgICAgICByZXR1
cm4gIldlYlBhZ2U6OlRlc3RBc3luY01lc3NhZ2VXaXRoTm9Bcmd1bWVudHMiOworICAgIGNhc2Ug
TWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVzdEFzeW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50c1JlcGx5
OgorICAgICAgICByZXR1cm4gIldlYlBhZ2U6OlRlc3RBc3luY01lc3NhZ2VXaXRoTm9Bcmd1bWVu
dHNSZXBseSI7CisjZW5kaWYKKyNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQorICAgIGNhc2UgTWVz
c2FnZU5hbWU6OldlYlBhZ2VfVGVzdEFzeW5jTWVzc2FnZVdpdGhNdWx0aXBsZUFyZ3VtZW50czoK
KyAgICAgICAgcmV0dXJuICJXZWJQYWdlOjpUZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJn
dW1lbnRzIjsKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX1Rlc3RBc3luY01lc3NhZ2VX
aXRoTXVsdGlwbGVBcmd1bWVudHNSZXBseToKKyAgICAgICAgcmV0dXJuICJXZWJQYWdlOjpUZXN0
QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1lbnRzUmVwbHkiOworI2VuZGlmCisgICAgY2Fz
ZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9UZXN0U3luY01lc3NhZ2U6CisgICAgICAgIHJldHVybiAi
V2ViUGFnZTo6VGVzdFN5bmNNZXNzYWdlIjsKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdl
X1Rlc3RTeW5jaHJvbm91c01lc3NhZ2U6CisgICAgICAgIHJldHVybiAiV2ViUGFnZTo6VGVzdFN5
bmNocm9ub3VzTWVzc2FnZSI7CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9Mb2FkVVJM
OgorICAgICAgICByZXR1cm4gIldlYlBhZ2U6OkxvYWRVUkwiOworI2lmIEVOQUJMRShUT1VDSF9F
VkVOVFMpCisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9Mb2FkU29tZXRoaW5nOgorICAg
ICAgICByZXR1cm4gIldlYlBhZ2U6OkxvYWRTb21ldGhpbmciOworI2VuZGlmCisjaWYgKEVOQUJM
RShUT1VDSF9FVkVOVFMpICYmIChORVNURURfTUVTU0FHRV9DT05ESVRJT04gfHwgU09NRV9PVEhF
Ul9NRVNTQUdFX0NPTkRJVElPTikpCisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9Ub3Vj
aEV2ZW50OgorICAgICAgICByZXR1cm4gIldlYlBhZ2U6OlRvdWNoRXZlbnQiOworI2VuZGlmCisj
aWYgKEVOQUJMRShUT1VDSF9FVkVOVFMpICYmIChORVNURURfTUVTU0FHRV9DT05ESVRJT04gJiYg
U09NRV9PVEhFUl9NRVNTQUdFX0NPTkRJVElPTikpCisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2Vi
UGFnZV9BZGRFdmVudDoKKyAgICAgICAgcmV0dXJuICJXZWJQYWdlOjpBZGRFdmVudCI7CisjZW5k
aWYKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBh
Z2VfTG9hZFNvbWV0aGluZ0Vsc2U6CisgICAgICAgIHJldHVybiAiV2ViUGFnZTo6TG9hZFNvbWV0
aGluZ0Vsc2UiOworI2VuZGlmCisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9EaWRSZWNl
aXZlUG9saWN5RGVjaXNpb246CisgICAgICAgIHJldHVybiAiV2ViUGFnZTo6RGlkUmVjZWl2ZVBv
bGljeURlY2lzaW9uIjsKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX0Nsb3NlOgorICAg
ICAgICByZXR1cm4gIldlYlBhZ2U6OkNsb3NlIjsKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQ
YWdlX1ByZWZlcmVuY2VzRGlkQ2hhbmdlOgorICAgICAgICByZXR1cm4gIldlYlBhZ2U6OlByZWZl
cmVuY2VzRGlkQ2hhbmdlIjsKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX1NlbmREb3Vi
bGVBbmRGbG9hdDoKKyAgICAgICAgcmV0dXJuICJXZWJQYWdlOjpTZW5kRG91YmxlQW5kRmxvYXQi
OworICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfU2VuZEludHM6CisgICAgICAgIHJldHVy
biAiV2ViUGFnZTo6U2VuZEludHMiOworICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfQ3Jl
YXRlUGx1Z2luOgorICAgICAgICByZXR1cm4gIldlYlBhZ2U6OkNyZWF0ZVBsdWdpbiI7CisgICAg
Y2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9SdW5KYXZhU2NyaXB0QWxlcnQ6CisgICAgICAgIHJl
dHVybiAiV2ViUGFnZTo6UnVuSmF2YVNjcmlwdEFsZXJ0IjsKKyAgICBjYXNlIE1lc3NhZ2VOYW1l
OjpXZWJQYWdlX0dldFBsdWdpbnM6CisgICAgICAgIHJldHVybiAiV2ViUGFnZTo6R2V0UGx1Z2lu
cyI7CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9HZXRQbHVnaW5Qcm9jZXNzQ29ubmVj
dGlvbjoKKyAgICAgICAgcmV0dXJuICJXZWJQYWdlOjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlv
biI7CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9UZXN0TXVsdGlwbGVBdHRyaWJ1dGVz
OgorICAgICAgICByZXR1cm4gIldlYlBhZ2U6OlRlc3RNdWx0aXBsZUF0dHJpYnV0ZXMiOworICAg
IGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVzdFBhcmFtZXRlckF0dHJpYnV0ZXM6CisgICAg
ICAgIHJldHVybiAiV2ViUGFnZTo6VGVzdFBhcmFtZXRlckF0dHJpYnV0ZXMiOworICAgIGNhc2Ug
TWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVtcGxhdGVUZXN0OgorICAgICAgICByZXR1cm4gIldlYlBh
Z2U6OlRlbXBsYXRlVGVzdCI7CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9TZXRWaWRl
b0xheWVySUQ6CisgICAgICAgIHJldHVybiAiV2ViUGFnZTo6U2V0VmlkZW9MYXllcklEIjsKKyNp
ZiBQTEFURk9STShNQUMpCisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9EaWRDcmVhdGVX
ZWJQcm9jZXNzQ29ubmVjdGlvbjoKKyAgICAgICAgcmV0dXJuICJXZWJQYWdlOjpEaWRDcmVhdGVX
ZWJQcm9jZXNzQ29ubmVjdGlvbiI7CisjZW5kaWYKKyNpZiBQTEFURk9STShNQUMpCisgICAgY2Fz
ZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9JbnRlcnByZXRLZXlFdmVudDoKKyAgICAgICAgcmV0dXJu
ICJXZWJQYWdlOjpJbnRlcnByZXRLZXlFdmVudCI7CisjZW5kaWYKKyNpZiBFTkFCTEUoREVQUkVD
QVRFRF9GRUFUVVJFKQorICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfRGVwcmVjYXRlZE9w
ZXJhdGlvbjoKKyAgICAgICAgcmV0dXJuICJXZWJQYWdlOjpEZXByZWNhdGVkT3BlcmF0aW9uIjsK
KyNlbmRpZgorI2lmIEVOQUJMRShFWFBFUklNRU5UQUxfRkVBVFVSRSkKKyAgICBjYXNlIE1lc3Nh
Z2VOYW1lOjpXZWJQYWdlX0V4cGVyaW1lbnRhbE9wZXJhdGlvbjoKKyAgICAgICAgcmV0dXJuICJX
ZWJQYWdlOjpFeHBlcmltZW50YWxPcGVyYXRpb24iOworI2VuZGlmCisgICAgY2FzZSBNZXNzYWdl
TmFtZTo6V3JhcHBlZEFzeW5jTWVzc2FnZUZvclRlc3Rpbmc6CisgICAgICAgIHJldHVybiAiSVBD
OjpXcmFwcGVkQXN5bmNNZXNzYWdlRm9yVGVzdGluZyI7CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6
U3luY01lc3NhZ2VSZXBseToKKyAgICAgICAgcmV0dXJuICJJUEM6OlN5bmNNZXNzYWdlUmVwbHki
OworICAgIGNhc2UgTWVzc2FnZU5hbWU6OkluaXRpYWxpemVDb25uZWN0aW9uOgorICAgICAgICBy
ZXR1cm4gIklQQzo6SW5pdGlhbGl6ZUNvbm5lY3Rpb24iOworICAgIGNhc2UgTWVzc2FnZU5hbWU6
OkxlZ2FjeVNlc3Npb25TdGF0ZToKKyAgICAgICAgcmV0dXJuICJJUEM6OkxlZ2FjeVNlc3Npb25T
dGF0ZSI7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiAiPGlu
dmFsaWQgbWVzc2FnZSBuYW1lPiI7Cit9CisKK1JlY2VpdmVyTmFtZSByZWNlaXZlck5hbWUoTWVz
c2FnZU5hbWUgbWVzc2FnZU5hbWUpCit7CisgICAgc3dpdGNoIChtZXNzYWdlTmFtZSkgeworICAg
IGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfTG9hZFVSTDoKKyNpZiBFTkFCTEUoVEVTVF9GRUFU
VVJFKQorICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVzdEFzeW5jTWVzc2FnZToKKyNl
bmRpZgorI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2Vi
UGFnZV9UZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJndW1lbnRzOgorI2VuZGlmCisjaWYgRU5BQkxF
KFRFU1RfRkVBVFVSRSkKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX1Rlc3RBc3luY01l
c3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHM6CisjZW5kaWYKKyAgICBjYXNlIE1lc3NhZ2VOYW1l
OjpXZWJQYWdlX1Rlc3RTeW5jTWVzc2FnZToKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdl
X1Rlc3RTeW5jaHJvbm91c01lc3NhZ2U6CisgICAgICAgIHJldHVybiBSZWNlaXZlck5hbWU6Oldl
YlBhZ2U7CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9Mb2FkVVJMOgorI2lmIEVOQUJM
RShUT1VDSF9FVkVOVFMpCisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9Mb2FkU29tZXRo
aW5nOgorI2VuZGlmCisjaWYgKEVOQUJMRShUT1VDSF9FVkVOVFMpICYmIChORVNURURfTUVTU0FH
RV9DT05ESVRJT04gfHwgU09NRV9PVEhFUl9NRVNTQUdFX0NPTkRJVElPTikpCisgICAgY2FzZSBN
ZXNzYWdlTmFtZTo6V2ViUGFnZV9Ub3VjaEV2ZW50OgorI2VuZGlmCisjaWYgKEVOQUJMRShUT1VD
SF9FVkVOVFMpICYmIChORVNURURfTUVTU0FHRV9DT05ESVRJT04gJiYgU09NRV9PVEhFUl9NRVNT
QUdFX0NPTkRJVElPTikpCisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9BZGRFdmVudDoK
KyNlbmRpZgorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAgY2FzZSBNZXNzYWdlTmFtZTo6
V2ViUGFnZV9Mb2FkU29tZXRoaW5nRWxzZToKKyNlbmRpZgorICAgIGNhc2UgTWVzc2FnZU5hbWU6
OldlYlBhZ2VfRGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uOgorICAgIGNhc2UgTWVzc2FnZU5hbWU6
OldlYlBhZ2VfQ2xvc2U6CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9QcmVmZXJlbmNl
c0RpZENoYW5nZToKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX1NlbmREb3VibGVBbmRG
bG9hdDoKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX1NlbmRJbnRzOgorICAgIGNhc2Ug
TWVzc2FnZU5hbWU6OldlYlBhZ2VfQ3JlYXRlUGx1Z2luOgorICAgIGNhc2UgTWVzc2FnZU5hbWU6
OldlYlBhZ2VfUnVuSmF2YVNjcmlwdEFsZXJ0OgorICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBh
Z2VfR2V0UGx1Z2luczoKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX0dldFBsdWdpblBy
b2Nlc3NDb25uZWN0aW9uOgorICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVzdE11bHRp
cGxlQXR0cmlidXRlczoKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX1Rlc3RQYXJhbWV0
ZXJBdHRyaWJ1dGVzOgorICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVtcGxhdGVUZXN0
OgorICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfU2V0VmlkZW9MYXllcklEOgorI2lmIFBM
QVRGT1JNKE1BQykKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX0RpZENyZWF0ZVdlYlBy
b2Nlc3NDb25uZWN0aW9uOgorI2VuZGlmCisjaWYgUExBVEZPUk0oTUFDKQorICAgIGNhc2UgTWVz
c2FnZU5hbWU6OldlYlBhZ2VfSW50ZXJwcmV0S2V5RXZlbnQ6CisjZW5kaWYKKyNpZiBFTkFCTEUo
REVQUkVDQVRFRF9GRUFUVVJFKQorICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfRGVwcmVj
YXRlZE9wZXJhdGlvbjoKKyNlbmRpZgorI2lmIEVOQUJMRShFWFBFUklNRU5UQUxfRkVBVFVSRSkK
KyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX0V4cGVyaW1lbnRhbE9wZXJhdGlvbjoKKyNl
bmRpZgorICAgICAgICByZXR1cm4gUmVjZWl2ZXJOYW1lOjpXZWJQYWdlOworICAgICAgICByZXR1
cm4gUmVjZWl2ZXJOYW1lOjpOb25lOworI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCisgICAgY2Fz
ZSBNZXNzYWdlTmFtZTo6V2ViUGFnZV9UZXN0QXN5bmNNZXNzYWdlUmVwbHk6CisjZW5kaWYKKyNp
ZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQorICAgIGNhc2UgTWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVz
dEFzeW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50c1JlcGx5OgorI2VuZGlmCisjaWYgRU5BQkxFKFRF
U1RfRkVBVFVSRSkKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXZWJQYWdlX1Rlc3RBc3luY01lc3Nh
Z2VXaXRoTXVsdGlwbGVBcmd1bWVudHNSZXBseToKKyNlbmRpZgorICAgICAgICByZXR1cm4gUmVj
ZWl2ZXJOYW1lOjpBc3luY1JlcGx5OworICAgIGNhc2UgTWVzc2FnZU5hbWU6OldyYXBwZWRBc3lu
Y01lc3NhZ2VGb3JUZXN0aW5nOgorICAgIGNhc2UgTWVzc2FnZU5hbWU6OlN5bmNNZXNzYWdlUmVw
bHk6CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6SW5pdGlhbGl6ZUNvbm5lY3Rpb246CisgICAgY2Fz
ZSBNZXNzYWdlTmFtZTo6TGVnYWN5U2Vzc2lvblN0YXRlOgorICAgICAgICByZXR1cm4gUmVjZWl2
ZXJOYW1lOjpJUEM7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVy
biBSZWNlaXZlck5hbWU6OkludmFsaWQ7Cit9CisKK2Jvb2wgaXNWYWxpZE1lc3NhZ2VOYW1lKE1l
c3NhZ2VOYW1lIG1lc3NhZ2VOYW1lKQoreworICAgIGlmIChtZXNzYWdlTmFtZSA9PSBJUEM6Ok1l
c3NhZ2VOYW1lOjpXZWJQYWdlX0xvYWRVUkwpCisgICAgICAgIHJldHVybiB0cnVlOworI2lmIEVO
QUJMRShURVNUX0ZFQVRVUkUpCisgICAgaWYgKG1lc3NhZ2VOYW1lID09IElQQzo6TWVzc2FnZU5h
bWU6OldlYlBhZ2VfVGVzdEFzeW5jTWVzc2FnZSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
aWYgKG1lc3NhZ2VOYW1lID09IElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVzdEFzeW5jTWVz
c2FnZVJlcGx5KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyNlbmRpZgorI2lmIEVOQUJMRShURVNU
X0ZFQVRVUkUpCisgICAgaWYgKG1lc3NhZ2VOYW1lID09IElQQzo6TWVzc2FnZU5hbWU6OldlYlBh
Z2VfVGVzdEFzeW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50cykKKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgaWYgKG1lc3NhZ2VOYW1lID09IElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVzdEFz
eW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50c1JlcGx5KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyNl
bmRpZgorI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCisgICAgaWYgKG1lc3NhZ2VOYW1lID09IElQ
Qzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVzdEFzeW5jTWVzc2FnZVdpdGhNdWx0aXBsZUFyZ3Vt
ZW50cykKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKG1lc3NhZ2VOYW1lID09IElQQzo6
TWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVzdEFzeW5jTWVzc2FnZVdpdGhNdWx0aXBsZUFyZ3VtZW50
c1JlcGx5KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyNlbmRpZgorICAgIGlmIChtZXNzYWdlTmFt
ZSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX1Rlc3RTeW5jTWVzc2FnZSkKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgaWYgKG1lc3NhZ2VOYW1lID09IElQQzo6TWVzc2FnZU5hbWU6Oldl
YlBhZ2VfVGVzdFN5bmNocm9ub3VzTWVzc2FnZSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
aWYgKG1lc3NhZ2VOYW1lID09IElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfTG9hZFVSTCkKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAgICBpZiAobWVz
c2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9Mb2FkU29tZXRoaW5nKQorICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyNlbmRpZgorI2lmIChFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiAo
TkVTVEVEX01FU1NBR0VfQ09ORElUSU9OIHx8IFNPTUVfT1RIRVJfTUVTU0FHRV9DT05ESVRJT04p
KQorICAgIGlmIChtZXNzYWdlTmFtZSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX1RvdWNo
RXZlbnQpCisgICAgICAgIHJldHVybiB0cnVlOworI2VuZGlmCisjaWYgKEVOQUJMRShUT1VDSF9F
VkVOVFMpICYmIChORVNURURfTUVTU0FHRV9DT05ESVRJT04gJiYgU09NRV9PVEhFUl9NRVNTQUdF
X0NPTkRJVElPTikpCisgICAgaWYgKG1lc3NhZ2VOYW1lID09IElQQzo6TWVzc2FnZU5hbWU6Oldl
YlBhZ2VfQWRkRXZlbnQpCisgICAgICAgIHJldHVybiB0cnVlOworI2VuZGlmCisjaWYgRU5BQkxF
KFRPVUNIX0VWRU5UUykKKyAgICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6
V2ViUGFnZV9Mb2FkU29tZXRoaW5nRWxzZSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisjZW5kaWYK
KyAgICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9EaWRSZWNl
aXZlUG9saWN5RGVjaXNpb24pCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmIChtZXNzYWdl
TmFtZSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX0Nsb3NlKQorICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9Q
cmVmZXJlbmNlc0RpZENoYW5nZSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKG1lc3Nh
Z2VOYW1lID09IElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfU2VuZERvdWJsZUFuZEZsb2F0KQor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdl
TmFtZTo6V2ViUGFnZV9TZW5kSW50cykKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKG1l
c3NhZ2VOYW1lID09IElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfQ3JlYXRlUGx1Z2luKQorICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFt
ZTo6V2ViUGFnZV9SdW5KYXZhU2NyaXB0QWxlcnQpCisgICAgICAgIHJldHVybiB0cnVlOworICAg
IGlmIChtZXNzYWdlTmFtZSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX0dldFBsdWdpbnMp
CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmIChtZXNzYWdlTmFtZSA9PSBJUEM6Ok1lc3Nh
Z2VOYW1lOjpXZWJQYWdlX0dldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKQorICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFn
ZV9UZXN0TXVsdGlwbGVBdHRyaWJ1dGVzKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAo
bWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9UZXN0UGFyYW1ldGVyQXR0
cmlidXRlcykKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKG1lc3NhZ2VOYW1lID09IElQ
Qzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVtcGxhdGVUZXN0KQorICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9TZXRW
aWRlb0xheWVySUQpCisgICAgICAgIHJldHVybiB0cnVlOworI2lmIFBMQVRGT1JNKE1BQykKKyAg
ICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9EaWRDcmVhdGVX
ZWJQcm9jZXNzQ29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuIHRydWU7CisjZW5kaWYKKyNpZiBQ
TEFURk9STShNQUMpCisgICAgaWYgKG1lc3NhZ2VOYW1lID09IElQQzo6TWVzc2FnZU5hbWU6Oldl
YlBhZ2VfSW50ZXJwcmV0S2V5RXZlbnQpCisgICAgICAgIHJldHVybiB0cnVlOworI2VuZGlmCisj
aWYgRU5BQkxFKERFUFJFQ0FURURfRkVBVFVSRSkKKyAgICBpZiAobWVzc2FnZU5hbWUgPT0gSVBD
OjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9EZXByZWNhdGVkT3BlcmF0aW9uKQorICAgICAgICByZXR1
cm4gdHJ1ZTsKKyNlbmRpZgorI2lmIEVOQUJMRShFWFBFUklNRU5UQUxfRkVBVFVSRSkKKyAgICBp
ZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9FeHBlcmltZW50YWxP
cGVyYXRpb24pCisgICAgICAgIHJldHVybiB0cnVlOworI2VuZGlmCisgICAgaWYgKG1lc3NhZ2VO
YW1lID09IElQQzo6TWVzc2FnZU5hbWU6OldyYXBwZWRBc3luY01lc3NhZ2VGb3JUZXN0aW5nKQor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdl
TmFtZTo6U3luY01lc3NhZ2VSZXBseSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKG1l
c3NhZ2VOYW1lID09IElQQzo6TWVzc2FnZU5hbWU6OkluaXRpYWxpemVDb25uZWN0aW9uKQorICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFt
ZTo6TGVnYWN5U2Vzc2lvblN0YXRlKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4g
ZmFsc2U7Cit9OworCit9IC8vIG5hbWVzcGFjZSBJUEMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2Ny
aXB0cy9NZXNzYWdlTmFtZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMv
TWVzc2FnZU5hbWVzLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9TY3JpcHRzL01l
c3NhZ2VOYW1lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTE3IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEwLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorICogQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisgKiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLAorICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgorCitu
YW1lc3BhY2UgSVBDIHsKKworZW51bSBjbGFzcyBSZWNlaXZlck5hbWUgOiB1aW50OF90IHsKKyAg
ICBXZWJQYWdlID0gMQorICAgICwgV2ViUGFnZSA9IDIKKyAgICAsIE5vbmUgPSAzCisgICAgLCBJ
UEMgPSA0CisgICAgLCBBc3luY1JlcGx5ID0gNQorICAgICwgSW52YWxpZCA9IDYKK307CisKK2Vu
dW0gY2xhc3MgTWVzc2FnZU5hbWUgOiB1aW50MTZfdCB7CisgICAgV2ViUGFnZV9Mb2FkVVJMID0g
MQorI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCisgICAgLCBXZWJQYWdlX1Rlc3RBc3luY01lc3Nh
Z2UgPSAyCisgICAgLCBXZWJQYWdlX1Rlc3RBc3luY01lc3NhZ2VSZXBseSA9IDMKKyNlbmRpZgor
I2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCisgICAgLCBXZWJQYWdlX1Rlc3RBc3luY01lc3NhZ2VX
aXRoTm9Bcmd1bWVudHMgPSA0CisgICAgLCBXZWJQYWdlX1Rlc3RBc3luY01lc3NhZ2VXaXRoTm9B
cmd1bWVudHNSZXBseSA9IDUKKyNlbmRpZgorI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCisgICAg
LCBXZWJQYWdlX1Rlc3RBc3luY01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHMgPSA2CisgICAg
LCBXZWJQYWdlX1Rlc3RBc3luY01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHNSZXBseSA9IDcK
KyNlbmRpZgorICAgICwgV2ViUGFnZV9UZXN0U3luY01lc3NhZ2UgPSA4CisgICAgLCBXZWJQYWdl
X1Rlc3RTeW5jaHJvbm91c01lc3NhZ2UgPSA5CisgICAgLCBXZWJQYWdlX0xvYWRVUkwgPSAxMAor
I2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAgLCBXZWJQYWdlX0xvYWRTb21ldGhpbmcgPSAx
MQorI2VuZGlmCisjaWYgKEVOQUJMRShUT1VDSF9FVkVOVFMpICYmIChORVNURURfTUVTU0FHRV9D
T05ESVRJT04gfHwgU09NRV9PVEhFUl9NRVNTQUdFX0NPTkRJVElPTikpCisgICAgLCBXZWJQYWdl
X1RvdWNoRXZlbnQgPSAxMgorI2VuZGlmCisjaWYgKEVOQUJMRShUT1VDSF9FVkVOVFMpICYmIChO
RVNURURfTUVTU0FHRV9DT05ESVRJT04gJiYgU09NRV9PVEhFUl9NRVNTQUdFX0NPTkRJVElPTikp
CisgICAgLCBXZWJQYWdlX0FkZEV2ZW50ID0gMTMKKyNlbmRpZgorI2lmIEVOQUJMRShUT1VDSF9F
VkVOVFMpCisgICAgLCBXZWJQYWdlX0xvYWRTb21ldGhpbmdFbHNlID0gMTQKKyNlbmRpZgorICAg
ICwgV2ViUGFnZV9EaWRSZWNlaXZlUG9saWN5RGVjaXNpb24gPSAxNQorICAgICwgV2ViUGFnZV9D
bG9zZSA9IDE2CisgICAgLCBXZWJQYWdlX1ByZWZlcmVuY2VzRGlkQ2hhbmdlID0gMTcKKyAgICAs
IFdlYlBhZ2VfU2VuZERvdWJsZUFuZEZsb2F0ID0gMTgKKyAgICAsIFdlYlBhZ2VfU2VuZEludHMg
PSAxOQorICAgICwgV2ViUGFnZV9DcmVhdGVQbHVnaW4gPSAyMAorICAgICwgV2ViUGFnZV9SdW5K
YXZhU2NyaXB0QWxlcnQgPSAyMQorICAgICwgV2ViUGFnZV9HZXRQbHVnaW5zID0gMjIKKyAgICAs
IFdlYlBhZ2VfR2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24gPSAyMworICAgICwgV2ViUGFnZV9U
ZXN0TXVsdGlwbGVBdHRyaWJ1dGVzID0gMjQKKyAgICAsIFdlYlBhZ2VfVGVzdFBhcmFtZXRlckF0
dHJpYnV0ZXMgPSAyNQorICAgICwgV2ViUGFnZV9UZW1wbGF0ZVRlc3QgPSAyNgorICAgICwgV2Vi
UGFnZV9TZXRWaWRlb0xheWVySUQgPSAyNworI2lmIFBMQVRGT1JNKE1BQykKKyAgICAsIFdlYlBh
Z2VfRGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24gPSAyOAorI2VuZGlmCisjaWYgUExBVEZP
Uk0oTUFDKQorICAgICwgV2ViUGFnZV9JbnRlcnByZXRLZXlFdmVudCA9IDI5CisjZW5kaWYKKyNp
ZiBFTkFCTEUoREVQUkVDQVRFRF9GRUFUVVJFKQorICAgICwgV2ViUGFnZV9EZXByZWNhdGVkT3Bl
cmF0aW9uID0gMzAKKyNlbmRpZgorI2lmIEVOQUJMRShFWFBFUklNRU5UQUxfRkVBVFVSRSkKKyAg
ICAsIFdlYlBhZ2VfRXhwZXJpbWVudGFsT3BlcmF0aW9uID0gMzEKKyNlbmRpZgorICAgICwgV3Jh
cHBlZEFzeW5jTWVzc2FnZUZvclRlc3RpbmcgPSAzMgorICAgICwgU3luY01lc3NhZ2VSZXBseSA9
IDMzCisgICAgLCBJbml0aWFsaXplQ29ubmVjdGlvbiA9IDM0CisgICAgLCBMZWdhY3lTZXNzaW9u
U3RhdGUgPSAzNQorfTsKKworUmVjZWl2ZXJOYW1lIHJlY2VpdmVyTmFtZShNZXNzYWdlTmFtZSk7
Citjb25zdCBjaGFyKiBkZXNjcmlwdGlvbihNZXNzYWdlTmFtZSk7Citib29sIGlzVmFsaWRNZXNz
YWdlTmFtZShNZXNzYWdlTmFtZSk7CisKK30gLy8gbmFtZXNwYWNlIElQQworCituYW1lc3BhY2Ug
V1RGIHsKKwordGVtcGxhdGU8PgorY2xhc3MgSGFzQ3VzdG9tSXNWYWxpZEVudW08SVBDOjpNZXNz
YWdlTmFtZT4gOiBwdWJsaWMgc3RkOjp0cnVlX3R5cGUgeyB9OwordGVtcGxhdGU8dHlwZW5hbWUg
RSwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgPSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfc2FtZTxF
LCBJUEM6Ok1lc3NhZ2VOYW1lPjo6dmFsdWU+PgorYm9vbCBpc1ZhbGlkRW51bShUIG1lc3NhZ2VO
YW1lKQoreworICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFQpID09IHNpemVvZihJUEM6Ok1lc3Nh
Z2VOYW1lKSwgImlzVmFsaWRFbnVtPE1lc3NhZ2VOYW1lPiBzaG91bGQgb25seSBiZSBjYWxsZWQg
d2l0aCAxNi1iaXQgdHlwZXMiKTsKKyAgICByZXR1cm4gSVBDOjppc1ZhbGlkTWVzc2FnZU5hbWUo
c3RhdGljX2Nhc3Q8SVBDOjpNZXNzYWdlTmFtZT4obWVzc2FnZU5hbWUpKTsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdURgpJbmRleDogU291cmNlL1dlYktpdC9TY3JpcHRzL2dlbmVyYXRlLW1lc3Nh
Z2UtcmVjZWl2ZXIucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TY3JpcHRzL2dlbmVy
YXRlLW1lc3NhZ2UtcmVjZWl2ZXIucHkJKHJldmlzaW9uIDI2MTIzOCkKKysrIFNvdXJjZS9XZWJL
aXQvU2NyaXB0cy9nZW5lcmF0ZS1tZXNzYWdlLXJlY2VpdmVyLnB5CSh3b3JraW5nIGNvcHkpCkBA
IC0yMywzMyArMjMsNDggQEAKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogZnJvbSBfX2Z1dHVyZV9fIGltcG9y
dCB3aXRoX3N0YXRlbWVudAotaW1wb3J0IGFyZ3BhcnNlCiBpbXBvcnQgc3lzCiAKIGltcG9ydCB3
ZWJraXQubWVzc2FnZXMKIGltcG9ydCB3ZWJraXQucGFyc2VyCiAKIAotZGVmIG1haW4oYXJndj1O
b25lKToKLSAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcigpCi0gICAgcGFyc2Vy
LmFkZF9hcmd1bWVudCgnc291cmNlJykKLSAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLWltcGxl
bWVudGF0aW9uJywgcmVxdWlyZWQ9VHJ1ZSkKLSAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLWhl
YWRlcicsIHJlcXVpcmVkPVRydWUpCi0gICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1yZXBseS1o
ZWFkZXInLCByZXF1aXJlZD1UcnVlKQotCi0gICAgYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKCkK
LQotICAgIHdpdGggb3BlbihhcmdzLnNvdXJjZSkgYXMgc291cmNlX2ZpbGU6Ci0gICAgICAgIHJl
Y2VpdmVyID0gd2Via2l0LnBhcnNlci5wYXJzZShzb3VyY2VfZmlsZSkKK2RlZiBtYWluKGFyZ3Yp
OgorICAgIHJlY2VpdmVycyA9IFtdCiAKLSAgICB3aXRoIG9wZW4oYXJncy5pbXBsZW1lbnRhdGlv
biwgIncrIikgYXMgaW1wbGVtZW50YXRpb25fb3V0cHV0OgotICAgICAgICBpbXBsZW1lbnRhdGlv
bl9vdXRwdXQud3JpdGUod2Via2l0Lm1lc3NhZ2VzLmdlbmVyYXRlX21lc3NhZ2VfaGFuZGxlcihy
ZWNlaXZlcikpCisgICAgZmlyc3RfYXJnID0gVHJ1ZQorICAgIHNlY29uZF9hcmcgPSBGYWxzZQor
ICAgIGZvciBwYXJhbWV0ZXIgaW4gYXJndjoKKyAgICAgICAgaWYgZmlyc3RfYXJnOgorICAgICAg
ICAgICAgZmlyc3RfYXJnID0gRmFsc2UKKyAgICAgICAgICAgIHNlY29uZF9hcmcgPSBUcnVlCisg
ICAgICAgICAgICBjb250aW51ZQorICAgICAgICBpZiBzZWNvbmRfYXJnOgorICAgICAgICAgICAg
YmFzZV9kaXIgPSBwYXJhbWV0ZXIKKyAgICAgICAgICAgIHNlY29uZF9hcmcgPSBGYWxzZQorICAg
ICAgICAgICAgY29udGludWUKKworICAgICAgICByZWNlaXZlcl9uYW1lID0gcGFyYW1ldGVyLnJz
cGxpdCgnLycsIDEpLnBvcCgpCisgICAgICAgIHByaW50ICdHZW5lcmF0aW5nIG1lc3NhZ2UgcmVj
ZWl2ZXIgZm9yICVzJyAlIHJlY2VpdmVyX25hbWUKKworICAgICAgICB3aXRoIG9wZW4oJyVzLyVz
Lm1lc3NhZ2VzLmluJyAlIChiYXNlX2RpciwgcGFyYW1ldGVyKSkgYXMgc291cmNlX2ZpbGU6Cisg
ICAgICAgICAgICByZWNlaXZlciA9IHdlYmtpdC5wYXJzZXIucGFyc2Uoc291cmNlX2ZpbGUpCisg
ICAgICAgIHJlY2VpdmVycy5hcHBlbmQocmVjZWl2ZXIpCisKKyAgICAgICAgd2l0aCBvcGVuKCcl
c01lc3NhZ2VSZWNlaXZlci5jcHAnICUgcmVjZWl2ZXJfbmFtZSwgIncrIikgYXMgaW1wbGVtZW50
YXRpb25fb3V0cHV0OgorICAgICAgICAgICAgaW1wbGVtZW50YXRpb25fb3V0cHV0LndyaXRlKHdl
YmtpdC5tZXNzYWdlcy5nZW5lcmF0ZV9tZXNzYWdlX2hhbmRsZXIocmVjZWl2ZXIpKQorCisgICAg
ICAgIHdpdGggb3BlbignJXNNZXNzYWdlcy5oJyAlIHJlY2VpdmVyX25hbWUsICJ3KyIpIGFzIGhl
YWRlcl9vdXRwdXQ6CisgICAgICAgICAgICBoZWFkZXJfb3V0cHV0LndyaXRlKHdlYmtpdC5tZXNz
YWdlcy5nZW5lcmF0ZV9tZXNzYWdlc19oZWFkZXIocmVjZWl2ZXIpKQogCi0gICAgd2l0aCBvcGVu
KGFyZ3MuaGVhZGVyLCAidysiKSBhcyBoZWFkZXJfb3V0cHV0OgotICAgICAgICBoZWFkZXJfb3V0
cHV0LndyaXRlKHdlYmtpdC5tZXNzYWdlcy5nZW5lcmF0ZV9tZXNzYWdlc19oZWFkZXIocmVjZWl2
ZXIpKQorICAgICAgICB3aXRoIG9wZW4oJyVzTWVzc2FnZXNSZXBsaWVzLmgnICUgcmVjZWl2ZXJf
bmFtZSwgIncrIikgYXMgcmVwbHlfaGVhZGVyX291dHB1dDoKKyAgICAgICAgICAgIHJlcGx5X2hl
YWRlcl9vdXRwdXQud3JpdGUod2Via2l0Lm1lc3NhZ2VzLmdlbmVyYXRlX21lc3NhZ2VzX3JlcGx5
X2hlYWRlcihyZWNlaXZlcikpCiAKLSAgICB3aXRoIG9wZW4oYXJncy5yZXBseV9oZWFkZXIsICJ3
KyIpIGFzIHJlcGx5X2hlYWRlcl9vdXRwdXQ6Ci0gICAgICAgIHJlcGx5X2hlYWRlcl9vdXRwdXQu
d3JpdGUod2Via2l0Lm1lc3NhZ2VzLmdlbmVyYXRlX21lc3NhZ2VzX3JlcGx5X2hlYWRlcihyZWNl
aXZlcikpCisgICAgd2l0aCBvcGVuKCdNZXNzYWdlTmFtZXMuaCcsICJ3KyIpIGFzIG1lc3NhZ2Vf
bmFtZXNfaGVhZGVyX291dHB1dDoKKyAgICAgICAgbWVzc2FnZV9uYW1lc19oZWFkZXJfb3V0cHV0
LndyaXRlKHdlYmtpdC5tZXNzYWdlcy5nZW5lcmF0ZV9tZXNzYWdlX25hbWVzX2hlYWRlcihyZWNl
aXZlcnMpKQorCisgICAgd2l0aCBvcGVuKCdNZXNzYWdlTmFtZXMuY3BwJywgIncrIikgYXMgbWVz
c2FnZV9uYW1lc19pbXBsZW1lbnRhdGlvbl9vdXRwdXQ6CisgICAgICAgIG1lc3NhZ2VfbmFtZXNf
aW1wbGVtZW50YXRpb25fb3V0cHV0LndyaXRlKHdlYmtpdC5tZXNzYWdlcy5nZW5lcmF0ZV9tZXNz
YWdlX25hbWVzX2ltcGxlbWVudGF0aW9uKHJlY2VpdmVycykpCiAKICAgICByZXR1cm4gMAogCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvdGVzdC1sZWdhY3lNZXNzYWdlUmVjZWl2ZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy90ZXN0LWxlZ2FjeU1lc3NhZ2VS
ZWNlaXZlci5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9TY3JpcHRzL3Rlc3Qt
bGVnYWN5TWVzc2FnZVJlY2VpdmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDIwMyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IK
KyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIChFTkFCTEUo
V0VCS0lUMikgJiYgKE5FU1RFRF9NQVNURVJfQ09ORElUSU9OIHx8IE1BU1RFUl9PUiAmJiBNQVNU
RVJfQU5EKSkKKworI2luY2x1ZGUgIldlYlBhZ2UuaCIKKworI2luY2x1ZGUgIkFyZ3VtZW50Q29k
ZXJzLmgiCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIkRlY29kZXIuaCIKKyNp
ZiBFTkFCTEUoREVQUkVDQVRFRF9GRUFUVVJFKSB8fCBFTkFCTEUoRVhQRVJJTUVOVEFMX0ZFQVRV
UkUpCisjaW5jbHVkZSAiRHVtbXlUeXBlLmgiCisjZW5kaWYKKyNpbmNsdWRlICJIYW5kbGVNZXNz
YWdlLmgiCisjaWYgUExBVEZPUk0oTUFDKQorI2luY2x1ZGUgIk1hY2hQb3J0LmgiCisjZW5kaWYK
KyNpbmNsdWRlICJQbHVnaW4uaCIKKyNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIK
KyNpZiAoRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgKE5FU1RFRF9NRVNTQUdFX0NPTkRJVElPTiAm
JiBTT01FX09USEVSX01FU1NBR0VfQ09ORElUSU9OKSkgfHwgKEVOQUJMRShUT1VDSF9FVkVOVFMp
ICYmIChORVNURURfTUVTU0FHRV9DT05ESVRJT04gfHwgU09NRV9PVEhFUl9NRVNTQUdFX0NPTkRJ
VElPTikpCisjaW5jbHVkZSAiV2ViRXZlbnQuaCIKKyNlbmRpZgorI2luY2x1ZGUgIldlYlBhZ2VN
ZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlByZWZlcmVuY2VzU3RvcmUuaCIKKyNpbmNsdWRlIDxX
ZWJDb3JlL0dyYXBoaWNzTGF5ZXIuaD4KKyNpZiBQTEFURk9STShNQUMpCisjaW5jbHVkZSA8V2Vi
Q29yZS9LZXlib2FyZEV2ZW50Lmg+CisjZW5kaWYKKyNpbmNsdWRlIDxXZWJDb3JlL1BsdWdpbkRh
dGEuaD4KKyNpbmNsdWRlIDx1dGlsaXR5PgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCitu
YW1lc3BhY2UgTWVzc2FnZXMgeworCituYW1lc3BhY2UgV2ViUGFnZSB7CisKK3ZvaWQgR2V0UGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OnNlbmQoc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4m
JiBlbmNvZGVyLCBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IElQQzo6Q29ubmVj
dGlvbjo6SGFuZGxlJiBjb25uZWN0aW9uSGFuZGxlKQoreworICAgICplbmNvZGVyIDw8IGNvbm5l
Y3Rpb25IYW5kbGU7CisgICAgY29ubmVjdGlvbi5zZW5kU3luY1JlcGx5KFdURk1vdmUoZW5jb2Rl
cikpOworfQorCit2b2lkIFRlc3RNdWx0aXBsZUF0dHJpYnV0ZXM6OnNlbmQoc3RkOjp1bmlxdWVf
cHRyPElQQzo6RW5jb2Rlcj4mJiBlbmNvZGVyLCBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24p
Cit7CisgICAgY29ubmVjdGlvbi5zZW5kU3luY1JlcGx5KFdURk1vdmUoZW5jb2RlcikpOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJQYWdlCisKK30gLy8gbmFtZXNwYWNlIE1lc3NhZ2VzCisKK25h
bWVzcGFjZSBXZWJLaXQgeworCit2b2lkIFdlYlBhZ2U6OmRpZFJlY2VpdmVXZWJQYWdlTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikKK3sK
KyAgICBhdXRvIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKTsKKyAgICBpZiAoZGVjb2Rl
ci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkVVJMOjpuYW1lKCkpIHsK
KyAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkVVJMPihk
ZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6bG9hZFVSTCk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgp
ID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkU29tZXRoaW5nOjpuYW1lKCkpIHsKKyAgICAgICAg
SVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkU29tZXRoaW5nPihkZWNv
ZGVyLCB0aGlzLCAmV2ViUGFnZTo6bG9hZFNvbWV0aGluZyk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisjZW5kaWYKKyNpZiAoRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgKE5FU1RFRF9NRVNTQUdF
X0NPTkRJVElPTiB8fCBTT01FX09USEVSX01FU1NBR0VfQ09ORElUSU9OKSkKKyAgICBpZiAoZGVj
b2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpUb3VjaEV2ZW50OjpuYW1l
KCkpIHsKKyAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpUb3Vj
aEV2ZW50PihkZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6dG91Y2hFdmVudCk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisjZW5kaWYKKyNpZiAoRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgKE5FU1RF
RF9NRVNTQUdFX0NPTkRJVElPTiAmJiBTT01FX09USEVSX01FU1NBR0VfQ09ORElUSU9OKSkKKyAg
ICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpBZGRFdmVu
dDo6bmFtZSgpKSB7CisgICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFn
ZTo6QWRkRXZlbnQ+KGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjphZGRFdmVudCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisjZW5kaWYKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgIGlm
IChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRTb21ldGhp
bmdFbHNlOjpuYW1lKCkpIHsKKyAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpX
ZWJQYWdlOjpMb2FkU29tZXRoaW5nRWxzZT4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OmxvYWRT
b21ldGhpbmdFbHNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorICAgIGlmIChk
ZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJlY2VpdmVQb2xp
Y3lEZWNpc2lvbjo6bmFtZSgpKSB7CisgICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdl
czo6V2ViUGFnZTo6RGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uPihkZWNvZGVyLCB0aGlzLCAmV2Vi
UGFnZTo6ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpDbG9z
ZTo6bmFtZSgpKSB7CisgICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFn
ZTo6Q2xvc2U+KGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjpjbG9zZSk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2Vi
UGFnZTo6UHJlZmVyZW5jZXNEaWRDaGFuZ2U6Om5hbWUoKSkgeworICAgICAgICBJUEM6OmhhbmRs
ZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OlByZWZlcmVuY2VzRGlkQ2hhbmdlPihkZWNvZGVy
LCB0aGlzLCAmV2ViUGFnZTo6cHJlZmVyZW5jZXNEaWRDaGFuZ2UpOworICAgICAgICByZXR1cm47
CisgICAgfQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBh
Z2U6OlNlbmREb3VibGVBbmRGbG9hdDo6bmFtZSgpKSB7CisgICAgICAgIElQQzo6aGFuZGxlTWVz
c2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6U2VuZERvdWJsZUFuZEZsb2F0PihkZWNvZGVyLCB0aGlz
LCAmV2ViUGFnZTo6c2VuZERvdWJsZUFuZEZsb2F0KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpTZW5k
SW50czo6bmFtZSgpKSB7CisgICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2Vi
UGFnZTo6U2VuZEludHM+KGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjpzZW5kSW50cyk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNz
YWdlczo6V2ViUGFnZTo6VGVzdFBhcmFtZXRlckF0dHJpYnV0ZXM6Om5hbWUoKSkgeworICAgICAg
ICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RQYXJhbWV0ZXJBdHRy
aWJ1dGVzPihkZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6dGVzdFBhcmFtZXRlckF0dHJpYnV0ZXMp
OworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkg
PT0gTWVzc2FnZXM6OldlYlBhZ2U6OlRlbXBsYXRlVGVzdDo6bmFtZSgpKSB7CisgICAgICAgIElQ
Qzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6VGVtcGxhdGVUZXN0PihkZWNvZGVy
LCB0aGlzLCAmV2ViUGFnZTo6dGVtcGxhdGVUZXN0KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRW
aWRlb0xheWVySUQ6Om5hbWUoKSkgeworICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2Fn
ZXM6OldlYlBhZ2U6OlNldFZpZGVvTGF5ZXJJRD4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OnNl
dFZpZGVvTGF5ZXJJRCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjaWYgUExBVEZPUk0oTUFD
KQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OkRp
ZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uOjpuYW1lKCkpIHsKKyAgICAgICAgSVBDOjpoYW5k
bGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlv
bj4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OmRpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9u
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorI2lmIEVOQUJMRShERVBSRUNBVEVE
X0ZFQVRVUkUpCisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2Vi
UGFnZTo6RGVwcmVjYXRlZE9wZXJhdGlvbjo6bmFtZSgpKSB7CisgICAgICAgIElQQzo6aGFuZGxl
TWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6RGVwcmVjYXRlZE9wZXJhdGlvbj4oZGVjb2Rlciwg
dGhpcywgJldlYlBhZ2U6OmRlcHJlY2F0ZWRPcGVyYXRpb24pOworICAgICAgICByZXR1cm47Cisg
ICAgfQorI2VuZGlmCisjaWYgRU5BQkxFKEVYUEVSSU1FTlRBTF9GRUFUVVJFKQorICAgIGlmIChk
ZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OkV4cGVyaW1lbnRhbE9w
ZXJhdGlvbjo6bmFtZSgpKSB7CisgICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6
V2ViUGFnZTo6RXhwZXJpbWVudGFsT3BlcmF0aW9uPihkZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6
ZXhwZXJpbWVudGFsT3BlcmF0aW9uKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgor
ICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsKKyAgICBVTlVTRURfUEFSQU0oZGVjb2Rlcik7
CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3ZvaWQgV2ViUGFnZTo6ZGlkUmVjZWl2
ZVN5bmNXZWJQYWdlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVj
b2RlciYgZGVjb2Rlciwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mIHJlcGx5RW5jb2Rl
cikKK3sKKyAgICBhdXRvIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKTsKKyAgICBpZiAo
ZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpDcmVhdGVQbHVnaW46
Om5hbWUoKSkgeworICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6
OkNyZWF0ZVBsdWdpbj4oZGVjb2RlciwgKnJlcGx5RW5jb2RlciwgdGhpcywgJldlYlBhZ2U6OmNy
ZWF0ZVBsdWdpbik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKGRlY29kZXIubWVz
c2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6UnVuSmF2YVNjcmlwdEFsZXJ0OjpuYW1l
KCkpIHsKKyAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpSdW5K
YXZhU2NyaXB0QWxlcnQ+KGRlY29kZXIsICpyZXBseUVuY29kZXIsIHRoaXMsICZXZWJQYWdlOjpy
dW5KYXZhU2NyaXB0QWxlcnQpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChkZWNv
ZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OkdldFBsdWdpbnM6Om5hbWUo
KSkgeworICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OkdldFBs
dWdpbnM+KGRlY29kZXIsICpyZXBseUVuY29kZXIsIHRoaXMsICZXZWJQYWdlOjpnZXRQbHVnaW5z
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgp
ID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6bmFtZSgp
KSB7CisgICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZVN5bmNocm9ub3VzPE1lc3NhZ2VzOjpXZWJQ
YWdlOjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbj4oY29ubmVjdGlvbiwgZGVjb2RlciwgcmVw
bHlFbmNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6Z2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24pOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0g
TWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RNdWx0aXBsZUF0dHJpYnV0ZXM6Om5hbWUoKSkgeworICAg
ICAgICBJUEM6OmhhbmRsZU1lc3NhZ2VTeW5jaHJvbm91c1dhbnRzQ29ubmVjdGlvbjxNZXNzYWdl
czo6V2ViUGFnZTo6VGVzdE11bHRpcGxlQXR0cmlidXRlcz4oY29ubmVjdGlvbiwgZGVjb2Rlciwg
cmVwbHlFbmNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6dGVzdE11bHRpcGxlQXR0cmlidXRlcyk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisjaWYgUExBVEZPUk0oTUFDKQorICAgIGlmIChkZWNvZGVy
Lm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OkludGVycHJldEtleUV2ZW50Ojpu
YW1lKCkpIHsKKyAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpJ
bnRlcnByZXRLZXlFdmVudD4oZGVjb2RlciwgKnJlcGx5RW5jb2RlciwgdGhpcywgJldlYlBhZ2U6
OmludGVycHJldEtleUV2ZW50KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorICAg
IFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsKKyAgICBVTlVTRURfUEFSQU0oZGVjb2Rlcik7Cisg
ICAgVU5VU0VEX1BBUkFNKHJlcGx5RW5jb2Rlcik7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisKKyNlbmRpZiAvLyAoRU5BQkxFKFdFQktJ
VDIpICYmIChORVNURURfTUFTVEVSX0NPTkRJVElPTiB8fCBNQVNURVJfT1IgJiYgTUFTVEVSX0FO
RCkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvdGVzdC1sZWdhY3lNZXNzYWdlcy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy90ZXN0LWxlZ2FjeU1lc3NhZ2VzLmgJ
KG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9TY3JpcHRzL3Rlc3QtbGVnYWN5TWVzc2Fn
ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU0OSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAq
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaWYgKEVOQUJMRShXRUJLSVQyKSAmJiAoTkVTVEVEX01BU1RFUl9D
T05ESVRJT04gfHwgTUFTVEVSX09SICYmIE1BU1RFUl9BTkQpKQorCisjaW5jbHVkZSAiQXJndW1l
bnRDb2RlcnMuaCIKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiTWVzc2FnZU5h
bWVzLmgiCisjaW5jbHVkZSAiUGx1Z2luLmgiCisjaW5jbHVkZSAiV2ViUGFnZU1lc3NhZ2VzUmVw
bGllcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NMYXllci5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvS2V5Ym9hcmRFdmVudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGx1Z2luRGF0YS5oPgor
I2luY2x1ZGUgPHV0aWxpdHk+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKwor
bmFtZXNwYWNlIElQQyB7CitjbGFzcyBEdW1teVR5cGU7CitjbGFzcyBNYWNoUG9ydDsKK30KKwor
bmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBXZWJQcmVmZXJlbmNlc1N0b3JlOworY2xhc3MgV2Vi
VG91Y2hFdmVudDsKK30KKworbmFtZXNwYWNlIE1lc3NhZ2VzIHsKK25hbWVzcGFjZSBXZWJQYWdl
IHsKKworc3RhdGljIGlubGluZSBJUEM6OlJlY2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1l
KCkKK3sKKyAgICByZXR1cm4gSVBDOjpSZWNlaXZlck5hbWU6OldlYlBhZ2U7Cit9CisKK2NsYXNz
IExvYWRVUkwgeworcHVibGljOgorICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBTdHJpbmcm
PiBBcmd1bWVudHM7CisKKyAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1
cm4gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9Mb2FkVVJMOyB9CisgICAgc3RhdGljIGNvbnN0
IGJvb2wgaXNTeW5jID0gZmFsc2U7CisKKyAgICBleHBsaWNpdCBMb2FkVVJMKGNvbnN0IFN0cmlu
ZyYgdXJsKQorICAgICAgICA6IG1fYXJndW1lbnRzKHVybCkKKyAgICB7CisgICAgfQorCisgICAg
Y29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJu
IG1fYXJndW1lbnRzOworICAgIH0KKworcHJpdmF0ZToKKyAgICBBcmd1bWVudHMgbV9hcmd1bWVu
dHM7Cit9OworCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKK2NsYXNzIExvYWRTb21ldGhpbmcg
eworcHVibGljOgorICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBTdHJpbmcmPiBBcmd1bWVu
dHM7CisKKyAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpN
ZXNzYWdlTmFtZTo6V2ViUGFnZV9Mb2FkU29tZXRoaW5nOyB9CisgICAgc3RhdGljIGNvbnN0IGJv
b2wgaXNTeW5jID0gZmFsc2U7CisKKyAgICBleHBsaWNpdCBMb2FkU29tZXRoaW5nKGNvbnN0IFN0
cmluZyYgdXJsKQorICAgICAgICA6IG1fYXJndW1lbnRzKHVybCkKKyAgICB7CisgICAgfQorCisg
ICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0
dXJuIG1fYXJndW1lbnRzOworICAgIH0KKworcHJpdmF0ZToKKyAgICBBcmd1bWVudHMgbV9hcmd1
bWVudHM7Cit9OworI2VuZGlmCisKKyNpZiAoRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgKE5FU1RF
RF9NRVNTQUdFX0NPTkRJVElPTiB8fCBTT01FX09USEVSX01FU1NBR0VfQ09ORElUSU9OKSkKK2Ns
YXNzIFRvdWNoRXZlbnQgeworcHVibGljOgorICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBX
ZWJLaXQ6OldlYlRvdWNoRXZlbnQmPiBBcmd1bWVudHM7CisKKyAgICBzdGF0aWMgSVBDOjpNZXNz
YWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9Ub3VjaEV2
ZW50OyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7CisKKyAgICBleHBs
aWNpdCBUb3VjaEV2ZW50KGNvbnN0IFdlYktpdDo6V2ViVG91Y2hFdmVudCYgZXZlbnQpCisgICAg
ICAgIDogbV9hcmd1bWVudHMoZXZlbnQpCisgICAgeworICAgIH0KKworICAgIGNvbnN0IEFyZ3Vt
ZW50cyYgYXJndW1lbnRzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2FyZ3VtZW50
czsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOworfTsKKyNl
bmRpZgorCisjaWYgKEVOQUJMRShUT1VDSF9FVkVOVFMpICYmIChORVNURURfTUVTU0FHRV9DT05E
SVRJT04gJiYgU09NRV9PVEhFUl9NRVNTQUdFX0NPTkRJVElPTikpCitjbGFzcyBBZGRFdmVudCB7
CitwdWJsaWM6CisgICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGNvbnN0IFdlYktpdDo6V2ViVG91Y2hF
dmVudCY+IEFyZ3VtZW50czsKKworICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7
IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX0FkZEV2ZW50OyB9CisgICAgc3RhdGlj
IGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7CisKKyAgICBleHBsaWNpdCBBZGRFdmVudChjb25z
dCBXZWJLaXQ6OldlYlRvdWNoRXZlbnQmIGV2ZW50KQorICAgICAgICA6IG1fYXJndW1lbnRzKGV2
ZW50KQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNv
bnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7CisgICAgfQorCitwcml2YXRl
OgorICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKK307CisjZW5kaWYKKworI2lmIEVOQUJMRShU
T1VDSF9FVkVOVFMpCitjbGFzcyBMb2FkU29tZXRoaW5nRWxzZSB7CitwdWJsaWM6CisgICAgdHlw
ZWRlZiBzdGQ6OnR1cGxlPGNvbnN0IFN0cmluZyY+IEFyZ3VtZW50czsKKworICAgIHN0YXRpYyBJ
UEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdl
X0xvYWRTb21ldGhpbmdFbHNlOyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFs
c2U7CisKKyAgICBleHBsaWNpdCBMb2FkU29tZXRoaW5nRWxzZShjb25zdCBTdHJpbmcmIHVybCkK
KyAgICAgICAgOiBtX2FyZ3VtZW50cyh1cmwpCisgICAgeworICAgIH0KKworICAgIGNvbnN0IEFy
Z3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2FyZ3Vt
ZW50czsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOworfTsK
KyNlbmRpZgorCitjbGFzcyBEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24geworcHVibGljOgorICAg
IHR5cGVkZWYgc3RkOjp0dXBsZTx1aW50NjRfdCwgdWludDY0X3QsIHVpbnQzMl90PiBBcmd1bWVu
dHM7CisKKyAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpN
ZXNzYWdlTmFtZTo6V2ViUGFnZV9EaWRSZWNlaXZlUG9saWN5RGVjaXNpb247IH0KKyAgICBzdGF0
aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKKworICAgIERpZFJlY2VpdmVQb2xpY3lEZWNp
c2lvbih1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBsaXN0ZW5lcklELCB1aW50MzJfdCBwb2xp
Y3lBY3Rpb24pCisgICAgICAgIDogbV9hcmd1bWVudHMoZnJhbWVJRCwgbGlzdGVuZXJJRCwgcG9s
aWN5QWN0aW9uKQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50
cygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7CisgICAgfQorCitw
cml2YXRlOgorICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKK307CisKK2NsYXNzIENsb3NlIHsK
K3B1YmxpYzoKKyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8PiBBcmd1bWVudHM7CisKKyAgICBzdGF0
aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6V2Vi
UGFnZV9DbG9zZTsgfQorICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOworCisg
ICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0
dXJuIG1fYXJndW1lbnRzOworICAgIH0KKworcHJpdmF0ZToKKyAgICBBcmd1bWVudHMgbV9hcmd1
bWVudHM7Cit9OworCitjbGFzcyBQcmVmZXJlbmNlc0RpZENoYW5nZSB7CitwdWJsaWM6CisgICAg
dHlwZWRlZiBzdGQ6OnR1cGxlPGNvbnN0IFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZSY+IEFy
Z3VtZW50czsKKworICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJ
UEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX1ByZWZlcmVuY2VzRGlkQ2hhbmdlOyB9CisgICAgc3Rh
dGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7CisKKyAgICBleHBsaWNpdCBQcmVmZXJlbmNl
c0RpZENoYW5nZShjb25zdCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlKQorICAg
ICAgICA6IG1fYXJndW1lbnRzKHN0b3JlKQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdCBBcmd1
bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9hcmd1bWVu
dHM7CisgICAgfQorCitwcml2YXRlOgorICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKK307CisK
K2NsYXNzIFNlbmREb3VibGVBbmRGbG9hdCB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBzdGQ6OnR1
cGxlPGRvdWJsZSwgZmxvYXQ+IEFyZ3VtZW50czsKKworICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VO
YW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX1NlbmREb3VibGVB
bmRGbG9hdDsgfQorICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOworCisgICAg
U2VuZERvdWJsZUFuZEZsb2F0KGRvdWJsZSBkLCBmbG9hdCBmKQorICAgICAgICA6IG1fYXJndW1l
bnRzKGQsIGYpCisgICAgeworICAgIH0KKworICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRz
KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKKyAgICB9CisKK3By
aXZhdGU6CisgICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOworfTsKKworY2xhc3MgU2VuZEludHMg
eworcHVibGljOgorICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBWZWN0b3I8dWludDY0X3Q+
JiwgY29uc3QgVmVjdG9yPFZlY3Rvcjx1aW50NjRfdD4+Jj4gQXJndW1lbnRzOworCisgICAgc3Rh
dGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6Oldl
YlBhZ2VfU2VuZEludHM7IH0KKyAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsK
KworICAgIFNlbmRJbnRzKGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIGludHMsIGNvbnN0IFZlY3Rv
cjxWZWN0b3I8dWludDY0X3Q+PiYgaW50VmVjdG9ycykKKyAgICAgICAgOiBtX2FyZ3VtZW50cyhp
bnRzLCBpbnRWZWN0b3JzKQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdCBBcmd1bWVudHMmIGFy
Z3VtZW50cygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7CisgICAg
fQorCitwcml2YXRlOgorICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKK307CisKK2NsYXNzIENy
ZWF0ZVBsdWdpbiB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBzdGQ6OnR1cGxlPHVpbnQ2NF90LCBj
b25zdCBXZWJLaXQ6OlBsdWdpbjo6UGFyYW1ldGVycyY+IEFyZ3VtZW50czsKKworICAgIHN0YXRp
YyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQ
YWdlX0NyZWF0ZVBsdWdpbjsgfQorICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IHRydWU7
CisKKyAgICB1c2luZyBSZXBseSA9IHN0ZDo6dHVwbGU8Ym9vbCY+OworICAgIHVzaW5nIFJlcGx5
QXJndW1lbnRzID0gc3RkOjp0dXBsZTxib29sPjsKKyAgICBDcmVhdGVQbHVnaW4odWludDY0X3Qg
cGx1Z2luSW5zdGFuY2VJRCwgY29uc3QgV2ViS2l0OjpQbHVnaW46OlBhcmFtZXRlcnMmIHBhcmFt
ZXRlcnMpCisgICAgICAgIDogbV9hcmd1bWVudHMocGx1Z2luSW5zdGFuY2VJRCwgcGFyYW1ldGVy
cykKKyAgICB7CisgICAgfQorCisgICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25z
dAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOworICAgIH0KKworcHJpdmF0ZToK
KyAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Cit9OworCitjbGFzcyBSdW5KYXZhU2NyaXB0QWxl
cnQgeworcHVibGljOgorICAgIHR5cGVkZWYgc3RkOjp0dXBsZTx1aW50NjRfdCwgY29uc3QgU3Ry
aW5nJj4gQXJndW1lbnRzOworCisgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsg
cmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfUnVuSmF2YVNjcmlwdEFsZXJ0OyB9Cisg
ICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gdHJ1ZTsKKworICAgIHVzaW5nIFJlcGx5ID0g
c3RkOjp0dXBsZTw+OworICAgIHVzaW5nIFJlcGx5QXJndW1lbnRzID0gc3RkOjp0dXBsZTw+Owor
ICAgIFJ1bkphdmFTY3JpcHRBbGVydCh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIG1l
c3NhZ2UpCisgICAgICAgIDogbV9hcmd1bWVudHMoZnJhbWVJRCwgbWVzc2FnZSkKKyAgICB7Cisg
ICAgfQorCisgICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAorICAgIHsKKyAg
ICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOworICAgIH0KKworcHJpdmF0ZToKKyAgICBBcmd1bWVu
dHMgbV9hcmd1bWVudHM7Cit9OworCitjbGFzcyBHZXRQbHVnaW5zIHsKK3B1YmxpYzoKKyAgICB0
eXBlZGVmIHN0ZDo6dHVwbGU8Ym9vbD4gQXJndW1lbnRzOworCisgICAgc3RhdGljIElQQzo6TWVz
c2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfR2V0UGx1
Z2luczsgfQorICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IHRydWU7CisKKyAgICB1c2lu
ZyBSZXBseSA9IHN0ZDo6dHVwbGU8VmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+Jj47CisgICAg
dXNpbmcgUmVwbHlBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5J
bmZvPj47CisgICAgZXhwbGljaXQgR2V0UGx1Z2lucyhib29sIHJlZnJlc2gpCisgICAgICAgIDog
bV9hcmd1bWVudHMocmVmcmVzaCkKKyAgICB7CisgICAgfQorCisgICAgY29uc3QgQXJndW1lbnRz
JiBhcmd1bWVudHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwor
ICAgIH0KKworcHJpdmF0ZToKKyAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Cit9OworCitjbGFz
cyBHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbiB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBzdGQ6
OnR1cGxlPGNvbnN0IFN0cmluZyY+IEFyZ3VtZW50czsKKworICAgIHN0YXRpYyBJUEM6Ok1lc3Nh
Z2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX0dldFBsdWdp
blByb2Nlc3NDb25uZWN0aW9uOyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gdHJ1
ZTsKKworICAgIHVzaW5nIERlbGF5ZWRSZXBseSA9IEdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9u
RGVsYXllZFJlcGx5OworICAgIHN0YXRpYyB2b2lkIHNlbmQoc3RkOjp1bmlxdWVfcHRyPElQQzo6
RW5jb2Rlcj4mJiwgSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgSVBDOjpDb25uZWN0aW9uOjpIYW5k
bGUmIGNvbm5lY3Rpb25IYW5kbGUpOworICAgIHVzaW5nIFJlcGx5ID0gc3RkOjp0dXBsZTxJUEM6
OkNvbm5lY3Rpb246OkhhbmRsZSY+OworICAgIHVzaW5nIFJlcGx5QXJndW1lbnRzID0gc3RkOjp0
dXBsZTxJUEM6OkNvbm5lY3Rpb246OkhhbmRsZT47CisgICAgZXhwbGljaXQgR2V0UGx1Z2luUHJv
Y2Vzc0Nvbm5lY3Rpb24oY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoKQorICAgICAgICA6IG1fYXJn
dW1lbnRzKHBsdWdpblBhdGgpCisgICAgeworICAgIH0KKworICAgIGNvbnN0IEFyZ3VtZW50cyYg
YXJndW1lbnRzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKKyAg
ICB9CisKK3ByaXZhdGU6CisgICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOworfTsKKworY2xhc3Mg
VGVzdE11bHRpcGxlQXR0cmlidXRlcyB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBzdGQ6OnR1cGxl
PD4gQXJndW1lbnRzOworCisgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0
dXJuIElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVzdE11bHRpcGxlQXR0cmlidXRlczsgfQor
ICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IHRydWU7CisKKyAgICB1c2luZyBEZWxheWVk
UmVwbHkgPSBUZXN0TXVsdGlwbGVBdHRyaWJ1dGVzRGVsYXllZFJlcGx5OworICAgIHN0YXRpYyB2
b2lkIHNlbmQoc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mJiwgSVBDOjpDb25uZWN0aW9u
Jik7CisgICAgdXNpbmcgUmVwbHkgPSBzdGQ6OnR1cGxlPD47CisgICAgdXNpbmcgUmVwbHlBcmd1
bWVudHMgPSBzdGQ6OnR1cGxlPD47CisgICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBj
b25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOworICAgIH0KKworcHJpdmF0
ZToKKyAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Cit9OworCitjbGFzcyBUZXN0UGFyYW1ldGVy
QXR0cmlidXRlcyB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBzdGQ6OnR1cGxlPHVpbnQ2NF90LCBk
b3VibGUsIGRvdWJsZT4gQXJndW1lbnRzOworCisgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUg
bmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVzdFBhcmFtZXRlckF0
dHJpYnV0ZXM7IH0KKyAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKKworICAg
IFRlc3RQYXJhbWV0ZXJBdHRyaWJ1dGVzKHVpbnQ2NF90IGZvbywgZG91YmxlIGJhciwgZG91Ymxl
IGJheikKKyAgICAgICAgOiBtX2FyZ3VtZW50cyhmb28sIGJhciwgYmF6KQorICAgIHsKKyAgICB9
CisKKyAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0CisgICAgeworICAgICAg
ICByZXR1cm4gbV9hcmd1bWVudHM7CisgICAgfQorCitwcml2YXRlOgorICAgIEFyZ3VtZW50cyBt
X2FyZ3VtZW50czsKK307CisKK2NsYXNzIFRlbXBsYXRlVGVzdCB7CitwdWJsaWM6CisgICAgdHlw
ZWRlZiBzdGQ6OnR1cGxlPGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBzdGQ6OnBhaXI8U3RyaW5nLCB1
aW50NjRfdD4+Jj4gQXJndW1lbnRzOworCisgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFt
ZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVtcGxhdGVUZXN0OyB9Cisg
ICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7CisKKyAgICBleHBsaWNpdCBUZW1w
bGF0ZVRlc3QoY29uc3QgSGFzaE1hcDxTdHJpbmcsIHN0ZDo6cGFpcjxTdHJpbmcsIHVpbnQ2NF90
Pj4mIGEpCisgICAgICAgIDogbV9hcmd1bWVudHMoYSkKKyAgICB7CisgICAgfQorCisgICAgY29u
c3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1f
YXJndW1lbnRzOworICAgIH0KKworcHJpdmF0ZToKKyAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7
Cit9OworCitjbGFzcyBTZXRWaWRlb0xheWVySUQgeworcHVibGljOgorICAgIHR5cGVkZWYgc3Rk
Ojp0dXBsZTxjb25zdCBXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQmPiBB
cmd1bWVudHM7CisKKyAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4g
SVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9TZXRWaWRlb0xheWVySUQ7IH0KKyAgICBzdGF0aWMg
Y29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKKworICAgIGV4cGxpY2l0IFNldFZpZGVvTGF5ZXJJ
RChjb25zdCBXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQmIHZpZGVvTGF5
ZXJJRCkKKyAgICAgICAgOiBtX2FyZ3VtZW50cyh2aWRlb0xheWVySUQpCisgICAgeworICAgIH0K
KworICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKKyAgICB7CisgICAgICAg
IHJldHVybiBtX2FyZ3VtZW50czsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQXJndW1lbnRzIG1f
YXJndW1lbnRzOworfTsKKworI2lmIFBMQVRGT1JNKE1BQykKK2NsYXNzIERpZENyZWF0ZVdlYlBy
b2Nlc3NDb25uZWN0aW9uIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8Y29uc3Qg
SVBDOjpNYWNoUG9ydCY+IEFyZ3VtZW50czsKKworICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1l
IG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX0RpZENyZWF0ZVdlYlBy
b2Nlc3NDb25uZWN0aW9uOyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7
CisKKyAgICBleHBsaWNpdCBEaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbihjb25zdCBJUEM6
Ok1hY2hQb3J0JiBjb25uZWN0aW9uSWRlbnRpZmllcikKKyAgICAgICAgOiBtX2FyZ3VtZW50cyhj
b25uZWN0aW9uSWRlbnRpZmllcikKKyAgICB7CisgICAgfQorCisgICAgY29uc3QgQXJndW1lbnRz
JiBhcmd1bWVudHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwor
ICAgIH0KKworcHJpdmF0ZToKKyAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Cit9OworI2VuZGlm
CisKKyNpZiBQTEFURk9STShNQUMpCitjbGFzcyBJbnRlcnByZXRLZXlFdmVudCB7CitwdWJsaWM6
CisgICAgdHlwZWRlZiBzdGQ6OnR1cGxlPHVpbnQzMl90PiBBcmd1bWVudHM7CisKKyAgICBzdGF0
aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6V2Vi
UGFnZV9JbnRlcnByZXRLZXlFdmVudDsgfQorICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9
IHRydWU7CisKKyAgICB1c2luZyBSZXBseSA9IHN0ZDo6dHVwbGU8VmVjdG9yPFdlYkNvcmU6Oktl
eXByZXNzQ29tbWFuZD4mPjsKKyAgICB1c2luZyBSZXBseUFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8
VmVjdG9yPFdlYkNvcmU6OktleXByZXNzQ29tbWFuZD4+OworICAgIGV4cGxpY2l0IEludGVycHJl
dEtleUV2ZW50KHVpbnQzMl90IHR5cGUpCisgICAgICAgIDogbV9hcmd1bWVudHModHlwZSkKKyAg
ICB7CisgICAgfQorCisgICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAorICAg
IHsKKyAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOworICAgIH0KKworcHJpdmF0ZToKKyAgICBB
cmd1bWVudHMgbV9hcmd1bWVudHM7Cit9OworI2VuZGlmCisKKyNpZiBFTkFCTEUoREVQUkVDQVRF
RF9GRUFUVVJFKQorY2xhc3MgRGVwcmVjYXRlZE9wZXJhdGlvbiB7CitwdWJsaWM6CisgICAgdHlw
ZWRlZiBzdGQ6OnR1cGxlPGNvbnN0IElQQzo6RHVtbXlUeXBlJj4gQXJndW1lbnRzOworCisgICAg
c3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6
OldlYlBhZ2VfRGVwcmVjYXRlZE9wZXJhdGlvbjsgfQorICAgIHN0YXRpYyBjb25zdCBib29sIGlz
U3luYyA9IGZhbHNlOworCisgICAgZXhwbGljaXQgRGVwcmVjYXRlZE9wZXJhdGlvbihjb25zdCBJ
UEM6OkR1bW15VHlwZSYgZHVtbXkpCisgICAgICAgIDogbV9hcmd1bWVudHMoZHVtbXkpCisgICAg
eworICAgIH0KKworICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKKyAgICB7
CisgICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQXJn
dW1lbnRzIG1fYXJndW1lbnRzOworfTsKKyNlbmRpZgorCisjaWYgRU5BQkxFKEVYUEVSSU1FTlRB
TF9GRUFUVVJFKQorY2xhc3MgRXhwZXJpbWVudGFsT3BlcmF0aW9uIHsKK3B1YmxpYzoKKyAgICB0
eXBlZGVmIHN0ZDo6dHVwbGU8Y29uc3QgSVBDOjpEdW1teVR5cGUmPiBBcmd1bWVudHM7CisKKyAg
ICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFt
ZTo6V2ViUGFnZV9FeHBlcmltZW50YWxPcGVyYXRpb247IH0KKyAgICBzdGF0aWMgY29uc3QgYm9v
bCBpc1N5bmMgPSBmYWxzZTsKKworICAgIGV4cGxpY2l0IEV4cGVyaW1lbnRhbE9wZXJhdGlvbihj
b25zdCBJUEM6OkR1bW15VHlwZSYgZHVtbXkpCisgICAgICAgIDogbV9hcmd1bWVudHMoZHVtbXkp
CisgICAgeworICAgIH0KKworICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QK
KyAgICB7CisgICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKKyAgICB9CisKK3ByaXZhdGU6Cisg
ICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOworfTsKKyNlbmRpZgorCit9IC8vIG5hbWVzcGFjZSBX
ZWJQYWdlCit9IC8vIG5hbWVzcGFjZSBNZXNzYWdlcworCisjZW5kaWYgLy8gKEVOQUJMRShXRUJL
SVQyKSAmJiAoTkVTVEVEX01BU1RFUl9DT05ESVRJT04gfHwgTUFTVEVSX09SICYmIE1BU1RFUl9B
TkQpKQpJbmRleDogU291cmNlL1dlYktpdC9TY3JpcHRzL3Rlc3QtbGVnYWN5TWVzc2FnZXNSZXBs
aWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TY3JpcHRzL3Rlc3QtbGVnYWN5TWVz
c2FnZXNSZXBsaWVzLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9TY3JpcHRzL3Rl
c3QtbGVnYWN5TWVzc2FnZXNSZXBsaWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IK
KyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgKEVOQUJMRShXRUJLSVQy
KSAmJiAoTkVTVEVEX01BU1RFUl9DT05ESVRJT04gfHwgTUFTVEVSX09SICYmIE1BU1RFUl9BTkQp
KQorCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIk1lc3NhZ2VOYW1lcy5oIgor
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKKworbmFtZXNwYWNlIE1lc3NhZ2VzIHsKK25hbWVz
cGFjZSBXZWJQYWdlIHsKKwordXNpbmcgR2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25EZWxheWVk
UmVwbHkgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6Q29ubmVjdGlvbjo6SGFu
ZGxlJiBjb25uZWN0aW9uSGFuZGxlKT47CisKK3VzaW5nIFRlc3RNdWx0aXBsZUF0dHJpYnV0ZXNE
ZWxheWVkUmVwbHkgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJQYWdlCit9IC8vIG5hbWVzcGFjZSBNZXNzYWdlcworCisjZW5kaWYgLy8gKEVOQUJMRShX
RUJLSVQyKSAmJiAoTkVTVEVEX01BU1RFUl9DT05ESVRJT04gfHwgTUFTVEVSX09SICYmIE1BU1RF
Ul9BTkQpKQpJbmRleDogU291cmNlL1dlYktpdC9TY3JpcHRzL3Rlc3Qtc3VwZXJjbGFzc01lc3Nh
Z2VSZWNlaXZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TY3JpcHRzL3Rlc3Qt
c3VwZXJjbGFzc01lc3NhZ2VSZWNlaXZlci5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dl
YktpdC9TY3JpcHRzL3Rlc3Qtc3VwZXJjbGFzc01lc3NhZ2VSZWNlaXZlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSwxODkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
KyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisKKyNpbmNsdWRlICJXZWJQYWdlLmgiCisKKyNpbmNsdWRlICJBcmd1bWVudENvZGVy
cy5oIgorI2luY2x1ZGUgIkRlY29kZXIuaCIKKyNpbmNsdWRlICJIYW5kbGVNZXNzYWdlLmgiCisj
aW5jbHVkZSAiVGVzdENsYXNzTmFtZS5oIgorI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCisjaW5j
bHVkZSAiVGVzdFR3b1N0YXRlRW51bS5oIgorI2VuZGlmCisjaW5jbHVkZSAiV2ViUGFnZU1lc3Nh
Z2VzLmgiCisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CisKK25hbWVzcGFjZSBNZXNzYWdlcyB7CisKK25hbWVzcGFjZSBXZWJQYWdlIHsK
KworI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCisKK3ZvaWQgVGVzdEFzeW5jTWVzc2FnZTo6Y2Fs
bFJlcGx5KElQQzo6RGVjb2RlciYgZGVjb2RlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50
NjRfdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBPcHRpb25hbDx1aW50NjRfdD4g
cmVzdWx0OworICAgIGRlY29kZXIgPj4gcmVzdWx0OworICAgIGlmICghcmVzdWx0KSB7CisgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBjYW5jZWxSZXBseShXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgY29tcGxldGlv
bkhhbmRsZXIoV1RGTW92ZSgqcmVzdWx0KSk7Cit9CisKK3ZvaWQgVGVzdEFzeW5jTWVzc2FnZTo6
Y2FuY2VsUmVwbHkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCYmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3sKKyAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkFzeW5jUmVwbHlFcnJv
cjx1aW50NjRfdD46OmNyZWF0ZSgpKTsKK30KKwordm9pZCBUZXN0QXN5bmNNZXNzYWdlOjpzZW5k
KHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiYgZW5jb2RlciwgSVBDOjpDb25uZWN0aW9u
JiBjb25uZWN0aW9uLCB1aW50NjRfdCByZXN1bHQpCit7CisgICAgKmVuY29kZXIgPDwgcmVzdWx0
OworICAgIGNvbm5lY3Rpb24uc2VuZFN5bmNSZXBseShXVEZNb3ZlKGVuY29kZXIpKTsKK30KKwor
I2VuZGlmCisKKyNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQorCit2b2lkIFRlc3RBc3luY01lc3Nh
Z2VXaXRoTm9Bcmd1bWVudHM6OmNhbGxSZXBseShJUEM6OkRlY29kZXImIGRlY29kZXIsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBjb21wbGV0
aW9uSGFuZGxlcigpOworfQorCit2b2lkIFRlc3RBc3luY01lc3NhZ2VXaXRoTm9Bcmd1bWVudHM6
OmNhbmNlbFJlcGx5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKK3sKKyAgICBjb21wbGV0aW9uSGFuZGxlcigpOworfQorCit2b2lkIFRlc3RBc3luY01lc3Nh
Z2VXaXRoTm9Bcmd1bWVudHM6OnNlbmQoc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mJiBl
bmNvZGVyLCBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCit7CisgICAgY29ubmVjdGlvbi5z
ZW5kU3luY1JlcGx5KFdURk1vdmUoZW5jb2RlcikpOworfQorCisjZW5kaWYKKworI2lmIEVOQUJM
RShURVNUX0ZFQVRVUkUpCisKK3ZvaWQgVGVzdEFzeW5jTWVzc2FnZVdpdGhNdWx0aXBsZUFyZ3Vt
ZW50czo6Y2FsbFJlcGx5KElQQzo6RGVjb2RlciYgZGVjb2RlciwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sJiYsIHVpbnQ2NF90JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIE9w
dGlvbmFsPGJvb2w+IGZsYWc7CisgICAgZGVjb2RlciA+PiBmbGFnOworICAgIGlmICghZmxhZykg
eworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgY2FuY2VsUmVwbHkoV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIE9w
dGlvbmFsPHVpbnQ2NF90PiB2YWx1ZTsKKyAgICBkZWNvZGVyID4+IHZhbHVlOworICAgIGlmICgh
dmFsdWUpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGNhbmNlbFJl
cGx5KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKCpmbGFnKSwgV1RGTW92ZSgqdmFsdWUpKTsK
K30KKwordm9pZCBUZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1lbnRzOjpjYW5jZWxS
ZXBseShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wmJiwgdWludDY0X3QmJik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit7CisgICAgY29tcGxldGlvbkhhbmRsZXIoSVBDOjpBc3luY1JlcGx5RXJy
b3I8Ym9vbD46OmNyZWF0ZSgpLCBJUEM6OkFzeW5jUmVwbHlFcnJvcjx1aW50NjRfdD46OmNyZWF0
ZSgpKTsKK30KKwordm9pZCBUZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1lbnRzOjpz
ZW5kKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiYgZW5jb2RlciwgSVBDOjpDb25uZWN0
aW9uJiBjb25uZWN0aW9uLCBib29sIGZsYWcsIHVpbnQ2NF90IHZhbHVlKQoreworICAgICplbmNv
ZGVyIDw8IGZsYWc7CisgICAgKmVuY29kZXIgPDwgdmFsdWU7CisgICAgY29ubmVjdGlvbi5zZW5k
U3luY1JlcGx5KFdURk1vdmUoZW5jb2RlcikpOworfQorCisjZW5kaWYKKwordm9pZCBUZXN0U3lu
Y01lc3NhZ2U6OnNlbmQoc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mJiBlbmNvZGVyLCBJ
UEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIHVpbnQ4X3QgcmVwbHkpCit7CisgICAgKmVuY29k
ZXIgPDwgcmVwbHk7CisgICAgY29ubmVjdGlvbi5zZW5kU3luY1JlcGx5KFdURk1vdmUoZW5jb2Rl
cikpOworfQorCit2b2lkIFRlc3RTeW5jaHJvbm91c01lc3NhZ2U6OnNlbmQoc3RkOjp1bmlxdWVf
cHRyPElQQzo6RW5jb2Rlcj4mJiBlbmNvZGVyLCBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24s
IGNvbnN0IE9wdGlvbmFsPFdlYktpdDo6VGVzdENsYXNzTmFtZT4mIG9wdGlvbmFsUmVwbHkpCit7
CisgICAgKmVuY29kZXIgPDwgb3B0aW9uYWxSZXBseTsKKyAgICBjb25uZWN0aW9uLnNlbmRTeW5j
UmVwbHkoV1RGTW92ZShlbmNvZGVyKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYlBhZ2UKKwor
fSAvLyBuYW1lc3BhY2UgTWVzc2FnZXMKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgV2Vi
UGFnZTo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6
OkRlY29kZXImIGRlY29kZXIpCit7CisgICAgYXV0byBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyk7CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFn
ZTo6TG9hZFVSTDo6bmFtZSgpKSB7CisgICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdl
czo6V2ViUGFnZTo6TG9hZFVSTD4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OmxvYWRVUkwpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCisgICAgaWYg
KGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6VGVzdEFzeW5jTWVz
c2FnZTo6bmFtZSgpKSB7CisgICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZUFzeW5jPE1lc3NhZ2Vz
OjpXZWJQYWdlOjpUZXN0QXN5bmNNZXNzYWdlPihjb25uZWN0aW9uLCBkZWNvZGVyLCB0aGlzLCAm
V2ViUGFnZTo6dGVzdEFzeW5jTWVzc2FnZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5k
aWYKKyNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1l
KCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RBc3luY01lc3NhZ2VXaXRoTm9Bcmd1bWVudHM6
Om5hbWUoKSkgeworICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2VBc3luYzxNZXNzYWdlczo6V2Vi
UGFnZTo6VGVzdEFzeW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50cz4oY29ubmVjdGlvbiwgZGVjb2Rl
ciwgdGhpcywgJldlYlBhZ2U6OnRlc3RBc3luY01lc3NhZ2VXaXRoTm9Bcmd1bWVudHMpOworICAg
ICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKKyAg
ICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0QXN5
bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1lbnRzOjpuYW1lKCkpIHsKKyAgICAgICAgSVBDOjpo
YW5kbGVNZXNzYWdlQXN5bmM8TWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RBc3luY01lc3NhZ2VXaXRo
TXVsdGlwbGVBcmd1bWVudHM+KGNvbm5lY3Rpb24sIGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjp0
ZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1lbnRzKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKyNlbmRpZgorICAgIFdlYlBhZ2VCYXNlOjpkaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0
aW9uLCBkZWNvZGVyKTsKK30KKwordm9pZCBXZWJQYWdlOjpkaWRSZWNlaXZlU3luY01lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIHN0ZDo6
dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiByZXBseUVuY29kZXIpCit7CisgICAgYXV0byBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyk7CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUo
KSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6VGVzdFN5bmNNZXNzYWdlOjpuYW1lKCkpIHsKKyAgICAg
ICAgSVBDOjpoYW5kbGVNZXNzYWdlU3luY2hyb25vdXM8TWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RT
eW5jTWVzc2FnZT4oY29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyLCB0aGlzLCAmV2Vi
UGFnZTo6dGVzdFN5bmNNZXNzYWdlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAo
ZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0U3luY2hyb25v
dXNNZXNzYWdlOjpuYW1lKCkpIHsKKyAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlU3luY2hyb25v
dXM8TWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RTeW5jaHJvbm91c01lc3NhZ2U+KGNvbm5lY3Rpb24s
IGRlY29kZXIsIHJlcGx5RW5jb2RlciwgdGhpcywgJldlYlBhZ2U6OnRlc3RTeW5jaHJvbm91c01l
c3NhZ2UpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIFVOVVNFRF9QQVJBTShjb25uZWN0
aW9uKTsKKyAgICBVTlVTRURfUEFSQU0oZGVjb2Rlcik7CisgICAgVU5VU0VEX1BBUkFNKHJlcGx5
RW5jb2Rlcik7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdAorCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvdGVzdC1zdXBlcmNsYXNzTWVz
c2FnZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvdGVzdC1zdXBlcmNs
YXNzTWVzc2FnZXMuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvdGVz
dC1zdXBlcmNsYXNzTWVzc2FnZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDIwMSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyAq
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQXJndW1lbnRDb2Rl
cnMuaCIKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiTWVzc2FnZU5hbWVzLmgi
CisjaW5jbHVkZSAiVGVzdENsYXNzTmFtZS5oIgorI2luY2x1ZGUgIldlYlBhZ2VNZXNzYWdlc1Jl
cGxpZXMuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9PcHRpb25h
bC5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKK2VudW0gY2xhc3MgVGVz
dFR3b1N0YXRlRW51bSA6IGJvb2w7Cit9CisKK25hbWVzcGFjZSBNZXNzYWdlcyB7CituYW1lc3Bh
Y2UgV2ViUGFnZSB7CisKK3N0YXRpYyBpbmxpbmUgSVBDOjpSZWNlaXZlck5hbWUgbWVzc2FnZVJl
Y2VpdmVyTmFtZSgpCit7CisgICAgcmV0dXJuIElQQzo6UmVjZWl2ZXJOYW1lOjpXZWJQYWdlOwor
fQorCitjbGFzcyBMb2FkVVJMIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8Y29u
c3QgU3RyaW5nJj4gQXJndW1lbnRzOworCisgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFt
ZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfTG9hZFVSTDsgfQorICAgIHN0
YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOworCisgICAgZXhwbGljaXQgTG9hZFVSTChj
b25zdCBTdHJpbmcmIHVybCkKKyAgICAgICAgOiBtX2FyZ3VtZW50cyh1cmwpCisgICAgeworICAg
IH0KKworICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKKyAgICB7CisgICAg
ICAgIHJldHVybiBtX2FyZ3VtZW50czsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQXJndW1lbnRz
IG1fYXJndW1lbnRzOworfTsKKworI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCitjbGFzcyBUZXN0
QXN5bmNNZXNzYWdlIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8V2ViS2l0OjpU
ZXN0VHdvU3RhdGVFbnVtPiBBcmd1bWVudHM7CisKKyAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFt
ZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9UZXN0QXN5bmNNZXNz
YWdlOyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7CisKKyAgICBzdGF0
aWMgdm9pZCBjYWxsUmVwbHkoSVBDOjpEZWNvZGVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1
aW50NjRfdCYmKT4mJik7CisgICAgc3RhdGljIHZvaWQgY2FuY2VsUmVwbHkoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCh1aW50NjRfdCYmKT4mJik7CisgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUg
YXN5bmNNZXNzYWdlUmVwbHlOYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFn
ZV9UZXN0QXN5bmNNZXNzYWdlUmVwbHk7IH0KKyAgICB1c2luZyBBc3luY1JlcGx5ID0gVGVzdEFz
eW5jTWVzc2FnZUFzeW5jUmVwbHk7CisgICAgc3RhdGljIHZvaWQgc2VuZChzdGQ6OnVuaXF1ZV9w
dHI8SVBDOjpFbmNvZGVyPiYmLCBJUEM6OkNvbm5lY3Rpb24mLCB1aW50NjRfdCByZXN1bHQpOwor
ICAgIHVzaW5nIFJlcGx5ID0gc3RkOjp0dXBsZTx1aW50NjRfdCY+OworICAgIHVzaW5nIFJlcGx5
QXJndW1lbnRzID0gc3RkOjp0dXBsZTx1aW50NjRfdD47CisgICAgZXhwbGljaXQgVGVzdEFzeW5j
TWVzc2FnZShXZWJLaXQ6OlRlc3RUd29TdGF0ZUVudW0gdHdvU3RhdGVFbnVtKQorICAgICAgICA6
IG1fYXJndW1lbnRzKHR3b1N0YXRlRW51bSkKKyAgICB7CisgICAgfQorCisgICAgY29uc3QgQXJn
dW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYXJndW1l
bnRzOworICAgIH0KKworcHJpdmF0ZToKKyAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Cit9Owor
I2VuZGlmCisKKyNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQorY2xhc3MgVGVzdEFzeW5jTWVzc2Fn
ZVdpdGhOb0FyZ3VtZW50cyB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBzdGQ6OnR1cGxlPD4gQXJn
dW1lbnRzOworCisgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQ
Qzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VfVGVzdEFzeW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50czsg
fQorICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOworCisgICAgc3RhdGljIHZv
aWQgY2FsbFJlcGx5KElQQzo6RGVjb2RlciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7
CisgICAgc3RhdGljIHZvaWQgY2FuY2VsUmVwbHkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKKyAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBhc3luY01lc3NhZ2VSZXBseU5hbWUoKSB7
IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX1Rlc3RBc3luY01lc3NhZ2VXaXRoTm9B
cmd1bWVudHNSZXBseTsgfQorICAgIHVzaW5nIEFzeW5jUmVwbHkgPSBUZXN0QXN5bmNNZXNzYWdl
V2l0aE5vQXJndW1lbnRzQXN5bmNSZXBseTsKKyAgICBzdGF0aWMgdm9pZCBzZW5kKHN0ZDo6dW5p
cXVlX3B0cjxJUEM6OkVuY29kZXI+JiYsIElQQzo6Q29ubmVjdGlvbiYpOworICAgIHVzaW5nIFJl
cGx5ID0gc3RkOjp0dXBsZTw+OworICAgIHVzaW5nIFJlcGx5QXJndW1lbnRzID0gc3RkOjp0dXBs
ZTw+OworICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKKyAgICB7CisgICAg
ICAgIHJldHVybiBtX2FyZ3VtZW50czsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQXJndW1lbnRz
IG1fYXJndW1lbnRzOworfTsKKyNlbmRpZgorCisjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKK2Ns
YXNzIFRlc3RBc3luY01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHMgeworcHVibGljOgorICAg
IHR5cGVkZWYgc3RkOjp0dXBsZTw+IEFyZ3VtZW50czsKKworICAgIHN0YXRpYyBJUEM6Ok1lc3Nh
Z2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX1Rlc3RBc3lu
Y01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHM7IH0KKyAgICBzdGF0aWMgY29uc3QgYm9vbCBp
c1N5bmMgPSBmYWxzZTsKKworICAgIHN0YXRpYyB2b2lkIGNhbGxSZXBseShJUEM6OkRlY29kZXIm
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wmJiwgdWludDY0X3QmJik+JiYpOworICAgIHN0
YXRpYyB2b2lkIGNhbmNlbFJlcGx5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCYmLCB1aW50
NjRfdCYmKT4mJik7CisgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgYXN5bmNNZXNzYWdlUmVw
bHlOYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9UZXN0QXN5bmNNZXNz
YWdlV2l0aE11bHRpcGxlQXJndW1lbnRzUmVwbHk7IH0KKyAgICB1c2luZyBBc3luY1JlcGx5ID0g
VGVzdEFzeW5jTWVzc2FnZVdpdGhNdWx0aXBsZUFyZ3VtZW50c0FzeW5jUmVwbHk7CisgICAgc3Rh
dGljIHZvaWQgc2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYmLCBJUEM6OkNvbm5l
Y3Rpb24mLCBib29sIGZsYWcsIHVpbnQ2NF90IHZhbHVlKTsKKyAgICB1c2luZyBSZXBseSA9IHN0
ZDo6dHVwbGU8Ym9vbCYsIHVpbnQ2NF90Jj47CisgICAgdXNpbmcgUmVwbHlBcmd1bWVudHMgPSBz
dGQ6OnR1cGxlPGJvb2wsIHVpbnQ2NF90PjsKKyAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50
cygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7CisgICAgfQorCitw
cml2YXRlOgorICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKK307CisjZW5kaWYKKworY2xhc3Mg
VGVzdFN5bmNNZXNzYWdlIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8dWludDMy
X3Q+IEFyZ3VtZW50czsKKworICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJl
dHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX1Rlc3RTeW5jTWVzc2FnZTsgfQorICAgIHN0
YXRpYyBjb25zdCBib29sIGlzU3luYyA9IHRydWU7CisKKyAgICB1c2luZyBEZWxheWVkUmVwbHkg
PSBUZXN0U3luY01lc3NhZ2VEZWxheWVkUmVwbHk7CisgICAgc3RhdGljIHZvaWQgc2VuZChzdGQ6
OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYmLCBJUEM6OkNvbm5lY3Rpb24mLCB1aW50OF90IHJl
cGx5KTsKKyAgICB1c2luZyBSZXBseSA9IHN0ZDo6dHVwbGU8dWludDhfdCY+OworICAgIHVzaW5n
IFJlcGx5QXJndW1lbnRzID0gc3RkOjp0dXBsZTx1aW50OF90PjsKKyAgICBleHBsaWNpdCBUZXN0
U3luY01lc3NhZ2UodWludDMyX3QgcGFyYW0pCisgICAgICAgIDogbV9hcmd1bWVudHMocGFyYW0p
CisgICAgeworICAgIH0KKworICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QK
KyAgICB7CisgICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKKyAgICB9CisKK3ByaXZhdGU6Cisg
ICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOworfTsKKworY2xhc3MgVGVzdFN5bmNocm9ub3VzTWVz
c2FnZSB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGJvb2w+IEFyZ3VtZW50czsK
KworICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3Nh
Z2VOYW1lOjpXZWJQYWdlX1Rlc3RTeW5jaHJvbm91c01lc3NhZ2U7IH0KKyAgICBzdGF0aWMgY29u
c3QgYm9vbCBpc1N5bmMgPSB0cnVlOworCisgICAgdXNpbmcgRGVsYXllZFJlcGx5ID0gVGVzdFN5
bmNocm9ub3VzTWVzc2FnZURlbGF5ZWRSZXBseTsKKyAgICBzdGF0aWMgdm9pZCBzZW5kKHN0ZDo6
dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiYsIElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IE9wdGlv
bmFsPFdlYktpdDo6VGVzdENsYXNzTmFtZT4mIG9wdGlvbmFsUmVwbHkpOworICAgIHVzaW5nIFJl
cGx5ID0gc3RkOjp0dXBsZTxPcHRpb25hbDxXZWJLaXQ6OlRlc3RDbGFzc05hbWU+Jj47CisgICAg
dXNpbmcgUmVwbHlBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPE9wdGlvbmFsPFdlYktpdDo6VGVzdENs
YXNzTmFtZT4+OworICAgIGV4cGxpY2l0IFRlc3RTeW5jaHJvbm91c01lc3NhZ2UoYm9vbCB2YWx1
ZSkKKyAgICAgICAgOiBtX2FyZ3VtZW50cyh2YWx1ZSkKKyAgICB7CisgICAgfQorCisgICAgY29u
c3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1f
YXJndW1lbnRzOworICAgIH0KKworcHJpdmF0ZToKKyAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJQYWdlCit9IC8vIG5hbWVzcGFjZSBNZXNzYWdlcwpJ
bmRleDogU291cmNlL1dlYktpdC9TY3JpcHRzL3Rlc3Qtc3VwZXJjbGFzc01lc3NhZ2VzUmVwbGll
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy90ZXN0LXN1cGVyY2xhc3NN
ZXNzYWdlc1JlcGxpZXMuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1NjcmlwdHMv
dGVzdC1zdXBlcmNsYXNzTWVzc2FnZXNSZXBsaWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisg
KiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IKKyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTWVz
c2FnZU5hbWVzLmgiCisjaW5jbHVkZSAiVGVzdENsYXNzTmFtZS5oIgorI2luY2x1ZGUgPHd0Zi9G
b3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisKKworbmFtZXNwYWNlIE1lc3Nh
Z2VzIHsKK25hbWVzcGFjZSBXZWJQYWdlIHsKKworI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCit1
c2luZyBUZXN0QXN5bmNNZXNzYWdlQXN5bmNSZXBseSA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
dWludDY0X3QgcmVzdWx0KT47CisjZW5kaWYKKworI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCit1
c2luZyBUZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJndW1lbnRzQXN5bmNSZXBseSA9IENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT47CisjZW5kaWYKKworI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCit1
c2luZyBUZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1lbnRzQXN5bmNSZXBseSA9IENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBmbGFnLCB1aW50NjRfdCB2YWx1ZSk+OworI2VuZGlm
CisKK3VzaW5nIFRlc3RTeW5jTWVzc2FnZURlbGF5ZWRSZXBseSA9IENvbXBsZXRpb25IYW5kbGVy
PHZvaWQodWludDhfdCByZXBseSk+OworCit1c2luZyBUZXN0U3luY2hyb25vdXNNZXNzYWdlRGVs
YXllZFJlcGx5ID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBPcHRpb25hbDxXZWJLaXQ6
OlRlc3RDbGFzc05hbWU+JiBvcHRpb25hbFJlcGx5KT47CisKK30gLy8gbmFtZXNwYWNlIFdlYlBh
Z2UKK30gLy8gbmFtZXNwYWNlIE1lc3NhZ2VzCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMv
dGVzdE1lc3NhZ2VSZWNlaXZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TY3Jp
cHRzL3Rlc3RNZXNzYWdlUmVjZWl2ZXIuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJL
aXQvU2NyaXB0cy90ZXN0TWVzc2FnZVJlY2VpdmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDM3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQK
KyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUgorICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSCisgKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorICogT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5j
bHVkZSAiTm9uZS5oIgorCisjaW5jbHVkZSAiRGVjb2Rlci5oIgorI2luY2x1ZGUgIkhhbmRsZU1l
c3NhZ2UuaCIKKyNpbmNsdWRlICJOb25lTWVzc2FnZXMuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7
CisKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2NyaXB0
cy90ZXN0TWVzc2FnZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvdGVz
dE1lc3NhZ2VzLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9TY3JpcHRzL3Rlc3RN
ZXNzYWdlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTAtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
CisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVk
ZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIk1lc3NhZ2VOYW1lcy5oIgorI2luY2x1ZGUgIk5v
bmVNZXNzYWdlc1JlcGxpZXMuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUg
PHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorCisKK25hbWVzcGFjZSBNZXNzYWdlcyB7Citu
YW1lc3BhY2UgTm9uZSB7CisKK3N0YXRpYyBpbmxpbmUgSVBDOjpSZWNlaXZlck5hbWUgbWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpCit7CisgICAgcmV0dXJuIElQQzo6UmVjZWl2ZXJOYW1lOjpOb25lOwor
fQorCisKK30gLy8gbmFtZXNwYWNlIE5vbmUKK30gLy8gbmFtZXNwYWNlIE1lc3NhZ2VzCkluZGV4
OiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvdGVzdE1lc3NhZ2VzUmVwbGllcy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy90ZXN0TWVzc2FnZXNSZXBsaWVzLmgJKG5vbmV4aXN0
ZW50KQorKysgU291cmNlL1dlYktpdC9TY3JpcHRzL3Rlc3RNZXNzYWdlc1JlcGxpZXMuaAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisgKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAor
ICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpbmNsdWRlICJNZXNzYWdlTmFtZXMuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgorCisKK25hbWVzcGFjZSBNZXNzYWdlcyB7CituYW1lc3BhY2UgTm9uZSB7CisKKworfSAvLyBu
YW1lc3BhY2UgTm9uZQorfSAvLyBuYW1lc3BhY2UgTWVzc2FnZXMKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvU2NyaXB0cy93ZWJraXQvTGVnYWN5TWVzc2FnZVJlY2VpdmVyLWV4cGVjdGVkLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L0xlZ2FjeU1lc3NhZ2VSZWNl
aXZlci1leHBlY3RlZC5jcHAJKHJldmlzaW9uIDI2MTIzOCkKKysrIFNvdXJjZS9XZWJLaXQvU2Ny
aXB0cy93ZWJraXQvTGVnYWN5TWVzc2FnZVJlY2VpdmVyLWV4cGVjdGVkLmNwcAkobm9uZXhpc3Rl
bnQpCkBAIC0xLDIwMyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJyBBTkQKLSAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0g
KiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUgotICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotICogREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IKLSAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0gKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotICogT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZp
Zy5oIgotCi0jaWYgKEVOQUJMRShXRUJLSVQyKSAmJiAoTkVTVEVEX01BU1RFUl9DT05ESVRJT04g
fHwgTUFTVEVSX09SICYmIE1BU1RFUl9BTkQpKQotCi0jaW5jbHVkZSAiV2ViUGFnZS5oIgotCi0j
aW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKLSNpbmNsdWRlICJDb25uZWN0aW9uLmgiCi0jaW5j
bHVkZSAiRGVjb2Rlci5oIgotI2lmIEVOQUJMRShERVBSRUNBVEVEX0ZFQVRVUkUpIHx8IEVOQUJM
RShFWFBFUklNRU5UQUxfRkVBVFVSRSkKLSNpbmNsdWRlICJEdW1teVR5cGUuaCIKLSNlbmRpZgot
I2luY2x1ZGUgIkhhbmRsZU1lc3NhZ2UuaCIKLSNpZiBQTEFURk9STShNQUMpCi0jaW5jbHVkZSAi
TWFjaFBvcnQuaCIKLSNlbmRpZgotI2luY2x1ZGUgIlBsdWdpbi5oIgotI2luY2x1ZGUgIldlYkNv
cmVBcmd1bWVudENvZGVycy5oIgotI2lmIChFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiAoTkVTVEVE
X01FU1NBR0VfQ09ORElUSU9OICYmIFNPTUVfT1RIRVJfTUVTU0FHRV9DT05ESVRJT04pKSB8fCAo
RU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgKE5FU1RFRF9NRVNTQUdFX0NPTkRJVElPTiB8fCBTT01F
X09USEVSX01FU1NBR0VfQ09ORElUSU9OKSkKLSNpbmNsdWRlICJXZWJFdmVudC5oIgotI2VuZGlm
Ci0jaW5jbHVkZSAiV2ViUGFnZU1lc3NhZ2VzLmgiCi0jaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXNT
dG9yZS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NMYXllci5oPgotI2lmIFBMQVRGT1JN
KE1BQykKLSNpbmNsdWRlIDxXZWJDb3JlL0tleWJvYXJkRXZlbnQuaD4KLSNlbmRpZgotI2luY2x1
ZGUgPFdlYkNvcmUvUGx1Z2luRGF0YS5oPgotI2luY2x1ZGUgPHV0aWxpdHk+Ci0jaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBNZXNzYWdlcyB7Ci0KLW5hbWVzcGFjZSBXZWJQ
YWdlIHsKLQotdm9pZCBHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6c2VuZChzdGQ6OnVuaXF1
ZV9wdHI8SVBDOjpFbmNvZGVyPiYmIGVuY29kZXIsIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlv
biwgY29uc3QgSVBDOjpDb25uZWN0aW9uOjpIYW5kbGUmIGNvbm5lY3Rpb25IYW5kbGUpCi17Ci0g
ICAgKmVuY29kZXIgPDwgY29ubmVjdGlvbkhhbmRsZTsKLSAgICBjb25uZWN0aW9uLnNlbmRTeW5j
UmVwbHkoV1RGTW92ZShlbmNvZGVyKSk7Ci19Ci0KLXZvaWQgVGVzdE11bHRpcGxlQXR0cmlidXRl
czo6c2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYmIGVuY29kZXIsIElQQzo6Q29u
bmVjdGlvbiYgY29ubmVjdGlvbikKLXsKLSAgICBjb25uZWN0aW9uLnNlbmRTeW5jUmVwbHkoV1RG
TW92ZShlbmNvZGVyKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYlBhZ2UKLQotfSAvLyBuYW1l
c3BhY2UgTWVzc2FnZXMKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLXZvaWQgV2ViUGFnZTo6ZGlk
UmVjZWl2ZVdlYlBhZ2VNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpE
ZWNvZGVyJiBkZWNvZGVyKQotewotICAgIGF1dG8gcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpOwotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6
OkxvYWRVUkw6Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6
OldlYlBhZ2U6OkxvYWRVUkw+KGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjpsb2FkVVJMKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLSNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQotICAgIGlmIChk
ZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRTb21ldGhpbmc6
Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6
OkxvYWRTb21ldGhpbmc+KGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjpsb2FkU29tZXRoaW5nKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNlbmRpZgotI2lmIChFTkFCTEUoVE9VQ0hfRVZFTlRT
KSAmJiAoTkVTVEVEX01FU1NBR0VfQ09ORElUSU9OIHx8IFNPTUVfT1RIRVJfTUVTU0FHRV9DT05E
SVRJT04pKQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBh
Z2U6OlRvdWNoRXZlbnQ6Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVz
c2FnZXM6OldlYlBhZ2U6OlRvdWNoRXZlbnQ+KGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjp0b3Vj
aEV2ZW50KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNlbmRpZgotI2lmIChFTkFCTEUoVE9V
Q0hfRVZFTlRTKSAmJiAoTkVTVEVEX01FU1NBR0VfQ09ORElUSU9OICYmIFNPTUVfT1RIRVJfTUVT
U0FHRV9DT05ESVRJT04pKQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2Fn
ZXM6OldlYlBhZ2U6OkFkZEV2ZW50OjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNz
YWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpBZGRFdmVudD4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6
OmFkZEV2ZW50KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNlbmRpZgotI2lmIEVOQUJMRShU
T1VDSF9FVkVOVFMpCi0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6
V2ViUGFnZTo6TG9hZFNvbWV0aGluZ0Vsc2U6Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRs
ZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRTb21ldGhpbmdFbHNlPihkZWNvZGVyLCB0
aGlzLCAmV2ViUGFnZTo6bG9hZFNvbWV0aGluZ0Vsc2UpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotI2VuZGlmCi0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2Vi
UGFnZTo6RGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpo
YW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24+
KGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjpkaWRSZWNlaXZlUG9saWN5RGVjaXNpb24pOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVz
c2FnZXM6OldlYlBhZ2U6OkNsb3NlOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNz
YWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpDbG9zZT4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OmNs
b3NlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFt
ZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpQcmVmZXJlbmNlc0RpZENoYW5nZTo6bmFtZSgpKSB7
Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6UHJlZmVyZW5j
ZXNEaWRDaGFuZ2U+KGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjpwcmVmZXJlbmNlc0RpZENoYW5n
ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUo
KSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6U2VuZERvdWJsZUFuZEZsb2F0OjpuYW1lKCkpIHsKLSAg
ICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpTZW5kRG91YmxlQW5k
RmxvYXQ+KGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjpzZW5kRG91YmxlQW5kRmxvYXQpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVz
c2FnZXM6OldlYlBhZ2U6OlNlbmRJbnRzOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVN
ZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpTZW5kSW50cz4oZGVjb2RlciwgdGhpcywgJldlYlBh
Z2U6OnNlbmRJbnRzKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoZGVjb2Rlci5t
ZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0UGFyYW1ldGVyQXR0cmlidXRl
czo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFn
ZTo6VGVzdFBhcmFtZXRlckF0dHJpYnV0ZXM+KGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjp0ZXN0
UGFyYW1ldGVyQXR0cmlidXRlcyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKGRl
Y29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6VGVtcGxhdGVUZXN0Ojpu
YW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpU
ZW1wbGF0ZVRlc3Q+KGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjp0ZW1wbGF0ZVRlc3QpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVz
c2FnZXM6OldlYlBhZ2U6OlNldFZpZGVvTGF5ZXJJRDo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6
aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6U2V0VmlkZW9MYXllcklEPihkZWNvZGVy
LCB0aGlzLCAmV2ViUGFnZTo6c2V0VmlkZW9MYXllcklEKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLSNpZiBQTEFURk9STShNQUMpCi0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBN
ZXNzYWdlczo6V2ViUGFnZTo6RGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb246Om5hbWUoKSkg
ewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OkRpZENyZWF0
ZVdlYlByb2Nlc3NDb25uZWN0aW9uPihkZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6ZGlkQ3JlYXRl
V2ViUHJvY2Vzc0Nvbm5lY3Rpb24pOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlmCi0j
aWYgRU5BQkxFKERFUFJFQ0FURURfRkVBVFVSRSkKLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFt
ZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpEZXByZWNhdGVkT3BlcmF0aW9uOjpuYW1lKCkpIHsK
LSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpEZXByZWNhdGVk
T3BlcmF0aW9uPihkZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6ZGVwcmVjYXRlZE9wZXJhdGlvbik7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYKLSNpZiBFTkFCTEUoRVhQRVJJTUVOVEFM
X0ZFQVRVUkUpCi0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2Vi
UGFnZTo6RXhwZXJpbWVudGFsT3BlcmF0aW9uOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5k
bGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpFeHBlcmltZW50YWxPcGVyYXRpb24+KGRlY29k
ZXIsIHRoaXMsICZXZWJQYWdlOjpleHBlcmltZW50YWxPcGVyYXRpb24pOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotI2VuZGlmCi0gICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pOwotICAgIFVO
VVNFRF9QQVJBTShkZWNvZGVyKTsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotdm9p
ZCBXZWJQYWdlOjpkaWRSZWNlaXZlU3luY1dlYlBhZ2VNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYg
Y29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpF
bmNvZGVyPiYgcmVwbHlFbmNvZGVyKQotewotICAgIGF1dG8gcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpOwotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6Oldl
YlBhZ2U6OkNyZWF0ZVBsdWdpbjo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2Fn
ZTxNZXNzYWdlczo6V2ViUGFnZTo6Q3JlYXRlUGx1Z2luPihkZWNvZGVyLCAqcmVwbHlFbmNvZGVy
LCB0aGlzLCAmV2ViUGFnZTo6Y3JlYXRlUGx1Z2luKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpSdW5K
YXZhU2NyaXB0QWxlcnQ6Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVz
c2FnZXM6OldlYlBhZ2U6OlJ1bkphdmFTY3JpcHRBbGVydD4oZGVjb2RlciwgKnJlcGx5RW5jb2Rl
ciwgdGhpcywgJldlYlBhZ2U6OnJ1bkphdmFTY3JpcHRBbGVydCk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFn
ZTo6R2V0UGx1Z2luczo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNz
YWdlczo6V2ViUGFnZTo6R2V0UGx1Z2lucz4oZGVjb2RlciwgKnJlcGx5RW5jb2RlciwgdGhpcywg
JldlYlBhZ2U6OmdldFBsdWdpbnMpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChk
ZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OkdldFBsdWdpblByb2Nl
c3NDb25uZWN0aW9uOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlU3luY2hy
b25vdXM8TWVzc2FnZXM6OldlYlBhZ2U6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uPihjb25u
ZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIsIHRoaXMsICZXZWJQYWdlOjpnZXRQbHVnaW5Q
cm9jZXNzQ29ubmVjdGlvbik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKGRlY29k
ZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6VGVzdE11bHRpcGxlQXR0cmli
dXRlczo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZVN5bmNocm9ub3VzV2Fu
dHNDb25uZWN0aW9uPE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0TXVsdGlwbGVBdHRyaWJ1dGVzPihj
b25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIsIHRoaXMsICZXZWJQYWdlOjp0ZXN0TXVs
dGlwbGVBdHRyaWJ1dGVzKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNpZiBQTEFURk9STShN
QUMpCi0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6
SW50ZXJwcmV0S2V5RXZlbnQ6Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8
TWVzc2FnZXM6OldlYlBhZ2U6OkludGVycHJldEtleUV2ZW50PihkZWNvZGVyLCAqcmVwbHlFbmNv
ZGVyLCB0aGlzLCAmV2ViUGFnZTo6aW50ZXJwcmV0S2V5RXZlbnQpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotI2VuZGlmCi0gICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pOwotICAgIFVOVVNF
RF9QQVJBTShkZWNvZGVyKTsKLSAgICBVTlVTRURfUEFSQU0ocmVwbHlFbmNvZGVyKTsKLSAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLQotI2Vu
ZGlmIC8vIChFTkFCTEUoV0VCS0lUMikgJiYgKE5FU1RFRF9NQVNURVJfQ09ORElUSU9OIHx8IE1B
U1RFUl9PUiAmJiBNQVNURVJfQU5EKSkKClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9XZWJL
aXQvU2NyaXB0cy93ZWJraXQvTGVnYWN5TWVzc2FnZVJlY2VpdmVyLWV4cGVjdGVkLmNwcApfX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fCkRlbGV0ZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTEgKzAsMCAjIwotbmF0aXZlClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93
ZWJraXQvTGVnYWN5TWVzc2FnZXMtZXhwZWN0ZWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1NjcmlwdHMvd2Via2l0L0xlZ2FjeU1lc3NhZ2VzLWV4cGVjdGVkLmgJKHJldmlzaW9uIDI2
MTIzOCkKKysrIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvTGVnYWN5TWVzc2FnZXMtZXhw
ZWN0ZWQuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDU3MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDEwLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKLSAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0g
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgotICogQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAot
ICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IKLSAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0gKiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLAotICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI3ByYWdtYSBvbmNlCi0KLSNpZiAoRU5BQkxFKFdFQktJVDIpICYmIChORVNURURfTUFTVEVS
X0NPTkRJVElPTiB8fCBNQVNURVJfT1IgJiYgTUFTVEVSX0FORCkpCi0KLSNpbmNsdWRlICJBcmd1
bWVudENvZGVycy5oIgotI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKLSNpbmNsdWRlICJQbHVnaW4u
aCIKLSNpbmNsdWRlICJXZWJQYWdlTWVzc2FnZXNSZXBsaWVzLmgiCi0jaW5jbHVkZSA8V2ViQ29y
ZS9HcmFwaGljc0xheWVyLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9LZXlib2FyZEV2ZW50Lmg+Ci0j
aW5jbHVkZSA8V2ViQ29yZS9QbHVnaW5EYXRhLmg+Ci0jaW5jbHVkZSA8dXRpbGl0eT4KLSNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8
d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgSVBDIHsKLWNsYXNzIER1
bW15VHlwZTsKLWNsYXNzIE1hY2hQb3J0OwotfQotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLWNsYXNz
IFdlYlByZWZlcmVuY2VzU3RvcmU7Ci1jbGFzcyBXZWJUb3VjaEV2ZW50OwotfQotCi1uYW1lc3Bh
Y2UgTWVzc2FnZXMgewotbmFtZXNwYWNlIFdlYlBhZ2UgewotCi1zdGF0aWMgaW5saW5lIElQQzo6
U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUoKQotewotICAgIHJldHVybiBJUEM6
OlN0cmluZ1JlZmVyZW5jZSgiV2ViUGFnZSIpOwotfQotCi1jbGFzcyBMb2FkVVJMIHsKLXB1Ymxp
YzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8Y29uc3QgU3RyaW5nJj4gQXJndW1lbnRzOwotCi0g
ICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1l
c3NhZ2VSZWNlaXZlck5hbWUoKTsgfQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBu
YW1lKCkgeyByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIkxvYWRVUkwiKTsgfQotICAgIHN0
YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOwotCi0gICAgZXhwbGljaXQgTG9hZFVSTChj
b25zdCBTdHJpbmcmIHVybCkKLSAgICAgICAgOiBtX2FyZ3VtZW50cyh1cmwpCi0gICAgewotICAg
IH0KLQotICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1lbnRz
IG1fYXJndW1lbnRzOwotfTsKLQotI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCi1jbGFzcyBMb2Fk
U29tZXRoaW5nIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8Y29uc3QgU3RyaW5n
Jj4gQXJndW1lbnRzOwotCi0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVy
TmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsgfQotICAgIHN0YXRpYyBJUEM6
OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIkxv
YWRTb21ldGhpbmciKTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOwot
Ci0gICAgZXhwbGljaXQgTG9hZFNvbWV0aGluZyhjb25zdCBTdHJpbmcmIHVybCkKLSAgICAgICAg
OiBtX2FyZ3VtZW50cyh1cmwpCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0IEFyZ3VtZW50cyYg
YXJndW1lbnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAg
ICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLSNlbmRpZgot
Ci0jaWYgKEVOQUJMRShUT1VDSF9FVkVOVFMpICYmIChORVNURURfTUVTU0FHRV9DT05ESVRJT04g
fHwgU09NRV9PVEhFUl9NRVNTQUdFX0NPTkRJVElPTikpCi1jbGFzcyBUb3VjaEV2ZW50IHsKLXB1
YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8Y29uc3QgV2ViS2l0OjpXZWJUb3VjaEV2ZW50
Jj4gQXJndW1lbnRzOwotCi0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVy
TmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsgfQotICAgIHN0YXRpYyBJUEM6
OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIlRv
dWNoRXZlbnQiKTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOwotCi0g
ICAgZXhwbGljaXQgVG91Y2hFdmVudChjb25zdCBXZWJLaXQ6OldlYlRvdWNoRXZlbnQmIGV2ZW50
KQotICAgICAgICA6IG1fYXJndW1lbnRzKGV2ZW50KQotICAgIHsKLSAgICB9Ci0KLSAgICBjb25z
dCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9h
cmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsK
LX07Ci0jZW5kaWYKLQotI2lmIChFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiAoTkVTVEVEX01FU1NB
R0VfQ09ORElUSU9OICYmIFNPTUVfT1RIRVJfTUVTU0FHRV9DT05ESVRJT04pKQotY2xhc3MgQWRk
RXZlbnQgewotcHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBXZWJLaXQ6Oldl
YlRvdWNoRXZlbnQmPiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVu
Y2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAg
c3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1Jl
ZmVyZW5jZSgiQWRkRXZlbnQiKTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZh
bHNlOwotCi0gICAgZXhwbGljaXQgQWRkRXZlbnQoY29uc3QgV2ViS2l0OjpXZWJUb3VjaEV2ZW50
JiBldmVudCkKLSAgICAgICAgOiBtX2FyZ3VtZW50cyhldmVudCkKLSAgICB7Ci0gICAgfQotCi0g
ICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0
dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1bWVudHMgbV9hcmd1
bWVudHM7Ci19OwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQotY2xhc3MgTG9h
ZFNvbWV0aGluZ0Vsc2UgewotcHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBT
dHJpbmcmPiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVj
ZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGlj
IElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5j
ZSgiTG9hZFNvbWV0aGluZ0Vsc2UiKTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9
IGZhbHNlOwotCi0gICAgZXhwbGljaXQgTG9hZFNvbWV0aGluZ0Vsc2UoY29uc3QgU3RyaW5nJiB1
cmwpCi0gICAgICAgIDogbV9hcmd1bWVudHModXJsKQotICAgIHsKLSAgICB9Ci0KLSAgICBjb25z
dCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9h
cmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsK
LX07Ci0jZW5kaWYKLQotY2xhc3MgRGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uIHsKLXB1YmxpYzoK
LSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8dWludDY0X3QsIHVpbnQ2NF90LCB1aW50MzJfdD4gQXJn
dW1lbnRzOwotCi0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgp
IHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsgfQotICAgIHN0YXRpYyBJUEM6OlN0cmlu
Z1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIkRpZFJlY2Vp
dmVQb2xpY3lEZWNpc2lvbiIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFs
c2U7Ci0KLSAgICBEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24odWludDY0X3QgZnJhbWVJRCwgdWlu
dDY0X3QgbGlzdGVuZXJJRCwgdWludDMyX3QgcG9saWN5QWN0aW9uKQotICAgICAgICA6IG1fYXJn
dW1lbnRzKGZyYW1lSUQsIGxpc3RlbmVySUQsIHBvbGljeUFjdGlvbikKLSAgICB7Ci0gICAgfQot
Ci0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsKLSAgICAgICAg
cmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1bWVudHMgbV9h
cmd1bWVudHM7Ci19OwotCi1jbGFzcyBDbG9zZSB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6
OnR1cGxlPD4gQXJndW1lbnRzOwotCi0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJl
Y2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsgfQotICAgIHN0YXRp
YyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVu
Y2UoIkNsb3NlIik7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKLQot
ICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJn
dW1lbnRzOwotfTsKLQotY2xhc3MgUHJlZmVyZW5jZXNEaWRDaGFuZ2UgewotcHVibGljOgotICAg
IHR5cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmUmPiBB
cmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1l
KCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6U3Ry
aW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiUHJlZmVy
ZW5jZXNEaWRDaGFuZ2UiKTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNl
OwotCi0gICAgZXhwbGljaXQgUHJlZmVyZW5jZXNEaWRDaGFuZ2UoY29uc3QgV2ViS2l0OjpXZWJQ
cmVmZXJlbmNlc1N0b3JlJiBzdG9yZSkKLSAgICAgICAgOiBtX2FyZ3VtZW50cyhzdG9yZSkKLSAg
ICB7Ci0gICAgfQotCi0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAotICAg
IHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBB
cmd1bWVudHMgbV9hcmd1bWVudHM7Ci19OwotCi1jbGFzcyBTZW5kRG91YmxlQW5kRmxvYXQgewot
cHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxkb3VibGUsIGZsb2F0PiBBcmd1bWVudHM7
Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1
cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJl
bmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiU2VuZERvdWJsZUFuZEZs
b2F0Iik7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKLQotICAgIFNl
bmREb3VibGVBbmRGbG9hdChkb3VibGUgZCwgZmxvYXQgZikKLSAgICAgICAgOiBtX2FyZ3VtZW50
cyhkLCBmKQotICAgIHsKLSAgICB9Ci0KLSAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygp
IGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7Ci0gICAgfQotCi1wcml2
YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKLX07Ci0KLWNsYXNzIFNlbmRJbnRzIHsK
LXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8Y29uc3QgVmVjdG9yPHVpbnQ2NF90PiYs
IGNvbnN0IFZlY3RvcjxWZWN0b3I8dWludDY0X3Q+PiY+IEFyZ3VtZW50czsKLQotICAgIHN0YXRp
YyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVj
ZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsg
cmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJTZW5kSW50cyIpOyB9Ci0gICAgc3RhdGljIGNv
bnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7Ci0KLSAgICBTZW5kSW50cyhjb25zdCBWZWN0b3I8dWlu
dDY0X3Q+JiBpbnRzLCBjb25zdCBWZWN0b3I8VmVjdG9yPHVpbnQ2NF90Pj4mIGludFZlY3RvcnMp
Ci0gICAgICAgIDogbV9hcmd1bWVudHMoaW50cywgaW50VmVjdG9ycykKLSAgICB7Ci0gICAgfQot
Ci0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsKLSAgICAgICAg
cmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1bWVudHMgbV9h
cmd1bWVudHM7Ci19OwotCi1jbGFzcyBDcmVhdGVQbHVnaW4gewotcHVibGljOgotICAgIHR5cGVk
ZWYgc3RkOjp0dXBsZTx1aW50NjRfdCwgY29uc3QgV2ViS2l0OjpQbHVnaW46OlBhcmFtZXRlcnMm
PiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJO
YW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6
U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiQ3Jl
YXRlUGx1Z2luIik7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSB0cnVlOwotCi0g
ICAgdXNpbmcgUmVwbHkgPSBzdGQ6OnR1cGxlPGJvb2wmPjsKLSAgICB1c2luZyBSZXBseUFyZ3Vt
ZW50cyA9IHN0ZDo6dHVwbGU8Ym9vbD47Ci0gICAgQ3JlYXRlUGx1Z2luKHVpbnQ2NF90IHBsdWdp
bkluc3RhbmNlSUQsIGNvbnN0IFdlYktpdDo6UGx1Z2luOjpQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJz
KQotICAgICAgICA6IG1fYXJndW1lbnRzKHBsdWdpbkluc3RhbmNlSUQsIHBhcmFtZXRlcnMpCi0g
ICAgewotICAgIH0KLQotICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAg
QXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLQotY2xhc3MgUnVuSmF2YVNjcmlwdEFsZXJ0IHsK
LXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8dWludDY0X3QsIGNvbnN0IFN0cmluZyY+
IEFyZ3VtZW50czsKLQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5h
bWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpT
dHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJSdW5K
YXZhU2NyaXB0QWxlcnQiKTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IHRydWU7
Ci0KLSAgICB1c2luZyBSZXBseSA9IHN0ZDo6dHVwbGU8PjsKLSAgICB1c2luZyBSZXBseUFyZ3Vt
ZW50cyA9IHN0ZDo6dHVwbGU8PjsKLSAgICBSdW5KYXZhU2NyaXB0QWxlcnQodWludDY0X3QgZnJh
bWVJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQotICAgICAgICA6IG1fYXJndW1lbnRzKGZyYW1l
SUQsIG1lc3NhZ2UpCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1l
bnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0K
LXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLQotY2xhc3MgR2V0UGx1
Z2lucyB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGJvb2w+IEFyZ3VtZW50czsK
LQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVy
biBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVu
Y2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJHZXRQbHVnaW5zIik7IH0K
LSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSB0cnVlOwotCi0gICAgdXNpbmcgUmVwbHkg
PSBzdGQ6OnR1cGxlPFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiY+OwotICAgIHVzaW5nIFJl
cGx5QXJndW1lbnRzID0gc3RkOjp0dXBsZTxWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4+Owot
ICAgIGV4cGxpY2l0IEdldFBsdWdpbnMoYm9vbCByZWZyZXNoKQotICAgICAgICA6IG1fYXJndW1l
bnRzKHJlZnJlc2gpCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1l
bnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0K
LXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLQotY2xhc3MgR2V0UGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb24gewotcHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxj
b25zdCBTdHJpbmcmPiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVu
Y2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAg
c3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1Jl
ZmVyZW5jZSgiR2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24iKTsgfQotICAgIHN0YXRpYyBjb25z
dCBib29sIGlzU3luYyA9IHRydWU7Ci0KLSAgICB1c2luZyBEZWxheWVkUmVwbHkgPSBHZXRQbHVn
aW5Qcm9jZXNzQ29ubmVjdGlvbkRlbGF5ZWRSZXBseTsKLSAgICBzdGF0aWMgdm9pZCBzZW5kKHN0
ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiYsIElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IElQ
Qzo6Q29ubmVjdGlvbjo6SGFuZGxlJiBjb25uZWN0aW9uSGFuZGxlKTsKLSAgICB1c2luZyBSZXBs
eSA9IHN0ZDo6dHVwbGU8SVBDOjpDb25uZWN0aW9uOjpIYW5kbGUmPjsKLSAgICB1c2luZyBSZXBs
eUFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8SVBDOjpDb25uZWN0aW9uOjpIYW5kbGU+OwotICAgIGV4
cGxpY2l0IEdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0
aCkKLSAgICAgICAgOiBtX2FyZ3VtZW50cyhwbHVnaW5QYXRoKQotICAgIHsKLSAgICB9Ci0KLSAg
ICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1
cm4gbV9hcmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3Vt
ZW50czsKLX07Ci0KLWNsYXNzIFRlc3RNdWx0aXBsZUF0dHJpYnV0ZXMgewotcHVibGljOgotICAg
IHR5cGVkZWYgc3RkOjp0dXBsZTw+IEFyZ3VtZW50czsKLQotICAgIHN0YXRpYyBJUEM6OlN0cmlu
Z1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7
IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6
U3RyaW5nUmVmZXJlbmNlKCJUZXN0TXVsdGlwbGVBdHRyaWJ1dGVzIik7IH0KLSAgICBzdGF0aWMg
Y29uc3QgYm9vbCBpc1N5bmMgPSB0cnVlOwotCi0gICAgdXNpbmcgRGVsYXllZFJlcGx5ID0gVGVz
dE11bHRpcGxlQXR0cmlidXRlc0RlbGF5ZWRSZXBseTsKLSAgICBzdGF0aWMgdm9pZCBzZW5kKHN0
ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiYsIElQQzo6Q29ubmVjdGlvbiYpOwotICAgIHVz
aW5nIFJlcGx5ID0gc3RkOjp0dXBsZTw+OwotICAgIHVzaW5nIFJlcGx5QXJndW1lbnRzID0gc3Rk
Ojp0dXBsZTw+OwotICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKLSAgICB7
Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJn
dW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLQotY2xhc3MgVGVzdFBhcmFtZXRlckF0dHJpYnV0ZXMg
ewotcHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTx1aW50NjRfdCwgZG91YmxlLCBkb3Vi
bGU+IEFyZ3VtZW50czsKLQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZl
ck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMgSVBD
OjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJU
ZXN0UGFyYW1ldGVyQXR0cmlidXRlcyIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5j
ID0gZmFsc2U7Ci0KLSAgICBUZXN0UGFyYW1ldGVyQXR0cmlidXRlcyh1aW50NjRfdCBmb28sIGRv
dWJsZSBiYXIsIGRvdWJsZSBiYXopCi0gICAgICAgIDogbV9hcmd1bWVudHMoZm9vLCBiYXIsIGJh
eikKLSAgICB7Ci0gICAgfQotCi0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25z
dAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToK
LSAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19OwotCi1jbGFzcyBUZW1wbGF0ZVRlc3Qgewot
cHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBIYXNoTWFwPFN0cmluZywgc3Rk
OjpwYWlyPFN0cmluZywgdWludDY0X3Q+PiY+IEFyZ3VtZW50czsKLQotICAgIHN0YXRpYyBJUEM6
OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJO
YW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJu
IElQQzo6U3RyaW5nUmVmZXJlbmNlKCJUZW1wbGF0ZVRlc3QiKTsgfQotICAgIHN0YXRpYyBjb25z
dCBib29sIGlzU3luYyA9IGZhbHNlOwotCi0gICAgZXhwbGljaXQgVGVtcGxhdGVUZXN0KGNvbnN0
IEhhc2hNYXA8U3RyaW5nLCBzdGQ6OnBhaXI8U3RyaW5nLCB1aW50NjRfdD4+JiBhKQotICAgICAg
ICA6IG1fYXJndW1lbnRzKGEpCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0IEFyZ3VtZW50cyYg
YXJndW1lbnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAg
ICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLQotY2xhc3Mg
U2V0VmlkZW9MYXllcklEIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8Y29uc3Qg
V2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklEJj4gQXJndW1lbnRzOwotCi0g
ICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1l
c3NhZ2VSZWNlaXZlck5hbWUoKTsgfQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBu
YW1lKCkgeyByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIlNldFZpZGVvTGF5ZXJJRCIpOyB9
Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7Ci0KLSAgICBleHBsaWNpdCBT
ZXRWaWRlb0xheWVySUQoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXll
cklEJiB2aWRlb0xheWVySUQpCi0gICAgICAgIDogbV9hcmd1bWVudHModmlkZW9MYXllcklEKQot
ICAgIHsKLSAgICB9Ci0KLSAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0g
ICAgewotICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRlOgotICAg
IEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKLX07Ci0KLSNpZiBQTEFURk9STShNQUMpCi1jbGFzcyBE
aWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbiB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6
OnR1cGxlPGNvbnN0IElQQzo6TWFjaFBvcnQmPiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBD
OjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVy
TmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVy
biBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiRGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24iKTsg
fQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOwotCi0gICAgZXhwbGljaXQg
RGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oY29uc3QgSVBDOjpNYWNoUG9ydCYgY29ubmVj
dGlvbklkZW50aWZpZXIpCi0gICAgICAgIDogbV9hcmd1bWVudHMoY29ubmVjdGlvbklkZW50aWZp
ZXIpCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29u
c3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0KLXByaXZhdGU6
Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLSNlbmRpZgotCi0jaWYgUExBVEZPUk0o
TUFDKQotY2xhc3MgSW50ZXJwcmV0S2V5RXZlbnQgewotcHVibGljOgotICAgIHR5cGVkZWYgc3Rk
Ojp0dXBsZTx1aW50MzJfdD4gQXJndW1lbnRzOwotCi0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVm
ZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsgfQot
ICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpTdHJp
bmdSZWZlcmVuY2UoIkludGVycHJldEtleUV2ZW50Iik7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9v
bCBpc1N5bmMgPSB0cnVlOwotCi0gICAgdXNpbmcgUmVwbHkgPSBzdGQ6OnR1cGxlPFZlY3RvcjxX
ZWJDb3JlOjpLZXlwcmVzc0NvbW1hbmQ+Jj47Ci0gICAgdXNpbmcgUmVwbHlBcmd1bWVudHMgPSBz
dGQ6OnR1cGxlPFZlY3RvcjxXZWJDb3JlOjpLZXlwcmVzc0NvbW1hbmQ+PjsKLSAgICBleHBsaWNp
dCBJbnRlcnByZXRLZXlFdmVudCh1aW50MzJfdCB0eXBlKQotICAgICAgICA6IG1fYXJndW1lbnRz
KHR5cGUpCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkg
Y29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0KLXByaXZh
dGU6Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLSNlbmRpZgotCi0jaWYgRU5BQkxF
KERFUFJFQ0FURURfRkVBVFVSRSkKLWNsYXNzIERlcHJlY2F0ZWRPcGVyYXRpb24gewotcHVibGlj
OgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBJUEM6OkR1bW15VHlwZSY+IEFyZ3VtZW50
czsKLQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJl
dHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZl
cmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJEZXByZWNhdGVkT3Bl
cmF0aW9uIik7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKLQotICAg
IGV4cGxpY2l0IERlcHJlY2F0ZWRPcGVyYXRpb24oY29uc3QgSVBDOjpEdW1teVR5cGUmIGR1bW15
KQotICAgICAgICA6IG1fYXJndW1lbnRzKGR1bW15KQotICAgIHsKLSAgICB9Ci0KLSAgICBjb25z
dCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9h
cmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsK
LX07Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShFWFBFUklNRU5UQUxfRkVBVFVSRSkKLWNsYXNzIEV4
cGVyaW1lbnRhbE9wZXJhdGlvbiB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGNv
bnN0IElQQzo6RHVtbXlUeXBlJj4gQXJndW1lbnRzOwotCi0gICAgc3RhdGljIElQQzo6U3RyaW5n
UmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsg
fQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpT
dHJpbmdSZWZlcmVuY2UoIkV4cGVyaW1lbnRhbE9wZXJhdGlvbiIpOyB9Ci0gICAgc3RhdGljIGNv
bnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7Ci0KLSAgICBleHBsaWNpdCBFeHBlcmltZW50YWxPcGVy
YXRpb24oY29uc3QgSVBDOjpEdW1teVR5cGUmIGR1bW15KQotICAgICAgICA6IG1fYXJndW1lbnRz
KGR1bW15KQotICAgIHsKLSAgICB9Ci0KLSAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygp
IGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7Ci0gICAgfQotCi1wcml2
YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKLX07Ci0jZW5kaWYKLQotfSAvLyBuYW1l
c3BhY2UgV2ViUGFnZQotfSAvLyBuYW1lc3BhY2UgTWVzc2FnZXMKLQotI2VuZGlmIC8vIChFTkFC
TEUoV0VCS0lUMikgJiYgKE5FU1RFRF9NQVNURVJfQ09ORElUSU9OIHx8IE1BU1RFUl9PUiAmJiBN
QVNURVJfQU5EKSkKClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93
ZWJraXQvTGVnYWN5TWVzc2FnZXMtZXhwZWN0ZWQuaApfX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjpl
b2wtc3R5bGUKIyMgLTEgKzAsMCAjIwotbmF0aXZlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJv
cGVydHkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvTGVnYWN5TWVzc2FnZXNS
ZXBsaWVzLWV4cGVjdGVkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TY3JpcHRzL3dl
YmtpdC9MZWdhY3lNZXNzYWdlc1JlcGxpZXMtZXhwZWN0ZWQuaAkocmV2aXNpb24gMjYxMjM4KQor
KysgU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9MZWdhY3lNZXNzYWdlc1JlcGxpZXMtZXhw
ZWN0ZWQuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDQzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTAtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAotICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAq
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0gKiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0g
KiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUgotICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSAqIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksCi0gKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jcHJhZ21hIG9uY2UKLQotI2lmIChFTkFCTEUoV0VCS0lUMikgJiYgKE5FU1RFRF9NQVNURVJf
Q09ORElUSU9OIHx8IE1BU1RFUl9PUiAmJiBNQVNURVJfQU5EKSkKLQotI2luY2x1ZGUgIkNvbm5l
Y3Rpb24uaCIKLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotCi0KLW5hbWVzcGFjZSBNZXNzYWdl
cyB7Ci1uYW1lc3BhY2UgV2ViUGFnZSB7Ci0KLXVzaW5nIEdldFBsdWdpblByb2Nlc3NDb25uZWN0
aW9uRGVsYXllZFJlcGx5ID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkNvbm5l
Y3Rpb246OkhhbmRsZSYgY29ubmVjdGlvbkhhbmRsZSk+OwotCi11c2luZyBUZXN0TXVsdGlwbGVB
dHRyaWJ1dGVzRGVsYXllZFJlcGx5ID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPjsKLQotfSAv
LyBuYW1lc3BhY2UgV2ViUGFnZQotfSAvLyBuYW1lc3BhY2UgTWVzc2FnZXMKLQotI2VuZGlmIC8v
IChFTkFCTEUoV0VCS0lUMikgJiYgKE5FU1RFRF9NQVNURVJfQ09ORElUSU9OIHx8IE1BU1RFUl9P
UiAmJiBNQVNURVJfQU5EKSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvTWVz
c2FnZVJlY2VpdmVyLWV4cGVjdGVkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1Nj
cmlwdHMvd2Via2l0L01lc3NhZ2VSZWNlaXZlci1leHBlY3RlZC5jcHAJKHJldmlzaW9uIDI2MTIz
OCkKKysrIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvTWVzc2FnZVJlY2VpdmVyLWV4cGVj
dGVkLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDIwMyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDEwLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKLSAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0g
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgotICogQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAot
ICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IKLSAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0gKiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLAotICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgKEVOQUJMRShXRUJLSVQyKSAmJiAoTkVTVEVE
X01BU1RFUl9DT05ESVRJT04gfHwgTUFTVEVSX09SICYmIE1BU1RFUl9BTkQpKQotCi0jaW5jbHVk
ZSAiV2ViUGFnZS5oIgotCi0jaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKLSNpbmNsdWRlICJD
b25uZWN0aW9uLmgiCi0jaW5jbHVkZSAiRGVjb2Rlci5oIgotI2lmIEVOQUJMRShERVBSRUNBVEVE
X0ZFQVRVUkUpIHx8IEVOQUJMRShFWFBFUklNRU5UQUxfRkVBVFVSRSkKLSNpbmNsdWRlICJEdW1t
eVR5cGUuaCIKLSNlbmRpZgotI2luY2x1ZGUgIkhhbmRsZU1lc3NhZ2UuaCIKLSNpZiBQTEFURk9S
TShNQUMpCi0jaW5jbHVkZSAiTWFjaFBvcnQuaCIKLSNlbmRpZgotI2luY2x1ZGUgIlBsdWdpbi5o
IgotI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgotI2lmIChFTkFCTEUoVE9VQ0hf
RVZFTlRTKSAmJiAoTkVTVEVEX01FU1NBR0VfQ09ORElUSU9OICYmIFNPTUVfT1RIRVJfTUVTU0FH
RV9DT05ESVRJT04pKSB8fCAoRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgKE5FU1RFRF9NRVNTQUdF
X0NPTkRJVElPTiB8fCBTT01FX09USEVSX01FU1NBR0VfQ09ORElUSU9OKSkKLSNpbmNsdWRlICJX
ZWJFdmVudC5oIgotI2VuZGlmCi0jaW5jbHVkZSAiV2ViUGFnZU1lc3NhZ2VzLmgiCi0jaW5jbHVk
ZSAiV2ViUHJlZmVyZW5jZXNTdG9yZS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NMYXll
ci5oPgotI2lmIFBMQVRGT1JNKE1BQykKLSNpbmNsdWRlIDxXZWJDb3JlL0tleWJvYXJkRXZlbnQu
aD4KLSNlbmRpZgotI2luY2x1ZGUgPFdlYkNvcmUvUGx1Z2luRGF0YS5oPgotI2luY2x1ZGUgPHV0
aWxpdHk+Ci0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBNZXNzYWdlcyB7
Ci0KLW5hbWVzcGFjZSBXZWJQYWdlIHsKLQotdm9pZCBHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlv
bjo6c2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYmIGVuY29kZXIsIElQQzo6Q29u
bmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgSVBDOjpDb25uZWN0aW9uOjpIYW5kbGUmIGNvbm5l
Y3Rpb25IYW5kbGUpCi17Ci0gICAgKmVuY29kZXIgPDwgY29ubmVjdGlvbkhhbmRsZTsKLSAgICBj
b25uZWN0aW9uLnNlbmRTeW5jUmVwbHkoV1RGTW92ZShlbmNvZGVyKSk7Ci19Ci0KLXZvaWQgVGVz
dE11bHRpcGxlQXR0cmlidXRlczo6c2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYm
IGVuY29kZXIsIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKLXsKLSAgICBjb25uZWN0aW9u
LnNlbmRTeW5jUmVwbHkoV1RGTW92ZShlbmNvZGVyKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YlBhZ2UKLQotfSAvLyBuYW1lc3BhY2UgTWVzc2FnZXMKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0K
LXZvaWQgV2ViUGFnZTo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0
aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpCi17Ci0gICAgYXV0byBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyk7Ci0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdl
czo6V2ViUGFnZTo6TG9hZFVSTDo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2Fn
ZTxNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFVSTD4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6Omxv
YWRVUkwpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMp
Ci0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6TG9h
ZFNvbWV0aGluZzo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdl
czo6V2ViUGFnZTo6TG9hZFNvbWV0aGluZz4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OmxvYWRT
b21ldGhpbmcpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlmCi0jaWYgKEVOQUJMRShU
T1VDSF9FVkVOVFMpICYmIChORVNURURfTUVTU0FHRV9DT05ESVRJT04gfHwgU09NRV9PVEhFUl9N
RVNTQUdFX0NPTkRJVElPTikpCi0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNz
YWdlczo6V2ViUGFnZTo6VG91Y2hFdmVudDo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxl
TWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6VG91Y2hFdmVudD4oZGVjb2RlciwgdGhpcywgJldl
YlBhZ2U6OnRvdWNoRXZlbnQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlmCi0jaWYg
KEVOQUJMRShUT1VDSF9FVkVOVFMpICYmIChORVNURURfTUVTU0FHRV9DT05ESVRJT04gJiYgU09N
RV9PVEhFUl9NRVNTQUdFX0NPTkRJVElPTikpCi0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUo
KSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6QWRkRXZlbnQ6Om5hbWUoKSkgewotICAgICAgICBJUEM6
OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OkFkZEV2ZW50PihkZWNvZGVyLCB0aGlz
LCAmV2ViUGFnZTo6YWRkRXZlbnQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlmCi0j
aWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09
IE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkU29tZXRoaW5nRWxzZTo6bmFtZSgpKSB7Ci0gICAgICAg
IElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFNvbWV0aGluZ0Vsc2U+
KGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjpsb2FkU29tZXRoaW5nRWxzZSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0jZW5kaWYKLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1l
c3NhZ2VzOjpXZWJQYWdlOjpEaWRSZWNlaXZlUG9saWN5RGVjaXNpb246Om5hbWUoKSkgewotICAg
ICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJlY2VpdmVQb2xp
Y3lEZWNpc2lvbj4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OmRpZFJlY2VpdmVQb2xpY3lEZWNp
c2lvbik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5h
bWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6Q2xvc2U6Om5hbWUoKSkgewotICAgICAgICBJUEM6
OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OkNsb3NlPihkZWNvZGVyLCB0aGlzLCAm
V2ViUGFnZTo6Y2xvc2UpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChkZWNvZGVy
Lm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OlByZWZlcmVuY2VzRGlkQ2hhbmdl
OjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdl
OjpQcmVmZXJlbmNlc0RpZENoYW5nZT4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OnByZWZlcmVu
Y2VzRGlkQ2hhbmdlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoZGVjb2Rlci5t
ZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpTZW5kRG91YmxlQW5kRmxvYXQ6Om5h
bWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OlNl
bmREb3VibGVBbmRGbG9hdD4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OnNlbmREb3VibGVBbmRG
bG9hdCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5h
bWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6U2VuZEludHM6Om5hbWUoKSkgewotICAgICAgICBJ
UEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OlNlbmRJbnRzPihkZWNvZGVyLCB0
aGlzLCAmV2ViUGFnZTo6c2VuZEludHMpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlm
IChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RQYXJhbWV0
ZXJBdHRyaWJ1dGVzOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3Nh
Z2VzOjpXZWJQYWdlOjpUZXN0UGFyYW1ldGVyQXR0cmlidXRlcz4oZGVjb2RlciwgdGhpcywgJldl
YlBhZ2U6OnRlc3RQYXJhbWV0ZXJBdHRyaWJ1dGVzKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpUZW1w
bGF0ZVRlc3Q6Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6
OldlYlBhZ2U6OlRlbXBsYXRlVGVzdD4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OnRlbXBsYXRl
VGVzdCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5h
bWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6U2V0VmlkZW9MYXllcklEOjpuYW1lKCkpIHsKLSAg
ICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRWaWRlb0xheWVy
SUQ+KGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjpzZXRWaWRlb0xheWVySUQpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotI2lmIFBMQVRGT1JNKE1BQykKLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdl
TmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlv
bjo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFn
ZTo6RGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24+KGRlY29kZXIsIHRoaXMsICZXZWJQYWdl
OjpkaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0jZW5kaWYKLSNpZiBFTkFCTEUoREVQUkVDQVRFRF9GRUFUVVJFKQotICAgIGlmIChkZWNvZGVy
Lm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OkRlcHJlY2F0ZWRPcGVyYXRpb246
Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6
OkRlcHJlY2F0ZWRPcGVyYXRpb24+KGRlY29kZXIsIHRoaXMsICZXZWJQYWdlOjpkZXByZWNhdGVk
T3BlcmF0aW9uKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNlbmRpZgotI2lmIEVOQUJMRShF
WFBFUklNRU5UQUxfRkVBVFVSRSkKLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1l
c3NhZ2VzOjpXZWJQYWdlOjpFeHBlcmltZW50YWxPcGVyYXRpb246Om5hbWUoKSkgewotICAgICAg
ICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OkV4cGVyaW1lbnRhbE9wZXJh
dGlvbj4oZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OmV4cGVyaW1lbnRhbE9wZXJhdGlvbik7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYKLSAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlv
bik7Ci0gICAgVU5VU0VEX1BBUkFNKGRlY29kZXIpOwotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotfQotCi12b2lkIFdlYlBhZ2U6OmRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2Rlciwgc3RkOjp1bmlxdWVfcHRyPElQ
Qzo6RW5jb2Rlcj4mIHJlcGx5RW5jb2RlcikKLXsKLSAgICBhdXRvIHByb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKTsKLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2Vz
OjpXZWJQYWdlOjpDcmVhdGVQbHVnaW46Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1l
c3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OkNyZWF0ZVBsdWdpbj4oZGVjb2RlciwgKnJlcGx5RW5j
b2RlciwgdGhpcywgJldlYlBhZ2U6OmNyZWF0ZVBsdWdpbik7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6
UnVuSmF2YVNjcmlwdEFsZXJ0OjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdl
PE1lc3NhZ2VzOjpXZWJQYWdlOjpSdW5KYXZhU2NyaXB0QWxlcnQ+KGRlY29kZXIsICpyZXBseUVu
Y29kZXIsIHRoaXMsICZXZWJQYWdlOjpydW5KYXZhU2NyaXB0QWxlcnQpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6Oldl
YlBhZ2U6OkdldFBsdWdpbnM6Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8
TWVzc2FnZXM6OldlYlBhZ2U6OkdldFBsdWdpbnM+KGRlY29kZXIsICpyZXBseUVuY29kZXIsIHRo
aXMsICZXZWJQYWdlOjpnZXRQbHVnaW5zKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBp
ZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRQbHVnaW5Q
cm9jZXNzQ29ubmVjdGlvbjo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZVN5
bmNocm9ub3VzPE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbj4o
Y29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6Z2V0UGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb24pOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChk
ZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RNdWx0aXBsZUF0
dHJpYnV0ZXM6Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2VTeW5jaHJvbm91
c1dhbnRzQ29ubmVjdGlvbjxNZXNzYWdlczo6V2ViUGFnZTo6VGVzdE11bHRpcGxlQXR0cmlidXRl
cz4oY29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6dGVz
dE11bHRpcGxlQXR0cmlidXRlcyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jaWYgUExBVEZP
Uk0oTUFDKQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBh
Z2U6OkludGVycHJldEtleUV2ZW50OjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNz
YWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpJbnRlcnByZXRLZXlFdmVudD4oZGVjb2RlciwgKnJlcGx5
RW5jb2RlciwgdGhpcywgJldlYlBhZ2U6OmludGVycHJldEtleUV2ZW50KTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLSNlbmRpZgotICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsKLSAgICBV
TlVTRURfUEFSQU0oZGVjb2Rlcik7Ci0gICAgVU5VU0VEX1BBUkFNKHJlcGx5RW5jb2Rlcik7Ci0g
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0K
LSNlbmRpZiAvLyAoRU5BQkxFKFdFQktJVDIpICYmIChORVNURURfTUFTVEVSX0NPTkRJVElPTiB8
fCBNQVNURVJfT1IgJiYgTUFTVEVSX0FORCkpCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvd2Via2l0L01lc3NhZ2VSZWNlaXZlci1leHBlY3RlZC5jcHAKX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fXwpEZWxldGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0xICswLDAgIyMKLW5hdGl2ZQpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Vi
a2l0L01lc3NhZ2VSZWNlaXZlclN1cGVyY2xhc3MtZXhwZWN0ZWQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvTWVzc2FnZVJlY2VpdmVyU3VwZXJjbGFzcy1l
eHBlY3RlZC5jcHAJKHJldmlzaW9uIDI2MTIzOCkKKysrIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93
ZWJraXQvTWVzc2FnZVJlY2VpdmVyU3VwZXJjbGFzcy1leHBlY3RlZC5jcHAJKG5vbmV4aXN0ZW50
KQpAQCAtMSwxODkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMC0yMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycgQU5ECi0gKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IKLSAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSAqIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
Ci0gKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUgotICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSAqIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcu
aCIKLQotI2luY2x1ZGUgIldlYlBhZ2UuaCIKLQotI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgi
Ci0jaW5jbHVkZSAiRGVjb2Rlci5oIgotI2luY2x1ZGUgIkhhbmRsZU1lc3NhZ2UuaCIKLSNpbmNs
dWRlICJUZXN0Q2xhc3NOYW1lLmgiCi0jaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKLSNpbmNsdWRl
ICJUZXN0VHdvU3RhdGVFbnVtLmgiCi0jZW5kaWYKLSNpbmNsdWRlICJXZWJQYWdlTWVzc2FnZXMu
aCIKLSNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KLQotbmFtZXNwYWNlIE1lc3NhZ2VzIHsKLQotbmFtZXNwYWNlIFdlYlBhZ2UgewotCi0j
aWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKLQotdm9pZCBUZXN0QXN5bmNNZXNzYWdlOjpjYWxsUmVw
bHkoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90
JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiByZXN1
bHQ7Ci0gICAgZGVjb2RlciA+PiByZXN1bHQ7Ci0gICAgaWYgKCFyZXN1bHQpIHsKLSAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIGNhbmNlbFJlcGx5KFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjb21wbGV0aW9uSGFu
ZGxlcihXVEZNb3ZlKCpyZXN1bHQpKTsKLX0KLQotdm9pZCBUZXN0QXN5bmNNZXNzYWdlOjpjYW5j
ZWxSZXBseShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90JiYpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQotewotICAgIGNvbXBsZXRpb25IYW5kbGVyKElQQzo6QXN5bmNSZXBseUVycm9yPHVp
bnQ2NF90Pjo6Y3JlYXRlKCkpOwotfQotCi12b2lkIFRlc3RBc3luY01lc3NhZ2U6OnNlbmQoc3Rk
Ojp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mJiBlbmNvZGVyLCBJUEM6OkNvbm5lY3Rpb24mIGNv
bm5lY3Rpb24sIHVpbnQ2NF90IHJlc3VsdCkKLXsKLSAgICAqZW5jb2RlciA8PCByZXN1bHQ7Ci0g
ICAgY29ubmVjdGlvbi5zZW5kU3luY1JlcGx5KFdURk1vdmUoZW5jb2RlcikpOwotfQotCi0jZW5k
aWYKLQotI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCi0KLXZvaWQgVGVzdEFzeW5jTWVzc2FnZVdp
dGhOb0FyZ3VtZW50czo6Y2FsbFJlcGx5KElQQzo6RGVjb2RlciYgZGVjb2RlciwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIGNvbXBsZXRpb25I
YW5kbGVyKCk7Ci19Ci0KLXZvaWQgVGVzdEFzeW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50czo6Y2Fu
Y2VsUmVwbHkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQot
ewotICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Ci19Ci0KLXZvaWQgVGVzdEFzeW5jTWVzc2FnZVdp
dGhOb0FyZ3VtZW50czo6c2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYmIGVuY29k
ZXIsIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKLXsKLSAgICBjb25uZWN0aW9uLnNlbmRT
eW5jUmVwbHkoV1RGTW92ZShlbmNvZGVyKSk7Ci19Ci0KLSNlbmRpZgotCi0jaWYgRU5BQkxFKFRF
U1RfRkVBVFVSRSkKLQotdm9pZCBUZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1lbnRz
OjpjYWxsUmVwbHkoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wmJiwgdWludDY0X3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCi17Ci0gICAgT3B0aW9u
YWw8Ym9vbD4gZmxhZzsKLSAgICBkZWNvZGVyID4+IGZsYWc7Ci0gICAgaWYgKCFmbGFnKSB7Ci0g
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICBjYW5jZWxSZXBseShXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgT3B0aW9u
YWw8dWludDY0X3Q+IHZhbHVlOwotICAgIGRlY29kZXIgPj4gdmFsdWU7Ci0gICAgaWYgKCF2YWx1
ZSkgewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgY2FuY2VsUmVwbHko
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAg
IGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoKmZsYWcpLCBXVEZNb3ZlKCp2YWx1ZSkpOwotfQot
Ci12b2lkIFRlc3RBc3luY01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHM6OmNhbmNlbFJlcGx5
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCYmLCB1aW50NjRfdCYmKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKLXsKLSAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkFzeW5jUmVwbHlFcnJvcjxi
b29sPjo6Y3JlYXRlKCksIElQQzo6QXN5bmNSZXBseUVycm9yPHVpbnQ2NF90Pjo6Y3JlYXRlKCkp
OwotfQotCi12b2lkIFRlc3RBc3luY01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHM6OnNlbmQo
c3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mJiBlbmNvZGVyLCBJUEM6OkNvbm5lY3Rpb24m
IGNvbm5lY3Rpb24sIGJvb2wgZmxhZywgdWludDY0X3QgdmFsdWUpCi17Ci0gICAgKmVuY29kZXIg
PDwgZmxhZzsKLSAgICAqZW5jb2RlciA8PCB2YWx1ZTsKLSAgICBjb25uZWN0aW9uLnNlbmRTeW5j
UmVwbHkoV1RGTW92ZShlbmNvZGVyKSk7Ci19Ci0KLSNlbmRpZgotCi12b2lkIFRlc3RTeW5jTWVz
c2FnZTo6c2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYmIGVuY29kZXIsIElQQzo6
Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgdWludDhfdCByZXBseSkKLXsKLSAgICAqZW5jb2RlciA8
PCByZXBseTsKLSAgICBjb25uZWN0aW9uLnNlbmRTeW5jUmVwbHkoV1RGTW92ZShlbmNvZGVyKSk7
Ci19Ci0KLXZvaWQgVGVzdFN5bmNocm9ub3VzTWVzc2FnZTo6c2VuZChzdGQ6OnVuaXF1ZV9wdHI8
SVBDOjpFbmNvZGVyPiYmIGVuY29kZXIsIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29u
c3QgT3B0aW9uYWw8V2ViS2l0OjpUZXN0Q2xhc3NOYW1lPiYgb3B0aW9uYWxSZXBseSkKLXsKLSAg
ICAqZW5jb2RlciA8PCBvcHRpb25hbFJlcGx5OwotICAgIGNvbm5lY3Rpb24uc2VuZFN5bmNSZXBs
eShXVEZNb3ZlKGVuY29kZXIpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViUGFnZQotCi19IC8v
IG5hbWVzcGFjZSBNZXNzYWdlcwotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotdm9pZCBXZWJQYWdl
OjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVj
b2RlciYgZGVjb2RlcikKLXsKLSAgICBhdXRvIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KTsKLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpM
b2FkVVJMOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpX
ZWJQYWdlOjpMb2FkVVJMPihkZWNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6bG9hZFVSTCk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0jaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKLSAgICBpZiAoZGVj
b2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0QXN5bmNNZXNzYWdl
OjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlQXN5bmM8TWVzc2FnZXM6Oldl
YlBhZ2U6OlRlc3RBc3luY01lc3NhZ2U+KGNvbm5lY3Rpb24sIGRlY29kZXIsIHRoaXMsICZXZWJQ
YWdlOjp0ZXN0QXN5bmNNZXNzYWdlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNlbmRpZgot
I2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCi0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9
PSBNZXNzYWdlczo6V2ViUGFnZTo6VGVzdEFzeW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50czo6bmFt
ZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZUFzeW5jPE1lc3NhZ2VzOjpXZWJQYWdl
OjpUZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJndW1lbnRzPihjb25uZWN0aW9uLCBkZWNvZGVyLCB0
aGlzLCAmV2ViUGFnZTo6dGVzdEFzeW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50cyk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0jZW5kaWYKLSNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQotICAgIGlm
IChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RBc3luY01l
c3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHM6Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRs
ZU1lc3NhZ2VBc3luYzxNZXNzYWdlczo6V2ViUGFnZTo6VGVzdEFzeW5jTWVzc2FnZVdpdGhNdWx0
aXBsZUFyZ3VtZW50cz4oY29ubmVjdGlvbiwgZGVjb2RlciwgdGhpcywgJldlYlBhZ2U6OnRlc3RB
c3luY01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHMpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotI2VuZGlmCi0gICAgV2ViUGFnZUJhc2U6OmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24s
IGRlY29kZXIpOwotfQotCi12b2lkIFdlYlBhZ2U6OmRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2Rlciwgc3RkOjp1bmlx
dWVfcHRyPElQQzo6RW5jb2Rlcj4mIHJlcGx5RW5jb2RlcikKLXsKLSAgICBhdXRvIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKTsKLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09
IE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0U3luY01lc3NhZ2U6Om5hbWUoKSkgewotICAgICAgICBJ
UEM6OmhhbmRsZU1lc3NhZ2VTeW5jaHJvbm91czxNZXNzYWdlczo6V2ViUGFnZTo6VGVzdFN5bmNN
ZXNzYWdlPihjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIsIHRoaXMsICZXZWJQYWdl
Ojp0ZXN0U3luY01lc3NhZ2UpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChkZWNv
ZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6OlRlc3RTeW5jaHJvbm91c01l
c3NhZ2U6Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2VTeW5jaHJvbm91czxN
ZXNzYWdlczo6V2ViUGFnZTo6VGVzdFN5bmNocm9ub3VzTWVzc2FnZT4oY29ubmVjdGlvbiwgZGVj
b2RlciwgcmVwbHlFbmNvZGVyLCB0aGlzLCAmV2ViUGFnZTo6dGVzdFN5bmNocm9ub3VzTWVzc2Fn
ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24p
OwotICAgIFVOVVNFRF9QQVJBTShkZWNvZGVyKTsKLSAgICBVTlVTRURfUEFSQU0ocmVwbHlFbmNv
ZGVyKTsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0Ci0KClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQv
TWVzc2FnZVJlY2VpdmVyU3VwZXJjbGFzcy1leHBlY3RlZC5jcHAKX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVk
OiBzdm46ZW9sLXN0eWxlCiMjIC0xICswLDAgIyMKLW5hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIHByb3BlcnR5CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L01lc3NhZ2Vz
LWV4cGVjdGVkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9N
ZXNzYWdlcy1leHBlY3RlZC5oCShyZXZpc2lvbiAyNjEyMzgpCisrKyBTb3VyY2UvV2ViS2l0L1Nj
cmlwdHMvd2Via2l0L01lc3NhZ2VzLWV4cGVjdGVkLmgJKG5vbmV4aXN0ZW50KQpAQCAtMSw1NzAg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMC0yMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECi0g
KiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IKLSAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0gKiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUgotICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSAqIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgKEVOQUJMRShX
RUJLSVQyKSAmJiAoTkVTVEVEX01BU1RFUl9DT05ESVRJT04gfHwgTUFTVEVSX09SICYmIE1BU1RF
Ul9BTkQpKQotCi0jaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKLSNpbmNsdWRlICJDb25uZWN0
aW9uLmgiCi0jaW5jbHVkZSAiUGx1Z2luLmgiCi0jaW5jbHVkZSAiV2ViUGFnZU1lc3NhZ2VzUmVw
bGllcy5oIgotI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NMYXllci5oPgotI2luY2x1ZGUgPFdl
YkNvcmUvS2V5Ym9hcmRFdmVudC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvUGx1Z2luRGF0YS5oPgot
I2luY2x1ZGUgPHV0aWxpdHk+Ci0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgotI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQot
bmFtZXNwYWNlIElQQyB7Ci1jbGFzcyBEdW1teVR5cGU7Ci1jbGFzcyBNYWNoUG9ydDsKLX0KLQot
bmFtZXNwYWNlIFdlYktpdCB7Ci1jbGFzcyBXZWJQcmVmZXJlbmNlc1N0b3JlOwotY2xhc3MgV2Vi
VG91Y2hFdmVudDsKLX0KLQotbmFtZXNwYWNlIE1lc3NhZ2VzIHsKLW5hbWVzcGFjZSBXZWJQYWdl
IHsKLQotc3RhdGljIGlubGluZSBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJO
YW1lKCkKLXsKLSAgICByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIldlYlBhZ2UiKTsKLX0K
LQotY2xhc3MgTG9hZFVSTCB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGNvbnN0
IFN0cmluZyY+IEFyZ3VtZW50czsKLQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBy
ZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0
aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJl
bmNlKCJMb2FkVVJMIik7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsK
LQotICAgIGV4cGxpY2l0IExvYWRVUkwoY29uc3QgU3RyaW5nJiB1cmwpCi0gICAgICAgIDogbV9h
cmd1bWVudHModXJsKQotICAgIHsKLSAgICB9Ci0KLSAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3Vt
ZW50cygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7Ci0gICAgfQot
Ci1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKLX07Ci0KLSNpZiBFTkFCTEUo
VE9VQ0hfRVZFTlRTKQotY2xhc3MgTG9hZFNvbWV0aGluZyB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRl
ZiBzdGQ6OnR1cGxlPGNvbnN0IFN0cmluZyY+IEFyZ3VtZW50czsKLQotICAgIHN0YXRpYyBJUEM6
OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJO
YW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJu
IElQQzo6U3RyaW5nUmVmZXJlbmNlKCJMb2FkU29tZXRoaW5nIik7IH0KLSAgICBzdGF0aWMgY29u
c3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKLQotICAgIGV4cGxpY2l0IExvYWRTb21ldGhpbmcoY29u
c3QgU3RyaW5nJiB1cmwpCi0gICAgICAgIDogbV9hcmd1bWVudHModXJsKQotICAgIHsKLSAgICB9
Ci0KLSAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewotICAgICAg
ICByZXR1cm4gbV9hcmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBt
X2FyZ3VtZW50czsKLX07Ci0jZW5kaWYKLQotI2lmIChFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiAo
TkVTVEVEX01FU1NBR0VfQ09ORElUSU9OIHx8IFNPTUVfT1RIRVJfTUVTU0FHRV9DT05ESVRJT04p
KQotY2xhc3MgVG91Y2hFdmVudCB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGNv
bnN0IFdlYktpdDo6V2ViVG91Y2hFdmVudCY+IEFyZ3VtZW50czsKLQotICAgIHN0YXRpYyBJUEM6
OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJO
YW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJu
IElQQzo6U3RyaW5nUmVmZXJlbmNlKCJUb3VjaEV2ZW50Iik7IH0KLSAgICBzdGF0aWMgY29uc3Qg
Ym9vbCBpc1N5bmMgPSBmYWxzZTsKLQotICAgIGV4cGxpY2l0IFRvdWNoRXZlbnQoY29uc3QgV2Vi
S2l0OjpXZWJUb3VjaEV2ZW50JiBldmVudCkKLSAgICAgICAgOiBtX2FyZ3VtZW50cyhldmVudCkK
LSAgICB7Ci0gICAgfQotCi0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAot
ICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAg
ICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19OwotI2VuZGlmCi0KLSNpZiAoRU5BQkxFKFRPVUNI
X0VWRU5UUykgJiYgKE5FU1RFRF9NRVNTQUdFX0NPTkRJVElPTiAmJiBTT01FX09USEVSX01FU1NB
R0VfQ09ORElUSU9OKSkKLWNsYXNzIEFkZEV2ZW50IHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0
ZDo6dHVwbGU8Y29uc3QgV2ViS2l0OjpXZWJUb3VjaEV2ZW50Jj4gQXJndW1lbnRzOwotCi0gICAg
c3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3Nh
Z2VSZWNlaXZlck5hbWUoKTsgfQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1l
KCkgeyByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIkFkZEV2ZW50Iik7IH0KLSAgICBzdGF0
aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKLQotICAgIGV4cGxpY2l0IEFkZEV2ZW50KGNv
bnN0IFdlYktpdDo6V2ViVG91Y2hFdmVudCYgZXZlbnQpCi0gICAgICAgIDogbV9hcmd1bWVudHMo
ZXZlbnQpCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkg
Y29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0KLXByaXZh
dGU6Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLSNlbmRpZgotCi0jaWYgRU5BQkxF
KFRPVUNIX0VWRU5UUykKLWNsYXNzIExvYWRTb21ldGhpbmdFbHNlIHsKLXB1YmxpYzoKLSAgICB0
eXBlZGVmIHN0ZDo6dHVwbGU8Y29uc3QgU3RyaW5nJj4gQXJndW1lbnRzOwotCi0gICAgc3RhdGlj
IElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNl
aXZlck5hbWUoKTsgfQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyBy
ZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIkxvYWRTb21ldGhpbmdFbHNlIik7IH0KLSAgICBz
dGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKLQotICAgIGV4cGxpY2l0IExvYWRTb21l
dGhpbmdFbHNlKGNvbnN0IFN0cmluZyYgdXJsKQotICAgICAgICA6IG1fYXJndW1lbnRzKHVybCkK
LSAgICB7Ci0gICAgfQotCi0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAot
ICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAg
ICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19OwotI2VuZGlmCi0KLWNsYXNzIERpZFJlY2VpdmVQ
b2xpY3lEZWNpc2lvbiB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPHVpbnQ2NF90
LCB1aW50NjRfdCwgdWludDMyX3Q+IEFyZ3VtZW50czsKLQotICAgIHN0YXRpYyBJUEM6OlN0cmlu
Z1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7
IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6
U3RyaW5nUmVmZXJlbmNlKCJEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24iKTsgfQotICAgIHN0YXRp
YyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOwotCi0gICAgRGlkUmVjZWl2ZVBvbGljeURlY2lz
aW9uKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IGxpc3RlbmVySUQsIHVpbnQzMl90IHBvbGlj
eUFjdGlvbikKLSAgICAgICAgOiBtX2FyZ3VtZW50cyhmcmFtZUlELCBsaXN0ZW5lcklELCBwb2xp
Y3lBY3Rpb24pCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRz
KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0KLXBy
aXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLQotY2xhc3MgQ2xvc2Ugewot
cHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTw+IEFyZ3VtZW50czsKLQotICAgIHN0YXRp
YyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVj
ZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsg
cmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJDbG9zZSIpOyB9Ci0gICAgc3RhdGljIGNvbnN0
IGJvb2wgaXNTeW5jID0gZmFsc2U7Ci0KLSAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygp
IGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7Ci0gICAgfQotCi1wcml2
YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKLX07Ci0KLWNsYXNzIFByZWZlcmVuY2Vz
RGlkQ2hhbmdlIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8Y29uc3QgV2ViS2l0
OjpXZWJQcmVmZXJlbmNlc1N0b3JlJj4gQXJndW1lbnRzOwotCi0gICAgc3RhdGljIElQQzo6U3Ry
aW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUo
KTsgfQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBD
OjpTdHJpbmdSZWZlcmVuY2UoIlByZWZlcmVuY2VzRGlkQ2hhbmdlIik7IH0KLSAgICBzdGF0aWMg
Y29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKLQotICAgIGV4cGxpY2l0IFByZWZlcmVuY2VzRGlk
Q2hhbmdlKGNvbnN0IFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUpCi0gICAgICAg
IDogbV9hcmd1bWVudHMoc3RvcmUpCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0IEFyZ3VtZW50
cyYgYXJndW1lbnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsK
LSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLQotY2xh
c3MgU2VuZERvdWJsZUFuZEZsb2F0IHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8
ZG91YmxlLCBmbG9hdD4gQXJndW1lbnRzOwotCi0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJl
bmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsgfQotICAg
IHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpTdHJpbmdS
ZWZlcmVuY2UoIlNlbmREb3VibGVBbmRGbG9hdCIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wg
aXNTeW5jID0gZmFsc2U7Ci0KLSAgICBTZW5kRG91YmxlQW5kRmxvYXQoZG91YmxlIGQsIGZsb2F0
IGYpCi0gICAgICAgIDogbV9hcmd1bWVudHMoZCwgZikKLSAgICB7Ci0gICAgfQotCi0gICAgY29u
c3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1f
YXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7
Ci19OwotCi1jbGFzcyBTZW5kSW50cyB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxl
PGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mLCBjb25zdCBWZWN0b3I8VmVjdG9yPHVpbnQ2NF90Pj4m
PiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJO
YW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6
U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiU2Vu
ZEludHMiKTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOwotCi0gICAg
U2VuZEludHMoY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgaW50cywgY29uc3QgVmVjdG9yPFZlY3Rv
cjx1aW50NjRfdD4+JiBpbnRWZWN0b3JzKQotICAgICAgICA6IG1fYXJndW1lbnRzKGludHMsIGlu
dFZlY3RvcnMpCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRz
KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0KLXBy
aXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLQotY2xhc3MgQ3JlYXRlUGx1
Z2luIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8dWludDY0X3QsIGNvbnN0IFdl
YktpdDo6UGx1Z2luOjpQYXJhbWV0ZXJzJj4gQXJndW1lbnRzOwotCi0gICAgc3RhdGljIElQQzo6
U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5h
bWUoKTsgfQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4g
SVBDOjpTdHJpbmdSZWZlcmVuY2UoIkNyZWF0ZVBsdWdpbiIpOyB9Ci0gICAgc3RhdGljIGNvbnN0
IGJvb2wgaXNTeW5jID0gdHJ1ZTsKLQotICAgIHVzaW5nIFJlcGx5ID0gc3RkOjp0dXBsZTxib29s
Jj47Ci0gICAgdXNpbmcgUmVwbHlBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPGJvb2w+OwotICAgIENy
ZWF0ZVBsdWdpbih1aW50NjRfdCBwbHVnaW5JbnN0YW5jZUlELCBjb25zdCBXZWJLaXQ6OlBsdWdp
bjo6UGFyYW1ldGVycyYgcGFyYW1ldGVycykKLSAgICAgICAgOiBtX2FyZ3VtZW50cyhwbHVnaW5J
bnN0YW5jZUlELCBwYXJhbWV0ZXJzKQotICAgIHsKLSAgICB9Ci0KLSAgICBjb25zdCBBcmd1bWVu
dHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7
Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKLX07Ci0KLWNs
YXNzIFJ1bkphdmFTY3JpcHRBbGVydCB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxl
PHVpbnQ2NF90LCBjb25zdCBTdHJpbmcmPiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpT
dHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFt
ZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJ
UEM6OlN0cmluZ1JlZmVyZW5jZSgiUnVuSmF2YVNjcmlwdEFsZXJ0Iik7IH0KLSAgICBzdGF0aWMg
Y29uc3QgYm9vbCBpc1N5bmMgPSB0cnVlOwotCi0gICAgdXNpbmcgUmVwbHkgPSBzdGQ6OnR1cGxl
PD47Ci0gICAgdXNpbmcgUmVwbHlBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPD47Ci0gICAgUnVuSmF2
YVNjcmlwdEFsZXJ0KHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKLSAg
ICAgICAgOiBtX2FyZ3VtZW50cyhmcmFtZUlELCBtZXNzYWdlKQotICAgIHsKLSAgICB9Ci0KLSAg
ICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1
cm4gbV9hcmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3Vt
ZW50czsKLX07Ci0KLWNsYXNzIEdldFBsdWdpbnMgewotcHVibGljOgotICAgIHR5cGVkZWYgc3Rk
Ojp0dXBsZTxib29sPiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVu
Y2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAg
c3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1Jl
ZmVyZW5jZSgiR2V0UGx1Z2lucyIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0g
dHJ1ZTsKLQotICAgIHVzaW5nIFJlcGx5ID0gc3RkOjp0dXBsZTxWZWN0b3I8V2ViQ29yZTo6UGx1
Z2luSW5mbz4mPjsKLSAgICB1c2luZyBSZXBseUFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8VmVjdG9y
PFdlYkNvcmU6OlBsdWdpbkluZm8+PjsKLSAgICBleHBsaWNpdCBHZXRQbHVnaW5zKGJvb2wgcmVm
cmVzaCkKLSAgICAgICAgOiBtX2FyZ3VtZW50cyhyZWZyZXNoKQotICAgIHsKLSAgICB9Ci0KLSAg
ICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1
cm4gbV9hcmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3Vt
ZW50czsKLX07Ci0KLWNsYXNzIEdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uIHsKLXB1YmxpYzoK
LSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8Y29uc3QgU3RyaW5nJj4gQXJndW1lbnRzOwotCi0gICAg
c3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3Nh
Z2VSZWNlaXZlck5hbWUoKTsgfQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1l
KCkgeyByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIkdldFBsdWdpblByb2Nlc3NDb25uZWN0
aW9uIik7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSB0cnVlOwotCi0gICAgdXNp
bmcgRGVsYXllZFJlcGx5ID0gR2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25EZWxheWVkUmVwbHk7
Ci0gICAgc3RhdGljIHZvaWQgc2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYmLCBJ
UEM6OkNvbm5lY3Rpb24mLCBjb25zdCBJUEM6OkNvbm5lY3Rpb246OkhhbmRsZSYgY29ubmVjdGlv
bkhhbmRsZSk7Ci0gICAgdXNpbmcgUmVwbHkgPSBzdGQ6OnR1cGxlPElQQzo6Q29ubmVjdGlvbjo6
SGFuZGxlJj47Ci0gICAgdXNpbmcgUmVwbHlBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPElQQzo6Q29u
bmVjdGlvbjo6SGFuZGxlPjsKLSAgICBleHBsaWNpdCBHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlv
bihjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgpCi0gICAgICAgIDogbV9hcmd1bWVudHMocGx1Z2lu
UGF0aCkKLSAgICB7Ci0gICAgfQotCi0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBj
b25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0
ZToKLSAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19OwotCi1jbGFzcyBUZXN0TXVsdGlwbGVB
dHRyaWJ1dGVzIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8PiBBcmd1bWVudHM7
Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1
cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJl
bmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiVGVzdE11bHRpcGxlQXR0
cmlidXRlcyIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gdHJ1ZTsKLQotICAg
IHVzaW5nIERlbGF5ZWRSZXBseSA9IFRlc3RNdWx0aXBsZUF0dHJpYnV0ZXNEZWxheWVkUmVwbHk7
Ci0gICAgc3RhdGljIHZvaWQgc2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYmLCBJ
UEM6OkNvbm5lY3Rpb24mKTsKLSAgICB1c2luZyBSZXBseSA9IHN0ZDo6dHVwbGU8PjsKLSAgICB1
c2luZyBSZXBseUFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8PjsKLSAgICBjb25zdCBBcmd1bWVudHMm
IGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7Ci0g
ICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKLX07Ci0KLWNsYXNz
IFRlc3RQYXJhbWV0ZXJBdHRyaWJ1dGVzIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVw
bGU8dWludDY0X3QsIGRvdWJsZSwgZG91YmxlPiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBD
OjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVy
TmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVy
biBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiVGVzdFBhcmFtZXRlckF0dHJpYnV0ZXMiKTsgfQotICAg
IHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOwotCi0gICAgVGVzdFBhcmFtZXRlckF0
dHJpYnV0ZXModWludDY0X3QgZm9vLCBkb3VibGUgYmFyLCBkb3VibGUgYmF6KQotICAgICAgICA6
IG1fYXJndW1lbnRzKGZvbywgYmFyLCBiYXopCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0IEFy
Z3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3Vt
ZW50czsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsK
LQotY2xhc3MgVGVtcGxhdGVUZXN0IHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8
Y29uc3QgSGFzaE1hcDxTdHJpbmcsIHN0ZDo6cGFpcjxTdHJpbmcsIHVpbnQ2NF90Pj4mPiBBcmd1
bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkg
eyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6U3RyaW5n
UmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiVGVtcGxhdGVU
ZXN0Iik7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKLQotICAgIGV4
cGxpY2l0IFRlbXBsYXRlVGVzdChjb25zdCBIYXNoTWFwPFN0cmluZywgc3RkOjpwYWlyPFN0cmlu
ZywgdWludDY0X3Q+PiYgYSkKLSAgICAgICAgOiBtX2FyZ3VtZW50cyhhKQotICAgIHsKLSAgICB9
Ci0KLSAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewotICAgICAg
ICByZXR1cm4gbV9hcmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBt
X2FyZ3VtZW50czsKLX07Ci0KLWNsYXNzIFNldFZpZGVvTGF5ZXJJRCB7Ci1wdWJsaWM6Ci0gICAg
dHlwZWRlZiBzdGQ6OnR1cGxlPGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OlBsYXRmb3Jt
TGF5ZXJJRCY+IEFyZ3VtZW50czsKLQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBy
ZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0
aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJl
bmNlKCJTZXRWaWRlb0xheWVySUQiKTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9
IGZhbHNlOwotCi0gICAgZXhwbGljaXQgU2V0VmlkZW9MYXllcklEKGNvbnN0IFdlYkNvcmU6Okdy
YXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRCYgdmlkZW9MYXllcklEKQotICAgICAgICA6IG1f
YXJndW1lbnRzKHZpZGVvTGF5ZXJJRCkKLSAgICB7Ci0gICAgfQotCi0gICAgY29uc3QgQXJndW1l
bnRzJiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRz
OwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19OwotCi0j
aWYgUExBVEZPUk0oTUFDKQotY2xhc3MgRGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24gewot
cHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBJUEM6Ok1hY2hQb3J0Jj4gQXJn
dW1lbnRzOwotCi0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgp
IHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsgfQotICAgIHN0YXRpYyBJUEM6OlN0cmlu
Z1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIkRpZENyZWF0
ZVdlYlByb2Nlc3NDb25uZWN0aW9uIik7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMg
PSBmYWxzZTsKLQotICAgIGV4cGxpY2l0IERpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKGNv
bnN0IElQQzo6TWFjaFBvcnQmIGNvbm5lY3Rpb25JZGVudGlmaWVyKQotICAgICAgICA6IG1fYXJn
dW1lbnRzKGNvbm5lY3Rpb25JZGVudGlmaWVyKQotICAgIHsKLSAgICB9Ci0KLSAgICBjb25zdCBB
cmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9hcmd1
bWVudHM7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKLX07
Ci0jZW5kaWYKLQotI2lmIFBMQVRGT1JNKE1BQykKLWNsYXNzIEludGVycHJldEtleUV2ZW50IHsK
LXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8dWludDMyX3Q+IEFyZ3VtZW50czsKLQot
ICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVybiBt
ZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2Ug
bmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJJbnRlcnByZXRLZXlFdmVudCIp
OyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gdHJ1ZTsKLQotICAgIHVzaW5nIFJl
cGx5ID0gc3RkOjp0dXBsZTxWZWN0b3I8V2ViQ29yZTo6S2V5cHJlc3NDb21tYW5kPiY+OwotICAg
IHVzaW5nIFJlcGx5QXJndW1lbnRzID0gc3RkOjp0dXBsZTxWZWN0b3I8V2ViQ29yZTo6S2V5cHJl
c3NDb21tYW5kPj47Ci0gICAgZXhwbGljaXQgSW50ZXJwcmV0S2V5RXZlbnQodWludDMyX3QgdHlw
ZSkKLSAgICAgICAgOiBtX2FyZ3VtZW50cyh0eXBlKQotICAgIHsKLSAgICB9Ci0KLSAgICBjb25z
dCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9h
cmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsK
LX07Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShERVBSRUNBVEVEX0ZFQVRVUkUpCi1jbGFzcyBEZXBy
ZWNhdGVkT3BlcmF0aW9uIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8Y29uc3Qg
SVBDOjpEdW1teVR5cGUmPiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZl
cmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0g
ICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmlu
Z1JlZmVyZW5jZSgiRGVwcmVjYXRlZE9wZXJhdGlvbiIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJv
b2wgaXNTeW5jID0gZmFsc2U7Ci0KLSAgICBleHBsaWNpdCBEZXByZWNhdGVkT3BlcmF0aW9uKGNv
bnN0IElQQzo6RHVtbXlUeXBlJiBkdW1teSkKLSAgICAgICAgOiBtX2FyZ3VtZW50cyhkdW1teSkK
LSAgICB7Ci0gICAgfQotCi0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAot
ICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAg
ICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19OwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoRVhQRVJJ
TUVOVEFMX0ZFQVRVUkUpCi1jbGFzcyBFeHBlcmltZW50YWxPcGVyYXRpb24gewotcHVibGljOgot
ICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBJUEM6OkR1bW15VHlwZSY+IEFyZ3VtZW50czsK
LQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVy
biBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVu
Y2UgbmFtZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJFeHBlcmltZW50YWxPcGVy
YXRpb24iKTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOwotCi0gICAg
ZXhwbGljaXQgRXhwZXJpbWVudGFsT3BlcmF0aW9uKGNvbnN0IElQQzo6RHVtbXlUeXBlJiBkdW1t
eSkKLSAgICAgICAgOiBtX2FyZ3VtZW50cyhkdW1teSkKLSAgICB7Ci0gICAgfQotCi0gICAgY29u
c3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1f
YXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7
Ci19OwotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIFdlYlBhZ2UKLX0gLy8gbmFtZXNwYWNlIE1l
c3NhZ2VzCi0KLSNlbmRpZiAvLyAoRU5BQkxFKFdFQktJVDIpICYmIChORVNURURfTUFTVEVSX0NP
TkRJVElPTiB8fCBNQVNURVJfT1IgJiYgTUFTVEVSX0FORCkpCgpQcm9wZXJ0eSBjaGFuZ2VzIG9u
OiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L01lc3NhZ2VzLWV4cGVjdGVkLmgKX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fXwpEZWxldGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0xICswLDAgIyMKLW5hdGl2ZQpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Vi
a2l0L01lc3NhZ2VzUmVwbGllcy1leHBlY3RlZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvU2NyaXB0cy93ZWJraXQvTWVzc2FnZXNSZXBsaWVzLWV4cGVjdGVkLmgJKHJldmlzaW9uIDI2
MTIzOCkKKysrIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvTWVzc2FnZXNSZXBsaWVzLWV4
cGVjdGVkLmgJKG5vbmV4aXN0ZW50KQpAQCAtMSw0MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDEwLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKLSAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0g
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgotICogQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAot
ICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IKLSAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0gKiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLAotICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI3ByYWdtYSBvbmNlCi0KLSNpZiAoRU5BQkxFKFdFQktJVDIpICYmIChORVNURURfTUFTVEVS
X0NPTkRJVElPTiB8fCBNQVNURVJfT1IgJiYgTUFTVEVSX0FORCkpCi0KLSNpbmNsdWRlICJDb25u
ZWN0aW9uLmgiCi0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLQotCi1uYW1lc3BhY2UgTWVzc2Fn
ZXMgewotbmFtZXNwYWNlIFdlYlBhZ2UgewotCi11c2luZyBHZXRQbHVnaW5Qcm9jZXNzQ29ubmVj
dGlvbkRlbGF5ZWRSZXBseSA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpDb25u
ZWN0aW9uOjpIYW5kbGUmIGNvbm5lY3Rpb25IYW5kbGUpPjsKLQotdXNpbmcgVGVzdE11bHRpcGxl
QXR0cmlidXRlc0RlbGF5ZWRSZXBseSA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT47Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdlYlBhZ2UKLX0gLy8gbmFtZXNwYWNlIE1lc3NhZ2VzCi0KLSNlbmRpZiAv
LyAoRU5BQkxFKFdFQktJVDIpICYmIChORVNURURfTUFTVEVSX0NPTkRJVElPTiB8fCBNQVNURVJf
T1IgJiYgTUFTVEVSX0FORCkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L01l
c3NhZ2VzUmVwbGllc1N1cGVyY2xhc3NSZXBsaWVzLWV4cGVjdGVkLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9NZXNzYWdlc1JlcGxpZXNTdXBlcmNsYXNzUmVw
bGllcy1leHBlY3RlZC5oCShyZXZpc2lvbiAyNjEyMzgpCisrKyBTb3VyY2UvV2ViS2l0L1Njcmlw
dHMvd2Via2l0L01lc3NhZ2VzUmVwbGllc1N1cGVyY2xhc3NSZXBsaWVzLWV4cGVjdGVkLmgJKG5v
bmV4aXN0ZW50KQpAQCAtMSw1MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwLTIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJyBBTkQKLSAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgotICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotICogREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IKLSAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0gKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAot
ICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBv
bmNlCi0KLSNpbmNsdWRlICJUZXN0Q2xhc3NOYW1lLmgiCi0jaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KLSNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KLQotCi1uYW1lc3BhY2UgTWVzc2FnZXMgewot
bmFtZXNwYWNlIFdlYlBhZ2UgewotCi0jaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKLXVzaW5nIFRl
c3RBc3luY01lc3NhZ2VBc3luY1JlcGx5ID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRf
dCByZXN1bHQpPjsKLSNlbmRpZgotCi0jaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKLXVzaW5nIFRl
c3RBc3luY01lc3NhZ2VXaXRoTm9Bcmd1bWVudHNBc3luY1JlcGx5ID0gQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPjsKLSNlbmRpZgotCi0jaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKLXVzaW5nIFRl
c3RBc3luY01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHNBc3luY1JlcGx5ID0gQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sIGZsYWcsIHVpbnQ2NF90IHZhbHVlKT47Ci0jZW5kaWYKLQotdXNp
bmcgVGVzdFN5bmNNZXNzYWdlRGVsYXllZFJlcGx5ID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1
aW50OF90IHJlcGx5KT47Ci0KLXVzaW5nIFRlc3RTeW5jaHJvbm91c01lc3NhZ2VEZWxheWVkUmVw
bHkgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IE9wdGlvbmFsPFdlYktpdDo6VGVzdENs
YXNzTmFtZT4mIG9wdGlvbmFsUmVwbHkpPjsKLQotfSAvLyBuYW1lc3BhY2UgV2ViUGFnZQotfSAv
LyBuYW1lc3BhY2UgTWVzc2FnZXMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQv
TWVzc2FnZXNTdXBlcmNsYXNzLWV4cGVjdGVkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9TY3JpcHRzL3dlYmtpdC9NZXNzYWdlc1N1cGVyY2xhc3MtZXhwZWN0ZWQuaAkocmV2aXNpb24g
MjYxMjM4KQorKysgU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9NZXNzYWdlc1N1cGVyY2xh
c3MtZXhwZWN0ZWQuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDIwNiArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDEwLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKLSAqIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgotICogQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTAotICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0gKiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLAotICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgotI2lu
Y2x1ZGUgIkNvbm5lY3Rpb24uaCIKLSNpbmNsdWRlICJUZXN0Q2xhc3NOYW1lLmgiCi0jaW5jbHVk
ZSAiV2ViUGFnZU1lc3NhZ2VzUmVwbGllcy5oIgotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0j
aW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+Ci0jaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3Vu
dGVkLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJL
aXQgewotZW51bSBjbGFzcyBUZXN0VHdvU3RhdGVFbnVtIDogYm9vbDsKLX0KLQotbmFtZXNwYWNl
IE1lc3NhZ2VzIHsKLW5hbWVzcGFjZSBXZWJQYWdlIHsKLQotc3RhdGljIGlubGluZSBJUEM6OlN0
cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lKCkKLXsKLSAgICByZXR1cm4gSVBDOjpT
dHJpbmdSZWZlcmVuY2UoIldlYlBhZ2UiKTsKLX0KLQotY2xhc3MgTG9hZFVSTCB7Ci1wdWJsaWM6
Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPGNvbnN0IFN0cmluZyY+IEFyZ3VtZW50czsKLQotICAg
IHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZlck5hbWUoKSB7IHJldHVybiBtZXNz
YWdlUmVjZWl2ZXJOYW1lKCk7IH0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbmFt
ZSgpIHsgcmV0dXJuIElQQzo6U3RyaW5nUmVmZXJlbmNlKCJMb2FkVVJMIik7IH0KLSAgICBzdGF0
aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKLQotICAgIGV4cGxpY2l0IExvYWRVUkwoY29u
c3QgU3RyaW5nJiB1cmwpCi0gICAgICAgIDogbV9hcmd1bWVudHModXJsKQotICAgIHsKLSAgICB9
Ci0KLSAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Ci0gICAgewotICAgICAg
ICByZXR1cm4gbV9hcmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50cyBt
X2FyZ3VtZW50czsKLX07Ci0KLSNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQotY2xhc3MgVGVzdEFz
eW5jTWVzc2FnZSB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPFdlYktpdDo6VGVz
dFR3b1N0YXRlRW51bT4gQXJndW1lbnRzOwotCi0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJl
bmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsgfQotICAg
IHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpTdHJpbmdS
ZWZlcmVuY2UoIlRlc3RBc3luY01lc3NhZ2UiKTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlz
U3luYyA9IGZhbHNlOwotCi0gICAgc3RhdGljIHZvaWQgY2FsbFJlcGx5KElQQzo6RGVjb2RlciYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0X3QmJik+JiYpOwotICAgIHN0YXRpYyB2b2lk
IGNhbmNlbFJlcGx5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0X3QmJik+JiYpOwotICAg
IHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBhc3luY01lc3NhZ2VSZXBseU5hbWUoKSB7IHJl
dHVybiB7ICJUZXN0QXN5bmNNZXNzYWdlUmVwbHkiIH07IH0KLSAgICB1c2luZyBBc3luY1JlcGx5
ID0gVGVzdEFzeW5jTWVzc2FnZUFzeW5jUmVwbHk7Ci0gICAgc3RhdGljIHZvaWQgc2VuZChzdGQ6
OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYmLCBJUEM6OkNvbm5lY3Rpb24mLCB1aW50NjRfdCBy
ZXN1bHQpOwotICAgIHVzaW5nIFJlcGx5ID0gc3RkOjp0dXBsZTx1aW50NjRfdCY+OwotICAgIHVz
aW5nIFJlcGx5QXJndW1lbnRzID0gc3RkOjp0dXBsZTx1aW50NjRfdD47Ci0gICAgZXhwbGljaXQg
VGVzdEFzeW5jTWVzc2FnZShXZWJLaXQ6OlRlc3RUd29TdGF0ZUVudW0gdHdvU3RhdGVFbnVtKQot
ICAgICAgICA6IG1fYXJndW1lbnRzKHR3b1N0YXRlRW51bSkKLSAgICB7Ci0gICAgfQotCi0gICAg
Y29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJu
IG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1bWVudHMgbV9hcmd1bWVu
dHM7Ci19OwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQotY2xhc3MgVGVzdEFz
eW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50cyB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1
cGxlPD4gQXJndW1lbnRzOwotCi0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2Vp
dmVyTmFtZSgpIHsgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck5hbWUoKTsgfQotICAgIHN0YXRpYyBJ
UEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2Uo
IlRlc3RBc3luY01lc3NhZ2VXaXRoTm9Bcmd1bWVudHMiKTsgfQotICAgIHN0YXRpYyBjb25zdCBi
b29sIGlzU3luYyA9IGZhbHNlOwotCi0gICAgc3RhdGljIHZvaWQgY2FsbFJlcGx5KElQQzo6RGVj
b2RlciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgc3RhdGljIHZvaWQgY2Fu
Y2VsUmVwbHkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICBzdGF0aWMgSVBDOjpT
dHJpbmdSZWZlcmVuY2UgYXN5bmNNZXNzYWdlUmVwbHlOYW1lKCkgeyByZXR1cm4geyAiVGVzdEFz
eW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50c1JlcGx5IiB9OyB9Ci0gICAgdXNpbmcgQXN5bmNSZXBs
eSA9IFRlc3RBc3luY01lc3NhZ2VXaXRoTm9Bcmd1bWVudHNBc3luY1JlcGx5OwotICAgIHN0YXRp
YyB2b2lkIHNlbmQoc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mJiwgSVBDOjpDb25uZWN0
aW9uJik7Ci0gICAgdXNpbmcgUmVwbHkgPSBzdGQ6OnR1cGxlPD47Ci0gICAgdXNpbmcgUmVwbHlB
cmd1bWVudHMgPSBzdGQ6OnR1cGxlPD47Ci0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMo
KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJp
dmF0ZToKLSAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Ci19OwotI2VuZGlmCi0KLSNpZiBFTkFC
TEUoVEVTVF9GRUFUVVJFKQotY2xhc3MgVGVzdEFzeW5jTWVzc2FnZVdpdGhNdWx0aXBsZUFyZ3Vt
ZW50cyB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPD4gQXJndW1lbnRzOwotCi0g
ICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIHJlY2VpdmVyTmFtZSgpIHsgcmV0dXJuIG1l
c3NhZ2VSZWNlaXZlck5hbWUoKTsgfQotICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBu
YW1lKCkgeyByZXR1cm4gSVBDOjpTdHJpbmdSZWZlcmVuY2UoIlRlc3RBc3luY01lc3NhZ2VXaXRo
TXVsdGlwbGVBcmd1bWVudHMiKTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZh
bHNlOwotCi0gICAgc3RhdGljIHZvaWQgY2FsbFJlcGx5KElQQzo6RGVjb2RlciYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoYm9vbCYmLCB1aW50NjRfdCYmKT4mJik7Ci0gICAgc3RhdGljIHZvaWQg
Y2FuY2VsUmVwbHkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sJiYsIHVpbnQ2NF90JiYpPiYm
KTsKLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgYXN5bmNNZXNzYWdlUmVwbHlOYW1l
KCkgeyByZXR1cm4geyAiVGVzdEFzeW5jTWVzc2FnZVdpdGhNdWx0aXBsZUFyZ3VtZW50c1JlcGx5
IiB9OyB9Ci0gICAgdXNpbmcgQXN5bmNSZXBseSA9IFRlc3RBc3luY01lc3NhZ2VXaXRoTXVsdGlw
bGVBcmd1bWVudHNBc3luY1JlcGx5OwotICAgIHN0YXRpYyB2b2lkIHNlbmQoc3RkOjp1bmlxdWVf
cHRyPElQQzo6RW5jb2Rlcj4mJiwgSVBDOjpDb25uZWN0aW9uJiwgYm9vbCBmbGFnLCB1aW50NjRf
dCB2YWx1ZSk7Ci0gICAgdXNpbmcgUmVwbHkgPSBzdGQ6OnR1cGxlPGJvb2wmLCB1aW50NjRfdCY+
OwotICAgIHVzaW5nIFJlcGx5QXJndW1lbnRzID0gc3RkOjp0dXBsZTxib29sLCB1aW50NjRfdD47
Ci0gICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAotICAgIHsKLSAgICAgICAg
cmV0dXJuIG1fYXJndW1lbnRzOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1bWVudHMgbV9h
cmd1bWVudHM7Ci19OwotI2VuZGlmCi0KLWNsYXNzIFRlc3RTeW5jTWVzc2FnZSB7Ci1wdWJsaWM6
Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPHVpbnQzMl90PiBBcmd1bWVudHM7Ci0KLSAgICBzdGF0
aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1cm4gbWVzc2FnZVJl
Y2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIG5hbWUoKSB7
IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiVGVzdFN5bmNNZXNzYWdlIik7IH0KLSAgICBz
dGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSB0cnVlOwotCi0gICAgdXNpbmcgRGVsYXllZFJlcGx5
ID0gVGVzdFN5bmNNZXNzYWdlRGVsYXllZFJlcGx5OwotICAgIHN0YXRpYyB2b2lkIHNlbmQoc3Rk
Ojp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mJiwgSVBDOjpDb25uZWN0aW9uJiwgdWludDhfdCBy
ZXBseSk7Ci0gICAgdXNpbmcgUmVwbHkgPSBzdGQ6OnR1cGxlPHVpbnQ4X3QmPjsKLSAgICB1c2lu
ZyBSZXBseUFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8dWludDhfdD47Ci0gICAgZXhwbGljaXQgVGVz
dFN5bmNNZXNzYWdlKHVpbnQzMl90IHBhcmFtKQotICAgICAgICA6IG1fYXJndW1lbnRzKHBhcmFt
KQotICAgIHsKLSAgICB9Ci0KLSAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0
Ci0gICAgewotICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7Ci0gICAgfQotCi1wcml2YXRlOgot
ICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKLX07Ci0KLWNsYXNzIFRlc3RTeW5jaHJvbm91c01l
c3NhZ2UgewotcHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxib29sPiBBcmd1bWVudHM7
Ci0KLSAgICBzdGF0aWMgSVBDOjpTdHJpbmdSZWZlcmVuY2UgcmVjZWl2ZXJOYW1lKCkgeyByZXR1
cm4gbWVzc2FnZVJlY2VpdmVyTmFtZSgpOyB9Ci0gICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJl
bmNlIG5hbWUoKSB7IHJldHVybiBJUEM6OlN0cmluZ1JlZmVyZW5jZSgiVGVzdFN5bmNocm9ub3Vz
TWVzc2FnZSIpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gdHJ1ZTsKLQotICAg
IHVzaW5nIERlbGF5ZWRSZXBseSA9IFRlc3RTeW5jaHJvbm91c01lc3NhZ2VEZWxheWVkUmVwbHk7
Ci0gICAgc3RhdGljIHZvaWQgc2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYmLCBJ
UEM6OkNvbm5lY3Rpb24mLCBjb25zdCBPcHRpb25hbDxXZWJLaXQ6OlRlc3RDbGFzc05hbWU+JiBv
cHRpb25hbFJlcGx5KTsKLSAgICB1c2luZyBSZXBseSA9IHN0ZDo6dHVwbGU8T3B0aW9uYWw8V2Vi
S2l0OjpUZXN0Q2xhc3NOYW1lPiY+OwotICAgIHVzaW5nIFJlcGx5QXJndW1lbnRzID0gc3RkOjp0
dXBsZTxPcHRpb25hbDxXZWJLaXQ6OlRlc3RDbGFzc05hbWU+PjsKLSAgICBleHBsaWNpdCBUZXN0
U3luY2hyb25vdXNNZXNzYWdlKGJvb2wgdmFsdWUpCi0gICAgICAgIDogbV9hcmd1bWVudHModmFs
dWUpCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29u
c3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKLSAgICB9Ci0KLXByaXZhdGU6
Ci0gICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViUGFn
ZQotfSAvLyBuYW1lc3BhY2UgTWVzc2FnZXMKClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9X
ZWJLaXQvU2NyaXB0cy93ZWJraXQvTWVzc2FnZXNTdXBlcmNsYXNzLWV4cGVjdGVkLmgKX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fXwpEZWxldGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0xICswLDAgIyMKLW5hdGl2ZQpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Vi
a2l0L21lc3NhZ2VzLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJr
aXQvbWVzc2FnZXMucHkJKHJldmlzaW9uIDI2MTIzOCkKKysrIFNvdXJjZS9XZWJLaXQvU2NyaXB0
cy93ZWJraXQvbWVzc2FnZXMucHkJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAgU1lO
Q0hST05PVVNfQVRUUklCVVRFID0gJ1N5bmNocm9ub3VzJwogQVNZTkNfQVRUUklCVVRFID0gJ0Fz
eW5jJwogCiBfbGljZW5zZV9oZWFkZXIgPSAiIiIvKgotICogQ29weXJpZ2h0IChDKSAyMDEwLTIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEw
LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0xMzQsNyArMTM0LDcgQEAgZGVmIG1lc3NhZ2VfdG9fcmVwbHlfZm9y
d2FyZF9kZWNsYXJhdGlvbgogICAgIHJldHVybiBzdXJyb3VuZF9pbl9jb25kaXRpb24oJycuam9p
bihyZXN1bHQpLCBtZXNzYWdlLmNvbmRpdGlvbikKIAogCi1kZWYgbWVzc2FnZV90b19zdHJ1Y3Rf
ZGVjbGFyYXRpb24obWVzc2FnZSk6CitkZWYgbWVzc2FnZV90b19zdHJ1Y3RfZGVjbGFyYXRpb24o
cmVjZWl2ZXIsIG1lc3NhZ2UpOgogICAgIHJlc3VsdCA9IFtdCiAgICAgZnVuY3Rpb25fcGFyYW1l
dGVycyA9IFsoZnVuY3Rpb25fcGFyYW1ldGVyX3R5cGUoeC50eXBlLCB4LmtpbmQpLCB4Lm5hbWUp
IGZvciB4IGluIG1lc3NhZ2UucGFyYW1ldGVyc10KIApAQCAtMTQyLDggKzE0Miw3IEBAIGRlZiBt
ZXNzYWdlX3RvX3N0cnVjdF9kZWNsYXJhdGlvbihtZXNzYWcKICAgICByZXN1bHQuYXBwZW5kKCdw
dWJsaWM6XG4nKQogICAgIHJlc3VsdC5hcHBlbmQoJyAgICB0eXBlZGVmICVzIEFyZ3VtZW50cztc
bicgJSBhcmd1bWVudHNfdHlwZShtZXNzYWdlKSkKICAgICByZXN1bHQuYXBwZW5kKCdcbicpCi0g
ICAgcmVzdWx0LmFwcGVuZCgnICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSByZWNlaXZl
ck5hbWUoKSB7IHJldHVybiBtZXNzYWdlUmVjZWl2ZXJOYW1lKCk7IH1cbicpCi0gICAgcmVzdWx0
LmFwcGVuZCgnICAgIHN0YXRpYyBJUEM6OlN0cmluZ1JlZmVyZW5jZSBuYW1lKCkgeyByZXR1cm4g
SVBDOjpTdHJpbmdSZWZlcmVuY2UoIiVzIik7IH1cbicgJSBtZXNzYWdlLm5hbWUpCisgICAgcmVz
dWx0LmFwcGVuZCgnICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJ
UEM6Ok1lc3NhZ2VOYW1lOjolc18lczsgfVxuJyAlIChyZWNlaXZlci5uYW1lLCBtZXNzYWdlLm5h
bWUpKQogICAgIHJlc3VsdC5hcHBlbmQoJyAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSAl
cztcbicgJSAoJ2ZhbHNlJywgJ3RydWUnKVttZXNzYWdlLnJlcGx5X3BhcmFtZXRlcnMgIT0gTm9u
ZSBhbmQgbm90IG1lc3NhZ2UuaGFzX2F0dHJpYnV0ZShBU1lOQ19BVFRSSUJVVEUpXSkKICAgICBy
ZXN1bHQuYXBwZW5kKCdcbicpCiAgICAgaWYgbWVzc2FnZS5yZXBseV9wYXJhbWV0ZXJzICE9IE5v
bmU6CkBAIC0xNTMsNyArMTUyLDcgQEAgZGVmIG1lc3NhZ2VfdG9fc3RydWN0X2RlY2xhcmF0aW9u
KG1lc3NhZwogICAgICAgICAgICAgbW92ZV9wYXJhbWV0ZXJzID0gJywgJy5qb2luKFttb3ZlX3R5
cGUoeC50eXBlKSBmb3IgeCBpbiBtZXNzYWdlLnJlcGx5X3BhcmFtZXRlcnNdKQogICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZCgnICAgIHN0YXRpYyB2b2lkIGNhbGxSZXBseShJUEM6OkRlY29kZXIm
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCVzKT4mJik7XG4nICUgbW92ZV9wYXJhbWV0ZXJzKQog
ICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIHN0YXRpYyB2b2lkIGNhbmNlbFJlcGx5KENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoJXMpPiYmKTtcbicgJSBtb3ZlX3BhcmFtZXRlcnMpCi0gICAg
ICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgc3RhdGljIElQQzo6U3RyaW5nUmVmZXJlbmNlIGFz
eW5jTWVzc2FnZVJlcGx5TmFtZSgpIHsgcmV0dXJuIHsgIiVzUmVwbHkiIH07IH1cbicgJSBtZXNz
YWdlLm5hbWUpCisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgc3RhdGljIElQQzo6TWVz
c2FnZU5hbWUgYXN5bmNNZXNzYWdlUmVwbHlOYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFt
ZTo6JXNfJXNSZXBseTsgfVxuJyAlIChyZWNlaXZlci5uYW1lLCBtZXNzYWdlLm5hbWUpKQogICAg
ICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIHVzaW5nIEFzeW5jUmVwbHkgPSAlc0FzeW5jUmVw
bHk7XG4nICUgbWVzc2FnZS5uYW1lKQogICAgICAgICBlbGlmIG1lc3NhZ2UuaGFzX2F0dHJpYnV0
ZShTWU5DSFJPTk9VU19BVFRSSUJVVEUpOgogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAg
IHVzaW5nIERlbGF5ZWRSZXBseSA9ICVzRGVsYXllZFJlcGx5O1xuJyAlIG1lc3NhZ2UubmFtZSkK
QEAgLTI3Nyw4ICsyNzYsOSBAQCBkZWYgZm9yd2FyZF9kZWNsYXJhdGlvbnNfYW5kX2hlYWRlcnMo
cmVjCiAKICAgICBoZWFkZXJzID0gc2V0KFsKICAgICAgICAgJyJBcmd1bWVudENvZGVycy5oIics
Ci0gICAgICAgICc8d3RmL0ZvcndhcmQuaD4nLAogICAgICAgICAnIkNvbm5lY3Rpb24uaCInLAor
ICAgICAgICAnIk1lc3NhZ2VOYW1lcy5oIicsCisgICAgICAgICc8d3RmL0ZvcndhcmQuaD4nLAog
ICAgICAgICAnPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPicsCiAgICAgICAgICciJXNNZXNz
YWdlc1JlcGxpZXMuaCInICUgcmVjZWl2ZXIubmFtZSwKICAgICBdKQpAQCAtMzM1LDYgKzMzNSw3
IEBAIGRlZiBmb3J3YXJkX2RlY2xhcmF0aW9uc19hbmRfaGVhZGVyc19mb3IKIAogICAgIGhlYWRl
cnMgPSBzZXQoWwogICAgICAgICAnPHd0Zi9Gb3J3YXJkLmg+JywKKyAgICAgICAgJyJNZXNzYWdl
TmFtZXMuaCInLAogICAgIF0pCiAKICAgICBub25fdGVtcGxhdGVfd3RmX3R5cGVzID0gZnJvemVu
c2V0KFsKQEAgLTQ0MCwxMiArNDQxLDEyIEBAIGRlZiBnZW5lcmF0ZV9tZXNzYWdlc19oZWFkZXIo
cmVjZWl2ZXIpOgogCiAgICAgcmVzdWx0LmFwcGVuZCgnbmFtZXNwYWNlIE1lc3NhZ2VzIHtcbm5h
bWVzcGFjZSAlcyB7XG4nICUgcmVjZWl2ZXIubmFtZSkKICAgICByZXN1bHQuYXBwZW5kKCdcbicp
Ci0gICAgcmVzdWx0LmFwcGVuZCgnc3RhdGljIGlubGluZSBJUEM6OlN0cmluZ1JlZmVyZW5jZSBt
ZXNzYWdlUmVjZWl2ZXJOYW1lKClcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnc3RhdGljIGlubGlu
ZSBJUEM6OlJlY2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1lKClcbicpCiAgICAgcmVzdWx0
LmFwcGVuZCgne1xuJykKLSAgICByZXN1bHQuYXBwZW5kKCcgICAgcmV0dXJuIElQQzo6U3RyaW5n
UmVmZXJlbmNlKCIlcyIpO1xuJyAlIHJlY2VpdmVyLm5hbWUpCisgICAgcmVzdWx0LmFwcGVuZCgn
ICAgIHJldHVybiBJUEM6OlJlY2VpdmVyTmFtZTo6JXM7XG4nICUgcmVjZWl2ZXIubmFtZSkKICAg
ICByZXN1bHQuYXBwZW5kKCd9XG4nKQogICAgIHJlc3VsdC5hcHBlbmQoJ1xuJykKLSAgICByZXN1
bHQuYXBwZW5kKCdcbicuam9pbihbbWVzc2FnZV90b19zdHJ1Y3RfZGVjbGFyYXRpb24oeCkgZm9y
IHggaW4gcmVjZWl2ZXIubWVzc2FnZXNdKSkKKyAgICByZXN1bHQuYXBwZW5kKCdcbicuam9pbihb
bWVzc2FnZV90b19zdHJ1Y3RfZGVjbGFyYXRpb24ocmVjZWl2ZXIsIHgpIGZvciB4IGluIHJlY2Vp
dmVyLm1lc3NhZ2VzXSkpCiAgICAgcmVzdWx0LmFwcGVuZCgnXG4nKQogICAgIHJlc3VsdC5hcHBl
bmQoJ30gLy8gbmFtZXNwYWNlICVzXG59IC8vIG5hbWVzcGFjZSBNZXNzYWdlc1xuJyAlIHJlY2Vp
dmVyLm5hbWUpCiAKQEAgLTg0OCwzICs4NDksMTc0IEBAIGRlZiBnZW5lcmF0ZV9tZXNzYWdlX2hh
bmRsZXIocmVjZWl2ZXIpOgogICAgICAgICByZXN1bHQuYXBwZW5kKCdcbiNlbmRpZiAvLyAlc1xu
JyAlIHJlY2VpdmVyLmNvbmRpdGlvbikKIAogICAgIHJldHVybiAnJy5qb2luKHJlc3VsdCkKKwor
CitkZWYgZ2VuZXJhdGVfbWVzc2FnZV9uYW1lc19oZWFkZXIocmVjZWl2ZXJzKToKKyAgICByZXN1
bHQgPSBbXQorICAgIHJlc3VsdC5hcHBlbmQoX2xpY2Vuc2VfaGVhZGVyKQorICAgIHJlc3VsdC5h
cHBlbmQoJyNwcmFnbWEgb25jZVxuJykKKyAgICByZXN1bHQuYXBwZW5kKCdcbicpCisgICAgcmVz
dWx0LmFwcGVuZCgnI2luY2x1ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+XG4nKQorICAgIHJlc3VsdC5h
cHBlbmQoJ1xuJykKKyAgICByZXN1bHQuYXBwZW5kKCduYW1lc3BhY2UgSVBDIHtcbicpCisgICAg
cmVzdWx0LmFwcGVuZCgnXG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJ2VudW0gY2xhc3MgUmVjZWl2
ZXJOYW1lIDogdWludDhfdCB7JykKKworICAgIGVudW1fdmFsdWUgPSAxCisgICAgZmlyc3RfcmVj
ZWl2ZXIgPSBUcnVlCisgICAgZm9yIHJlY2VpdmVyIGluIHJlY2VpdmVyczoKKyAgICAgICAgcmVz
dWx0LmFwcGVuZCgnXG4nKQorICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgJykKKyAgICAgICAg
aWYgbm90IGZpcnN0X3JlY2VpdmVyOgorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnLCAnKQor
ICAgICAgICBmaXJzdF9yZWNlaXZlciA9IEZhbHNlCisgICAgICAgIHJlc3VsdC5hcHBlbmQoJyVz
ID0gJWQnICUgKHJlY2VpdmVyLm5hbWUsIGVudW1fdmFsdWUpKQorICAgICAgICBlbnVtX3ZhbHVl
ID0gZW51bV92YWx1ZSArIDEKKyAgICByZXN1bHQuYXBwZW5kKCdcbiAgICAsIElQQyA9ICVkJyAl
IGVudW1fdmFsdWUpCisgICAgZW51bV92YWx1ZSA9IGVudW1fdmFsdWUgKyAxCisgICAgcmVzdWx0
LmFwcGVuZCgnXG4gICAgLCBBc3luY1JlcGx5ID0gJWQnICUgZW51bV92YWx1ZSkKKyAgICBlbnVt
X3ZhbHVlID0gZW51bV92YWx1ZSArIDEKKyAgICByZXN1bHQuYXBwZW5kKCdcbiAgICAsIEludmFs
aWQgPSAlZCcgJSBlbnVtX3ZhbHVlKQorICAgIHJlc3VsdC5hcHBlbmQoJ1xufTtcbicpCisgICAg
cmVzdWx0LmFwcGVuZCgnXG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJ2VudW0gY2xhc3MgTWVzc2Fn
ZU5hbWUgOiB1aW50MTZfdCB7JykKKworICAgIGVudW1fdmFsdWUgPSAxCisgICAgZmlyc3RfbWVz
c2FnZSA9IFRydWUKKyAgICBmb3IgcmVjZWl2ZXIgaW4gcmVjZWl2ZXJzOgorICAgICAgICBmb3Ig
bWVzc2FnZSBpbiByZWNlaXZlci5tZXNzYWdlczoKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQo
J1xuJykKKyAgICAgICAgICAgIGlmIG1lc3NhZ2UuY29uZGl0aW9uOgorICAgICAgICAgICAgICAg
IHJlc3VsdC5hcHBlbmQoJyNpZiAlc1xuJyAlIG1lc3NhZ2UuY29uZGl0aW9uKQorICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZCgnICAgICcpCisgICAgICAgICAgICBpZiBub3QgZmlyc3RfbWVzc2Fn
ZToKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcsICcpCisgICAgICAgICAgICBmaXJz
dF9tZXNzYWdlID0gRmFsc2UKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyVzXyVzID0gJWQn
ICUgKHJlY2VpdmVyLm5hbWUsIG1lc3NhZ2UubmFtZSwgZW51bV92YWx1ZSkpCisgICAgICAgICAg
ICBlbnVtX3ZhbHVlID0gZW51bV92YWx1ZSArIDEKKyAgICAgICAgICAgIGlmIG1lc3NhZ2UuaGFz
X2F0dHJpYnV0ZShBU1lOQ19BVFRSSUJVVEUpOgorICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBl
bmQoJ1xuICAgICwgJXNfJXNSZXBseSA9ICVkJyAlIChyZWNlaXZlci5uYW1lLCBtZXNzYWdlLm5h
bWUsIGVudW1fdmFsdWUpKQorICAgICAgICAgICAgICAgIGVudW1fdmFsdWUgPSBlbnVtX3ZhbHVl
ICsgMQorICAgICAgICAgICAgaWYgbWVzc2FnZS5jb25kaXRpb246CisgICAgICAgICAgICAgICAg
cmVzdWx0LmFwcGVuZCgnXG4jZW5kaWYnKQorICAgIHJlc3VsdC5hcHBlbmQoJ1xuICAgICwgV3Jh
cHBlZEFzeW5jTWVzc2FnZUZvclRlc3RpbmcgPSAlZCcgJSBlbnVtX3ZhbHVlKQorICAgIGVudW1f
dmFsdWUgPSBlbnVtX3ZhbHVlICsgMQorICAgIHJlc3VsdC5hcHBlbmQoJ1xuICAgICwgU3luY01l
c3NhZ2VSZXBseSA9ICVkJyAlIGVudW1fdmFsdWUpCisgICAgZW51bV92YWx1ZSA9IGVudW1fdmFs
dWUgKyAxCisgICAgcmVzdWx0LmFwcGVuZCgnXG4gICAgLCBJbml0aWFsaXplQ29ubmVjdGlvbiA9
ICVkJyAlIGVudW1fdmFsdWUpCisgICAgZW51bV92YWx1ZSA9IGVudW1fdmFsdWUgKyAxCisgICAg
cmVzdWx0LmFwcGVuZCgnXG4gICAgLCBMZWdhY3lTZXNzaW9uU3RhdGUgPSAlZCcgJSBlbnVtX3Zh
bHVlKQorICAgIHJlc3VsdC5hcHBlbmQoJ1xufTtcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnXG4n
KQorICAgIHJlc3VsdC5hcHBlbmQoJ1JlY2VpdmVyTmFtZSByZWNlaXZlck5hbWUoTWVzc2FnZU5h
bWUpO1xuJykKKyAgICByZXN1bHQuYXBwZW5kKCdjb25zdCBjaGFyKiBkZXNjcmlwdGlvbihNZXNz
YWdlTmFtZSk7XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJ2Jvb2wgaXNWYWxpZE1lc3NhZ2VOYW1l
KE1lc3NhZ2VOYW1lKTtcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnXG4nKQorICAgIHJlc3VsdC5h
cHBlbmQoJ30gLy8gbmFtZXNwYWNlIElQQ1xuJykKKyAgICByZXN1bHQuYXBwZW5kKCdcbicpCisg
ICAgcmVzdWx0LmFwcGVuZCgnbmFtZXNwYWNlIFdURiB7XG4nKQorICAgIHJlc3VsdC5hcHBlbmQo
J1xuJykKKyAgICByZXN1bHQuYXBwZW5kKCd0ZW1wbGF0ZTw+XG4nKQorICAgIHJlc3VsdC5hcHBl
bmQoJ2NsYXNzIEhhc0N1c3RvbUlzVmFsaWRFbnVtPElQQzo6TWVzc2FnZU5hbWU+IDogcHVibGlj
IHN0ZDo6dHJ1ZV90eXBlIHsgfTtcbicpCisgICAgcmVzdWx0LmFwcGVuZCgndGVtcGxhdGU8dHlw
ZW5hbWUgRSwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgPSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNf
c2FtZTxFLCBJUEM6Ok1lc3NhZ2VOYW1lPjo6dmFsdWU+PlxuJykKKyAgICByZXN1bHQuYXBwZW5k
KCdib29sIGlzVmFsaWRFbnVtKFQgbWVzc2FnZU5hbWUpXG4nKQorICAgIHJlc3VsdC5hcHBlbmQo
J3tcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFQpID09
IHNpemVvZihJUEM6Ok1lc3NhZ2VOYW1lKSwgImlzVmFsaWRFbnVtPE1lc3NhZ2VOYW1lPiBzaG91
bGQgb25seSBiZSBjYWxsZWQgd2l0aCAxNi1iaXQgdHlwZXMiKTtcbicpCisgICAgcmVzdWx0LmFw
cGVuZCgnICAgIHJldHVybiBJUEM6OmlzVmFsaWRNZXNzYWdlTmFtZShzdGF0aWNfY2FzdDxJUEM6
Ok1lc3NhZ2VOYW1lPihtZXNzYWdlTmFtZSkpO1xuJykKKyAgICByZXN1bHQuYXBwZW5kKCd9O1xu
JykKKyAgICByZXN1bHQuYXBwZW5kKCdcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnfSAvLyBuYW1l
c3BhY2UgV1RGXG4nKQorICAgIHJldHVybiAnJy5qb2luKHJlc3VsdCkKKworCitkZWYgZ2VuZXJh
dGVfbWVzc2FnZV9uYW1lc19pbXBsZW1lbnRhdGlvbihyZWNlaXZlcnMpOgorICAgIHJlc3VsdCA9
IFtdCisgICAgcmVzdWx0LmFwcGVuZChfbGljZW5zZV9oZWFkZXIpCisgICAgcmVzdWx0LmFwcGVu
ZCgnI2luY2x1ZGUgImNvbmZpZy5oIlxuJykKKyAgICByZXN1bHQuYXBwZW5kKCcjaW5jbHVkZSAi
TWVzc2FnZU5hbWVzLmgiXG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJ1xuJykKKyAgICByZXN1bHQu
YXBwZW5kKCduYW1lc3BhY2UgSVBDIHtcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnXG4nKQorICAg
IHJlc3VsdC5hcHBlbmQoJ2NvbnN0IGNoYXIqIGRlc2NyaXB0aW9uKE1lc3NhZ2VOYW1lIG5hbWUp
XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJ3tcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnICAgIHN3
aXRjaCAobmFtZSkge1xuJykKKyAgICBmb3IgcmVjZWl2ZXIgaW4gcmVjZWl2ZXJzOgorICAgICAg
ICBmb3IgbWVzc2FnZSBpbiByZWNlaXZlci5tZXNzYWdlczoKKyAgICAgICAgICAgIGlmIG1lc3Nh
Z2UuY29uZGl0aW9uOgorICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyNpZiAlc1xuJyAl
IG1lc3NhZ2UuY29uZGl0aW9uKQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIGNhc2Ug
TWVzc2FnZU5hbWU6OiVzXyVzOlxuJyAlIChyZWNlaXZlci5uYW1lLCBtZXNzYWdlLm5hbWUpKQor
ICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgICAgICByZXR1cm4gIiVzOjolcyI7XG4nICUg
KHJlY2VpdmVyLm5hbWUsIG1lc3NhZ2UubmFtZSkpCisgICAgICAgICAgICBpZiBtZXNzYWdlLmhh
c19hdHRyaWJ1dGUoQVNZTkNfQVRUUklCVVRFKToKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBw
ZW5kKCcgICAgY2FzZSBNZXNzYWdlTmFtZTo6JXNfJXNSZXBseTpcbicgJSAocmVjZWl2ZXIubmFt
ZSwgbWVzc2FnZS5uYW1lKSkKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgICAg
IHJldHVybiAiJXM6OiVzUmVwbHkiO1xuJyAlIChyZWNlaXZlci5uYW1lLCBtZXNzYWdlLm5hbWUp
KQorICAgICAgICAgICAgaWYgbWVzc2FnZS5jb25kaXRpb246CisgICAgICAgICAgICAgICAgcmVz
dWx0LmFwcGVuZCgnI2VuZGlmXG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJyAgICBjYXNlIE1lc3Nh
Z2VOYW1lOjpXcmFwcGVkQXN5bmNNZXNzYWdlRm9yVGVzdGluZzpcbicpCisgICAgcmVzdWx0LmFw
cGVuZCgnICAgICAgICByZXR1cm4gIklQQzo6V3JhcHBlZEFzeW5jTWVzc2FnZUZvclRlc3Rpbmci
O1xuJykKKyAgICByZXN1bHQuYXBwZW5kKCcgICAgY2FzZSBNZXNzYWdlTmFtZTo6U3luY01lc3Nh
Z2VSZXBseTpcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnICAgICAgICByZXR1cm4gIklQQzo6U3lu
Y01lc3NhZ2VSZXBseSI7XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJyAgICBjYXNlIE1lc3NhZ2VO
YW1lOjpJbml0aWFsaXplQ29ubmVjdGlvbjpcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnICAgICAg
ICByZXR1cm4gIklQQzo6SW5pdGlhbGl6ZUNvbm5lY3Rpb24iO1xuJykKKyAgICByZXN1bHQuYXBw
ZW5kKCcgICAgY2FzZSBNZXNzYWdlTmFtZTo6TGVnYWN5U2Vzc2lvblN0YXRlOlxuJykKKyAgICBy
ZXN1bHQuYXBwZW5kKCcgICAgICAgIHJldHVybiAiSVBDOjpMZWdhY3lTZXNzaW9uU3RhdGUiO1xu
JykKKyAgICByZXN1bHQuYXBwZW5kKCcgICAgfVxuJykKKyAgICByZXN1bHQuYXBwZW5kKCcgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJyAgICByZXR1cm4g
IjxpbnZhbGlkIG1lc3NhZ2UgbmFtZT4iO1xuJykKKyAgICByZXN1bHQuYXBwZW5kKCd9XG4nKQor
ICAgIHJlc3VsdC5hcHBlbmQoJ1xuJykKKyAgICByZXN1bHQuYXBwZW5kKCdSZWNlaXZlck5hbWUg
cmVjZWl2ZXJOYW1lKE1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lKVxuJykKKyAgICByZXN1bHQuYXBw
ZW5kKCd7XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJyAgICBzd2l0Y2ggKG1lc3NhZ2VOYW1lKSB7
XG4nKQorICAgIGZvciByZWNlaXZlciBpbiByZWNlaXZlcnM6CisgICAgICAgIGZvciBtZXNzYWdl
IGluIHJlY2VpdmVyLm1lc3NhZ2VzOgorICAgICAgICAgICAgaWYgbWVzc2FnZS5jb25kaXRpb246
CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnI2lmICVzXG4nICUgbWVzc2FnZS5jb25k
aXRpb24pCisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgY2FzZSBNZXNzYWdlTmFtZTo6
JXNfJXM6XG4nICUgKHJlY2VpdmVyLm5hbWUsIG1lc3NhZ2UubmFtZSkpCisgICAgICAgICAgICBp
ZiBtZXNzYWdlLmNvbmRpdGlvbjoKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcjZW5k
aWZcbicpCisgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICAgICAgcmV0dXJuIFJlY2VpdmVyTmFt
ZTo6JXM7XG4nICUgcmVjZWl2ZXIubmFtZSkKKyAgICBmb3IgcmVjZWl2ZXIgaW4gcmVjZWl2ZXJz
OgorICAgICAgICBmb3IgbWVzc2FnZSBpbiByZWNlaXZlci5tZXNzYWdlczoKKyAgICAgICAgICAg
IGlmIG1lc3NhZ2UuaGFzX2F0dHJpYnV0ZShBU1lOQ19BVFRSSUJVVEUpOgorICAgICAgICAgICAg
ICAgIGlmIG1lc3NhZ2UuY29uZGl0aW9uOgorICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBw
ZW5kKCcjaWYgJXNcbicgJSBtZXNzYWdlLmNvbmRpdGlvbikKKyAgICAgICAgICAgICAgICByZXN1
bHQuYXBwZW5kKCcgICAgY2FzZSBNZXNzYWdlTmFtZTo6JXNfJXNSZXBseTpcbicgJSAocmVjZWl2
ZXIubmFtZSwgbWVzc2FnZS5uYW1lKSkKKyAgICAgICAgICAgICAgICBpZiBtZXNzYWdlLmNvbmRp
dGlvbjoKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnI2VuZGlmXG4nKQorICAg
IHJlc3VsdC5hcHBlbmQoJyAgICAgICAgcmV0dXJuIFJlY2VpdmVyTmFtZTo6QXN5bmNSZXBseTtc
bicpCisgICAgcmVzdWx0LmFwcGVuZCgnICAgIGNhc2UgTWVzc2FnZU5hbWU6OldyYXBwZWRBc3lu
Y01lc3NhZ2VGb3JUZXN0aW5nOlxuJykKKyAgICByZXN1bHQuYXBwZW5kKCcgICAgY2FzZSBNZXNz
YWdlTmFtZTo6U3luY01lc3NhZ2VSZXBseTpcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnICAgIGNh
c2UgTWVzc2FnZU5hbWU6OkluaXRpYWxpemVDb25uZWN0aW9uOlxuJykKKyAgICByZXN1bHQuYXBw
ZW5kKCcgICAgY2FzZSBNZXNzYWdlTmFtZTo6TGVnYWN5U2Vzc2lvblN0YXRlOlxuJykKKyAgICBy
ZXN1bHQuYXBwZW5kKCcgICAgICAgIHJldHVybiBSZWNlaXZlck5hbWU6OklQQztcbicpCisgICAg
cmVzdWx0LmFwcGVuZCgnICAgIH1cbicpCisgICAgcmVzdWx0LmFwcGVuZCgnICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpO1xuJykKKyAgICByZXN1bHQuYXBwZW5kKCcgICAgcmV0dXJuIFJlY2VpdmVy
TmFtZTo6SW52YWxpZDtcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnfVxuJykKKyAgICByZXN1bHQu
YXBwZW5kKCdcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnYm9vbCBpc1ZhbGlkTWVzc2FnZU5hbWUo
TWVzc2FnZU5hbWUgbWVzc2FnZU5hbWUpXG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJ3tcbicpCisg
ICAgZm9yIHJlY2VpdmVyIGluIHJlY2VpdmVyczoKKyAgICAgICAgZm9yIG1lc3NhZ2UgaW4gcmVj
ZWl2ZXIubWVzc2FnZXM6CisgICAgICAgICAgICBpZiBtZXNzYWdlLmNvbmRpdGlvbjoKKyAgICAg
ICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcjaWYgJXNcbicgJSBtZXNzYWdlLmNvbmRpdGlvbikK
KyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpN
ZXNzYWdlTmFtZTo6JXNfJXMpXG4nICUgKHJlY2VpdmVyLm5hbWUsIG1lc3NhZ2UubmFtZSkpCisg
ICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgICAgIHJldHVybiB0cnVlO1xuJykKKyAgICAg
ICAgICAgIGlmIG1lc3NhZ2UuaGFzX2F0dHJpYnV0ZShBU1lOQ19BVFRSSUJVVEUpOgorICAgICAg
ICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNz
YWdlTmFtZTo6JXNfJXNSZXBseSlcbicgJSAocmVjZWl2ZXIubmFtZSwgbWVzc2FnZS5uYW1lKSkK
KyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgICAgIHJldHVybiB0cnVlO1xuJykK
KyAgICAgICAgICAgIGlmIG1lc3NhZ2UuY29uZGl0aW9uOgorICAgICAgICAgICAgICAgIHJlc3Vs
dC5hcHBlbmQoJyNlbmRpZlxuJykKKyAgICByZXN1bHQuYXBwZW5kKCcgICAgaWYgKG1lc3NhZ2VO
YW1lID09IElQQzo6TWVzc2FnZU5hbWU6OldyYXBwZWRBc3luY01lc3NhZ2VGb3JUZXN0aW5nKVxu
JykKKyAgICByZXN1bHQuYXBwZW5kKCcgICAgICAgIHJldHVybiB0cnVlO1xuJykKKyAgICByZXN1
bHQuYXBwZW5kKCcgICAgaWYgKG1lc3NhZ2VOYW1lID09IElQQzo6TWVzc2FnZU5hbWU6OlN5bmNN
ZXNzYWdlUmVwbHkpXG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJyAgICAgICAgcmV0dXJuIHRydWU7
XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJyAgICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNz
YWdlTmFtZTo6SW5pdGlhbGl6ZUNvbm5lY3Rpb24pXG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJyAg
ICAgICAgcmV0dXJuIHRydWU7XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJyAgICBpZiAobWVzc2Fn
ZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6TGVnYWN5U2Vzc2lvblN0YXRlKVxuJykKKyAgICBy
ZXN1bHQuYXBwZW5kKCcgICAgICAgIHJldHVybiB0cnVlO1xuJykKKyAgICByZXN1bHQuYXBwZW5k
KCcgICAgcmV0dXJuIGZhbHNlO1xuJykKKyAgICByZXN1bHQuYXBwZW5kKCd9O1xuJykKKyAgICBy
ZXN1bHQuYXBwZW5kKCdcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnfSAvLyBuYW1lc3BhY2UgSVBD
XG4nKQorICAgIHJldHVybiAnJy5qb2luKHJlc3VsdCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2Ny
aXB0cy93ZWJraXQvdGVzdC1sZWdhY3ktbWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0LWxlZ2FjeS1tZXNzYWdlcy5pbgkocmV2aXNpb24g
MjYxMjM4KQorKysgU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0LWxlZ2FjeS1tZXNz
YWdlcy5pbgkobm9uZXhpc3RlbnQpCkBAIC0xLDc3ICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAy
MDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnIEFORAotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0jIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SCi0jIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSMgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIKLSMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSMgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLQotI2lmIEVOQUJMRShXRUJLSVQyKQotI2lmIE5FU1RFRF9N
QVNURVJfQ09ORElUSU9OIHx8IE1BU1RFUl9PUiAmJiBNQVNURVJfQU5ECi0KLW1lc3NhZ2VzIC0+
IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewotICAgIExvYWRVUkwoU3RyaW5nIHVybCkKLSNpZiBF
TkFCTEUoVE9VQ0hfRVZFTlRTKQotICAgIExvYWRTb21ldGhpbmcoU3RyaW5nIHVybCkKLSNpZiBO
RVNURURfTUVTU0FHRV9DT05ESVRJT04gfHwgU09NRV9PVEhFUl9NRVNTQUdFX0NPTkRJVElPTgot
ICAgIFRvdWNoRXZlbnQoV2ViS2l0OjpXZWJUb3VjaEV2ZW50IGV2ZW50KQotI2VuZGlmCi0jaWYg
TkVTVEVEX01FU1NBR0VfQ09ORElUSU9OICYmIFNPTUVfT1RIRVJfTUVTU0FHRV9DT05ESVRJT04K
LSAgICBBZGRFdmVudChXZWJLaXQ6OldlYlRvdWNoRXZlbnQgZXZlbnQpCi0jZW5kaWYKLSAgICBM
b2FkU29tZXRoaW5nRWxzZShTdHJpbmcgdXJsKQotI2VuZGlmCi0gICAgRGlkUmVjZWl2ZVBvbGlj
eURlY2lzaW9uKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IGxpc3RlbmVySUQsIHVpbnQzMl90
IHBvbGljeUFjdGlvbikKLSAgICBDbG9zZSgpCi0KLSAgICBQcmVmZXJlbmNlc0RpZENoYW5nZShX
ZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmUgc3RvcmUpCi0gICAgU2VuZERvdWJsZUFuZEZsb2F0
KGRvdWJsZSBkLCBmbG9hdCBmKQotICAgIFNlbmRJbnRzKFZlY3Rvcjx1aW50NjRfdD4gaW50cywg
VmVjdG9yPFZlY3Rvcjx1aW50NjRfdD4+IGludFZlY3RvcnMpCi0KLSAgICBDcmVhdGVQbHVnaW4o
dWludDY0X3QgcGx1Z2luSW5zdGFuY2VJRCwgV2ViS2l0OjpQbHVnaW46OlBhcmFtZXRlcnMgcGFy
YW1ldGVycykgLT4gKGJvb2wgcmVzdWx0KQotICAgIFJ1bkphdmFTY3JpcHRBbGVydCh1aW50NjRf
dCBmcmFtZUlELCBTdHJpbmcgbWVzc2FnZSkgLT4gKCkKLSAgICBHZXRQbHVnaW5zKGJvb2wgcmVm
cmVzaCkgLT4gKFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiBwbHVnaW5zKQotICAgIEdldFBs
dWdpblByb2Nlc3NDb25uZWN0aW9uKFN0cmluZyBwbHVnaW5QYXRoKSAtPiAoSVBDOjpDb25uZWN0
aW9uOjpIYW5kbGUgY29ubmVjdGlvbkhhbmRsZSkgU3luY2hyb25vdXMKLQotICAgIFRlc3RNdWx0
aXBsZUF0dHJpYnV0ZXMoKSAtPiAoKSBXYW50c0Nvbm5lY3Rpb24gU3luY2hyb25vdXMKLQotICAg
IFRlc3RQYXJhbWV0ZXJBdHRyaWJ1dGVzKFtBdHRyaWJ1dGVPbmUgQXR0cmlidXRlVHdvXSB1aW50
NjRfdCBmb28sIGRvdWJsZSBiYXIsIFtBdHRyaWJ1dGVUaHJlZV0gZG91YmxlIGJheikKLQotICAg
IFRlbXBsYXRlVGVzdChIYXNoTWFwPFN0cmluZywgc3RkOjpwYWlyPFN0cmluZywgdWludDY0X3Q+
PiBhKQotCi0gICAgU2V0VmlkZW9MYXllcklEKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OlBsYXRm
b3JtTGF5ZXJJRCB2aWRlb0xheWVySUQpCi0KLSNpZiBQTEFURk9STShNQUMpCi0gICAgRGlkQ3Jl
YXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oSVBDOjpNYWNoUG9ydCBjb25uZWN0aW9uSWRlbnRpZmll
cikKLSNlbmRpZgotCi0jaWYgUExBVEZPUk0oTUFDKQotICAgICMgS2V5Ym9hcmQgc3VwcG9ydAot
ICAgIEludGVycHJldEtleUV2ZW50KHVpbnQzMl90IHR5cGUpIC0+IChWZWN0b3I8V2ViQ29yZTo6
S2V5cHJlc3NDb21tYW5kPiBjb21tYW5kTmFtZSkKLSNlbmRpZgotCi0jaWYgRU5BQkxFKERFUFJF
Q0FURURfRkVBVFVSRSkKLSAgICBEZXByZWNhdGVkT3BlcmF0aW9uKElQQzo6RHVtbXlUeXBlIGR1
bW15KQotI2VuZGlmCi0KLSNpZiBFTkFCTEUoRVhQRVJJTUVOVEFMX0ZFQVRVUkUpCi0gICAgRXhw
ZXJpbWVudGFsT3BlcmF0aW9uKElQQzo6RHVtbXlUeXBlIGR1bW15KQotI2VuZGlmCi19Ci0KLSNl
bmRpZgotI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3QtbGVn
YWN5Lm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJr
aXQvdGVzdC1sZWdhY3kubWVzc2FnZXMuaW4JKHJldmlzaW9uIDI2MTIzOCkJKGZyb20gU291cmNl
L1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0LWxlZ2FjeS1tZXNzYWdlcy5pbjoyNjEyMzgpCisr
KyBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3QtbGVnYWN5Lm1lc3NhZ2VzLmluCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzcgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
IyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAor
IyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMg
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKworI2lmIEVOQUJMRShXRUJLSVQyKQorI2lmIE5FU1RFRF9NQVNURVJfQ09O
RElUSU9OIHx8IE1BU1RFUl9PUiAmJiBNQVNURVJfQU5ECisKK21lc3NhZ2VzIC0+IFdlYlBhZ2Ug
TGVnYWN5UmVjZWl2ZXIgeworICAgIExvYWRVUkwoU3RyaW5nIHVybCkKKyNpZiBFTkFCTEUoVE9V
Q0hfRVZFTlRTKQorICAgIExvYWRTb21ldGhpbmcoU3RyaW5nIHVybCkKKyNpZiBORVNURURfTUVT
U0FHRV9DT05ESVRJT04gfHwgU09NRV9PVEhFUl9NRVNTQUdFX0NPTkRJVElPTgorICAgIFRvdWNo
RXZlbnQoV2ViS2l0OjpXZWJUb3VjaEV2ZW50IGV2ZW50KQorI2VuZGlmCisjaWYgTkVTVEVEX01F
U1NBR0VfQ09ORElUSU9OICYmIFNPTUVfT1RIRVJfTUVTU0FHRV9DT05ESVRJT04KKyAgICBBZGRF
dmVudChXZWJLaXQ6OldlYlRvdWNoRXZlbnQgZXZlbnQpCisjZW5kaWYKKyAgICBMb2FkU29tZXRo
aW5nRWxzZShTdHJpbmcgdXJsKQorI2VuZGlmCisgICAgRGlkUmVjZWl2ZVBvbGljeURlY2lzaW9u
KHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IGxpc3RlbmVySUQsIHVpbnQzMl90IHBvbGljeUFj
dGlvbikKKyAgICBDbG9zZSgpCisKKyAgICBQcmVmZXJlbmNlc0RpZENoYW5nZShXZWJLaXQ6Oldl
YlByZWZlcmVuY2VzU3RvcmUgc3RvcmUpCisgICAgU2VuZERvdWJsZUFuZEZsb2F0KGRvdWJsZSBk
LCBmbG9hdCBmKQorICAgIFNlbmRJbnRzKFZlY3Rvcjx1aW50NjRfdD4gaW50cywgVmVjdG9yPFZl
Y3Rvcjx1aW50NjRfdD4+IGludFZlY3RvcnMpCisKKyAgICBDcmVhdGVQbHVnaW4odWludDY0X3Qg
cGx1Z2luSW5zdGFuY2VJRCwgV2ViS2l0OjpQbHVnaW46OlBhcmFtZXRlcnMgcGFyYW1ldGVycykg
LT4gKGJvb2wgcmVzdWx0KQorICAgIFJ1bkphdmFTY3JpcHRBbGVydCh1aW50NjRfdCBmcmFtZUlE
LCBTdHJpbmcgbWVzc2FnZSkgLT4gKCkKKyAgICBHZXRQbHVnaW5zKGJvb2wgcmVmcmVzaCkgLT4g
KFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiBwbHVnaW5zKQorICAgIEdldFBsdWdpblByb2Nl
c3NDb25uZWN0aW9uKFN0cmluZyBwbHVnaW5QYXRoKSAtPiAoSVBDOjpDb25uZWN0aW9uOjpIYW5k
bGUgY29ubmVjdGlvbkhhbmRsZSkgU3luY2hyb25vdXMKKworICAgIFRlc3RNdWx0aXBsZUF0dHJp
YnV0ZXMoKSAtPiAoKSBXYW50c0Nvbm5lY3Rpb24gU3luY2hyb25vdXMKKworICAgIFRlc3RQYXJh
bWV0ZXJBdHRyaWJ1dGVzKFtBdHRyaWJ1dGVPbmUgQXR0cmlidXRlVHdvXSB1aW50NjRfdCBmb28s
IGRvdWJsZSBiYXIsIFtBdHRyaWJ1dGVUaHJlZV0gZG91YmxlIGJheikKKworICAgIFRlbXBsYXRl
VGVzdChIYXNoTWFwPFN0cmluZywgc3RkOjpwYWlyPFN0cmluZywgdWludDY0X3Q+PiBhKQorCisg
ICAgU2V0VmlkZW9MYXllcklEKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJ
RCB2aWRlb0xheWVySUQpCisKKyNpZiBQTEFURk9STShNQUMpCisgICAgRGlkQ3JlYXRlV2ViUHJv
Y2Vzc0Nvbm5lY3Rpb24oSVBDOjpNYWNoUG9ydCBjb25uZWN0aW9uSWRlbnRpZmllcikKKyNlbmRp
ZgorCisjaWYgUExBVEZPUk0oTUFDKQorICAgICMgS2V5Ym9hcmQgc3VwcG9ydAorICAgIEludGVy
cHJldEtleUV2ZW50KHVpbnQzMl90IHR5cGUpIC0+IChWZWN0b3I8V2ViQ29yZTo6S2V5cHJlc3ND
b21tYW5kPiBjb21tYW5kTmFtZSkKKyNlbmRpZgorCisjaWYgRU5BQkxFKERFUFJFQ0FURURfRkVB
VFVSRSkKKyAgICBEZXByZWNhdGVkT3BlcmF0aW9uKElQQzo6RHVtbXlUeXBlIGR1bW15KQorI2Vu
ZGlmCisKKyNpZiBFTkFCTEUoRVhQRVJJTUVOVEFMX0ZFQVRVUkUpCisgICAgRXhwZXJpbWVudGFs
T3BlcmF0aW9uKElQQzo6RHVtbXlUeXBlIGR1bW15KQorI2VuZGlmCit9CisKKyNlbmRpZgorI2Vu
ZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3QtbWVzc2FnZXMuaW4K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0LW1lc3NhZ2Vz
LmluCShyZXZpc2lvbiAyNjEyMzgpCisrKyBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rl
c3QtbWVzc2FnZXMuaW4JKG5vbmV4aXN0ZW50KQpAQCAtMSw4NCArMCwwIEBACi0jIENvcHlyaWdo
dCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJyBBTkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSMgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQot
IyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUgotIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
Ci0jIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSCi0jIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0jIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLSNpZiBFTkFCTEUoV0VCS0lUMikKLSNpZiBO
RVNURURfTUFTVEVSX0NPTkRJVElPTiB8fCBNQVNURVJfT1IgJiYgTUFTVEVSX0FORAotCi0KLSMg
VGhlIHBhcnNlciBzaG91bGQgdHJlYXQgYWxsIG9mIHRoZXNlIGFzIGNvbW1lbnRzCi0jRmFrZUxv
YWRVUkxBKFN0cmluZyB1cmwpCi0jIEZha2VMb2FkVVJMQihTdHJpbmcgdXJsKQotICAgICNGYWtl
TG9hZFVSTEMoU3RyaW5nIHVybCkKLSAgICAjIEZha2VMb2FkVVJMRChTdHJpbmcgdXJsKQotCi1t
ZXNzYWdlcyAtPiBXZWJQYWdlIHsKLSAgICBMb2FkVVJMKFN0cmluZyB1cmwpCi0jaWYgRU5BQkxF
KFRPVUNIX0VWRU5UUykKLSAgICBMb2FkU29tZXRoaW5nKFN0cmluZyB1cmwpCi0jaWYgTkVTVEVE
X01FU1NBR0VfQ09ORElUSU9OIHx8IFNPTUVfT1RIRVJfTUVTU0FHRV9DT05ESVRJT04KLSAgICBU
b3VjaEV2ZW50KFdlYktpdDo6V2ViVG91Y2hFdmVudCBldmVudCkKLSNlbmRpZgotI2lmIE5FU1RF
RF9NRVNTQUdFX0NPTkRJVElPTiAmJiBTT01FX09USEVSX01FU1NBR0VfQ09ORElUSU9OCi0gICAg
QWRkRXZlbnQoV2ViS2l0OjpXZWJUb3VjaEV2ZW50IGV2ZW50KQotI2VuZGlmCi0gICAgTG9hZFNv
bWV0aGluZ0Vsc2UoU3RyaW5nIHVybCkKLSNlbmRpZgotICAgIERpZFJlY2VpdmVQb2xpY3lEZWNp
c2lvbih1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBsaXN0ZW5lcklELCB1aW50MzJfdCBwb2xp
Y3lBY3Rpb24pCi0gICAgQ2xvc2UoKQotCi0gICAgUHJlZmVyZW5jZXNEaWRDaGFuZ2UoV2ViS2l0
OjpXZWJQcmVmZXJlbmNlc1N0b3JlIHN0b3JlKQotICAgIFNlbmREb3VibGVBbmRGbG9hdChkb3Vi
bGUgZCwgZmxvYXQgZikKLSAgICBTZW5kSW50cyhWZWN0b3I8dWludDY0X3Q+IGludHMsIFZlY3Rv
cjxWZWN0b3I8dWludDY0X3Q+PiBpbnRWZWN0b3JzKQotCi0gICAgQ3JlYXRlUGx1Z2luKHVpbnQ2
NF90IHBsdWdpbkluc3RhbmNlSUQsIFdlYktpdDo6UGx1Z2luOjpQYXJhbWV0ZXJzIHBhcmFtZXRl
cnMpIC0+IChib29sIHJlc3VsdCkKLSAgICBSdW5KYXZhU2NyaXB0QWxlcnQodWludDY0X3QgZnJh
bWVJRCwgU3RyaW5nIG1lc3NhZ2UpIC0+ICgpCi0gICAgR2V0UGx1Z2lucyhib29sIHJlZnJlc2gp
IC0+IChWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4gcGx1Z2lucykKLSAgICBHZXRQbHVnaW5Q
cm9jZXNzQ29ubmVjdGlvbihTdHJpbmcgcGx1Z2luUGF0aCkgLT4gKElQQzo6Q29ubmVjdGlvbjo6
SGFuZGxlIGNvbm5lY3Rpb25IYW5kbGUpIFN5bmNocm9ub3VzCi0KLSAgICBUZXN0TXVsdGlwbGVB
dHRyaWJ1dGVzKCkgLT4gKCkgV2FudHNDb25uZWN0aW9uIFN5bmNocm9ub3VzCi0KLSAgICBUZXN0
UGFyYW1ldGVyQXR0cmlidXRlcyhbQXR0cmlidXRlT25lIEF0dHJpYnV0ZVR3b10gdWludDY0X3Qg
Zm9vLCBkb3VibGUgYmFyLCBbQXR0cmlidXRlVGhyZWVdIGRvdWJsZSBiYXopCi0KLSAgICBUZW1w
bGF0ZVRlc3QoSGFzaE1hcDxTdHJpbmcsIHN0ZDo6cGFpcjxTdHJpbmcsIHVpbnQ2NF90Pj4gYSkK
LQotICAgIFNldFZpZGVvTGF5ZXJJRChXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxh
eWVySUQgdmlkZW9MYXllcklEKQotCi0jaWYgUExBVEZPUk0oTUFDKQotICAgIERpZENyZWF0ZVdl
YlByb2Nlc3NDb25uZWN0aW9uKElQQzo6TWFjaFBvcnQgY29ubmVjdGlvbklkZW50aWZpZXIpCi0j
ZW5kaWYKLQotI2lmIFBMQVRGT1JNKE1BQykKLSAgICAjIEtleWJvYXJkIHN1cHBvcnQKLSAgICBJ
bnRlcnByZXRLZXlFdmVudCh1aW50MzJfdCB0eXBlKSAtPiAoVmVjdG9yPFdlYkNvcmU6OktleXBy
ZXNzQ29tbWFuZD4gY29tbWFuZE5hbWUpCi0jZW5kaWYKLQotI2lmIEVOQUJMRShERVBSRUNBVEVE
X0ZFQVRVUkUpCi0gICAgRGVwcmVjYXRlZE9wZXJhdGlvbihJUEM6OkR1bW15VHlwZSBkdW1teSkK
LSNlbmRpZgotCi0jaWYgRU5BQkxFKEVYUEVSSU1FTlRBTF9GRUFUVVJFKQotICAgIEV4cGVyaW1l
bnRhbE9wZXJhdGlvbihJUEM6OkR1bW15VHlwZSBkdW1teSkKLSNlbmRpZgotfQotCi0jZW5kaWYK
LSNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0LXN1cGVyY2xh
c3MtbWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtp
dC90ZXN0LXN1cGVyY2xhc3MtbWVzc2FnZXMuaW4JKHJldmlzaW9uIDI2MTIzOCkKKysrIFNvdXJj
ZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdC1zdXBlcmNsYXNzLW1lc3NhZ2VzLmluCShub25l
eGlzdGVudCkKQEAgLTEsMzIgKzAsMCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFy
ZSBtZXQ6Ci0jIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECi0jIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECi0jIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IK
LSMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTAotIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgotIyBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UgotIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotCi1tZXNzYWdlcyAtPiBXZWJQYWdlIDogV2ViUGFnZUJhc2UgewotICAgIExvYWRV
UkwoU3RyaW5nIHVybCkKLSNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQotICAgIFRlc3RBc3luY01l
c3NhZ2UoZW51bTpib29sIFdlYktpdDo6VGVzdFR3b1N0YXRlRW51bSB0d29TdGF0ZUVudW0pIC0+
ICh1aW50NjRfdCByZXN1bHQpIEFzeW5jCi0gICAgVGVzdEFzeW5jTWVzc2FnZVdpdGhOb0FyZ3Vt
ZW50cygpIC0+ICgpIEFzeW5jCi0gICAgVGVzdEFzeW5jTWVzc2FnZVdpdGhNdWx0aXBsZUFyZ3Vt
ZW50cygpIC0+IChib29sIGZsYWcsIHVpbnQ2NF90IHZhbHVlKSBBc3luYwotI2VuZGlmCi0gICAg
VGVzdFN5bmNNZXNzYWdlKHVpbnQzMl90IHBhcmFtKSAtPiAodWludDhfdCByZXBseSkgU3luY2hy
b25vdXMKLSAgICBUZXN0U3luY2hyb25vdXNNZXNzYWdlKGJvb2wgdmFsdWUpIC0+IChPcHRpb25h
bDxXZWJLaXQ6OlRlc3RDbGFzc05hbWU+IG9wdGlvbmFsUmVwbHkpIFN5bmNocm9ub3VzCi19Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3Qtc3VwZXJjbGFzcy5tZXNzYWdl
cy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3Qtc3Vw
ZXJjbGFzcy5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjYxMjM4KQkoZnJvbSBTb3VyY2UvV2ViS2l0
L1NjcmlwdHMvd2Via2l0L3Rlc3Qtc3VwZXJjbGFzcy1tZXNzYWdlcy5pbjoyNjEyMzgpCisrKyBT
b3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3Qtc3VwZXJjbGFzcy5tZXNzYWdlcy5pbgko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMyIEBACisjIENvcHlyaWdodCAoQykgMjAxMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQK
KyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisj
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisKK21lc3NhZ2VzIC0+IFdlYlBhZ2UgOiBXZWJQYWdlQmFzZSB7CisgICAg
TG9hZFVSTChTdHJpbmcgdXJsKQorI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCisgICAgVGVzdEFz
eW5jTWVzc2FnZShlbnVtOmJvb2wgV2ViS2l0OjpUZXN0VHdvU3RhdGVFbnVtIHR3b1N0YXRlRW51
bSkgLT4gKHVpbnQ2NF90IHJlc3VsdCkgQXN5bmMKKyAgICBUZXN0QXN5bmNNZXNzYWdlV2l0aE5v
QXJndW1lbnRzKCkgLT4gKCkgQXN5bmMKKyAgICBUZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxl
QXJndW1lbnRzKCkgLT4gKGJvb2wgZmxhZywgdWludDY0X3QgdmFsdWUpIEFzeW5jCisjZW5kaWYK
KyAgICBUZXN0U3luY01lc3NhZ2UodWludDMyX3QgcGFyYW0pIC0+ICh1aW50OF90IHJlcGx5KSBT
eW5jaHJvbm91cworICAgIFRlc3RTeW5jaHJvbm91c01lc3NhZ2UoYm9vbCB2YWx1ZSkgLT4gKE9w
dGlvbmFsPFdlYktpdDo6VGVzdENsYXNzTmFtZT4gb3B0aW9uYWxSZXBseSkgU3luY2hyb25vdXMK
K30KSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0F1eGlsaWFyeVByb2Nlc3MuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0F1eGlsaWFyeVByb2Nlc3MuY3BwCShyZXZp
c2lvbiAyNjEyMzgpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXhpbGlhcnlQcm9jZXNzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTA3LDIyICsxMDcsMjIgQEAgdm9pZCBBdXhpbGlhcnlQcm9j
ZXNzOjppbml0aWFsaXplQ29ubmVjdAogewogfQogCi12b2lkIEF1eGlsaWFyeVByb2Nlc3M6OmFk
ZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1l
LCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYgbWVzc2FnZVJlY2VpdmVyKQordm9pZCBBdXhpbGlhcnlQ
cm9jZXNzOjphZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpSZWNlaXZlck5hbWUgbWVzc2FnZVJlY2Vp
dmVyTmFtZSwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImIG1lc3NhZ2VSZWNlaXZlcikKIHsKICAgICBt
X21lc3NhZ2VSZWNlaXZlck1hcC5hZGRNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFt
ZSwgbWVzc2FnZVJlY2VpdmVyKTsKIH0KIAotdm9pZCBBdXhpbGlhcnlQcm9jZXNzOjphZGRNZXNz
YWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgdWlu
dDY0X3QgZGVzdGluYXRpb25JRCwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImIG1lc3NhZ2VSZWNlaXZl
cikKK3ZvaWQgQXV4aWxpYXJ5UHJvY2Vzczo6YWRkTWVzc2FnZVJlY2VpdmVyKElQQzo6UmVjZWl2
ZXJOYW1lIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIElQQzo6
TWVzc2FnZVJlY2VpdmVyJiBtZXNzYWdlUmVjZWl2ZXIpCiB7CiAgICAgbV9tZXNzYWdlUmVjZWl2
ZXJNYXAuYWRkTWVzc2FnZVJlY2VpdmVyKG1lc3NhZ2VSZWNlaXZlck5hbWUsIGRlc3RpbmF0aW9u
SUQsIG1lc3NhZ2VSZWNlaXZlcik7CiB9CiAKLXZvaWQgQXV4aWxpYXJ5UHJvY2Vzczo6cmVtb3Zl
TWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUs
IHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpCit2b2lkIEF1eGlsaWFyeVByb2Nlc3M6OnJlbW92ZU1l
c3NhZ2VSZWNlaXZlcihJUEM6OlJlY2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCB1aW50
NjRfdCBkZXN0aW5hdGlvbklEKQogewogICAgIG1fbWVzc2FnZVJlY2VpdmVyTWFwLnJlbW92ZU1l
c3NhZ2VSZWNlaXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklEKTsKIH0KIAot
dm9pZCBBdXhpbGlhcnlQcm9jZXNzOjpyZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdS
ZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSkKK3ZvaWQgQXV4aWxpYXJ5UHJvY2Vzczo6cmVt
b3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6UmVjZWl2ZXJOYW1lIG1lc3NhZ2VSZWNlaXZlck5hbWUp
CiB7CiAgICAgbV9tZXNzYWdlUmVjZWl2ZXJNYXAucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKG1lc3Nh
Z2VSZWNlaXZlck5hbWUpOwogfQpAQCAtMjM2LDkgKzIzNiw5IEBAIHZvaWQgQXV4aWxpYXJ5UHJv
Y2Vzczo6aW5pdGlhbGl6ZVNhbmRib3gKIHsKIH0KIAotdm9pZCBBdXhpbGlhcnlQcm9jZXNzOjpk
aWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpTdHJpbmdSZWZl
cmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5h
bWUpCit2b2lkIEF1eGlsaWFyeVByb2Nlc3M6OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lKQogewotICAgIFdURkxv
Z0Fsd2F5cygiUmVjZWl2ZWQgaW52YWxpZCBtZXNzYWdlOiAnJXM6OiVzJyIsIG1lc3NhZ2VSZWNl
aXZlck5hbWUudG9TdHJpbmcoKS5kYXRhKCksIG1lc3NhZ2VOYW1lLnRvU3RyaW5nKCkuZGF0YSgp
KTsKKyAgICBXVEZMb2dBbHdheXMoIlJlY2VpdmVkIGludmFsaWQgbWVzc2FnZTogJyVzJyIsIGRl
c2NyaXB0aW9uKG1lc3NhZ2VOYW1lKSk7CiAgICAgQ1JBU0goKTsKIH0KIApJbmRleDogU291cmNl
L1dlYktpdC9TaGFyZWQvQXV4aWxpYXJ5UHJvY2Vzcy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvU2hhcmVkL0F1eGlsaWFyeVByb2Nlc3MuaAkocmV2aXNpb24gMjYxMjM4KQorKysgU291
cmNlL1dlYktpdC9TaGFyZWQvQXV4aWxpYXJ5UHJvY2Vzcy5oCSh3b3JraW5nIGNvcHkpCkBAIC02
MCwyMCArNjAsMjAgQEAgcHVibGljOgogICAgIHZvaWQgZGlzYWJsZVRlcm1pbmF0aW9uKCk7CiAg
ICAgdm9pZCBlbmFibGVUZXJtaW5hdGlvbigpOwogCi0gICAgdm9pZCBhZGRNZXNzYWdlUmVjZWl2
ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpNZXNzYWdl
UmVjZWl2ZXImKTsKLSAgICB2b2lkIGFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVy
ZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBJUEM6Ok1l
c3NhZ2VSZWNlaXZlciYpOwotICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6U3Ry
aW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQp
OwotICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1l
c3NhZ2VSZWNlaXZlck5hbWUpOworICAgIHZvaWQgYWRkTWVzc2FnZVJlY2VpdmVyKElQQzo6UmVj
ZWl2ZXJOYW1lLCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYpOworICAgIHZvaWQgYWRkTWVzc2FnZVJl
Y2VpdmVyKElQQzo6UmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBJUEM6Ok1l
c3NhZ2VSZWNlaXZlciYpOworICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6UmVj
ZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKTsKKyAgICB2b2lkIHJlbW92ZU1lc3Nh
Z2VSZWNlaXZlcihJUEM6OlJlY2VpdmVyTmFtZSk7CiAgICAgdm9pZCByZW1vdmVNZXNzYWdlUmVj
ZWl2ZXIoSVBDOjpNZXNzYWdlUmVjZWl2ZXImKTsKICAgICAKICAgICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4KLSAgICB2b2lkIGFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBt
ZXNzYWdlUmVjZWl2ZXJOYW1lLCBPYmplY3RJZGVudGlmaWVyPFQ+IGRlc3RpbmF0aW9uSUQsIElQ
Qzo6TWVzc2FnZVJlY2VpdmVyJiByZWNlaXZlcikKKyAgICB2b2lkIGFkZE1lc3NhZ2VSZWNlaXZl
cihJUEM6OlJlY2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBPYmplY3RJZGVudGlmaWVy
PFQ+IGRlc3RpbmF0aW9uSUQsIElQQzo6TWVzc2FnZVJlY2VpdmVyJiByZWNlaXZlcikKICAgICB7
CiAgICAgICAgIGFkZE1lc3NhZ2VSZWNlaXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1lLCBkZXN0aW5h
dGlvbklELnRvVUludDY0KCksIHJlY2VpdmVyKTsKICAgICB9CiAgICAgCiAgICAgdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+Ci0gICAgdm9pZCByZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdS
ZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgT2JqZWN0SWRlbnRpZmllcjxUPiBkZXN0aW5h
dGlvbklEKQorICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6UmVjZWl2ZXJOYW1l
IG1lc3NhZ2VSZWNlaXZlck5hbWUsIE9iamVjdElkZW50aWZpZXI8VD4gZGVzdGluYXRpb25JRCkK
ICAgICB7CiAgICAgICAgIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1l
LCBkZXN0aW5hdGlvbklELnRvVUludDY0KCkpOwogICAgIH0KQEAgLTEzOCw3ICsxMzgsNyBAQCBw
cml2YXRlOgogICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3Qg
b3ZlcnJpZGU7CiAKICAgICAvLyBJUEM6OkNvbm5lY3Rpb246OkNsaWVudC4KLSAgICB2b2lkIGRp
ZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OlN0cmluZ1JlZmVy
ZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFt
ZSkgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiwgSVBDOjpNZXNzYWdlTmFtZSkgZmluYWw7CiAgICAgdm9pZCBkaWRDbG9zZShJUEM6OkNv
bm5lY3Rpb24mKSBvdmVycmlkZTsKIAogICAgIHZvaWQgc2h1dERvd24oKTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHkuaAkocmV2aXNpb24gMjYxMjM4KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQv
QXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAt
ODYsOCArODYsNiBAQCBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nJiBwYXlt
ZW50Q29vcmRpbmF0b3JCb3VuZEludGVyZmFjZUlkZW50aWZpZXIoY29uc3QgV2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHkmKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nJiBwYXlt
ZW50Q29vcmRpbmF0b3JTb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoY29uc3QgV2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHkmKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgY29uc3QgU3Ry
aW5nJiBwYXltZW50Q29vcmRpbmF0b3JTb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZp
ZXIoY29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmKSA9IDA7Ci0gICAgICAgIHZpcnR1
YWwgdm9pZCBwYXltZW50Q29vcmRpbmF0b3JBZGRNZXNzYWdlUmVjZWl2ZXIoV2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHkmLCBjb25zdCBJUEM6OlN0cmluZ1JlZmVyZW5jZSYsIElQQzo6TWVzc2Fn
ZVJlY2VpdmVyJikgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgcGF5bWVudENvb3JkaW5hdG9y
UmVtb3ZlTWVzc2FnZVJlY2VpdmVyKFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JiwgY29uc3Qg
SVBDOjpTdHJpbmdSZWZlcmVuY2UmKSA9IDA7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICAgICAgdmlydHVhbCBVSVZpZXdDb250cm9sbGVyICpwYXltZW50Q29vcmRpbmF0b3JQcmVzZW50
aW5nVmlld0NvbnRyb2xsZXIoY29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmKSA9IDA7
CiAgICAgICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nJiBwYXltZW50Q29vcmRpbmF0b3JDVERhdGFD
b25uZWN0aW9uU2VydmljZVR5cGUoY29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmKSA9
IDA7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50
Q29vcmRpbmF0b3JQcm94eUNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hh
cmVkL0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EubW0JKHJl
dmlzaW9uIDI2MTIzOCkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L2NvY29hL1dl
YlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTc5LDE1
ICs3OSwxMiBAQCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6V2ViUGF5bWVudENvCiAgICAg
OiBtX2NsaWVudChjbGllbnQpCiAgICAgLCBtX2Nhbk1ha2VQYXltZW50c1F1ZXVlKFdvcmtRdWV1
ZTo6Y3JlYXRlKCJjb20uYXBwbGUuV2ViS2l0LkNhbk1ha2VQYXltZW50cyIpKQogewotICAgIG1f
Y2xpZW50LnBheW1lbnRDb29yZGluYXRvckFkZE1lc3NhZ2VSZWNlaXZlcigqdGhpcywgTWVzc2Fn
ZXM6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksICp0
aGlzKTsKIH0KIAogV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6On5XZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eSgpCiB7CiAgICAgaWYgKG1fc3RhdGUgIT0gU3RhdGU6OklkbGUpCiAgICAgICAg
IGhpZGVQYXltZW50VUkoKTsKLQotICAgIG1fY2xpZW50LnBheW1lbnRDb29yZGluYXRvclJlbW92
ZU1lc3NhZ2VSZWNlaXZlcigqdGhpcywgTWVzc2FnZXM6OldlYlBheW1lbnRDb29yZGluYXRvclBy
b3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpOwogfQogCiB2b2lkIFdlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5OjpwbGF0Zm9ybUNhbk1ha2VQYXltZW50c1dpdGhBY3RpdmVDYXJkKGNvbnN0IFN0
cmluZyYgbWVyY2hhbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGRvbWFpbk5hbWUsIFdURjo6
RnVuY3Rpb248dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvU2hhcmVkL0NvY29hL0F1eGlsaWFyeVByb2Nlc3NDb2NvYS5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9BdXhpbGlhcnlQcm9jZXNzQ29jb2EubW0JKHJl
dmlzaW9uIDI2MTIzOCkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0F1eGlsaWFyeVBy
b2Nlc3NDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMzIsOSArMzIsOSBAQAogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAotdm9pZCBBdXhpbGlhcnlQcm9jZXNzOjpkaWRSZWNlaXZlSW52YWxpZE1l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2Vp
dmVyTmFtZSwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUpCit2b2lkIEF1eGlsaWFy
eVByb2Nlc3M6OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6
Ok1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lKQogewotICAgIHNldENyYXNoUmVwb3J0QXBwbGljYXRp
b25TcGVjaWZpY0luZm9ybWF0aW9uKChfX2JyaWRnZSBDRlN0cmluZ1JlZilbTlNTdHJpbmcgc3Ry
aW5nV2l0aEZvcm1hdDpAIlJlY2VpdmVkIGludmFsaWQgbWVzc2FnZTogJyVzOjolcyciLCBtZXNz
YWdlUmVjZWl2ZXJOYW1lLnRvU3RyaW5nKCkuZGF0YSgpLCBtZXNzYWdlTmFtZS50b1N0cmluZygp
LmRhdGEoKV0pOworICAgIHNldENyYXNoUmVwb3J0QXBwbGljYXRpb25TcGVjaWZpY0luZm9ybWF0
aW9uKChfX2JyaWRnZSBDRlN0cmluZ1JlZilbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIlJl
Y2VpdmVkIGludmFsaWQgbWVzc2FnZTogJyVzJyIsIGRlc2NyaXB0aW9uKG1lc3NhZ2VOYW1lKV0p
OwogICAgIENSQVNIKCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGls
aWFyeVByb2Nlc3NQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmNwcAkocmV2aXNpb24gMjYxMjM4KQorKysgU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTc4LDIyICsxNzgsMjIgQEAgYm9vbCBBdXhpbGlhcnlQcm9jZXNzUHJveHk6OnNlbmRN
ZXNzYWdlKAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBBdXhpbGlhcnlQcm9jZXNzUHJv
eHk6OmFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2
ZXJOYW1lLCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYgbWVzc2FnZVJlY2VpdmVyKQordm9pZCBBdXhp
bGlhcnlQcm9jZXNzUHJveHk6OmFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlJlY2VpdmVyTmFtZSBt
ZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYgbWVzc2FnZVJlY2VpdmVy
KQogewogICAgIG1fbWVzc2FnZVJlY2VpdmVyTWFwLmFkZE1lc3NhZ2VSZWNlaXZlcihtZXNzYWdl
UmVjZWl2ZXJOYW1lLCBtZXNzYWdlUmVjZWl2ZXIpOwogfQogCi12b2lkIEF1eGlsaWFyeVByb2Nl
c3NQcm94eTo6YWRkTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VS
ZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIElQQzo6TWVzc2FnZVJlY2VpdmVy
JiBtZXNzYWdlUmVjZWl2ZXIpCit2b2lkIEF1eGlsaWFyeVByb2Nlc3NQcm94eTo6YWRkTWVzc2Fn
ZVJlY2VpdmVyKElQQzo6UmVjZWl2ZXJOYW1lIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90
IGRlc3RpbmF0aW9uSUQsIElQQzo6TWVzc2FnZVJlY2VpdmVyJiBtZXNzYWdlUmVjZWl2ZXIpCiB7
CiAgICAgbV9tZXNzYWdlUmVjZWl2ZXJNYXAuYWRkTWVzc2FnZVJlY2VpdmVyKG1lc3NhZ2VSZWNl
aXZlck5hbWUsIGRlc3RpbmF0aW9uSUQsIG1lc3NhZ2VSZWNlaXZlcik7CiB9CiAKLXZvaWQgQXV4
aWxpYXJ5UHJvY2Vzc1Byb3h5OjpyZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZl
cmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCkKK3ZvaWQg
QXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjpyZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpSZWNlaXZl
ck5hbWUgbWVzc2FnZVJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCkKIHsKICAg
ICBtX21lc3NhZ2VSZWNlaXZlck1hcC5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2Vp
dmVyTmFtZSwgZGVzdGluYXRpb25JRCk7CiB9CiAKLXZvaWQgQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5
OjpyZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2Vp
dmVyTmFtZSkKK3ZvaWQgQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjpyZW1vdmVNZXNzYWdlUmVjZWl2
ZXIoSVBDOjpSZWNlaXZlck5hbWUgbWVzc2FnZVJlY2VpdmVyTmFtZSkKIHsKICAgICBtX21lc3Nh
Z2VSZWNlaXZlck1hcC5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSk7
CiB9CkBAIC0yNzgsOSArMjc4LDkgQEAgdm9pZCBBdXhpbGlhcnlQcm9jZXNzUHJveHk6OmNvbm5l
Y3Rpb25XaQogewogfQogCi12b2lkIEF1eGlsaWFyeVByb2Nlc3NQcm94eTo6bG9nSW52YWxpZE1l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBt
ZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZSkKK3Zv
aWQgQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5Ojpsb2dJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mIGNvbm5lY3Rpb24sIElQQzo6TWVzc2FnZU5hbWUgbWVzc2FnZU5hbWUpCiB7Ci0gICAgUkVM
RUFTRV9MT0dfRkFVTFQoSVBDLCAiUmVjZWl2ZWQgYW4gaW52YWxpZCBtZXNzYWdlICclIiBQVUJM
SUNfTE9HX1NUUklORyAiOjolIiBQVUJMSUNfTE9HX1NUUklORyAiJyBmcm9tIHRoZSAlIiBQVUJM
SUNfTE9HX1NUUklORyAiIHByb2Nlc3MuIiwgbWVzc2FnZVJlY2VpdmVyTmFtZS50b1N0cmluZygp
LmRhdGEoKSwgbWVzc2FnZU5hbWUudG9TdHJpbmcoKS5kYXRhKCksIHByb2Nlc3NOYW1lKCkuY2hh
cmFjdGVycygpKTsKKyAgICBSRUxFQVNFX0xPR19GQVVMVChJUEMsICJSZWNlaXZlZCBhbiBpbnZh
bGlkIG1lc3NhZ2UgJyUiIFBVQkxJQ19MT0dfU1RSSU5HICInIGZyb20gdGhlICUiIFBVQkxJQ19M
T0dfU1RSSU5HICIgcHJvY2Vzcy4iLCBkZXNjcmlwdGlvbihtZXNzYWdlTmFtZSksIHByb2Nlc3NO
YW1lKCkuY2hhcmFjdGVycygpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaAkocmV2
aXNpb24gMjYxMjM4KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vz
c1Byb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTc1LDE5ICs3NSwxOSBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiBtX2Nvbm5lY3Rpb24gPT0gJmNvbm5lY3Rpb247CiAgICAgfQogCi0gICAgdm9p
ZCBhZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVy
TmFtZSwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImKTsKLSAgICB2b2lkIGFkZE1lc3NhZ2VSZWNlaXZl
cihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0
aW5hdGlvbklELCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYpOwotICAgIHZvaWQgcmVtb3ZlTWVzc2Fn
ZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2
NF90IGRlc3RpbmF0aW9uSUQpOwotICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6
U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUpOworICAgIHZvaWQgYWRkTWVzc2Fn
ZVJlY2VpdmVyKElQQzo6UmVjZWl2ZXJOYW1lLCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYpOworICAg
IHZvaWQgYWRkTWVzc2FnZVJlY2VpdmVyKElQQzo6UmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0
aW5hdGlvbklELCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYpOworICAgIHZvaWQgcmVtb3ZlTWVzc2Fn
ZVJlY2VpdmVyKElQQzo6UmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKTsKKyAg
ICB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlJlY2VpdmVyTmFtZSk7CiAgICAgCiAg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAgdm9pZCBhZGRNZXNzYWdlUmVjZWl2ZXIoSVBD
OjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgT2JqZWN0SWRlbnRpZmllcjxU
PiBkZXN0aW5hdGlvbklELCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYgcmVjZWl2ZXIpCisgICAgdm9p
ZCBhZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpSZWNlaXZlck5hbWUgbWVzc2FnZVJlY2VpdmVyTmFt
ZSwgT2JqZWN0SWRlbnRpZmllcjxUPiBkZXN0aW5hdGlvbklELCBJUEM6Ok1lc3NhZ2VSZWNlaXZl
ciYgcmVjZWl2ZXIpCiAgICAgewogICAgICAgICBhZGRNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJl
Y2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRC50b1VJbnQ2NCgpLCByZWNlaXZlcik7CiAgICAgfQog
ICAgIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJl
Y2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIE9iamVjdElk
ZW50aWZpZXI8VD4gZGVzdGluYXRpb25JRCkKKyAgICB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZl
cihJUEM6OlJlY2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBPYmplY3RJZGVudGlmaWVy
PFQ+IGRlc3RpbmF0aW9uSUQpCiAgICAgewogICAgICAgICByZW1vdmVNZXNzYWdlUmVjZWl2ZXIo
bWVzc2FnZVJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRC50b1VJbnQ2NCgpKTsKICAgICB9CkBA
IC0xMTksNyArMTE5LDcgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgZGlzcGF0Y2hNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwogICAgIGJvb2wgZGlzcGF0Y2hTeW5jTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBD
OjpFbmNvZGVyPiYpOwogCi0gICAgdm9pZCBsb2dJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6OlN0cmlu
Z1JlZmVyZW5jZSBtZXNzYWdlTmFtZSk7CisgICAgdm9pZCBsb2dJbnZhbGlkTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VOYW1lKTsKICAgICB2aXJ0dWFsIEFTQ0lJTGl0ZXJh
bCBwcm9jZXNzTmFtZSgpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBnZXRMYXVuY2hP
cHRpb25zKFByb2Nlc3NMYXVuY2hlcjo6TGF1bmNoT3B0aW9ucyYpOwpAQCAtMTUwLDcgKzE1MCw3
IEBAIGJvb2wgQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjpzZW5kKFQmJiBtZXMKIHsKICAgICBDT01Q
SUxFX0FTU0VSVCghVDo6aXNTeW5jLCBBc3luY01lc3NhZ2VFeHBlY3RlZCk7CiAKLSAgICBhdXRv
IGVuY29kZXIgPSBtYWtlVW5pcXVlPElQQzo6RW5jb2Rlcj4oVDo6cmVjZWl2ZXJOYW1lKCksIFQ6
Om5hbWUoKSwgZGVzdGluYXRpb25JRCk7CisgICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZTxJ
UEM6OkVuY29kZXI+KFQ6Om5hbWUoKSwgZGVzdGluYXRpb25JRCk7CiAgICAgZW5jb2Rlci0+ZW5j
b2RlKG1lc3NhZ2UuYXJndW1lbnRzKCkpOwogCiAgICAgcmV0dXJuIHNlbmRNZXNzYWdlKFdURk1v
dmUoZW5jb2RlciksIHNlbmRPcHRpb25zKTsKQEAgLTE3NCw3ICsxNzQsNyBAQCB2b2lkIEF1eGls
aWFyeVByb2Nlc3NQcm94eTo6c2VuZFdpdGhBc3luCiB7CiAgICAgQ09NUElMRV9BU1NFUlQoIVQ6
OmlzU3luYywgQXN5bmNNZXNzYWdlRXhwZWN0ZWQpOwogCi0gICAgYXV0byBlbmNvZGVyID0gbWFr
ZVVuaXF1ZTxJUEM6OkVuY29kZXI+KFQ6OnJlY2VpdmVyTmFtZSgpLCBUOjpuYW1lKCksIGRlc3Rp
bmF0aW9uSUQpOworICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWU8SVBDOjpFbmNvZGVyPihU
OjpuYW1lKCksIGRlc3RpbmF0aW9uSUQpOwogICAgIHVpbnQ2NF90IGxpc3RlbmVySUQgPSBJUEM6
Om5leHRBc3luY1JlcGx5SGFuZGxlcklEKCk7CiAgICAgZW5jb2Rlci0+ZW5jb2RlKGxpc3RlbmVy
SUQpOwogICAgIGVuY29kZXItPmVuY29kZShtZXNzYWdlLmFyZ3VtZW50cygpKTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xlZ2FjeVNlc3Npb25TdGF0ZUNvZGluZ05vbmUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xlZ2FjeVNlc3Npb25TdGF0ZUNv
ZGluZ05vbmUuY3BwCShyZXZpc2lvbiAyNjEyMzgpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9MZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmdOb25lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAs
NiArMzAsNyBAQAogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJEZWNvZGVy
LmgiCiAjaW5jbHVkZSAiRW5jb2Rlci5oIgorI2luY2x1ZGUgIk1lc3NhZ2VOYW1lcy5oIgogI2lu
Y2x1ZGUgIlNlc3Npb25TdGF0ZS5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5o
IgogCkBAIC0zNyw4ICszOCw4IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBSZWZQdHI8QVBJOjpE
YXRhPiBlbmNvZGVMZWdhY3lTZXNzaW9uU3RhdGUoY29uc3QgU2Vzc2lvblN0YXRlJiBzZXNzaW9u
U3RhdGUpCiB7Ci0gICAgLy8gRklYTUU6IEknbSBub3Qgc3VyZSB3aGV0aGVyIHRoZXNlIGFyZSB0
aGUgcHJvcGVyIGFyZ3VtZW50cyBmb3IgdGhlIGVuY29kZXIuCi0gICAgSVBDOjpFbmNvZGVyIGVu
Y29kZXIoIklQQyIsICJMZWdhY3lTZXNzaW9uU3RhdGUiLCAwKTsKKyAgICAvLyBGSVhNRTogVGhp
cyBzaG91bGQgdXNlIFdURjo6UGVyc2lzdGVuY2U6OkVuY29kZXIgaW5zdGVhZC4KKyAgICBJUEM6
OkVuY29kZXIgZW5jb2RlcihJUEM6Ok1lc3NhZ2VOYW1lOjpMZWdhY3lTZXNzaW9uU3RhdGUsIDAp
OwogICAgIGVuY29kZXIgPDwgc2Vzc2lvblN0YXRlLmJhY2tGb3J3YXJkTGlzdFN0YXRlOwogICAg
IGVuY29kZXIgPDwgc2Vzc2lvblN0YXRlLnJlbmRlclRyZWVTaXplOwogICAgIGVuY29kZXIgPDwg
c2Vzc2lvblN0YXRlLnByb3Zpc2lvbmFsVVJMOwpAQCAtNDgsMTUgKzQ5LDI1IEBAIFJlZlB0cjxB
UEk6OkRhdGE+IGVuY29kZUxlZ2FjeVNlc3Npb25TdGEKIGJvb2wgZGVjb2RlTGVnYWN5U2Vzc2lv
blN0YXRlKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhU2l6ZSwgU2Vzc2lvblN0YXRl
JiBzZXNzaW9uU3RhdGUpCiB7CiAgICAgSVBDOjpEZWNvZGVyIGRlY29kZXIoZGF0YSwgZGF0YVNp
emUsIG51bGxwdHIsIFZlY3RvcjxJUEM6OkF0dGFjaG1lbnQ+KCkpOworCiAgICAgT3B0aW9uYWw8
QmFja0ZvcndhcmRMaXN0U3RhdGU+IGJhY2tGb3J3YXJkTGlzdFN0YXRlOwogICAgIGRlY29kZXIg
Pj4gYmFja0ZvcndhcmRMaXN0U3RhdGU7CiAgICAgaWYgKCFiYWNrRm9yd2FyZExpc3RTdGF0ZSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHNlc3Npb25TdGF0ZS5iYWNrRm9yd2FyZExpc3RT
dGF0ZSA9IFdURk1vdmUoKmJhY2tGb3J3YXJkTGlzdFN0YXRlKTsKLSAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHNlc3Npb25TdGF0ZS5yZW5kZXJUcmVlU2l6ZSkpCisKKyAgICBPcHRpb25hbDx1aW50
NjRfdD4gcmVuZGVyVHJlZVNpemU7CisgICAgZGVjb2RlciA+PiByZW5kZXJUcmVlU2l6ZTsKKyAg
ICBpZiAoIXJlbmRlclRyZWVTaXplKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShzZXNzaW9uU3RhdGUucHJvdmlzaW9uYWxVUkwpKQorICAgIHNlc3Npb25T
dGF0ZS5yZW5kZXJUcmVlU2l6ZSA9ICpyZW5kZXJUcmVlU2l6ZTsKKworICAgIE9wdGlvbmFsPFVS
TD4gcHJvdmlzaW9uYWxVUkw7CisgICAgZGVjb2RlciA+PiBwcm92aXNpb25hbFVSTDsKKyAgICBp
ZiAoIXByb3Zpc2lvbmFsVVJMKQogICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgc2Vzc2lvblN0
YXRlLnByb3Zpc2lvbmFsVVJMID0gV1RGTW92ZSgqcHJvdmlzaW9uYWxVUkwpOworCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFs
UGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92
aXNpb25hbFBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDI2MTIzOCkKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTE5
LDcgKzUxOSw3IEBAIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRpZFJlY2VpdmVNZXMKICAg
ICB9CiAjZW5kaWYKIAotICAgIExPRyhQcm9jZXNzU3dhcHBpbmcsICJVbmhhbmRsZWQgbWVzc2Fn
ZSAlczo6JXMgZnJvbSBwcm92aXNpb25hbCBwcm9jZXNzIiwgZGVjb2Rlci5tZXNzYWdlUmVjZWl2
ZXJOYW1lKCkudG9TdHJpbmcoKS5kYXRhKCksIGRlY29kZXIubWVzc2FnZU5hbWUoKS50b1N0cmlu
ZygpLmRhdGEoKSk7CisgICAgTE9HKFByb2Nlc3NTd2FwcGluZywgIlVuaGFuZGxlZCBtZXNzYWdl
ICVzIGZyb20gcHJvdmlzaW9uYWwgcHJvY2VzcyIsIGRlc2NyaXB0aW9uKGRlY29kZXIubWVzc2Fn
ZU5hbWUoKSkpOwogfQogCiB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRSZWNlaXZlU3lu
Y01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29k
ZXIsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiByZXBseUVuY29kZXIpCkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHAJKHJldmlz
aW9uIDI2MTIzOCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94
eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYxLDMzICs2MSwzMyBAQCBSZWZQdHI8V2ViUHJvY2Vz
c1Byb3h5PiBTdXNwZW5kZWRQYWdlUHJvCiB9CiAKICNpZiAhTE9HX0RJU0FCTEVECi1zdGF0aWMg
Y29uc3QgSGFzaFNldDxJUEM6OlN0cmluZ1JlZmVyZW5jZT4mIG1lc3NhZ2VOYW1lc1RvSWdub3Jl
V2hpbGVTdXNwZW5kZWQoKQordXNpbmcgTWVzc2FnZU5hbWVTZXQgPSBIYXNoU2V0PElQQzo6TWVz
c2FnZU5hbWUsIFdURjo6SW50SGFzaDxJUEM6Ok1lc3NhZ2VOYW1lPiwgV1RGOjpTdHJvbmdFbnVt
SGFzaFRyYWl0czxJUEM6Ok1lc3NhZ2VOYW1lPj47CitzdGF0aWMgY29uc3QgTWVzc2FnZU5hbWVT
ZXQmIG1lc3NhZ2VOYW1lc1RvSWdub3JlV2hpbGVTdXNwZW5kZWQoKQogewotICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxIYXNoU2V0PElQQzo6U3RyaW5nUmVmZXJlbmNlPj4gbWVzc2FnZU5hbWVz
OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxNZXNzYWdlTmFtZVNldD4gbWVzc2FnZU5hbWVz
OwogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKICAgICBzdGQ6OmNhbGxfb25j
ZShvbmNlRmxhZywgW10gewotICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJCYWNrRm9y
d2FyZEFkZEl0ZW0iKTsKLSAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZCgiQ2xlYXJBbGxF
ZGl0Q29tbWFuZHMiKTsKLSAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZCgiRGlkQ2hhbmdl
Q29udGVudFNpemUiKTsKLSAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZCgiRGlkQ2hhbmdl
TWFpbkRvY3VtZW50Iik7Ci0gICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoIkRpZENoYW5n
ZVByb2dyZXNzIik7Ci0gICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoIkRpZENvbW1pdExv
YWRGb3JGcmFtZSIpOwotICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJEaWREZXN0cm95
TmF2aWdhdGlvbiIpOwotICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJEaWRGaW5pc2hE
b2N1bWVudExvYWRGb3JGcmFtZSIpOwotICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJE
aWRGaW5pc2hQcm9ncmVzcyIpOwotICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJEaWRD
b21wbGV0ZVBhZ2VUcmFuc2l0aW9uIik7Ci0gICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQo
IkRpZEZpcnN0TGF5b3V0Rm9yRnJhbWUiKTsKLSAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFk
ZCgiRGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9yRnJhbWUiKTsKLSAgICAgICAgbWVz
c2FnZU5hbWVzLmdldCgpLmFkZCgiRGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGEiKTsKLSAg
ICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZCgiRGlkUmVhY2hMYXlvdXRNaWxlc3RvbmUiKTsK
LSAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZCgiRGlkUmVzdG9yZVNjcm9sbFBvc2l0aW9u
Iik7Ci0gICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoIkRpZFN0YXJ0UHJvZ3Jlc3MiKTsK
LSAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZCgiRGlkU3RhcnRQcm92aXNpb25hbExvYWRG
b3JGcmFtZSIpOwotICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKCJFZGl0b3JTdGF0ZUNo
YW5nZWQiKTsKLSAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZCgiUGFnZUV4dGVuZGVkQmFj
a2dyb3VuZENvbG9yRGlkQ2hhbmdlIik7Ci0gICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQo
IlNldFJlbmRlclRyZWVTaXplIik7Ci0gICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoIlNl
dFN0YXR1c1RleHQiKTsKLSAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZCgiU2V0TmV0d29y
a1JlcXVlc3RzSW5Qcm9ncmVzcyIpOworICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKElQ
Qzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VQcm94eV9CYWNrRm9yd2FyZEFkZEl0ZW0pOworICAgICAg
ICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VQcm94eV9D
bGVhckFsbEVkaXRDb21tYW5kcyk7CisgICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoSVBD
OjpNZXNzYWdlTmFtZTo6V2ViUGFnZVByb3h5X0RpZENoYW5nZUNvbnRlbnRTaXplKTsKKyAgICAg
ICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZChJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlUHJveHlf
RGlkQ2hhbmdlTWFpbkRvY3VtZW50KTsKKyAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZChJ
UEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlUHJveHlfRGlkQ2hhbmdlUHJvZ3Jlc3MpOworICAgICAg
ICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VQcm94eV9E
aWRDb21taXRMb2FkRm9yRnJhbWUpOworICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKElQ
Qzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VQcm94eV9EaWREZXN0cm95TmF2aWdhdGlvbik7CisgICAg
ICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZVByb3h5
X0RpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lKTsKKyAgICAgICAgbWVzc2FnZU5hbWVzLmdl
dCgpLmFkZChJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlUHJveHlfRGlkRmluaXNoUHJvZ3Jlc3Mp
OworICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKElQQzo6TWVzc2FnZU5hbWU6OldlYlBh
Z2VQcm94eV9EaWRGaXJzdExheW91dEZvckZyYW1lKTsKKyAgICAgICAgbWVzc2FnZU5hbWVzLmdl
dCgpLmFkZChJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlUHJveHlfRGlkRmlyc3RWaXN1YWxseU5v
bkVtcHR5TGF5b3V0Rm9yRnJhbWUpOworICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKElQ
Qzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VQcm94eV9EaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0
YSk7CisgICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoSVBDOjpNZXNzYWdlTmFtZTo6V2Vi
UGFnZVByb3h5X0RpZFJlYWNoTGF5b3V0TWlsZXN0b25lKTsKKyAgICAgICAgbWVzc2FnZU5hbWVz
LmdldCgpLmFkZChJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlUHJveHlfRGlkUmVzdG9yZVNjcm9s
bFBvc2l0aW9uKTsKKyAgICAgICAgbWVzc2FnZU5hbWVzLmdldCgpLmFkZChJUEM6Ok1lc3NhZ2VO
YW1lOjpXZWJQYWdlUHJveHlfRGlkU3RhcnRQcm9ncmVzcyk7CisgICAgICAgIG1lc3NhZ2VOYW1l
cy5nZXQoKS5hZGQoSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZVByb3h5X0RpZFN0YXJ0UHJvdmlz
aW9uYWxMb2FkRm9yRnJhbWUpOworICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKElQQzo6
TWVzc2FnZU5hbWU6OldlYlBhZ2VQcm94eV9FZGl0b3JTdGF0ZUNoYW5nZWQpOworICAgICAgICBt
ZXNzYWdlTmFtZXMuZ2V0KCkuYWRkKElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VQcm94eV9QYWdl
RXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3JEaWRDaGFuZ2UpOworICAgICAgICBtZXNzYWdlTmFtZXMu
Z2V0KCkuYWRkKElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VQcm94eV9TZXRSZW5kZXJUcmVlU2l6
ZSk7CisgICAgICAgIG1lc3NhZ2VOYW1lcy5nZXQoKS5hZGQoSVBDOjpNZXNzYWdlTmFtZTo6V2Vi
UGFnZVByb3h5X1NldFN0YXR1c1RleHQpOworICAgICAgICBtZXNzYWdlTmFtZXMuZ2V0KCkuYWRk
KElQQzo6TWVzc2FnZU5hbWU6OldlYlBhZ2VQcm94eV9TZXROZXR3b3JrUmVxdWVzdHNJblByb2dy
ZXNzKTsKICAgICB9KTsKIAogICAgIHJldHVybiBtZXNzYWdlTmFtZXM7CkBAIC0yNTUsNyArMjU1
LDcgQEAgdm9pZCBTdXNwZW5kZWRQYWdlUHJveHk6OmRpZFJlY2VpdmVNZXNzYQogCiAjaWYgIUxP
R19ESVNBQkxFRAogICAgIGlmICghbWVzc2FnZU5hbWVzVG9JZ25vcmVXaGlsZVN1c3BlbmRlZCgp
LmNvbnRhaW5zKGRlY29kZXIubWVzc2FnZU5hbWUoKSkpCi0gICAgICAgIExPRyhQcm9jZXNzU3dh
cHBpbmcsICJTdXNwZW5kZWRQYWdlUHJveHkgcmVjZWl2ZWQgdW5leHBlY3RlZCBXZWJQYWdlUHJv
eHkgbWVzc2FnZSAnJXMnIiwgZGVjb2Rlci5tZXNzYWdlTmFtZSgpLnRvU3RyaW5nKCkuZGF0YSgp
KTsKKyAgICAgICAgTE9HKFByb2Nlc3NTd2FwcGluZywgIlN1c3BlbmRlZFBhZ2VQcm94eSByZWNl
aXZlZCB1bmV4cGVjdGVkIFdlYlBhZ2VQcm94eSBtZXNzYWdlICclcyciLCBkZXNjcmlwdGlvbihk
ZWNvZGVyLm1lc3NhZ2VOYW1lKCkpKTsKICNlbmRpZgogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24gMjYxMjM4KQorKysgU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTIyODQsOCArMjI4
NCw2IEBAIHByaXZhdGU6CiAgICAgY29uc3QgU3RyaW5nJiBwYXltZW50Q29vcmRpbmF0b3JCb3Vu
ZEludGVyZmFjZUlkZW50aWZpZXIoY29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmKSBm
aW5hbDsKICAgICBjb25zdCBTdHJpbmcmIHBheW1lbnRDb29yZGluYXRvclNvdXJjZUFwcGxpY2F0
aW9uQnVuZGxlSWRlbnRpZmllcihjb25zdCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYpIGZp
bmFsOwogICAgIGNvbnN0IFN0cmluZyYgcGF5bWVudENvb3JkaW5hdG9yU291cmNlQXBwbGljYXRp
b25TZWNvbmRhcnlJZGVudGlmaWVyKGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5Jikg
ZmluYWw7Ci0gICAgdm9pZCBwYXltZW50Q29vcmRpbmF0b3JBZGRNZXNzYWdlUmVjZWl2ZXIoV2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHkmLCBjb25zdCBJUEM6OlN0cmluZ1JlZmVyZW5jZSYsIElQ
Qzo6TWVzc2FnZVJlY2VpdmVyJikgZmluYWw7Ci0gICAgdm9pZCBwYXltZW50Q29vcmRpbmF0b3JS
ZW1vdmVNZXNzYWdlUmVjZWl2ZXIoV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmLCBjb25zdCBJ
UEM6OlN0cmluZ1JlZmVyZW5jZSYpIGZpbmFsOwogI2VuZGlmCiAjaWYgRU5BQkxFKEFQUExFX1BB
WSkgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBVSVZpZXdDb250cm9sbGVyICpwYXltZW50
Q29vcmRpbmF0b3JQcmVzZW50aW5nVmlld0NvbnRyb2xsZXIoY29uc3QgV2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHkmKSBmaW5hbDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5jcHAJKHJldmlzaW9uIDI2MTIzOCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODUyLDE3ICs4NTIsMTIg
QEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0SW52YWxpZE1lc3NhZ2VDYQogICAgIHNfaW52YWxp
ZE1lc3NhZ2VDYWxsYmFjayA9IGludmFsaWRNZXNzYWdlQ2FsbGJhY2s7CiB9CiAKLXZvaWQgV2Vi
UHJvY2Vzc1Bvb2w6OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShjb25zdCBJUEM6OlN0cmluZ1Jl
ZmVyZW5jZSYgbWVzc2FnZVJlY2VpdmVyTmFtZSwgY29uc3QgSVBDOjpTdHJpbmdSZWZlcmVuY2Um
IG1lc3NhZ2VOYW1lKQordm9pZCBXZWJQcm9jZXNzUG9vbDo6ZGlkUmVjZWl2ZUludmFsaWRNZXNz
YWdlKElQQzo6TWVzc2FnZU5hbWUgbWVzc2FnZU5hbWUpCiB7CiAgICAgaWYgKCFzX2ludmFsaWRN
ZXNzYWdlQ2FsbGJhY2spCiAgICAgICAgIHJldHVybjsKIAotICAgIFN0cmluZ0J1aWxkZXIgbWVz
c2FnZU5hbWVTdHJpbmdCdWlsZGVyOwotICAgIG1lc3NhZ2VOYW1lU3RyaW5nQnVpbGRlci5hcHBl
bmRDaGFyYWN0ZXJzKG1lc3NhZ2VSZWNlaXZlck5hbWUuZGF0YSgpLCBtZXNzYWdlUmVjZWl2ZXJO
YW1lLnNpemUoKSk7Ci0gICAgbWVzc2FnZU5hbWVTdHJpbmdCdWlsZGVyLmFwcGVuZCgnLicpOwot
ICAgIG1lc3NhZ2VOYW1lU3RyaW5nQnVpbGRlci5hcHBlbmRDaGFyYWN0ZXJzKG1lc3NhZ2VOYW1l
LmRhdGEoKSwgbWVzc2FnZU5hbWUuc2l6ZSgpKTsKLQotICAgIHNfaW52YWxpZE1lc3NhZ2VDYWxs
YmFjayh0b0FQSShBUEk6OlN0cmluZzo6Y3JlYXRlKG1lc3NhZ2VOYW1lU3RyaW5nQnVpbGRlci50
b1N0cmluZygpKS5wdHIoKSkpOworICAgIHNfaW52YWxpZE1lc3NhZ2VDYWxsYmFjayh0b0FQSShB
UEk6OlN0cmluZzo6Y3JlYXRlKGRlc2NyaXB0aW9uKG1lc3NhZ2VOYW1lKSkucHRyKCkpKTsKIH0K
IAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVzb2x2ZVBhdGhzRm9yU2FuZGJveEV4dGVuc2lvbnMo
KQpAQCAtMTY4MSwyMiArMTY3NiwyMiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpzeW50aGVzaXpl
QXBwSXNCYWNrCiAgICAgZW5zdXJlTmV0d29ya1Byb2Nlc3MoKS5zeW50aGVzaXplQXBwSXNCYWNr
Z3JvdW5kKGJhY2tncm91bmQpOwogfQogCi12b2lkIFdlYlByb2Nlc3NQb29sOjphZGRNZXNzYWdl
UmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpN
ZXNzYWdlUmVjZWl2ZXImIG1lc3NhZ2VSZWNlaXZlcikKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmFk
ZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlJlY2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBJ
UEM6Ok1lc3NhZ2VSZWNlaXZlciYgbWVzc2FnZVJlY2VpdmVyKQogewogICAgIG1fbWVzc2FnZVJl
Y2VpdmVyTWFwLmFkZE1lc3NhZ2VSZWNlaXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1lLCBtZXNzYWdl
UmVjZWl2ZXIpOwogfQogCi12b2lkIFdlYlByb2Nlc3NQb29sOjphZGRNZXNzYWdlUmVjZWl2ZXIo
SVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGlu
YXRpb25JRCwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImIG1lc3NhZ2VSZWNlaXZlcikKK3ZvaWQgV2Vi
UHJvY2Vzc1Bvb2w6OmFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlJlY2VpdmVyTmFtZSBtZXNzYWdl
UmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBJUEM6Ok1lc3NhZ2VSZWNlaXZl
ciYgbWVzc2FnZVJlY2VpdmVyKQogewogICAgIG1fbWVzc2FnZVJlY2VpdmVyTWFwLmFkZE1lc3Nh
Z2VSZWNlaXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklELCBtZXNzYWdlUmVj
ZWl2ZXIpOwogfQogCi12b2lkIFdlYlByb2Nlc3NQb29sOjpyZW1vdmVNZXNzYWdlUmVjZWl2ZXIo
SVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSkKK3ZvaWQgV2ViUHJvY2Vz
c1Bvb2w6OnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlJlY2VpdmVyTmFtZSBtZXNzYWdlUmVj
ZWl2ZXJOYW1lKQogewogICAgIG1fbWVzc2FnZVJlY2VpdmVyTWFwLnJlbW92ZU1lc3NhZ2VSZWNl
aXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1lKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVt
b3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5h
bWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpCit2b2lkIFdlYlByb2Nlc3NQb29sOjpyZW1vdmVN
ZXNzYWdlUmVjZWl2ZXIoSVBDOjpSZWNlaXZlck5hbWUgbWVzc2FnZVJlY2VpdmVyTmFtZSwgdWlu
dDY0X3QgZGVzdGluYXRpb25JRCkKIHsKICAgICBtX21lc3NhZ2VSZWNlaXZlck1hcC5yZW1vdmVN
ZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRCk7CiB9Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgJKHJldmlzaW9uIDI2
MTIzOCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgJKHdvcmtp
bmcgY29weSkKQEAgLTE0OCwyMSArMTQ4LDIxIEBAIHB1YmxpYzoKICAgICAgICAgbV9zdXBwbGVt
ZW50cy5hZGQoVDo6c3VwcGxlbWVudE5hbWUoKSwgVDo6Y3JlYXRlKHRoaXMpKTsKICAgICB9CiAK
LSAgICB2b2lkIGFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdl
UmVjZWl2ZXJOYW1lLCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYpOwotICAgIHZvaWQgYWRkTWVzc2Fn
ZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2
NF90IGRlc3RpbmF0aW9uSUQsIElQQzo6TWVzc2FnZVJlY2VpdmVyJik7Ci0gICAgdm9pZCByZW1v
dmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFt
ZSk7Ci0gICAgdm9pZCByZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2Ug
bWVzc2FnZVJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCk7CisgICAgdm9pZCBh
ZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpSZWNlaXZlck5hbWUsIElQQzo6TWVzc2FnZVJlY2VpdmVy
Jik7CisgICAgdm9pZCBhZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpSZWNlaXZlck5hbWUsIHVpbnQ2
NF90IGRlc3RpbmF0aW9uSUQsIElQQzo6TWVzc2FnZVJlY2VpdmVyJik7CisgICAgdm9pZCByZW1v
dmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpSZWNlaXZlck5hbWUpOworICAgIHZvaWQgcmVtb3ZlTWVz
c2FnZVJlY2VpdmVyKElQQzo6UmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKTsK
IAogICAgIFdlYkJhY2tGb3J3YXJkQ2FjaGUmIGJhY2tGb3J3YXJkQ2FjaGUoKSB7IHJldHVybiBt
X2JhY2tGb3J3YXJkQ2FjaGUuZ2V0KCk7IH0KICAgICAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KLSAgICB2b2lkIGFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNz
YWdlUmVjZWl2ZXJOYW1lLCBPYmplY3RJZGVudGlmaWVyPFQ+IGRlc3RpbmF0aW9uSUQsIElQQzo6
TWVzc2FnZVJlY2VpdmVyJiByZWNlaXZlcikKKyAgICB2b2lkIGFkZE1lc3NhZ2VSZWNlaXZlcihJ
UEM6OlJlY2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBPYmplY3RJZGVudGlmaWVyPFQ+
IGRlc3RpbmF0aW9uSUQsIElQQzo6TWVzc2FnZVJlY2VpdmVyJiByZWNlaXZlcikKICAgICB7CiAg
ICAgICAgIGFkZE1lc3NhZ2VSZWNlaXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlv
bklELnRvVUludDY0KCksIHJlY2VpdmVyKTsKICAgICB9CiAgICAgCiAgICAgdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+Ci0gICAgdm9pZCByZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZl
cmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgT2JqZWN0SWRlbnRpZmllcjxUPiBkZXN0aW5hdGlv
bklEKQorICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6UmVjZWl2ZXJOYW1lIG1l
c3NhZ2VSZWNlaXZlck5hbWUsIE9iamVjdElkZW50aWZpZXI8VD4gZGVzdGluYXRpb25JRCkKICAg
ICB7CiAgICAgICAgIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1lLCBk
ZXN0aW5hdGlvbklELnRvVUludDY0KCkpOwogICAgIH0KQEAgLTQxOCw3ICs0MTgsNyBAQCBwdWJs
aWM6CiAjZW5kaWYKIAogICAgIHN0YXRpYyB2b2lkIHNldEludmFsaWRNZXNzYWdlQ2FsbGJhY2so
dm9pZCAoKikoV0tTdHJpbmdSZWYpKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlSW52YWxp
ZE1lc3NhZ2UoY29uc3QgSVBDOjpTdHJpbmdSZWZlcmVuY2UmIG1lc3NhZ2VSZWNlaXZlck5hbWUs
IGNvbnN0IElQQzo6U3RyaW5nUmVmZXJlbmNlJiBtZXNzYWdlTmFtZSk7CisgICAgc3RhdGljIHZv
aWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6TWVzc2FnZU5hbWUpOwogCiAgICAgYm9v
bCBpc1VSTEtub3duSFNUU0hvc3QoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpIGNvbnN0OwogICAg
IHZvaWQgcmVzZXRIU1RTSG9zdHMoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5LmNwcAkocmV2aXNpb24gMjYxMjM4KQorKysgU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYxLDggKzE2
MSw4IEBAIGNsYXNzIFVJUHJveHlGb3JDYXB0dXJlIGZpbmFsIDogcHVibGljIFUKIHB1YmxpYzoK
ICAgICBleHBsaWNpdCBVSVByb3h5Rm9yQ2FwdHVyZShXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3Mp
IDogbV9wcm9jZXNzKHByb2Nlc3MpIHsgfQogcHJpdmF0ZToKLSAgICB2b2lkIGFkZE1lc3NhZ2VS
ZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6Ok1l
c3NhZ2VSZWNlaXZlciYgcmVjZWl2ZXIpIGZpbmFsIHsgbV9wcm9jZXNzLmFkZE1lc3NhZ2VSZWNl
aXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1lLCByZWNlaXZlcik7IH0KLSAgICB2b2lkIHJlbW92ZU1l
c3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lKSBm
aW5hbCB7IG1fcHJvY2Vzcy5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFt
ZSk7IH0KKyAgICB2b2lkIGFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlJlY2VpdmVyTmFtZSBtZXNz
YWdlUmVjZWl2ZXJOYW1lLCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYgcmVjZWl2ZXIpIGZpbmFsIHsg
bV9wcm9jZXNzLmFkZE1lc3NhZ2VSZWNlaXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1lLCByZWNlaXZl
cik7IH0KKyAgICB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlJlY2VpdmVyTmFtZSBt
ZXNzYWdlUmVjZWl2ZXJOYW1lKSBmaW5hbCB7IG1fcHJvY2Vzcy5yZW1vdmVNZXNzYWdlUmVjZWl2
ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSk7IH0KICAgICBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rp
b24oKSBmaW5hbCB7IHJldHVybiAqbV9wcm9jZXNzLmNvbm5lY3Rpb24oKTsgfQogICAgIExvZ2dl
ciYgbG9nZ2VyKCkgZmluYWwKICAgICB7CkBAIC0zNTIsNyArMzUyLDcgQEAgdm9pZCBXZWJQcm9j
ZXNzUHJveHk6OnBsYXRmb3JtR2V0TGF1bmNoTwogYm9vbCBXZWJQcm9jZXNzUHJveHk6OnNob3Vs
ZFNlbmRQZW5kaW5nTWVzc2FnZShjb25zdCBQZW5kaW5nTWVzc2FnZSYgbWVzc2FnZSkKIHsKICNp
ZiBIQVZFKFNBTkRCT1hfSVNTVUVfUkVBRF9FWFRFTlNJT05fVE9fUFJPQ0VTU19CWV9BVURJVF9U
T0tFTikKLSAgICBpZiAobWVzc2FnZS5lbmNvZGVyLT5tZXNzYWdlTmFtZSgpID09ICJMb2FkUmVx
dWVzdFdhaXRpbmdGb3JQcm9jZXNzTGF1bmNoIikgeworICAgIGlmIChtZXNzYWdlLmVuY29kZXIt
Pm1lc3NhZ2VOYW1lKCkgPT0gSVBDOjpNZXNzYWdlTmFtZTo6V2ViUGFnZV9Mb2FkUmVxdWVzdFdh
aXRpbmdGb3JQcm9jZXNzTGF1bmNoKSB7CiAgICAgICAgIGF1dG8gYnVmZmVyID0gbWVzc2FnZS5l
bmNvZGVyLT5idWZmZXIoKTsKICAgICAgICAgYXV0byBidWZmZXJTaXplID0gbWVzc2FnZS5lbmNv
ZGVyLT5idWZmZXJTaXplKCk7CiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkRlY29kZXI+
IGRlY29kZXIgPSBtYWtlVW5pcXVlPElQQzo6RGVjb2Rlcj4oYnVmZmVyLCBidWZmZXJTaXplLCBu
dWxscHRyLCBWZWN0b3I8SVBDOjpBdHRhY2htZW50PiB7IH0pOwpAQCAtODQxLDExICs4NDEsMTEg
QEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnByb2Nlc3NEaWRUZXJtaW5hdAogICAgIH0KIH0KIAot
dm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5h
bWUsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lKQordm9pZCBXZWJQcm9jZXNzUHJv
eHk6OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24s
IElQQzo6TWVzc2FnZU5hbWUgbWVzc2FnZU5hbWUpCiB7Ci0gICAgbG9nSW52YWxpZE1lc3NhZ2Uo
Y29ubmVjdGlvbiwgbWVzc2FnZVJlY2VpdmVyTmFtZSwgbWVzc2FnZU5hbWUpOworICAgIGxvZ0lu
dmFsaWRNZXNzYWdlKGNvbm5lY3Rpb24sIG1lc3NhZ2VOYW1lKTsKIAotICAgIFdlYlByb2Nlc3NQ
b29sOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UobWVzc2FnZVJlY2VpdmVyTmFtZSwgbWVzc2Fn
ZU5hbWUpOworICAgIFdlYlByb2Nlc3NQb29sOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UobWVz
c2FnZU5hbWUpOwogCiAgICAgLy8gVGVybWluYXRlIHRoZSBXZWJDb250ZW50IHByb2Nlc3MuCiAg
ICAgdGVybWluYXRlKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UHJveHkuaAkocmV2aXNpb24gMjYxMjM4KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Byb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1Myw3ICs0NTMsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNv
ZGVyJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBv
dmVycmlkZTsKICAgICB2b2lkIGRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYpIG92ZXJyaWRlOwot
ICAgIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6
U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIElQQzo6U3RyaW5nUmVmZXJlbmNl
IG1lc3NhZ2VOYW1lKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VOYW1lKSBvdmVycmlkZTsKIAogICAgIC8v
IFJlc3BvbnNpdmVuZXNzVGltZXI6OkNsaWVudAogICAgIHZvaWQgZGlkQmVjb21lVW5yZXNwb25z
aXZlKCkgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2Vy
TWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5oCShyZXZpc2lvbiAy
NjEyMzgpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJl
TWFuYWdlclByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDggKzUxLDggQEAgcHVibGljOgog
ICAgIGNsYXNzIENvbm5lY3Rpb25Qcm94eSB7CiAgICAgcHVibGljOgogICAgICAgICB2aXJ0dWFs
IH5Db25uZWN0aW9uUHJveHkoKSA9IGRlZmF1bHQ7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBhZGRN
ZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UsIElQQzo6TWVzc2FnZVJlY2VpdmVy
JikgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6
U3RyaW5nUmVmZXJlbmNlKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBhZGRNZXNzYWdlUmVj
ZWl2ZXIoSVBDOjpSZWNlaXZlck5hbWUsIElQQzo6TWVzc2FnZVJlY2VpdmVyJikgPSAwOworICAg
ICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6UmVjZWl2ZXJOYW1l
KSA9IDA7CiAgICAgICAgIHZpcnR1YWwgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKCkgPSAw
OwogICAgICAgICB2aXJ0dWFsIGJvb2wgd2lsbFN0YXJ0Q2FwdHVyZShXZWJDb3JlOjpDYXB0dXJl
RGV2aWNlOjpEZXZpY2VUeXBlKSBjb25zdCA9IDA7CiAgICAgICAgIHZpcnR1YWwgTG9nZ2VyJiBs
b2dnZXIoKSA9IDA7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdl
UHJveHlDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9XZWJQYWdlUHJveHlDb2NvYS5tbQkocmV2aXNpb24gMjYxMjM4KQorKysgU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAg
LTI4NCwxNiArMjg0LDYgQEAgY29uc3QgU3RyaW5nJiBXZWJQYWdlUHJveHk6OnBheW1lbnRDb29y
ZAogICAgIHJldHVybiB3ZWJzaXRlRGF0YVN0b3JlKCkuY29uZmlndXJhdGlvbigpLnNvdXJjZUFw
cGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllcigpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6
cGF5bWVudENvb3JkaW5hdG9yQWRkTWVzc2FnZVJlY2VpdmVyKFdlYlBheW1lbnRDb29yZGluYXRv
clByb3h5JiwgY29uc3QgSVBDOjpTdHJpbmdSZWZlcmVuY2UmIG1lc3NhZ2VSZWNlaXZlck5hbWUs
IElQQzo6TWVzc2FnZVJlY2VpdmVyJiBtZXNzYWdlUmVjZWl2ZXIpCi17Ci0gICAgcHJvY2Vzcygp
LmFkZE1lc3NhZ2VSZWNlaXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1lLCBtX3dlYlBhZ2VJRCwgbWVz
c2FnZVJlY2VpdmVyKTsKLX0KLQotdm9pZCBXZWJQYWdlUHJveHk6OnBheW1lbnRDb29yZGluYXRv
clJlbW92ZU1lc3NhZ2VSZWNlaXZlcihXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYsIGNvbnN0
IElQQzo6U3RyaW5nUmVmZXJlbmNlJiBtZXNzYWdlUmVjZWl2ZXJOYW1lKQotewotICAgIHByb2Nl
c3MoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSwgbV93ZWJQYWdl
SUQpOwotfQotCiAjZW5kaWYKIAogI2lmIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQpJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5jcHAJKHJl
dmlzaW9uIDI2MTIzOCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNz
UHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTEsMTEgKzIxMSwxMSBAQCB2b2lkIEdQVVBy
b2Nlc3NQcm94eTo6ZGlkQ2xvc2UoSVBDOjpDb25uCiAgICAgZ3B1UHJvY2Vzc0NyYXNoZWQoKTsK
IH0KIAotdm9pZCBHUFVQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNl
aXZlck5hbWUsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lKQordm9pZCBHUFVQcm9j
ZXNzUHJveHk6OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5l
Y3Rpb24sIElQQzo6TWVzc2FnZU5hbWUgbWVzc2FnZU5hbWUpCiB7Ci0gICAgbG9nSW52YWxpZE1l
c3NhZ2UoY29ubmVjdGlvbiwgbWVzc2FnZVJlY2VpdmVyTmFtZSwgbWVzc2FnZU5hbWUpOworICAg
IGxvZ0ludmFsaWRNZXNzYWdlKGNvbm5lY3Rpb24sIG1lc3NhZ2VOYW1lKTsKIAotICAgIFdlYlBy
b2Nlc3NQb29sOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UobWVzc2FnZVJlY2VpdmVyTmFtZSwg
bWVzc2FnZU5hbWUpOworICAgIFdlYlByb2Nlc3NQb29sOjpkaWRSZWNlaXZlSW52YWxpZE1lc3Nh
Z2UobWVzc2FnZU5hbWUpOwogCiAgICAgLy8gVGVybWluYXRlIHRoZSBHUFUgcHJvY2Vzcy4KICAg
ICB0ZXJtaW5hdGUoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dQVS9HUFVQcm9j
ZXNzUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HUFUvR1BV
UHJvY2Vzc1Byb3h5LmgJKHJldmlzaW9uIDI2MTIzOCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMTAwLDcgKzEwMCw3
IEBAIHByaXZhdGU6CiAgICAgLy8gSVBDOjpDb25uZWN0aW9uOjpDbGllbnQKICAgICB2b2lkIGRp
ZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRl
OwogICAgIHZvaWQgZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpTdHJpbmdS
ZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2Fn
ZU5hbWUpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZU5hbWUpIG92ZXJyaWRlOwogCiAjaWYgSEFWRShWSVNJ
QklMSVRZX1BST1BBR0FUSU9OX1ZJRVcpCiAgICAgdm9pZCBkaWRDcmVhdGVDb250ZXh0Rm9yVmlz
aWJpbGl0eVByb3BhZ2F0aW9uKExheWVySG9zdGluZ0NvbnRleHRJRCk7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94
eS5jcHAJKHJldmlzaW9uIDI2MTIzOCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4MCw5ICsyODAs
OSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZENsb3NlKElQQzo6CiAgICAgbmV0d29y
a1Byb2Nlc3NDcmFzaGVkKCk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkUmVj
ZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpTdHJp
bmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVz
c2FnZU5hbWUpCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVJbnZhbGlkTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6TWVzc2FnZU5hbWUgbWVzc2Fn
ZU5hbWUpCiB7Ci0gICAgbG9nSW52YWxpZE1lc3NhZ2UoY29ubmVjdGlvbiwgbWVzc2FnZVJlY2Vp
dmVyTmFtZSwgbWVzc2FnZU5hbWUpOworICAgIGxvZ0ludmFsaWRNZXNzYWdlKGNvbm5lY3Rpb24s
IG1lc3NhZ2VOYW1lKTsKICAgICB0ZXJtaW5hdGUoKTsKIH0KIApJbmRleDogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgJKHJl
dmlzaW9uIDI2MTIzOCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNDcsNyArMjQ3LDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVj
b2RlciYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jikg
b3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mKSBvdmVycmlkZTsK
LSAgICB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6
OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6OlN0cmluZ1JlZmVyZW5j
ZSBtZXNzYWdlTmFtZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlTmFtZSkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBkaWRSZWNlaXZlU3luY05ldHdvcmtQcm9jZXNzUHJveHlNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jik7CiAKICAg
ICAvLyBNZXNzYWdlIGhhbmRsZXJzCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblByb2Nlc3NQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuY3BwCShyZXZpc2lvbiAyNjEyMzgp
CisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTIxNCw5ICsyMTQsOSBAQCB2b2lkIFBsdWdpblByb2Nlc3NQ
cm94eTo6ZGlkQ2xvc2UoSVBDOjpDCiAgICAgcGx1Z2luUHJvY2Vzc0NyYXNoZWRPckZhaWxlZFRv
TGF1bmNoKCk7CiB9CiAKLXZvaWQgUGx1Z2luUHJvY2Vzc1Byb3h5OjpkaWRSZWNlaXZlSW52YWxp
ZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OlN0cmluZ1JlZmVyZW5j
ZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZSkK
K3ZvaWQgUGx1Z2luUHJvY2Vzc1Byb3h5OjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6Ok1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lKQogewot
ICAgIGxvZ0ludmFsaWRNZXNzYWdlKGNvbm5lY3Rpb24sIG1lc3NhZ2VSZWNlaXZlck5hbWUsIG1l
c3NhZ2VOYW1lKTsKKyAgICBsb2dJbnZhbGlkTWVzc2FnZShjb25uZWN0aW9uLCBtZXNzYWdlTmFt
ZSk7CiAgICAgdGVybWluYXRlKCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuaAkocmV2aXNpb24gMjYxMjM4
KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHku
aAkod29ya2luZyBjb3B5KQpAQCAtMTA0LDcgKzEwNCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBk
aWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3Rk
Ojp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZGlkQ2xv
c2UoSVBDOjpDb25uZWN0aW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlSW52YWxp
ZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJl
Y2VpdmVyTmFtZSwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUpIG92ZXJyaWRlOwor
ICAgIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6
TWVzc2FnZU5hbWUpIG92ZXJyaWRlOwogCiAgICAgLy8gUHJvY2Vzc0xhdW5jaGVyOjpDbGllbnQK
ICAgICB2b2lkIGRpZEZpbmlzaExhdW5jaGluZyhQcm9jZXNzTGF1bmNoZXIqLCBJUEM6OkNvbm5l
Y3Rpb246OklkZW50aWZpZXIpIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmNwcAkocmV2aXNpb24gMjYxMjM4KQorKysgU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03ODIsNyArNzgyLDcgQEAg
dm9pZCBXZWJQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OgogICAgIH0KICNlbmRpZgog
Ci0gICAgTE9HX0VSUk9SKCJVbmhhbmRsZWQgd2ViIHByb2Nlc3MgbWVzc2FnZSAnJXM6OiVzJyAo
ZGVzdGluYXRpb246ICUiIFBSSXU2NCAiIHBpZDogJWQpIiwgZGVjb2Rlci5tZXNzYWdlUmVjZWl2
ZXJOYW1lKCkudG9TdHJpbmcoKS5kYXRhKCksIGRlY29kZXIubWVzc2FnZU5hbWUoKS50b1N0cmlu
ZygpLmRhdGEoKSwgZGVjb2Rlci5kZXN0aW5hdGlvbklEKCksIHN0YXRpY19jYXN0PGludD4oZ2V0
Q3VycmVudFByb2Nlc3NJRCgpKSk7CisgICAgTE9HX0VSUk9SKCJVbmhhbmRsZWQgd2ViIHByb2Nl
c3MgbWVzc2FnZSAnJXMnIChkZXN0aW5hdGlvbjogJSIgUFJJdTY0ICIgcGlkOiAlZCkiLCBkZXNj
cmlwdGlvbihkZWNvZGVyLm1lc3NhZ2VOYW1lKCkpLCBkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSwg
c3RhdGljX2Nhc3Q8aW50PihnZXRDdXJyZW50UHJvY2Vzc0lEKCkpKTsKIH0KIAogV2ViRnJhbWUq
IFdlYlByb2Nlc3M6OndlYkZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlEKSBjb25zdApJbmRl
eDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29u
bmVjdGlvbi5jcHAJKHJldmlzaW9uIDI2MTIzOCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Myw3ICs3
Myw3IEBAIHZvaWQgR1BVUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZENsb3NlKElQQzoKIHsKIH0KIAot
dm9pZCBHUFVQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6U3RyaW5nUmVmZXJlbmNlLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSkK
K3ZvaWQgR1BVUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VOYW1lKQogewogfQogCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5oCShyZXZp
c2lvbiAyNjEyMzgpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3ND
b25uZWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTgwLDcgKzgwLDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlk
UmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CiAg
ICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNv
ZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBmaW5hbDsKLSAgICB2b2lkIGRp
ZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OlN0cmluZ1JlZmVy
ZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFt
ZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiwgSVBDOjpNZXNzYWdlTmFtZSkgb3ZlcnJpZGU7CiAKICAgICBib29sIGRpc3BhdGNo
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKICAgICBib29sIGRpc3Bh
dGNoU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlx
dWVfcHRyPElQQzo6RW5jb2Rlcj4mKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bnNwZWN0b3IvV2ViSW5zcGVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3IuaAkocmV2aXNpb24gMjYxMjM4KQorKysgU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3IuaAkod29ya2luZyBj
b3B5KQpAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBJUEM6OkNvbm5lY3Rpb246
OkNsaWVudAogICAgIHZvaWQgZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJikgb3ZlcnJpZGUgeyBj
bG9zZSgpOyB9Ci0gICAgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiwgSVBDOjpTdHJpbmdSZWZlcmVuY2UsIElQQzo6U3RyaW5nUmVmZXJlbmNlKSBvdmVycmlk
ZSB7IGNsb3NlKCk7IH0KKyAgICB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VOYW1lKSBvdmVycmlkZSB7IGNsb3NlKCk7IH0KIAogICAg
IHZvaWQgc2hvdygpOwogICAgIHZvaWQgY2xvc2UoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUkuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJLmgJKHJldmlzaW9uIDI2
MTIzOCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9y
VUkuaAkod29ya2luZyBjb3B5KQpAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBJ
UEM6OkNvbm5lY3Rpb246OkNsaWVudAogICAgIHZvaWQgZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9u
Jikgb3ZlcnJpZGUgeyAvKiBEbyBub3RoaW5nLCB0aGUgaW5zcGVjdGVkIHBhZ2UgcHJvY2VzcyBt
YXkgaGF2ZSBjcmFzaGVkIGFuZCBtYXkgYmUgZ2V0dGluZyByZXBsYWNlZC4gKi8gfQotICAgIHZv
aWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6U3RyaW5n
UmVmZXJlbmNlLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSkgb3ZlcnJpZGUgeyBjbG9zZVdpbmRvdygp
OyB9CisgICAgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwg
SVBDOjpNZXNzYWdlTmFtZSkgb3ZlcnJpZGUgeyBjbG9zZVdpbmRvdygpOyB9CiAKICAgICAvLyBD
YWxsZWQgYnkgV2ViSW5zcGVjdG9yVUkgbWVzc2FnZXMKICAgICB2b2lkIGVzdGFibGlzaENvbm5l
Y3Rpb24oV2ViUGFnZVByb3h5SWRlbnRpZmllciBpbnNwZWN0ZWRQYWdlSWRlbnRpZmllciwgY29u
c3QgRGVidWdnYWJsZUluZm9EYXRhJiwgYm9vbCB1bmRlclRlc3QsIHVuc2lnbmVkIGluc3BlY3Rp
b25MZXZlbCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAJKHJldmlzaW9uIDI2MTIz
OCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxMSw3ICsyMTEsNyBAQCB2b2lkIE5ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkQ2xvc2UoCiAjZW5kaWYKIH0KIAotdm9pZCBOZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSwgSVBDOjpTdHJpbmdSZWZlcmVuY2UpCit2b2lkIE5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYsIElQQzo6TWVzc2FnZU5hbWUpCiB7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbi5oCShyZXZpc2lvbiAyNjEyMzgpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtOTgsNyAr
OTgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlU3luY01l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQ
Qzo6RW5jb2Rlcj4mKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZENsb3NlKElQQzo6Q29ubmVjdGlv
biYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIElQQzo6
U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2Vp
dmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VOYW1lKSBvdmVy
cmlkZTsKIAogICAgIHZvaWQgZGlkRmluaXNoUGluZ0xvYWQodWludDY0X3QgcGluZ0xvYWRJZGVu
dGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmJik7CiAgICAgdm9pZCBkaWRGaW5pc2hQcmVjb25uZWN0aW9uKHVpbnQ2NF90IHByZWNvbm5l
Y3Rpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiYpOwpJbmRleDogU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nl
c3NDb25uZWN0aW9uLmNwcAkocmV2aXNpb24gMjYxMjM4KQorKysgU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMjgsNyArMTI4LDcgQEAgdm9pZCBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6ZGlkQ2xv
c2UoSQogICAgIH0KIH0KIAotdm9pZCBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2
ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6U3RyaW5nUmVmZXJlbmNlLCBJ
UEM6OlN0cmluZ1JlZmVyZW5jZSkKK3ZvaWQgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJl
Y2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VOYW1lKQog
ewogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9j
ZXNzQ29ubmVjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uLmgJKHJldmlzaW9uIDI2MTIzOCkKKysrIFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTY2LDcgKzY2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFJl
Y2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwog
ICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVj
b2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jikgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2Vp
dmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBt
ZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZSkgb3Zl
cnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiwgSVBDOjpNZXNzYWdlTmFtZSkgb3ZlcnJpZGU7CiAKICAgICAvLyBNZXNzYWdlIGhhbmRsZXJz
LgogICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5j
b2Rlcj4mKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxh
eWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWEubW0JKHJldmlzaW9uIDI2MTIzOCkKKysrIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJl
YS5tbQkod29ya2luZyBjb3B5KQpAQCAtMzc5LDcgKzM3OSw3IEBAIHZvaWQgUmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWE6OnVwZGF0ZVIKICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVMYXllclRy
ZWVEcmF3aW5nQXJlYVByb3h5OjpXaWxsQ29tbWl0TGF5ZXJUcmVlKGxheWVyVHJhbnNhY3Rpb24u
dHJhbnNhY3Rpb25JRCgpKSk7CiAKICAgICBNZXNzYWdlczo6UmVtb3RlTGF5ZXJUcmVlRHJhd2lu
Z0FyZWFQcm94eTo6Q29tbWl0TGF5ZXJUcmVlIG1lc3NhZ2UobGF5ZXJUcmFuc2FjdGlvbiwgc2Ny
b2xsaW5nVHJhbnNhY3Rpb24pOwotICAgIGF1dG8gY29tbWl0RW5jb2RlciA9IG1ha2VVbmlxdWU8
SVBDOjpFbmNvZGVyPihNZXNzYWdlczo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6
Q29tbWl0TGF5ZXJUcmVlOjpyZWNlaXZlck5hbWUoKSwgTWVzc2FnZXM6OlJlbW90ZUxheWVyVHJl
ZURyYXdpbmdBcmVhUHJveHk6OkNvbW1pdExheWVyVHJlZTo6bmFtZSgpLCBtX2lkZW50aWZpZXIu
dG9VSW50NjQoKSk7CisgICAgYXV0byBjb21taXRFbmNvZGVyID0gbWFrZVVuaXF1ZTxJUEM6OkVu
Y29kZXI+KE1lc3NhZ2VzOjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5OjpDb21taXRM
YXllclRyZWU6Om5hbWUoKSwgbV9pZGVudGlmaWVyLnRvVUludDY0KCkpOwogICAgIGNvbW1pdEVu
Y29kZXItPmVuY29kZShtZXNzYWdlLmFyZ3VtZW50cygpKTsKIAogICAgIC8vIEZJWE1FOiBNb3Zl
IGFsbCBiYWNraW5nIHN0b3JlIGZsdXNoaW5nIG1hbmFnZW1lbnQgdG8gUmVtb3RlTGF5ZXJCYWNr
aW5nU3RvcmVDb2xsZWN0aW9uLgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>